/* Uniscience — feuille de style du site
   Un cahier de cours en ligne : fond papier, feuilles blanches pour le contenu,
   cobalt pour l'action, surligneur jaune pour l'emphase. Charte du logo. */

@font-face{font-family:"Sora";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/sora-600.woff") format("woff")}
@font-face{font-family:"Sora";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/sora-700.woff") format("woff")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/source-sans-3-400.woff") format("woff")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/source-sans-3-600.woff") format("woff")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/source-sans-3-700.woff") format("woff")}
@font-face{font-family:"Source Sans 3";font-style:italic;font-weight:400;font-display:swap;src:url("fonts/source-sans-3-400-italic.woff") format("woff")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/ibm-plex-mono-400.woff") format("woff")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/ibm-plex-mono-500.woff") format("woff")}

:root{
  --papier:#F6F5F1; --feuille:#FFFFFF; --encre:#16233A; --encre-2:#46526A; --encre-3:#6E778B;
  --trait:#E3E1D9; --cobalt:#3B5BDB; --cobalt-fonce:#2946B3; --cobalt-pale:#ECEFFC; --sur-cobalt:#FFFFFF;
  --surligneur:#F5D90A; --sur-surligneur:#16233A; --attention:#B4462F; --attention-pale:#FBEEEA;
  --nuit:#16233A; --sur-nuit:#F6F5F1; --succes:#2F7D55; --ombre:rgba(22,35,58,.10);
  --font-titre:"Sora","Segoe UI",system-ui,sans-serif;
  --font-texte:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --rayon:6px; --max:1120px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root{
    --papier:#0F1520; --feuille:#161E2C; --encre:#E8EAF0; --encre-2:#AEB6C6; --encre-3:#8B94A6;
    --trait:#273146; --cobalt:#7D97FF; --cobalt-fonce:#A3B4FF; --cobalt-pale:#1B2645; --sur-cobalt:#0F1520;
    --attention:#F0907A; --attention-pale:#2C1C19; --nuit:#05080D; --sur-nuit:#E8EAF0; --succes:#6FCF9B; --ombre:rgba(0,0,0,.45);
    color-scheme:dark;
  }
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--papier);color:var(--encre);font-family:var(--font-texte);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%}
a{color:var(--cobalt)} a:hover{color:var(--cobalt-fonce)}
:focus-visible{outline:2px solid var(--cobalt);outline-offset:2px;border-radius:2px}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:20px}
h1,h2,h3{font-family:var(--font-titre);font-weight:600;letter-spacing:-.025em;line-height:1.15;text-wrap:balance;margin:0}
p{margin:0 0 14px}
.mono{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.sous-titre{color:var(--cobalt)}
.discret{color:var(--encre-3)}
.lien-evitement{position:absolute;left:-9999px;top:8px;background:var(--feuille);color:var(--encre);padding:8px 12px;border-radius:4px;z-index:20}
.lien-evitement:focus{left:12px}

/* En-tête */
header.site{background:var(--feuille);border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:5}
header.site .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;padding-block:12px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--encre)}
.logo svg .lf{stroke:var(--cobalt)} .logo svg .lu{stroke:var(--encre)}
.logo-mot{font-family:var(--font-titre);font-weight:600;font-size:23px;letter-spacing:-.03em;line-height:1}
.logo-u{position:relative;display:inline-block}
.logo-u svg{position:absolute;left:1px;top:-3px}
nav.principale{display:flex;flex-wrap:wrap;align-items:center;gap:4px 20px;margin-left:auto}
nav.principale a{color:var(--encre-2);text-decoration:none;font-weight:600;font-size:15.5px;padding-block:4px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
nav.principale a:hover,nav.principale a[aria-current="page"]{color:var(--encre);border-bottom-color:var(--surligneur)}
nav.principale a.stage{color:var(--cobalt)}
nav.principale a.contact{color:var(--sur-cobalt);background:var(--cobalt);border:0;border-radius:4px;padding:7px 14px}
nav.principale a.contact:hover,nav.principale a.contact[aria-current="page"]{background:var(--cobalt-fonce);color:var(--sur-cobalt)}

/* Boutons */
.bouton{display:inline-block;font:inherit;font-weight:700;font-size:16px;line-height:1.3;text-decoration:none;color:var(--sur-cobalt);background:var(--cobalt);border:0;border-radius:4px;padding:12px 18px;cursor:pointer;transition:background .15s,transform .15s,box-shadow .15s}
.bouton:hover{background:var(--cobalt-fonce);color:var(--sur-cobalt);transform:translateY(-1px);box-shadow:0 6px 16px -8px var(--cobalt)}
.bouton.ghost{background:transparent;color:var(--cobalt);border:1.5px solid var(--cobalt)}
.bouton.ghost:hover{background:var(--cobalt-pale);color:var(--cobalt-fonce)}
.bouton[disabled]{opacity:.6;cursor:wait;transform:none}

/* Fil d'Ariane */
.fil{font-size:14.5px;color:var(--encre-3);padding-block:18px 0;display:flex;flex-wrap:wrap;gap:4px 8px}
.fil a{color:var(--encre-2);text-decoration:none} .fil a:hover{text-decoration:underline}

/* Hero d'accueil */
.hero{padding-block:52px 36px;overflow:hidden}
.hero-grille{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:32px 48px;align-items:center}
.hero h1{font-size:clamp(2.1rem,4.6vw,3.2rem);max-width:19ch;margin-top:12px}
.surligne{position:relative;z-index:0;color:var(--sur-surligneur);white-space:nowrap;padding-inline:.08em}
.surligne::before{content:"";position:absolute;z-index:-1;left:-.12em;right:-.12em;top:.16em;bottom:.04em;background:var(--surligneur);border-radius:3px 6px 4px 7px;transform:rotate(-1.2deg);transform-origin:left center;animation:surligner .7s .25s cubic-bezier(.2,.7,.3,1) both}
@keyframes surligner{from{transform:rotate(-1.2deg) scaleX(0)}to{transform:rotate(-1.2deg) scaleX(1)}}
.hero .chapeau{font-size:19px;color:var(--encre-2);max-width:46ch;margin:20px 0 0}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.scene{width:100%;max-width:520px;justify-self:end;margin:0}
.scene svg{display:block;width:100%;height:auto}
.scene .axe{stroke:var(--encre-2);stroke-width:1.5;fill:none}
.scene .pointe{fill:var(--encre-2)}
.scene .guide{stroke:var(--encre-3);stroke-width:1.5;stroke-dasharray:3 6;fill:none}
.scene .trace{stroke:var(--cobalt);stroke-width:3;fill:none;stroke-linecap:round;stroke-dasharray:600;stroke-dashoffset:0;animation:tracer 1.6s .3s cubic-bezier(.4,0,.2,1) both}
@keyframes tracer{from{stroke-dashoffset:600}to{stroke-dashoffset:0}}
.scene .v0{stroke:var(--encre);stroke-width:2.5;fill:none;stroke-linecap:round}
.scene .v0-pointe{fill:var(--encre)}
.scene .angle{stroke:var(--encre-3);stroke-width:1.5;fill:none}
.scene .g{stroke:var(--attention);stroke-width:2.5;stroke-linecap:round;fill:none}
.scene .g-pointe{fill:var(--attention)}
.scene text{font-family:var(--font-mono);font-size:13px;fill:var(--encre-2)}
.scene text.eq{font-size:12.5px;fill:var(--encre-3)}
.scene text.g-txt{fill:var(--attention)}
.scene .mobile-point{fill:var(--cobalt);stroke:var(--feuille);stroke-width:2.5}
.scene .mobile-v{stroke:var(--encre);stroke-width:2.5;stroke-linecap:round}
.scene .mobile-v-pointe{fill:var(--encre)}
.scene figcaption{font-size:14.5px;color:var(--encre-3);margin-top:6px;max-width:52ch}

.chiffres{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--trait);border:1px solid var(--trait);border-radius:var(--rayon);overflow:hidden;margin-top:40px}
.chiffre{background:var(--feuille);padding:16px 18px}
.chiffre .n{display:block;font-family:var(--font-titre);font-weight:600;font-size:clamp(1.6rem,3vw,2.1rem);letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}
.chiffre .l{display:block;color:var(--encre-3);font-size:14.5px;margin-top:2px}

