/* assets/styles/templates/screens.css
 * Styles partagés des écrans bibliothèque, fiche livre, prières, mon espace,
 * connexion et article, et l'encart « Reprendre la lecture » (accueil, Ma bibliothèque,
 * Bibliothèque). Dépend de theme.css.
 */

/* ---- En-tête de page ---------------------------------------------------- */
.ch-page { max-width: 1240px; margin: 0 auto; padding: 1.75rem 0 3rem; display: flex; flex-direction: column; gap: 1.375rem; }
.ch-page--narrow { max-width: 720px; }
.ch-page--form { max-width: 440px; padding-top: 3.5rem; }

.ch-page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.ch-page-head__text { display: flex; flex-direction: column; gap: .375rem; }
.ch-crumb { font-size: .84375rem; color: var(--ch-faint); }
.ch-crumb a { color: var(--ch-faint); }
.ch-crumb a:hover { color: var(--ch-ink-soft); }
.ch-page-title { margin: 0; font-size: 2rem; font-weight: 600; line-height: 1.15; letter-spacing: -.02em; }
.ch-page-count { font-size: .90625rem; color: var(--ch-muted); }

/* ---- Barre de filtres (habille _book_filters / _paragraph_filters) -------
   Maquette : carte blanche, contrôles en flex-wrap, tous à la même hauteur (--ch-control-h). */
.ch-filters {
  --ch-control-h: 38px;
  --ch-control-border: rgba(17, 24, 39, .16);
  padding: .75rem;
  background: var(--ch-surface);
  border: 1px solid var(--ch-line);
  border-radius: var(--ch-radius-xl);
}
.ch-filters .card, .ch-filters .card-body { border: 0; padding: 0; background: transparent; box-shadow: none; }
.ch-filters > summary { cursor: pointer; }

/* Grille Bootstrap du partial (row g-3 / col-*) remplacée par un flex-wrap, sans breakpoint. */
.ch-filters form.row { display: flex; flex-wrap: wrap; align-items: center; gap: .625rem; margin: 0; }
.ch-filters form.row > * { flex: 1 1 10rem; width: auto; max-width: none; margin: 0; padding: 0; }
.ch-filters form.row > div:first-of-type { flex: 2 1 15rem; }
.ch-filters form.row > div:last-child { flex: 0 0 auto; }

/* Même hauteur, même bordure pour champ, listes, tom-select et bouton. */
.ch-filters .form-control,
.ch-filters .form-select,
.ch-filters .ts-control,
.ch-filters .btn {
  height: var(--ch-control-h);
  min-height: 0;
  padding-block: 0;
  font-size: .90625rem;
  line-height: calc(var(--ch-control-h) - 2px);
}
.ch-filters .form-control,
.ch-filters .form-select,
.ch-filters .ts-control { border: 1px solid var(--ch-control-border); border-radius: var(--ch-radius); background-color: var(--ch-surface); }
.ch-filters .form-control:focus,
.ch-filters .form-select:focus,
.ch-filters .ts-wrapper.focus .ts-control { border-color: var(--ch-accent); box-shadow: none; }
.ch-filters .btn { padding-inline: 1rem; }

/* tom-select : le wrapper hérite des classes du <select> (.form-select) ; seul .ts-control est habillé. */
.ch-filters .ts-wrapper.form-select { height: auto; padding: 0; border: 0; background: none; }
.ch-filters .ts-wrapper .ts-control,
.ch-filters .ts-wrapper.multi.has-items .ts-control {
  display: flex; flex-wrap: nowrap; align-items: center; gap: .25rem;
  padding: 0 .8125rem; overflow-x: auto; overflow-y: hidden; scrollbar-width: none;
}
.ch-filters .ts-wrapper.multi .ts-control > div {
  flex: none; margin: 0; padding: 0 .375rem; line-height: 1.6;
  font-size: .8125rem; color: var(--ch-ink-soft);
  background: var(--ch-bg); border: 1px solid var(--ch-line); border-radius: var(--ch-radius-sm);
}
.ch-filters .ts-wrapper.plugin-remove_button .item .remove { border-left-color: var(--ch-line); }
.ch-filters .ts-control > input { min-width: 5rem; font-size: .90625rem; }
.ch-filters .ts-dropdown {
  margin-top: .25rem; border: 1px solid var(--ch-line); border-radius: var(--ch-radius);
  box-shadow: var(--ch-shadow); font-size: .90625rem;
}
.ch-filters .ts-dropdown .active { background-color: var(--ch-accent-soft); color: var(--ch-ink); }

