/* Bodoni Moda — SIL Open Font License 1.1, hebergee sur votre serveur.
   Fonte variable : un seul fichier couvre toutes les graisses. */
@font-face{font-family:"Bodoni Moda";font-style:normal;font-weight:400 900;
  font-display:swap;src:url("/assets/fonts/bodoni-moda-var.woff2") format("woff2")}
@font-face{font-family:"Bodoni Moda";font-style:italic;font-weight:400 900;
  font-display:swap;src:url("/assets/fonts/bodoni-moda-italic-var.woff2") format("woff2")}


:root{
  --ground:#FAFAF7; --surface:#FFFFFF; --surface-2:#F2F2EE;
  --ink:#16202E; --ink-2:#33404F; --muted:#5A6678; --faint:#8A94A3;
  --rule:#DCDFE4; --rule-strong:#B9BFC8;
  --accent:#B3122B; --accent-soft:#F7E9EB; --accent-rule:#E3B8BF;
  --ok:#1D6B4F; --ok-soft:#E7F1EC;
  --shadow:0 1px 2px rgba(22,32,46,.06), 0 8px 24px -12px rgba(22,32,46,.18);
  --f-display:"Bodoni Moda",Georgia,"Times New Roman",serif;
  --f-body:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-mono:"IBM Plex Mono",SFMono-Regular,Consolas,monospace;
  --maxw:1180px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#0F141C; --surface:#171E29; --surface-2:#1E2634;
    --ink:#E9EDF3; --ink-2:#C6CEDA; --muted:#98A3B4; --faint:#78849A;
    --rule:#262F3D; --rule-strong:#3A4557;
    --accent:#E2536B; --accent-soft:#2B1A20; --accent-rule:#5C2B36;
    --ok:#6BC49B; --ok-soft:#16281F;
    --shadow:0 1px 2px rgba(0,0,0,.40), 0 8px 28px -14px rgba(0,0,0,.70);
  }
}
:root[data-theme="dark"]{
  --ground:#0F141C; --surface:#171E29; --surface-2:#1E2634;
  --ink:#E9EDF3; --ink-2:#C6CEDA; --muted:#98A3B4; --faint:#78849A;
  --rule:#262F3D; --rule-strong:#3A4557;
  --accent:#E2536B; --accent-soft:#2B1A20; --accent-rule:#5C2B36;
  --ok:#6BC49B; --ok-soft:#16281F;
  --shadow:0 1px 2px rgba(0,0,0,.40), 0 8px 28px -14px rgba(0,0,0,.70);
}
*{box-sizing:border-box}
body{background:var(--ground);color:var(--ink);font-family:var(--f-body);
     font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{text-wrap:balance;margin:0}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.maquette{background:var(--ink);color:var(--ground);font-size:11.5px;letter-spacing:.09em;
          text-transform:uppercase;text-align:center;padding:7px}

.nav{border-bottom:1px solid var(--rule);background:var(--surface);position:sticky;top:0;z-index:30}
.nav-in{display:flex;align-items:center;gap:22px;padding:13px 0;flex-wrap:wrap}
.brand{margin-right:auto;line-height:1}
.brand .w{font-family:var(--f-display);font-size:23px;font-weight:600;letter-spacing:-.015em}
.brand .d{font-family:var(--f-mono);font-size:11px;color:var(--accent);letter-spacing:.02em;
          margin-top:5px}
.brand .s{font-size:12px;color:var(--muted);margin-top:3px}
.tabs{display:flex;gap:2px;flex-wrap:wrap}
.tab{border:0;background:transparent;font:inherit;font-size:13.5px;color:var(--muted);
     padding:8px 12px;cursor:pointer;border-bottom:2px solid transparent}
.tab:hover{color:var(--ink)}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:500}
.langsw{display:flex;border:1px solid var(--rule-strong)}
.langsw button{border:0;background:transparent;font:inherit;font-family:var(--f-mono);
               font-size:11.5px;padding:7px 10px;cursor:pointer;color:var(--muted)}
.langsw button[aria-pressed="true"]{background:var(--ink);color:var(--ground)}
.nav-cta{background:var(--accent);color:#fff;border:0;font:inherit;font-size:13px;
         font-weight:500;padding:9px 15px;cursor:pointer}

.panel{display:none}
.panel.on{display:block}

.hero{padding:52px 0 44px;border-bottom:1px solid var(--rule)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px;
           align-items:center}
.hero h1{font-family:var(--f-display);font-size:42px;font-weight:600;line-height:1.1;
         letter-spacing:-.02em}
.hero h1 em{font-style:italic;font-weight:400}
.hero p{color:var(--ink-2);margin:18px 0 26px;max-width:52ch}
.hero-cta{display:flex;gap:11px;flex-wrap:wrap}
.b-pri{background:var(--accent);color:#fff;border:0;font:inherit;font-size:14px;font-weight:500;
       padding:13px 21px;cursor:pointer}
.b-sec{background:transparent;color:var(--ink);border:1px solid var(--rule-strong);font:inherit;
       font-size:14px;padding:13px 21px;cursor:pointer}
.hero-note{font-size:12.5px;color:var(--faint);margin-top:14px}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);
      border:1px solid var(--rule)}