/* Recherche */
.trouver{background:var(--feuille);border-block:1px solid var(--trait);padding-block:26px;scroll-margin-top:80px}
.trouver-grille{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,2fr);gap:12px 32px;align-items:start}
.trouver label{font-family:var(--font-titre);font-weight:600;font-size:20px;letter-spacing:-.02em}
.trouver .aide{font-size:14.5px;color:var(--encre-3);margin:4px 0 0}
.trouver input{width:100%;font:inherit;font-size:17px;color:var(--encre);background:var(--papier);border:1.5px solid var(--trait);border-radius:4px;padding:13px 14px;transition:border-color .15s,background .15s}
.trouver input:focus{outline:none;border-color:var(--cobalt);background:var(--feuille)}
.resultats{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 16px}
.resultats a{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:4px;text-decoration:none;color:var(--encre);transition:background .12s}
.resultats a:hover,.resultats a:focus-visible{background:var(--cobalt-pale)}
.resultats .t{font-weight:600;min-width:0}
.resultats .ou{font-family:var(--font-mono);font-size:11.5px;color:var(--encre-3);white-space:nowrap;padding-top:3px}
.resultats .vide{padding:8px 10px;color:var(--encre-3)}

/* Sections */
section.bloc{padding-block:56px;border-top:1px solid var(--trait);scroll-margin-top:70px}
.sans-trait{border-top:0!important}
.bloc-tete{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 20px;margin-bottom:24px}
.bloc-tete h2{font-size:clamp(1.55rem,3vw,2rem)}
.bloc-tete p{margin:0;color:var(--encre-3)}