.ch-chips { display: flex; flex-wrap: wrap; gap: .375rem; }
.ch-chip {
  display: inline-flex; align-items: center; min-height: 34px; padding: 0 .8125rem;
  border: 1px solid rgba(17, 24, 39, .16); border-radius: var(--ch-radius);
  background: var(--ch-surface); font-size: .875rem; font-weight: 500; color: var(--ch-ink-soft); white-space: nowrap;
}
.ch-chip:hover { border-color: rgba(17, 24, 39, .32); color: var(--ch-ink); }
.ch-chip[aria-current="true"] { border-color: var(--ch-ink); background: var(--ch-ink); color: #fff; font-weight: 600; }

/* ---- Grille de livres --------------------------------------------------- */
.ch-book-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1.25rem; }
.ch-book-grid--compact { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

.ch-book-card {
  position: relative; display: flex; flex-direction: column; overflow: hidden;
  background: var(--ch-surface); border: 1px solid var(--ch-line); border-radius: var(--ch-radius-lg);
  transition: box-shadow .15s ease;
}
.ch-book-card:hover { box-shadow: var(--ch-shadow); }
.ch-book-card__cover { display: block; aspect-ratio: 3 / 4; width: 100%; object-fit: contain; background: var(--ch-placeholder); border-bottom: 1px solid var(--ch-line-soft); }
.ch-book-card__body { flex: 1; display: flex; flex-direction: column; gap: .375rem; padding: .875rem; }
.ch-book-card__title { margin: 0; font-size: 1rem; font-weight: 600; line-height: 1.3; }
/* lien étiré : toute la carte est cliquable, le bouton favori reste au-dessus */
.ch-book-card__title a { color: var(--ch-ink); }
.ch-book-card__title a::after { content: ""; position: absolute; inset: 0; }
.ch-book-card__author { font-size: .84375rem; line-height: 1.35; color: var(--ch-muted); }
.ch-book-card__foot { display: flex; align-items: center; gap: .5rem; margin-top: auto; padding-top: .625rem; border-top: 1px solid var(--ch-line-soft); }
.ch-book-card__fav { position: absolute; top: .5rem; right: .5rem; z-index: 2; margin: 0; }

.ch-icon-btn {
  width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; padding: 0;
  border: 1px solid var(--ch-line); border-radius: var(--ch-radius); background: rgba(255, 255, 255, .92);
  color: var(--ch-faint); cursor: pointer;
}
.ch-icon-btn:hover { color: var(--ch-ink-soft); border-color: rgba(17, 24, 39, .28); }
.ch-icon-btn--on { color: #B45309; border-color: #F59E0B; background: #FFFBEB; }
.ch-icon-btn--accent { width: 28px; height: 28px; color: var(--ch-accent); border-color: var(--ch-accent); background: var(--ch-accent-soft); }

/* ---- Pagination --------------------------------------------------------- */
.ch-pagination { display: flex; justify-content: center; }
.ch-pagination .pagination { gap: .25rem; margin: 0; }
.ch-pagination .page-link { min-width: 38px; min-height: 38px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--ch-line); border-radius: var(--ch-radius) !important; color: var(--ch-ink-soft); font-size: .875rem; }
.ch-pagination .page-item.active .page-link { background: var(--ch-ink); border-color: var(--ch-ink); color: #fff; }
.ch-pagination .page-item.disabled .page-link { color: var(--ch-faint); background: transparent; }

/* ---- Fiche livre -------------------------------------------------------- */
.ch-book { display: flex; flex-wrap: wrap; gap: 2.5rem; align-items: flex-start; padding: 1.75rem 0 3rem; }
.ch-book__aside { flex: 1 1 250px; min-width: 0; max-width: 300px; display: flex; flex-direction: column; gap: 1rem; }
.ch-book__cover { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: contain; border-radius: var(--ch-radius-lg); border: 1px solid var(--ch-line); background: var(--ch-placeholder); }
.ch-book__actions { display: flex; flex-direction: column; gap: .5rem; }
.ch-book__actions form { margin: 0; }
.ch-book__actions .btn { width: 100%; min-height: 42px; }
.ch-book__meta { margin: 0; padding-top: .25rem; border-top: 1px solid var(--ch-line-soft); display: grid; grid-template-columns: auto 1fr; gap: .4375rem 1rem; font-size: .875rem; line-height: 1.5; }
.ch-book__meta dt { font-weight: 400; color: var(--ch-faint); }
.ch-book__meta dd { margin: 0; }
.ch-book__main { flex: 2 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 1.375rem; }
.ch-book__title { margin: 0; font-size: 2.375rem; font-weight: 600; line-height: 1.1; letter-spacing: -.025em; }
.ch-book__desc { max-width: 62ch; font-size: 1.03125rem; line-height: 1.65; color: var(--ch-muted); }
.ch-book__desc p:last-child { margin-bottom: 0; }

.ch-toc__num { flex: 0 0 1.75rem; font-size: .84375rem; color: var(--ch-faint); }
.ch-toc__title { flex: 1; min-width: 0; font-size: .96875rem; font-weight: 500; line-height: 1.35; }

/* ---- Prières ------------------------------------------------------------ */
.ch-prayer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.ch-prayer-card {
  display: flex; flex-direction: column; gap: .4375rem; padding: 1.125rem;
  background: var(--ch-surface); border: 1px solid var(--ch-line); border-radius: var(--ch-radius-lg); color: var(--ch-ink);
}
.ch-prayer-card:hover { box-shadow: var(--ch-shadow-sm); color: var(--ch-ink); }
.ch-prayer-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: .625rem; }
.ch-prayer-card__title { font-size: 1.0625rem; font-weight: 600; line-height: 1.25; }
.ch-prayer-card__incipit { margin: 0; font-family: var(--ch-font-read); font-size: .9375rem; font-style: italic; line-height: 1.5; color: var(--ch-muted); }

/* ---- Mon espace --------------------------------------------------------- */
.ch-columns { display: flex; flex-wrap: wrap; gap: 1.75rem; align-items: flex-start; }
.ch-columns__main { flex: 1.5 1 400px; min-width: 0; display: flex; flex-direction: column; gap: .875rem; }
.ch-columns__side { flex: 1 1 300px; min-width: 0; display: flex; flex-direction: column; gap: .875rem; }
.ch-thumb { flex: 0 0 42px; height: 58px; border-radius: var(--ch-radius-sm); border: 1px solid var(--ch-line-soft); background: var(--ch-placeholder); object-fit: contain; }
/* Couverture entière (contain) : aplat plutôt que rayures dans les marges */
img.ch-book-card__cover, img.ch-book__cover, img.ch-thumb { background: var(--ch-bg-subtle); }
.ch-row-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .3125rem; }
.ch-row-title { font-size: .96875rem; font-weight: 600; line-height: 1.3; }
.ch-row-sub { font-size: .84375rem; line-height: 1.3; color: var(--ch-muted); }
.ch-excerpt { flex: 1; min-width: 0; font-family: var(--ch-font-read); font-size: .90625rem; font-style: italic; line-height: 1.45; color: var(--ch-ink-soft); }
.ch-ref { flex: 0 0 auto; font-size: .78125rem; line-height: 1.4; color: var(--ch-faint); }
.ch-empty { padding: 1.5rem; text-align: center; font-size: .9375rem; color: var(--ch-muted); background: var(--ch-surface); border: 1px dashed var(--ch-line); border-radius: var(--ch-radius-lg); }

