
:root{
  --paper:#090A18;
  --sheet:#11142B;
  --ink:#F4F5FF;
  --ink-2:#C7CAF0;
  --soft:#929ACB;
  --rule:#2B315D;
  --green:#937BFF;
  --green-tint:#211E4B;
  --red:#FF5B9D;
  --red-tint:#38182F;
  --ochre:#50D7FF;
  --note-bg:#12233E;
  --fixed-bg:#171B36;
  --fs:1;
  --ombre:0 16px 40px rgba(0,0,0,.28),0 0 22px rgba(113,85,255,.08);
  --c1:#9A84FF; --c1t:#211E4B;
  --c2:#58D7FF; --c2t:#122F4B;
  --c3:#FFB86A; --c3t:#42291C;
  --c4:#FF77B6; --c4t:#3D1932;
  --c5:#86A8FF; --c5t:#1D294D;
  --c6:#C190FF; --c6t:#302045;
  --c7:#AEB9E5; --c7t:#242A47;
  --display:'Cinzel','Bricolage Grotesque','Trebuchet MS',system-ui,sans-serif;
  --body:'Inter',system-ui,-apple-system,sans-serif;
}
/* Surfaces sémantiques : palettes explicites, indépendantes du système. */
:root{
  color-scheme:dark;
  --body-bg:var(--paper);
  --panel-bg:var(--sheet);
  --summary-bg:var(--sheet);
  --summary-shadow:var(--ombre);
  --summary-rule:var(--green);
  --summary-bar:var(--ink);
  --code-bg:var(--green-tint);
  --accent-shadow:none;
  --row-hover-bg:var(--green-tint);
  --meter-bg:var(--rule);
  --meter-shadow:none;
  --meter-fill:var(--green);
  --progress-bg:var(--green);
  --progress-shadow:none;
  --button-bg:var(--sheet);
  --button-shadow:var(--ombre);
  --button-hover-shadow:var(--ombre);
  --button-primary-bg:var(--green);
  --button-primary-color:var(--paper);
  --button-primary-border:transparent;
  --button-primary-shadow:var(--ombre);
  --search-bg:var(--sheet);
  --search-shadow:var(--ombre);
  --option-bg:var(--sheet);
  --option-hover-bg:var(--green-tint);
  --option-correct-bg:var(--green-tint);
  --option-incorrect-bg:var(--red-tint);
  --option-shadow:var(--ombre);
  --option-correct-shadow:none;
  --card-bg:var(--sheet);
  --card-border:var(--rule);
  --card-shadow:var(--ombre);
  --card-hover-shadow:var(--ombre);
  --card-answer-bg:var(--green-tint);
  --card-answer-border:var(--green);
  --card-label:var(--green);
  --card-strip:var(--green);
  --card-strip-shadow:none;
  --heading-line:var(--green);
  --heading-line-shadow:none;
  --heading-shadow:none;
  --wordmark-shadow:none;
  --pend-shadow:none;
  --calculator-bg:var(--sheet);
  --calculator-backdrop:none;
  --decoration-display:none;
  --decoration-ring-border:transparent;
  --decoration-ring-shadow:none;
  --decoration-ring-bg:none;
  --decoration-grid-bg:none;
  --decoration-grid-opacity:0;
  --brand-caption:"ARCANE STUDY SYSTEM";
  --brand-caption-color:var(--green);
}
/* Portail conserve l'absence de data-theme et ses effets d'origine. */
:root:not([data-theme]){
  --body-bg:radial-gradient(ellipse 78% 48% at 92% -8%,rgba(113,79,255,.28),transparent 58%),radial-gradient(ellipse 55% 35% at -7% 44%,rgba(38,196,255,.16),transparent 62%),var(--paper);
  --panel-bg:linear-gradient(130deg,rgba(23,27,61,.9),rgba(14,16,37,.78));
  --summary-bg:linear-gradient(135deg,rgba(147,123,255,.13),rgba(17,20,43,.82) 52%,rgba(80,215,255,.07));
  --summary-bar:linear-gradient(var(--green),var(--ochre));
  --code-bg:linear-gradient(135deg,var(--green-tint),transparent);
  --accent-shadow:0 0 18px color-mix(in srgb,currentColor 20%,transparent);
  --row-hover-bg:linear-gradient(90deg,rgba(145,122,255,.13),rgba(80,215,255,.04),transparent);
  --meter-bg:rgba(142,151,207,.22);
  --meter-shadow:inset 0 1px 2px rgba(0,0,0,.34);
  --meter-fill:linear-gradient(90deg,var(--green),var(--ochre));
  --progress-bg:linear-gradient(90deg,var(--green),var(--ochre));
  --progress-shadow:0 0 12px var(--green);
  --button-bg:linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.008));
  --button-shadow:0 7px 18px rgba(0,0,0,.14);
  --button-hover-shadow:0 8px 24px rgba(92,68,224,.22),0 0 16px rgba(123,96,255,.16);
  --button-primary-bg:linear-gradient(115deg,#6648DB,var(--green) 55%,#4BD8FF);
  --button-primary-color:#fff;
  --button-primary-shadow:0 10px 25px rgba(102,72,219,.34),0 0 16px rgba(87,217,255,.18);
  --search-bg:linear-gradient(135deg,rgba(20,24,53,.9),rgba(11,13,31,.84));
  --search-shadow:inset 0 1px 0 rgba(255,255,255,.045),var(--ombre);
  --option-bg:linear-gradient(135deg,rgba(24,27,59,.96),rgba(13,15,34,.94));
  --option-hover-bg:linear-gradient(135deg,rgba(45,40,104,.78),rgba(18,21,49,.95));
  --option-correct-bg:linear-gradient(135deg,rgba(58,49,130,.9),rgba(27,24,65,.94));
  --option-incorrect-bg:linear-gradient(135deg,rgba(97,31,72,.74),rgba(48,20,45,.9));
  --option-shadow:0 10px 24px rgba(0,0,0,.13);
  --option-correct-shadow:0 0 22px rgba(134,108,255,.16);
  --card-bg:linear-gradient(135deg,rgba(38,33,83,.94),rgba(13,16,40,.96) 68%);
  --card-border:rgba(151,128,255,.66);
  --card-shadow:0 18px 42px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.08),0 0 38px rgba(98,70,230,.15);
  --card-hover-shadow:0 22px 46px rgba(0,0,0,.3),0 0 40px rgba(120,88,255,.26);
  --card-answer-bg:linear-gradient(135deg,rgba(39,47,106,.96),rgba(18,27,59,.98));
  --card-answer-border:var(--ochre);
  --card-label:var(--ochre);
  --card-strip:linear-gradient(90deg,var(--green),var(--ochre),transparent);
  --card-strip-shadow:0 0 16px var(--green);
  --heading-line:linear-gradient(90deg,var(--green),transparent);
  --heading-line-shadow:0 0 11px var(--green);
  --heading-shadow:0 0 18px color-mix(in srgb,currentColor 40%,transparent);
  --wordmark-shadow:0 0 16px rgba(157,130,255,.33);
  --pend-shadow:0 0 12px rgba(80,215,255,.5);
  --calculator-bg:rgba(14,16,37,.94);
  --calculator-backdrop:blur(12px);
  --decoration-display:block;
  --decoration-ring-border:rgba(156,127,255,.38);
  --decoration-ring-shadow:0 0 0 42px rgba(139,112,255,.035),0 0 70px rgba(110,79,255,.34),inset 0 0 58px rgba(113,88,255,.12);
  --decoration-ring-bg:conic-gradient(from 22deg,transparent 0 12%,rgba(158,135,255,.18) 16%,transparent 21% 48%,rgba(66,220,255,.16) 54%,transparent 60% 100%);
  --decoration-grid-bg:linear-gradient(rgba(132,151,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(132,151,255,.06) 1px,transparent 1px);
  --decoration-grid-opacity:.18;
}
:root[data-theme="sombre"]{
    --paper:#050611;
    --sheet:#0E1025;
    --ink:#F7F7FF;
    --ink-2:#D0D3F5;
    --soft:#969ED1;
    --rule:#292F62;
    --green:#A58FFF;
    --green-tint:#211D50;
    --red:#FF6BA6;
    --red-tint:#3A172F;
    --ochre:#5AD9FF;
    --note-bg:#11233D;
    --fixed-bg:#151936;
    --ombre:none;
    --c1:#A58FFF; --c1t:#211D50;
    --c2:#5AD9FF; --c2t:#122E4C;
    --c3:#FFBB73; --c3t:#42291C;
    --c4:#FF79B9; --c4t:#3D1932;
    --c5:#88ABFF; --c5t:#1D294D;
    --c6:#C493FF; --c6t:#302045;
    --c7:#B3BDEB; --c7t:#242A47;
}
:root[data-theme="clair"]{
  color-scheme:light;
  --paper:#EEF0FF; --sheet:#FFFFFF; --ink:#101432; --ink-2:#303963; --soft:#626C9E;
  --rule:#C8CDEA; --green:#6047D7; --green-tint:#E6E2FF; --red:#B92062; --red-tint:#FDE7F0;
  --ochre:#187FA8; --note-bg:#E4F5FF; --fixed-bg:#E8EBF8; --ombre:0 14px 30px rgba(47,54,112,.12);
  --c1:#6047D7; --c1t:#E6E2FF; --c2:#187FA8; --c2t:#E1F4FB; --c3:#A65C12; --c3t:#FBEBD9;
  --c4:#A82469; --c4t:#FBE5F0; --c5:#405FCE; --c5t:#E3E9FF; --c6:#7741A4; --c6t:#EEE3F8;
  --c7:#4C577B; --c7t:#E7EAF3;
}
:root[data-theme="prisme"]{
  --body-bg:radial-gradient(ellipse 48% 42% at 105% -5%,rgba(255,100,185,.31),transparent 64%),radial-gradient(ellipse 52% 40% at -8% 45%,rgba(78,221,245,.22),transparent 62%),radial-gradient(ellipse 48% 34% at 52% 105%,rgba(255,209,102,.15),transparent 68%),var(--paper);
  --decoration-display:block;
  --decoration-ring-border:rgba(255,209,102,.42);
  --decoration-ring-shadow:0 0 0 42px rgba(255,139,192,.04),0 0 78px rgba(84,230,194,.22),inset 0 0 58px rgba(185,154,255,.14);
  --decoration-ring-bg:conic-gradient(from 20deg,transparent 0 12%,rgba(255,209,102,.24) 16%,transparent 22% 45%,rgba(84,230,194,.23) 52%,transparent 60% 78%,rgba(255,120,170,.24) 84%,transparent 92%);
  --decoration-grid-bg:linear-gradient(color-mix(in srgb,var(--c1) 8%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--c2) 6%,transparent) 1px,transparent 1px);
  --decoration-grid-opacity:.18;
  --brand-caption:"PRISM STUDY SYSTEM";
  --brand-caption-color:var(--ochre);
  --heading-line:linear-gradient(90deg,var(--green),var(--ochre),var(--red),transparent);
  --button-primary-bg:linear-gradient(105deg,#5C48D9,#D34E9D);
  --button-primary-color:#fff;
  --button-primary-border:#D477CA;
  --paper:#15102D; --sheet:#211842; --ink:#FFF9FF; --ink-2:#E5D8F7; --soft:#BBA9D4;
  --rule:#4C367A; --green:#54E6C2; --green-tint:#203D53; --red:#FF78AA; --red-tint:#4B203E;
  --ochre:#FFD166; --note-bg:#30285B; --fixed-bg:#251C4A; --ombre:0 16px 38px rgba(12,5,32,.34),0 0 26px rgba(255,111,190,.12);
  --c1:#B99AFF; --c1t:#35245D; --c2:#54DDF5; --c2t:#173E5A; --c3:#FFD166; --c3t:#4C3A17;
  --c4:#FF8BC0; --c4t:#4B2344; --c5:#76B7FF; --c5t:#203C69; --c6:#CFA1FF; --c6t:#432866;
  --c7:#79E6C6; --c7t:#1F4B45;
}
:root[data-theme="classique"]{
  color-scheme:light;
  --body-bg:radial-gradient(ellipse 62% 38% at 100% 0,rgba(46,107,79,.08),transparent 62%),var(--paper);
  --summary-bg:none;
  --summary-shadow:none;
  --summary-rule:var(--ink);
  --meter-bg:rgba(142,151,207,.22);
  --meter-shadow:inset 0 1px 2px rgba(0,0,0,.34);
  --button-shadow:0 5px 14px rgba(23,37,31,.05);
  --button-hover-shadow:0 7px 18px rgba(46,107,79,.12);
  --button-primary-bg:var(--ink);
  --button-primary-border:var(--rule);
  --button-primary-shadow:0 6px 16px rgba(23,37,31,.12);
  --progress-bg:var(--ink);
  --paper:#F4F6F1; --sheet:#FFFFFF; --ink:#17251F; --ink-2:#3C4B43; --soft:#5F6F66;
  --rule:#CDD7CE; --green:#2E6B4F; --green-tint:#E4EDE6; --red:#B23A2E; --red-tint:#F6E6E3;
  --ochre:#B4842A; --note-bg:#FBF3E2; --fixed-bg:#EDEFE9; --ombre:0 10px 26px rgba(23,37,31,.08);
  --c1:#2E6B4F; --c1t:#E2EDE6; --c2:#1B6D78; --c2t:#DDEDEF; --c3:#9A6B18; --c3t:#F4EBD8;
  --c4:#8B4462; --c4t:#F3E4EA; --c5:#3B5C9E; --c5t:#E3E9F6; --c6:#75489B; --c6t:#EDE5F5;
  --c7:#4C5865; --c7t:#E6EAEE; --display:'Bricolage Grotesque','Trebuchet MS',system-ui,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--body-bg);
  color:var(--ink);
  font-family:var(--body);
  font-size:calc(16px * var(--fs));line-height:1.5;
  font-variant-numeric:tabular-nums;
  min-height:100vh;overflow-x:hidden;
}
#app{max-width:560px;margin:0 auto;padding:22px 18px 64px;position:relative;z-index:1;animation:enter-app .55s ease both}
body:before{content:"";display:var(--decoration-display);position:fixed;z-index:0;pointer-events:none;width:460px;height:460px;right:-220px;top:-190px;
  border:1px solid var(--decoration-ring-border);border-radius:50%;box-shadow:var(--decoration-ring-shadow);
  background:var(--decoration-ring-bg);animation:portal-spin 28s linear infinite}
