
/* Charte du 11/10/2026 : papier washi, encre sumi, indigo ai, sceau vermillon ; les anciens noms (--bg, --ink, --acc…) sont des alias. */
:root{--fond:#F6F3EC;--surface:#FFFDF9;--encre:#1E2227;--texte:#363B41;--sourd:#5F646B;--trait:#E4DED3;--accent:#2E4D6B;--accent-fonce:#233C55;--accent-doux:#E7ECF1;--sceau:#C8553D;--vert:#4F7A5A;--vert-doux:#E8EFE8;--ocre:#A97B2A;--ocre-doux:#F5EEDC;--rouge:#A3473B;--rouge-doux:#F4E6E2;--ombre:0 1px 1px rgba(30,34,39,.04),0 10px 30px -22px rgba(30,34,39,.35);--bg:var(--fond);--ink:var(--encre);--muted:var(--sourd);--line:var(--trait);--acc:var(--accent);--soft:var(--accent-doux);--warn:var(--ocre);--warnbg:var(--ocre-doux);--ok:var(--vert);--bord-champ:#8A857C;--oui:var(--vert);--non:var(--rouge)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bord-champ:#6B737C;--fond:#15181C;--surface:#1D2126;--encre:#ECE7DD;--texte:#D2CEC5;--sourd:#8E939A;--trait:#2E343B;--accent:#8FB0CF;--accent-fonce:#A9C3DC;--accent-doux:#1F2E3C;--sceau:#D9735D;--vert:#8DB592;--vert-doux:#1C2A20;--ocre:#D9B06A;--ocre-doux:#332A18;--rouge:#D98A7C;--rouge-doux:#36201C;--ombre:0 1px 1px rgba(0,0,0,.4),0 10px 30px -22px rgba(0,0,0,.7)}}
:root[data-theme="dark"]{--bord-champ:#6B737C;--fond:#15181C;--surface:#1D2126;--encre:#ECE7DD;--texte:#D2CEC5;--sourd:#8E939A;--trait:#2E343B;--accent:#8FB0CF;--accent-fonce:#A9C3DC;--accent-doux:#1F2E3C;--sceau:#D9735D;--vert:#8DB592;--vert-doux:#1C2A20;--ocre:#D9B06A;--ocre-doux:#332A18;--rouge:#D98A7C;--rouge-doux:#36201C;--ombre:0 1px 1px rgba(0,0,0,.4),0 10px 30px -22px rgba(0,0,0,.7)}
*{box-sizing:border-box}
/* Base commune des champs (14/10/2026) : tout champ a la charte, même là où aucune règle particulière ne le vise.
   Placée en tête : les règles particulières, déclarées plus bas avec une spécificité au moins égale, gardent la main. */
select,textarea,input:not([type]),input[type=text],input[type=url],input[type=number],input[type=date],input[type=time],input[type=email],input[type=password],input[type=search]{
  font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--bord-champ);border-radius:8px;background:var(--bg);color:var(--ink)}
textarea{line-height:1.5}
body{margin:0;background:var(--bg);color:var(--texte);font:15px/1.6 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
h1,h2,h3,.brand{font-family:"Zen Kaku Gothic New",Inter,sans-serif;letter-spacing:.005em}
h1,h3{color:var(--ink)}
.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.side{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px}
.brand{font-weight:900;font-size:19px;padding:0 8px 4px;color:var(--ink)}
.marque{display:inline-flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;font-weight:900}
.marque i{width:24px;height:24px;border-radius:6px;background:var(--sceau);display:inline-grid;place-items:center;flex:none}
.marque i svg{width:15px;height:15px;display:block}
.who{font-size:12.5px;color:var(--muted);padding:0 8px 16px}
.side a{display:block;padding:8px 10px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px}
.side a.on{background:var(--soft);font-weight:600}
.side .nav-titre{margin:14px 10px 4px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-basis:100%}
.side .nav-titre:first-of-type{margin-top:8px}
main{padding:26px 32px 60px;min-width:0}
h1{font-size:24px;margin:0 0 4px}
.date{color:var(--muted);font-size:13px;margin:0 0 20px}
h2{font-size:15px;margin:24px 0 8px;color:var(--muted);font-weight:600}
.bandeau{background:var(--warnbg);border:1px solid var(--warn);color:var(--ink);border-radius:10px;padding:10px 12px;margin:0 0 10px;font-size:14px}
.bandeau b{color:var(--warn)}
.bandeau a{color:var(--acc)}
.bandeau.succes{background:var(--vert-doux);border-color:var(--ok)}.bandeau.succes b{color:var(--ok)}
.liste{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--ombre)}
/* Une rangée de liste (ligne_element, ligne_tache), la même partout : trois colonnes, la première de largeur fixe dont
   le texte se replie, puis l'intitulé, qui commence au même endroit sur toutes les rangées d'une liste, puis l'action à
   droite. Une grille, non un flex : avec « white-space:nowrap » et « min-width:auto », la colonne grandissait avec son texte
   et décalait l'intitulé d'une rangée à l'autre. Sur téléphone, les trois blocs s'empilent (règle plus bas). */
.ligne{display:grid;grid-template-columns:210px minmax(0,1fr) auto;gap:12px;align-items:baseline;padding:11px 14px;border-bottom:1px solid var(--line)}
.ligne:last-child{border-bottom:0}
.ligne .txt{min-width:0;overflow-wrap:anywhere}
.ligne a{color:var(--acc);text-decoration:none;font-size:13px;white-space:nowrap}
/* Les listes groupées (décision du 03/11/2026, la liste dense à plat remplacée) : un titre par groupe avec son nombre, des lignes à deux niveaux sans cadre. */
.groupe{margin:0 0 24px}
.groupe-titre{font-size:15px;color:var(--ink);margin:0;padding:0 0 7px;border-bottom:2px solid var(--ink);display:flex;align-items:baseline;gap:8px}
.groupe-titre em{font-style:normal;font-size:12.5px;font-weight:600;color:var(--muted)}
.groupe.retard .groupe-titre{border-color:var(--rouge)}.groupe.retard .groupe-titre em{color:var(--rouge)}
.liste.legere{background:transparent;border:0;border-radius:0;box-shadow:none}
.liste.legere .ligne{border-bottom:1px solid var(--line)}
.ligne.action{grid-template-columns:minmax(0,1fr) auto auto;padding:11px 4px;align-items:center}
.ligne.action .t{display:block;color:var(--ink);font-weight:500}
.ligne.action .c{display:block;color:var(--muted);font-size:13px}
.ligne.action .droite{text-align:right;font-size:13px;max-width:300px}
.ligne.action .droite>span{white-space:nowrap}
.ligne.action .droite small{display:block;color:var(--muted);font-size:12px}
.droite .retard{color:var(--rouge);font-weight:600}.droite .jour{color:var(--ocre);font-weight:600}
.ligne.action.avec-repere{grid-template-columns:auto minmax(0,1fr) auto auto}
.cal{display:block;width:46px;text-align:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);line-height:1.15}
.cal b{display:block;font-family:"Zen Kaku Gothic New",Inter,sans-serif;font-size:18px;color:var(--ink);padding-top:3px}
.cal small{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding-bottom:3px}
.cal.continu{border-style:dashed}.cal.vide{border-style:dashed;height:44px}
.etat-session{font-weight:600;color:var(--ink)}.etat-session.retard{color:var(--rouge)}
/* Les inscrits d'une session, une carte chacun (décision du 03/11/2026). */
.cartes-inscrits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 0 14px}
.carte-inscrit{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;min-width:0}
.carte-inscrit.annulee{border-style:dashed;opacity:.85}
.carte-inscrit header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.carte-inscrit h3{margin:0;font-size:16.5px}
.carte-inscrit .financement{font-size:12px;font-weight:600;border:1px solid var(--line);border-radius:5px;padding:2px 7px;white-space:nowrap;background:var(--bg);color:var(--ink)}
.carte-inscrit .payeur{font-size:13.5px;color:var(--muted);margin:6px 0 8px}
.carte-inscrit .pieces{margin:0;border-top:1px solid var(--line)}
.carte-inscrit .pieces>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px;padding:7px 0;border-bottom:1px dotted var(--line);font-size:13.5px}
.carte-inscrit .pieces>div:last-child{border-bottom:0}
.carte-inscrit dt{color:var(--muted);font-size:12.5px}.carte-inscrit dd{margin:0;min-width:0;overflow-wrap:anywhere}
@media (max-width:900px){.cartes-inscrits{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.carte-inscrit .pieces>div{grid-template-columns:1fr;gap:2px}}
details.replie{margin:4px 0 20px}
details.replie>summary{cursor:pointer;color:var(--acc);font-size:14px;padding:6px 0}
@media (max-width:560px){.ligne.action{grid-template-columns:minmax(0,1fr) auto}.ligne.action .droite{grid-column:1;grid-row:2;text-align:left}.ligne.action .droite small{display:inline;margin-left:6px}
.ligne.action.avec-repere{grid-template-columns:auto minmax(0,1fr) auto}.ligne.action.avec-repere .droite{grid-column:2}.ligne.action .droite{max-width:none}
.resume-session{grid-template-columns:repeat(2,minmax(0,1fr));padding:14px}}
.quand{font-size:12.5px;min-width:0;overflow-wrap:anywhere}
.quand b{display:block;font-size:12px}
.retard b{color:var(--warn)}
.vide{color:var(--muted);font-size:14px;padding:12px 14px}
.js .page{display:none}.js .page.on{display:block}   /* sans JavaScript, toutes les pages restent lisibles (AUD-25) */
.afaire{background:var(--surface);border:1px dashed var(--line);border-radius:12px;padding:18px;color:var(--muted)}
.frise{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:6px;margin:14px 0 16px}
.frise button{font:inherit;font-size:13.5px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 10px;cursor:pointer}
.frise button small{display:block;font-size:11.5px;color:var(--muted)}
.frise button.cour{border-color:var(--acc)}
.frise button.sel{background:var(--soft);font-weight:600}
/* L'état d'une étape de la fiche d'une formation (24/10/2026) : complète en vert, à compléter en ocre. */
/* L'ocre seul n'a que 3,7:1 en petit texte (relecture du 24/10/2026) : mêlé à l'encre, il s'assombrit en thème clair et s'éclaircit en thème sombre, au-dessus de 4,5:1. */
.frise button.fait small{color:var(--vert)}.frise button.manque small{color:color-mix(in srgb,var(--ocre) 70%,var(--encre))}
.jauge a{color:var(--accent)}
/* Une rangée quand chaque onglet garde 120 px, sinon deux : un mot ne se coupe plus (« Organisatio/n » à 11 onglets, 03/11/2026). */
.frise.fiche{grid-template-columns:repeat(auto-fit,minmax(max(120px,calc((100% - (var(--n) - 1) * 6px) / var(--n))),1fr))}
.frise.fiche button{overflow-wrap:break-word}
/* Sur téléphone (24/10/2026) : les 8 à 9 étapes de la fiche font une liste verticale, le titre à gauche et l'état à droite, plutôt que cinq rangées de cases hautes ; rien ne déborde. */
@media (max-width:760px){.frise.fiche{grid-template-columns:minmax(0,1fr);gap:4px}
.frise.fiche button{min-height:0;display:flex;justify-content:space-between;align-items:baseline;gap:12px;text-align:left;padding:10px 12px}
.frise.fiche button small{flex:0 1 52%;text-align:right}}
.etape{display:none}.etape.sel{display:block}
.tab{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0 0 12px}
.tab table{border-collapse:collapse;width:100%;font-size:13.5px}
.tab th,.tab td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:9px 11px}
.tab th{font-size:12px;color:var(--muted);font-weight:600}
.tab tr:last-child td{border-bottom:0}
.etat{font-size:12px;border-radius:999px;padding:1px 8px;white-space:nowrap;border:1px solid var(--line)}
.etat.ok{color:var(--ok);border-color:var(--ok)}.etat.do{color:var(--warn);border-color:var(--warn)}
.btn{font:inherit;font-size:13px;font-weight:500;border:1px solid var(--acc);color:var(--acc);background:transparent;border-radius:8px;padding:5px 10px;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{background:var(--soft)}
.btn.plein{background:var(--acc);color:var(--surface);font-weight:600}.btn.plein:hover{background:var(--accent-fonce);border-color:var(--accent-fonce)}
.btn[disabled]{border-color:var(--line);color:var(--muted);background:transparent;cursor:not-allowed}
.actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;margin:0 0 14px}
/* Un dépliant dans une rangée d'actions : son bouton reste dans la rangée, son contenu ouvert prend toute la largeur. */
.actions>.depliant>.actions{margin:0}.actions>.depliant.ouvert{flex-basis:100%}
.champ{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 12px}
.champ label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}
.champ select{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.champ textarea{width:100%;min-height:64px;font:inherit;font-size:14px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--bg);color:var(--ink)}
.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:34px;letter-spacing:6px;font-weight:700}
.note{font-size:13px;color:var(--muted);margin:4px 0 12px}
.lecture{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px;margin-left:6px}
.sess{display:none}.sess.sel{display:block;margin-top:18px}
.choix{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 16px}
.choix select{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);min-width:260px;max-width:100%}
.bloc{display:none}.bloc.sel{display:block}
.filtres{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.filtres input,.filtres select{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}
.filtres input{flex:1;min-width:200px}
.compte{font-size:12.5px;color:var(--muted)}
.notes{display:grid;grid-template-columns:auto 1fr;gap:18px 26px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:0 0 12px}
.moy{text-align:center}
.moy b{display:block;font-size:44px;line-height:1.1;font-weight:600}
.moy small{display:block;font-size:12.5px;color:var(--muted);margin-top:4px}
.etoiles{position:relative;display:inline-block;font-size:18px;letter-spacing:2px;line-height:1}
.etoiles .fond{color:var(--line)}
.etoiles .plein{position:absolute;inset:0 auto 0 0;overflow:hidden;white-space:nowrap;color:#f5a623}
.barres{display:grid;gap:6px}
.barre{display:grid;grid-template-columns:14px 1fr 28px;gap:8px;align-items:center;font-size:12.5px;color:var(--muted)}
.barre .piste{height:10px;border-radius:999px;background:var(--line);overflow:hidden}
.barre .val{height:100%;border-radius:999px;background:#f5a623}
.binaire{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 12px}
.binaire .q{font-size:14px;font-weight:600;margin-bottom:8px}
.binaire .bar{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--line)}
.binaire .bar span{height:100%}
.binaire .leg{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--muted);margin-top:8px}
.binaire .leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.barre{background:none;border:0;padding:2px 4px;border-radius:6px;cursor:pointer;font:inherit;width:100%;text-align:left}
.barre:hover,.barre.on{background:var(--soft)}
.avis{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:0 0 8px;font-size:14px}
.avis .etoiles{font-size:14px;margin-right:6px}
.filtre-note{font-size:12.5px;color:var(--muted);margin:0 0 8px}
.filtre-note button{font:inherit;font-size:12.5px;border:0;background:none;color:var(--acc);cursor:pointer;padding:0}
.info{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:5px;border-radius:50%;border:1px solid var(--muted);color:var(--muted);font:600 10px/1 -apple-system,sans-serif;background:none;cursor:help;padding:0;vertical-align:1px}
.info .bulle{display:none;position:absolute;z-index:5;top:calc(100% + 6px);left:50%;transform:translateX(-50%);width:min(240px,75vw);background:var(--ink);color:var(--bg);font:400 12.5px/1.4 -apple-system,BlinkMacSystemFont,sans-serif;text-align:left;padding:8px 10px;border-radius:8px;white-space:normal}
.info:hover .bulle,.info:focus-visible .bulle{display:block}
.info.fixe .bulle{position:fixed;transform:none;width:min(340px,calc(100vw - 16px))}
.tab.indic{overflow:visible}
.indic td{font-size:16px;font-weight:600}
/* La formule écrite sous la valeur, sur la page publique d'une formation (une bulle ne s'ouvre pas au toucher). */
.indic td .formule{display:block;margin-top:6px;font-size:12.5px;font-weight:400;line-height:1.4;color:var(--sourd)}
.indic th:last-child .bulle{left:auto;right:0;transform:none}
.indic th:first-child .bulle{left:0;transform:none}
.parcours{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:6px;margin:8px 0 10px;counter-reset:p}
.parcours div{position:relative;font-size:12.5px;color:var(--muted);padding:8px 8px 8px 34px;border:1px solid var(--line);border-radius:10px;background:var(--surface);counter-increment:p}
.parcours div::before{content:counter(p);position:absolute;left:9px;top:8px;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);font-size:11px;line-height:18px;text-align:center}
.parcours .fait{color:var(--ink)}.parcours .fait::before{content:"✓";background:var(--ok);border-color:var(--ok);color:var(--surface)}
.parcours .ici{border-color:var(--acc);color:var(--ink);font-weight:600}.parcours .ici::before{border-color:var(--acc);color:var(--acc)}
.relation{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 10px}
.relation .tete{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.relation .tete b{font-size:15px}
.carte{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}
.carte h3{margin:0;font-size:16px}
.cartes .liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;background:none;border:0}
.puces{display:flex;flex-wrap:wrap;gap:5px}
.puce{font-size:12px;background:var(--soft);border-radius:999px;padding:2px 8px}
.confirm{display:none;border-top:1px solid var(--line);padding-top:10px;font-size:13px}
.fin{margin-top:10px}.fin.ouverte .confirm{display:block}.fin.ouverte [data-act=fin]{display:none}
.fin .confirm p{margin:0 0 6px}
@media (max-width:760px){.parcours{grid-template-columns:1fr 1fr}}
.depliant>.contenu{display:none;margin:0 0 16px}.depliant.ouvert>.contenu{display:block}.depliant.ouvert .ouvrir{display:none}
.lien-apercu{font:inherit;background:none;border:0;padding:0;color:var(--acc);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:2px}
dialog.apercu{width:min(760px,92vw);max-height:88vh;border:1px solid var(--line);border-radius:14px;padding:0;background:var(--surface);color:var(--ink)}
dialog.apercu::backdrop{background:rgba(0,0,0,.55)}
.apercu .haut{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.apercu .corps{padding:16px;overflow:auto;max-height:calc(88vh - 60px)}
.page-pdf{background:#fff;color:#222;border-radius:4px;box-shadow:0 2px 10px rgba(0,0,0,.25);padding:28px 32px;min-height:420px;font-size:13px}
.page-pdf h4{margin:0 0 12px;font-size:18px}.page-pdf h5{margin:14px 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#555}
.page-pdf p{margin:0 0 6px;line-height:1.45}.page-pdf .entete{display:flex;justify-content:space-between;font-size:11px;color:#666;border-bottom:1px solid #ddd;padding-bottom:6px;margin-bottom:14px}.page-pdf .pied{margin-top:18px;border-top:1px solid #ddd;padding-top:6px;font-size:11px;color:#666}.page-pdf .l{height:9px;background:#e6e6e6;border-radius:4px;margin:8px 0}
.video{aspect-ratio:16/9;background:#111;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ddd;font-size:44px}
.flash{outline:2px solid var(--acc);outline-offset:4px;border-radius:10px;transition:outline-color 1.5s}
.rubrique{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0 0 12px}
.rubrique h3{margin:0 0 10px;font-size:15px}
.rubrique dl{margin:0}
.fl{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:9px 0;border-top:1px solid var(--line)}
.fl:first-child{border-top:0}
.fl dt{font-size:13px;color:var(--muted);padding-top:2px}
.fl dd input:not([type]),.fl dd input[type=text],.fl dd input[type=url],.fl dd input[type=search],.fl dd input[type=email],.fl dd input[type=password],.fl dd input[type=date],.fl dd input[type=time],.fl dd select,.fl dd textarea{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--bord-champ);border-radius:8px;background:var(--surface);color:var(--ink);width:100%;max-width:520px;box-sizing:border-box}
input:focus,select:focus,textarea:focus{outline:2px solid var(--acc);outline-offset:1px;border-color:var(--acc) !important;box-shadow:none}
.fl dd textarea{min-height:64px}.fl dd input[type=number]{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--bord-champ);border-radius:8px;background:var(--surface);color:var(--ink);width:110px;margin-right:6px}
.rubrique dl{margin:0}.fl dd{margin:0;font-size:14px}.fl dd ul{margin:0;padding-left:18px}
.manque{color:var(--warn);font-weight:600}
.lu-en-ligne{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fiche-bloc .saisie{display:none}.fiche-bloc.edition .saisie{display:block}.fiche-bloc.edition .lecture-seule{display:none}
.champ input:not([type]),.champ input[type=text],.champ input[type=url],.champ input[type=number]{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--bord-champ);border-radius:8px;background:var(--bg);color:var(--ink);width:100%}
.champ input[type=number]{width:110px;margin-right:6px}
.cases{display:flex;flex-wrap:wrap;gap:14px;font-size:14px}.duo{display:flex;flex-wrap:wrap;align-items:center;gap:18px;font-size:14px}
input:disabled{opacity:.45;cursor:not-allowed}
input[type=file],.fl dd input[type=file]{font:inherit;font-size:13px;color:var(--muted);max-width:100%;border:0;padding:0;background:none}
input[type=file]::file-selector-button{font:inherit;font-size:13px;font-weight:500;border:1px solid var(--acc);color:var(--acc);background:transparent;border-radius:8px;padding:5px 10px;margin-right:10px;cursor:pointer}
input[type=file]::file-selector-button:hover{background:var(--soft)}
.champ.corriger,.fl.corriger{outline:2px solid var(--warn);outline-offset:3px;border-radius:8px}
.jauge{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 12px}
.jauge .txt-j{font-size:13px;margin-bottom:8px}
.jauge .piste{height:8px;border-radius:999px;background:var(--line);overflow:hidden}.jauge .val{height:100%;background:var(--ok)}
.assistant .pas{display:none}.assistant .pas.sel{display:block}
@media (max-width:760px){.fl{grid-template-columns:1fr;gap:2px}}
@media (max-width:760px){.frise{grid-template-columns:repeat(2,1fr)}.app{grid-template-columns:1fr}.side{border-right:0;border-bottom:1px solid var(--line)}.side nav{display:flex;flex-wrap:wrap;gap:4px}main{padding:18px 16px 48px}.ligne{grid-template-columns:minmax(0,1fr)}}
.note.serree{margin:2px 0 0}.note.aide{margin:6px 0 0}.note.nue{margin:0}
h2.titre-objet{margin-top:6px}
.bandeau.motif{margin:8px 0 0}
.ligne-saisie{margin-bottom:6px}
.page-pdf .l70{width:70%}.page-pdf .l55{width:55%}
.voir-comme{padding:0 8px 14px}
.voir-comme label{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}
.voir-comme select{width:100%;font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.voir-comme .note{font-size:11px;margin-top:4px}
[data-roles].role-cache{display:none}
.corr{margin-top:8px;display:grid;gap:6px}
.corr label{font-size:13px;color:var(--muted)}
.corr textarea{width:100%;min-height:44px;font:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:var(--bg);color:var(--ink)}
.ligne.ouverte{background:var(--soft);box-shadow:inset 3px 0 0 var(--acc)}
.ligne.ouverte a[data-s]{font-weight:600}
h2.titre-objet{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--acc);border-radius:10px;padding:10px 14px;font-size:16px;color:var(--ink);margin:18px 0 10px}
/* Tous les liens des espaces en --accent, plus de bleu du navigateur (design-listes, « Le système » ; 03/11/2026) ; un bouton reste un bouton. */
main a:not(.btn){color:var(--acc);text-decoration-thickness:1px;text-underline-offset:2px}
/* La tête d'un objet (décision du 03/11/2026, A) : le nom et l'état en pastille, le contexte en petit, les actions sur tout l'objet. */
.tete-objet{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--acc);border-radius:10px;padding:10px 14px;margin:18px 0 10px}
.tete-objet>h2.titre-objet{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;background:none;border:0;border-radius:0;padding:0;margin:0}
.tete-objet>h2.titre-objet .etat{margin-left:auto;font-weight:500}
.tete-objet>.contexte{font-size:13px;color:var(--muted);margin-top:3px}.tete-objet>.contexte .note{margin:4px 0 0}
.tete-objet>.actions{margin:10px 0 0}
.tete-objet .resume-session{border:0;border-top:1px solid var(--line);border-radius:0;background:none;padding:10px 0 0;margin:8px 0 0}
.tete-objet .jauge{margin:8px 0 0}
/* Un objet ouvert est une sous-page : seuls le fil de retour et l'objet restent ; plus de « Ouvert : ». */
.page.objet-ouvert > :not(.date):not(.sess.objet.sel){display:none}
.page.objet-ouvert > .sess.objet.sel{margin-top:6px}
.fil{margin:0 0 6px;font-size:14px}.fil a{color:var(--accent);text-decoration:none;font-weight:500}.fil a:hover{text-decoration:underline}


.socle{color:var(--muted)}.question{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 8px}.question input[type=text]{flex:1 1 220px}.question select{width:auto}.question label{font-size:13px}

.etat.requis{color:var(--muted);border-style:dashed;font-size:11px;display:inline-block;margin-top:2px}

.rubrique.emarger{border-color:var(--acc)}input.code-saisie{font:600 22px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.2em;text-transform:uppercase;width:9.5em;max-width:100%;padding:8px 12px;border:1px solid var(--bord-champ);border-radius:8px;background:var(--bg);color:var(--ink)}

.apercu .corps a{color:var(--acc)}

/* Pages publiques (formation, vitrines) */
.publique{max-width:900px;margin:0 auto;padding:26px 16px 60px}
.publique .brand{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:18px}
.publique a{color:var(--acc)}
.vitrine{display:flex;gap:18px;align-items:flex-start;margin:0 0 18px}
.encadre{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:12px 0}.encadre p{margin:0 0 4px}.encadre ul{margin:0;padding-left:18px}.encadre a{color:var(--acc)}
.vitrine .image{flex:0 0 120px;height:120px;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;text-align:center;padding:8px}
.vitrine img.image{padding:0;object-fit:cover}
.identite-formateur img.avatar{object-fit:cover}
.vitrine .accroche{font-size:20px;font-weight:600;margin:0 0 8px}
@media (max-width:760px){.vitrine{flex-direction:column}}
.apercu .corps a.btn{text-decoration:none}

/* Pages seules (connexion, lien, mot de passe oublié) : une carte centrée, champs empilés. */
.seule{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px 16px;box-sizing:border-box}
.seule .carte-seule{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--ombre);padding:28px 26px;box-sizing:border-box}
.seule .brand{padding:0;margin:0 0 14px;font-size:20px}
.seule h1{font-size:22px;margin:0 0 4px}
.seule p.intro{margin:0 0 18px;color:var(--muted);font-size:14px}
.seule .rubrique{border:0;background:none;padding:0;margin:0}
.seule .fl{grid-template-columns:1fr;gap:4px;border:0;padding:0 0 14px}
.seule .fl dt{font-size:13px;font-weight:600;color:var(--ink);padding:0}
.seule .fl dd input{max-width:none;font-size:15px;padding:10px 12px;border-radius:10px}
.seule .actions{margin:0}
/* Deux rangées d'actions qui se suivent dans une page seule (activer le second facteur, puis se déconnecter) : un espace entre elles (24/10/2026). */
.seule form+form>.actions,.seule .actions+.actions{margin-top:14px}
.seule .btn{width:100%;font-size:14px;padding:9px 16px;border-radius:10px;text-align:center;box-sizing:border-box}
.seule .ou{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin:14px 0}.seule .ou::before,.seule .ou::after{content:"";flex:1;border-top:1px solid var(--line)}
.seule .note{text-align:center;margin:16px 0 0}.seule a{color:var(--acc)}
.seule .bandeau{margin:0 0 14px}

/* Page d'accueil publique : une idée par bloc, beaucoup d'air (restructurée le 11/10/2026) */
.accueil{max-width:1000px}
.accueil .brand{align-items:center}
.entete-liens{display:flex;gap:14px;align-items:center;font-size:14px;white-space:nowrap}
.accueil .btn{font-size:15px;padding:11px 20px;border-radius:10px;text-align:center}
.heros{padding:88px 0 80px;max-width:720px;margin:0 auto;text-align:center}
.heros h1{font-size:44px;line-height:1.15;margin:0 0 20px;letter-spacing:-.005em}
.heros .grand{font-size:18px;color:var(--muted);margin:0 auto 32px;max-width:560px}
.choix-public{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:0 0 16px}
.heros .note{margin:0}
.etapes-public{border-top:1px solid var(--line);padding:56px 0}
.etapes-public h2,.offres h2{color:var(--ink)}
.etapes-public h2{font-size:24px;margin:0 0 28px;text-align:center}
.etapes-public ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;counter-reset:e}
.etapes-public li{counter-increment:e;display:flex;flex-direction:column;gap:6px}
.etapes-public li::before{content:counter(e);width:30px;height:30px;border-radius:50%;border:1px solid var(--acc);color:var(--acc);display:grid;place-items:center;font-size:14px;font-weight:600;margin-bottom:6px}
.etapes-public li b{color:var(--ink);font-size:16px}
.etapes-public li span{color:var(--muted);font-size:14.5px}
.offres{border-top:1px solid var(--line);padding:56px 0 64px;display:grid;grid-template-columns:1fr 1fr;gap:20px}
.offre{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--ombre);display:flex;flex-direction:column}
.offre h2{font-size:20px;margin:0 0 6px}
.offre > p{margin:0 0 16px;color:var(--muted)}
.offre .prix{font-family:"Zen Kaku Gothic New",Inter,sans-serif;font-size:26px;font-weight:700;color:var(--ink);margin:0 0 16px}
.offre ul{margin:0 0 24px;padding-left:18px;flex:1}.offre li{margin:0 0 8px}
.offre .note{margin:12px 0 0;text-align:center}
.pied-public{border-top:1px solid var(--line);padding-top:16px;font-size:13px;color:var(--muted)}
@media (max-width:760px){.heros{padding:48px 0 48px}.heros h1{font-size:30px}.heros .grand{font-size:16px}.choix-public .btn{flex:1 1 100%}.etapes-public ol,.offres{grid-template-columns:1fr}.etapes-public,.offres{padding:40px 0}}

