/* Polices auto-hébergées (SIL Open Font License, voir fonts/OFL-*.txt) : aucune requête vers un tiers. */
@font-face{font-family:"Archivo";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/archivo-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/archivo-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/archivo-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/source-serif-4-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/source-serif-4-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/source-serif-4-latin-400-italic.woff2) format("woff2")}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
img{max-width:100%}
[hidden]:not([hidden=until-found i]){display:none!important}
:root{
  --paper:#FAF8F4; --surface:#FFFFFF; --raise:#FFFFFF;
  --ink:#15202B; --ink2:#5B6672; --ink3:#7D8995;
  --line:#E3DED5; --line2:#EEEAE3;
  --accent:#12395F; --accent-soft:#E8F1FA;
  --cta:#F2A93B; --cta-fg:#0B2A4A; --cta-soft:#FDF3E1;
  --ok:#1E7B4F; --ok-soft:#E3F2EA;
  --no:#B3261E; --no-soft:#FDECEA;
  --piege:#8A5A0B; --piege-soft:#FDF3E1;
  --shadow:0 1px 2px rgba(11,42,74,.05),0 8px 24px rgba(11,42,74,.08);
  --btn-fg:#FFFFFF;
  --ui:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#0E1722; --surface:#16222F; --raise:#1B2C40;
  --ink:#EAF0F6; --ink2:#A5B2C0; --ink3:#7F8FA1;
  --line:#2A3A4C; --line2:#223142;
  --accent:#8DB8E6; --accent-soft:#1B2C40;
  --cta:#F2A93B; --cta-fg:#07182B; --cta-soft:#33281A;
  --ok:#5CC796; --ok-soft:#173326;
  --no:#FF8A80; --no-soft:#3A1C1C;
  --piege:#E3B062; --piege-soft:#33281A;
  --btn-fg:#07182B;
  --shadow:0 8px 24px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  --paper:#0E1722; --surface:#16222F; --raise:#1B2C40;
  --ink:#EAF0F6; --ink2:#A5B2C0; --ink3:#7F8FA1;
  --line:#2A3A4C; --line2:#223142;
  --accent:#8DB8E6; --accent-soft:#1B2C40;
  --cta:#F2A93B; --cta-fg:#07182B; --cta-soft:#33281A;
  --ok:#5CC796; --ok-soft:#173326;
  --no:#FF8A80; --no-soft:#3A1C1C;
  --piege:#E3B062; --piege-soft:#33281A;
  --btn-fg:#07182B;
  --shadow:0 8px 24px rgba(0,0,0,.3);
}
*{box-sizing:border-box}
body{background:var(--paper);color:var(--ink);font-family:var(--ui);margin:0;
  -webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- chrome ---- */
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:var(--paper);
  border-bottom:1px solid var(--line);}
.bar-in{max-width:780px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:12px;min-height:52px}
.brand{font-weight:700;letter-spacing:-.01em;font-size:15px;display:flex;align-items:center;gap:8px}
.brand i{width:9px;height:9px;background:var(--accent);border-radius:2px;display:block;flex:none}
.bar .sp{flex:1}
.ghost{font-size:13px;font-weight:600;color:var(--ink2);padding:6px 10px;border-radius:6px}
.ghost:hover{background:var(--line2);color:var(--ink)}
.wrap{max-width:780px;margin:0 auto;padding-inline:16px;padding-block:24px 64px}

/* ---- type ---- */
h1{font-size:26px;line-height:1.2;letter-spacing:-.02em;margin:0 0 6px;text-wrap:balance;font-weight:700}
h2{font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);margin:0 0 12px}
.lede{font-family:var(--serif);font-size:16px;color:var(--ink2);margin:0 0 26px;max-width:62ch;line-height:1.6}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}

/* ---- module cards ---- */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (max-width:620px){.grid{grid-template-columns:1fr}}
.mod{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;
  display:flex;flex-direction:column;gap:12px;text-align:left;width:100%}