body:after{content:"";display:var(--decoration-display);position:fixed;z-index:0;pointer-events:none;inset:0;opacity:var(--decoration-grid-opacity);
  background-image:var(--decoration-grid-bg);
  background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent 72%)}
button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--ochre);outline-offset:3px;border-radius:3px;box-shadow:0 0 0 5px color-mix(in srgb,var(--ochre) 22%,transparent)}
::selection{background:var(--green-tint);color:var(--ink)}
img,svg{max-width:100%}

/* ---------- en-tête ---------- */
.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  border-bottom:1px solid var(--rule);padding:5px 0 14px;position:relative}
.masthead:after{content:"";position:absolute;bottom:-1px;left:0;width:44%;height:2px;background:linear-gradient(90deg,var(--green),var(--ochre),transparent);box-shadow:0 0 12px var(--green)}
.wordmark{font-family:var(--display);font-weight:800;font-size:calc(27px * var(--fs));letter-spacing:.015em;line-height:1;color:var(--ink);text-shadow:var(--wordmark-shadow)}
.wordmark:after{content:var(--brand-caption);display:block;font-family:var(--body);font-size:calc(8px * var(--fs));letter-spacing:.17em;color:var(--brand-caption-color);margin-top:8px;text-shadow:none}
.folio{font-size:calc(11px * var(--fs));color:var(--soft);letter-spacing:.02em;white-space:nowrap;
  text-align:right;line-height:1.35}
