/* ============================================================
   ANIMA — Évaluation de fin de séjour (moment « Clôturer », brique P4 du parcours,
   spec docs/specs/2026-09-23-parcours-sejour-design.md § 5)
   ------------------------------------------------------------
   .es-*  page « Bilan de fin de séjour » (#/projet/<id>/bilan) : volets, objectifs, retours, budget, stagiaires,
          rapport imprimable (A4, papier / encre, comme le rendu « formel » de l'atelier).
   .qf-*  questionnaires de fin côté familles (espace famille) et enfants (pictos pour les petits, espace ados).
   Tokens de css/tokens.css uniquement (tests/charte.test.mjs) ; zéro emoji (glyphes ✓ ✕ ＋ ▸) ; cibles tactiles
   ≥ 44 px ; mobile 390 px d'office ; media queries APRÈS les règles de base. La forme finale (frise) viendra des
   prototypes : ici, la charte existante, sans refonte.
   ============================================================ */

.es-page [hidden], .qf-espace [hidden], .qf [hidden], .qf-ados[hidden] { display: none !important; }

/* ---------- Page ---------- */
.es-page { display: flex; flex-direction: column; gap: var(--sp-4); max-width: 920px; min-width: 0; }
.es-intro { margin: 0; font-size: .9rem; line-height: 1.55; color: var(--texte-2); }
.es-h3 { margin: 0; font-size: 1rem; font-weight: 600; color: var(--texte); }
.es-lien-btn { align-self: flex-start; display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.es-lien-texte { align-self: flex-start; display: inline-flex; align-items: center; min-height: 44px; color: var(--accent); font-size: .86rem; text-underline-offset: 3px; }
.es-vide { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4); border: 1px dashed var(--ligne-2); border-radius: var(--r-lg); background: var(--s1); color: var(--texte-2); }
.es-vide p { margin: 0; line-height: 1.5; }
.es-vide-titre { font-weight: 600; color: var(--texte); }
.es-agregat-vide { margin: 0; font-size: .86rem; line-height: 1.5; color: var(--texte-3); }

/* ---------- Volets (état du jalon « Évaluer ») ---------- */
.es-volets { display: flex; flex-direction: column; gap: var(--sp-3); min-width: 0; }
.es-jalon { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin: 0; font-size: .88rem; color: var(--texte-2); }
.es-jalon-lbl { font-weight: 600; color: var(--texte); }
.es-jalon-raison { flex: 1 1 16rem; min-width: 0; }
.es-volets-grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-2); }
.es-volet { display: flex; flex-direction: column; gap: 6px; min-width: 0; min-height: 44px; padding: var(--sp-3); text-align: left; font: inherit; color: var(--texte); background: var(--s1); border: 1px solid var(--ligne); border-left: 3px solid var(--ligne-2); border-radius: var(--r-md); cursor: pointer; }
.es-volet:hover { border-color: var(--ligne-2); }
.es-volet:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.es-volet.is-fait { border-left-color: var(--ok); }
.es-volet.is-en_cours { border-left-color: var(--alerte); }
.es-volet.is-sans_objet { border-left-style: dashed; }
.es-volet-tete { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); min-width: 0; }
.es-volet-titre { font-size: .9rem; font-weight: 600; min-width: 0; }
.es-volet-raison { font-size: .8rem; line-height: 1.45; color: var(--texte-2); }
.es-onglets .rec-tabs { margin: 0; }
.es-zone { min-width: 0; }
.es-onglet { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }

/* ---------- Objectifs ---------- */
.es-objectifs { display: flex; flex-direction: column; gap: var(--sp-3); min-width: 0; }
.es-resume { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
.es-resume:empty { display: none; }
.es-resume-txt { margin: 0; font-size: .88rem; font-weight: 600; color: var(--texte); }
.es-resume-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.es-obj-liste { display: flex; flex-direction: column; gap: var(--sp-3); }
.es-obj { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-3) var(--sp-4); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-lg); min-width: 0; }
.es-obj--oo { margin-left: var(--sp-4); border-left: 3px solid var(--pedagogie-fond2); }
.es-obj-tete { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-2); min-width: 0; }
.es-obj-titre { margin: 0; font-size: .98rem; font-weight: 600; line-height: 1.35; color: var(--texte); min-width: 0; overflow-wrap: anywhere; }
.es-obj-num { display: inline-block; min-width: 2.2em; margin-right: 6px; color: var(--pedagogie); font-size: .82rem; }
.es-obj-etat { flex: none; }
.es-obj-type { margin: 0; font-size: .74rem; letter-spacing: .04em; text-transform: uppercase; color: var(--texte-3); }
.es-obj-critere { margin: 0; padding: 6px 10px; font-size: .84rem; line-height: 1.45; color: var(--texte-2); background: var(--pedagogie-fond); border-radius: var(--r-sm); }
.es-niveaux-ligne { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); min-width: 0; }
.es-niveaux-lbl { font-size: .8rem; font-weight: 500; color: var(--texte-2); }
.es-niveaux { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
.es-niveau { min-height: 44px; padding: 8px 14px; font: inherit; font-size: .86rem; color: var(--texte); background: var(--s2); border: 1px solid var(--ligne-2); border-radius: var(--r-sm); cursor: pointer; }
.es-niveau:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.es-niveau:disabled { opacity: .6; cursor: default; }
.es-niveau[aria-checked="true"]::before { content: '✓ '; }
.es-niveau--atteint[aria-checked="true"] { color: var(--ok); border-color: var(--ok-filet); background: var(--ok-fond); font-weight: 600; }
.es-niveau--partiel[aria-checked="true"] { color: var(--alerte); border-color: var(--alerte-filet); background: var(--alerte-fond); font-weight: 600; }
.es-niveau--non_atteint[aria-checked="true"] { color: var(--critique); border-color: var(--critique-filet); background: var(--critique-fond); font-weight: 600; }
.es-flash { font-size: .8rem; color: var(--ok); }
.es-flash:empty { display: none; }
.es-elements { border-top: 1px solid var(--ligne); padding-top: var(--sp-2); }
.es-elements-sum { display: flex; align-items: center; min-height: 44px; font-size: .86rem; color: var(--accent); cursor: pointer; list-style: none; }
.es-elements-sum::-webkit-details-marker { display: none; }
.es-elements-sum::before { content: '▸'; margin-right: 8px; transition: transform var(--dur-fast, .15s) var(--ease, ease); }
.es-elements[open] > .es-elements-sum::before { transform: rotate(90deg); }
.es-elements-corps { display: flex; flex-direction: column; gap: var(--sp-2); padding-top: var(--sp-2); min-width: 0; }
.es-textarea { min-height: 88px; resize: vertical; }
.es-liens-lbl { margin: var(--sp-2) 0 0; }
.es-liens { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.es-lien { display: inline-flex; align-items: center; gap: 4px; max-width: 100%; padding: 2px 4px 2px 10px; font-size: .8rem; color: var(--texte); background: var(--s3); border-radius: 20px; }
.es-lien > span { min-width: 0; overflow-wrap: anywhere; }
.es-lien-x { flex: none; width: 44px; height: 44px; font: inherit; font-size: .8rem; color: var(--texte-2); background: none; border: 0; border-radius: 50%; cursor: pointer; }
.es-lien-x:hover { background: var(--voile); color: var(--texte); }
.es-lien-vide { font-size: .8rem; color: var(--texte-3); }
.es-ligne-sel { display: flex; gap: var(--sp-2); min-width: 0; }
.es-select { flex: 1 1 auto; min-width: 0; }
.es-liens-autres, .es-actions, .es-liens-modules { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.es-actions .sf-btn, .es-liens-autres .sf-btn { min-height: 44px; }
.es-orphelins { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-3) var(--sp-4); border: 1px dashed var(--ligne-2); border-radius: var(--r-lg); }
.es-orph { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
.es-orph-titre { flex: 1 1 12rem; min-width: 0; font-size: .88rem; }

/* ---------- Retours (agrégats anonymes) ---------- */
.es-avis { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.es-fenetre { display: flex; flex-direction: column; gap: 6px; padding: var(--sp-3) var(--sp-4); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-md); }
.es-fenetre p { margin: 0; }
.es-fenetre-txt { font-size: .9rem; font-weight: 600; color: var(--texte); }
.es-fenetre-canaux { font-size: .84rem; color: var(--texte-2); }
.es-agregats { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-3); }
.es-agregat, .es-equipe { display: flex; flex-direction: column; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-lg); min-width: 0; }
.es-agregat-tete { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.es-q { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.es-q-libelle { margin: 0; font-size: .88rem; font-weight: 600; color: var(--texte); }
.es-q-moyenne { margin: 0; font-size: .82rem; color: var(--texte-2); }
.es-q-vide, .es-q-note { margin: 0; font-size: .8rem; color: var(--texte-3); }
.es-barres { display: flex; flex-direction: column; gap: 4px; }
.es-barre { display: grid; grid-template-columns: minmax(0, 9rem) minmax(0, 1fr) auto; align-items: center; gap: var(--sp-2); font-size: .8rem; color: var(--texte-2); }
.es-barre-lib { min-width: 0; overflow-wrap: anywhere; }
.es-barre-piste { height: 10px; background: var(--s3); border-radius: 5px; overflow: hidden; }
.es-barre-plein { display: block; height: 100%; background: var(--accent); border-radius: 5px; }
.es-barre-n { font-size: .74rem; color: var(--texte-3); white-space: nowrap; }
.es-citations { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.es-citation { padding: 8px 12px; background: var(--s2); border-left: 3px solid var(--ligne-2); border-radius: var(--r-xs); font-size: .86rem; line-height: 1.5; color: var(--texte); overflow-wrap: anywhere; }
.es-citation p { margin: 0; }
.es-citation-sign { margin-top: 4px !important; font-size: .76rem; color: var(--texte-3); }
.es-equipe-txt { margin: 0; font-size: .86rem; color: var(--texte-2); }

/* ---------- Budget (lecture seule) ---------- */
.es-budget, .es-stagiaires { display: flex; flex-direction: column; gap: var(--sp-3); min-width: 0; }
.es-compta-etat { margin: 0; }
.es-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-2); }
.es-kpi { display: flex; flex-direction: column; gap: 4px; padding: var(--sp-3); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-md); min-width: 0; }
.es-kpi-lbl { font-size: .74rem; color: var(--texte-3); }
.es-kpi-val { font-size: 1rem; font-weight: 600; color: var(--texte); overflow-wrap: anywhere; }
.es-kpi.is-neg .es-kpi-val { color: var(--critique); }
.es-table-sec { display: flex; flex-direction: column; gap: var(--sp-2); min-width: 0; }
.es-table { display: flex; flex-direction: column; border: 1px solid var(--ligne); border-radius: var(--r-md); overflow: hidden; }
.es-tr { display: grid; grid-template-columns: minmax(0, 2fr) repeat(3, minmax(0, 1fr)); gap: var(--sp-2); align-items: center; padding: 8px var(--sp-3); font-size: .84rem; color: var(--texte); border-top: 1px solid var(--ligne); }
.es-tr:first-child { border-top: 0; }
.es-tr > span { min-width: 0; overflow-wrap: anywhere; }
.es-tr > span:not(:first-child) { text-align: right; }
.es-th { font-size: .74rem; color: var(--texte-3); background: var(--s2); }
.es-tf { font-weight: 600; background: var(--s2); }
.es-tr.is-surligne { background: var(--alerte-fond); }
.es-td-just { margin: 0; padding: 0 var(--sp-3) 8px; font-size: .78rem; color: var(--texte-2); }

/* ---------- Stagiaires ---------- */
.es-stag-tete { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
.es-stag-compte { margin: 0; font-size: .9rem; font-weight: 600; color: var(--texte); }
.es-stag-liste { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.es-stag { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); padding: var(--sp-2) var(--sp-3); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-md); }
.es-stag-nom { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; color: var(--accent); }
.es-stag-meta { flex: 1 1 10rem; min-width: 0; font-size: .8rem; color: var(--texte-2); }

/* ---------- Rapport de fin (écran : feuille sur fond ; impression : A4) ---------- */
.es-rapport-hote { display: flex; flex-direction: column; gap: var(--sp-3); min-width: 0; }
.es-rapport-barre { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3); }
.es-rapport-barre .sf-btn { min-height: 44px; }
.es-r-aide { flex: 1 1 16rem; min-width: 0; margin: 0; font-size: .8rem; color: var(--texte-3); }
.es-rapport { font-family: var(--sans); color: var(--encre-papier); background: var(--papier); border: 1px solid var(--filet-papier-2); border-radius: var(--r-sm); padding: var(--sp-5) clamp(1rem, 4vw, 2.2rem); line-height: 1.5; min-width: 0; overflow-wrap: anywhere; }
.es-rapport h1, .es-rapport h2, .es-rapport h3 { font-family: var(--serif); font-weight: 400; color: var(--encre-papier); }
.es-r-entete { border-bottom: 2px solid var(--encre-papier); padding-bottom: var(--sp-3); margin-bottom: var(--sp-4); }
.es-r-entete h1 { margin: 0; font-size: clamp(1.6rem, 5vw, 2.1rem); line-height: 1.1; }
.es-r-surtitre { margin: 0 0 6px; font-family: var(--mono); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--encre-papier-2); }
.es-r-meta { margin: 6px 0 0; font-size: .9rem; color: var(--encre-papier-2); }
.es-r-section { margin-bottom: var(--sp-5); }
.es-r-section h2 { margin: 0 0 var(--sp-2); font-size: 1.3rem; border-bottom: 1px solid var(--filet-papier-2); padding-bottom: 4px; }
.es-r-section h3 { margin: var(--sp-3) 0 4px; font-size: 1.05rem; }
.es-r-dl { display: grid; grid-template-columns: minmax(0, 12rem) minmax(0, 1fr); gap: 4px var(--sp-3); margin: 0; }
.es-r-dl dt { font-weight: 600; font-size: .86rem; }
.es-r-dl dd { margin: 0; font-size: .88rem; }
.es-r-obj { margin-bottom: var(--sp-3); }
.es-r-obj--oo { padding-left: var(--sp-4); }
.es-r-niveau { margin: 0; font-weight: 600; font-size: .88rem; }
.es-r-note, .es-r-texte { margin: 4px 0 0; font-size: .86rem; }
.es-r-note { color: var(--encre-papier-2); }
.es-r-texte { white-space: pre-line; }
.es-r-sous { margin: var(--sp-2) 0 4px; font-weight: 600; font-size: .86rem; }
.es-r-citations, .es-r-liste { margin: 0; padding-left: 1.2rem; font-size: .86rem; }
.es-r-citations li, .es-r-liste li { margin-bottom: 4px; }
.es-r-table { width: 100%; border-collapse: collapse; font-size: .86rem; }
.es-r-table th, .es-r-table td { padding: 5px 8px; border-bottom: 1px solid var(--filet-papier-2); text-align: right; }
.es-r-table th:first-child { text-align: left; }
.es-r-table thead th { font-weight: 600; color: var(--encre-papier-2); }
.es-r-total th, .es-r-total td { font-weight: 600; border-top: 2px solid var(--encre-papier); }