.niveaux{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.niveau{position:relative;background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:20px;display:flex;flex-direction:column;gap:12px;transition:transform .18s,box-shadow .18s,border-color .18s}
.niveau:hover{transform:translateY(-3px);box-shadow:0 14px 30px -18px var(--ombre);border-color:color-mix(in srgb,var(--cobalt) 40%,var(--trait))}
.niveau .classe{font-family:var(--font-mono);font-size:12px;color:var(--cobalt);letter-spacing:.06em}
.niveau h3{font-size:24px}
.niveau ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.niveau li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--trait);padding-bottom:6px}
.niveau li span:last-child{font-family:var(--font-mono);font-size:13px;color:var(--encre-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.niveau a.voir{margin-top:auto;font-weight:700;text-decoration:none}
.niveau a.voir::after{content:"";position:absolute;inset:0}
.niveau.bientot{background:transparent;border-style:dashed}
.niveau.bientot:hover{transform:none;box-shadow:none}
.niveau.bientot p{margin:0;color:var(--encre-2);font-size:15.5px}

.encart{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 40px;align-items:center;background:var(--cobalt-pale);border-radius:var(--rayon);padding:30px}
.encart h2{font-size:clamp(1.45rem,3vw,1.9rem);margin:6px 0 8px}
.encart p{margin:0;color:var(--encre-2);max-width:56ch}
.encart .mono{color:var(--cobalt)}
.encart .copies{display:flex;gap:6px;margin-top:16px;flex-wrap:wrap}
.encart .copie{font-family:var(--font-mono);font-size:12px;background:var(--feuille);border:1px solid var(--trait);border-radius:3px;padding:4px 8px;color:var(--encre-2)}

.sequence{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--trait);border-radius:var(--rayon);background:var(--feuille);overflow:hidden}
.sequence.sequence-prepa{grid-template-columns:repeat(8,minmax(0,1fr))}
.sequence li{position:relative;padding:18px 14px 16px;border-left:1px solid var(--trait);display:flex;flex-direction:column;gap:6px;min-width:0;transition:background .15s}
.sequence li::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--cobalt);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.sequence li:hover{background:var(--cobalt-pale)}
.sequence li:hover::before{transform:scaleX(1)}
.sequence li:first-child{border-left:0}
.sequence .num{font-family:var(--font-mono);font-size:12px;color:var(--cobalt)}
.sequence .nom{font-weight:700;line-height:1.25;font-size:15.5px;hyphens:auto;overflow-wrap:break-word}
.sequence .quoi{font-size:14px;color:var(--encre-3);line-height:1.4}
.legende{color:var(--encre-2);margin:14px 0 0;max-width:70ch}

