/* Extrait de student_dashboard.html. Ordre historique : 7. */
#sntApp{--snt-accent:#5b54e8;--snt-accent2:#14b8a6;--snt-ia:#c026d3;--snt-ia-soft:#fbeafe;--snt-ia-ink:#86198f;
  --snt-bg:#f4f5fb;--snt-surface:#fff;--snt-surface2:#f7f8fc;--snt-ink:#191b2e;--snt-muted:#5a5f7a;--snt-line:#e3e6f1;
  --snt-ok:#16a34a;--snt-ok-soft:#e7f7ec;--snt-warn:#d97706;--snt-bad:#dc2626;--snt-bad-soft:#fdecec;
  --snt-radius:16px;--snt-shadow:0 1px 2px rgba(20,22,46,.05),0 10px 30px rgba(20,22,46,.07);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--snt-ink);line-height:1.55;background:var(--snt-bg);padding:18px 16px;border-radius:18px;border:1px solid var(--snt-line);}
#sntApp.snt-dark{--snt-bg:#0e1020;--snt-surface:#181a2e;--snt-surface2:#1f2238;--snt-ink:#eef0fb;--snt-muted:#a4a9c9;--snt-line:#2c3050;--snt-ia-soft:#2a1733;--snt-ia-ink:#f0abfc;--snt-ok-soft:#15321f;--snt-bad-soft:#3a1717;}
#sntApp *{box-sizing:border-box}
#sntApp .snt-hero{background:linear-gradient(135deg,#4f46e5,#7c3aed 55%,#c026d3);color:#fff;border-radius:var(--snt-radius);padding:24px 26px;position:relative;overflow:hidden;margin-bottom:10px}
#sntApp .snt-hero h2{margin:.15em 0;font-size:clamp(1.5rem,3.6vw,2.1rem);font-weight:800;letter-spacing:-.02em;color:#fff}
#sntApp .snt-eyebrow{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:.85;font-weight:700}
#sntApp .snt-hero p{margin:.2em 0 0;opacity:.92;max-width:48ch}
#sntApp .snt-heronet{position:absolute;inset:0;opacity:.3;z-index:1}
#sntApp .snt-hero>*{position:relative;z-index:2}
#sntApp .snt-toolbar{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
#sntApp .snt-ghost{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.3);padding:6px 12px;border-radius:999px;font-size:.83rem;cursor:pointer;font-weight:600;font-family:inherit}
#sntApp .snt-ghost:hover{background:rgba(255,255,255,.26)}
/* fil d'ariane */
#sntApp .snt-bc{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.85rem;color:var(--snt-muted);margin:4px 0 12px}
#sntApp .snt-bc a{color:var(--snt-accent);cursor:pointer;font-weight:600;text-decoration:none}
#sntApp .snt-bc a:hover{text-decoration:underline}
#sntApp .snt-bc span.snt-sep{opacity:.5}
/* vues */
#sntApp .snt-view{display:none}
#sntApp .snt-view.snt-on{display:block;animation:sntFade .3s ease}
@keyframes sntFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#sntApp .snt-view.snt-on,#sntApp .snt-panel.snt-on{animation:none}}
/* grilles de cartes */
#sntApp .snt-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));margin-top:8px}
#sntApp .snt-tile{background:var(--snt-surface);border:1px solid var(--snt-line);border-radius:var(--snt-radius);padding:18px 18px;box-shadow:var(--snt-shadow);cursor:pointer;transition:.18s;position:relative;text-align:left;font-family:inherit;color:var(--snt-ink)}
#sntApp .snt-tile:hover{transform:translateY(-3px);border-color:var(--snt-accent)}
#sntApp .snt-tile.snt-soon{cursor:not-allowed;opacity:.62}
#sntApp .snt-tile.snt-soon:hover{transform:none;border-color:var(--snt-line)}
#sntApp .snt-tile .snt-ico{font-size:2rem;line-height:1}
#sntApp .snt-tile h4{margin:.5em 0 .2em;font-size:1.08rem}
#sntApp .snt-tile p{margin:0;font-size:.84rem;color:var(--snt-muted)}
#sntApp .snt-tnum{position:absolute;top:14px;right:14px;font-weight:800;color:var(--snt-line);font-size:1.3rem}
#sntApp .snt-status{display:inline-block;margin-top:10px;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px}
#sntApp .snt-live{background:var(--snt-ok-soft);color:var(--snt-ok)}
#sntApp .snt-wip{background:#fff7e6;color:#b45309}
#sntApp.snt-dark .snt-wip{background:#3a2c10}
/* nav séances */
#sntApp .snt-nav{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px;position:sticky;top:0;background:var(--snt-bg);z-index:5}
#sntApp .snt-chip{flex:0 0 auto;border:1px solid var(--snt-line);background:var(--snt-surface2);color:var(--snt-muted);padding:7px 12px;border-radius:999px;font-size:.82rem;font-weight:600;cursor:pointer;white-space:nowrap;display:flex;gap:7px;align-items:center;font-family:inherit}
#sntApp .snt-chip .snt-num{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--snt-line);font-size:.72rem}
#sntApp .snt-chip.snt-on{border-color:var(--snt-accent);color:var(--snt-accent);background:color-mix(in srgb,var(--snt-accent) 10%,transparent)}
#sntApp .snt-chip.snt-done .snt-num{background:var(--snt-ok);color:#fff}#sntApp .snt-chip.snt-done{color:var(--snt-ok)}
#sntApp .snt-pbar{height:4px;background:var(--snt-line);border-radius:999px;overflow:hidden;margin-bottom:6px}
#sntApp .snt-pbar>span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--snt-accent),var(--snt-ia));transition:width .4s}
#sntApp .snt-panel{display:none}#sntApp .snt-panel.snt-on{display:block;animation:sntFade .3s ease}
#sntApp .snt-shead{margin:14px 0 2px}
#sntApp .snt-stag{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--snt-accent);font-weight:800}
#sntApp .snt-shead h3{margin:.12em 0;font-size:clamp(1.25rem,3vw,1.7rem);font-weight:800}
#sntApp .snt-obj{font-size:.86rem;color:var(--snt-muted);margin:.2em 0 0}
/* déroulé */
#sntApp .snt-deroule{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0;font-size:.76rem}
#sntApp .snt-step{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:999px;padding:4px 10px;color:var(--snt-muted);font-weight:600}
/* vidéo déclencheur */
#sntApp .snt-video{background:linear-gradient(135deg,#0f172a,#1e1b4b);border:1px solid var(--snt-line);border-radius:var(--snt-radius);padding:16px 18px;margin:14px 0;color:#fff}
#sntApp .snt-video .snt-vh{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:.8rem;color:#c4b5fd}
#sntApp .snt-video .snt-vreq{margin-left:auto;background:#dc2626;color:#fff;font-size:.66rem;padding:3px 9px;border-radius:999px;letter-spacing:.06em}
#sntApp .snt-video h4{margin:.5em 0;color:#fff;font-size:1rem}
#sntApp .snt-embed{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:10px;overflow:hidden;margin:6px 0}
#sntApp .snt-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
#sntApp .snt-vlink{display:inline-flex;align-items:center;gap:8px;background:#5b54e8;color:#fff;text-decoration:none;padding:11px 18px;border-radius:10px;font-weight:700;margin:6px 0}
#sntApp .snt-vrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}
#sntApp .snt-vrow input[type=text]{flex:1;min-width:200px;padding:8px 11px;border-radius:8px;border:1px solid #3a3470;background:#0f172a;color:#fff;font-family:inherit;font-size:.85rem}
#sntApp .snt-vrow button{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.3);padding:8px 13px;border-radius:8px;cursor:pointer;font-weight:600;font-family:inherit}
#sntApp .snt-vcheck{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:.85rem;color:#e9d5ff}
#sntApp .snt-vcheck input{width:17px;height:17px}
/* cartes contenu */
#sntApp .snt-card{background:var(--snt-surface);border:1px solid var(--snt-line);border-radius:var(--snt-radius);padding:18px 20px;margin:14px 0;box-shadow:var(--snt-shadow)}
#sntApp .snt-card h4{margin:.1em 0 .5em;font-size:1.04rem}
#sntApp .snt-lab{display:inline-block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;font-weight:800;padding:3px 9px;border-radius:6px;margin-bottom:6px}
#sntApp .snt-l-not{background:#eef2ff;color:#4338ca}#sntApp .snt-l-acc{background:#fff7e6;color:#b45309}#sntApp .snt-l-ate{background:#ecfdf5;color:#0f766e}#sntApp .snt-l-cri{background:#fef2f2;color:#b91c1c}#sntApp .snt-l-exo{background:#f1f5f9;color:#334155}
#sntApp.snt-dark .snt-l-not{background:#1e2150}#sntApp.snt-dark .snt-l-acc{background:#3a2c10}#sntApp.snt-dark .snt-l-ate{background:#10302a}#sntApp.snt-dark .snt-l-cri{background:#3a1717}#sntApp.snt-dark .snt-l-exo{background:#22293a}
#sntApp .snt-ia{background:var(--snt-ia-soft);border:1px solid color-mix(in srgb,var(--snt-ia) 30%,var(--snt-line));border-left:5px solid var(--snt-ia);border-radius:var(--snt-radius);padding:16px 20px;margin:14px 0}
#sntApp .snt-iab{display:inline-flex;gap:7px;align-items:center;font-weight:800;color:var(--snt-ia-ink);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;margin-bottom:7px}
#sntApp .snt-iab .snt-dot{width:10px;height:10px;border-radius:50%;background:var(--snt-ia);box-shadow:0 0 0 4px color-mix(in srgb,var(--snt-ia) 22%,transparent)}
#sntApp .snt-ia h4{color:var(--snt-ia-ink)}
#sntApp p{margin:.5em 0}#sntApp ul.snt-ul{margin:.4em 0;padding-left:1.2em}#sntApp ul.snt-ul li{margin:.3em 0}
#sntApp .snt-key{font-weight:700;color:var(--snt-accent)}#sntApp .snt-ia .snt-key{color:var(--snt-ia-ink)}
#sntApp .snt-small{font-size:.85rem;color:var(--snt-muted)}
#sntApp .snt-doc{background:var(--snt-surface2);border:1px dashed var(--snt-line);border-radius:12px;padding:12px 15px;margin:10px 0;font-size:.92rem}
#sntApp .snt-doc .snt-src{font-size:.74rem;color:var(--snt-muted);margin-top:6px;font-style:italic}
#sntApp .snt-lex{display:grid;gap:6px;margin-top:6px}#sntApp .snt-lex div{font-size:.88rem}#sntApp .snt-lex b{color:var(--snt-accent)}
/* boutons / picks */
#sntApp .snt-btn{background:var(--snt-accent);color:#fff;border:none;padding:9px 15px;border-radius:10px;font-weight:700;cursor:pointer;font-size:.9rem;font-family:inherit}
#sntApp .snt-btn:hover{filter:brightness(1.06)}
#sntApp .snt-btn.snt-sec{background:var(--snt-surface2);color:var(--snt-ink);border:1px solid var(--snt-line)}
#sntApp .snt-pick{border:1px solid var(--snt-line);background:var(--snt-surface2);padding:8px 13px;border-radius:999px;cursor:pointer;font-size:.88rem;font-weight:600;font-family:inherit;color:var(--snt-ink)}
#sntApp .snt-pick.snt-sel{background:var(--snt-accent);color:#fff;border-color:var(--snt-accent)}
#sntApp .snt-picks{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
#sntApp .snt-readout{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:12px;padding:12px 14px;font-size:.9rem;min-height:56px}
#sntApp .snt-meter{height:12px;background:var(--snt-line);border-radius:999px;overflow:hidden;margin-top:6px}#sntApp .snt-meter>span{display:block;height:100%;background:linear-gradient(90deg,var(--snt-bad),var(--snt-warn),var(--snt-ok));width:100%;transition:width .5s}
#sntApp .snt-feed{display:grid;gap:8px;margin-top:12px}#sntApp .snt-post{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:10px;padding:9px 12px;font-size:.9rem}
#sntApp .snt-infer{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
#sntApp .snt-tag{background:color-mix(in srgb,var(--snt-ia) 12%,transparent);color:var(--snt-ia-ink);border:1px solid color-mix(in srgb,var(--snt-ia) 30%,transparent);padding:5px 11px;border-radius:999px;font-size:.84rem;font-weight:600;opacity:0;transform:translateY(4px);transition:.3s}
#sntApp .snt-tag.snt-show{opacity:1;transform:none}
/* graphe */
#sntApp .snt-gbox{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:640px){#sntApp .snt-gbox{grid-template-columns:1.3fr 1fr}}
#sntApp svg .snt-node{cursor:pointer}#sntApp svg .snt-node circle{fill:var(--snt-surface2);stroke:var(--snt-accent);stroke-width:2;transition:.2s}
#sntApp svg .snt-node.snt-hi circle{fill:var(--snt-accent)}#sntApp svg .snt-node.snt-hi text{fill:#fff}
#sntApp svg .snt-node.snt-spread circle{fill:var(--snt-ia);stroke:var(--snt-ia)}#sntApp svg .snt-node.snt-spread text{fill:#fff}
#sntApp svg .snt-node text{font-size:11px;font-weight:700;fill:var(--snt-ink);pointer-events:none}
#sntApp svg .snt-edge{stroke:var(--snt-line);stroke-width:2}#sntApp svg .snt-edge.snt-hi{stroke:var(--snt-accent);stroke-width:3}
/* modération */
#sntApp .snt-msg{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:12px;padding:12px 14px;margin:10px 0}#sntApp .snt-msg p{margin:0 0 8px}
#sntApp .snt-modb{display:flex;gap:6px;flex-wrap:wrap}
#sntApp .snt-modb button{font-size:.8rem;padding:6px 11px;border-radius:8px;border:1px solid var(--snt-line);background:var(--snt-surface);cursor:pointer;font-weight:600;font-family:inherit;color:var(--snt-ink)}
#sntApp .snt-modb button.snt-sel{background:var(--snt-accent);color:#fff;border-color:var(--snt-accent)}
#sntApp .snt-verdict{margin-top:9px;font-size:.85rem;display:none}#sntApp .snt-verdict.snt-show{display:block}
#sntApp .snt-vok{color:var(--snt-ok)}#sntApp .snt-vbad{color:var(--snt-bad)}#sntApp .snt-vamb{color:var(--snt-warn)}
/* exercices avec saisie */
#sntApp .snt-ex{border-top:1px dashed var(--snt-line);padding-top:12px;margin-top:12px}#sntApp .snt-ex:first-child{border-top:none}
#sntApp .snt-ex-q{font-weight:600;margin-bottom:6px}
#sntApp .snt-ta{width:100%;min-height:64px;resize:vertical;padding:9px 11px;border:1px solid var(--snt-line);border-radius:10px;background:var(--snt-surface2);color:var(--snt-ink);font-family:inherit;font-size:.92rem}
#sntApp .snt-ta:focus{outline:2px solid color-mix(in srgb,var(--snt-accent) 50%,transparent);border-color:var(--snt-accent)}
#sntApp .snt-exbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:center}
#sntApp .snt-saved{font-size:.8rem;color:var(--snt-ok);font-weight:600;display:none}#sntApp .snt-saved.snt-show{display:inline}
#sntApp .snt-reveal{font-size:.8rem;padding:6px 12px;border-radius:8px;border:1px solid var(--snt-line);background:var(--snt-surface2);cursor:pointer;font-weight:600;font-family:inherit;color:var(--snt-ink)}
#sntApp .snt-ex-a{display:none;margin-top:8px;font-size:.9rem;background:var(--snt-ok-soft);border-left:3px solid var(--snt-ok);padding:9px 12px;border-radius:8px}#sntApp .snt-ex-a.snt-show{display:block}
/* QCM */
#sntApp .snt-q{margin:14px 0;padding-top:12px;border-top:1px dashed var(--snt-line)}#sntApp .snt-q:first-child{border-top:none}
#sntApp .snt-qt{font-weight:700;margin-bottom:8px}#sntApp .snt-qo{display:grid;gap:7px}
#sntApp .snt-opt{text-align:left;border:1px solid var(--snt-line);background:var(--snt-surface2);padding:10px 13px;border-radius:10px;cursor:pointer;font-size:.92rem;font-family:inherit;color:var(--snt-ink);transition:.15s}
#sntApp .snt-opt:hover{border-color:var(--snt-accent)}
#sntApp .snt-opt.snt-correct{background:var(--snt-ok-soft);border-color:var(--snt-ok);font-weight:600}#sntApp .snt-opt.snt-wrong{background:var(--snt-bad-soft);border-color:var(--snt-bad)}
#sntApp .snt-opt:disabled{cursor:default}
#sntApp .snt-exp{display:none;margin-top:8px;font-size:.87rem;background:var(--snt-surface2);border-left:3px solid var(--snt-accent);padding:9px 12px;border-radius:8px}#sntApp .snt-exp.snt-show{display:block}
#sntApp .snt-foot{display:flex;justify-content:space-between;gap:12px;margin:24px 0 8px;flex-wrap:wrap}
#sntApp .snt-pill{display:inline-flex;align-items:center;gap:8px;background:var(--snt-surface);border:1px solid var(--snt-line);border-radius:999px;padding:7px 14px;font-weight:700;font-size:.9rem}
#sntApp details.snt-prof{background:var(--snt-surface);border:1px dashed var(--snt-accent);border-radius:12px;padding:0 16px;margin:12px 0}
#sntApp details.snt-prof summary{cursor:pointer;font-weight:700;padding:13px 0;color:var(--snt-accent)}
#sntApp details.snt-prof table{width:100%;border-collapse:collapse;font-size:.86rem;margin:4px 0 14px}
#sntApp details.snt-prof td{padding:6px 8px;border-bottom:1px solid var(--snt-line);vertical-align:top}#sntApp details.snt-prof td:first-child{font-weight:700;width:34%;color:var(--snt-muted)}
#sntApp .snt-help{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;border-radius:14px;padding:16px 18px;margin:14px 0}
#sntApp.snt-dark .snt-help{background:linear-gradient(135deg,#2a1414,#371717);border-color:#5a2a2a}
#sntApp .snt-help h4{margin-top:0;color:var(--snt-bad)}#sntApp .snt-3018{font-size:1.6rem;font-weight:900;color:var(--snt-bad)}
#sntApp .snt-sgrid{display:grid;gap:12px;grid-template-columns:1fr}@media(min-width:620px){#sntApp .snt-sgrid{grid-template-columns:1fr 1fr}}
#sntApp .snt-sgrid .snt-it{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:12px;padding:13px 15px;font-size:.92rem}#sntApp .snt-sgrid .snt-it b{color:var(--snt-ia-ink)}
#sntApp .snt-big{font-size:2.3rem;font-weight:900;background:linear-gradient(90deg,var(--snt-accent),var(--snt-ia));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
#sntApp .snt-proj{background:linear-gradient(135deg,#eef2ff,#fbeafe);border:1px solid #ddd6fe;border-radius:14px;padding:16px 18px}#sntApp.snt-dark .snt-proj{background:linear-gradient(135deg,#1e2150,#2a1733);border-color:#3a3470}