.pend{font-family:var(--display);font-weight:800;font-size:calc(17px * var(--fs));color:var(--ochre);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-shadow:var(--pend-shadow)}

/* ---------- compte en T ---------- */
.tcompte{margin:24px 0 30px}
.tcompte h2{font-family:var(--display);font-weight:500;font-size:calc(13px * var(--fs));color:var(--soft);
  margin:0 0 6px;letter-spacing:.01em}
.tgrid{display:grid;grid-template-columns:1fr 1px 1fr;border-top:1.5px solid var(--ink)}
.tgrid .bar{background:var(--ink)}
.tcol{padding:12px 4px 14px}
.tcol.right{padding-left:16px}
.tlabel{font-size:calc(12.5px * var(--fs));color:var(--soft)}
.tnum{font-family:var(--display);font-weight:800;font-size:calc(42px * var(--fs));line-height:1;margin-top:5px;letter-spacing:-.02em}
.tcol.left .tnum{color:var(--green)}
.tcol.right .tnum{color:var(--red)}
.tsolde{display:flex;justify-content:space-between;align-items:center;
  border-top:1px solid var(--rule);padding-top:8px;font-size:calc(13.5px * var(--fs));color:var(--soft)}
.tsolde b{font-family:var(--display);font-size:calc(16px * var(--fs));color:var(--ink)}

/* ---------- lignes de grand livre ---------- */
.sectitle{font-family:var(--display);font-weight:700;font-size:calc(16px * var(--fs));margin:0 0 3px;letter-spacing:-.01em}
.secnote{font-size:calc(13px * var(--fs));color:var(--soft);margin:0 0 4px}
.ledger{border-top:1px solid var(--rule);margin-top:10px}
.row{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:13px;
  width:100%;background:none;border:0;border-bottom:1px solid var(--rule);
  padding:15px 2px;text-align:left;transition:padding-left .12s}
.row:active{padding-left:6px}
.row:last-child{border-bottom:0}
.code{font-family:var(--display);font-weight:800;font-size:calc(13px * var(--fs));color:var(--green);
  background:var(--green-tint);border-radius:4px;padding:7px 0;text-align:center;letter-spacing:.01em}
.rtitle{font-weight:500;font-size:calc(15px * var(--fs));line-height:1.3;display:block}
.rsub{font-size:calc(12.5px * var(--fs));color:var(--soft);margin-top:2px}
.score{font-size:calc(12.5px * var(--fs));color:var(--soft);white-space:nowrap}
.score b{color:var(--ink);font-weight:600}
.meter{grid-column:2/4;height:4px;background:var(--rule);border-radius:3px;overflow:hidden;margin-top:9px}
.meter i{display:block;height:100%;background:var(--green);border-radius:3px;transition:width .5s ease}

/* ---------- boutons ---------- */
.actions{display:grid;gap:9px;margin-top:26px}
.btn{border:1.5px solid var(--ink);background:var(--sheet);border-radius:5px;
  padding:15px;font-weight:600;text-align:center;width:100%;box-shadow:var(--ombre);
  transition:transform .1s}
.btn:active{transform:translateY(1px)}
.btn.solid{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn.ghost{border:0;background:none;color:var(--soft);font-weight:500;font-size:calc(14px * var(--fs));padding:8px}
.btn[disabled]{opacity:.35;cursor:not-allowed}

/* ---------- quiz ---------- */
.qbar{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--rule);padding-bottom:10px}
.back{background:none;border:0;padding:0;font-size:calc(14px * var(--fs));color:var(--soft)}
.qmeta{font-size:calc(12.5px * var(--fs));color:var(--soft);margin-left:auto}
.qline{height:2px;background:var(--rule);margin-top:-1px}
.qline i{display:block;height:100%;background:var(--ink);transition:width .25s}
.qtag{font-size:calc(12px * var(--fs));color:var(--green);font-weight:600;margin:22px 0 8px}
.qtext{font-family:var(--display);font-weight:500;font-size:calc(23px * var(--fs));line-height:1.32;margin:0 0 22px;letter-spacing:-.01em}
.opt{display:grid;grid-template-columns:22px 1fr;gap:11px;width:100%;text-align:left;
  background:var(--sheet);border:1px solid var(--rule);border-left:3px solid var(--rule);
  border-radius:4px;padding:14px 15px;margin-bottom:9px;font-size:calc(15px * var(--fs));line-height:1.35;
  box-shadow:var(--ombre);transition:border-left-color .15s,background .15s}
.opt .k{font-family:var(--display);font-weight:700;color:var(--soft)}
.opt.good{border-left-color:var(--green);background:var(--green-tint)}
.opt.good .k{color:var(--green)}
.opt.bad{border-left-color:var(--red);background:var(--red-tint)}
.opt.bad .k{color:var(--red)}
.opt.dim{opacity:.5}
.opt.ecr{padding:10px 10px 6px}
.jrn{width:100%;border-collapse:collapse;font-size:calc(12.5px * var(--fs));table-layout:fixed}
.jrn th{font-weight:500;font-size:calc(10.5px * var(--fs));color:var(--soft);text-align:left;
  padding:0 4px 4px;border-bottom:1px solid var(--rule)}
.jrn th.n,.jrn td.n{text-align:right}
.jrn td{padding:5px 4px;border-bottom:1px solid var(--rule);vertical-align:top;line-height:1.25}
.jrn tr:last-child td{border-bottom:0}
.jrn .cpt{font-family:var(--display);font-weight:700;width:calc(46px * var(--fs))}
.jrn .lib{color:var(--ink-2)}
.jrn .n{width:calc(58px * var(--fs));white-space:nowrap}