.kpi{background:var(--surface);padding:20px 18px}
.kpi b{display:block;font-family:var(--f-mono);font-size:29px;font-weight:600;
       letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}
.kpi span{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
          color:var(--faint);margin-top:7px}

.sec{padding:48px 0;border-bottom:1px solid var(--rule)}
.sec-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
           display:flex;align-items:center;gap:14px;margin-bottom:22px}
.sec-label::after{content:"";flex:1;height:1px;background:var(--rule)}
.sec h2{font-family:var(--f-display);font-size:30px;font-weight:600;line-height:1.16;
        letter-spacing:-.02em;max-width:22ch}
.sec .lede{color:var(--ink-2);margin:14px 0 30px;max-width:60ch}

.services{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
          background:var(--rule);border:1px solid var(--rule)}
.svc{background:var(--surface);padding:24px 22px}
.svc .n{font-family:var(--f-mono);font-size:11px;color:var(--accent);letter-spacing:.1em}
.svc h3{font-family:var(--f-display);font-size:20px;font-weight:600;margin-top:9px}
.svc p{color:var(--ink-2);font-size:13.5px;margin:9px 0 0}
.svc .soon{display:inline-block;margin-top:11px;font-size:10.5px;letter-spacing:.09em;
           text-transform:uppercase;border:1px solid var(--rule-strong);padding:3px 8px;
           color:var(--faint)}

.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.step{border-top:2px solid var(--accent-rule);padding-top:14px}
.step .n{font-family:var(--f-mono);font-size:11px;color:var(--accent);letter-spacing:.1em}
.step h4{font-size:15px;font-weight:600;margin-top:7px}
.step p{font-size:13px;color:var(--muted);margin:6px 0 0}

.tools{background:var(--ground);border-bottom:1px solid var(--rule);padding:12px 0;
       position:sticky;top:78px;z-index:20}
.tools-in{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.field{display:flex;align-items:center;gap:7px;background:var(--surface);
       border:1px solid var(--rule);padding:7px 11px}
.field label{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint)}
.field input,.field select{border:0;background:transparent;font:inherit;font-size:13.5px;
                           color:var(--ink);min-width:110px}
.field input{min-width:180px}
.chk{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--rule);
     padding:8px 12px;font-size:13px;cursor:pointer}
.chk input{accent-color:var(--accent);margin:0}
.count{margin-left:auto;font-family:var(--f-mono);font-size:12.5px;color:var(--muted)}
.btn-reset{border:1px solid var(--rule);background:var(--surface);font:inherit;font-size:13px;
           padding:8px 13px;cursor:pointer;color:var(--muted)}
.cat-strip{display:flex;gap:7px;flex-wrap:wrap;padding:16px 0 4px}
.pill{border:1px solid var(--rule-strong);background:var(--surface);font:inherit;font-size:12.5px;
      padding:6px 12px;cursor:pointer;color:var(--ink-2)}
.pill b{font-family:var(--f-mono);color:var(--faint);margin-left:6px;font-weight:500}
.pill[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}
.pill[aria-pressed="true"] b{color:var(--accent)}

.ledger-head,.line{display:grid;
  grid-template-columns:72px minmax(0,2.3fr) minmax(0,1.1fr) 48px minmax(0,1.4fr);gap:16px}
.ledger-head{padding:14px 12px 8px;border-bottom:1px solid var(--rule-strong);font-size:10.5px;
             letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.line{padding:9px 12px;border-bottom:1px solid var(--rule);align-items:baseline}
.line:hover{background:var(--surface)}
.line .ref{font-family:var(--f-mono);font-size:11.5px;color:var(--faint);min-width:0;
           overflow-wrap:anywhere}
.line .nm{font-size:14px;font-weight:500;min-width:0;overflow-wrap:break-word}
.line .vl{font-size:13px;color:var(--muted);min-width:0;overflow-wrap:break-word}
.line .ct{font-family:var(--f-mono);font-size:11.5px;color:var(--muted);min-width:0}
.line .em{font-size:12.5px;color:var(--muted);font-family:var(--f-mono);min-width:0;
          overflow-wrap:break-word}
.line .em.none{color:var(--faint);font-style:italic;font-family:var(--f-body)}
.more{display:block;width:100%;margin-top:24px;padding:13px;background:var(--surface);
      border:1px solid var(--rule-strong);font:inherit;font-size:13.5px;cursor:pointer;color:var(--ink)}
.empty{padding:40px 12px;text-align:center;color:var(--muted)}

.presentation{border:1px solid var(--rule-strong);background:var(--surface);margin:20px 0;
              box-shadow:var(--shadow);border-top:3px solid var(--accent)}
.pr-band{background:var(--surface-2);border-bottom:1px solid var(--rule);height:120px;
         display:flex;align-items:center;justify-content:center;position:relative}
.pr-band .ph{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);
             border:1px dashed var(--rule-strong);padding:8px 15px;text-align:center}
.pr-badge{position:absolute;top:12px;right:12px;background:var(--accent);color:#fff;font-size:10px;
          letter-spacing:.11em;text-transform:uppercase;padding:5px 10px;font-weight:600}
.pr-head{padding:19px 24px 15px;border-bottom:1px solid var(--rule)}
.pr-head h3{font-family:var(--f-display);font-size:25px;font-weight:600;line-height:1.15}
.pr-loc{font-size:12.5px;color:var(--muted);margin-top:6px;display:flex;gap:9px;flex-wrap:wrap;
        align-items:center}