.mod:hover{border-color:var(--accent)}
.mod h3{margin:0;font-size:18px;font-weight:700;letter-spacing:-.01em}
.mod .fmt{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.04em}
.mod .sub{font-family:var(--serif);font-size:14px;color:var(--ink2);line-height:1.45;flex:1}
.meter{display:flex;height:6px;border-radius:3px;overflow:hidden;background:var(--line2);gap:1px}
.meter span{display:block;height:100%}
.m-ok{background:var(--ok)} .m-mid{background:var(--accent);opacity:.30} .m-none{background:transparent}
.hint{font-size:12.5px;line-height:1.55;color:var(--ink3);margin:0 0 24px}
.stat{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--ink3)}
.stat b{color:var(--ink2);font-weight:500}

/* ---- due strip ---- */
.due{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--accent-soft);
  border:1px solid var(--accent);border-radius:10px;padding:14px 16px;margin-bottom:22px}
.due p{margin:0;font-family:var(--serif);font-size:15px;flex:1;min-width:200px}
.due b{font-family:var(--ui);font-weight:700}

/* ---- buttons ---- */
.btn{background:var(--accent);color:var(--btn-fg);border-radius:7px;padding:10px 16px;font-size:14px;
  font-weight:600;display:inline-flex;align-items:center;gap:8px;justify-content:center}
.btn:hover{filter:brightness(1.08)}
.btn.cta{background:var(--cta);color:var(--cta-fg);font-weight:700}
.btn.sec{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
.btn.sec:hover{border-color:var(--accent);filter:none}
.btn.wide{width:100%}
.btn:disabled{opacity:.45;cursor:default}
.modes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px}