/* ---------- atelier de saisie ---------- */
.enonce{background:var(--sheet);border-left:3px solid var(--ochre);border-radius:0 4px 4px 0;
  padding:14px 16px;font-size:calc(14.5px * var(--fs));line-height:1.55;margin:16px 0 4px;box-shadow:var(--ombre)}
.enonce p{margin:0 0 8px}
.enonce p:last-child{margin:0}
.hint{font-size:calc(13px * var(--fs));color:var(--soft);margin:8px 0 0}
.entry{margin-top:26px}
.entry h4{font-family:var(--display);font-weight:700;font-size:calc(14px * var(--fs));margin:0 0 2px}
.entry .date{font-size:calc(12.5px * var(--fs));color:var(--soft);margin:0 0 8px}
.sz{width:100%;border-collapse:collapse;table-layout:fixed;font-size:calc(13px * var(--fs))}
.sz th{font-weight:500;font-size:calc(10.5px * var(--fs));color:var(--soft);text-align:left;padding:0 3px 5px}
.sz th.n,.sz td.n{text-align:right}
.sz td{padding:0 2px}
.sz input{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;
  font:inherit;font-size:calc(13px * var(--fs));color:var(--ink);padding:8px 3px;border-radius:0}
.sz input:focus{border-bottom-color:var(--green);outline:none;background:var(--green-tint)}
.sz input.n{text-align:right;font-variant-numeric:tabular-nums}
.sz input[readonly]{color:var(--ink-2)}
.sz .cw{width:calc(54px * var(--fs))}.sz .nw{width:calc(62px * var(--fs))}.sz .mk{width:18px;font-weight:700}
.sz tr.lok .mk{color:var(--green)}
.sz tr.lko .mk{color:var(--red)}
.sz tr.lok input{border-bottom-color:var(--green)}
.sz tr.lko input{border-bottom-color:var(--red);color:var(--red)}
.tot{border-top:1.5px solid var(--ink);margin-top:6px;display:flex;justify-content:flex-end;
  gap:14px;padding-top:6px;font-size:calc(12.5px * var(--fs));color:var(--soft)}
.tot b{color:var(--ink);font-weight:600}
.tot.off b{color:var(--red)}
.addline{background:none;border:0;color:var(--green);font-size:calc(13px * var(--fs));font-weight:600;padding:8px 0}
.remark{font-size:calc(13.5px * var(--fs));margin:10px 0 0;padding-left:13px;border-left:2px solid var(--red);color:var(--ink-2)}
.remark div{margin-bottom:3px}
.corr{margin-top:12px}
.corr p{font-size:calc(12.5px * var(--fs));color:var(--soft);margin:0 0 4px}

/* ---------- plan de comptes ---------- */
.acw{position:relative;display:block}
.acp{position:absolute;z-index:30;left:0;top:100%;width:min(290px,74vw);
  background:var(--sheet);border:1px solid var(--ink);border-radius:0 0 4px 4px;
  box-shadow:0 8px 20px rgba(20,40,30,.16);max-height:210px;overflow-y:auto}
.acp button{display:block;width:100%;text-align:left;border:0;background:none;
  padding:9px 10px;font-size:calc(12.5px * var(--fs));line-height:1.3;border-bottom:1px solid var(--rule)}
.acp button:last-child{border-bottom:0}
.acp button:hover,.acp button:focus{background:var(--green-tint)}
.acp b{font-family:var(--display);color:var(--green);margin-right:7px}
.search{width:100%;border:1.5px solid var(--ink);border-radius:4px;background:var(--sheet);
  padding:12px 13px;font:inherit;font-size:calc(15px * var(--fs));margin-top:18px;color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.chip{border:1px solid var(--rule);background:var(--sheet);border-radius:20px;
  padding:7px 13px;font-size:calc(13px * var(--fs));font-weight:500}
.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pcgrow{border-bottom:1px solid var(--rule);padding:9px 0;font-size:calc(13.5px * var(--fs));line-height:1.35}
.pcgrow b{font-family:var(--display);color:var(--green);margin-right:8px}
.pcgrow.l2{font-weight:600}
.pcgrow.l2 b{color:var(--ink)}
.pcgempty{padding:22px 0;color:var(--soft);font-size:calc(14px * var(--fs))}

/* ---------- sélecteur de journal ---------- */
.jsel{display:flex;align-items:center;gap:9px;margin:0 0 10px}
.jsel label{font-size:calc(12px * var(--fs));color:var(--soft)}
.jsel select{font:inherit;font-size:calc(13px * var(--fs));padding:7px 9px;border:1px solid var(--rule);
  border-radius:3px;background:var(--sheet);color:var(--ink)}
.jsel select:focus{border-color:var(--green);outline:none}
.jsel .jok{color:var(--green);font-weight:700}
.jsel .jko{color:var(--red);font-weight:700}

/* ---------- fiches ---------- */
.fiche{border-bottom:1px solid var(--rule)}
.fiche .fopen{display:grid;grid-template-columns:1fr 18px;gap:10px;width:100%;background:none;
  border:0;text-align:left;padding:14px 2px}
.fiche h3{font-family:var(--display);font-weight:700;font-size:calc(15px * var(--fs));margin:0;line-height:1.25}
.fiche .fs{font-size:calc(12.5px * var(--fs));color:var(--soft);margin-top:2px}
.fiche .fx{font-family:var(--display);color:var(--green);font-size:calc(17px * var(--fs));text-align:right}
.fbody{padding:0 2px 18px}
.fl{margin:0 0 12px;padding:0}
.fl li{list-style:none;position:relative;padding-left:14px;margin-bottom:7px;font-size:calc(14.5px * var(--fs));line-height:1.5}
.fl li:before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;
  background:var(--green);border-radius:50%}
.ftab{width:100%;border-collapse:collapse;font-size:calc(13.5px * var(--fs));margin:0 0 14px}
.ftab th{text-align:left;font-weight:500;font-size:calc(10.5px * var(--fs));color:var(--soft);
  padding:0 6px 5px 0;border-bottom:1px solid var(--ink)}
.ftab td{padding:8px 6px 8px 0;border-bottom:1px solid var(--rule);vertical-align:top;line-height:1.4}
.ftab td:first-child{font-weight:600;width:34%;color:var(--ink)}
.form{background:var(--sheet);border-left:3px solid var(--green);border-radius:0 4px 4px 0;
  padding:12px 14px;margin:0 0 12px;box-shadow:var(--ombre)}
.form code{font-family:var(--display);font-weight:700;font-size:calc(14.5px * var(--fs));line-height:1.4;
  display:block;color:var(--ink)}
.form span{display:block;font-size:calc(13px * var(--fs));color:var(--soft);margin-top:6px;line-height:1.45}
.gz{width:100%;border-collapse:collapse;table-layout:fixed;font-size:calc(13px * var(--fs));margin-top:4px}
.gz th{font-weight:500;font-size:calc(10.5px * var(--fs));color:var(--soft);text-align:left;padding:0 4px 5px;border-bottom:1px solid var(--ink)}
.gz th.n{text-align:right}
.gz td{padding:0 2px;border-bottom:1px solid var(--rule)}
.gz td.gl{font-size:calc(12.5px * var(--fs));line-height:1.3;padding:9px 6px 9px 0;vertical-align:middle}
.gz input{width:100%;border:0;background:transparent;font:inherit;font-size:calc(13px * var(--fs));text-align:right;
  padding:9px 3px;color:var(--ink);font-variant-numeric:tabular-nums;border-radius:0}