#sntApp .snt-phase{margin:22px 0 4px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
#sntApp .snt-phase .snt-ph-n{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;font-weight:800;color:var(--snt-accent)}
#sntApp .snt-phase h4{margin:.1em 0;font-size:1.15rem;font-weight:800}
#sntApp .snt-time{margin-left:auto;font-size:.76rem;font-weight:700;color:var(--snt-muted);background:var(--snt-surface);border:1px solid var(--snt-line);padding:3px 10px;border-radius:999px;white-space:nowrap}
#sntApp .snt-l-doc{background:#eef2ff;color:#4338ca}
#sntApp .snt-l-cours{background:#fff7e6;color:#b45309}
#sntApp .snt-l-trace{background:#fae8ff;color:#86198f}
#sntApp.snt-dark .snt-l-doc{background:#1e2150}#sntApp.snt-dark .snt-l-cours{background:#3a2c10}#sntApp.snt-dark .snt-l-trace{background:#2a1733}
#sntApp .snt-frise{margin:6px 0}
#sntApp .snt-fr{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:9px 0 9px 18px;border-left:2px solid var(--snt-line);margin-left:8px;position:relative}
#sntApp .snt-fr::before{content:"";position:absolute;left:-7px;top:14px;width:12px;height:12px;border-radius:50%;background:var(--snt-accent);border:2px solid var(--snt-surface)}
#sntApp .snt-fr.snt-ia-step::before{background:var(--snt-ia)}
#sntApp .snt-fr .snt-yr{font-weight:800;color:var(--snt-accent);font-size:.86rem}
#sntApp .snt-fr.snt-ia-step .snt-yr{color:var(--snt-ia-ink)}
#sntApp .snt-fr .snt-ev b{display:block;margin-bottom:2px}
#sntApp .snt-switcher{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
#sntApp .snt-switcher button{border:1px solid var(--snt-line);background:var(--snt-surface2);padding:9px 14px;border-radius:10px;font-weight:700;cursor:pointer;font-family:inherit;font-size:.88rem;color:var(--snt-ink)}
#sntApp .snt-switcher button.snt-on{background:var(--snt-accent);color:#fff;border-color:var(--snt-accent)}
#sntApp .snt-switcher button.snt-on.snt-algo{background:var(--snt-ia);border-color:var(--snt-ia)}
#sntApp .snt-cfeed{display:grid;gap:8px;margin-top:8px}
#sntApp .snt-cpost{display:grid;grid-template-columns:1fr auto;gap:10px;background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:12px;padding:11px 14px;transition:.35s}
#sntApp .snt-cpost .snt-pmeta{font-size:.78rem;color:var(--snt-muted)}
#sntApp .snt-cpost .snt-cscore{font-size:.78rem;font-weight:700;color:var(--snt-ia-ink);align-self:center;white-space:nowrap}
#sntApp .snt-cfeed.snt-hide .snt-cscore{visibility:hidden}
#sntApp .snt-trace{background:linear-gradient(135deg,#faf5ff,#fae8ff);border:1px solid #e9d5ff;border-radius:var(--snt-radius);padding:18px 20px;margin:14px 0}
#sntApp.snt-dark .snt-trace{background:linear-gradient(135deg,#241830,#2a1733);border-color:#3a3470}
#sntApp .snt-trace h4{margin-top:0;color:#86198f}#sntApp.snt-dark .snt-trace h4{color:#f0abfc}
#sntApp .snt-devoirs{background:var(--snt-surface);border:1px solid var(--snt-line);border-left:5px solid var(--snt-accent2);border-radius:var(--snt-radius);padding:18px 20px;margin:14px 0}