/* ---- question ---- */
.rail{display:flex;gap:2px;margin-bottom:20px}
.rail span{flex:1;height:3px;background:var(--line2);border-radius:2px}
.rail span.done{background:var(--accent)}
.rail span.now{background:var(--ink2)}
.qmeta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 7px;border-radius:4px;background:var(--line2);color:var(--ink2)}
.tag.acc{background:var(--accent-soft);color:var(--accent)}
.tag.pg{background:var(--piege-soft);color:var(--piege)}
.due.plan .pl{border-top:1px solid var(--line2);padding:8px 0;font-size:13.5px;line-height:1.5}.due.plan .pl.ok b{color:var(--accent)}.pl .y{color:var(--accent);font-weight:600}.pl .m{color:var(--piege);font-weight:600}.pl .n{color:var(--no);font-weight:600}.pf{display:flex;gap:12px;flex-wrap:wrap;margin:6px 0}.pf label{font-size:13px;display:flex;flex-direction:column;gap:4px}.pf input{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}.pk{font-size:14px;display:flex;gap:8px;align-items:center;margin:6px 0}
.srch{display:flex;gap:8px;margin:14px 0 22px}.srch input{flex:1;min-width:0;font:inherit;font-size:15px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}.srch .btn{flex:none}.snip{font-size:13px;color:var(--ink2);margin-top:4px}.phases{margin:6px 0 14px}.ph{border-left:3px solid var(--line2);padding:4px 10px;margin:4px 0;font-size:13px;color:var(--ink2)}.ph b{display:block;font-size:13px}.ph.now{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.ph.done{opacity:.55}table.bil{border-collapse:collapse;width:100%;font-size:13px}table.bil th,table.bil td{border-bottom:1px solid var(--line2);padding:7px 6px;text-align:left}table.bil tr[data-bt]{cursor:pointer}table.bil td.y{color:var(--accent);font-weight:600}table.bil td.m{color:var(--piege);font-weight:600}table.bil td.n{color:var(--no);font-weight:600}details.old{margin-top:24px}
.lclink{width:100%;margin:10px 0 4px;text-align:left}.rv .lclink{margin-top:8px;font-size:13px}
.lbox{border:1px solid var(--line2);border-radius:10px;padding:12px 14px;margin:0 0 16px;font-family:var(--ui);font-size:15px;line-height:1.55}.lbox h3{margin:0 0 6px;font-size:13px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.lbox ul{margin:0;padding-left:20px}.lbox li{margin:3px 0}.lbox.ret{background:var(--accent-soft);border-color:transparent}.lbox.pg h3{color:var(--no)}.lbox.cas .sol{margin-top:10px}.lbox p{margin:0 0 8px}.case.lu h3::after{content:" ✓";color:var(--accent)}
.cours{font-family:var(--serif);font-size:16.5px;line-height:1.65}.cours p{margin:0 0 12px}.cours .ch{font-family:var(--ui);margin:26px 0 10px;line-height:1.3}.cours h2.ch{font-size:22px}.cours h3.ch{font-size:18px}.cours h4.ch,.cours h5.ch{font-size:16px}.cours ul,.cours ol{padding-left:22px;margin:0 0 12px}.cours li{margin:3px 0}.cours blockquote{border-left:3px solid var(--accent);margin:0 0 12px;padding:4px 12px;color:var(--ink2)}.cours code{font-family:var(--mono);font-size:.9em}.tw{overflow-x:auto;margin:0 0 14px}.cours table{border-collapse:collapse;font-size:14px;font-family:var(--ui);min-width:100%}.cours th,.cours td{border:1px solid var(--line2);padding:6px 8px;vertical-align:top;text-align:left}.cours th{background:var(--surface)}.toc{margin:0 0 18px;border:1px solid var(--line2);border-radius:8px;padding:8px 12px}.toc summary{cursor:pointer;font-weight:600}.toc a{display:block;padding:4px 0;color:var(--ink2);text-decoration:none;font-size:14px}
.tag.nw{background:var(--ok-soft,var(--accent-soft));color:var(--ok,var(--accent))}
.steps{margin:6px 0 0;padding-left:22px}.steps li{margin:3px 0}.steps-h{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.fc .v .src,.aa .src{display:block;margin-top:8px;font-family:var(--mono);font-size:11px;color:var(--ink3)}
.verdict small{font-weight:400;opacity:.75}
.q{font-family:var(--serif);font-size:20px;line-height:1.45;margin:0 0 20px;text-wrap:pretty}
.opts{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.opt{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;
  background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:13px 15px;
  font-family:var(--serif);font-size:16px;line-height:1.4}
.opt:hover:not(:disabled){border-color:var(--accent)}
.opt .k{font-family:var(--mono);font-size:12px;color:var(--ink3);padding-top:3px;flex:none;width:14px}
.opt.good{border-color:var(--ok);background:var(--ok-soft)}
.opt.good .k{color:var(--ok)}
.opt.bad{border-color:var(--no);background:var(--no-soft)}
.opt.bad .k{color:var(--no)}
.opt:disabled{cursor:default}
.opt.on{border-color:var(--accent);background:var(--accent-soft)}
.opt.on .k{color:var(--accent)}
.opt.miss{border-color:var(--ok);border-style:dashed}
.opt .k.bx{width:16px;height:16px;border:1.5px solid var(--line);border-radius:4px;padding:0;margin-top:3px;text-align:center;line-height:13px;font-size:11px}
.opt.on .k.bx,.opt.good .k.bx{background:var(--accent);border-color:var(--accent);color:var(--btn-fg)}
.opt.good .k.bx{background:var(--ok);border-color:var(--ok)}
.opt.bad .k.bx{background:var(--no);border-color:var(--no);color:var(--btn-fg)}
.mi{padding:10px 12px;border:1px solid var(--line2);border-radius:10px;margin-bottom:8px;background:var(--surface)}
.mi .ms{font-size:14.5px;line-height:1.45;margin-bottom:8px}
.mi .mc{display:flex;flex-wrap:wrap;gap:6px}
.mi .chip{padding:5px 10px;font-size:12.5px;margin:0}
.mi .chip.on{background:var(--accent);border-color:var(--accent);color:var(--btn-fg)}
.mi .chip.good{background:var(--ok);border-color:var(--ok);color:var(--btn-fg)}
.mi .chip.bad{background:var(--no);border-color:var(--no);color:var(--btn-fg)}
.mi .chip.miss{border-color:var(--ok);border-style:dashed;color:var(--ok)}
.mi .chip:disabled{cursor:default}
.hint-opt{font-size:12px;color:var(--ink3);margin:-8px 0 10px}
.numrow{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.numrow input{flex:1;min-width:140px;font-family:var(--mono);font-size:18px;padding:12px 14px;
  border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);
  font-variant-numeric:tabular-nums}
.verdict{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;margin-bottom:10px}
.verdict.y{color:var(--ok)} .verdict.n{color:var(--no)}
.expl{border-left:3px solid var(--accent);background:var(--surface);border-radius:0 8px 8px 0;
  padding:14px 16px;font-family:var(--serif);font-size:15.5px;line-height:1.6;margin-bottom:12px}
.expl .src{display:block;margin-top:8px;font-family:var(--mono);font-size:11px;color:var(--ink3);font-style:normal}
.trap{border-left:3px solid var(--piege);background:var(--piege-soft);border-radius:0 8px 8px 0;
  padding:14px 16px;font-family:var(--serif);font-size:15.5px;line-height:1.6;margin-bottom:12px}
.trap b{font-family:var(--ui);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--piege);display:block;margin-bottom:4px}

/* ---- flashcard ---- */
.fc{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:32px 24px;
  min-height:220px;display:flex;flex-direction:column;justify-content:center;gap:16px;text-align:center;
  box-shadow:var(--shadow);margin-bottom:16px}
.fc .r{font-family:var(--ui);font-size:20px;font-weight:700;line-height:1.3;text-wrap:balance}
.fc .v{font-family:var(--serif);font-size:16.5px;line-height:1.6;color:var(--ink2);
  border-top:1px solid var(--line2);padding-top:16px;text-wrap:pretty}

/* ---- exam ---- */
.clock{font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums;
  padding:5px 10px;border-radius:6px;background:var(--surface);border:1px solid var(--line)}
.clock.warn{color:var(--no);border-color:var(--no)}
.score{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.score .n{font-family:var(--mono);font-size:44px;font-weight:500;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;line-height:1}
.score .n.y{color:var(--ok)} .score .n.n{color:var(--no)}
.review{border-top:1px solid var(--line2);padding-top:16px;margin-top:8px}
.rv{border-bottom:1px solid var(--line2);padding:14px 0}
.rv .qq{font-family:var(--serif);font-size:16px;line-height:1.45;margin:6px 0 8px}
.rv .aa{font-family:var(--serif);font-size:14.5px;line-height:1.55;color:var(--ink2)}
.rv .aa em{font-style:normal;color:var(--ok);font-weight:600}
.rv .aa s{color:var(--no);text-decoration-thickness:1px}

/* ---- oral ---- */
.case{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;
  text-align:left;width:100%;display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.case:hover{border-color:var(--accent)}
.case h3{margin:0;font-size:17px;font-weight:700}
.case p{margin:0;font-family:var(--serif);font-size:14.5px;color:var(--ink2);line-height:1.45}
.grp{margin-bottom:20px}
.grp h4{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line2)}
.chk{display:flex;gap:11px;align-items:flex-start;padding:8px 0;font-family:var(--serif);
  font-size:15.5px;line-height:1.5;text-align:left;width:100%}
.chk .bx{width:17px;height:17px;border:1.5px solid var(--line);border-radius:4px;flex:none;margin-top:3px;
  display:flex;align-items:center;justify-content:center;font-size:11px;color:transparent}
.chk.on .bx{background:var(--ok);border-color:var(--ok);color:var(--btn-fg)}
.chk.on span:last-child{color:var(--ink2)}
.ctx{font-family:var(--serif);font-size:15.5px;line-height:1.6;color:var(--ink2);
  background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:22px}
.dt{width:100%;border-collapse:collapse;font-size:14px}
.dt th,.dt td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
.dt th{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink2);font-weight:500;white-space:nowrap}
.dt th:first-child,.dt td:first-child{width:40%}
.dt th+th,.dt td+td{width:30%}
.dt td:first-child{color:var(--ink2);font-family:var(--serif)}
.dt td+td{font-family:var(--mono);font-size:12.5px;font-variant-numeric:tabular-nums;
  white-space:normal;overflow-wrap:anywhere}
.jt th,.jt td{width:auto!important;white-space:nowrap}
.jt td:first-child{white-space:normal;min-width:120px}
.dt tr.sep td{color:var(--accent);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;padding-top:16px}

.foot{margin-top:40px;padding-top:18px;border-top:1px solid var(--line2);
  font-family:var(--mono);font-size:11px;color:var(--ink3);line-height:1.7}
.sync{display:inline-flex;align-items:center;gap:6px}
.sync i{width:6px;height:6px;border-radius:50%;background:var(--ink3);display:block}
.sync.on i{background:var(--ok)}
.empty{font-family:var(--serif);font-size:16px;color:var(--ink2);padding:28px 0}
.sel{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:22px}
.chip{font-size:13px;font-weight:600;padding:7px 12px;border-radius:20px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink2)}
.chip:hover{border-color:var(--accent);color:var(--ink)}
.chip b{font-family:var(--mono);font-weight:400;font-size:11px;color:var(--ink3);margin-left:5px}

/* ---- v2 : comptes, achats, administration ---- */
.bar-in{flex-wrap:wrap}
.brand{color:inherit;text-decoration:none}
.form{display:flex;flex-direction:column;gap:14px;max-width:440px;margin:0 0 24px}
.form label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:var(--ink2)}
.form input[type=email],.form input[type=password],.form input[type=text],.form input[type=number],.form input[type=date],.form select,.inp{font:inherit;font-size:16px;font-weight:400;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
.form .row{display:flex;gap:10px;flex-wrap:wrap}
.chkline{display:flex!important;flex-direction:row!important;gap:10px;align-items:flex-start;font-weight:400!important;color:var(--ink)!important;font-size:14.5px!important;line-height:1.45}
.chkline input{width:18px;height:18px;margin-top:2px;flex:none;accent-color:var(--accent)}
.msg{border-radius:8px;padding:11px 14px;font-size:14.5px;line-height:1.5;margin:0 0 16px}
.msg.err{background:var(--no-soft);color:var(--no);border:1px solid var(--no)}
.msg.ok{background:var(--ok-soft);color:var(--ok);border:1px solid var(--ok)}
.msg.info{background:var(--accent-soft);color:var(--ink);border:1px solid var(--accent)}
.links{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px;margin:6px 0 20px}
a{color:var(--accent)}
.links a,.links button{color:var(--accent);text-decoration:underline;padding:0;font-size:14px}
.qr{background:#fff;padding:10px;border-radius:8px;display:inline-block;margin:0 0 12px}
.qr img{display:block;width:200px;height:200px}
.secret,.codes{font-family:var(--mono);font-size:14px;word-break:break-all;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:0 0 14px}
.codes{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 18px;font-size:15px}
.lock{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 10px 10px 0;padding:14px 16px;margin:0 0 22px;font-size:15px;line-height:1.55}
.lock p{margin:0 0 10px}.lock p:last-child{margin:0}
.badge{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:4px;background:var(--line2);color:var(--ink2);align-self:flex-start}
.badge.full{background:var(--ok-soft);color:var(--ok)}
.prod{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin:0 0 10px;cursor:pointer}
.prod.on{border-color:var(--accent);background:var(--accent-soft)}
.prod.off{opacity:.55;cursor:default}
.prod input{width:18px;height:18px;margin-top:3px;flex:none;accent-color:var(--accent)}
.prod .pl{flex:1}.prod .pl b{display:block;font-size:16px}.prod .pl span{font-size:13px;color:var(--ink2)}
.prod .pr{font-family:var(--mono);font-size:15px;white-space:nowrap}
.total{display:flex;justify-content:space-between;font-family:var(--mono);font-size:16px;padding:12px 2px;border-top:1px solid var(--line);margin:6px 0 16px}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th,.tbl td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line2);vertical-align:top}
.tbl th{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);font-weight:500}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:0 0 22px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.kpi b{display:block;font-family:var(--mono);font-size:22px;font-weight:500}
.kpi span{font-size:12px;color:var(--ink2)}
.legal{font-family:var(--serif);font-size:16px;line-height:1.65}
.legal blockquote{font-size:14px}
.netbar{font-family:var(--mono);font-size:11.5px;text-align:center;padding:5px 16px;background:var(--piege-soft);color:var(--piege)}
.small{font-size:12.5px;color:var(--ink3)}
.sel .chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.legal h2.ch,.cours h2.ch{text-transform:none;letter-spacing:-.01em;color:var(--ink);font-size:22px}