.gz input:focus{outline:none;background:var(--green-tint)}
.gz .fix{text-align:right;color:var(--soft);padding:9px 3px;font-variant-numeric:tabular-nums;background:var(--fixed-bg)}
.gz .vide{background:repeating-linear-gradient(135deg,transparent,transparent 4px,var(--rule) 4px,var(--rule) 5px);opacity:.55}
.gz td.ok input{color:var(--green);font-weight:600}
.gz td.ko input{color:var(--red);font-weight:600}
.gz td.ko:after{content:attr(data-att);display:block;font-size:calc(10.5px * var(--fs));color:var(--red);text-align:right;padding:0 3px 6px}
.rowb{display:grid;grid-template-columns:1fr auto;gap:12px;width:100%;background:none;border:0;
  border-bottom:1px solid var(--rule);padding:13px 2px;text-align:left;align-items:center}
.rowb{transition:padding-left .12s}
.rowb:active{padding-left:6px}
.rowb:last-child{border-bottom:0}
.flashcard{display:block;width:100%;min-height:258px;border:1.5px solid var(--ink);border-radius:8px;
  background:var(--sheet);padding:24px 22px;text-align:left;box-shadow:var(--ombre);position:relative;
  overflow:hidden;transition:transform .12s,background .18s}
.flashcard:active{transform:translateY(1px)}
.flashcard:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--green)}
.flashcard .flashlabel{display:block;font-size:calc(12px * var(--fs));font-weight:700;color:var(--green);
  letter-spacing:.03em;text-transform:uppercase;margin:2px 0 18px}
.flashcard .flashtext{display:block;font-family:var(--display);font-weight:700;font-size:calc(24px * var(--fs));
  line-height:1.3;letter-spacing:-.015em}
.flashcard .flashhint{display:block;position:absolute;left:22px;right:22px;bottom:20px;color:var(--soft);
  font-size:calc(12.5px * var(--fs));line-height:1.4}
.flashcard.answer{background:var(--green-tint);border-color:var(--green)}
.flashcard.answer .flashlabel{color:var(--ink-2)}
.flashcard.answer .flashtext{font-family:var(--body);font-size:calc(16px * var(--fs));font-weight:500;line-height:1.55}
.flash-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
.flash-actions .btn{margin:0}
.flash-progress{display:flex;justify-content:space-between;gap:10px;color:var(--soft);font-size:calc(12.5px * var(--fs));
  margin:16px 0 10px}
.flash-progress b{color:var(--ink);font-weight:600}
.flash-key{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:calc(12px * var(--fs));color:var(--soft)}
.flash-key span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--green-tint);color:var(--green);font-family:var(--display);font-size:16px}
.flash-key b{color:var(--ink-2);font-weight:600}.flash-key small{margin-left:auto;color:var(--soft);font-variant-numeric:tabular-nums}
.psec{font-family:var(--display);font-weight:700;font-size:calc(13.5px * var(--fs));color:var(--green);
  margin:30px 0 0;padding-bottom:5px;border-bottom:1.5px solid var(--ink);letter-spacing:.01em}
.pintro{font-size:calc(13px * var(--fs));color:var(--soft);margin:6px 0 0}
.phead{border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:2px}
.phead .pcode{font-family:var(--display);font-weight:800;font-size:calc(38px * var(--fs));line-height:1;color:var(--green);letter-spacing:-.02em}
.phead h2{font-family:var(--display);font-weight:700;font-size:calc(19px * var(--fs));line-height:1.25;margin:8px 0 0}
.phead p{font-size:calc(13px * var(--fs));color:var(--soft);margin:4px 0 0}
.semaine{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-top:12px;align-items:end}
.jour{text-align:center}
.jb{height:64px;background:var(--rule);border-radius:4px;display:flex;align-items:flex-end;overflow:hidden}
.jb i{display:block;width:100%;background:var(--green);border-radius:4px}
.jn{font-size:calc(10.5px * var(--fs));color:var(--soft);margin-top:5px}
.jt{font-size:calc(9.5px * var(--fs));color:var(--soft);opacity:.75;margin-top:1px}
.etape{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:center;
  border-bottom:1px solid var(--rule);padding:11px 2px}
.etape:last-child{border-bottom:0}
.etape .en{font-family:var(--display);font-weight:800;font-size:calc(13px * var(--fs));
  color:var(--soft);text-align:center}
.conseil{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:var(--sheet);border:1px solid var(--rule);border-left:3px solid var(--green);
  border-radius:0 5px 5px 0;padding:14px 15px;margin:22px 0 0;box-shadow:var(--ombre)}
.conseil .ct{font-family:var(--display);font-weight:700;font-size:calc(15px * var(--fs));line-height:1.25}
.conseil .cs{font-size:calc(13px * var(--fs));color:var(--soft);margin-top:3px;line-height:1.4}
.conseil .cb{border:1.5px solid var(--ink);background:var(--paper);border-radius:5px;
  padding:9px 14px;font-weight:600;font-size:calc(13.5px * var(--fs));white-space:nowrap}
.cherche{width:100%;text-align:left;background:var(--sheet);border:1px solid var(--rule);
  border-radius:5px;padding:13px 15px;margin-top:12px;color:var(--soft);
  font-size:calc(14px * var(--fs));box-shadow:var(--ombre)}
.fhead{display:grid;grid-template-columns:1fr auto;align-items:center}
.fav{background:none;border:0;padding:10px 4px 10px 10px;font-size:calc(19px * var(--fs));
  color:var(--rule);line-height:1}
.fav.on{color:var(--ochre)}
.dump{width:100%;min-height:110px;margin-top:14px;padding:12px;border:1px solid var(--rule);
  border-radius:5px;background:var(--sheet);color:var(--ink-2);font-family:var(--body);
  font-size:calc(12px * var(--fs));line-height:1.5;resize:vertical}
.repris{background:var(--green-tint);border-radius:5px;padding:11px 13px;margin:14px 0 0;
  font-size:calc(13.5px * var(--fs));color:var(--ink-2);line-height:1.45}
.repris button{background:none;border:0;padding:0;color:var(--green);font-weight:700;
  text-decoration:underline;font-size:calc(13.5px * var(--fs))}
.pm{border:1px solid var(--rule);background:var(--sheet);border-radius:4px;
  min-width:calc(32px * var(--fs));height:calc(32px * var(--fs));font-weight:700;
  color:var(--soft);line-height:1;font-size:calc(14px * var(--fs));flex:none}
.cellw{display:flex;align-items:center;gap:3px}
.cellw .pm{min-width:calc(22px * var(--fs));height:calc(26px * var(--fs));font-size:calc(11px * var(--fs))}
.cellw input{min-width:0}
.clavier{display:none;font-size:calc(12px * var(--fs));color:var(--soft);margin:14px 0 0}
.clavier b{font-family:var(--display);color:var(--ink);background:var(--sheet);
  border:1px solid var(--rule);border-radius:4px;padding:1px 6px}