/* ---------- Questionnaires de fin (familles, enfants) ---------- */
.qf-espace { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.jf-appel-avis { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-2) var(--sp-3); margin: var(--sp-3) 0; padding: var(--sp-3) var(--sp-4); background: var(--accent-fond); border: 1px solid var(--accent-filet); border-radius: var(--r-lg); }
.jf-appel-avis p { flex: 1 1 16rem; min-width: 0; margin: 0; font-size: .92rem; line-height: 1.5; color: var(--texte); }
.jf-appel-avis .jr-btn { min-height: 44px; }
.qf-chapeau { margin: 0; font-size: .92rem; line-height: 1.55; color: var(--texte-2); }
.qf-carte { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-lg); min-width: 0; }
.qf-carte .jf-h2 { margin-top: 0; }
.qf-carte .jf-texte { margin: 0; }
.qf-carte > .jr-btn { align-self: flex-start; min-height: 44px; }
.qf-merci { display: flex; flex-direction: column; gap: 4px; padding: var(--sp-3); border-radius: var(--r-md); background: var(--ok-fond); border: 1px solid var(--ok-filet); color: var(--texte); }
.qf-merci p { margin: 0; line-height: 1.5; }
.qf-merci-titre { font-weight: 600; color: var(--ok); }
.qf-versions { display: flex; flex-direction: column; gap: var(--sp-2); }
.qf-versions-q { margin: 0; font-size: .88rem; font-weight: 600; color: var(--texte); }
.qf-version { display: flex; flex-direction: column; gap: 2px; min-height: 56px; padding: var(--sp-3); font: inherit; text-align: left; color: var(--texte); background: var(--s2); border: 1px solid var(--ligne-2); border-radius: var(--r-md); cursor: pointer; }
.qf-version:hover { border-color: var(--survol-filet); }
.qf-version:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.qf-version-titre { font-weight: 600; }
.qf-version-texte { font-size: .84rem; color: var(--texte-2); }
.qf { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.qf-tete { display: flex; flex-direction: column; gap: 6px; }
.qf-titre { margin: 0; font-family: var(--serif); font-weight: 400; font-size: 1.5rem; line-height: 1.15; color: var(--texte); }
.qf-intro { margin: 0; font-size: .9rem; line-height: 1.55; color: var(--texte-2); }
.qf-q { display: flex; flex-direction: column; gap: var(--sp-2); margin: 0; padding: var(--sp-3) var(--sp-4); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-lg); min-width: 0; }
/* Légende FLOTTANTE : une légende rendue « sur la bordure » du fieldset la coupait dès qu'elle passait sur deux lignes. */
.qf-libelle { float: left; width: 100%; padding: 0; margin: 0; font-size: .98rem; font-weight: 600; line-height: 1.4; color: var(--texte); }
.qf-facultatif { font-weight: 400; font-size: .8rem; color: var(--texte-3); }
.qf-aide { margin: 0; font-size: .8rem; color: var(--texte-3); }
.qf-options { display: flex; flex-wrap: wrap; gap: var(--sp-2); min-width: 0; }
.qf-options--echelle { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.qf-opt { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 48px; min-width: 48px; padding: 8px 14px; font: inherit; font-size: .92rem; color: var(--texte); background: var(--s2); border: 1px solid var(--ligne-2); border-radius: var(--r-md); cursor: pointer; }
.qf-opt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.qf-opt[aria-checked="true"], .qf-opt[aria-pressed="true"] { color: var(--accent); background: var(--accent-fond); border-color: var(--accent); font-weight: 600; box-shadow: inset 0 0 0 1px var(--accent); }
.qf-options--pictos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.qf-opt--picto { flex-direction: column; min-height: 104px; padding: var(--sp-2); text-align: center; }
.qf-picto { display: inline-grid; place-items: center; width: 56px; height: 56px; color: var(--texte-2); }
.qf-picto svg { width: 100%; height: 100%; }
.qf-opt[aria-checked="true"] .qf-picto, .qf-opt[aria-pressed="true"] .qf-picto { color: var(--accent); }
.qf-opt-lib { font-size: .86rem; line-height: 1.25; overflow-wrap: anywhere; }
.qf-bornes { display: flex; justify-content: space-between; gap: var(--sp-2); font-size: .76rem; color: var(--texte-3); }
.qf-texte { width: 100%; box-sizing: border-box; min-height: 88px; padding: 10px 12px; font: inherit; font-size: 1rem; color: var(--texte); background: var(--s2); border: 1px solid var(--ligne-2); border-radius: var(--r-sm); resize: vertical; }
.qf-texte:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-filet); }
.qf-compteur { margin: 0; align-self: flex-end; font-family: var(--mono); font-size: .72rem; color: var(--texte-3); }
.qf-signer { display: flex; align-items: flex-start; gap: var(--sp-2); padding: var(--sp-3); font-size: .86rem; line-height: 1.45; color: var(--texte-2); background: var(--s1); border: 1px solid var(--ligne); border-radius: var(--r-md); cursor: pointer; }
.qf-signer input { flex: none; width: 22px; height: 22px; margin: 0; accent-color: var(--accent); }
.qf-erreur { margin: 0; font-size: .86rem; color: var(--critique); }
.qf-erreur:empty { display: none; }
.qf-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3); }
.qf-actions .jr-btn { min-height: 48px; }
.ados-qf:has(> [hidden]:only-child) { display: none; }
.qf-ados { gap: var(--sp-3); }
.qf-ados-titre { margin: 0; font-family: var(--serif); font-weight: 400; font-size: 1.3rem; color: var(--texte); }
.qf-ados .qf-q { background: var(--s2); }