/* ---- Formulaires (connexion / inscription) ------------------------------ */
.ch-form-card { display: flex; flex-direction: column; gap: .875rem; padding: 1.5rem; background: var(--ch-surface); border: 1px solid var(--ch-line); border-radius: var(--ch-radius-xl); }
.ch-field { display: flex; flex-direction: column; gap: .375rem; }
/* Widget hCaptcha de l'inscription (303 × 78 px, iframe) : centré, réserve sa hauteur ; sur un
   écran très étroit il défile dans son cadre plutôt que d'élargir la page */
.ch-captcha { display: flex; justify-content: center; min-height: 78px; max-width: 100%; overflow-x: auto; }
.ch-captcha--invalid { padding: .5rem; border: 1px solid var(--ch-danger-line); border-radius: var(--ch-radius); background: var(--ch-danger-bg); }
/* Erreurs : sous le champ (.ch-field-error) ou globales en haut du formulaire (.ch-form-alert) */
.ch-field-error { color: var(--ch-danger); font-size: .8125rem; font-weight: 500; line-height: 1.4; }
.ch-field-error p { margin: 0; }
.ch-form-alert { padding: .75rem .875rem; border-left: 4px solid var(--ch-danger-line); border-radius: var(--ch-radius-sm); background: var(--ch-danger-bg); color: var(--ch-danger); font-size: .875rem; font-weight: 500; }
.ch-form-alert p { margin: 0; }
.ch-input[aria-invalid="true"], .ch-password:has([aria-invalid="true"]) { border-color: var(--ch-danger-line); background: var(--ch-danger-bg); }
.ch-form-card .form-check:has([aria-invalid="true"]) .form-check-label { color: var(--ch-danger); }
.ch-form-card .form-check-input[aria-invalid="true"] { border-color: var(--ch-danger-line); }
.ch-form-card .form-check .ch-field-error { flex: 0 0 100%; margin-top: .25rem; }
.ch-field label { margin: 0; font-size: .84375rem; font-weight: 500; color: var(--ch-ink-soft); }
.ch-input { min-height: 42px; padding: 0 .8125rem; border: 1px solid rgba(17, 24, 39, .16); border-radius: var(--ch-radius); background: var(--ch-surface); font-size: .9375rem; color: var(--ch-ink); outline: none; }
.ch-input:focus { border-color: var(--ch-accent); }