/* Stage */
.stage{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px 48px}
.stage h2{font-size:clamp(1.55rem,3vw,2rem);margin:6px 0 14px}
.journee{margin:4px 0 22px}
.journee .barre{display:grid;grid-template-columns:4fr 1fr 4fr;border-radius:4px;overflow:hidden;border:1px solid var(--trait)}
.journee .seg{padding:10px 12px;font-weight:700;font-size:15px;min-width:0}
.journee .maths{background:var(--cobalt);color:var(--sur-cobalt)}
.journee .pause{background:repeating-linear-gradient(135deg,var(--feuille) 0 6px,var(--papier) 6px 12px);color:var(--encre-3);font-weight:600;font-size:13px;text-align:center;padding-inline:4px}
.journee .pc{background:var(--surligneur);color:var(--sur-surligneur)}
.journee .heures{display:grid;grid-template-columns:4fr 1fr 4fr;font-family:var(--font-mono);font-size:12px;color:var(--encre-3);margin-top:4px}
.journee .heures span:last-child{display:flex;justify-content:space-between}
.faits{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 18px;margin:0}
.faits dt{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--encre-3);padding-top:3px}
.faits dd{margin:0}

/* Formulaires courts « être prévenu » */
.prevenir{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:22px;align-self:start;box-shadow:0 18px 40px -30px var(--ombre)}
.prevenir h2,.prevenir h3{font-size:19px;margin-bottom:6px}
.prevenir p{color:var(--encre-2)}
.prevenir form{display:flex;flex-wrap:wrap;gap:8px}
.prevenir label{flex-basis:100%;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--encre-3)}
.prevenir input[type=email]{flex:1 1 200px;min-width:0;font:inherit;color:var(--encre);background:var(--papier);border:1.5px solid var(--trait);border-radius:4px;padding:11px 12px}
.retour{font-size:15px;color:var(--encre-2);margin:10px 0 0}
.retour.ok{color:var(--succes);font-weight:600}
.prevenir-niveau{max-width:560px;margin-top:28px}
.pot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}

.etiquettes{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0}
.etiquettes span{font-family:var(--font-mono);font-size:12.5px;background:var(--feuille);border:1px solid var(--trait);border-radius:3px;padding:4px 9px;color:var(--encre-2)}
.etiquettes strong{color:var(--encre);font-weight:500}

/* FAQ */
.faq{display:grid;gap:10px;max-width:820px}
.faq details{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:0 18px}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center;padding:16px 0;font-weight:700;font-size:17px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--font-mono);font-size:22px;font-weight:400;color:var(--cobalt);transition:transform .2s;flex:none}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--encre-2);max-width:68ch;margin-bottom:16px}

.appel{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;background:var(--nuit);color:var(--sur-nuit);border-radius:var(--rayon);padding:30px}
.appel h2{font-size:clamp(1.4rem,3vw,1.8rem);color:var(--sur-nuit)}
.appel p{margin:6px 0 0;color:color-mix(in srgb,var(--sur-nuit) 75%,transparent)}
.appel .bouton{background:var(--surligneur);color:var(--sur-surligneur)}
.appel .bouton:hover{box-shadow:0 6px 18px -8px var(--surligneur)}

/* En-têtes de pages intérieures */
.page-tete{padding-block:22px 30px}
.page-tete h1{font-size:clamp(2rem,5vw,3rem);margin:10px 0 12px}
.page-tete .chapeau{font-size:18.5px;color:var(--encre-2);max-width:60ch;margin:0}