.pr-loc .code{font-family:var(--f-mono);border:1px solid var(--rule-strong);padding:1px 6px;
              font-size:11px}
.pr-accroche{font-family:var(--f-display);font-style:italic;font-size:16px;color:var(--ink-2);
             margin-top:12px;line-height:1.45;max-width:62ch}
.pr-sec{padding:17px 24px;border-bottom:1px solid var(--rule)}
.pr-sec:last-child{border-bottom:0}
.pr-t{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
      margin-bottom:11px}
.glance{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
        background:var(--rule);border:1px solid var(--rule);margin:0}
.gl{background:var(--surface);padding:10px 12px}
.gl dt{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.gl dd{margin:4px 0 0;font-size:13.5px;line-height:1.4}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1px solid var(--rule-strong);padding:4px 10px;font-size:12.5px;color:var(--ink-2)}
.todo{color:var(--faint);font-style:italic;font-size:13px;border:1px dashed var(--rule-strong);
      padding:8px 11px;margin-top:6px}
.args{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:13px}
.arg{border-left:2px solid var(--accent-rule);padding-left:12px}
.arg .num{font-family:var(--f-mono);font-size:11px;color:var(--accent)}
.pr-contact{display:flex;flex-wrap:wrap;gap:22px;align-items:center;justify-content:space-between;
            background:var(--surface-2)}
.cts{display:flex;flex-wrap:wrap;gap:20px}
.ct-i .k{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.ct-i .v{font-family:var(--f-mono);font-size:13px;margin-top:3px}
.cta{display:flex;gap:9px}
.cta span{background:var(--accent);color:#fff;font-size:12.5px;font-weight:500;padding:9px 16px}
.cta span.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}

.form-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:44px;
           align-items:start}
.form{border:1px solid var(--rule);background:var(--surface)}
.form-h{padding:18px 22px;border-bottom:1px solid var(--rule);background:var(--surface-2)}
.form-h .t{font-family:var(--f-display);font-size:21px;font-weight:600}
.form-h .s{font-size:12.5px;color:var(--muted);margin-top:4px}
.form-b{padding:20px 22px;display:grid;grid-template-columns:1fr 1fr;gap:15px}
.fg{display:flex;flex-direction:column;gap:5px}
.fg.full{grid-column:1/-1}
.fg label{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.fg input{font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--rule-strong);
          background:var(--ground);color:var(--ink)}
.fg .hint{font-size:11.5px;color:var(--faint)}
.ac{position:relative}
.ac-list{position:absolute;top:100%;left:0;right:0;background:var(--surface);
         border:1px solid var(--rule-strong);border-top:0;max-height:210px;overflow-y:auto;
         z-index:5;box-shadow:var(--shadow)}
.ac-list div{padding:8px 11px;font-size:13.5px;cursor:pointer;border-bottom:1px solid var(--rule)}
.ac-list div:hover{background:var(--accent-soft)}
.ac-list .c{font-family:var(--f-mono);font-size:11px;color:var(--faint);margin-left:7px}
.niveaux{display:flex;flex-wrap:wrap;gap:7px}
.niv{border:1px solid var(--rule-strong);background:var(--ground);font:inherit;font-size:12.5px;
     padding:6px 11px;cursor:pointer;color:var(--ink-2)}
.niv[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent)}
.form-f{padding:16px 22px 22px;border-top:1px solid var(--rule);display:flex;gap:14px;
        align-items:center;flex-wrap:wrap}
.form-f .mention{font-size:12px;color:var(--muted);max-width:44ch}
.aside-box{border:1px solid var(--rule);background:var(--surface);padding:20px}
.aside-box h4{font-family:var(--f-display);font-size:18px;font-weight:600;margin-bottom:11px}
.aside-box ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;
              font-size:13.5px;color:var(--ink-2)}
.aside-box li{display:flex;gap:10px}
.aside-box li i{font-style:normal;font-family:var(--f-mono);font-size:11px;color:var(--accent);
                padding-top:3px}

.dash{display:grid;grid-template-columns:210px minmax(0,1fr);gap:26px;align-items:start;
      padding:30px 0 60px}
.side{border:1px solid var(--rule);background:var(--surface)}
.side .who{padding:15px;border-bottom:1px solid var(--rule)}
.side .who .n{font-size:14px;font-weight:600;line-height:1.25}
.side .who .m{font-size:11.5px;color:var(--muted);margin-top:3px}
.side nav{display:flex;flex-direction:column}
.side nav button{border:0;background:transparent;font:inherit;font-size:13.5px;text-align:left;
                 padding:10px 15px;cursor:pointer;color:var(--muted);
                 border-left:2px solid transparent}
.side nav button[aria-selected="true"]{color:var(--ink);background:var(--accent-soft);
                                       border-left-color:var(--accent);font-weight:500}