/* Champ mot de passe + œil : bordure commune, focus sur l'ensemble */
.ch-password { display: flex; align-items: stretch; border: 1px solid rgba(17, 24, 39, .16); border-radius: var(--ch-radius); background: var(--ch-surface); overflow: hidden; }
.ch-password:focus-within { border-color: var(--ch-accent); }
.ch-password input { flex: 1; min-width: 0; min-height: 42px; padding: 0 .8125rem; border: 0; background: transparent; font-size: .9375rem; color: var(--ch-ink); outline: none; }
.ch-password button { flex: 0 0 44px; display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--ch-muted); cursor: pointer; }
.ch-password button:hover { color: var(--ch-ink); }
.ch-password button:focus-visible { outline: 2px solid var(--ch-accent); outline-offset: -2px; }
.ch-password .ch-eye-slash { display: inline; }
.ch-password button[aria-pressed="true"] .ch-eye-slash { display: none; }

.ch-form-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; font-size: .875rem; }
.ch-form-row .form-check { margin: 0; }
.ch-form-row .form-check-input:checked { background-color: var(--ch-accent); border-color: var(--ch-accent); }
.ch-btn-block { min-height: 44px; width: 100%; border: 1px solid var(--ch-ink); border-radius: var(--ch-radius); background: var(--ch-ink); color: #fff; font-size: .96875rem; font-weight: 600; cursor: pointer; }
.ch-btn-block:hover { background: #374151; border-color: #374151; }
.ch-form-alt { margin: 0; text-align: center; font-size: .90625rem; color: var(--ch-muted); }

/* ---- Page d'erreur 404 (templates/bundles/TwigBundle/Exception/error404.html.twig) ---- */
.ch-error__actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.ch-error__actions .btn { min-height: 44px; display: inline-flex; align-items: center; }

/* ---- Article / page ----------------------------------------------------- */
.ch-article-head { display: flex; flex-direction: column; gap: .75rem; }
.ch-article-title { margin: 0; font-size: clamp(1.875rem, 4vw, 2.625rem); font-weight: 600; line-height: 1.12; letter-spacing: -.025em; }
.ch-article-lead { margin: 0; font-size: 1.1875rem; line-height: 1.6; color: var(--ch-muted); }
.ch-article-body { font-family: var(--ch-font-read); font-size: 1.125rem; line-height: 1.75; color: var(--ch-ink-soft); }
.ch-article-body h2, .ch-article-body h3 { font-family: var(--ch-font-ui); margin: 1.75em 0 .5em; }
.ch-article-body img { max-width: 100%; height: auto; border-radius: var(--ch-radius-lg); }
.ch-article-body p { margin: 0 0 1.05em; }

/* ---- Mon profil (templates/profile/show.html.twig) -----------------------
   Maquette « Mon profil » : cartes blanches, en-tête titre + action, lignes libellé / valeur. */
.ch-pcard { background: var(--ch-surface); border: 1px solid var(--ch-line); border-radius: 10px; overflow: hidden; }
.ch-pcard__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--ch-line); }
.ch-pcard__title { margin: 0; font-size: 16px; font-weight: 600; line-height: 1.2; }
.ch-pcard__action {
  display: inline-flex; align-items: center; min-height: 34px; padding: 0 13px;
  border: 1px solid rgba(17, 24, 39, .18); border-radius: 7px; background: var(--ch-surface);
  color: var(--ch-ink); font-size: 13.5px; font-weight: 600; line-height: 1; text-decoration: none;
}
.ch-pcard__action:hover, .ch-pcard__action:focus-visible { background: var(--ch-bg-subtle); color: var(--ch-ink); }
.ch-pcard__rows { margin: 0; }
.ch-pcard__row, .ch-pcard__grid { display: grid; grid-template-columns: minmax(100px, 160px) minmax(0, 1fr); gap: 4px 16px; }
.ch-pcard__row { padding: 13px 18px; border-bottom: 1px solid var(--ch-line-soft); align-items: center; }
.ch-pcard__rows > .ch-pcard__row:last-child { border-bottom: 0; }
.ch-pcard__grid { margin: 0; gap: 6px 16px; }
.ch-pcard dt { font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--ch-muted); }
.ch-pcard dd { margin: 0; font-size: 15px; font-weight: 500; line-height: 1.5; color: var(--ch-ink); }
.ch-pcard__value--wrap { overflow-wrap: anywhere; }
.ch-pcard__secret { letter-spacing: .12em; color: var(--ch-ink-soft); }
.ch-pcard__body { display: flex; flex-direction: column; gap: 12px; padding: 14px 18px; }
.ch-pcard__text { margin: 0; font-size: 15px; line-height: 1.55; color: var(--ch-ink-soft); }
.ch-pcard__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 18px; border-top: 1px solid var(--ch-line-soft); }
.ch-pcard__meta { font-size: 13px; line-height: 1.4; color: var(--ch-faint); }
.ch-pcard__logout { font-size: 14px; font-weight: 600; line-height: 1; color: #B42318; text-decoration: none; }
.ch-pcard__logout:hover, .ch-pcard__logout:focus-visible { color: #7A271A; }

.ch-pbadge { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 5px; font-size: 12.5px; font-weight: 600; line-height: 1.35; }
.ch-pbadge--on { background: #ECFDF3; color: #067647; }
.ch-pbadge--off { background: #F3F4F6; color: var(--ch-ink-soft); }
.ch-role { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 5px; background: var(--ch-accent-soft); color: var(--ch-accent); font-size: 12.5px; font-weight: 600; line-height: 1.35; }
.ch-pstatus { display: inline-flex; align-items: center; gap: 7px; }
.ch-pstatus__dot { width: 8px; height: 8px; border-radius: 999px; background: var(--ch-faint); }
.ch-pstatus.is-active .ch-pstatus__dot { background: #198754; }

.ch-pbtn {
  display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 0 16px;
  border-radius: var(--ch-radius-sm); font-size: 14.5px; font-weight: 600; line-height: 1; text-decoration: none; cursor: pointer;
}
.ch-pbtn--ink { border: 1px solid var(--ch-ink); background: var(--ch-ink); color: var(--ch-surface); }
.ch-pbtn--ink:hover, .ch-pbtn--ink:focus-visible { --ch-ink-hover: color-mix(in srgb, var(--ch-ink) 80%, white); border-color: var(--ch-ink-hover); background: var(--ch-ink-hover); color: var(--ch-surface); }
.ch-pbtn--danger { border: 1px solid #B42318; background: var(--ch-surface); color: #B42318; }
.ch-pbtn--danger:hover, .ch-pbtn--danger:focus-visible { background: #FEF3F2; color: #B42318; }

/* ---- Encart « Reprendre la lecture » (partials/_resume_reading.html.twig) ----
   --side : carte en colonne (colonne du héros de l'accueil).
   --aside : colonne de gauche (ch-shell__start) de Ma bibliothèque et Bibliothèque ; carte à
   partir de 992px ; entre 768 et 991px la colonne passe au-dessus du contenu et l'encart
   tient sur une ligne (livre | progression | Continuer) ; carte empilée sur mobile. */
.ch-resume-card {
  padding: 1.25rem;
  background: var(--ch-surface);
  border: 1px solid var(--ch-line);
  border-radius: var(--ch-radius-xl);
  display: flex;
  flex-direction: column;
  gap: .875rem;
}
.ch-resume { display: flex; gap: .8125rem; align-items: flex-start; min-width: 0; }
.ch-resume__cover { flex: 0 0 54px; height: 74px; border-radius: var(--ch-radius-sm); }
.ch-resume__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .25rem; }
.ch-resume__title { font-size: 1rem; font-weight: 600; line-height: 1.3; color: var(--ch-ink); }
.ch-resume__chapter { font-size: .84375rem; line-height: 1.4; color: var(--ch-muted); }
.ch-resume-card__progress { display: flex; flex-direction: column; gap: .875rem; }
.ch-resume-card__foot { display: flex; align-items: center; justify-content: space-between; gap: .625rem; }

@media (min-width: 768px) and (max-width: 991.98px) {
  .ch-resume-card--aside {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(140px, 1fr) auto;
    grid-template-areas: "eyebrow eyebrow eyebrow" "book progress foot";
    align-items: center;
    gap: .75rem 1.75rem;
    padding: 1rem 1.25rem;
  }
  .ch-resume-card--aside > .ch-eyebrow { grid-area: eyebrow; }
  .ch-resume-card--aside > .ch-resume { grid-area: book; align-items: center; }
  .ch-resume-card--aside .ch-resume__cover { flex-basis: 40px; height: 54px; }
  .ch-resume-card--aside > .ch-resume-card__progress { grid-area: progress; flex-direction: row; align-items: center; gap: .625rem; }
  .ch-resume-card--aside .ch-progress { flex: 1; }
  .ch-resume-card--aside > .ch-resume-card__foot { grid-area: foot; gap: 1.25rem; }
}

@media (max-width: 767.98px) {
  .ch-page { padding-top: 1.25rem; }
  .ch-page-title { font-size: 1.625rem; }
  .ch-book { gap: 1.5rem; }
  .ch-book__aside { max-width: none; }
  .ch-book__cover { max-width: 220px; }
  .ch-book__title { font-size: 1.875rem; }
  .ch-book__actions .btn { min-height: 44px; }

  /* Cibles tactiles >= 44px sur mobile (CLAUDE.md) */
  .ch-icon-btn, .ch-icon-btn--accent { width: 44px; height: 44px; }
  .ch-chip, .ch-pagination .page-link,
  .ch-input, .ch-password input { min-height: 44px; }
  .ch-pagination .page-link { min-width: 44px; }
  .ch-filters { --ch-control-h: 44px; }
  .ch-filters > summary { min-height: 44px; line-height: 44px; }
  .ch-filters form.row > div:last-child { flex-basis: 100%; }
  .ch-filters .btn { width: 100%; }

  /* Liens et petits boutons texte (Lire, Vider, Mot de passe oublié, Actualités…) */
  .ch-tap { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; min-width: 44px; }
  /* Mon espace : le lien occupe toute la hauteur de la rangée */
  .ch-row-text, .ch-excerpt { align-self: stretch; min-height: 44px; justify-content: center; }
  .ch-excerpt { display: flex; flex-direction: column; }
  /* Cases à cocher : le label cliquable porte la cible de 44px */
  .ch-form-card .form-check { display: flex; flex-wrap: wrap; align-items: center; gap: 0 .625rem; min-height: 44px; padding-left: 0; }
  .ch-form-card .form-check-input { float: none; flex: 0 0 auto; width: 1.25rem; height: 1.25rem; margin: 0; }
  .ch-form-card .form-check-label { flex: 1; display: flex; align-items: center; min-height: 44px; }

  /* Mon profil : actions, boutons et lien de déconnexion à 44px */
  .ch-pcard__action, .ch-pbtn { min-height: 44px; }
  .ch-pcard__logout { display: inline-flex; align-items: center; min-height: 44px; }

  /* Encart « Reprendre la lecture » : lien Continuer à 44px */
  .ch-resume-card__foot a { display: inline-flex; align-items: center; min-height: 44px; }
}