/* Page niveau */
.matieres{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.matiere{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:22px 24px;min-width:0}
.matiere h2{font-size:22px;margin-bottom:4px}
.matiere .compte{font-family:var(--font-mono);font-size:12px;color:var(--encre-3);margin:0 0 12px}
.chapitres{list-style:none;margin:0;padding:0}
.chapitres li{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 0;border-top:1px solid var(--trait);scroll-margin-top:90px}
.chapitres li:first-child{border-top:0}
.chapitres li:target{background:var(--cobalt-pale);margin-inline:-10px;padding-inline:10px;border-radius:4px}
.chapitres .no{font-family:var(--font-mono);font-size:12.5px;color:var(--cobalt)}
.chapitres a{font-weight:600;text-decoration:none}
.chapitres a:hover{text-decoration:underline}
.puce{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;padding:1px 6px;border-radius:3px;border:1px solid var(--trait);color:var(--encre-2);white-space:nowrap}
.puce.libre{border-color:color-mix(in srgb,var(--cobalt) 45%,transparent);color:var(--cobalt)}
.puce.en-ligne{background:var(--cobalt);border-color:var(--cobalt);color:var(--sur-cobalt)}
.puce.bientot{color:var(--encre-3);border-style:dashed}

/* Page chapitre */
.chap-meta{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--encre-3);font-size:15px}
.chap-grille{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:36px;align-items:start;padding-bottom:40px}
article.cours{overflow-wrap:break-word;background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:34px clamp(18px,4vw,44px);min-width:0}
article.cours h2{font-size:24px;margin:38px 0 14px;scroll-margin-top:90px;overflow-wrap:break-word}
article.cours h2 .n{margin-right:12px;font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--cobalt);letter-spacing:0}
article.cours p,article.cours li{max-width:68ch}
article.cours ol,article.cours ul{padding-left:1.3em}
article.cours li{margin-bottom:6px}
article.cours h3{font-size:18px;margin:26px 0 10px}
article.cours p{margin:0 0 12px}
article.cours > p:first-child{margin-top:0}
.amorce{font-weight:700;color:var(--cobalt)}
.amorce.metho{color:var(--succes)}
.amorce.nota,.amorce.rmq{color:var(--encre-3)}
.boite{--b:var(--cobalt);--bg:var(--cobalt-pale);border-left:4px solid var(--b);background:var(--bg);padding:12px 18px 4px;margin:18px 0;border-radius:0 6px 6px 0;min-width:0}
.boite-tete{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-bottom:8px}
.boite .etiquette{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--b);font-weight:500}
.boite .titre-boite{font-weight:700}
.boite ul,.boite ol{margin:4px 0 10px}
.boite.savoirfaire,.boite.methode{--b:var(--succes);--bg:color-mix(in srgb,var(--succes) 9%,var(--feuille))}
.boite.pieges,.boite.attention{--b:var(--attention);--bg:var(--attention-pale)}
.boite.exemple,.boite.objectifs,.boite.consignes{--b:var(--encre-2);--bg:transparent;border:1px solid var(--trait);border-left:4px solid var(--encre-3)}
.katex.ml{display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;vertical-align:middle;padding:1px 0}
.formule{overflow-x:auto;overflow-y:hidden;margin:12px 0;padding:2px 0;text-align:center}
.formule math{display:block}
.fig{margin:16px auto;text-align:center;background:#fff;border:1px solid var(--trait);border-radius:6px;padding:10px;overflow-x:auto;width:fit-content;max-width:100%}
.fig svg,.fig img{max-width:100%;height:auto;display:block;margin:0 auto}
.fig-ligne{display:inline-block;vertical-align:middle;background:#fff;border-radius:3px;padding:2px}
.fig-ligne svg{display:block;max-height:4em;width:auto}
.cote-a-cote{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-start;margin:12px 0}
.mini{flex:1 1 calc(var(--l,48%) - 20px);min-width:min(260px,100%)}
.mini > :first-child{margin-top:0}
.centre{text-align:center}
.centre .fig{margin-left:auto;margin-right:auto}
.centre ul,.centre ol{text-align:left;display:inline-block}
.multicols{columns:2 260px;column-gap:28px}
.multicols li{break-inside:avoid}
.tableau{overflow-x:auto;margin:14px 0}
.tableau table{border-collapse:collapse;font-size:15.5px;margin:0 auto}
.tableau td,.tableau th{border:1px solid var(--trait);padding:6px 10px;text-align:left;vertical-align:top}
.tableau th{background:var(--cobalt-pale);font-weight:700}
pre.code{background:var(--papier);border:1px solid var(--trait);border-radius:6px;padding:12px 14px;overflow-x:auto;font-size:14px;line-height:1.5}
.remarque{color:var(--encre-2);margin:12px 0}
.renvoi-figure{display:block;font-size:15px;color:var(--encre-3);border:1px dashed var(--trait);border-radius:6px;padding:8px 12px;margin:12px 0;background:var(--feuille)}
.etiq-item{font-weight:700}
.souligne{text-decoration:underline}
.cadre{border:1px solid currentColor;padding:0 4px;border-radius:3px}
.note{color:var(--encre-3)}
.conf{white-space:nowrap}
.docs-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.doc-carte{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:16px 18px;display:grid;gap:8px;align-content:start;min-width:0}
.doc-tete{display:flex;align-items:baseline;gap:10px}
.doc-tete h3{font-size:18px;flex:1}
.doc-num{font-family:var(--font-mono);font-size:12.5px;color:var(--cobalt)}
.doc-sous{margin:0;color:var(--encre-2);font-size:15.5px}
.doc-infos{margin:0;display:flex;flex-wrap:wrap;gap:6px}
.doc-infos span{font-size:13px;border:1px solid var(--trait);border-radius:3px;padding:1px 7px;color:var(--encre-2)}
.exos{margin:4px 0 0;padding-left:1.4em;display:grid;gap:4px;font-size:15.5px}
.exos li{padding-left:2px}
.exos .t{margin-right:8px}
.exos .pts{font-family:var(--font-mono);font-size:12px;color:var(--encre-3);margin-right:8px}
aside.colonne{position:sticky;top:84px;display:grid;gap:18px;min-width:0}
.panneau{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:16px 18px}
.panneau h2{font-size:15px;font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--encre-3);margin-bottom:10px}
.sommaire{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.sommaire a{text-decoration:none;color:var(--encre-2);font-size:15.5px}
.sommaire a:hover{color:var(--cobalt)}
.docs{list-style:none;margin:0;padding:0}
.docs li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:4px 10px;align-items:start;padding:10px 0;border-top:1px solid var(--trait)}
.docs li:first-child{border-top:0;padding-top:2px}
.docs .i{font-family:var(--font-mono);font-size:12.5px;color:var(--cobalt);padding-top:2px}
.docs .nom{font-weight:600;line-height:1.3;font-size:15.5px}
.docs .detail{grid-column:2/4;display:flex;flex-wrap:wrap;gap:6px}
.pdf{font-family:var(--font-mono);font-size:11.5px;font-weight:500;color:var(--cobalt);border:1px solid var(--cobalt);border-radius:3px;padding:2px 7px;text-decoration:none;white-space:nowrap}
.pdf:hover{background:var(--cobalt-pale)}
.suite{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:28px;padding-top:18px;border-top:1px solid var(--trait)}
.suite a{font-weight:600;text-decoration:none}
.chap-liste{columns:2 280px;column-gap:28px;margin:0;padding-left:1.6em}
.chap-liste li{break-inside:avoid;margin-bottom:5px;color:var(--encre-2)}
.chap-liste li.ici{color:var(--encre);font-weight:700}
.chap-liste li::marker{font-family:var(--font-mono);font-size:12px;color:var(--encre-3)}
math{font-family:"Cambria Math","STIX Two Math","Latin Modern Math",math;font-size:1.08em}
.katex-display{display:block;margin:10px 0;overflow-x:auto;overflow-y:hidden;text-align:center}

/* Contact */
.contact-grille{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:28px 40px;align-items:start;padding-block:8px 56px}
.formulaire-contact{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:28px clamp(18px,3vw,32px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;box-shadow:0 22px 48px -36px var(--ombre)}
.champ{display:grid;gap:6px;min-width:0}
.champ.large{grid-column:1/-1}
.champ label{font-weight:700;font-size:15.5px}
.facultatif{font-weight:400;color:var(--encre-3);font-size:14px}
.champ input,.champ select,.champ textarea{width:100%;font:inherit;font-size:16.5px;color:var(--encre);background:var(--papier);border:1.5px solid var(--trait);border-radius:4px;padding:11px 12px;transition:border-color .15s,background .15s}
.champ textarea{min-height:150px;resize:vertical}
.champ input:focus,.champ select:focus,.champ textarea:focus{outline:none;border-color:var(--cobalt);background:var(--feuille)}
.champ[data-erreur] input,.champ[data-erreur] textarea{border-color:var(--attention)}
.erreur{font-size:14px;color:var(--attention);margin:0}
.profils{border:0;margin:0;padding:0;display:grid;gap:8px;grid-column:1/-1;min-width:0}
.profils legend{font-weight:700;font-size:15.5px;padding:0;margin-bottom:8px}
.profils .options{display:flex;flex-wrap:wrap;gap:8px}
.profils input{position:absolute;opacity:0;width:1px;height:1px}
.profils label{font-weight:600;font-size:15px;border:1.5px solid var(--trait);border-radius:999px;padding:7px 14px;cursor:pointer;background:var(--papier);transition:all .15s}
.profils input:checked + label{background:var(--cobalt);border-color:var(--cobalt);color:var(--sur-cobalt)}
.profils input:focus-visible + label{outline:2px solid var(--cobalt);outline-offset:2px}
.consentement{grid-column:1/-1;display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--encre-2)}
.consentement input{margin-top:4px;width:18px;height:18px;flex:none;accent-color:var(--cobalt)}
.envoi{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center}
.envoi small{color:var(--encre-3);font-size:14px}
.confirmation{grid-column:1/-1;border-left:3px solid var(--succes);background:color-mix(in srgb,var(--succes) 12%,var(--feuille));padding:12px 16px;border-radius:0 4px 4px 0;margin:0}
.confirmation.ko{border-left-color:var(--attention);background:var(--attention-pale)}
.coordonnees{display:grid;gap:16px}
.carte-info{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:18px 20px}
.carte-info h2{font-size:17px;margin-bottom:8px}
.carte-info p{margin:0;color:var(--encre-2)}
.carte-info .valeur{font-family:var(--font-mono);font-size:14.5px;color:var(--encre);user-select:all;word-break:break-all}
.copier{font:inherit;font-size:13.5px;font-weight:600;color:var(--cobalt);background:none;border:0;padding:0;margin-top:6px;cursor:pointer}
.delai{display:flex;align-items:center;gap:10px;font-weight:600}
.delai::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--succes);box-shadow:0 0 0 4px color-mix(in srgb,var(--succes) 25%,transparent);flex:none}