.dpanel{display:none}
.dpanel.on{display:block}
.card{border:1px solid var(--rule);background:var(--surface);margin-bottom:18px}
.card-h{padding:14px 18px;border-bottom:1px solid var(--rule);display:flex;
        justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.card-h .t{font-size:14px;font-weight:600}
.card-b{padding:16px 18px}
.tag{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;
     border:1px solid var(--rule-strong);color:var(--muted)}
.tag.ex{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}
.opp{display:grid;grid-template-columns:96px minmax(0,1fr) 128px;gap:16px;padding:12px 0;
     border-bottom:1px solid var(--rule);align-items:baseline}
.opp:last-child{border-bottom:0}
.opp .d{font-family:var(--f-mono);font-size:11.5px;color:var(--faint)}
.opp .t{font-size:13.5px}
.opp .t small{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.opp .a{font-size:12px;color:var(--accent)}
.draft{border:1px solid var(--rule);background:var(--ground);padding:14px 16px;margin-bottom:12px}
.draft .meta{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);
             margin-bottom:8px}
.draft p{margin:0;font-size:13.5px;color:var(--ink-2)}
.upgrade{border:1px solid var(--accent-rule);border-top:3px solid var(--accent);
         background:var(--surface);padding:20px}
.upgrade h4{font-family:var(--f-display);font-size:20px;font-weight:600}
.upgrade p{font-size:13.5px;color:var(--ink-2);margin:9px 0 16px;max-width:56ch}

footer{border-top:1px solid var(--rule);padding:30px 0 44px;font-size:12.5px;color:var(--muted)}
footer .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:24px}
footer h4{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);
          margin-bottom:8px}

@media (max-width:900px){
  .hero-grid,.form-grid,.services,.form-b{grid-template-columns:1fr;gap:24px}
  .steps{grid-template-columns:1fr 1fr}
  .dash{grid-template-columns:1fr}
  .hero h1{font-size:32px}
  .ledger-head,.line{grid-template-columns:60px minmax(0,1.7fr) minmax(0,1fr)}
  .ledger-head .h-ct,.ledger-head .h-em,.line .ct,.line .em{display:none}
  .tools{position:static}
  .wrap{padding:0 18px}
}

/* ---------------------------------------------- adaptations site statique */
a{color:inherit;text-decoration:none}
.brand{display:block}
.brand .w,.brand .d,.brand .s{display:block}
.tabs a{font-size:13.5px;color:var(--muted);padding:8px 12px;
        border-bottom:2px solid transparent;display:inline-block}
.tabs a:hover{color:var(--ink)}
.tabs a.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:500}
.langsw a{font-family:var(--f-mono);font-size:11.5px;padding:7px 10px;color:var(--muted);
          display:inline-block}
.langsw a.on{background:var(--ink);color:var(--ground)}
.nav-cta{display:inline-block}
.b-pri,.b-sec{display:inline-block;text-decoration:none}

h1.h2,h2{font-family:var(--f-display);font-size:30px;font-weight:600;line-height:1.16;
         letter-spacing:-.02em;max-width:24ch}
h2.h4{font-family:var(--f-display);font-size:18px;font-weight:600;margin-bottom:11px}
.crumb{font-size:12px;color:var(--muted);margin-bottom:14px}
.crumb a{color:var(--accent)}
.soft{color:var(--faint);font-style:italic}
.big{font-size:21px;font-weight:600}
.presentation .big{font-size:16px}

.services.lvls{grid-template-columns:repeat(4,minmax(0,1fr))}
.services.lvls .svc{padding:16px 18px}
.services.lvls .lv{font-size:13px;font-weight:500;margin-top:4px}
.services.lvls a.svc:hover{background:var(--surface-2)}

.cat-strip a.pill{display:inline-block}
.cat-strip a.pill:hover{border-color:var(--accent);color:var(--ink)}

.ledger{margin-top:18px}
.ledger-head,.line{display:grid;
  grid-template-columns:72px minmax(0,2.3fr) minmax(0,1.1fr) 48px minmax(0,1.4fr);gap:16px}
.line .nm a{font-weight:600;border-bottom:1px solid var(--accent-rule)}
/* Le specimen de ligne gratuite vit dans une demi-colonne : la grille de
   l'annuaire n'y tient pas. On l'empile, ce qui est aussi plus fidele a ce
   que voit une ecole qui ne paie pas. */
.ledger.inline{overflow:visible}
.ledger.inline .line{display:block;min-width:0;white-space:normal;border-bottom:0;
  padding:0;line-height:1.5}
.ledger.inline .line:hover{background:transparent}
.ledger.inline .ref{display:block;font-size:10.5px;letter-spacing:.08em;margin-bottom:4px}
.ledger.inline .nm{display:block;font-size:16px;font-weight:600;line-height:1.3;
  margin-bottom:3px;overflow-wrap:anywhere}
.ledger.inline .vl,.ledger.inline .ct{display:inline;font-size:13px}
.ledger.inline .vl::after{content:" · ";color:var(--faint)}
.ledger.inline .em{display:block;margin-top:5px;font-size:12.5px;overflow-wrap:anywhere}
.specimen{border:1px solid var(--rule);background:var(--surface);padding:14px 16px}

.cmp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:24px;align-items:start}
.cmp-l{position:sticky;top:110px}

.niveaux .niv{border:1px solid var(--rule-strong);background:var(--ground);font-size:12.5px;
              padding:6px 11px;color:var(--ink-2);display:inline-block}
.aside-box.mt{margin-top:18px}
.tools-in{margin-top:24px}
.presentation h1{font-family:var(--f-display);font-size:27px;font-weight:600;line-height:1.14}