#sntApp .snt-toolrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}
#sntApp .snt-out{background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:10px;padding:10px 12px;margin-top:8px;font-size:.92rem}
#sntApp .snt-mono{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:.84rem;white-space:pre-wrap;word-break:break-all}
#sntApp table.snt-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:8px}
#sntApp .snt-table th,#sntApp .snt-table td{border-bottom:1px solid var(--snt-line);padding:6px 8px;text-align:left}
#sntApp .snt-table th{cursor:pointer;color:var(--snt-accent)}
#sntApp textarea.snt-editor{width:100%;min-height:130px;font-family:ui-monospace,Consolas,monospace;font-size:.85rem;background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:10px;padding:10px;color:var(--snt-ink)}
#sntApp iframe.snt-frame{width:100%;height:220px;border:1px solid var(--snt-line);border-radius:10px;background:#fff}
#sntApp input[type=range].snt-range{width:170px;vertical-align:middle}
#sntApp .snt-pkt{display:inline-block;background:var(--snt-surface2);border:1px solid var(--snt-line);border-radius:8px;padding:4px 8px;margin:3px;font-size:.82rem}
#sntApp .snt-pkt.snt-lost{opacity:.4;text-decoration:line-through}


/* ===== Impression de la copie élève ===== */
#sntPrintZone{display:none}
@media print{
  body.snt-printing>*:not(#sntPrintZone){display:none!important}
  body.snt-printing #sntPrintZone{display:block!important}
}
#sntPrintZone{font:12pt/1.5 Georgia,'Times New Roman',serif;color:#000;background:#fff;padding:0 2mm}
#sntPrintZone h1{font-size:16pt;margin:0 0 1mm;border-bottom:2px solid #000;padding-bottom:1.5mm}
#sntPrintZone h2{font-size:12.5pt;margin:0 0 3mm;font-weight:normal;font-style:italic}
#sntPrintZone .p-meta{margin:0 0 1.5mm}
#sntPrintZone .p-obj{font-size:10.5pt;margin:0 0 4mm;color:#000}
#sntPrintZone .p-item{margin:0 0 4mm;page-break-inside:avoid}
#sntPrintZone .p-q{font-weight:bold;margin-bottom:1mm}
#sntPrintZone .p-a{border:1px solid #777;border-left:3px solid #000;padding:2mm 3mm;min-height:11mm;white-space:pre-wrap}
#sntPrintZone .p-empty{color:#555;font-style:italic}
#sntPrintZone .p-score{margin:4mm 0;padding:2mm 3mm;border:2px solid #000;display:inline-block}
#sntPrintZone .p-sign{margin-top:6mm;page-break-inside:avoid}
#sntPrintZone .p-line{border-bottom:1px dotted #000;height:8mm}


/* ===== Verrouillage des corrections & états QCM ===== */
#sntApp .snt-lockmsg{display:none;margin-top:6px;font-size:.82rem;color:var(--snt-warn,#d97706);background:rgba(217,119,6,.08);border:1px dashed var(--snt-warn,#d97706);border-radius:8px;padding:7px 10px}
#sntApp .snt-lockmsg.snt-show{display:block}
#sntApp .snt-ta.snt-need{outline:2px solid var(--snt-warn,#d97706);outline-offset:1px}
#sntApp .snt-q-wrong .snt-qt::after{content:" · ✗ à revoir";color:#ef4444;font-size:.8em;font-weight:600}


/* ===== Missions d'application ===== */
#sntApp .snt-mission{border-left:4px solid var(--snt-accent,#7c6cf0)}
#sntApp .snt-m-ctx{margin:6px 0 8px}
#sntApp .snt-m-steps{margin:0 0 8px;padding-left:20px}
#sntApp .snt-m-steps li{margin:0 0 5px}
#sntApp .snt-m-crit{font-size:.86rem;background:var(--snt-surface2,#f4f5fb);border-radius:8px;padding:7px 10px;margin:0 0 10px}
#sntApp .snt-autoeval{width:100%;border-collapse:collapse;font-size:.88rem;margin-top:6px}
#sntApp .snt-autoeval th,#sntApp .snt-autoeval td{border:1px solid var(--snt-line,#dfe2f0);padding:6px 8px;text-align:left}
#sntApp .snt-autoeval td:nth-child(n+2),#sntApp .snt-autoeval th:nth-child(n+2){text-align:center;width:78px}
/* ===== Thèmes verrouillés ===== */
#sntApp .snt-tile.snt-lockedT{opacity:.55;filter:grayscale(.35)}
#sntApp .snt-status.snt-lockst{background:#fee2e2;color:#b91c1c}


/* ===== Guidage ressources (pastilles dans les zones de questions) ===== */
#sntApp .snt-resq{background:rgba(59,130,246,.10);border:1px solid rgba(59,130,246,.35);border-left:4px solid #3b82f6;border-radius:10px;padding:8px 12px;margin:0 0 12px;font-size:.86rem}
#sntApp .snt-resq-s{opacity:.8;font-size:.92em}
#sntApp .snt-golink{color:#2563eb;font-weight:700;text-decoration:underline;text-underline-offset:2px}
#sntApp .snt-step{cursor:pointer;transition:background .15s,color .15s}
#sntApp .snt-step:hover{background:var(--snt-accent);color:#fff;border-color:var(--snt-accent)}
#sntApp .snt-flash{outline:3px solid var(--snt-accent);outline-offset:4px;border-radius:12px}


/* ===== Référentiel+ & Python ===== */
#sntApp .snt-extra{border-left:4px solid #0ea5e9}
#sntApp .snt-py{border-left:4px solid #3776ab;background:linear-gradient(180deg,rgba(255,212,59,.06),transparent 40%)}
#sntApp .snt-code{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px 16px;font:.84rem/1.55 ui-monospace,Consolas,monospace;overflow-x:auto;white-space:pre;margin:10px 0}


/* ===== P1 : mission flexible + documents ===== */
#sntApp .snt-mflex{font-weight:400;font-size:.82em;opacity:.85;letter-spacing:0;text-transform:none}
#sntApp .snt-doc table{border-collapse:collapse;width:100%;font-size:.86rem;margin:6px 0}
#sntApp .snt-doc th,#sntApp .snt-doc td{border:1px solid var(--snt-line,#3a3f5c);padding:5px 9px;text-align:left}
#sntApp .snt-doc th{opacity:.85;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
#sntApp .snt-doc pre{white-space:pre-wrap;font:12.5px/1.55 ui-monospace,Consolas,Menlo,monospace;background:rgba(15,17,32,.5);border:1px solid var(--snt-line,#3a3f5c);border-radius:8px;padding:10px 12px;margin:6px 0;overflow:auto}


/* ===== Accroches humanisées ===== */
#sntApp .snt-accroche{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(135deg,rgba(124,108,240,.14),rgba(192,38,211,.10));border:1px solid rgba(124,108,240,.4);border-left:4px solid var(--snt-accent,#7c6cf0);border-radius:12px;padding:13px 16px;margin:0 0 14px}
#sntApp .snt-accroche .snt-acc-ico{font-size:1.35rem;line-height:1.2}
#sntApp .snt-accroche p{margin:0;font-size:.98rem;line-height:1.6}


/* ===== Fiche synthèse ===== */
#sntApp .snt-synth{border-left:4px solid #f59e0b;position:relative}
#sntApp .snt-synth .snt-syprint{position:absolute;top:14px;right:14px;padding:6px 12px;border-radius:999px;border:1px solid rgba(245,158,11,.55);background:rgba(245,158,11,.15);color:inherit;font-weight:600;font-size:.82rem;cursor:pointer}
#sntApp .snt-synth .snt-syprint:hover{background:rgba(245,158,11,.3)}
#sntApp .snt-sybody h4{margin:12px 0 6px;font-size:.98rem}
#sntApp .snt-sybody ol,#sntApp .snt-sybody ul{margin:0 0 6px;padding-left:20px}
#sntApp .snt-sybody li{margin:0 0 5px}

/* 24/08/2026 — ressource vidéo hébergée ailleurs et non intégrable.
   Un lien nu se lisait comme un lecteur en panne. */
.snt-vext{border:1px dashed var(--snt-bd,#cbd5e1);border-radius:10px;padding:.9rem 1rem;text-align:center}
.snt-vext p{margin:0 0 .6rem 0;opacity:.85}
.snt-vext .snt-vlink{display:inline-block;padding:.55rem 1.1rem;border-radius:8px;
  background:linear-gradient(135deg,#0f766e,#14b8a6);color:#fff;font-weight:600;text-decoration:none}
.snt-vext .snt-vlink:hover{filter:brightness(1.08)}

/* ===== Architecture & Construction — identité visuelle dédiée =====
   Tous les sélecteurs sont cloisonnés par data-subject="ac" : aucune règle
   ci-dessous ne modifie l'apparence du parcours SNT. */
#sntApp[data-subject="ac"]{--snt-accent:#0284c7;--snt-accent2:#06b6d4;--snt-ok:#059669}
#sntApp[data-subject="ac"] .snt-hero{background:linear-gradient(125deg,#082f49 0%,#0369a1 45%,#0891b2 100%);box-shadow:0 22px 50px rgba(3,105,161,.22)}
#sntApp[data-subject="ac"] .snt-hero:after{content:"";position:absolute;right:-70px;top:-105px;width:270px;height:270px;border:44px solid rgba(255,255,255,.09);border-radius:50%;z-index:1}
#sntApp[data-subject="ac"] .snt-grid{gap:17px}
#sntApp[data-subject="ac"] .ac-roadmap-head{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:20px 22px;border-radius:18px;background:linear-gradient(115deg,#ecfeff,#eff6ff);border:1px solid #bae6fd;color:#0c4a6e}
#sntApp[data-subject="ac"] .ac-roadmap-head strong{display:block;font-size:1.28rem;margin:3px 0}
#sntApp[data-subject="ac"] .ac-roadmap-head p{margin:0;color:#486581;font-size:.88rem}
#sntApp[data-subject="ac"] .ac-roadmap-kicker{font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.09em;color:#0284c7}
#sntApp[data-subject="ac"] .ac-roadmap-score{flex:0 0 auto;display:grid;place-items:center;width:116px;height:82px;border-radius:16px;background:#fff;border:1px solid #bae6fd;box-shadow:0 8px 20px rgba(3,105,161,.09)}
#sntApp[data-subject="ac"] .ac-roadmap-score b{font-size:1.35rem;color:#0369a1}#sntApp[data-subject="ac"] .ac-roadmap-score span{font-size:.7rem;color:#627d98}
#sntApp[data-subject="ac"] .ac-theme-tile{overflow:hidden;border-top:5px solid var(--ac-theme);min-height:245px;display:flex;flex-direction:column}
#sntApp[data-subject="ac"] .ac-theme-tile:before{content:"";position:absolute;right:-35px;top:-35px;width:110px;height:110px;border-radius:50%;background:color-mix(in srgb,var(--ac-theme) 11%,transparent)}
#sntApp[data-subject="ac"] .ac-theme-tile:hover{border-color:var(--ac-theme);box-shadow:0 14px 30px color-mix(in srgb,var(--ac-theme) 20%,transparent)}
#sntApp[data-subject="ac"] .ac-theme-tile .snt-tnum{color:var(--ac-theme);font-weight:850}
#sntApp[data-subject="ac"] .ac-theme-tile .snt-ico{font-size:2.25rem;margin-top:9px}
#sntApp[data-subject="ac"] .ac-theme-tile h4{font-size:1.04rem;margin-top:8px}
#sntApp[data-subject="ac"] .ac-theme-tile p{flex:1;line-height:1.5}
#sntApp[data-subject="ac"] .ac-tile-meta{display:flex;justify-content:space-between;gap:8px;margin-top:13px;font-size:.72rem;font-weight:750;color:#627d98}
#sntApp[data-subject="ac"] .ac-tile-progress{height:7px;border-radius:999px;background:#e6edf5;overflow:hidden;margin:8px 0 10px}
#sntApp[data-subject="ac"] .ac-tile-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--ac-theme),#10b981)}
#sntApp[data-subject="ac"] .snt-panel .snt-shead{border-left:6px solid #0284c7;background:linear-gradient(115deg,#f0f9ff,#ecfeff);padding:18px 20px;border-radius:16px;margin-bottom:14px}
#sntApp[data-subject="ac"] .snt-accroche{background:linear-gradient(135deg,rgba(2,132,199,.12),rgba(6,182,212,.08));border-color:rgba(2,132,199,.35)}
#sntApp[data-subject="ac"] .snt-phase .snt-ph-n{color:#0284c7}
#sntApp[data-subject="ac"] .ac-learning-goals{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:12px 0}
#sntApp[data-subject="ac"] .ac-learning-goals span{padding:10px;border-radius:10px;background:#f0f9ff;border:1px solid #bae6fd;font-size:.82rem;color:#075985}
#sntApp[data-subject="ac"] .ac-doc-tech{border-left:5px solid #f59e0b;background:linear-gradient(135deg,#fffbeb,#fff)}
#sntApp[data-subject="ac"] .ac-doc-tech table{width:100%;border-collapse:collapse;font-size:.83rem;margin-top:8px}
#sntApp[data-subject="ac"] .ac-doc-tech th,#sntApp[data-subject="ac"] .ac-doc-tech td{padding:7px 8px;border-bottom:1px solid #fde68a;text-align:left}
#sntApp[data-subject="ac"] .ac-mission-card{border-left:5px solid #10b981;background:linear-gradient(135deg,#ecfdf5,#fff)}
#sntApp[data-subject="ac"] .ac-success{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:10px 0 0;padding:0;list-style:none}
#sntApp[data-subject="ac"] .ac-success li{padding:7px 9px;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0;font-size:.8rem}
@media(max-width:700px){#sntApp[data-subject="ac"] .ac-roadmap-head{align-items:flex-start}#sntApp[data-subject="ac"] .ac-learning-goals,#sntApp[data-subject="ac"] .ac-success{grid-template-columns:1fr}}

/* Aucune matière ouverte — 26/08/2026.
   Une grille vide fait croire à une panne : l'élève signale un bug qui n'en
   est pas un, et perd confiance dans l'application. On dit ce qui se passe et
   qui peut le changer. */
.snt-aucune {
  grid-column: 1 / -1;
  text-align: center;
  padding: 34px 26px;
  border-radius: 18px;
  background: rgba(255, 255, 255, .06);
  border: 1px dashed rgba(255, 255, 255, .22);
}
.snt-aucune-ico { font-size: 2.4rem; margin-bottom: 8px; }
.snt-aucune h4 { margin: 0 0 8px; font-size: 1.06rem; }
.snt-aucune p { margin: 0 auto 6px; max-width: 520px; font-size: .9rem; line-height: 1.55; opacity: .88; }
.snt-aucune-petit { font-size: .82rem !important; opacity: .7 !important; }

/* Dossiers AC : distinguer cours, données et productions. */
#sntApp[data-subject="ac"] .snt-hero { background: #23465f; color: #fff; padding: 26px; min-height: 0; border-radius: 8px; }
#sntApp[data-subject="ac"] .snt-hero::before,
#sntApp[data-subject="ac"] .snt-hero::after,
#sntApp[data-subject="ac"] .snt-heronet { display: none; }
#sntApp[data-subject="ac"] .snt-hero h2 { margin-top: 6px; font-size: 1.65rem; }
#sntApp[data-subject="ac"] .snt-hero p { max-width: 85ch; }
#sntApp[data-subject="ac"] .ac-roadmap-head,
#sntApp[data-subject="ac"] .snt-panel .snt-shead {
  background: #f1f5f9; color: #172b40; border-radius: 8px; border-color: #315b76;
}
#sntApp[data-subject="ac"] .ac-theme-tile .snt-ico { display: none; }
#sntApp[data-subject="ac"] .ac-theme-tile { border-radius: 8px; box-shadow: none; }
#sntApp .ac-dossier { max-width: 1060px; margin-inline: auto; color: #1e293b; }
#sntApp .ac-dossier p { line-height: 1.75; }
#sntApp .ac-dossier .snt-card,
#sntApp .ac-dossier .snt-trace { background: #fff; color: #1e293b; border: 1px solid #d3dce5; border-radius: 8px; box-shadow: none; }
#sntApp .ac-dossier .snt-card h4 { color: #172b40; }
#sntApp .ac-case { padding: 24px; border: 1px solid #b8c9d8; border-left: 5px solid #315b76; border-radius: 8px; background: #f4f7fa; color: #172b40; }
#sntApp .ac-case > p { margin: 8px 0 18px; font-size: 1.18rem; font-weight: 650; }
#sntApp .ac-eyebrow { font-size: .76rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; }
#sntApp .ac-timing { display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: .78rem; color: #475569; }
#sntApp .ac-timing span { display: grid; gap: 3px; }
#sntApp .ac-timing b { color: #172b40; }
#sntApp .ac-course { font-size: 1rem; }
#sntApp .ac-course p { max-width: 85ch; }
#sntApp .ac-dossier .snt-phase h4 { color: inherit; }
#sntApp .ac-dossier .ac-doc-tech { border-left: 4px solid #315b76; background: #f8fafc; }
#sntApp .ac-table-scroll { overflow-x: auto; }
#sntApp .ac-dossier table { width: 100%; border-collapse: collapse; min-width: 420px; font-size: .9rem; }
#sntApp .ac-dossier caption { text-align: left; font-size: 1rem; font-weight: 650; color: #172b40; padding: 8px 0 12px; }
#sntApp .ac-dossier th, #sntApp .ac-dossier td { padding: 12px; border-bottom: 1px solid #cbd5e1; text-align: left; vertical-align: top; line-height: 1.55; }
#sntApp .ac-dossier thead th { background: #e7eef4; color: #172b40; }
#sntApp[data-subject="ac"] .ac-doc-tech th,
#sntApp[data-subject="ac"] .ac-doc-tech td { padding: 12px; border-bottom-color: #cbd5e1; }
#sntApp .ac-dossier tbody th { font-weight: 600; }
#sntApp .ac-data-origin { font-size: .78rem; color: #475569; margin: 12px 0 0; }
#sntApp .ac-dossier summary { cursor: pointer; font-weight: 650; padding: 8px 0; line-height: 1.5; }
#sntApp .ac-dossier .ac-worked { border-left: 4px solid #50735c; background: #f4f8f4; }
#sntApp .ac-dossier .snt-ex-q { display: block; color: #172b40; font-size: 1rem; line-height: 1.75; }
#sntApp .ac-dossier .snt-ta { width: 100%; min-height: 130px; padding: 14px; color: #172b40; background: #fff; border: 1px solid #94a3b8; border-radius: 5px; font: inherit; line-height: 1.6; resize: vertical; box-sizing: border-box; }
#sntApp .ac-dossier .snt-ta::placeholder { color: #526275; opacity: 1; }
#sntApp .ac-correction { margin-top: 12px; border-top: 1px solid #d3dce5; }
#sntApp .ac-correction > div { padding: 12px 0; line-height: 1.75; }
#sntApp .ac-criteria li { padding: 5px 0; line-height: 1.6; }
#sntApp .ac-criteria small { display: block; color: #526275; font-size: .78rem; }
#sntApp .ac-review { display: flex; align-items: start; gap: 10px; line-height: 1.6; margin-top: 16px; cursor: pointer; }
#sntApp .ac-review input { width: 18px; height: 18px; flex: 0 0 18px; margin-top: 4px; accent-color: #315b76; }
#sntApp .ac-progress-note { font-size: .83rem; color: #475569; }
#sntApp .ac-references { margin-top: 22px; }
#sntApp .ac-references li { margin: 10px 0; line-height: 1.6; }
#sntApp .ac-references li p { font-size: .83rem; color: #475569; margin: 3px 0; }
#sntApp .ac-dossier a { color: #075985; text-decoration: underline; overflow-wrap: anywhere; }
#sntApp .ac-dossier .snt-small { color: #475569; }
#sntApp .ac-dossier .snt-step { font: inherit; font-size: .85rem; color: #23465f; background: #eef3f7; border: 1px solid #bacbd8; padding: 9px 14px; border-radius: 5px; cursor: pointer; }
#sntApp .ac-dossier :is(button,textarea,input,summary,[tabindex],a):focus-visible { outline: 3px solid #0369a1; outline-offset: 3px; }
#sntApp .ac-video-resource { margin: 14px 0; padding: 10px 18px; border: 1px solid #d3dce5; background: #f8fafc; color: #1e293b; border-radius: 8px; }
#sntApp .ac-technical-figure { margin: 20px 0; padding: 12px; background: #fff; border: 1px solid #cbd5e1; border-radius: 8px; }
#sntApp .ac-technical-figure svg { display: block; width: 100%; max-width: 500px; max-height: 380px; margin: auto; }
#sntApp .ac-technical-figure figcaption { font-size: .8rem; line-height: 1.5; color: #475569; }
#sntApp .ac-previous-answers p { white-space: pre-wrap; }
@media(max-width:600px){
  #sntApp .ac-case { padding: 16px; }
  #sntApp .ac-dossier .snt-card { padding: 16px; }
  #sntApp .ac-dossier .snt-shead { padding: 16px; }
  #sntApp .ac-timing { gap: 10px 15px; }
}


/* ══════════════════════════════════════════════════════════════════════════
   L'ÉCHELLE D'AIDE ET LA SECONDE TENTATIVE — 02/09/2026

   Les trois paliers doivent se lire comme une main tendue, pas comme un aveu
   d'échec : on les met en avant AVANT la correction, avec un ton clair et
   sans rouge. Le palier fermé reste visible mais éteint — savoir qu'une aide
   existe suffit souvent à oser continuer seul.

   L'IA reprend la couleur --snt-ia déjà déclarée par la feuille : le même
   violet partout où ESILA intervient, pour que le symbole devienne un repère
   et non une surprise.
   ══════════════════════════════════════════════════════════════════════════ */
#sntApp .ac-aides{margin-top:12px;padding:12px;border:1px dashed var(--snt-line);border-radius:12px;background:var(--snt-surface2)}
#sntApp .ac-aides-intro{margin:0 0 10px;font-size:.85rem;color:var(--snt-muted)}
#sntApp .ac-aides-intro b{color:var(--snt-ink)}
#sntApp .ac-aide{margin-bottom:6px}
#sntApp .ac-aide-btn{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font-family:inherit;font-size:.87rem;font-weight:600;
  color:var(--snt-ink);background:var(--snt-surface);border:1px solid var(--snt-line);border-radius:10px;padding:9px 12px;cursor:pointer}
#sntApp .ac-aide-btn:hover:not(:disabled){border-color:var(--snt-accent);color:var(--snt-accent)}
#sntApp .ac-aide-btn:disabled{opacity:.45;cursor:not-allowed}
#sntApp .ac-aide-num{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:50%;
  background:var(--snt-accent);color:#fff;font-size:.78rem;font-weight:800;flex:none}
#sntApp .ac-aide-btn:disabled .ac-aide-num{background:var(--snt-muted)}
#sntApp .ac-aide-txt{display:none;margin:6px 0 0 30px;font-size:.88rem;line-height:1.7;color:var(--snt-ink);
  background:var(--snt-surface);border-left:3px solid var(--snt-accent);border-radius:8px;padding:9px 12px}
#sntApp .ac-aide-ouverte .ac-aide-txt{display:block}
#sntApp .ac-aide-ouverte .ac-aide-btn{border-color:var(--snt-accent)}
#sntApp .ac-ia{display:inline-flex;align-items:center;gap:8px;margin-top:8px;font-family:inherit;font-size:.87rem;font-weight:700;
  color:var(--snt-ia-ink);background:var(--snt-ia-soft);border:1px solid var(--snt-ia);border-radius:999px;padding:8px 14px;cursor:pointer}
#sntApp .ac-ia:hover{background:var(--snt-ia);color:#fff}
#sntApp .ac-ia-badge{display:inline-flex;align-items:center;justify-content:center;padding:1px 7px;border-radius:6px;
  background:var(--snt-ia);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.06em}
#sntApp .ac-ia:hover .ac-ia-badge{background:#fff;color:var(--snt-ia)}
#sntApp .ac-ia-note{margin:6px 0 0;font-size:.8rem;color:var(--snt-muted)}
#sntApp .snt-retry{margin-top:8px;font-size:.85rem;font-weight:600;color:var(--snt-warn);
  background:rgba(217,119,6,.08);border-left:3px solid var(--snt-warn);border-radius:8px;padding:8px 11px}