/* --- accueil : recherche, plan, bandeau (maquette 09.11.2026) --- */
.srch{position:relative;display:block;margin:16px 0 22px}
.srch input{width:100%;padding:11px 44px 11px 14px;border-radius:10px;background:var(--raise)}
.srch .sgo{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:38px;height:38px;display:grid;place-items:center;border:0;background:none;color:var(--ink2);border-radius:8px;cursor:pointer}
.srch .sgo:hover{color:var(--accent)}
.ghost.theme{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}
.pp{margin:6px 0 20px}
.pp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.pp-head h2{margin:0;font-family:var(--ui);font-size:20px;letter-spacing:0;text-transform:none;color:var(--ink)}
.pp-sub{font-family:var(--ui);font-size:13.5px;color:var(--ink2);margin-top:2px}.pp-sub b{color:var(--ink)}
.pp-def{color:var(--piege)}
.pp-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.pp-grid{grid-template-columns:1fr}}
.pc{background:var(--raise);border:1px solid var(--line2);border-radius:12px;padding:14px 14px 12px;display:flex;flex-direction:column;gap:7px;font-family:var(--ui)}
.pc.done{opacity:.75}
.pc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pc-top h3{margin:0;font-size:16px}
.pc-chip{font-family:var(--mono);font-size:11.5px;background:var(--surface);border:1px solid var(--line2);border-radius:20px;padding:2px 8px;color:var(--ink2);white-space:nowrap}
.pc-date{font-size:12.5px;color:var(--ink2);margin-top:-3px}
.pc-lab{font-size:11.5px;color:var(--ink3);text-transform:uppercase;letter-spacing:.06em}
.pc-todo{font-size:15px;margin-top:-4px}.pc-todo b{font-family:var(--mono);font-weight:500;font-size:20px}
.pc-done{font-size:12.5px;color:var(--ink2)}
.pc-bar{height:6px;background:var(--line2);border-radius:4px;overflow:hidden}.pc-bar i{display:block;height:100%;background:var(--accent);border-radius:4px}
.pc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--ink2);flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:5px;font-family:var(--ui);font-size:12px;font-weight:600;border-radius:20px;padding:2px 9px;white-space:nowrap}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.p-ok{color:var(--ok);background:var(--ok-soft)}.p-warn{color:var(--piege);background:var(--piege-soft)}.p-no{color:var(--no);background:var(--no-soft)}.p-wait{color:var(--ink2);background:var(--surface)}
.pc-goal{font-size:11.5px;color:var(--ink3);border-top:1px solid var(--line2);padding-top:7px;line-height:1.45}
.strip{font-family:var(--ui);font-size:13px;color:var(--ink2);border-top:1px solid var(--line);margin:4px 0 18px;padding-top:10px}
/* --- achat : prix barrés, « Tout débloquer » --- */
.prod .pr s.was{color:var(--ink3);font-size:12.5px;margin-right:4px}
.prod.bundle{border-color:var(--accent)}
.prod.bundle .pl b{color:var(--accent)}
small.y{color:var(--ok)}small.n{color:var(--ink3)}