/* Pages légales */
.texte-legal{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:32px clamp(18px,4vw,44px);max-width:820px;margin-bottom:56px}
.texte-legal h2{font-size:21px;margin:28px 0 10px}
.texte-legal h2:first-child{margin-top:0}
.texte-legal p,.texte-legal li{color:var(--encre-2);max-width:70ch}
.a-completer{font-family:var(--font-mono);font-size:13px;color:var(--attention);border:1px dashed var(--attention);border-radius:3px;padding:1px 6px}

/* Pied de page */
footer.site{background:var(--feuille);border-top:1px solid var(--trait);margin-top:24px}
footer.site .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 32px;padding-block:28px;font-size:15px;color:var(--encre-3)}
footer.site nav{display:flex;flex-wrap:wrap;gap:6px 20px}
footer.site a{color:var(--encre-2);text-decoration:none}
footer.site a:hover{color:var(--cobalt)}
footer.site .adresse{font-family:var(--font-mono);font-size:13.5px;user-select:all}

/* Page 404 */
.page-404{padding-block:80px;text-align:left}
.page-404 h1{font-size:clamp(2rem,6vw,3.4rem);margin:10px 0 14px}

/* Apparition au défilement : contenu visible par défaut */
/* Stages : cartes, programme jour par jour, étapes, tarifs, accès */
.niveaux.deux{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.niveau p{margin:0;color:var(--encre-2);font-size:15.5px}
.niveau .puce{align-self:flex-start}
.programme-niveau+.programme-niveau{margin-top:40px}
.programme-niveau h3{font-size:22px;margin-bottom:14px;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}
.programme-niveau h3 a{font-family:var(--font-texte);font-size:15.5px;font-weight:700;letter-spacing:0;text-decoration:none}
.jours{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.jour{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:14px;display:grid;gap:10px;align-content:start}
.jour-n{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--encre-3)}
.creneau{border-left:3px solid var(--cobalt);padding-left:10px}
.creneau.pc{border-left-color:var(--surligneur)}
.creneau .h .t{white-space:nowrap}
.creneau .h{display:block;font-family:var(--font-mono);font-size:11.5px;color:var(--encre-3);margin-bottom:2px}
.creneau ul{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:15.5px;line-height:1.35}
.creneau a{text-decoration:none;color:var(--encre)}
.creneau a:hover{color:var(--cobalt);text-decoration:underline}
.inscription-grille{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:28px 48px;align-items:start}
.inscription-grille h2{font-size:clamp(1.55rem,3vw,2rem);margin:0 0 18px}
.etapes,.atouts{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.atouts{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.etapes li,.atout{position:relative;background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:16px 18px 16px 62px}
.atout{padding:20px}
.etapes .num,.atout .num{position:absolute;left:16px;top:16px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--cobalt-pale);color:var(--cobalt);font-family:var(--font-titre);font-weight:600}
.atout .num{position:static;margin-bottom:12px}
.etapes h3,.atout h3{font-size:18px;margin-bottom:4px}
.etapes p,.atout p{margin:0;color:var(--encre-2);font-size:15.5px}
.tarifs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-self:start}
.tarif{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:18px;display:grid;gap:8px}
.tarif .classe{font-family:var(--font-mono);font-size:12px;color:var(--cobalt);letter-spacing:.06em}
.tarif .prix{font-family:var(--font-titre);font-weight:600;font-size:34px;letter-spacing:-.03em;line-height:1;margin:0}
.tarif ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:15px}
.tarif li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--trait);padding-bottom:6px}
.tarif li span:last-child{font-family:var(--font-mono);font-size:13px;color:var(--encre-3);white-space:nowrap}
.inclus{grid-column:1/-1;margin:0;padding:14px 18px 14px 36px;background:var(--cobalt-pale);border-radius:var(--rayon);display:grid;gap:4px;font-size:15.5px}
.acces{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.acces>div{background:var(--feuille);border:1px solid var(--trait);border-radius:var(--rayon);padding:18px}
.acces h3{font-size:17px;margin-bottom:8px}
.acces p,.acces ul{margin:0 0 8px;color:var(--encre-2)}
.acces ul{padding-left:18px}
.carte-stage h2{font-size:22px;margin-top:10px}
.liens-niveaux{list-style:none;margin:12px 0 16px;padding:0;display:grid;gap:8px}
.liens-niveaux a{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--trait);border-radius:4px;text-decoration:none;color:var(--encre);transition:border-color .15s,background .15s}
.liens-niveaux a:hover{border-color:var(--cobalt);background:var(--cobalt-pale);color:var(--encre)}
.liens-niveaux span{font-size:14.5px;color:var(--encre-2)}
.panneau-texte{margin:0 0 10px;font-size:15.5px;color:var(--encre-2)}
.diff{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cobalt);box-shadow:10px 0 0 var(--trait),20px 0 0 var(--trait);margin:0 26px 0 2px;vertical-align:middle}
.diff[data-n="2"]{box-shadow:10px 0 0 var(--cobalt),20px 0 0 var(--trait)}
.diff[data-n="3"]{box-shadow:10px 0 0 var(--cobalt),20px 0 0 var(--cobalt)}
.visuellement-cache{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
footer.site small{font-size:13.5px;color:var(--encre-3)}
@media (max-width:980px){
  .jours{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
  .inscription-grille,.atouts,.acces{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:560px){
  .tarifs{grid-template-columns:minmax(0,1fr)}
}

@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .revele{animation:monter linear;animation-timeline:view();animation-range:entry 0% entry 70%}
    @keyframes monter{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
  }
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .surligne::before,.scene .trace{animation:none}
  *{transition:none!important}
}

@media (max-width:980px){
  .hero-grille,.stage,.contact-grille{grid-template-columns:minmax(0,1fr)}
  .scene{justify-self:start}
  .niveaux,.chiffres{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trouver-grille{grid-template-columns:minmax(0,1fr)}
  .sequence,.sequence.sequence-prepa{grid-template-columns:repeat(4,minmax(0,1fr))}
  .sequence li:nth-child(5){border-left:0}
  .sequence li:nth-child(n+5){border-top:1px solid var(--trait)}
  .chap-grille{grid-template-columns:minmax(0,1fr)}
  aside.colonne{position:static}
  header.site{position:static}
}
@media (max-width:700px){
  .matieres{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:560px){
  body{font-size:16.5px}
  .hero{padding-block:34px 26px}
  .niveaux,.resultats{grid-template-columns:minmax(0,1fr)}
  .sequence,.sequence.sequence-prepa{grid-template-columns:minmax(0,1fr)}
  .sequence li{border-left:0;border-top:1px solid var(--trait)}
  .sequence li:first-child{border-top:0}
  .encart{grid-template-columns:minmax(0,1fr);padding:22px}
  .situations{grid-template-columns:minmax(0,1fr)}
  nav.principale{margin-left:0}
  .formulaire-contact{grid-template-columns:minmax(0,1fr)}
  .appel{padding:22px}
}