.imprim{display:none;margin-top:12px}
.entete-print{display:none}
@media (min-width:1040px) and (pointer:fine){ .clavier{display:block} .imprim{display:block} }
@media print{
  @page{ margin:16mm 15mm; }
  html,body{ background:#fff!important }
  body{ color:#111; font-size:10.5pt; line-height:1.5 }
  #app{ max-width:none; padding:0; counter-reset:fp }
  .qbar,.actions,.btn,.chips,.search,.calc,.clavier,.masthead,.conseil,.cherche,
  .tb,.fx,.fav,.secnote,.qtag,.pcgempty,.hint{ display:none!important }
  .entete-print{ display:block; border-bottom:2pt solid #111; padding-bottom:7pt; margin-bottom:16pt }
  .ep-t{ font-family:var(--display); font-weight:800; font-size:19pt; letter-spacing:-.01em; line-height:1.15 }
  .ep-s{ font-size:8.5pt; color:#555; margin-top:4pt }
  .ledger{ border:0 }
  .fiche{ counter-increment:fp; break-inside:avoid; page-break-inside:avoid;
    border:0; border-bottom:.4pt solid #bbb; padding-bottom:10pt; margin-bottom:14pt }
  .fiche .fhead{ display:block }
  .fiche .fopen{ display:block; padding:0; width:auto }
  .fiche h3{ font-size:13pt; margin:0; break-after:avoid; page-break-after:avoid }
  .fiche h3::before{ content:counter(fp) ". "; color:#777 }
  .fiche .fs{ display:block; font-size:8.5pt; color:#555; margin-top:2pt; font-style:italic }
  .fbody{ padding:9pt 0 0 }
  .fl{ margin-bottom:9pt }
  .fl li{ font-size:10.5pt; margin-bottom:4pt; break-inside:avoid; padding-left:11pt }
  .fl li:before{ background:#111; top:7pt; width:3.5pt; height:3.5pt }
  .ftab{ font-size:9.5pt; margin-bottom:10pt }
  .ftab th{ border-bottom:.8pt solid #111; color:#111; font-size:8pt; padding-bottom:3pt }
  .ftab td{ border-bottom:.3pt solid #ccc; padding:4pt 6pt 4pt 0; color:#111 }
  .ftab tr{ break-inside:avoid }
  .ftab thead{ display:table-header-group }
  .ftab tbody{ break-inside:auto }
  p,li{ orphans:2; widows:2 }
  .fiche h3+*{ break-before:avoid }
  .form{ background:#f2f2ee; border-left:2pt solid #111; border-radius:0; box-shadow:none;
    padding:7pt 9pt; margin-bottom:9pt; break-inside:avoid }
  .form code{ font-size:11pt; color:#111 }
  .form span{ color:#444; font-size:9pt }
  .fnote{ background:#f6f0e0; border-left:2pt solid #8a6a1e; border-radius:0; color:#333;
    padding:7pt 9pt; break-inside:avoid; font-size:9.5pt }
  .pcgrow{ font-size:9pt; padding:2.5pt 0; border-bottom:.3pt dotted #ccc; break-inside:avoid }
  .pcgrow b{ color:#111 }
  #pcglist{ column-count:2; column-gap:10mm }
}
.calc{display:none}
@media (min-width:1040px) and (pointer:fine){
  .calc{display:block;position:fixed;right:24px;top:50%;transform:translateY(-50%);
    width:212px;background:var(--sheet);border:1px solid var(--rule);border-radius:8px;
    padding:13px;box-shadow:0 8px 26px rgba(20,40,30,.13);z-index:40}
}
.calc .ct{font-family:var(--display);font-weight:700;font-size:calc(12px * var(--fs));
  color:var(--soft);margin-bottom:8px}
.calc .cd{width:100%;border:1px solid var(--rule);border-radius:5px;background:var(--paper);
  padding:10px;font:inherit;font-size:calc(17px * var(--fs));text-align:right;color:var(--ink);
  font-variant-numeric:tabular-nums;font-family:var(--display);font-weight:700}
.calc .cd:focus{outline:none;border-color:var(--green)}
.calc .cd.err{border-color:var(--red);color:var(--red)}
.cbande{margin:7px 0 0;display:grid;gap:2px}
.cl{background:none;border:0;text-align:right;font-size:calc(11px * var(--fs));color:var(--soft);
  padding:2px 3px;font-variant-numeric:tabular-nums;width:100%}
.cl b{color:var(--ink);font-family:var(--display)}
.cgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:9px}
.ck{border:1px solid var(--rule);background:var(--paper);border-radius:5px;padding:9px 0;
  font-size:calc(14px * var(--fs));font-weight:600;font-variant-numeric:tabular-nums}
.ck:hover{background:var(--green-tint)}
.ck.op{color:var(--green);font-weight:700}
.ck.eff{color:var(--red)}
.ck.eg{grid-column:1/-1;background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:700}
.ctva{display:grid;gap:5px;margin-top:9px}
.ctva select{font:inherit;font-size:calc(12px * var(--fs));padding:6px;border:1px solid var(--rule);
  border-radius:5px;background:var(--paper);color:var(--ink)}
.ck2{border:1px solid var(--rule);background:var(--paper);border-radius:5px;padding:7px;
  font-size:calc(12px * var(--fs));font-weight:600}
.ck2:hover{background:var(--green-tint)}
.cins{width:100%;margin-top:9px;border:1.5px solid var(--green);background:var(--green-tint);
  color:var(--green);border-radius:5px;padding:9px;font-size:calc(12.5px * var(--fs));font-weight:700}
.theme{border-left:3px solid var(--red);background:var(--sheet);border-radius:0 5px 5px 0;
  padding:13px 15px;margin-top:12px;box-shadow:var(--ombre)}
.theme .th{display:flex;align-items:center;gap:10px}
.theme .tn{font-family:var(--display);font-weight:800;font-size:calc(15px * var(--fs));color:var(--red);
  background:var(--red-tint);border-radius:4px;min-width:calc(26px * var(--fs));text-align:center;padding:3px 0}
.theme .tt{font-family:var(--display);font-weight:700;font-size:calc(14.5px * var(--fs));line-height:1.25}
.theme .tc{font-size:calc(14px * var(--fs));line-height:1.55;color:var(--ink-2);margin:9px 0 0}
.theme .tb{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.tbtn{border:1px solid var(--rule);background:var(--paper);border-radius:5px;padding:8px 12px;
  font-size:calc(13px * var(--fs));font-weight:600}
.tps{display:block;font-family:var(--body);font-weight:500;font-size:calc(12.5px * var(--fs));
  color:var(--soft);margin-top:3px}
.chrono{margin-left:auto;font-variant-numeric:tabular-nums;font-family:var(--display);font-weight:700;font-size:calc(13px * var(--fs))}
.chrono.urgent{color:var(--red)}
.due{background:var(--green-tint);border-radius:3px;padding:2px 7px;font-size:calc(12px * var(--fs));font-weight:600;color:var(--green)}
.cr{border-bottom:1px solid var(--rule);padding:13px 0}
.cr .cl{font-size:calc(14.5px * var(--fs));line-height:1.4;margin-bottom:8px}
.cr .cm{font-family:var(--display);font-weight:700;margin-right:7px}
.cr.ok .cm{color:var(--green)}
.cr.ko .cm{color:var(--red)}
.ci{display:flex;align-items:center;gap:9px}
.ci input{width:calc(140px * var(--fs));border:0;border-bottom:1px solid var(--rule);background:transparent;
  font:inherit;font-size:calc(15px * var(--fs));text-align:right;padding:8px 4px;color:var(--ink);
  font-variant-numeric:tabular-nums;border-radius:0}
.ci input:focus{border-bottom-color:var(--green);outline:none;background:var(--green-tint)}
.cr.ok input{border-bottom-color:var(--green)}
.cr.ko input{border-bottom-color:var(--red);color:var(--red)}
.ci .u{font-size:calc(13px * var(--fs));color:var(--soft)}
.ce{margin-top:9px;font-size:calc(13.5px * var(--fs));line-height:1.5;border-left:2px solid var(--ochre);
  padding-left:12px;color:var(--ink-2)}
.ce b{font-family:var(--display)}
.ce .dg{color:var(--red);font-weight:600;margin-bottom:5px}
.fnote{background:var(--note-bg);border-left:2px solid var(--ochre);border-radius:0 3px 3px 0;
  padding:11px 13px;margin:0 0 12px;font-size:calc(13.5px * var(--fs));line-height:1.5;color:var(--ink-2)}
.verdict{font-family:var(--display);font-weight:700;font-size:calc(15px * var(--fs));margin:18px 0 6px}
.verdict.ok{color:var(--green)}
.verdict.ko{color:var(--red)}
.explain{border-left:2px solid var(--ochre);padding:2px 0 2px 13px;font-size:calc(14.5px * var(--fs));color:var(--ink-2)}

/* ---------- bilan ---------- */
.note{font-family:var(--display);font-weight:800;font-size:calc(68px * var(--fs));line-height:1;margin:20px 0 0;letter-spacing:-.03em}
.note span{font-size:calc(22px * var(--fs));color:var(--soft);font-weight:500}
.recap{margin-top:22px;border-top:1px solid var(--rule)}
.recap li{list-style:none;border-bottom:1px solid var(--rule);padding:11px 0;font-size:calc(14px * var(--fs))}
.recap ul{margin:0;padding:0}
.recap .qq{font-weight:500}
.recap .aa{color:var(--green);font-size:calc(13.5px * var(--fs));margin-top:3px}

/* ---------- composants : surfaces et effets du thème actif ---------- */
.tcompte{padding:17px 17px 14px;border:1px solid var(--rule);border-radius:10px;background:var(--summary-bg);box-shadow:var(--summary-shadow)}
.tgrid{border-top-color:var(--summary-rule)}
.tgrid .bar{background:var(--summary-bar)}
.code,.pcode,.due{box-shadow:var(--accent-shadow)}
.code{border:1px solid color-mix(in srgb,currentColor 42%,transparent);font-family:var(--display);letter-spacing:.07em;background:var(--code-bg)!important}
.row,.rowb{position:relative;isolation:isolate;transition:padding-left .18s ease,transform .18s ease,color .18s ease}
.row:before,.rowb:before{content:"";position:absolute;inset:3px -7px;border-radius:6px;background:var(--row-hover-bg);opacity:0;z-index:-1;transition:opacity .18s ease}
.row:hover,.rowb:hover{padding-left:8px;transform:translateX(2px)}
.row:hover:before,.rowb:hover:before{opacity:1}
.row:nth-child(1),.row:nth-child(2),.row:nth-child(3),.row:nth-child(4),.row:nth-child(5),.row:nth-child(6),.row:nth-child(7){animation:rise-in .42s ease both}
.row:nth-child(2){animation-delay:.04s}.row:nth-child(3){animation-delay:.08s}.row:nth-child(4){animation-delay:.12s}.row:nth-child(5){animation-delay:.16s}.row:nth-child(6){animation-delay:.20s}.row:nth-child(7){animation-delay:.24s}
.meter{height:5px;background:var(--meter-bg);box-shadow:var(--meter-shadow)}
.meter i{background:var(--meter-fill)!important;box-shadow:var(--progress-shadow);animation:charge .75s ease both}
.btn,.chip,.tbtn,.ck,.ck2,.conseil .cb{border-color:var(--rule);background:var(--button-bg);border-radius:7px;box-shadow:var(--button-shadow);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}
.btn:hover,.chip:hover,.tbtn:hover,.ck:hover,.ck2:hover,.conseil .cb:hover{transform:translateY(-2px);border-color:var(--green);box-shadow:var(--button-hover-shadow)}
.btn.solid,.ck.eg{background:var(--button-primary-bg);color:var(--button-primary-color);border-color:var(--button-primary-border);box-shadow:var(--button-primary-shadow)}
.btn.ghost{box-shadow:none;background:none}
.conseil,.theme,.enonce,.fnote,.form{border-radius:9px;border:1px solid var(--rule);border-left:3px solid var(--green);background:var(--panel-bg);box-shadow:var(--ombre)}
.conseil{border-left-color:var(--ochre)}
.cherche,.search{border-radius:8px;border-color:var(--rule);background:var(--search-bg);box-shadow:var(--search-shadow)}
.cherche:before{content:"⌁";font-family:var(--display);color:var(--green);margin-right:10px;font-size:18px}
.qbar{border-bottom-color:var(--rule);padding-top:3px}
.qline i{background:var(--progress-bg);box-shadow:var(--progress-shadow)}
.qtag{letter-spacing:.06em;text-transform:uppercase;font-size:calc(11px * var(--fs))}
.qtext,.phead h2{font-family:var(--display);letter-spacing:.01em}
.opt{border-radius:8px;border:1px solid var(--rule);border-left:3px solid var(--rule);background:var(--option-bg);box-shadow:var(--option-shadow);transition:transform .16s ease,border-color .16s ease,background .16s ease}
.opt:hover:not([disabled]){transform:translateX(4px);border-color:var(--green);background:var(--option-hover-bg)}
.opt.good{background:var(--option-correct-bg);box-shadow:var(--option-correct-shadow)}
.opt.bad{background:var(--option-incorrect-bg)}
.flashcard{border-radius:12px;border-color:var(--card-border);background:var(--card-bg);box-shadow:var(--card-shadow);animation:card-arrival .46s cubic-bezier(.2,.85,.28,1.2) both}
.flashcard:before{height:4px;background:var(--card-strip);box-shadow:var(--card-strip-shadow)}
.flashcard:hover{transform:translateY(-3px) scale(1.005);box-shadow:var(--card-hover-shadow)}
.flashcard.answer{background:var(--card-answer-bg);border-color:var(--card-answer-border)}
.flashcard .flashlabel{color:var(--card-label);letter-spacing:.12em}
.flashcard .flashtext{font-family:var(--display)}
.flashcard.answer .flashtext{font-family:var(--body)}
.phead{border-bottom-color:var(--rule);position:relative}.phead:after{content:"";position:absolute;bottom:-1px;left:0;width:34%;height:2px;background:var(--heading-line);box-shadow:var(--heading-line-shadow)}
.phead .pcode{font-size:calc(32px * var(--fs));text-shadow:var(--heading-shadow)}
.fiche{border-bottom-color:var(--rule)}
.fiche .fopen:hover h3,.fiche .fopen:hover .fx{color:var(--ochre)}
.ftab{border-color:var(--rule)}.ftab th{color:var(--ochre);border-bottom-color:var(--green)}.ftab td{border-bottom-color:var(--rule)}
.calc{background:var(--calculator-bg);backdrop-filter:var(--calculator-backdrop);border-color:var(--rule);box-shadow:var(--ombre)}
@keyframes enter-app{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes portal-spin{to{transform:rotate(1turn)}}
@keyframes rise-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes charge{from{transform:scaleX(.08);transform-origin:left;filter:brightness(.55)}to{transform:scaleX(1);transform-origin:left;filter:brightness(1)}}
@keyframes card-arrival{from{opacity:0;transform:perspective(700px) rotateX(7deg) translateY(14px)}to{opacity:1;transform:perspective(700px) rotateX(0) translateY(0)}}

/* Géométrie et typographie classiques conservées ; couleurs définies dans la palette. */
:root[data-theme="classique"] #app{animation:enter-app .4s ease both}
:root[data-theme="classique"] .masthead{border-bottom:2px solid var(--ink);padding:0 0 10px}
:root[data-theme="classique"] .masthead:after{height:0;box-shadow:none}
:root[data-theme="classique"] .wordmark{font-family:var(--display);font-size:calc(29px * var(--fs));letter-spacing:-.025em;color:var(--ink)}
:root[data-theme="classique"] .wordmark:after{display:none}
:root[data-theme="classique"] .pend{color:var(--green)}
:root[data-theme="classique"] .tcompte{padding:0;border:0;border-radius:0}
:root[data-theme="classique"] .code{border:0;letter-spacing:.01em}
:root[data-theme="classique"] .sectitle{margin-bottom:6px;letter-spacing:-.015em}
:root[data-theme="classique"] .secnote{line-height:1.55;max-width:62ch}
:root[data-theme="classique"] .ledger{margin-top:14px}
:root[data-theme="classique"] .row,:root[data-theme="classique"] .rowb{padding-top:17px;padding-bottom:17px}
:root[data-theme="classique"] .actions{gap:11px;margin-top:28px}

/* ---------- bibliothèque et provenance ---------- */
.source-hero{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:16px;margin:20px 0 24px;
  padding:17px 18px;border:1px solid var(--rule);border-left:3px solid var(--ochre);border-radius:9px;
  background:linear-gradient(130deg,color-mix(in srgb,var(--sheet) 90%,var(--ochre) 10%),var(--sheet));box-shadow:var(--ombre)}
.source-score{font-family:var(--display);font-size:calc(39px * var(--fs));font-weight:800;line-height:1;color:var(--ochre);letter-spacing:-.04em}
.source-hero h3{font-family:var(--display);font-size:calc(15px * var(--fs));margin:0 0 3px}
.source-hero p{font-size:calc(12.5px * var(--fs));color:var(--soft);line-height:1.45;margin:0}
.source-card{border:1px solid var(--rule);border-radius:8px;background:var(--sheet);box-shadow:var(--ombre);padding:15px 16px;margin-top:11px}
.source-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.source-badge{font-size:calc(10.5px * var(--fs));font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
.source-pct{font-family:var(--display);font-size:calc(15px * var(--fs));font-weight:800;color:var(--ochre);white-space:nowrap}
.source-card h3{font-family:var(--display);font-size:calc(15px * var(--fs));line-height:1.3;margin:0}
.source-card p{font-size:calc(12.5px * var(--fs));color:var(--soft);line-height:1.45;margin:5px 0 0}
.source-links{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.source-links button{border:1px solid var(--rule);border-radius:999px;background:var(--green-tint);color:var(--ink-2);font:inherit;font-size:calc(11.5px * var(--fs));font-weight:600;padding:6px 9px}
.source-links button:hover{border-color:var(--green);color:var(--green)}
.source-method{border-left:2px solid var(--green);padding:4px 0 4px 12px;margin:8px 0 0;font-size:calc(13px * var(--fs));color:var(--ink-2);line-height:1.5}

/* ---------- rédaction CEJM ---------- */
.cejm-mission{margin-top:17px;padding:16px;border:1px solid var(--rule);border-left:3px solid var(--green);border-radius:8px;background:var(--sheet);box-shadow:var(--ombre)}
.cejm-mission h3{font-family:var(--display);font-size:calc(15px * var(--fs));line-height:1.35;margin:0 0 6px}
.cejm-mission .consigne{font-size:calc(14px * var(--fs));line-height:1.55;margin:0;color:var(--ink-2)}
.cejm-mission details{margin-top:11px;font-size:calc(12.5px * var(--fs));color:var(--soft)}
.cejm-mission summary{cursor:pointer;font-weight:600;color:var(--green)}
.cejm-mission details p{margin:7px 0 0;line-height:1.45}
.cejm-reponse{display:block;width:100%;min-height:150px;resize:vertical;margin-top:13px;border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink);font:inherit;font-size:calc(13.5px * var(--fs));line-height:1.55;padding:11px 12px}
.cejm-reponse:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 17%,transparent)}
.cejm-corr{margin-top:13px;padding:12px 13px;border-radius:6px;background:var(--note-bg);border-left:2px solid var(--ochre);font-size:calc(13px * var(--fs));line-height:1.5}
.cejm-corr b{display:block;margin-bottom:4px;color:var(--ochre)}
.cejm-corr ul{margin:6px 0 0;padding-left:18px}.cejm-corr li+li{margin-top:5px}
.cejm-annexes{margin-top:22px}
.cejm-annexes-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.cejm-annexe{border:1px solid var(--rule);border-radius:7px;background:var(--sheet);margin-top:8px;overflow:hidden}
.cejm-annexe summary{cursor:pointer;padding:12px 13px;font-size:calc(13px * var(--fs));font-weight:700;list-style:none}
.cejm-annexe summary::-webkit-details-marker{display:none}
.cejm-annexe summary:after{content:"+";float:right;color:var(--green);font-family:var(--display);font-size:calc(17px * var(--fs));line-height:.9}
.cejm-annexe[open] summary{border-bottom:1px solid var(--rule)}.cejm-annexe[open] summary:after{content:"−"}
.cejm-annexe-body{padding:12px 13px 14px;font-size:calc(13px * var(--fs));line-height:1.55;color:var(--ink-2)}
.cejm-annexe-body p{margin:0 0 8px}.cejm-annexe-body p:last-child{margin-bottom:0}
.cejm-refs{font-size:calc(11.5px * var(--fs));color:var(--soft);margin:6px 0 0}
@media (min-width:900px){
  #app{max-width:900px;padding:28px 26px 72px}
  .colonnes{display:grid;grid-template-columns:1fr 1fr;column-gap:26px}
  .colonnes .row{border-bottom:1px solid var(--rule)}
  .actions{grid-template-columns:1fr 1fr}
  .actions .btn.solid,.actions .btn.ghost{grid-column:1/-1}
  .qtext{font-size:calc(26px * var(--fs))}
}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