/* ---- page de présentation (visiteurs, site) ---- */
:root{--band:#0B2A4A;--band-2:#12395F;--band-ink:#E8F1FA;--band-mute:#B7C8DA}
:root[data-theme="dark"]{--band:#07182B;--band-2:#16263A;--band-ink:#EAF0F6;--band-mute:#A5B2C0}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--band:#07182B;--band-2:#16263A;--band-ink:#EAF0F6;--band-mute:#A5B2C0}}
body.is-landing .wrap{max-width:none;padding:0}
body.is-landing .bar-in{max-width:1120px}
.lp{font-family:var(--serif);font-size:17px;line-height:1.55}
.lp .ticker{background:var(--band);color:var(--band-ink);overflow:hidden;white-space:nowrap;font-family:var(--ui);font-size:13px;font-weight:500}
.lp .track{display:inline-flex;padding:9px 0;animation:lp-defile 70s linear infinite}
.lp .ticker:hover .track{animation-play-state:paused}
.lp .track span{padding:0 18px;position:relative}
.lp .track span::after{content:"";position:absolute;right:-3px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--cta)}
.lp .track b{color:#fff}
@keyframes lp-defile{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.lp .track{animation:none;flex-wrap:wrap;white-space:normal}.lp .track span[aria-hidden]{display:none}}
.lp-hero{max-width:1120px;margin:0 auto;padding:44px 16px 36px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
@media(max-width:900px){.lp-hero{grid-template-columns:1fr;padding-top:26px}}
.lp .kicker{display:inline-flex;align-items:center;gap:8px;background:var(--raise);border:1px solid var(--line);border-radius:20px;padding:4px 12px;font-family:var(--ui);font-size:13px;font-weight:600;color:var(--accent)}
.lp .kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cta)}
.lp h1{font-family:var(--serif);font-weight:600;font-size:clamp(32px,5vw,48px);line-height:1.1;letter-spacing:-.01em;margin:16px 0 14px;color:var(--accent)}
.lp-lede{color:var(--ink2);max-width:560px;margin:0 0 22px}
.lp .offer{background:var(--raise);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);max-width:580px}
.lp .offer-top{display:grid;grid-template-columns:1fr auto}
.lp .offer-l{padding:16px 18px}
.lp .offer-l h3{margin:0 0 10px;font-family:var(--ui);font-size:16px}
.lp .chips{display:flex;flex-wrap:wrap;gap:6px}
.lp .chip{font-family:var(--mono);font-size:12px;background:var(--accent-soft);border-radius:20px;padding:2px 9px;color:var(--accent)}
.lp .gar{font-family:var(--ui);font-size:12.5px;color:var(--ok);margin:10px 0 0;line-height:1.4}
.lp .offer-r{background:var(--band);color:#fff;padding:14px 18px;display:flex;flex-direction:column;justify-content:center;min-width:170px;font-family:var(--ui)}
.lp .offer-r .old{font-size:13px;color:var(--band-mute)}
.lp .offer-r .big{font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1.05;color:var(--cta)}
.lp .offer-r small{font-size:12px;color:var(--band-mute);line-height:1.35;margin-top:4px}
.lp .offer-b{display:flex;gap:10px;padding:14px 18px;border-top:1px solid var(--line2);flex-wrap:wrap}
.lp .offer-b .btn{flex:1;justify-content:center;border-radius:12px;padding:12px 16px}
.lp .btn{border-radius:12px;font-family:var(--ui);font-weight:700}
.lp .ticks{list-style:none;padding:0;margin:16px 0 0;font-family:var(--ui);font-size:14px;color:var(--ink2)}
.lp .ticks li{display:flex;gap:8px;align-items:center;margin:5px 0}
.lp .ticks li::before{content:"✓";display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--accent);color:var(--btn-fg);font-size:10px;font-weight:700;flex:none}
@media(max-width:520px){.lp .offer-top{grid-template-columns:1fr}.lp .offer-r{min-width:0}}
.lp .qcard{background:var(--raise);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow);position:relative}
.lp .qflag{position:absolute;top:-12px;left:18px;background:var(--cta-soft);color:var(--piege);font-family:var(--ui);font-size:12px;font-weight:600;border-radius:20px;padding:3px 10px;border:1px solid var(--line)}
.lp .qtags{display:flex;gap:6px;margin:4px 0 10px}
.lp .qtags span{font-family:var(--ui);font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:2px 8px}
.lp .qq{font-family:var(--ui);font-weight:600;font-size:16px;line-height:1.4;margin:0 0 12px}
.lp .lopt{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;font-family:var(--ui);font-size:14.5px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:7px 0;color:var(--ink)}
.lp .lopt b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);font-size:12px;flex:none}
.lp .lopt.ok{background:var(--ok-soft);border-color:var(--ok)}.lp .lopt.ok b{background:var(--ok);color:var(--btn-fg);border-color:var(--ok)}
.lp .lopt.ko{background:var(--no-soft);border-color:var(--no)}.lp .lopt.ko b{background:var(--no);color:var(--btn-fg);border-color:var(--no)}
.lp .expl{display:none;margin-top:10px;border-left:3px solid var(--accent);background:var(--accent-soft);padding:10px 12px;border-radius:0 8px 8px 0;font-size:14.5px}
.lp .expl.on{display:block}
.lp .ref{display:block;font-family:var(--mono);font-size:12px;color:var(--ink2);margin-top:6px}
.lp .qfoot{margin-top:12px;font-family:var(--ui);font-size:12.5px;color:var(--ink3)}
.lp-s{max-width:1120px;margin:0 auto;padding:40px 16px}
.lp .eyebrow{font-size:12.5px;color:var(--piege);margin:0 0 6px}
.lp h2{text-transform:none;letter-spacing:0;font-family:var(--serif);font-weight:600;font-size:clamp(24px,3.4vw,32px);margin:0 0 8px;line-height:1.15;color:var(--accent)}
.lp .sub{color:var(--ink2);margin:0 0 24px;max-width:680px}
.lp .feat{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:900px){.lp .feat{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.lp .feat{grid-template-columns:1fr}}
.lp .f{background:var(--raise);border:1px solid var(--line);border-radius:14px;padding:16px}
.lp .ic{width:34px;height:34px;border-radius:10px;background:var(--cta-soft);color:var(--piege);display:grid;place-items:center;margin-bottom:8px;font-family:var(--ui);font-weight:700}
.lp .f h3{font-family:var(--ui);font-size:16px;margin:0 0 4px}
.lp .f p{margin:0;font-size:14.5px;color:var(--ink2)}
.lp .mods{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:900px){.lp .mods{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.lp .mods{grid-template-columns:1fr}}
.lp .mod{background:var(--raise);border:1px solid var(--line);border-radius:14px;padding:16px;font-family:var(--ui);display:flex;flex-direction:column;gap:8px}
.lp .mod h3{margin:0;font-size:18px;color:var(--accent)}
.lp .mod p{margin:0;font-family:var(--serif);font-size:14.5px;color:var(--ink2)}
.lp .mod ul{list-style:none;margin:auto 0 0;padding:10px 0 0;border-top:1px solid var(--line2);font-size:13px;color:var(--ink2)}
.lp .mod li{display:flex;justify-content:space-between;padding:2px 0}.lp .mod li b{font-family:var(--mono);font-weight:500;color:var(--ink)}
.lp .mp{font-family:var(--ui);font-size:15px;text-align:right}
.lp s{color:var(--ink3);font-weight:400;font-size:.85em;margin-right:4px}
.lp .oral{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;background:var(--cta-soft);border:1px solid var(--line);border-radius:14px;padding:22px}
.lp .oral p{margin:0;color:var(--ink2)}
.lp .oral-p{display:flex;flex-direction:column;gap:10px;align-items:flex-end;font-family:var(--ui);font-size:22px}
@media(max-width:700px){.lp .oral{grid-template-columns:1fr}.lp .oral-p{align-items:stretch;text-align:left}}
.lp .band{background:var(--band);color:var(--band-ink)}
.lp .band h2{color:#fff}.lp .band .sub{color:var(--band-mute)}.lp .band .eyebrow{color:var(--cta)}
.lp .prices{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:14px}
@media(max-width:900px){.lp .prices{grid-template-columns:1fr}}
.lp .pr{background:var(--band-2);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:18px;font-family:var(--ui);position:relative}
.lp .pr.best{background:var(--raise);color:var(--ink);border-color:var(--cta)}
.lp .pr .tag{position:absolute;top:-11px;right:16px;background:var(--cta);color:var(--cta-fg);font-size:12px;font-weight:700;border-radius:20px;padding:3px 10px}
.lp .pr h3{margin:0 0 6px;font-size:16px}
.lp .pr .p{font-size:30px;font-weight:700;letter-spacing:-.02em}
.lp .band .pr:not(.best) s{color:var(--band-mute)}
.lp .pr ul{padding-left:18px;margin:10px 0 0;font-size:14px;line-height:1.6}
.lp .pr ul.pl{list-style:none;padding:0;margin:4px 0 0}
.lp .pl li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.1);font-size:14px}
.lp .garb{font-family:var(--ui);font-size:14px;background:rgba(255,255,255,.06);border-left:3px solid var(--cta);border-radius:0 8px 8px 0;padding:10px 14px;margin:18px 0 0;max-width:820px}
.lp .garb a{color:var(--cta)}
.lp .fine{font-family:var(--ui);font-size:12.5px;color:var(--band-mute);margin:14px 0 18px;max-width:820px}
.lp .faq details{background:var(--raise);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:8px 0;max-width:820px}
.lp .faq summary{font-family:var(--ui);font-weight:600;cursor:pointer}
.lp .faq p{margin:8px 0 0;font-size:15px;color:var(--ink2)}
.lp-foot{max-width:1120px;margin:0 auto;padding:0 16px 40px}