@media (max-width:900px){
  .cmp{grid-template-columns:1fr}
  .cmp-l{position:static}
  .services.lvls{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ------------------------------------- fiches enrichies : photo et mention */
.pr-band{height:auto;min-height:120px;padding:0;overflow:hidden}
.pr-band img.cover{width:100%;height:260px;object-fit:cover;display:block}
.pr-note{padding:12px 24px 16px;font-size:11.5px;color:var(--faint);
         border-top:1px solid var(--rule);line-height:1.5}
.pr-note a{color:var(--accent)}
@media (max-width:700px){.pr-band img.cover{height:180px}}
.pr-band .ph[hidden]{display:none}
.pr-band:has(img.cover){align-items:stretch}

/* ----------------------------------------------------------------- guide */
.gcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;
        background:var(--rule);border:1px solid var(--rule)}
.gcard{background:var(--surface);padding:22px 20px;display:block}
.gcard:hover{background:var(--surface-2)}
.gcard h3{font-family:var(--f-display);font-size:20px;font-weight:600;line-height:1.2}
.gcard p{font-size:13.5px;color:var(--ink-2);margin:10px 0 14px}
.gcard .rm{font-size:12px;color:var(--accent);letter-spacing:.03em}
.guide-warn{margin-top:22px;font-size:12.5px;color:var(--muted);
            border-left:2px solid var(--accent-rule);padding-left:14px;max-width:70ch}

.article{max-width:760px}
.article h1{font-family:var(--f-display);font-size:34px;font-weight:600;line-height:1.14;
            letter-spacing:-.02em}
.article .artlede{font-family:var(--f-display);font-style:italic;font-size:19px;
                  color:var(--ink-2);line-height:1.5;margin:16px 0 30px}
.article h2{font-family:var(--f-display);font-size:23px;font-weight:600;line-height:1.24;
            margin:34px 0 12px;max-width:32ch}
.article p{font-size:16px;line-height:1.68;margin:0 0 15px;color:var(--ink)}
.article ul{font-size:16px;line-height:1.6;padding-left:20px;margin:0 0 15px}
.article li{margin-bottom:7px}
.article b{font-weight:600}
.article i{font-style:italic}
.artsrc{margin-top:40px;border-top:1px solid var(--rule-strong);padding-top:20px}
.artsrc ul{list-style:none;padding:0;font-size:13px;line-height:1.5}
.artsrc li{margin-bottom:7px}
.artsrc a{color:var(--accent);border-bottom:1px solid var(--accent-rule)}
.artsrc .upd{font-size:12px;color:var(--faint);margin:12px 0 0;line-height:1.5}
.gnexts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:34px}
.gnext{border:1px solid var(--rule);background:var(--surface);padding:15px 17px;
       font-size:14px;font-weight:500;line-height:1.35}
.gnext:hover{border-color:var(--rule-strong)}
@media (max-width:700px){.gnexts{grid-template-columns:1fr}.article h1{font-size:27px}}

/* ------------------------------------- tableaux de référence et équivalences */
.tw{overflow-x:auto;margin:18px 0 22px;border:1px solid var(--rule)}
table.ref{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--surface)}
table.ref th{background:var(--surface-2);text-align:left;padding:9px 11px;font-size:11px;
             letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
             border-bottom:1px solid var(--rule-strong);white-space:nowrap}
table.ref td{padding:9px 11px;border-bottom:1px solid var(--rule);vertical-align:top;
             line-height:1.4}
table.ref tr:last-child td{border-bottom:0}
table.ref td.sm{font-size:12.5px;color:var(--muted)}
table.eq{min-width:900px}
table.eq td.ag{font-family:var(--f-mono);font-size:12px;white-space:nowrap;color:var(--muted)}
table.eq td.is{font-family:var(--f-mono);font-size:12px;color:var(--faint)}
table.eq td.ch{font-weight:600;background:var(--accent-soft)}
table.eq th:nth-child(3){background:var(--accent-soft);color:var(--accent)}
.piege{border-left:2px solid var(--accent-rule);padding:2px 0 2px 14px;margin-bottom:14px}
.piege b{display:block;font-size:14.5px;margin-bottom:3px}
.piege p{font-size:14px;color:var(--ink-2);margin:0;line-height:1.55}
ul.res{font-size:13px;color:var(--muted);line-height:1.5;padding-left:18px}
ul.res li{margin-bottom:6px}
.article p.pull{font-family:var(--f-display);font-style:italic;font-size:19px;
                color:var(--ink);border-left:2px solid var(--accent);padding-left:16px;
                margin:18px 0 20px;line-height:1.45}
.article p.note-inline{font-size:13px;color:var(--muted);font-style:italic}

/* la table d'équivalence sort de la colonne de texte : 9 colonnes n'y tiennent pas */
@media (min-width:1120px){
  .article .tw:has(table.eq){margin-left:-210px;margin-right:-210px}
}
table.eq{min-width:1080px}
table.eq td{font-size:12.5px;padding:7px 9px}
table.eq th{padding:8px 9px;font-size:10px}

