/* parcours public — styles spécifiques (le reste vient de evalio.css) */
.accueil .intro{color:var(--encre-doux);margin:0 0 22px}
.dom{border:1px solid var(--trait);border-radius:9px;margin-bottom:8px;overflow:hidden;background:var(--carte)}
.dom-tete{display:flex;justify-content:space-between;align-items:center;width:100%;border:none;background:none;font:inherit;padding:13px 16px;cursor:pointer;text-align:left}
.dom-tete:hover{background:var(--papier)}
.dom-tete .nom{font-weight:600}
.dom-tete .cpt{font-size:12px;color:var(--encre-doux)}
.dom-corps{border-top:1px solid var(--trait)}
.testligne{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--trait);cursor:pointer}
.testligne:last-child{border-bottom:none}
.testligne:hover{background:var(--papier)}
.testligne .tn{flex:1;font-size:14px}
.testligne .tm{font-size:12px;color:var(--encre-doux);white-space:nowrap}
.fiche{margin-top:4px}
.fiche .sd{color:var(--encre-doux);font-size:14px;margin:0 0 18px}
.repart{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:16px 0}
@media(max-width:520px){.repart{grid-template-columns:1fr}}
.repart h3{font-family:Inter,system-ui,sans-serif;font-size:13px;color:var(--encre-doux);margin:0 0 8px;font-weight:600}
.barre{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:5px}
.barre .lbl{width:92px;color:var(--encre-doux)}
.barre .jr{flex:1;height:7px;background:var(--trait);border-radius:4px;overflow:hidden}
.barre .jr i{display:block;height:100%;background:var(--accent)}
.barre .v{width:26px;text-align:right;font-variant-numeric:tabular-nums}
/* notions : libellé + nombre sur une ligne, barre pleine largeur dessous */
.barre-notion{flex-wrap:wrap;row-gap:3px;margin-bottom:8px}
.barre-notion .lbl{width:auto;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barre-notion .jr{flex:1 1 100%}
.barre-suite{font-size:12.5px;color:var(--encre-doux);margin:2px 0 0}
.bride{font-size:13px;color:var(--attention);background:var(--alerte-doux,#f6edda);border:1px solid #e4d2a4;border-radius:8px;padding:10px 12px;margin:14px 0}
.repart-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:767.98px){.repart-3{grid-template-columns:1fr}}
/* fiche : chaque bloc de répartition dans une carte (même hauteur sur une ligne : étirement de la grille) */
.repart-carte{background:var(--papier);border-color:var(--trait);box-shadow:none}
.repart-carte > .card-body{padding:14px 16px}
.repart-carte .etalon{margin:0;padding:0;border:0}
/* histogramme de la fiche : barres franches (couleur d'accent ; l'écran de fin garde accent-doux + tranche du candidat foncée) */
.repart-carte .histo-barre{background:var(--accent);background:color-mix(in srgb,var(--accent) 80%,transparent);border:0}
.repart-carte .etalon-attente{margin:0}
.lignebtns{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
/* fiche : bouton principal, code d'accès repliable, retour */
.fiche-lancer{margin-top:18px}
.code-bloc{margin-top:12px}
.code-ouvrir{border:0;background:none;padding:4px 0;font:inherit;font-size:13.5px;color:var(--accent);cursor:pointer}
.code-ouvrir:hover{text-decoration:underline}
.code-zone{margin-top:6px;display:flex;gap:8px;max-width:320px}
.code-zone input{flex:1;min-width:0;font:inherit;font-size:16px;text-transform:uppercase;letter-spacing:1px;border:1px solid var(--trait-fort);border-radius:8px;padding:6px 10px;background:var(--carte);color:var(--encre)}
.fiche-retour{margin:20px 0 0;font-size:13.5px}
.fiche-retour a{color:var(--encre-doux)}
.fiche-retour .id-ref{margin-top:0}
/* note des candidats sous le titre de la fiche : 5 étoiles grises + calque doré coupé à la note */
.fiche-note{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px;margin:-10px 0 16px}
.note-etoiles{position:relative;display:inline-block;color:var(--trait-fort);font-size:17px;line-height:1;letter-spacing:1px;white-space:nowrap}
.note-etoiles-pleines{position:absolute;inset:0 auto 0 0;overflow:hidden;color:#e0a526}
.note-n{color:var(--encre-doux)}
/* avis des candidats (emplacement réservé) */
.avis{margin:18px 0 4px;padding-top:14px;border-top:1px solid var(--trait)}
.avis h3{font-family:Inter,system-ui,sans-serif;font-size:13px;color:var(--encre-doux);margin:0 0 10px;font-weight:600}
.avis-note{color:var(--encre);margin-left:6px}
.avis-extrait{font-size:14px;margin:0 0 8px;padding-left:10px;border-left:2px solid var(--trait-fort)}
@media(max-width:767.98px){
  .carte.fiche{padding:20px 16px}
  /* bouton « Je lance » collé en bas de l'écran tant que la fiche défile au-dessus */
  .fiche-lancer{position:sticky;bottom:0;z-index:5;margin:18px -16px 0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));
    background:var(--carte);border-top:1px solid var(--trait)}
  .fiche-lancer .btn{width:100%}
  /* sur mobile, le footer n'est plus fixé dans l'application (fiche, test, fin) : il suit le contenu */
  body:has(#app) footer.pied{position:static}
  body:has(#app) main.avec-pied-fixe{padding-bottom:24px}
}
/* passation */
.suivi{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.suivi .pos{font-size:13px;color:var(--encre-doux);white-space:nowrap;font-variant-numeric:tabular-nums}
.jauge{flex:1;height:6px;background:var(--trait);border-radius:4px;overflow:hidden}
.jauge i{display:block;height:100%;background:var(--accent);transition:width .35s}
.meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}
.pastille{font-size:12px;color:var(--encre-doux);border:1px solid var(--trait-fort);border-radius:20px;padding:2px 10px}
.consigne{font-size:13px;color:var(--encre-doux);padding-left:10px;border-left:2px solid var(--accent)}
.enonce{font-family:Fraunces,serif;font-size:20px;line-height:1.35;font-weight:500;margin:0 0 20px}
.choix{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;align-items:flex-start;gap:12px;padding:13px 15px;border:1px solid var(--trait);border-radius:8px;cursor:pointer}
.opt.sel{border-color:var(--accent);background:var(--accent-doux)}
.opt .mk{flex:0 0 20px;height:20px;border:1.5px solid var(--trait-fort);border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px}
.opt.check .mk{border-radius:5px}
.opt.sel .mk{background:var(--accent);border-color:var(--accent)}
.opt .lib{flex:1}
.pied-test{display:flex;gap:12px;margin-top:22px}
/* fin */
.bilan{text-align:center}
.note{font-family:Fraunces,serif;font-size:54px;font-weight:600;color:var(--accent);line-height:1}
.note-sous{color:var(--encre-doux);font-size:15px}
.bride-fin{margin:16px auto 0;font-size:13.5px;color:var(--encre-doux);max-width:420px}
.formule{display:flex;align-items:center;gap:14px;border:1px solid var(--trait);border-radius:10px;padding:14px 16px;margin-bottom:10px;text-align:left}
.formule.vedette{border-color:var(--accent)}
.formule .f-txt{flex:1}.formule .f-nom{font-weight:600;font-size:14.5px}
.formule .f-det{font-size:12.5px;color:var(--encre-doux)}
.formule .f-prix{font-family:Fraunces,serif;font-weight:600;font-size:17px;white-space:nowrap}
/* écran de fin (gabarit ecrans/resultat.ejs) */
.bilan-corrige{margin-bottom:16px}
.note-sous.corrige-ok{margin-top:10px;color:var(--accent)}
.formules{margin-top:18px;text-align:left}
.formule .f-nom,.formule .f-det{display:block}
.corr-media{max-width:100%;max-height:180px;margin-bottom:10px}
.retour-catalogue{text-align:center;margin-top:16px}
/* fin de test : évaluation du test (pied de carte, 5 étoiles) */
.avis-test{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:14px 24px;background:transparent;border-top-color:var(--trait)}
.avis-test-txt{display:flex;flex-direction:column;font-size:14px;line-height:1.35}
.avis-test-txt span{color:var(--encre-doux);font-size:13px}
.etoiles{display:flex;gap:2px}
.etoile{border:0;background:none;padding:0 3px;font-size:28px;line-height:1;color:var(--trait-fort);cursor:pointer;transition:color .12s,transform .12s}
.etoile.pleine{color:#e0a526}
.etoile:hover{transform:scale(1.12)}
.etoile:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.etoile:disabled{cursor:default}
.avis-test-etat{flex:1 1 100%;margin:0;font-size:12.5px;color:var(--encre-doux);min-height:1em}
.avis-test-etat:empty{display:none}
@media(max-width:767.98px){.avis-test{padding:12px 16px}.etoile{font-size:32px;padding:0 4px}}
@media (prefers-reduced-motion:reduce){.etoile{transition:none}.etoile:hover{transform:none}}
.achat-suite{margin-top:18px}
/* formule cliquable = bouton d'achat */
button.formule{width:100%;font:inherit;color:inherit;background:var(--carte);cursor:pointer;transition:border-color .15s,box-shadow .15s}
button.formule:hover,button.formule:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-doux);outline:none}
button.formule:disabled{opacity:.6;cursor:wait}
/* étalonnage : résultats des candidats (fiche) et position du candidat (fin de test) */
.etalon{margin:18px 0 4px;padding-top:14px;border-top:1px solid var(--trait)}
.etalon h3{font-family:Inter,system-ui,sans-serif;font-size:13px;color:var(--encre-doux);margin:0 0 10px;font-weight:600}
.histo{display:flex;align-items:flex-end;gap:4px;height:64px;max-width:420px}
.histo-barre{flex:1;background:var(--accent-doux);border:1px solid var(--trait-fort);border-bottom:0;border-radius:4px 4px 0 0;min-height:2px}
.histo-barre.histo-vous{background:var(--accent);border-color:var(--accent)}
.histo-axe{display:flex;justify-content:space-between;max-width:420px;font-size:11px;color:var(--encre-doux);margin-top:3px;
  border-top:1px solid var(--trait-fort);padding-top:2px}
.etalon-legende{font-size:13px;color:var(--encre-doux);margin:8px 0 0}
.etalon-centile{font-size:15px;margin:0 0 10px}
.etalon-resultat{border-top:0;padding-top:4px}
.etalon-attente{font-size:12.5px;color:var(--encre-doux);font-style:italic}
/* accroche de l'écran de fin gratuit (avant affichage des formules) */
.accroche-offre{margin:20px 0 0;display:flex;align-items:center;gap:16px;flex-wrap:wrap;text-align:left}
.accroche-offre .accroche-texte{flex:1 1 260px;margin:0;font-size:15px}
.accroche-offre .btn{flex:none}
.achat-annule{font-size:13px;color:var(--attention);background:var(--alerte-doux,#f6edda);border:1px solid #e4d2a4;
  border-radius:8px;padding:9px 12px;margin:14px 0 0}
.achat-mention{font-size:12px;color:var(--encre-doux);margin:4px 0 0}
/* écran « paiement confirmé » */
.achat{text-align:center}
.achat-titre{font-family:Fraunces,serif;font-size:22px;margin:0 0 6px}
.achat-sous{font-size:14px;color:var(--encre-doux);margin:0 0 18px}
.achat-code{font-family:ui-monospace,Consolas,monospace;font-size:clamp(22px,7vw,32px);font-weight:600;letter-spacing:.08em;
  padding:16px 12px;border:2px dashed var(--accent);border-radius:10px;background:var(--accent-doux);margin:0 auto 16px;max-width:420px;user-select:all}
.achat-avert{font-size:13.5px;line-height:1.5;text-align:left;color:var(--attention);background:var(--alerte-doux,#f6edda);
  border:1px solid #e4d2a4;border-radius:8px;padding:12px 14px;margin:0 auto 16px;max-width:520px}
.achat .lignebtns{justify-content:center}
.etat{color:var(--encre-doux);padding:30px;text-align:center}

/* FS grille */
table.grille{width:auto;max-width:100%;border-collapse:collapse;margin:4px 0}
table.grille th{text-align:left;font-size:12px;font-weight:600;color:var(--encre-doux);padding:8px 14px;border-bottom:1px solid var(--trait-fort);min-width:90px}
table.grille td{padding:9px 14px;border-bottom:1px solid var(--trait);vertical-align:middle;min-width:90px}
.grille-pile .gl{padding:6px 0}
.saisie{display:flex;flex-direction:column;gap:6px}
.saisie .libelle{font-family:Fraunces,serif;font-size:18px}
.saisie .suite{color:var(--accent);font-weight:600}
table.grille select,.saisie input,.grille-pile input,.grille-pile select,.grille-css select,.grille-css input{font:inherit;color:var(--encre);background:var(--carte);border:1px solid var(--trait-fort);border-radius:6px;padding:7px 9px;max-width:280px;width:100%;box-sizing:border-box}
table.grille select:focus,.saisie input:focus,.grille-css select:focus,.grille-css input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
/* FRAPPE */
.modele{background:var(--papier);border:1px solid var(--trait);border-radius:8px;padding:14px 16px;font-size:15px;line-height:1.6;user-select:none}
textarea.frappe{width:100%;min-height:120px;font:inherit;font-size:15px;line-height:1.6;color:var(--encre);background:var(--carte);border:1px solid var(--trait-fort);border-radius:8px;padding:12px 14px;margin-top:12px;resize:vertical}
textarea.frappe:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
/* ZONE */
.zone-img{position:relative;width:100%;max-width:590px;margin:0 auto;border:1px solid var(--trait);border-radius:8px;background:var(--carte)}
.zone{position:absolute;border:1.5px solid rgba(47,111,94,.5);border-radius:4px;background:rgba(255,255,255,.15);color:transparent;font-size:0;cursor:pointer}
/* survols réservés aux appareils à souris : au toucher, :hover reste collé après le tap */
@media(hover:hover){
  .zone:hover{background:rgba(47,111,94,.18);border-color:var(--accent)}
  .designation .mot:hover{background:var(--accent-doux)}
  .ecr-bloc:hover{border-color:var(--trait-fort)}
  .q-tableau td.tc-case:hover{background:var(--papier)}
}
.zone.sel{border-color:var(--accent);border-width:2px;background:rgba(47,111,94,.28)}
.zone-doc{text-align:center;margin-bottom:14px}
.zone-legende-h{font-size:13px;color:var(--encre-doux);margin-bottom:8px}
.texte-inline .phrase{font-size:16px;line-height:2.1;margin:0 0 10px}
.select-inline{font:inherit;font-size:15px;color:var(--accent);background:var(--accent-doux);border:1px solid var(--accent);border-radius:6px;padding:3px 6px;margin:0 2px;font-weight:600}
.input-inline{font:inherit;font-size:15px;color:var(--encre);background:var(--carte);border:none;border-bottom:2px solid var(--accent);padding:1px 4px;margin:0 2px;width:120px}
.input-inline:focus{outline:none;background:var(--accent-doux)}
.designation{font-size:16px;line-height:2}
.designation .mot{cursor:pointer;padding:1px 2px;border-radius:4px;transition:background .1s}
.designation .mot.designe{font-weight:700;color:var(--accent);background:var(--accent-doux)}

/* correction détaillée (récapitulatif) */
.corr-bloc{margin-bottom:12px;padding:18px 20px}
.corr-tete{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.corr-verdict{margin-left:auto;font-size:12.5px;font-weight:600}
.corr-verdict.juste{color:var(--juste)}
.corr-verdict.partiel{color:var(--attention)}
.corr-verdict.faux{color:var(--faux)}
.corr-enonce{font-family:Fraunces,serif;font-size:17px;font-weight:500;margin:0 0 14px;line-height:1.35}
.corr-explic{margin-top:12px;font-size:13.5px;color:var(--encre-doux);background:var(--papier);border-radius:8px;padding:11px 13px;line-height:1.55}
/* badges verdict dans les options */
.opt .vd{font-size:12px;font-weight:600;margin-left:auto;white-space:nowrap}
.opt .vd.ok{color:var(--juste)} .opt .vd.ko{color:var(--faux)}
.opt.ok{border-color:var(--juste);background:color-mix(in srgb,var(--juste) 10%,transparent)}
.opt.ko{border-color:var(--faux);background:color-mix(in srgb,var(--faux) 10%,transparent)}
/* désignation corrigée */
.designation .mot.juste{font-weight:700;color:var(--juste);background:color-mix(in srgb,var(--juste) 15%,transparent)}
.designation .mot.errone{font-weight:700;color:var(--faux);background:color-mix(in srgb,var(--faux) 15%,transparent);text-decoration:line-through}

/* champs de grille/inline en mode corrigé */
.champ-corr{display:inline-flex;align-items:baseline;gap:8px;padding:3px 8px;border-radius:6px;font-size:15px}
.champ-corr.juste{background:color-mix(in srgb,var(--juste) 15%,transparent);color:var(--juste);font-weight:600}
.champ-corr.faux{background:color-mix(in srgb,var(--faux) 12%,transparent);color:var(--faux)}
.champ-corr .rep{font-weight:600}
.champ-corr.faux .rep{text-decoration:line-through}
.champ-corr .att{color:var(--juste);font-weight:600;font-size:13.5px}
/* zones corrigées */
.zone.ok{border:2px solid var(--juste);background:color-mix(in srgb,var(--juste) 22%,transparent)}
.zone.ko{border:2px solid var(--faux);background:color-mix(in srgb,var(--faux) 22%,transparent)}

/* fil d'Ariane */
.ariane{font-size:13px;color:var(--encre-doux);margin-bottom:14px;display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.ariane .sep{color:var(--trait-fort)}
.ariane .courant{color:var(--encre);font-weight:600}
.code-etat{font-size:13px;margin:8px 0 0;line-height:1.45}
.code-etat.ok{color:var(--accent)}
.code-etat.ko{color:#b3261e}
.code-fin{margin-top:16px;padding-top:14px;border-top:1px solid var(--trait);font-size:13.5px;color:var(--encre-doux)}
.code-fin p{margin:0 0 10px}
/* images dans les réponses : cellules de tableau, segments de phrase (grille « texte_inline ») */
.tc-img{max-width:100%;max-height:110px;vertical-align:middle}
.tc-case .tc-img{margin-left:6px}
.img-inline{max-height:90px;max-width:100%;vertical-align:middle;margin:2px 4px}
/* page de question (gabarit ecrans/question.ejs) : card-body + card-footer */
.carte-question{margin-top:8px}
.carte-question > .card-body{padding:22px 24px}
.carte-question .ariane{margin-bottom:16px}
.question-media{margin:-6px 0 18px}
.question-media img{max-width:100%;max-height:220px}
.carte-question .avis-retour{margin:18px 0 0}
/* surtitre de question : notion évaluée */
.question-notion{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:4px 0 6px}
/* question « mémoire » (tease) */
.tease-attente,.tease-masque{font-size:14px;color:var(--encre-doux);border:1px dashed var(--trait-fort);border-radius:9px;
  padding:14px 16px;margin:0 0 18px;text-align:center}
.tease-attente{animation:tease-pulse 1.2s ease-in-out infinite alternate}
@keyframes tease-pulse{from{opacity:.55}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.tease-attente{animation:none}}
.tease-question{font-family:Fraunces,Georgia,serif;font-size:1.0625rem;font-weight:600;margin:0 0 14px;color:var(--encre)}
/* question chronométrée : badge de délai + barre de temps restant (inversée) dans le pied */
.badge-chrono{font-size:12px;font-weight:600;color:var(--attention);border:1px solid currentColor;border-radius:20px;padding:1px 9px;white-space:nowrap}
.pied-chrono{display:flex;align-items:center;gap:10px;max-width:320px;margin:0 auto}
.pied-chrono-barre{flex:1;--bs-progress-height:8px;--bs-progress-bg:var(--trait);--bs-progress-bar-bg:var(--accent);
  --bs-progress-bar-transition:width .1s linear}
.pied-chrono-texte{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--encre-doux);min-width:3.2em;text-align:right}
.pied-chrono.lecture .pied-chrono-barre{--bs-progress-bar-bg:var(--trait-fort)}
.pied-chrono-texte{white-space:nowrap}
.pied-chrono.urgent .pied-chrono-barre{--bs-progress-bar-bg:var(--faux)}
.pied-chrono.urgent .pied-chrono-texte{color:var(--faux)}
@media(max-width:520px){.pied-temps:has(.pied-chrono){display:block;flex:1 1 100%}}
.pied-temps-barre{--bs-progress-height:6px;--bs-progress-bg:var(--trait);--bs-progress-bar-bg:var(--attention);
  --bs-progress-bar-transition:width .1s linear;max-width:260px;margin:0 auto}
/* pied : progression | décompte | (suspendre) | valider */
.pied-question{display:flex;align-items:center;gap:16px;padding:14px 24px;background:transparent;border-top-color:var(--trait)}
.pied-progression{flex:0 1 280px;display:flex;align-items:center;gap:10px;min-width:160px}
.pied-progression .pos{font-size:13px;color:var(--encre-doux);white-space:nowrap;font-variant-numeric:tabular-nums}
.pied-progression .progress{flex:1;--bs-progress-height:6px;--bs-progress-bg:var(--trait);--bs-progress-bar-bg:var(--accent);
  --bs-progress-bar-transition:width .35s ease}
.pied-temps{flex:1 1 auto;min-width:0}
.pied-valider{margin-left:auto;flex:none}
@media(max-width:520px){
  .pied-question{flex-wrap:wrap}
  .pied-progression{flex:1 1 100%}
  .pied-temps:empty{display:none}
  .pied-valider{flex:1 1 100%}
}
/* question sur mobile : en-tête, énoncé, pied collé en bas de l'écran */
.carte-question{scroll-margin-top:80px}
@media(max-width:767.98px){
  .carte-question > .card-body{padding:18px 16px}
  .carte-question .ariane{margin-bottom:8px}
  .enonce{font-size:18px}
  .pied-question{position:sticky;bottom:0;z-index:5;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));
    background:var(--carte);border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}
  /* saisie au clavier : le pied reprend sa place pour ne pas masquer le champ (sauf chrono) */
  .carte-question:has(:is(input,textarea):focus) .pied-question:not(.avec-chrono){position:static}
  /* cibles tactiles plus larges pour les mots à désigner */
  .designation .mot{padding:3px 4px}
}
.avis-retour{font-size:13px;color:var(--attention);background:var(--alerte-doux,#f6edda);border:1px solid #e4d2a4;
  border-radius:8px;padding:8px 12px;margin:-4px 0 12px}
.avis-focus{font-size:12px;color:var(--encre-doux);margin:-6px 0 12px}
.ariane a{color:var(--accent);text-decoration:none}
.ariane a:hover{text-decoration:underline}
.fiche-enonce{font-size:14px;line-height:1.55;margin:0 0 14px}
/* identifiant de question (discret) */
.id-ref{margin-top:14px;text-align:right;font-size:11.5px;color:var(--trait-fort);font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace}

/* alignement des valeurs numériques dans les grilles (règle historique) */
td.td-num,th.th-num{text-align:right;font-variant-numeric:tabular-nums}
.cell-num{font-variant-numeric:tabular-nums}

/* barre de calcul (ancienne suite de tirets) */
.barre-calc{border-top:2px solid var(--encre);height:0;margin:2px 0;min-width:60px}
td .barre-calc{width:100%;min-width:60px}
.barre-inline{display:inline-block;border-top:2px solid var(--encre);width:80px;vertical-align:middle;margin:0 4px}

/* la grille ne s'étire plus sur toute la carte ; défilement si trop large */
.grille-wrap{overflow-x:auto}

/* grille en CSS grid (colonnes régulières, robustes) */
.grille-css{display:grid;gap:4px 18px;align-items:center;width:max-content;max-width:100%}
.grille-css .gcell{padding:7px 2px;min-width:0}
.grille-css .saisie{min-width:150px}
.grille-css .gcell.td-num{text-align:right;font-variant-numeric:tabular-nums}
.grille-css .gentete{font-size:12px;font-weight:600;color:var(--encre-doux);border-bottom:1px solid var(--trait-fort);padding-bottom:6px}
.grille-css .barre-calc{width:100%;min-width:60px}
.grille-css .saisie input{width:100%;box-sizing:border-box}

/* select harmonisés (apparence cohérente, pas le style natif) */
.grille-css select,table.grille select,.grille-pile select,.select-inline{
  -webkit-appearance:none;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--encre-doux) 50%),linear-gradient(135deg,var(--encre-doux) 50%,transparent 50%);
  background-position:calc(100% - 15px) center,calc(100% - 10px) center;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:28px;cursor:pointer}

/* catalogue en index multi-colonnes (façon "Tous nos tests") */
.catalogue-cols{column-width:300px;column-gap:36px;margin-top:18px}
.dom-bloc{break-inside:avoid;margin-bottom:22px;display:inline-block;width:100%}
.dom-titre{font-family:Fraunces,serif;font-size:17px;font-weight:600;color:var(--encre);margin:0 0 8px;padding-bottom:4px;border-bottom:1px solid var(--trait)}
.dom-tests{font-size:14px;line-height:1.7;color:var(--encre-doux);margin:0}
.test-lien{color:var(--accent);cursor:pointer;text-decoration:none}
.test-lien:hover{text-decoration:underline}
.puce{color:var(--trait-fort)}

/* ===== accueil en cartes (views/public/accueil.ejs) =====
   grille Bootstrap : titre 8/12 + comment ça marche 4/12 ; vitrine 8/12 + plus passés 4/12 ;
   catalogue 12/12. Sous 992 px, les cartes s'empilent dans cet ordre. */
.une{max-width:1240px;margin:0 auto}
.une-carte{padding:26px 28px;box-shadow:var(--ombre)}
.une-titre{justify-content:center}
.une-sur{font-size:12.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
.une-titre h1{font-family:Fraunces,serif;font-weight:600;font-size:clamp(28px,4vw,48px);line-height:1.08;letter-spacing:-.015em;margin:0 0 14px}
.une-chapo{font-family:Fraunces,serif;font-size:clamp(17px,1.8vw,21px);line-height:1.4;color:var(--encre-doux);max-width:62ch;margin:0 0 18px}
.une-chapo strong{color:var(--encre);font-weight:600}
.une-atouts{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 10px;font-size:13.5px}
.une-atouts li{border:1px solid var(--trait-fort);border-radius:20px;padding:3px 12px}
.une-atouts li::before{content:"✓ ";color:var(--accent);font-weight:700}
.une-rubrique{font-family:Inter,system-ui,sans-serif;font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--encre);margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid var(--trait)}
/* comment ça marche : étapes numérotées, empilées */
.une-etapes{list-style:none;padding:0;margin:0;counter-reset:etape}
.une-etapes li{counter-increment:etape;position:relative;padding:0 0 0 44px}
.une-etapes li+li{margin-top:16px}
.une-etapes li::before{content:counter(etape);position:absolute;left:0;top:-2px;font-family:Fraunces,serif;font-size:34px;font-weight:600;line-height:1;color:var(--accent)}
.une-etapes h3{font-family:Fraunces,serif;font-size:17px;font-weight:600;margin:0 0 4px}
.une-etapes p{font-size:13.5px;line-height:1.5;color:var(--encre-doux);margin:0}
.une-etapes a{color:var(--accent);white-space:nowrap}
/* question-vitrine (dans sa carte) */
.vitrine-carte .enonce{font-size:19px;margin-bottom:12px}
.vitrine-carte .consigne{margin:0 0 12px}
.vitrine-carte .question-media img{max-width:100%;max-height:220px;margin-bottom:12px}
.vitrine-verdict{margin:14px 0 0;font-size:14px}
.vitrine-verdict.juste b{color:var(--juste)} .vitrine-verdict.partiel b{color:var(--attention)} .vitrine-verdict.faux b{color:var(--faux)}
.vitrine-stat{margin:14px 0 0;font-size:13.5px;color:var(--encre-doux);font-style:italic}
.vitrine-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.vitrine-source{margin:12px 0 0;font-size:12.5px;color:var(--encre-doux)}
.vitrine-source a{color:var(--accent)}
.vitrine-source-haut{margin:-4px 0 12px}
.vitrine-fin p{color:var(--encre-doux);margin:0 0 6px}
.vitrine-fin .vitrine-fin-titre{font-family:Fraunces,serif;font-size:19px;font-weight:600;color:var(--encre)}
/* les plus passés : classement numéroté façon « les plus lus » */
.classement{list-style:none;padding:0;margin:0;counter-reset:rang}
.classement li{counter-increment:rang;border-bottom:1px solid var(--trait)}
.classement li:last-child{border-bottom:0}
.classement a{display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:8px;padding:11px 0;color:var(--encre);text-decoration:none}
.classement a::before{content:counter(rang);grid-row:1 / span 3;font-family:Fraunces,serif;font-size:28px;font-weight:600;line-height:1;color:var(--trait-fort)}
.classement .cl-dom{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.classement .cl-nom{font-family:Fraunces,serif;font-size:16.5px;font-weight:600;line-height:1.25}
.classement a:hover .cl-nom{text-decoration:underline}
.classement .cl-meta{font-size:12.5px;color:var(--encre-doux);margin-top:2px}
.classement .cl-note{color:var(--attention);font-weight:600}
/* index « Tous nos tests » : colonnes filetées */
#catalogue{scroll-margin-top:80px}
#catalogue .catalogue-cols{column-width:240px;column-gap:28px;column-rule:1px solid var(--trait);margin-top:0}
#catalogue .dom-titre{font-size:17px}
/* pages d'information /offres, /faq : même charte que l'accueil (.une, .une-carte, .une-titre, .une-rubrique) */
.une-carte p a:not(.btn),.faq .accordion-body a,.page-info-etapes a{color:var(--accent)}
.page-info-etapes{padding-left:20px;line-height:1.65;margin:0}
.page-info-etapes li{margin-bottom:6px}
.page-info-note{font-size:13px;color:var(--encre-doux);margin:14px 0 0}
.offres{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.offre{display:flex;flex-direction:column;background:var(--carte);border:1px solid var(--trait);border-radius:var(--rayon);box-shadow:var(--ombre);padding:22px 20px;position:relative}
.offre.vedette{border:2px solid var(--accent)}
.offre-badge{position:absolute;top:-11px;left:18px;margin:0;background:var(--accent);color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 10px;border-radius:20px}
.offre-nom{font-family:Fraunces,serif;font-size:20px;font-weight:600;margin:0 0 4px}
.offre-prix{font-family:Fraunces,serif;font-size:32px;font-weight:600;color:var(--accent);margin:0 0 12px}
.offre-prix small{font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:600;color:var(--encre-doux)}
.offre-inclus{list-style:none;padding:0;margin:0 0 16px;font-size:14px;line-height:1.5}
.offre-inclus li{padding:5px 0 5px 20px;border-top:1px solid var(--trait);position:relative}
.offre-inclus li::before{content:"✓";position:absolute;left:0;color:var(--accent);font-weight:700}
.faq{--bs-accordion-bg:transparent;--bs-accordion-btn-padding-x:0;--bs-accordion-body-padding-x:0}
.faq .accordion-button{font-weight:600}
.faq .accordion-body{color:var(--encre-doux);line-height:1.6}

/* mobile : cartes moins rembourrées (l'empilement vient de la grille Bootstrap) */
@media(max-width:767.98px){.une-carte{padding:18px 16px}}

/* écriture comptable : facture + blocs cliquables */
.ecr-facture{float:right;margin:0 0 14px 18px;max-width:280px;border:1px solid var(--trait);border-radius:8px;padding:8px;background:var(--carte)}
@media(max-width:600px){.ecr-facture{float:none;margin:0 0 14px;max-width:100%}}
.ecr-blocs{display:flex;flex-direction:column;gap:12px}
.ecr-bloc{border:1px solid var(--trait);border-radius:10px;padding:14px 16px;cursor:pointer;transition:border-color .12s,background .12s;overflow-x:auto}
.ecr-bloc.ecr-sel{border-color:var(--accent);border-width:2px;background:var(--accent-doux);box-shadow:0 0 0 1px var(--accent)}
.ecr-bloc.ecr-ok{border-color:var(--juste);background:color-mix(in srgb,var(--juste) 9%,transparent)}
.ecr-bloc.ecr-ko{border-color:var(--faux);background:color-mix(in srgb,var(--faux) 9%,transparent)}
.ecr-tete{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.ecr-nom{font-weight:600;font-size:14px}
.ecr-radio{color:var(--accent);margin-left:auto;font-size:14px}
.ecr-verdict{margin-left:auto;font-size:12px;font-weight:600}
.ecr-verdict.ok{color:var(--juste)} .ecr-verdict.ko{color:var(--faux)}
.ecr-table{width:100%;border-collapse:collapse;font-size:13px}
.ecr-table th{text-align:left;font-size:11px;font-weight:600;color:var(--encre-doux);padding:4px 12px;border-bottom:1px solid var(--trait);white-space:nowrap}
.ecr-table td{padding:4px 12px;border-bottom:1px solid var(--papier);vertical-align:top}
.ecr-table .ecr-montant{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ecr-table th:nth-child(3),.ecr-table th:nth-child(4){text-align:right}

/* type TABLEAU unifié : grille avec cellules texte (mise en page) et cases cochables */
.tableau-wrap{overflow-x:auto;margin:8px 0;width:100%}
.q-tableau{border-collapse:collapse;empty-cells:show;width:100%}
.q-tableau td{padding:8px 12px;border-bottom:1px solid var(--trait);vertical-align:middle;font-size:14px}
.q-tableau td.tc-texte{color:var(--encre)}
.q-tableau td.tc-num{text-align:right;font-variant-numeric:tabular-nums}
.q-tableau td.tc-case{cursor:pointer;border:1px solid var(--trait);border-radius:6px}
.q-tableau td.tc-case.tc-on{background:var(--accent-doux);border-color:var(--accent)}
.q-tableau td.tc-case.tc-ok{background:color-mix(in srgb,var(--juste) 15%,transparent);border-color:var(--juste);color:var(--juste);font-weight:600}
.q-tableau td.tc-case.tc-ko{background:color-mix(in srgb,var(--faux) 14%,transparent);border-color:var(--faux);color:var(--faux)}
.tc-box{display:inline-grid;place-items:center;width:18px;height:18px;border:1.5px solid var(--trait-fort);border-radius:4px;margin-right:8px;color:#fff;font-size:12px;vertical-align:middle}
.tc-case.tc-on .tc-box{background:var(--accent);border-color:var(--accent)}
.tc-case.tc-ok .tc-box{background:var(--juste);border-color:var(--juste)}
.q-tableau td.tc-vide{padding:8px 12px}

/* zone anti-robot (Friendly Captcha) sur la fiche */
.captcha-zone{margin:16px 0 4px}
.captcha-aide{font-size:12px;color:var(--encre-doux);margin:0 0 8px}