/* Une carte qui est un lien (mode démonstration) */
.lien-carte{color:inherit;text-decoration:none}.lien-carte:hover{border-color:var(--acc)}.lien-carte h3{color:var(--acc)}
/* Accessibilité (audit du 13/10/2026, AUD-27) : des champs dont le bord se voit (3 pour 1 au moins), un focus clavier net. */
.fl dd input,.fl dd select,.fl dd textarea,.champ input,.champ select,.champ textarea,.filtres input,.filtres select,.choix select,.voir-comme select,.corr textarea,.question input{border-color:var(--bord-champ)}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:4px}
/* Sur téléphone, un champ de moins de 16 px fait zoomer Safari à la saisie (AUD-35). */
@media (max-width:760px){input,select,textarea{font-size:16px !important}}
/* La déconnexion sous le menu de l'espace (AUD-24). */
.side .sortie{margin:14px 8px 0}.side .sortie .btn{width:100%}
/* La marque est un lien (AUD-24) : elle garde son allure, pas celle des liens du menu. */
.side .brand a.marque,.side .brand a.marque.on{display:inline-flex;padding:0;font-size:inherit;background:none;border-radius:0;color:var(--ink)}
.brand a.marque,.brand a.marque:visited{color:var(--ink);text-decoration:none}

/* Parcours à distance simulé (LMS) : chaque élément montre la variante de son état ; app.js le fait avancer. */
.v-faite,.v-afaire,.v-fermee,.v-fait,.v-ouverte,.v-pasouverte{display:none}
[data-etat="faite"] .v-faite,[data-etat="afaire"] .v-afaire,[data-etat="fermee"] .v-fermee{display:revert}
[data-etat="fermee"] .v-pasfermee{display:none}
[data-fait="1"] .v-fait,[data-fait="0"][data-ouverte="1"] .v-ouverte,[data-fait="0"][data-ouverte="0"] .v-pasouverte{display:revert}
/* Le lecteur d'un module SCORM importé (vues/lecteur_scorm.py) : le cadre du sous-domaine des contenus. */
.lecteur-scorm{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--ombre);margin:0 0 14px;overflow:hidden}
.lecteur-scorm iframe{display:block;width:100%;height:min(75vh,720px);min-height:420px;border:0;background:#fff}
/* Le lecteur de module (vues/lecteur_module.py) : en-tête et progression, écran et ses blocs, question avec retour, fin. */
.module{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--ombre);margin:0 0 14px;overflow:hidden}
.module-tete{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--accent-doux)}
.module-titre{font-weight:700;color:var(--encre);flex:1;min-width:0}
.module-progres{display:flex;gap:4px}.module-progres i{width:22px;height:6px;border-radius:3px;background:var(--trait)}.module-progres i.on{background:var(--accent)}
.module-compte{font-size:12.5px;color:var(--sourd);font-variant-numeric:tabular-nums}
.module-corps{padding:22px 24px 8px;min-height:260px}
.module .ecran-fin{display:none}.js .module .ecran{display:none}.js .module .ecran.sel{display:block}.module .ecran h3{margin:0 0 14px;font-size:20px}
.module-pied{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--line)}
.module-pied [data-ecran="1"],.module-pied .terminer-module{margin-left:auto}
.module[data-dernier="1"] [data-ecran="1"],.module:not([data-dernier="1"]) .terminer-module,.module[data-fini="1"] .module-pied{display:none}
.module-question{border-top:1px solid var(--line);padding-top:12px;margin-top:6px}.module-choix{display:block;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin:0 0 6px;cursor:pointer}
.retour{display:none;padding:8px 12px;border-radius:8px;font-size:13.5px}.retour.bon{background:var(--vert-doux);color:var(--vert)}.retour.faux{background:var(--ocre-doux);color:var(--ocre)}
.module-question[data-reponse="bon"] .retour.bon,.module-question[data-reponse="faux"] .retour.faux{display:block}
.module-erreur{margin:0;border-radius:0}.module-erreur[hidden]{display:none}
.ecran-fin{text-align:center;padding:20px 0}.sceau-fin{width:56px;height:56px;margin:0 auto 10px;border-radius:50%;background:var(--vert-doux);color:var(--vert);font-size:28px;line-height:56px}
.parcours-lms a,.nav-activites a,[data-parcours] > p > a{color:var(--accent)}
.depliant .champ select{max-width:100%}
.bloc-image{margin:0 0 14px}.image-deposee{display:flex;align-items:center;justify-content:center;min-height:150px;border:1px solid var(--line);border-radius:10px;background:var(--fond);color:var(--sourd);font-size:13px}
.bloc-video{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 14px;border-radius:10px;background:#1E2227;color:#E7ECF1;font-size:13px;overflow:hidden}.bloc-video iframe{display:block;width:100%;aspect-ratio:16/9;border:0}
.bloc-image img{display:block;max-width:100%;height:auto;border:1px solid var(--line);border-radius:10px}.bloc-fichier{margin:0 0 14px}.bloc-fichier .btn{text-decoration:none}
.bloc-video span{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--sceau);color:#fff}
/* L'éditeur de module : la liste des écrans à gauche, l'écran ouvert à droite ; la bascule édition, aperçu. */
.vue-module[data-vue="edition"] .vue-apercu,.vue-module[data-vue="apercu"] .vue-edition{display:none}
.editeur{display:grid;grid-template-columns:230px 1fr;gap:16px;align-items:start}
@media (max-width:760px){.editeur{grid-template-columns:1fr}}
.editeur-liste{display:flex;flex-direction:column;gap:6px}
.ecran-liste{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;color:var(--encre);font:inherit}
.ecran-liste small{display:block;color:var(--sourd);font-size:12px}.ecran-liste.sel{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.ecran-edit{display:none}.ecran-edit.sel{display:block}
.bloc-edit,.question-edit{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px}
.bloc-edit .tete{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px}
.bloc-edit textarea,.bloc-edit input[type=url],.bloc-edit input[type=text],.question-edit input[type=text],.question-edit textarea{width:100%}
.option-edit{display:flex;align-items:center;gap:8px;margin:0 0 6px;flex-wrap:wrap}.option-edit input[type=text]{flex:1 1 200px;width:auto}
.bloc-edit textarea,.question-edit textarea{font:inherit}.editeur-ecran .actions select{width:auto;min-width:110px}
/* Le sommaire de la formation, à côté de chaque activité de l'apprenant : état de chaque activité ; fermée, lien désactivé. */
.avec-sommaire{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:860px){.avec-sommaire{grid-template-columns:minmax(0,1fr)}}
.sommaire{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 10px 6px}
@media (max-width:860px){.sommaire{position:static;max-height:none}}
.sommaire .note{margin:0 4px 8px}
.sommaire ol{list-style:none;margin:0;padding:0}
.sommaire li{display:flex;gap:10px;align-items:flex-start;padding:7px 6px;border-radius:8px}
.sommaire li[aria-current="page"]{background:var(--accent-doux)}
.sommaire .rang{flex:0 0 22px;height:22px;border-radius:50%;border:1px solid var(--line);font-size:11.5px;line-height:20px;text-align:center;color:var(--sourd)}
.sommaire li[data-etat="faite"] .rang{background:var(--vert-doux);border-color:var(--vert);color:var(--vert)}
.sommaire li[data-etat="afaire"] .rang{border-color:var(--accent);color:var(--accent)}
.sommaire .titre-som{display:flex;flex-direction:column;font-size:13.5px;line-height:1.35}
.sommaire .titre-som a{color:var(--encre);text-decoration:none}.sommaire .titre-som a:hover{text-decoration:underline}
.sommaire li[aria-current="page"] .titre-som a{font-weight:600}
.sommaire small{font-size:12px;color:var(--sourd)}
.sommaire li[data-etat="faite"] small::after{content:" · faite"}
.sommaire li[data-etat="fermee"] small::after{content:" · fermée"}
.sommaire a[aria-disabled="true"]{color:var(--sourd);pointer-events:none;cursor:default}
.sommaire li[data-etat="horsperiode"] small::after{content:" · hors période"}
/* Les activités à distance de l'apprenant (vues/parcours.py) : l'avancement, la page d'une activité hors de l'espace (en-tête et corps). */
.avancement p{margin:6px 0 12px;font-size:13.5px}.avancement .module-progres{margin:4px 0}
.aide-liste{margin:0 0 6px;padding-left:20px}
.activite{min-width:0}.activite .actions-activite{margin-top:18px}.activite .btn[aria-disabled="true"]{border-color:var(--line);color:var(--sourd);cursor:not-allowed}
.haut-plein{display:flex;align-items:center;gap:16px;padding:12px 24px;border-bottom:1px solid var(--line);background:var(--surface)}.haut-plein .brand{padding:0;font-size:19px}
.corps-plein{max-width:1120px;margin:0 auto;padding:22px 24px 60px}
@media (max-width:760px){.haut-plein{padding:10px 16px}.corps-plein{padding:16px 16px 48px}}
/* Le menu de l'espace, repliable : une bande étroite avec le logo et le bouton ; sur téléphone, le menu se replie sous l'en-tête. */
.side .brand{display:flex;align-items:center;justify-content:space-between;gap:6px}
.replier{flex:none;width:28px;height:28px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--sourd);font:600 16px/1 Inter,sans-serif;cursor:pointer;display:inline-grid;place-items:center}
.replier:hover{color:var(--encre);border-color:var(--bord-champ)}
.app{transition:grid-template-columns .15s ease}
.app.menu-replie{grid-template-columns:60px 1fr}
.app.menu-replie .side{padding:18px 8px}
.app.menu-replie .side .brand{flex-direction:column;padding:0;gap:10px}
.app.menu-replie .side .brand a.marque{font-size:0;gap:0}
.app.menu-replie .menu-corps{display:none}
@media (max-width:760px){.app.menu-replie{grid-template-columns:1fr}.app.menu-replie .side{padding:12px 16px}
  .app.menu-replie .side .brand{flex-direction:row}.app.menu-replie .side .brand a.marque{font-size:inherit;gap:8px}}
@media (prefers-reduced-motion:reduce){.app{transition:none}}
.actions-activite{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.actions-activite > .btn{white-space:nowrap}
.btn-icone{min-width:32px;text-align:center}
/* Le texte enrichi : barre d'outils et zone modifiable, à la charte des champs ; le rendu dans le lecteur. */
.texte-riche{border:1px solid var(--bord-champ);border-radius:8px;background:var(--bg);overflow:hidden}
.barre-texte{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border-bottom:1px solid var(--line);background:var(--surface)}
.outil-texte{padding:3px 8px;font-size:12.5px}.outil-texte[data-format="bold"]{font-weight:700}.outil-texte[data-format="italic"]{font-style:italic}
.outil-texte[data-format="underline"]{text-decoration:underline}
.zone-texte{min-height:90px;padding:8px 10px;font-size:14px;color:var(--ink);line-height:1.55;outline:none}
.texte-riche:focus-within{outline:2px solid var(--acc);outline-offset:1px;border-color:var(--acc)}
.zone-texte p,.bloc-texte p{margin:0 0 8px}.zone-texte h3,.bloc-texte h3{margin:6px 0 8px;font-size:17px}
.zone-texte ul,.zone-texte ol,.bloc-texte ul,.bloc-texte ol{margin:0 0 8px;padding-left:22px}
.zone-texte a,.bloc-texte a{color:var(--accent)}

/* Les catalogues publics (docs/catalogues.md) */
.entete-public{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}
.entete-public .brand{display:flex;align-items:baseline;gap:10px;padding:0;margin:0}
.nav-public{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:14px}
.nav-public a{color:var(--ink);text-decoration:none}.nav-public a[aria-current="page"]{color:var(--acc);font-weight:600}
.nav-public a.btn{color:var(--ink)}
.publique.catalogue{max-width:1080px}
.barre-catalogue{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;margin:14px 0}
.barre-catalogue .filtre{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);min-width:150px}
.barre-catalogue .filtre.recherche{flex:1 1 240px}
.actions-barre{display:flex;align-items:center;gap:10px}
.compte-catalogue{font-size:13px;color:var(--muted);margin:6px 0}
.grille-catalogue .carte[hidden]{display:none}
.pagination{display:flex;gap:8px;justify-content:center;margin:18px 0 0;font-size:14px}
.pagination [aria-current]{font-weight:700}
.fil{font-size:13px;margin:0 0 6px}.fil a{color:var(--acc)}
@media (max-width:640px){.barre-catalogue .filtre{flex:1 1 100%}.nav-public{width:100%}}

.menu-public>summary,.filtres-catalogue>summary{cursor:pointer;font-size:14px;font-weight:600;list-style:none}
.menu-public>summary::-webkit-details-marker,.filtres-catalogue>summary::-webkit-details-marker{display:none}
.menu-public>summary::after,.filtres-catalogue>summary::after{content:" ▾";color:var(--muted)}
.filtres-corps{display:flex;flex-wrap:wrap;gap:10px}
.filtres-catalogue{flex:1 1 100%}
@media (min-width:641px){.menu-public[open]>summary,.filtres-catalogue[open]>summary{display:none}.filtres-catalogue{flex:0 1 auto}}
@media (max-width:640px){.entete-public{align-items:flex-start}.menu-public[open] .nav-public{flex-direction:column;align-items:flex-start;margin-top:8px}.filtres-corps .filtre{flex:1 1 100%}}

/* Les cartes des catalogues, refondues le 14/10/2026 : une hiérarchie (organisme, intitulé, formateur), la session mise
   en avant, un pied aligné (prix, note). Toute la carte ouvre sa page ; les noms gardent leur propre lien. */
.grille-catalogue{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.grille-catalogue .carte{position:relative;gap:10px;padding:18px 18px 16px;border-radius:14px;box-shadow:var(--ombre);transition:border-color .15s,transform .15s}
.grille-catalogue .carte.cliquable:hover{border-color:var(--accent);transform:translateY(-2px)}
.grille-catalogue .carte:focus-within{border-color:var(--accent)}
.grille-catalogue .carte .lien-principal{color:var(--encre);text-decoration:none}
.grille-catalogue .carte .lien-principal::after{content:"";position:absolute;inset:0;border-radius:inherit}
/* Le contour du focus passe à la carte entière là où :has existe ; ailleurs, le lien garde son contour. */
@supports selector(:has(*)){.grille-catalogue .carte .lien-principal:focus-visible{outline:none}.grille-catalogue .carte:has(.lien-principal:focus-visible){outline:2px solid var(--accent);outline-offset:2px}}
.grille-catalogue .carte a:not(.lien-principal){position:relative;z-index:1;color:var(--accent)}
.grille-catalogue .carte h3{font-size:18px;line-height:1.3;margin:0}
.grille-catalogue .carte p{margin:0}
.grille-catalogue .carte .sur-titre{font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;color:var(--sourd)}
.grille-catalogue .carte .sur-titre a{text-decoration:none}
.grille-catalogue .carte .par{font-size:14px;color:var(--sourd)}
.grille-catalogue .carte ul.puces{list-style:none;padding:0;margin:0}
.grille-catalogue .carte .puce.certifiante{background:var(--ocre-doux);color:var(--ocre);font-weight:600}
.grille-catalogue .carte .puce.plus{background:none;border:1px dashed var(--trait);color:var(--sourd)}
.grille-catalogue .carte .session-carte{display:flex;flex-direction:column;gap:1px;background:var(--accent-doux);border-left:3px solid var(--accent);border-radius:8px;padding:8px 12px}
.grille-catalogue .carte .session-carte.continu{background:var(--vert-doux);border-left-color:var(--vert)}
.grille-catalogue .carte .session-carte.aucune{background:none;border:1px dashed var(--trait)}
.grille-catalogue .carte .session-libelle{font-size:11px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;color:var(--sourd)}
.grille-catalogue .carte .session-carte.aucune .session-libelle{text-transform:none;letter-spacing:0;font-size:13px;font-weight:400}
.grille-catalogue .carte .session-valeur{font-weight:600;font-size:14px;color:var(--encre)}
.carte-pied{margin-top:auto;display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--trait);padding-top:12px}
.prix-carte b{font-size:19px;color:var(--encre);font-family:"Zen Kaku Gothic New",Inter,sans-serif}
.grille-catalogue .carte .sourd{color:var(--sourd);font-size:13px}
.note-carte{font-size:14px;white-space:nowrap}.note-carte .etoile{color:var(--ocre)}.note-carte b{color:var(--encre)}
.note-carte.nouvelle{font-size:12.5px;color:var(--sourd);white-space:normal}
.grille-catalogue .carte-bilan{font-size:13.5px;font-weight:600;color:var(--encre)}
.carte-details{font-size:12.5px;color:var(--sourd);line-height:1.45}
.tete-carte{display:flex;align-items:center;gap:12px}
.tete-carte>div{min-width:0}
.monogramme{flex:none;width:46px;height:46px;border-radius:12px;background:var(--accent-doux);color:var(--accent-fonce);display:grid;place-items:center;font:700 16px "Zen Kaku Gothic New",Inter,sans-serif}
.certif-carte{font-size:13px;color:var(--sourd)}
.note-formateur{font-size:14px;display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px}.note-formateur b{color:var(--encre)}
.note-formateur .etoiles{font-size:16px}
.note-formateur .note-valeur{white-space:nowrap;color:var(--sourd)}.note-formateur .note-detail{flex-basis:100%}
.grille-catalogue .carte .accroche{font-size:14px;color:var(--texte);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.carte-formateur .accroche{font-style:italic}
.chiffre-carte{font-size:14px}.chiffre-carte b{color:var(--encre)}
.portage-carte{margin-top:auto;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--trait);padding-top:12px}
.portage-tete{font-size:14px}.portage-tete>span:first-child{font-size:11px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;color:var(--sceau);margin-right:4px}
.formations-carte{margin-top:auto;padding-top:12px;border-top:1px solid var(--trait);font-size:13.5px}
.formations-carte ul{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;color:var(--encre)}
.grille-catalogue .carte .puce{border-radius:7px;line-height:1.4;padding:3px 8px}
@media (prefers-reduced-motion:reduce){.grille-catalogue .carte{transition:none}.grille-catalogue .carte.cliquable:hover{transform:none}}

/* Le bloc d'identité d'un formateur, le même partout (catalogue, vitrine, page d'une formation, fiche, espace de
   l'organisme ; décision du 14/10/2026). */
.identite-formateur{display:flex;align-items:flex-start;gap:12px}
.identite-formateur .avatar{flex:none;display:grid;place-items:center;border-radius:50%;width:50px;height:50px;background:var(--ocre-doux);color:var(--ocre);font:700 17px "Zen Kaku Gothic New",Inter,sans-serif}
.identite-corps{min-width:0;display:flex;flex-direction:column;gap:3px}
.identite-corps>h1,.identite-corps>h2,.identite-corps>h3,.identite-corps>p{margin:0}
.identite-formateur h1{font-size:28px;line-height:1.2}
.identite-formateur h1+*{margin-top:2px}
.identite-formateur:has(h1) .avatar{width:72px;height:72px;font-size:24px}
.qualite-formateur{font-size:13px;color:var(--sourd)}
#p-publique>.identite-formateur{margin:6px 0 16px}.apercu .identite-formateur{margin:0 0 12px}
.identite-formateur .carte-bilan{font-size:13.5px;font-weight:600;color:var(--encre)}
.identite-formateur .note-formateur .sourd{color:var(--sourd);font-size:13px}

/* Conformité et audit : « Ce qui reste » porte l'action, qui la fait et pour quand ; elle prend la place (14/10/2026). */
/* « Conformité et audit » (présentation adoptée le 03/11/2026) : la synthèse, ce qui reste par celui qui doit agir, le registre par critère. À faire par vous en bengara, les
   attentes en ocre, pas encore dû hachuré, non applicable en pointillé, prouvé en mousse. */
.conformite .synthese{background:var(--surface);border:1px solid var(--trait);border-top:3px solid var(--encre);padding:22px 24px;margin:0 0 20px}
.conformite .chiffre{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 16px}
.conformite .chiffre b{font-family:"Zen Kaku Gothic New",Inter,sans-serif;font-weight:900;font-size:52px;line-height:1;color:var(--encre)}
.conformite .chiffre span{color:var(--encre);font-size:18px;font-weight:600;white-space:nowrap}
.conformite .groupes{display:flex;flex-wrap:wrap;gap:14px 18px}
.conformite .groupe small{display:block;text-align:center;font-size:11px;color:var(--sourd);margin-top:4px;border-top:1px solid var(--trait);padding-top:2px}
.conformite .cs-l{display:flex;gap:4px}
.conformite .cs{width:30px;height:30px;display:grid;place-items:center;font-size:12px;font-weight:600;text-decoration:none;border:1.5px solid;font-variant-numeric:tabular-nums}
.conformite .cs.ok{background:var(--vert);border-color:var(--vert);color:var(--surface)}
.conformite .cs.vous{background:var(--rouge-doux);border-color:var(--rouge);color:var(--rouge)}
.conformite .cs.att{background:var(--ocre-doux);border-color:var(--ocre);color:var(--ocre)}
.conformite .cs.pd{border-color:var(--trait);color:var(--sourd);background:repeating-linear-gradient(135deg,transparent 0 4px,var(--trait) 4px 5px)}
.conformite .cs.na{border-color:var(--trait);color:var(--sourd);border-style:dashed}
.conformite .cle{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.conformite .cle button{font:inherit;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--trait);background:var(--fond);color:var(--texte);border-radius:6px;padding:4px 9px;cursor:pointer}
.conformite .cle button[aria-pressed="true"]{border-color:var(--encre);background:var(--surface);font-weight:600}
.conformite .cle i,.conformite .e i{width:10px;height:10px;border:1.5px solid;display:inline-block;flex:none}
.conformite .cle .ok i{background:var(--vert);border-color:var(--vert)}.conformite .cle .vous i{background:var(--rouge-doux);border-color:var(--rouge)}
.conformite .cle .att i{background:var(--ocre-doux);border-color:var(--ocre)}.conformite .cle .pd i{border-color:var(--sourd)}.conformite .cle .na i{border-style:dashed;border-color:var(--sourd)}
.conformite .reste{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 0 26px}
.conformite .reste>div{background:var(--surface);border:1px solid var(--trait);padding:14px 16px}
.conformite .reste h3{font-size:15px;margin:0 0 8px;display:flex;justify-content:space-between;gap:8px}
.conformite .reste h3 em{font-style:normal;font-weight:900}
.conformite .reste .vous h3 em{color:var(--rouge)}.conformite .reste .att h3 em{color:var(--ocre)}
.conformite .reste ul,.conformite .reg{list-style:none;margin:0;padding:0}
.conformite .reste li{padding:6px 0;border-top:1px solid var(--trait);font-size:13.5px}
.conformite .reste li>a{text-decoration:none;color:var(--encre)}.conformite .reste li b{display:inline-block;min-width:24px}
.conformite .reste li small{display:block;color:var(--sourd);padding-left:24px}
.conformite .reste li.vide{color:var(--sourd)}
.conformite .crit{margin:0 0 22px}
.conformite .crit h3{font-size:16px;margin:0;padding:10px 0 8px;border-bottom:2px solid var(--encre);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.conformite .crit h3 span{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--sourd);font-family:Inter,sans-serif;font-weight:600}
.conformite .crit h3 em{margin-left:auto;font-style:normal;font-family:Inter,sans-serif;font-weight:400;font-size:12.5px;color:var(--sourd)}
.conformite .l{border-bottom:1px solid var(--trait);padding:9px 0}
.conformite .ln{display:flex;align-items:baseline;gap:12px}
.conformite .l .n{font-family:"Zen Kaku Gothic New",Inter,sans-serif;font-weight:700;color:var(--encre);min-width:44px;white-space:nowrap;font-variant-numeric:tabular-nums}
.conformite .l .t{color:var(--encre)}
.conformite .l .pt{flex:1;border-bottom:1.5px dotted var(--trait);transform:translateY(-4px);min-width:20px}
.conformite .e{font-size:13px;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.conformite .ok .e{color:var(--vert)}.conformite .ok .e i{background:var(--vert)}
.conformite .vous .e{color:var(--rouge)}.conformite .vous .e i{background:var(--rouge-doux)}
.conformite .att .e{color:var(--ocre)}.conformite .att .e i{background:var(--ocre-doux)}
.conformite .pd .e{color:var(--sourd);font-weight:500}.conformite .pd .e i{background:repeating-linear-gradient(135deg,transparent 0 2px,var(--trait) 2px 3px)}
.conformite .na .e{color:var(--sourd);font-weight:400}.conformite .na .e i{border-style:dashed;border-color:var(--trait)}.conformite .na .t{color:var(--sourd)}
.conformite details{margin:4px 0 0 56px;font-size:13.5px}
.conformite summary{cursor:pointer;color:var(--accent);width:max-content;max-width:100%}
.conformite details ul{margin:6px 0 2px;padding-left:16px}.conformite details li{margin:2px 0}
.conformite .org{margin:3px 0 0 56px;font-size:13.5px}
.conformite a{color:var(--accent)}.conformite .crit[hidden]{display:none}
@media (max-width:900px){.conformite .reste{grid-template-columns:1fr}.conformite .synthese{padding:18px}}
@media (max-width:560px){.conformite .ln{flex-wrap:wrap;row-gap:2px}.conformite .l .pt{display:none}.conformite .e{flex-basis:100%;padding-left:56px}.conformite .cs{width:27px;height:27px}
  .conformite details,.conformite .org{margin-left:0}.conformite .chiffre b{font-size:44px}}
/* La signature électronique (lot 3A) : la case « J'ai lu et j'accepte » et la page de preuve montrée dans l'aperçu. */
.case{display:flex;gap:10px;align-items:flex-start;line-height:1.4;cursor:pointer}.case input{margin-top:3px;flex:none}
.page-pdf table.signature{border-collapse:collapse;width:100%;font-size:12px;margin:8px 0}.page-pdf table.signature th,.page-pdf table.signature td{border:1px solid #ddd;padding:3px 6px;text-align:left;vertical-align:top}
.page-pdf table.signature th{background:#eef}.page-pdf table.signature td:first-child{width:36%;color:#555}.page-pdf .empreinte{font-family:ui-monospace,Menlo,monospace;font-size:11px;word-break:break-all}
/* La page publique de vérification d'une pièce signée (lot 3C) : une carte par résultat, bordée de la couleur de son état (mousse : valide, bengara : modifié, ocre : inconnu). */
.resultat-verification{border-left:4px solid var(--trait)}
.resultat-verification.valide{border-left-color:var(--ok)}.resultat-verification.modifie{border-left-color:var(--warn)}.resultat-verification.inconnu{border-left-color:var(--ocre)}
.resultat-verification h2{margin:0 0 6px;font-size:18px;color:var(--ink)}
.resultat-verification .empreinte{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all}

/* L'éditeur de module (vues/editeur_module.py) : la liste des écrans est faite de liens, l'écran ouvert de blocs superposés. */
.editeur-liste h2,.editeur-ecran h2{font-size:17px;margin:0 0 10px}.editeur-liste ol{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}
a.ecran-liste{display:block;text-decoration:none}.ecran-ligne .actions-activite{margin-top:4px}.ecran-ajout{display:flex;gap:6px;flex-wrap:wrap}.ecran-ajout input{flex:1 1 140px;min-width:0}
.ecran-titre{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}.ecran-titre input{flex:1 1 240px;min-width:0}
.defauts{margin:6px 0 10px;padding-left:18px}.defauts li{margin:0 0 4px}.apercu-image{display:block;max-width:100%;max-height:220px;margin:0 0 10px;border:1px solid var(--line);border-radius:8px}
.ajout-de-bloc{margin-top:18px}.ajout-de-bloc h3{font-size:15px;margin:0 0 8px}.bloc-edit .fl{grid-template-columns:150px 1fr}
.source-texte{display:block;width:100%;border:0;border-top:1px solid var(--line);padding:8px 10px;font:inherit;font-size:13px;box-sizing:border-box}
.js .source-texte{display:none}html:not(.js) .barre-texte,html:not(.js) .zone-texte{display:none}
.bascule-module{display:flex;gap:6px;margin:0 0 14px}.bascule-module .btn{text-decoration:none}
.question-edit .option-edit{display:flex;gap:8px;align-items:center;margin:0 0 6px;flex-wrap:wrap}.question-edit .option-edit input[type=text]{flex:1 1 220px;min-width:0;width:auto}.question-edit .option-edit label{white-space:nowrap}
.question-edit .reponse-fixe{flex:1 1 220px}.question-edit h4{margin:10px 0 6px;font-size:14px}

/* La prévisualisation d'une formation (docs/apercu-formation.md) : la mention, les choix de l'en-tête, les onglets. */
.previsu-mention{background:var(--warnbg);border:1px solid var(--warn);border-radius:10px;padding:8px 12px;margin:0 0 12px;font-size:14px;font-weight:600}
.previsu-choix{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end;margin:0 0 8px}.previsu-choix>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.previsu-choix label,.previsu-choix span{font-size:12.5px;color:var(--muted)}.previsu-choix b{font-size:14px;font-weight:600}
.previsu-onglets{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:14px 0 18px}
.previsu-onglets a{padding:8px 14px;border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;color:var(--muted);text-decoration:none;font-size:14px}
.previsu-onglets a.on{background:var(--surface);border-color:var(--line);color:var(--ink);font-weight:600;margin-bottom:-1px}
.previsu-frise{list-style:none;margin:0;padding:0;position:relative}
.previsu-etape{display:grid;grid-template-columns:220px 1fr;gap:6px 28px;padding:0 0 18px;position:relative}
/* La colonne des dates (220 px) s'arrête avant le trait et le point de la frise, centrés dans l'écart de 28 px : une date longue (« dimanche 25 octobre 2026 ») n'est jamais recouverte (24/10/2026). */
.previsu-etape::before{content:"";position:absolute;left:233px;top:6px;bottom:-6px;width:1px;background:var(--line)}
.previsu-etape:last-child::before{display:none}
.previsu-quand{text-align:right;padding-top:4px}.previsu-quand b{display:block;font-size:14px;color:var(--ink)}.previsu-quand small{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.previsu-carte{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 16px;box-shadow:var(--ombre)}
.previsu-carte::before{content:"";position:absolute;left:-22px;top:12px;width:11px;height:11px;border-radius:50%;background:var(--accent);border:2px solid var(--fond)}
.previsu-carte h3{font-size:16px;margin:0 0 6px}.previsu-carte h4{font-size:14px;margin:12px 0 6px}.previsu-carte p{margin:6px 0}
.previsu-depliant{margin:8px 0}.previsu-depliant>summary{cursor:pointer;color:var(--acc);font-size:14px;font-weight:500}.previsu-depliant[open]>summary{margin-bottom:8px}
.previsu-inerte{border:0;padding:0;margin:0;min-width:0}.previsu-inerte input,.previsu-inerte select,.previsu-inerte textarea{opacity:.85}
@media (max-width:760px){.previsu-etape{grid-template-columns:1fr}.previsu-etape::before{left:5px}.previsu-quand{text-align:left;padding-left:28px}.previsu-carte{margin-left:28px}.previsu-carte::before{left:-30px}}
.previsu-activites{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:8px}
.previsu-activite{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--bg)}.previsu-activite p{margin:6px 0 0}
.previsu-activite .lecteur-scorm{margin-top:8px}.previsu-activite .lecteur-scorm iframe{width:100%;height:520px;border:1px solid var(--line);border-radius:8px;background:#fff}
/* Le résumé d'une session en bandeau (décision du 03/11/2026). */
.resume-session{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px 22px;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--ink);border-radius:0 0 12px 12px;padding:16px 20px;margin:0 0 16px;font-size:14px;color:var(--ink)}
.resume-session>div{min-width:0;overflow-wrap:anywhere}
.resume-session small{display:block;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