/* ---------- Écrans étroits ---------- */
@media (max-width: 600px) {
  .es-volets-grille { grid-template-columns: minmax(0, 1fr); }
  .es-onglets .rec-tabs { flex-wrap: wrap; }
  .es-obj--oo { margin-left: var(--sp-2); }
  .es-kpis { grid-template-columns: minmax(0, 1fr); }
  .es-tr { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .es-tr > span:first-child { grid-column: 1 / -1; }
  .es-th > span:not(:first-child) { display: none; }
  .es-tr:not(.es-th) > span[data-lbl] { display: flex; justify-content: space-between; gap: var(--sp-2); text-align: left; }
  .es-tr:not(.es-th) > span[data-lbl]::before { content: attr(data-lbl); color: var(--texte-3); font-family: var(--sans); }
  .es-barre { grid-template-columns: minmax(0, 1fr) auto; }
  .es-barre-piste { grid-column: 1 / -1; grid-row: 2; }
  .es-r-dl { grid-template-columns: minmax(0, 1fr); }
  .es-r-dl dd { margin-bottom: 6px; }
  .qf-options--echelle { gap: 6px; }
  .qf-opt { padding: 8px; }
}

/* ---------- Impression : le rapport seul, en A4 (body.es-rapport-actif, posé par rapport.js) ---------- */
@media print {
  @page { size: A4; margin: 16mm 15mm; }
  body.es-rapport-actif { background: var(--papier); }
  body.es-rapport-actif [data-header], body.es-rapport-actif [data-foot], body.es-rapport-actif .nav-bas,
  body.es-rapport-actif [data-tete-page], body.es-rapport-actif [data-projet-nav], body.es-rapport-actif [data-projet-top],
  body.es-rapport-actif .es-no-print, body.es-rapport-actif .es-page > :not(.es-zone),
  body.es-rapport-actif .bandeau-simulation, body.es-rapport-actif [data-bandeau-simulation] { display: none !important; }
  body.es-rapport-actif .wrap[data-app], body.es-rapport-actif .proj-shell, body.es-rapport-actif .proj-content { max-width: none; margin: 0; padding: 0; }
  body.es-rapport-actif .es-rapport { border: 0; border-radius: 0; padding: 0; }
  .es-r-section h2, .es-r-section h3 { break-after: avoid; }
  .es-r-obj, .es-r-q, .es-r-table, .es-r-chiffres { break-inside: avoid; }
}