/* ============================================================ ma situation */
.ownote{border-left:3px solid var(--ink,#111);background:#f7f6f3;padding:14px 18px;
  margin:18px 0;font-size:15px;line-height:1.55;max-width:78ch}
.oform{margin:26px 0 0;border:1px solid #e2ded6;background:#fff;padding:24px}
.ogrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px 22px}
.of{display:flex;flex-direction:column;gap:6px;min-width:0}
.of.ofull{grid-column:1/-1}
.of label{font-size:12px;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:#5c574e}
.of select,.of input[type=number]{font:inherit;font-size:15px;padding:9px 10px;border:1px solid #cdc7bc;
  background:#fff;border-radius:0;width:100%;box-sizing:border-box}
.of select:focus,.of input:focus{outline:2px solid #111;outline-offset:-2px}
.oh{font-size:12.5px;color:#7a746a;line-height:1.4}
.ochks{display:flex;flex-wrap:wrap;gap:8px}
.ochk{display:inline-flex;align-items:center;gap:7px;border:1px solid #cdc7bc;padding:7px 13px;
  cursor:pointer;font-size:14px;text-transform:none;letter-spacing:0;font-weight:400;color:#111}
.ochk:has(input:checked){background:#111;color:#fff;border-color:#111}
.ochk input{margin:0}
.oact{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.oact button{cursor:pointer}

.ores{margin-top:34px;display:grid;gap:22px}
.obl{border:1px solid #e2ded6;background:#fff;padding:26px 28px;position:relative}
.obn{position:absolute;top:0;left:0;background:#111;color:#fff;font-family:var(--mono,monospace);
  font-size:11px;line-height:1;padding:6px 9px}
.obl h2{font-size:20px;margin:6px 0 14px;letter-spacing:-.01em}
.obl p{font-size:15.5px;line-height:1.62;max-width:78ch;margin:0 0 12px}
.obl p:last-child{margin-bottom:0}
.osm{font-size:13.5px;color:#7a746a}
.ogl{margin:0 0 14px;display:grid;gap:0;border-top:1px solid #ece8e1}
.okv{display:grid;grid-template-columns:230px 1fr;gap:16px;padding:11px 0;border-bottom:1px solid #ece8e1}
.okv dt{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#7a746a;font-weight:600}
.okv dd{margin:0;font-size:15.5px;line-height:1.5}
.obig{font-size:26px;letter-spacing:-.02em}
.otag{font-size:11px;letter-spacing:.1em;text-transform:uppercase;border:1px solid #cdc7bc;
  padding:3px 7px;vertical-align:middle;color:#7a746a;margin-left:8px}
.overd{display:inline-block;background:#111;color:#fff;padding:8px 16px;font-size:14px;
  font-weight:600;letter-spacing:.02em;margin-bottom:16px}
.oal{border-left:3px solid #c8a44a;background:#fcfaf5;padding:13px 17px;margin:0 0 12px}
.oal b{display:block;font-size:15px;margin-bottom:5px}
.oal p{font-size:14.5px;line-height:1.55;margin:0;color:#3d3931}
.olinks{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.olink{display:inline-block;border:1px solid #111;padding:8px 14px;font-size:13.5px;
  text-decoration:none;color:#111}
.olink:hover{background:#111;color:#fff}
.olist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1px;
  background:#ece8e1;border:1px solid #ece8e1;margin:14px 0}
.oit{background:#fff;padding:13px 15px}
.oit-n{font-size:15px;font-weight:600;line-height:1.3}
.oit-n a{color:#111}
.oit-m{font-size:12.5px;color:#7a746a;margin-top:3px}
.oit-b{display:inline-block;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  margin-top:7px;border:1px solid #cdc7bc;padding:2px 6px;color:#7a746a}
.oit-t{font-size:12.5px;color:#3d3931;margin-top:6px}
.osrc{background:#faf9f6}
@media (max-width:640px){
  .okv{grid-template-columns:1fr;gap:2px}
  .obl{padding:22px 18px}
  .oform{padding:18px}
}
@media print{
  .nav,.maquette,.oform,footer,.olinks{display:none!important}
  .obl{break-inside:avoid;border:1px solid #999}
}
.oit-acc{border-color:#111;color:#111;font-weight:600}
.obar{background:#111;color:#fff}
.obar-in{display:flex;gap:34px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.obar .sec-label{color:#b8b1a4}
.obar h2{color:#fff;margin:6px 0 8px}
.obar p{color:#d6d1c6;max-width:64ch;font-size:15.5px;line-height:1.6;margin:0}
.obar .b-pri{background:#fff;color:#111;border-color:#fff;white-space:nowrap}
.gcard-tool{background:#111;color:#fff;border-color:#111}
.gcard-tool h3,.gcard-tool p,.gcard-tool .rm{color:#fff}
.ores{scroll-margin-top:104px}
button.olink{background:transparent;font:inherit;font-size:13.5px;cursor:pointer}

/* --------------------------------------------------- ma situation : action */
.osum{border:2px solid #111;background:#111;color:#fff;padding:22px 26px;margin-bottom:4px}
.osum-h{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#b8b1a4;margin-bottom:14px}
.osum-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.osum-c{display:flex;gap:12px;align-items:flex-start;border:1px solid #3d3931;padding:13px 15px;
  text-decoration:none;color:#fff;background:#1b1a17}
.osum-c:hover{background:#2a2825;border-color:#7a746a}
.osum-c b{font-family:var(--mono,monospace);font-size:12px;background:#fff;color:#111;
  padding:2px 7px;line-height:1.5}
.osum-c span{font-size:14.5px;line-height:1.35;display:block}
.osum-c em{display:block;font-style:normal;font-size:12.5px;color:#b8b1a4;margin-top:3px}
.osum-l{margin-top:14px;font-size:13px;color:#b8b1a4;letter-spacing:.03em}

.ocalls{display:grid;gap:1px;background:#ece8e1;border:1px solid #ece8e1;margin:16px 0}
.ocall{background:#fff;display:flex;gap:18px;padding:18px 20px}
.ocall-r{font-family:var(--mono,monospace);font-size:13px;background:#111;color:#fff;
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;flex:0 0 26px}
.ocall-m{min-width:0;flex:1}
.ocall-n{font-size:18px;font-weight:600;line-height:1.25;letter-spacing:-.01em}
.ocall-w{font-size:13.5px;color:#3d3931;margin-top:7px}
.ocall-w span{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#7a746a;
  margin-right:6px}
.ocall-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}
.ocall-b{display:inline-block;border:1px solid #cdc7bc;padding:7px 13px;font-size:13px;
  text-decoration:none;color:#111;background:#fff}
.ocall-b:hover{border-color:#111}
.ocall-tel{background:#111;color:#fff;border-color:#111}
.ocall-tel:hover{background:#3d3931}
.ocall-off{color:#7a746a;border-style:dashed}
.omsg{border:1px solid #e2ded6;background:#faf9f6;padding:18px 20px;margin:20px 0}
.omsg textarea{width:100%;box-sizing:border-box;font:inherit;font-size:14px;line-height:1.6;
  border:1px solid #cdc7bc;padding:13px;background:#fff;resize:vertical;margin-top:10px}
.oth{margin-top:26px}
.oq{margin:14px 0 0;padding-left:22px}
.oq li{font-size:15.5px;line-height:1.6;margin-bottom:11px;max-width:76ch}
.ostep{list-style:none;margin:0;padding:0;counter-reset:st}
.ostep li{display:grid;grid-template-columns:190px 1fr;gap:18px;padding:13px 0;
  border-bottom:1px solid #ece8e1}
.ostep li:last-child{border-bottom:0}
.ostep b{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#7a746a}
.ostep span{font-size:15.5px;line-height:1.6}
@media (max-width:640px){
  .ostep li{grid-template-columns:1fr;gap:4px}
  .ocall{flex-direction:column;gap:10px}
}

/* ------------------------------------------- deux publics, deux navigations */
.nav-alt{font-size:13px;color:#5c574e;text-decoration:none;border:1px solid #cdc7bc;
  padding:8px 13px;white-space:nowrap;margin-left:4px}
.nav-alt:hover{border-color:#111;color:#111}
.hero-fam h1{max-width:15ch}
.hero-eco .sec-label{margin-bottom:10px}
.routes{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1px;
  background:#ece8e1;border:1px solid #ece8e1}
.route{background:#fff;padding:26px 26px 22px;text-decoration:none;color:#111;display:block}
.route:hover{background:#faf9f6}
.route .n{font-family:var(--mono,monospace);font-size:12px;color:#7a746a;margin-bottom:12px}
.route h3{font-size:20px;line-height:1.25;margin:0 0 10px;letter-spacing:-.01em}
.route p{font-size:14.5px;line-height:1.6;color:#3d3931;margin:0 0 16px}
.route .rm{font-size:13.5px;font-weight:600;border-bottom:1px solid #111;padding-bottom:2px}
.ecobar{background:#faf9f6;border-top:1px solid #e2ded6}
.ecobar h2{margin:6px 0 8px}
.ecobar p{max-width:64ch;font-size:15.5px;line-height:1.6;margin:0;color:#3d3931}
.audience{border:1px solid #e2ded6;background:#faf9f6;padding:22px 26px}
.audience p{margin:0 0 6px;font-size:15px;line-height:1.6;max-width:76ch}
@media (max-width:900px){ .nav-alt{display:none} }
.formwarn{border-left:3px solid var(--accent,#b3122c);padding-left:12px;margin-top:10px}

/* ------------------------------------------------- pages légales
   Texte de loi : on privilégie la lisibilité longue sur la densité. */
.hero.sm{padding:40px 0 30px}
.hero.sm h1{font-size:34px}
.hero.sm .lede{color:var(--ink-2);margin:14px 0 0;max-width:58ch;font-size:16px}
.legal{padding:36px 0 60px;max-width:74ch}
.legal h2{font-family:var(--f-display);font-size:21px;font-weight:600;letter-spacing:-.01em;
  margin:36px 0 12px;padding-top:18px;border-top:1px solid var(--rule)}
.legal h2:first-child{border-top:0;padding-top:0;margin-top:0}
.legal p{font-size:15.5px;line-height:1.72;color:#332f28;margin:0 0 14px}
.legal ul{margin:0 0 16px;padding-left:20px}
.legal li{font-size:15.5px;line-height:1.7;color:#332f28;margin-bottom:7px}
.legal a{color:#111}
.legal-dl{display:grid;gap:1px;background:#ece8e1;border:1px solid #ece8e1;margin:0 0 16px}
.legal-dl>div{background:#fff;display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);
  gap:0;padding:0}
.legal-dl dt{padding:11px 16px;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;
  color:#6b655b;background:#faf9f6}
.legal-dl dd{margin:0;padding:11px 16px;font-size:15px;line-height:1.5}
.legal-note{font-size:13.5px !important;color:#6b655b !important;border-left:2px solid var(--rule);
  padding-left:13px}
.legal-box{border:1px solid #d8d3ca;background:#faf9f6;padding:20px 24px;margin:0 0 30px}
.legal-box b{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:#6b655b;margin-bottom:8px}
.legal-box p{margin:0;font-size:16px;line-height:1.7}
.legal-maj{margin-top:34px !important;padding-top:16px;border-top:1px solid var(--rule);
  font-size:13px !important;color:var(--faint) !important}
/* Valeur que l'éditeur n'a pas encore fournie : visible, impossible à manquer. */
mark.todo-legal{background:#ffe9ec;color:#8d0d20;font-size:11.5px;font-weight:700;
  letter-spacing:.06em;padding:3px 7px;border:1px solid #f0b9c2}
.legal-bar{margin-top:26px;padding-top:18px;border-top:1px solid var(--rule);
  display:flex;gap:20px;flex-wrap:wrap}
.legal-bar a{color:var(--muted);text-decoration:none;font-size:12.5px}
.legal-bar a:hover{color:#111;text-decoration:underline}
.legal-bar a.on{color:#111}
@media (max-width:640px){
  .legal-dl>div{grid-template-columns:1fr}
  .legal-dl dt{padding-bottom:4px}
  .legal-dl dd{padding-top:4px}
  .hero.sm h1{font-size:27px}
}
/* Piège à robots : hors flux et hors lecture d'écran, jamais « display:none »,
   que certains robots détectent. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Adresse de contact au pied de page : le site y renvoyait sans la donner. */
.legal-mail a{font-weight:600;color:#111}

/* ---------------------------------------------- fiche gratuite d'école
   Distincte de la présentation payante : pas de badge « complète », pas
   d'argumentaire à remplir, pas de bouton qui ne mène nulle part. */
.pr-libre{border:1px solid var(--rule,#e2ded6);padding:34px 38px 30px;background:#fff}
.pr-free{display:inline-block;margin-top:14px;font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:#6b655b;border:1px solid #d8d3ca;padding:4px 9px}
.pr-chapo{font-size:18px;line-height:1.65;color:#2c2924;margin:24px 0 4px;max-width:62ch}
.pr-libre .pr-head h1{font-family:var(--f-display);font-size:31px;line-height:1.15;
  letter-spacing:-.015em;margin:0}
.pr-libre .pr-loc{display:flex;gap:11px;align-items:center;margin-top:11px;font-size:14.5px;
  color:#5c574e;flex-wrap:wrap}
.pr-libre .pr-sec{margin-top:30px;padding-top:22px;border-top:1px solid var(--rule,#e2ded6)}
.pr-libre .pr-t{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#6b655b;
  margin-bottom:14px}
.pr-libre .glance{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1px;
  background:#ece8e1;border:1px solid #ece8e1;margin:0}
.pr-libre .gl{background:#fff;padding:12px 15px}
.pr-libre .gl dt{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:#7a746a;
  margin-bottom:4px}
.pr-libre .gl dd{margin:0;font-size:15px;line-height:1.45}
.pr-libre .chips{display:flex;flex-wrap:wrap;gap:7px}
.pr-libre .chip{border:1px solid #d8d3ca;padding:5px 11px;font-size:13.5px;color:#3d3931}
.pr-libre .cts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px}
.pr-libre .ct-i .k{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:#7a746a;
  margin-bottom:3px}
.pr-libre .ct-i .v{font-size:15px;word-break:break-word}
/* Maillage : chaque fiche renvoie vers ses voisines, sinon la page est une
   impasse — pour un visiteur comme pour un moteur. */
ul.voisines{list-style:none;margin:0;padding:0;columns:2;column-gap:30px}
ul.voisines li{margin:0 0 7px;break-inside:avoid;font-size:14.5px;line-height:1.4}
ul.voisines .soft{color:#8a847a;font-size:13px}
.voisines-plus{margin:14px 0 0;font-size:14px}
.pr-libre .pr-note{margin-top:30px;padding-top:18px;border-top:1px solid var(--rule,#e2ded6);
  font-size:12.5px;line-height:1.65;color:#7a746a;max-width:72ch}
@media (max-width:700px){
  .pr-libre{padding:24px 20px}
  .pr-libre .pr-head h1{font-size:25px}
  ul.voisines{columns:1}
}
/* Le libellé du bloc contact prend toute la largeur : en colonne il laissait
   un vide de la moitié de la page. */
/* La règle d'origine .pr-contact est un flex « label à gauche, boutons à
   droite », conçue pour la fiche payante. Ici il n'y a pas de boutons : on
   repasse en bloc, sinon le libellé flotte seul dans la moitié vide. */
.pr-libre .pr-contact{display:block;background:#faf9f6;padding:22px 26px;
  border:1px solid var(--rule,#e2ded6)}
.pr-libre .pr-contact .pr-t{margin-bottom:16px}
.voisines-plus a{color:var(--accent,#b3122c)}