/* 28/09/2026 — QCM des dossiers AC lisible dans TOUS les modes. Les cartes
   .ac-dossier restent claires (fond blanc, texte #1e293b) même en mode
   sombre, mais l'explication (.snt-exp) et les choix du QCM prenaient les
   couleurs SOMBRES du mode : texte foncé sur fond foncé, contraste 1,1 —
   « les textes réponses QCM sont illisibles ». On les ancre sur la carte. */
#sntApp .ac-dossier .snt-qcm .snt-qt{color:#172b40}
#sntApp .ac-dossier .snt-opt{background:#f8fafc;color:#172b40;border-color:#cbd5e1}
#sntApp .ac-dossier .snt-opt:disabled{color:#334155;opacity:1}
#sntApp .ac-dossier .snt-opt.snt-correct{background:#dcfce7;border-color:#16a34a;color:#14532d}
#sntApp .ac-dossier .snt-opt.snt-wrong{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}
#sntApp .ac-dossier .snt-exp{background:#eef4f8;color:#172b40;border-left-color:#315b76}
#sntApp .snt-retry{color:#9a3412}
#sntApp.snt-dark .snt-retry{color:#fdba74}
#sntApp.snt-dark .ac-dossier .snt-retry{color:#9a3412}
/* 28/09/2026 — rappel du QCM en tête de séance (snt.js, buildTheme). */
#sntApp .snt-rappel-qcm{display:block;margin:10px 0 14px;padding:11px 14px;border-radius:10px;border:1px solid #a5b4fc;background:#eef2ff;color:#1e1b4b;font-size:.92rem;line-height:1.5;text-decoration:none}
#sntApp .snt-rappel-qcm:hover,#sntApp .snt-rappel-qcm:focus-visible{border-color:#4f46e5;outline:2px solid #4f46e5;outline-offset:2px}
#sntApp .snt-rappel-qcm [data-rappel-etat]{font-weight:700;color:#3730a3}
#sntApp .snt-rappel-qcm.snt-rappel-fait{background:#dcfce7;border-color:#86efac;color:#14532d}
#sntApp .snt-rappel-qcm.snt-rappel-fait [data-rappel-etat]{color:#166534}
#sntApp .snt-panel .snt-rappel-qcm,#sntApp .ac-dossier a.snt-rappel-qcm{color:#1e1b4b;text-decoration:none}
/* Vocabulaire de la séance (AC) */
#sntApp .ac-vocab{border-left:4px solid #3730a3;background:#eef2ff;color:#1e1b4b}
#sntApp .ac-vocab summary{color:#1e1b4b}
#sntApp .ac-vocab dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:6px 0 4px}
#sntApp .ac-vocab dt{font-weight:700;color:#312e81}
#sntApp .ac-vocab dd{margin:0;color:#1e293b;line-height:1.5}
@media (max-width:560px){#sntApp .ac-vocab dl{grid-template-columns:1fr;gap:2px}#sntApp .ac-vocab dd{margin-bottom:8px}}

/* 28/09/2026 — Rappel express (début de séance) */
#sntApp .snt-rappel-express{border-left:4px solid #7c3aed;background:#f5f3ff;color:#1e1b4b}
#sntApp .snt-rappel-express .snt-rx-tete p{margin:6px 0 10px;color:#312e81;line-height:1.5}
#sntApp .snt-rappel-express .snt-qt{color:#1e1b4b}
#sntApp .snt-rappel-express .snt-rx-src{font-weight:400;font-size:.8rem;color:#5b21b6}
#sntApp .snt-rappel-express .snt-opt{color:#1e1b4b;background:#fff;border-color:#c4b5fd}
#sntApp .snt-rappel-express .snt-exp{color:#1e293b;background:#ede9fe}
#sntApp .snt-rappel-express .snt-rx-bilan{font-weight:700;color:#3b0764;margin:8px 0 0}
#sntApp.snt-dark .snt-rappel-express{background:#241a3d;color:#ede9fe;border-left-color:#a78bfa}
#sntApp.snt-dark .snt-rappel-express .snt-rx-tete p,#sntApp.snt-dark .snt-rappel-express .snt-qt,#sntApp.snt-dark .snt-rappel-express .snt-rx-bilan{color:#ede9fe}
#sntApp.snt-dark .snt-rappel-express .snt-rx-src{color:#c4b5fd}
#sntApp.snt-dark .snt-rappel-express .snt-opt{background:#181a2e;color:#eef0fb;border-color:#4c3a8a}
#sntApp.snt-dark .snt-rappel-express .snt-exp{background:#2e2350;color:#eef0fb}

/* « Ton avis » et « De mémoire » */
#sntApp .ac-avis,#sntApp .snt-ex-avis{border-left:4px solid #0f766e;background:#f0fdfa;color:#134e4a}
#sntApp .snt-ex-memo{border-left:4px solid #b45309;background:#fffbeb;color:#451a03}
#sntApp .ac-avis label,#sntApp .snt-ex-avis .snt-ex-q{color:#134e4a}
#sntApp .snt-ex-memo .snt-ex-q{color:#451a03}
#sntApp.snt-dark .snt-ex-avis{background:#10302a;color:#ccfbf1}
#sntApp.snt-dark .snt-ex-avis .snt-ex-q{color:#ccfbf1}
#sntApp.snt-dark .snt-ex-memo{background:#3a2c10;color:#fef3c7}
#sntApp.snt-dark .snt-ex-memo .snt-ex-q{color:#fef3c7}

/* Trace écrite verrouillée tant que « De mémoire » est vide */
#sntApp .snt-trace-verrou{position:relative}
#sntApp .snt-trace-verrou:not(.snt-ouverte) > :not(.snt-trace-ouvrir){filter:blur(6px);user-select:none;pointer-events:none}
#sntApp .snt-trace-ouvrir{display:block;margin:0 0 10px;padding:9px 14px;border-radius:10px;border:0;background:#86198f;color:#fff;font-weight:700;cursor:pointer}
#sntApp .snt-trace-verrou.snt-ouverte .snt-trace-ouvrir{display:none}
@media print{#sntApp .snt-trace-verrou > *{filter:none!important}#sntApp .snt-trace-ouvrir,#sntApp .snt-rappel-express{display:none!important}}
#sntApp .snt-ex.snt-ex-avis,#sntApp .snt-ex.snt-ex-memo{border-top:none;padding:12px 14px;border-radius:12px;margin:14px 0}
#sntApp .snt-rappel-express .snt-opt.snt-correct{background:#dcfce7;border-color:#16a34a;color:#14532d;font-weight:600}
#sntApp .snt-rappel-express .snt-opt.snt-wrong{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}
#sntApp.snt-dark .snt-rappel-express .snt-opt.snt-correct{background:#15321f;border-color:#22c55e;color:#dcfce7}
#sntApp.snt-dark .snt-rappel-express .snt-opt.snt-wrong{background:#3a1717;border-color:#f87171;color:#fee2e2}
