/* ============================================================================
   LE LABORATOIRE — feuille de style
   ========================================================================== */

:root{
  --fond:#0e1117;
  --fond2:#151922;
  --fond3:#1b2030;
  --bord:#252b39;
  --txt:#d8dee9;
  --txt2:#9aa4b5;
  --txt3:#6b7486;
  --acc:#5ec8a0;
  --acc2:#7c9cff;
  --rose:#ff7b9c;
  --orange:#ff9f5a;
  --violet:#c58cf5;
  --jaune:#e8c65a;
  --rouge:#ff6b6b;
  --r:10px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--fond);
  color:var(--txt);
  font:15px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
b,strong{color:#fff;font-weight:600}

/* ------------------------------------------------------------------ ENTÊTE */
.entete{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;padding:12px 28px;
  background:rgba(14,17,23,.92);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--bord);
}
.marque{display:flex;align-items:center;gap:11px}
.marque-logo{
  font-size:26px;color:var(--acc);
  width:38px;height:38px;display:grid;place-items:center;
  background:var(--fond3);border-radius:9px;
}
.marque-txt b{display:block;font-size:15px;letter-spacing:.2px}
.marque-txt small{display:block;color:var(--txt3);font-size:11.5px}
.menu{display:flex;gap:3px;flex-wrap:wrap}
.menu a{
  padding:7px 13px;border-radius:7px;font-size:13.5px;color:var(--txt2);
  transition:.15s;
}
.menu a:hover{background:var(--fond3);color:var(--txt)}
.menu a.actif{background:var(--fond3);color:var(--acc)}

main{max-width:1000px;margin:0 auto;padding:30px 26px 80px}

.save-status,.save-alert{width:calc(100% - 52px);max-width:948px;margin-left:auto;margin-right:auto}
.save-status{margin-top:12px;font-size:13px;font-weight:600;color:var(--txt2)}
.save-status:empty{display:none}
.save-alert{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin-top:12px;padding:12px 14px;border:1px solid var(--orange);border-radius:8px;
  background:var(--fond2);color:var(--txt);
}
.save-alert[hidden]{display:none}
.save-alert .btn{flex-shrink:0}

.pied{
  max-width:1000px;margin:0 auto;padding:26px;
  border-top:1px solid var(--bord);color:var(--txt3);font-size:12px;line-height:1.7;
}

/* ------------------------------------------------------------------- BASES */
h1{font-size:31px;line-height:1.22;margin:.1em 0 .4em;letter-spacing:-.4px;color:#fff}
h2{font-size:20px;margin:1.9em 0 .7em;color:#fff}
h3{font-size:16.5px;margin:1.7em 0 .5em;color:var(--acc)}
h4{font-size:14px;margin:1.4em 0 .5em;color:var(--txt2)}
p{margin:.75em 0}
ul{margin:.7em 0;padding-left:1.25em}
li{margin:.42em 0}

.kicker{
  font-size:11.5px;letter-spacing:1.1px;text-transform:uppercase;
  color:var(--col,var(--acc));font-weight:600;margin-bottom:6px;
}
.accroche{font-size:17px;color:var(--txt);line-height:1.55;font-style:italic;opacity:.92}
.fil{font-size:12.5px;color:var(--txt3);margin-bottom:18px}
.fil a{color:var(--txt2)}
.fil a:hover{color:var(--acc)}
.page-titre{margin-top:0}
.page-sous{color:var(--txt2);max-width:70ch;margin-bottom:24px}
.section-titre{font-size:14px;text-transform:uppercase;letter-spacing:1.2px;color:var(--txt3);margin-top:44px}

/* ----------------------------------------------------------------- BOUTONS */
.btn{
  display:inline-block;padding:9px 17px;border-radius:8px;border:1px solid var(--bord);
  background:var(--fond3);color:var(--txt);font-size:14px;font-family:inherit;
  cursor:pointer;transition:.15s;
}
.btn:hover{border-color:var(--acc);color:#fff}
.btn-primaire{background:var(--acc);border-color:var(--acc);color:#0b1a14;font-weight:600}
.btn-primaire:hover{filter:brightness(1.12);color:#0b1a14}
.btn-discret{background:transparent;color:var(--txt2)}
.btn-danger{background:transparent;border-color:var(--rouge);color:var(--rouge)}
.btn-danger:hover{background:var(--rouge);color:#fff}
.btn:disabled{opacity:.5;cursor:default}

/* ------------------------------------------------------------------- HERO */
.hero{
  display:flex;gap:34px;align-items:center;justify-content:space-between;
  background:linear-gradient(135deg,var(--fond2),var(--fond3));
  border:1px solid var(--bord);border-radius:16px;padding:32px 34px;
}
.hero-gauche{flex:1;min-width:0}
.hero h1{margin-top:4px}
.hero .btn{margin-top:16px}
.cadran{text-align:center;flex-shrink:0}
.cadran-v{font-size:60px;font-weight:700;line-height:1;color:var(--col);letter-spacing:-2px}
.cadran-l{font-size:12px;color:var(--txt3);margin-top:6px;max-width:110px}

/* ------------------------------------------------------------------ STATS */
.grille-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:14px}
.stat{background:var(--fond2);border:1px solid var(--bord);border-radius:var(--r);padding:16px 18px}
.stat-v{font-size:26px;font-weight:700;color:#fff;line-height:1.1}
.stat-l{font-size:12.5px;color:var(--txt2);margin-top:3px}
.stat-s{font-size:11px;color:var(--txt3);margin-top:2px}

/* ---------------------------------------------------------------- SAVOIRS */
.savoirs{display:grid;grid-template-columns:repeat(auto-fit,minmax(184px,1fr));gap:12px}
.savoir-carte{
  background:var(--fond2);border:1px solid var(--bord);border-left:3px solid var(--col);
  border-radius:var(--r);padding:15px 17px;cursor:pointer;transition:.15s;
}
.savoir-carte:hover{background:var(--fond3);transform:translateY(-2px)}
.savoir-code{font-size:11px;color:var(--col);font-weight:700;letter-spacing:1px}
.savoir-titre{font-size:15.5px;color:#fff;font-weight:600;margin:2px 0 4px}
.savoir-sous{font-size:11.5px;color:var(--txt3);line-height:1.45;min-height:32px}
.savoir-chiffres{font-size:11px;color:var(--txt3);margin-top:7px}
.barre{display:flex;height:6px;border-radius:3px;overflow:hidden;background:#232838;margin-top:9px}
.barre div{height:100%}

/* -------------------------------------------------------------- TIMELINE */
.timeline{display:flex;flex-direction:column;gap:10px}
.sem{background:var(--fond2);border:1px solid var(--bord);border-left:3px solid var(--col);border-radius:var(--r);padding:14px 18px}
.sem-tete{display:flex;align-items:baseline;gap:11px}
.sem-n{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--col);font-weight:700}
.sem-titre{font-size:16px;color:#fff;font-weight:600}
.sem-sous{font-size:12.5px;color:var(--txt3);margin:2px 0 10px}
.sem-jours{display:flex;gap:6px;flex-wrap:wrap}
.pastille{
  width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:var(--fond3);border:1px solid var(--bord);color:var(--txt3);
  font-size:12px;cursor:pointer;transition:.15s;
}
.pastille:hover{border-color:var(--col);color:var(--txt)}
.pastille.passe{color:var(--txt2)}
.pastille.fait{background:var(--col);border-color:var(--col);color:#0b1014;font-weight:700}
.pastille.actuel{border-color:var(--col);border-width:2px;color:#fff;font-weight:700}

/* -------------------------------------------------------------- LE JOUR */
.jour-tete{
  background:linear-gradient(135deg,var(--fond2),var(--fond3));
  border:1px solid var(--bord);border-left:3px solid var(--col);
  border-radius:14px;padding:26px 28px;margin-bottom:22px;
}
.pourquoi{
  margin-top:16px;padding:13px 16px;background:rgba(0,0,0,.22);
  border-radius:8px;font-size:13.5px;color:var(--txt2);line-height:1.6;
}
.pourquoi b{color:var(--col)}

.badge-bilan{background:var(--jaune);color:#141414;padding:1px 8px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:.4px}
.duree-jour{margin-top:14px;font-size:13px;color:var(--txt2)}
.duree-jour b{color:var(--col);font-size:15px}
.duree-jour .manquant{color:var(--orange)}
.duree-note{display:block;margin-top:5px;font-size:11.5px;color:var(--txt3);line-height:1.55;max-width:64ch}

/* Capacités visées par la journée */
.cap-jour{margin:0 0 20px;padding:14px 18px;background:var(--fond2);border:1px solid var(--bord);border-radius:var(--r)}
.cap-jour-lab{font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;color:var(--txt3);font-weight:700;margin-bottom:9px}
.cap-puce{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.04);flex-wrap:wrap}
.cap-puce:last-child{border-bottom:none}
.cap-puce:hover .cap-puce-txt{color:var(--txt)}
.cap-puce-id{font-family:ui-monospace,Menlo,monospace;font-size:10.5px;color:var(--col);background:var(--fond3);padding:2px 7px;border-radius:4px;flex-shrink:0}
.cap-puce-txt{flex:1;min-width:180px;font-size:12.8px;color:var(--txt2);line-height:1.45}

/* Vue Épreuves */
.ep-liste{display:flex;flex-direction:column;gap:9px}
.ep{display:flex;align-items:center;gap:16px;background:var(--fond2);border:1px solid var(--bord);border-radius:var(--r);padding:14px 18px}
.ep.hors{opacity:.45}
.ep-code{font-size:15px;font-weight:700;color:var(--acc);min-width:44px}
.ep.hors .ep-code{color:var(--txt3)}
.ep-corps{flex:1;min-width:0}
.ep-nom{font-size:14.5px;color:#fff;font-weight:600}
.ep-unite{font-size:11px;color:var(--txt3);font-weight:400;margin-left:5px}
.ep-forme{font-size:12.2px;color:var(--txt2);margin-top:2px}
.ep-statut{font-size:11.5px;color:var(--jaune);margin-top:3px}
.ep-coef{min-width:112px;text-align:right;font-size:12px;color:var(--txt2)}
.ep-jauge{height:5px;background:#232838;border-radius:3px;overflow:hidden;margin-bottom:5px}
.ep-jauge div{height:100%;background:var(--acc)}
.ep.hors .ep-jauge div{background:var(--txt3)}

.modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(224px,1fr));gap:11px}
.module{
  display:flex;flex-direction:column;justify-content:space-between;gap:9px;
  background:var(--fond2);border:1px solid var(--bord);border-top:3px solid var(--col);
  border-radius:var(--r);padding:15px 17px;min-height:112px;transition:.15s;
}
.module:hover{background:var(--fond3);transform:translateY(-2px)}
.module.fait{opacity:.62}
.module.a-faire{border-style:dashed;opacity:.72;border-top-style:solid}
.module.a-faire .module-titre{color:var(--txt3);font-style:italic}

/* Contenu prévu mais pas encore écrit */
.a-creer{max-width:66ch}
.a-creer h1{border-bottom:2px solid var(--bord);padding-bottom:12px}
.a-creer p{color:var(--txt2)}
.invite{
  background:var(--fond2);border:1px solid var(--bord);border-left:3px solid var(--acc2);
  border-radius:9px;padding:14px 17px;font-size:13px;line-height:1.65;color:var(--txt);
  white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,Menlo,monospace;margin:12px 0 16px;
}
.module-type{font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--col);font-weight:700}
.module-titre{font-size:14.5px;color:#fff;line-height:1.4;flex:1}
.module-bas{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--txt3)}
.coche{color:var(--acc);font-weight:600}

.production{
  margin-top:22px;background:var(--fond2);border:1px solid var(--bord);
  border-left:3px solid var(--jaune);border-radius:var(--r);padding:18px 20px;
}
.prod-tete{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--jaune);font-weight:700;margin-bottom:6px}
textarea{
  width:100%;min-height:130px;background:var(--fond);border:1px solid var(--bord);
  border-radius:8px;color:var(--txt);padding:12px 14px;font:inherit;font-size:14px;
  resize:vertical;margin:8px 0;
}
textarea:focus{outline:none;border-color:var(--acc)}
.ok-msg{color:var(--acc);font-size:13px;margin-left:10px}

.mode-leger{
  margin-top:22px;padding:16px 20px;background:rgba(124,156,255,.07);
  border:1px dashed #33405e;border-radius:var(--r);font-size:13.5px;color:var(--txt2);
}
.mode-leger b{color:var(--acc2)}
.mode-leger p{margin:6px 0 10px}
.nav-jours{display:flex;justify-content:space-between;margin-top:28px}

/* -------------------------------------------------------------- FICHES */
.fiche,.cas,.labo,.maths{max-width:78ch}
.fiche h1,.cas h1{border-bottom:2px solid var(--col);padding-bottom:12px}

.bloc{border-radius:9px;padding:14px 17px;margin:16px 0;font-size:14.2px;line-height:1.65}
.bloc-lab{font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;font-weight:700;margin-bottom:6px;opacity:.85}
.bloc.cle{background:rgba(94,200,160,.09);border-left:3px solid var(--acc)}
.bloc.cle .bloc-lab{color:var(--acc)}
.bloc.piege{background:rgba(255,107,107,.08);border-left:3px solid var(--rouge)}
.bloc.piege .bloc-lab{color:var(--rouge)}
.bloc.ex{background:rgba(124,156,255,.08);border-left:3px solid var(--acc2)}
.bloc.ex .bloc-lab{color:var(--acc2)}
.bloc.ref{background:rgba(155,155,175,.06);border-left:3px solid var(--txt3);font-size:12.8px;color:var(--txt2)}
.bloc.ref .bloc-lab{color:var(--txt3)}

.tab-wrap{overflow-x:auto;margin:16px 0;border:1px solid var(--bord);border-radius:9px}
table{width:100%;border-collapse:collapse;font-size:13.4px;min-width:420px}
th{background:var(--fond3);color:#fff;text-align:left;padding:10px 13px;font-weight:600;font-size:12.5px}
td{padding:9px 13px;border-top:1px solid var(--bord);vertical-align:top;color:var(--txt)}
tr:nth-child(even) td{background:rgba(255,255,255,.014)}

figure{margin:20px 0;background:var(--fond2);border:1px solid var(--bord);border-radius:10px;padding:12px;overflow-x:auto}
.fig{width:100%;height:auto;display:block;min-width:440px}
.fig-absente{color:var(--txt3);font-size:13px;padding:20px;text-align:center;font-style:italic}

.caps{margin-top:30px;padding-top:20px;border-top:1px solid var(--bord)}
.caps-lab{font-size:11px;letter-spacing:1.1px;text-transform:uppercase;color:var(--txt3);margin-bottom:10px;font-weight:700}
.cap-ligne{
  display:flex;align-items:center;gap:11px;padding:7px 0;
  border-bottom:1px solid rgba(255,255,255,.045);font-size:13px;flex-wrap:wrap;
}
.cap-id{
  font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--txt3);
  background:var(--fond3);padding:2px 6px;border-radius:4px;flex-shrink:0;
}
.cap-txt{flex:1;min-width:200px;color:var(--txt2);line-height:1.45}
a.cap-lien{
  cursor:pointer;text-decoration:underline;text-decoration-color:transparent;
  text-underline-offset:3px;transition:.13s;
}
a.cap-lien:hover{color:#fff;text-decoration-color:var(--acc)}
.niv{font-size:10.5px;padding:2px 8px;border-radius:20px;color:#0b1014;font-weight:700;white-space:nowrap}
.fin-module{margin-top:34px;padding-top:22px;border-top:1px solid var(--bord);display:flex;gap:10px}

/* ----------------------------------------------------------------- CAS */
.contexte{
  background:var(--fond2);border:1px solid var(--bord);border-radius:10px;
  padding:17px 20px;font-size:14.5px;line-height:1.68;margin:18px 0;
}
.doc-titre{color:var(--txt2);text-transform:uppercase;font-size:11.5px;letter-spacing:1.2px;margin-top:28px}
.bareme{color:var(--jaune);font-weight:700;margin-left:8px}
.doc{background:var(--fond2);border:1px solid var(--bord);border-radius:9px;padding:14px 16px;margin:12px 0}
.doc-lab{font-size:11.5px;color:var(--acc2);font-weight:700;margin-bottom:8px}
.doc-txt{font-size:13.5px;color:var(--txt2);line-height:1.65}
.conseil{
  background:rgba(232,198,90,.07);border-left:3px solid var(--jaune);
  border-radius:8px;padding:12px 16px;font-size:13.4px;color:var(--txt2);margin:14px 0;
}
.qcas{background:var(--fond2);border:1px solid var(--bord);border-radius:10px;padding:16px 18px;margin:13px 0}
.qcas-tete{display:flex;gap:12px;align-items:flex-start}
.qnum{
  width:25px;height:25px;border-radius:50%;background:var(--col,var(--rose));color:#0b1014;
  display:grid;place-items:center;font-size:12.5px;font-weight:700;flex-shrink:0;
}
.qtxt{flex:1;font-size:14.6px;color:#fff;line-height:1.5}
.qpts{font-size:11.5px;color:var(--jaune);font-weight:700;flex-shrink:0}
.qcas-actions{display:flex;gap:8px;margin-top:6px}
.indice{
  background:rgba(124,156,255,.08);border-left:3px solid var(--acc2);border-radius:7px;
  padding:11px 14px;font-size:13.4px;color:var(--txt2);margin-top:11px;
}
.corrige{
  background:rgba(94,200,160,.07);border-left:3px solid var(--acc);border-radius:7px;
  padding:13px 16px;font-size:14px;line-height:1.68;margin-top:11px;
}
.cache{display:none}

/* Workspace de cas Task 10 : structure lisible et clavier, sans direction HUD. */
.case-workspace{max-width:92ch}
.case-progress{
  color:var(--txt2);font-size:13px;font-weight:600;margin:-4px 0 14px;
}
.case-documents{
  margin:18px 0;background:var(--fond2);border:1px solid var(--bord);border-radius:10px;
}
.case-documents summary{
  cursor:pointer;padding:13px 16px;color:var(--acc2);font-weight:700;
}
.case-documents-body{padding:0 16px 8px}
.case-documents-body .doc{margin:0 0 12px}
.case-question{padding:20px;margin-top:18px}
.response-phase{
  display:inline-block;margin:14px 0 10px;padding:4px 9px;border:1px solid var(--bord);
  border-radius:20px;color:var(--txt2);font-size:12px;font-weight:700;
}
.response-field{margin:14px 0}
.response-field label,.claude-transfer-panel>label{
  display:block;color:var(--txt);font-size:13px;font-weight:700;margin-bottom:3px;
}
.word-count{color:var(--txt3);font-size:12px;text-align:right;margin-top:-4px}
.initial-answer-panel,.post-correction,.claude-transfer-panel{
  margin:16px 0;padding:16px;background:var(--fond);border:1px solid var(--bord);border-radius:9px;
}
.initial-answer-panel h2,.post-correction h2{font-size:17px;margin:0 0 10px}
.learner-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;color:var(--txt)}
.case-action-status,#claude-transfer-status{min-height:1.4em;margin:9px 0 0;color:var(--txt2);font-size:13px}
.claude-actions,.case-question-nav{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.case-question-nav{justify-content:space-between;margin-top:16px}
.copy-fallback{position:fixed;left:-10000px;top:0;width:1px;height:1px}
.case-workspace :focus-visible{
  outline:3px solid var(--jaune);outline-offset:3px;
}

@media (prefers-reduced-motion:reduce){
  .case-workspace *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}

@media print{
  .case-question-nav,.case-workspace .fin-module,.claude-actions{display:none!important}
  .case-workspace,.case-question,.case-documents,.initial-answer-panel,.post-correction{max-width:none;border-color:#777;background:#fff;color:#000}
  .case-workspace textarea{border:1px solid #777;color:#000;background:#fff}
}

/* ---------------------------------------------------------------- LABO */
.exo{background:var(--fond2);border:1px solid var(--bord);border-radius:10px;padding:16px 18px;margin:13px 0}
.exo-num{font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;color:var(--orange);font-weight:700}
.exo-q{font-size:14.8px;color:#fff;margin:6px 0 13px;line-height:1.5}
.exo-aide{font-size:12px;color:var(--txt3);margin:8px 0}
.opts{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.opts.vf{flex-direction:row}
.opts.vf .opt{flex:1;text-align:center}
.opt{
  text-align:left;padding:11px 15px;border-radius:8px;border:1px solid var(--bord);
  background:var(--fond3);color:var(--txt);font:inherit;font-size:14px;cursor:pointer;transition:.13s;
}
.opt:hover:not(:disabled){border-color:var(--acc);background:#20263a}
.opt.juste{border-color:var(--acc);background:rgba(94,200,160,.14);color:#fff}
.opt.faux{border-color:var(--rouge);background:rgba(255,107,107,.12);color:#fff}
.exp{
  margin-top:12px;padding:13px 16px;background:var(--fond);border-radius:8px;
  font-size:13.8px;line-height:1.68;color:var(--txt2);border-left:3px solid var(--bord);
}
.exp .ok{color:var(--acc)}
.exp .ko{color:var(--rouge)}

.ordre-zone{display:flex;flex-direction:column;gap:7px;margin:12px 0}
.ordre-item{
  display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--fond3);
  border:1px solid var(--bord);border-radius:8px;cursor:grab;font-size:13.8px;user-select:none;
}
.ordre-item:hover{border-color:var(--acc2)}
.ordre-item.drag{opacity:.4}
.ordre-item.juste{border-color:var(--acc);background:rgba(94,200,160,.11)}
.ordre-item.faux{border-color:var(--rouge);background:rgba(255,107,107,.09)}
.poignee{color:var(--txt3);font-size:15px;letter-spacing:-2px;flex-shrink:0}

/* -------------------------------------------------------------- QUIZ */
.quiz{max-width:60ch;margin:0 auto}
.quiz-prog{height:3px;background:var(--bord);border-radius:2px;overflow:hidden;margin-bottom:22px}
.quiz-prog div{height:100%;background:var(--acc);transition:width .3s}
.quiz-meta{font-size:11.5px;color:var(--txt3);margin-bottom:14px}
.quiz-cap{color:var(--acc2)}
.quiz-q{font-size:19px;line-height:1.5;color:#fff;margin-bottom:22px}
.quiz-exp{
  margin-top:20px;padding:16px 18px;background:var(--fond2);border:1px solid var(--bord);
  border-radius:10px;font-size:14px;line-height:1.7;color:var(--txt2);
}
.verdict{font-weight:700;margin-bottom:8px;font-size:14.5px}
.verdict.ok{color:var(--acc)}
.verdict.ko{color:var(--rouge)}
.quiz-suite{margin-top:16px;display:flex;gap:9px}
.num-zone{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:12px 0}
.num-zone input{
  flex:1;min-width:130px;padding:11px 14px;background:var(--fond);border:1px solid var(--bord);
  border-radius:8px;color:var(--txt);font:inherit;font-size:15px;
}
.num-zone input:focus{outline:none;border-color:var(--acc)}
.unite{color:var(--txt2);font-size:13.5px}

.bilan{text-align:center;padding:70px 20px;max-width:52ch;margin:0 auto}
.bilan-score{font-size:70px;font-weight:700;color:var(--acc);line-height:1;letter-spacing:-2px}
.bilan-txt{color:var(--txt2);margin-top:16px;line-height:1.7}
.bilan-actions{margin-top:26px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.vide{text-align:center;padding:70px 20px;max-width:50ch;margin:0 auto;color:var(--txt2)}

/* -------------------------------------------------------------- MATHS */
.mex{display:flex;gap:14px;background:var(--fond2);border:1px solid var(--bord);border-radius:10px;padding:15px 17px;margin:11px 0}
.mex-num{
  width:24px;height:24px;border-radius:50%;background:var(--acc2);color:#0b1014;
  display:grid;place-items:center;font-size:12px;font-weight:700;flex-shrink:0;
}
.mex-corps{flex:1;min-width:0}
.mex-q{font-size:14.6px;color:#fff;line-height:1.5}

/* -------------------------------------------------------------- CARTE */
.legende{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}
.onglets{display:flex;gap:6px;margin-bottom:24px;flex-wrap:wrap}
.onglet{padding:7px 15px;border-radius:8px;background:var(--fond2);border:1px solid var(--bord);font-size:13.5px;color:var(--txt2)}
.onglet:hover{border-color:var(--acc)}
.onglet.actif{background:var(--acc);border-color:var(--acc);color:#0b1a14;font-weight:600}
.sav-bloc{margin-bottom:44px;padding-left:16px;border-left:3px solid var(--col)}
.sav-bloc h2{margin-top:0;color:var(--col)}
.sav-note{font-size:13.5px;color:var(--txt2);line-height:1.65;margin-bottom:12px;max-width:74ch}
.bloc-titre{color:var(--txt);font-size:14px;margin-top:22px}
.cap-liste{margin-top:6px}
.cap-tags{display:flex;gap:4px;flex-wrap:wrap}
.tag{font-size:9.5px;padding:2px 6px;border-radius:4px;font-weight:600;letter-spacing:.3px}
.tag.ep{background:var(--fond3);color:var(--txt3)}
.tag.neuf{background:rgba(255,123,156,.18);color:var(--rose)}
.tag.geste{background:rgba(255,159,90,.18);color:var(--orange)}
.tag.revoir{background:rgba(124,156,255,.16);color:var(--acc2)}
.tag.partiel{background:rgba(232,198,90,.16);color:var(--jaune)}
/* Liens vers le contenu qui couvre une capacité */
.res-liste{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.res{
  font-size:10.5px;padding:3px 9px;border-radius:20px;white-space:nowrap;
  border:1px solid transparent;transition:.13s;line-height:1.35;
}
a.res{cursor:pointer}
a.res:hover{filter:brightness(1.35);border-color:currentColor}
.res-cours{background:rgba(94,200,160,.15);color:var(--acc)}
.res-cas{background:rgba(255,123,156,.15);color:var(--rose)}
.res-labo{background:rgba(255,159,90,.15);color:var(--orange)}
.res-quiz{background:rgba(197,140,245,.15);color:var(--violet)}
.res-maths{background:rgba(124,156,255,.15);color:var(--acc2)}
.res-vide{background:transparent;color:var(--txt3);font-style:italic;border:1px dashed var(--bord)}

.quiz-cible{
  background:rgba(197,140,245,.09);border-left:3px solid var(--violet);border-radius:8px;
  padding:10px 14px;font-size:12.5px;color:var(--txt2);margin-bottom:18px;line-height:1.5;
}
.quiz-cible b{color:var(--violet)}
.quiz-cible a{color:var(--txt3);text-decoration:underline;margin-left:6px}
.quiz-cible a:hover{color:var(--acc)}
.bilan-cible{font-size:12.5px;color:var(--txt3)}

.niv-sel{
  border:none;border-radius:20px;padding:3px 9px;font-size:10.5px;font-weight:700;
  color:#0b1014;font-family:inherit;cursor:pointer;flex-shrink:0;
}

/* -------------------------------------------------------------- LISTES */
.recherche{
  width:100%;max-width:400px;padding:11px 15px;background:var(--fond2);
  border:1px solid var(--bord);border-radius:9px;color:var(--txt);font:inherit;font-size:14px;margin-bottom:20px;
}
.recherche:focus{outline:none;border-color:var(--acc)}
.cartes{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:11px}
.carte-item{
  background:var(--fond2);border:1px solid var(--bord);border-left:3px solid var(--col);
  border-radius:var(--r);padding:14px 16px;transition:.15s;
}
.carte-item:hover{background:var(--fond3);transform:translateY(-2px)}
.carte-code{font-family:ui-monospace,monospace;font-size:10.5px;color:var(--txt3)}
.carte-titre{font-size:14.8px;color:#fff;font-weight:600;margin:3px 0 5px;line-height:1.4}
.carte-meta{font-size:11.5px;color:var(--txt3)}

/* ---------------------------------------------------------- SAUVEGARDE */
.carte-info{background:var(--fond2);border:1px solid var(--bord);border-radius:var(--r);padding:18px 22px;margin:13px 0}
.carte-info h3{margin-top:0;color:#fff}
.carte-info.danger{border-color:rgba(255,107,107,.35)}
.carte-info.danger h3{color:var(--rouge)}
.infos{font-size:13.5px;color:var(--txt2);list-style:none;padding:0}
.infos li{padding:5px 0;border-bottom:1px solid rgba(255,255,255,.05)}
input[type=file]{color:var(--txt2);font-size:13px;margin-right:8px}
.alerte{
  margin-top:22px;padding:14px 18px;background:rgba(255,159,90,.09);
  border-left:3px solid var(--orange);border-radius:8px;font-size:13.5px;color:var(--txt2);
}

/* Mise en regard progression / calendrier. Volontairement sobre : c'est une
   information, pas une alerte, et surtout pas un reproche. */
.note-cal{
  margin:20px 0 4px;padding:15px 19px;background:var(--fond2);
  border:1px solid var(--bord);border-left:3px solid var(--acc2);
  border-radius:8px;font-size:13.4px;color:var(--txt2);line-height:1.62;max-width:82ch;
}
.note-cal b{color:var(--txt)}
.note-cal>b{display:block;font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;
  color:var(--txt3);margin-bottom:8px}
.note-cal p{margin:0 0 9px}
.note-cal p:last-child{margin-bottom:0}

/* ------------------------------------------------------------ RESPONSIVE */
@media (max-width:760px){
  .entete{flex-direction:column;align-items:flex-start;gap:10px;padding:12px 18px}
  .save-status,.save-alert{width:calc(100% - 32px)}
  .save-alert{align-items:flex-start;flex-direction:column}
  main{padding:22px 16px 60px}
  .hero{flex-direction:column;align-items:flex-start;padding:24px}
  h1{font-size:25px}
  .cadran-v{font-size:46px}
  .cap-ligne{gap:7px}
}

/* Session quotidienne v2 — structure seulement, sans direction HUD finale. */
.daily-shell{max-width:980px;margin:0 auto}
.daily-header{margin-bottom:22px}
.daily-summary{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:baseline;color:var(--txt2)}
.daily-progress{color:var(--txt)}
.daily-block-list{display:grid;gap:10px;margin:22px 0}
.daily-block-card{
  display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:14px;align-items:center;min-width:0;
  padding:15px;border:1px solid var(--bord);border-radius:12px;background:var(--fond2);color:inherit;text-decoration:none;
}
.daily-block-card:hover{border-color:var(--acc)}
.daily-block-card.is-active{border-color:var(--acc);box-shadow:0 0 0 2px rgba(94,200,160,.18)}
.daily-block-card.is-complete{background:var(--fond3)}
.daily-block-letter{
  display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--bord);border-radius:50%;font-weight:800;
}
.daily-block-copy{display:grid;gap:3px;min-width:0}
.daily-block-copy strong,.daily-block-kind{overflow-wrap:anywhere}
.daily-block-kind,.daily-content-id{color:var(--txt3);font-size:.88rem}
.daily-block-meta{display:grid;gap:4px;justify-items:end;text-align:right;white-space:nowrap}
.daily-block-status{font-weight:750}
.daily-active-panel,.daily-resources{
  margin-top:18px;padding:20px;border:1px solid var(--bord);border-radius:12px;background:var(--fond2);overflow-wrap:anywhere;
}
.daily-active-panel h2,.daily-resources h2{margin-top:4px}
.daily-unavailable{max-width:68ch}
.daily-resource-links{display:flex;flex-wrap:wrap;gap:8px 18px}

@media (max-width:620px){
  .daily-block-card{grid-template-columns:42px minmax(0,1fr)}
  .daily-block-meta{grid-column:2;display:flex;flex-wrap:wrap;justify-content:space-between;text-align:left;white-space:normal}
  .daily-active-panel,.daily-resources{padding:16px}
}

/* ==========================================================================
   HUD FINAL — papeterie de laboratoire calme, clavier d'abord
   ========================================================================== */

:root{
  color-scheme:light;
  --surface-canvas:#ffeafa;
  --surface-card:#fffaff;
  --surface-soft:#ffd9ef;
  --surface-mint:#d9fff2;
  --surface-lavender:#e6dcff;
  --surface-sky:#dff3ff;
  --surface-plaid:#ffc7e5;
  --on-surface:#3f2940;
  --on-surface-strong:#241426;
  --on-surface-muted:#6f526f;
  --outline:#9b5f8b;
  --outline-soft:#e1a8cc;
  --interactive:#ad287f;
  --interactive-hover:#7d1b70;
  --on-interactive:#fffaff;
  --focus-ring:#5833b7;
  --success:#197258;
  --error:#a82350;
  --warning:#765000;
  --decor-bubblegum:#ff5fb0;
  --decor-sakura:#ff9ecc;
  --decor-lavender:#bda8ff;
  --decor-mint:#8ee8c4;
  --decor-sky:#87cef7;
  --decor-gold:#f1c84b;
  --decor-ink:#2c1835;
  --shadow-card:7px 8px 0 rgba(116,48,102,.15),0 16px 36px rgba(105,41,91,.12);
  --radius-card:26px;

  /* Compatibilité avec les vues historiques, désormais mappées sur des rôles. */
  --fond:var(--surface-canvas);
  --fond2:var(--surface-card);
  --fond3:var(--surface-soft);
  --bord:var(--outline-soft);
  --txt:var(--on-surface);
  --txt2:var(--on-surface-muted);
  --txt3:#716575;
  --acc:var(--success);
  --acc2:var(--interactive);
  --rose:#a84d6b;
  --orange:#8f511f;
  --violet:#704d88;
  --jaune:var(--warning);
  --rouge:var(--error);
  --r:12px;
}

html{min-width:240px;background:var(--surface-canvas);scroll-behavior:smooth}
html,body{max-width:100%;overflow-x:hidden}
body{
  min-height:100vh;background:
    radial-gradient(circle at 8% 7%,rgba(255,95,176,.38),transparent 22rem),
    radial-gradient(circle at 94% 18%,rgba(135,206,247,.42),transparent 24rem),
    radial-gradient(circle at 74% 85%,rgba(142,232,196,.38),transparent 22rem),
    repeating-linear-gradient(0deg,rgba(173,40,127,.055) 0 1px,transparent 1px 34px),
    repeating-linear-gradient(90deg,rgba(88,51,183,.045) 0 1px,transparent 1px 34px),
    var(--surface-canvas);
  color:var(--on-surface);font:400 1rem/1.55 system-ui,-apple-system,"Segoe UI Variable","Segoe UI",Roboto,sans-serif;
}
body::before{
  content:"";position:fixed;z-index:-1;inset:0;pointer-events:none;opacity:.62;
  background:
    radial-gradient(circle at 12% 24%,var(--decor-bubblegum) 0 3px,transparent 4px),
    radial-gradient(circle at 88% 34%,var(--decor-lavender) 0 4px,transparent 5px),
    radial-gradient(circle at 22% 78%,var(--decor-sky) 0 3px,transparent 4px);
  background-size:130px 130px,170px 170px,210px 210px;
}
main{width:100%;min-width:0}
b,strong,h1,h2,.stat-v,.savoir-titre,.sem-titre,.ep-nom,.module-titre,.qtxt,.exo-q,.quiz-q,.mex-q,.carte-titre,.carte-info h3{
  color:var(--on-surface-strong)
}
h1{font-size:clamp(1.75rem,4vw,2.25rem);font-weight:650;line-height:1.15;letter-spacing:-.02em}
h2{font-size:1.25rem;font-weight:650;line-height:1.2}
h3{font-size:1.125rem}
p,.page-sous,.accroche{max-width:72ch}

.skip-link{
  position:fixed;z-index:200;left:12px;top:8px;transform:translateY(-160%);
  padding:10px 14px;border-radius:10px;background:var(--interactive);color:var(--on-interactive);font-weight:650;
}
.skip-link:focus{transform:translateY(0)}

.entete{
  background:linear-gradient(100deg,rgba(255,250,255,.96),rgba(255,211,238,.95) 48%,rgba(230,220,255,.96));
  border-bottom:3px solid var(--decor-bubblegum);box-shadow:0 5px 0 rgba(88,51,183,.12),0 12px 26px rgba(91,33,83,.12);
}
.marque-logo{color:var(--interactive);background:linear-gradient(145deg,#fff,var(--surface-lavender));border:2px solid var(--decor-bubblegum);border-radius:50%;box-shadow:3px 3px 0 var(--decor-lavender);transform:rotate(-4deg)}
.marque-txt b{color:var(--on-surface-strong)}
.marque-txt small{color:var(--on-surface-muted)}
.menu a{color:var(--on-surface-muted);font-weight:550}
.menu a{border:1px solid transparent;border-radius:999px}
.menu a:hover,.menu a.actif{background:#fff;border-color:var(--decor-bubblegum);color:var(--interactive-hover);box-shadow:2px 3px 0 rgba(173,40,127,.14)}

.save-status,.save-alert,.focus-toolbar{width:calc(100% - 52px);max-width:948px;margin-left:auto;margin-right:auto}
.save-status{color:var(--on-surface-muted);min-height:1.4em}
.save-status:not(:empty)::before{content:"●";margin-right:.5em;color:var(--success);font-size:.75em}
.save-alert{background:var(--surface-card);border:2px solid var(--error);color:var(--on-surface-strong);box-shadow:var(--shadow-card)}
.save-alert::before{content:"!";display:grid;place-items:center;flex:0 0 1.7rem;height:1.7rem;border-radius:50%;background:var(--error);color:#fff;font-weight:800}
.focus-toolbar{display:flex;align-items:center;gap:12px;margin-top:8px}
.focus-mode-help{display:none;color:var(--on-surface-muted);font-size:.875rem}
.focus-mode .focus-mode-help{display:inline}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4em;min-height:44px;max-width:100%;
  padding:.62rem 1rem;border:2px solid var(--outline);border-radius:16px;background:linear-gradient(145deg,#fff,var(--surface-soft));
  color:var(--on-surface-strong);font-weight:600;line-height:1.25;text-align:center;white-space:normal;
  box-shadow:3px 4px 0 rgba(88,51,183,.13);
}
.btn:hover{border-color:var(--interactive);background:var(--surface-lavender);color:var(--interactive-hover);transform:translate(-1px,-1px);box-shadow:5px 6px 0 rgba(88,51,183,.16)}
.btn-primaire,.onglet.actif{background:linear-gradient(135deg,var(--decor-bubblegum),#c44ed4 58%,#7c55d9);border-color:var(--decor-ink);color:var(--on-interactive);text-shadow:0 1px rgba(60,12,55,.35)}
.btn-primaire:hover{background:linear-gradient(135deg,#ff78bd,#d866df 58%,#8d6ce5);border-color:var(--decor-ink);color:var(--on-interactive);filter:none}
.btn-danger{border-color:var(--error);color:var(--error)}
.btn-danger:hover{background:var(--error);color:#fff}

:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{
  outline:3px solid var(--focus-ring)!important;outline-offset:3px!important;
}
textarea:focus,input:focus,.recherche:focus,.num-zone input:focus{border-color:var(--interactive);outline-offset:2px}

.hero,.jour-tete{
  background:
    linear-gradient(90deg,rgba(255,255,255,.76),rgba(255,255,255,.4)),
    repeating-linear-gradient(0deg,transparent 0 23px,rgba(173,40,127,.12) 23px 25px),
    repeating-linear-gradient(90deg,var(--surface-plaid) 0 23px,var(--surface-lavender) 23px 25px);
  border:2px solid var(--decor-bubblegum);border-radius:28px;box-shadow:var(--shadow-card)
}
.dashboard{display:grid;gap:18px}
.dashboard-hero{position:relative;isolation:isolate;min-height:270px;overflow:hidden}
.dashboard-hero .hero-gauche{position:relative;z-index:2;max-width:65ch}
.dashboard-decoration{position:relative;align-self:flex-end;flex:0 0 220px;min-height:205px}
.dashboard-mascot{display:block;width:210px;height:auto;position:relative;z-index:1}
.petal{position:absolute;display:block;width:18px;height:12px;border-radius:90% 10% 90% 10%;background:var(--decor-sakura);transform:rotate(24deg)}
.petal-one{right:16px;top:26px}.petal-two{left:2px;top:70px;transform:rotate(-20deg);background:var(--decor-lavender)}
.dashboard-progress-card,.dashboard-secondary{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,260px);align-items:center;gap:28px;
  padding:22px 24px;border:1px solid var(--outline-soft);border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-card)
}
.dashboard-progress-card h2,.dashboard-secondary h2{margin:.15em 0 .45em}
.dashboard-progress-card p,.dashboard-secondary p{margin:.3em 0;color:var(--on-surface-muted)}
.dashboard-progress-card progress{width:100%;height:14px;accent-color:var(--success)}
.dashboard-secondary{grid-template-columns:minmax(0,1fr) minmax(240px,1fr);background:var(--surface-mint)}
.dashboard-secondary-links{display:flex;flex-wrap:wrap;gap:8px 16px}
.dashboard-secondary-links a,.daily-resource-links a{color:var(--interactive-hover);font-weight:650;text-decoration:underline;text-underline-offset:.18em}

.daily-block-card,.daily-active-panel,.daily-resources,.qcas,.doc,.contexte,.case-documents,.post-correction,.initial-answer-panel,.quiz-exp,.mex,.exo,.carte-info{
  background:var(--surface-card);border-color:var(--outline-soft)
}
.daily-block-card:hover{border-color:var(--interactive)}
.daily-block-card.is-active{border-color:var(--interactive);box-shadow:0 0 0 3px rgba(101,70,111,.18)}
.daily-block-card.is-complete .daily-block-status::before{content:"✓ ";color:var(--success);font-weight:800}
.daily-active-panel,.daily-resources{box-shadow:0 8px 24px rgba(73,56,70,.06)}

textarea,input[type="text"],input[type="number"],input[type="file"],select,.recherche{
  max-width:100%;min-width:0;background:var(--surface-card);border-color:var(--outline);color:var(--on-surface-strong)
}
textarea{min-height:130px;overflow-y:hidden;line-height:1.55}
.word-count{display:block;margin:.25rem 0;color:var(--on-surface-muted);font-size:.8125rem;text-align:right}
.writing-aids{margin:.35rem 0 1rem;max-width:100%}
.symbol-palette{display:flex;flex-wrap:wrap;gap:6px}
.symbol-button{
  min-width:40px;min-height:40px;padding:5px 9px;border:1px solid var(--outline);border-radius:10px;
  background:var(--surface-lavender);color:var(--on-surface-strong);font:650 1rem/1 system-ui,-apple-system,"Segoe UI",sans-serif;cursor:pointer
}
.symbol-button:hover{background:var(--decor-lavender);border-color:var(--interactive)}

.indice,.corrige{color:var(--on-surface);background:var(--surface-lavender);border-left-color:var(--interactive)}
.corrige{background:var(--surface-mint);border-left-color:var(--success)}
.feedback-icon{
  display:inline-grid;place-items:center;width:1.4em;height:1.4em;margin-right:.25em;border-radius:50%;
  background:currentColor;color:inherit;font-weight:800
}
.verdict.ok{color:var(--success)}
.verdict.ko{color:var(--error)}
.verdict .feedback-icon{color:#fff;background:currentColor;border:1px solid currentColor}
.verdict.ok .feedback-icon{background:var(--success)}
.verdict.ko .feedback-icon{background:var(--error)}

.tab-wrap,figure{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
table{color:var(--on-surface)}
th{color:var(--on-surface-strong);background:var(--surface-lavender)}
tr:nth-child(even) td{background:rgba(101,70,111,.035)}
fieldset{min-inline-size:0;max-width:100%;margin-inline:0}
pre,.invite{max-width:100%;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere}
img,svg{max-width:100%}

/* Maximalisme kawaii britannique : tartan, stickers et vieux web Y2K. */
h1,.page-titre,.dashboard-hero h1,.daily-header h1{
  font-family:"Arial Rounded MT Bold","Trebuchet MS","Segoe UI",sans-serif;
  text-wrap:balance;
}
.page-titre::after,.daily-header h1::after,.resource-overview h1::after{
  content:" ✦";color:var(--decor-bubblegum);text-shadow:2px 2px 0 var(--decor-lavender)
}
.dashboard-hero::before,.dashboard-hero::after{
  position:absolute;z-index:0;display:grid;place-items:center;border:2px solid var(--decor-ink);
  box-shadow:4px 4px 0 rgba(44,24,53,.18);font-weight:900;transform:rotate(-8deg)
}
.dashboard-hero::before{content:"♡ study club";left:24px;bottom:18px;padding:7px 13px;border-radius:999px;background:#fff;color:var(--interactive)}
.dashboard-hero::after{content:"★";right:202px;top:20px;width:42px;height:42px;border-radius:12px;background:var(--decor-gold);color:var(--decor-ink);transform:rotate(10deg)}
.dashboard-mascot{filter:drop-shadow(7px 9px 0 rgba(173,40,127,.18));transform:rotate(2deg)}
.petal{width:22px;height:15px;border:2px solid rgba(44,24,53,.24);box-shadow:2px 2px 0 rgba(88,51,183,.14)}

.dashboard-progress-card,.dashboard-secondary,.daily-active-panel,.daily-resources,.resource-overview,
.qcas,.doc,.contexte,.case-documents,.post-correction,.initial-answer-panel,.quiz-exp,.mex,.exo,.carte-info{
  border-width:2px;border-radius:var(--radius-card);box-shadow:var(--shadow-card)
}
.dashboard-progress-card{background:linear-gradient(145deg,#fff,var(--surface-sky))}
.dashboard-secondary{background:linear-gradient(145deg,var(--surface-mint),#fff)}
.dashboard-progress-card progress{height:18px;border-radius:999px;overflow:hidden}
.daily-block-card,.carte-item,.module,.savoir-carte,.sem{
  border-width:2px;border-radius:20px;box-shadow:4px 5px 0 rgba(88,51,183,.10)
}
.daily-block-card:nth-child(3n+1),.carte-item:nth-child(3n+1){background:linear-gradient(145deg,#fff,var(--surface-soft))}
.daily-block-card:nth-child(3n+2),.carte-item:nth-child(3n+2){background:linear-gradient(145deg,#fff,var(--surface-lavender))}
.daily-block-card:nth-child(3n),.carte-item:nth-child(3n){background:linear-gradient(145deg,#fff,var(--surface-sky))}
.daily-block-card:hover,.carte-item:hover,.module:hover{transform:translate(-2px,-3px);box-shadow:7px 8px 0 rgba(173,40,127,.16)}
.daily-block-letter{background:linear-gradient(145deg,var(--decor-bubblegum),var(--decor-lavender));color:#fff;border:2px solid var(--decor-ink);box-shadow:3px 3px 0 rgba(44,24,53,.18)}

.day-switcher{
  display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,220px) minmax(120px,1fr);align-items:center;gap:12px;
  margin:0 0 20px;padding:11px 14px;border:2px solid var(--decor-bubblegum);border-radius:22px;
  background:linear-gradient(90deg,var(--surface-soft),#fff 48%,var(--surface-lavender));box-shadow:5px 6px 0 rgba(88,51,183,.13)
}
.day-switcher-arrow{display:flex;align-items:center;gap:6px;min-height:42px;padding:8px 12px;border-radius:14px;font-weight:750;color:var(--interactive-hover)}
.day-switcher-arrow:last-child{justify-self:end}
.day-switcher-arrow:hover{background:#fff;box-shadow:2px 3px 0 rgba(173,40,127,.15)}
.day-switcher label{display:grid;gap:2px;color:var(--on-surface-muted);font-size:.72rem;font-weight:750;text-align:center;text-transform:uppercase;letter-spacing:.08em}
.day-switcher select{min-height:42px;padding:7px 34px 7px 12px;border:2px solid var(--outline);border-radius:13px;background:#fff;color:var(--on-surface-strong);font:750 1rem/1 system-ui;text-align:center}
.day-switcher-spacer{min-width:1px}

.resource-overview{
  position:relative;isolation:isolate;overflow:hidden;max-width:760px;margin:18px auto;padding:clamp(24px,5vw,52px);
  background:
    linear-gradient(145deg,rgba(255,255,255,.96),rgba(255,218,240,.88)),
    repeating-linear-gradient(45deg,transparent 0 22px,rgba(88,51,183,.08) 22px 24px);
  border:3px solid var(--decor-bubblegum)
}
.resource-overview::before{content:"";position:absolute;z-index:-1;right:-60px;bottom:-70px;width:240px;height:240px;border-radius:50%;background:var(--surface-lavender);border:20px solid rgba(255,255,255,.55)}
.resource-overview h1{max-width:18ch;font-size:clamp(2rem,6vw,3.5rem);line-height:1.02}
.resource-overview-lead{font-size:1.1rem;line-height:1.65;max-width:58ch}
.resource-overview-meta{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}
.resource-overview-meta span{padding:7px 12px;border:2px solid var(--outline-soft);border-radius:999px;background:#fff;font-weight:700;color:var(--interactive-hover)}
.resource-stickers{position:absolute;right:26px;top:22px;display:flex;gap:8px;transform:rotate(6deg)}
.resource-stickers span{display:grid;place-items:center;width:38px;height:38px;border:2px solid var(--decor-ink);border-radius:11px;background:var(--decor-gold);box-shadow:3px 3px 0 rgba(44,24,53,.18);font-size:1.2rem}
.resource-stickers span:nth-child(2){background:var(--decor-sakura);transform:rotate(-12deg)}
.resource-stickers span:nth-child(3){background:var(--decor-sky);transform:rotate(8deg)}
.fiche,.labo,.maths,.cas{padding:clamp(18px,4vw,36px);background:rgba(255,250,255,.94);border:2px solid var(--outline-soft);border-radius:26px;box-shadow:var(--shadow-card)}
.bloc{border-radius:16px}
.indice,.corrige,.invite{border-radius:16px}

.pwa-install-guide{
  position:relative;z-index:8;width:min(920px,calc(100% - 28px));margin:14px auto 4px;padding:13px 15px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--on-surface-strong);
  background:linear-gradient(135deg,rgba(255,255,255,.72),rgba(255,255,255,.22)),linear-gradient(110deg,var(--decor-sakura),var(--decor-lavender) 56%,var(--decor-sky));
  border:3px solid var(--decor-ink);border-radius:22px;box-shadow:7px 7px 0 rgba(48,30,63,.24)
}
.pwa-install-guide[hidden]{display:none}
.pwa-install-copy{display:grid;gap:2px;line-height:1.35}
.pwa-install-copy b{font-size:1.02rem;letter-spacing:.01em}
.pwa-install-copy b span{color:var(--interactive-hover)}
.pwa-install-guide .btn{
  min-height:44px;flex:0 0 auto;background:var(--surface-card);border-color:var(--decor-ink);color:var(--on-surface-strong)
}

.focus-mode .menu,.focus-mode .pied,.focus-mode .dashboard-secondary,.focus-mode .daily-resources,
.focus-mode .dashboard-decoration,.focus-mode .note-cal,.focus-mode .section-titre,.focus-mode .grille-stats{
  display:none!important
}
.focus-mode .entete{position:static;padding-block:8px;box-shadow:none}
.focus-mode main{padding-top:18px}

@media (max-width:760px){
  .entete{padding:10px 14px;gap:8px}
  .menu{gap:2px}
  .menu a{padding:7px 9px}
  .save-status,.save-alert,.focus-toolbar{width:calc(100% - 28px)}
  .focus-toolbar{align-items:flex-start;flex-direction:column;gap:4px}
  main{padding:20px 14px 56px}
  .hero{padding:22px}
  .dashboard-progress-card,.dashboard-secondary{grid-template-columns:1fr;gap:14px;padding:19px}
  .dashboard-decoration{flex-basis:170px}.dashboard-mascot{width:170px}
}

@media (max-width:620px){
  .dashboard-hero{min-height:0}
  .dashboard-decoration{display:none}
  .dashboard-secondary-links{display:grid;grid-template-columns:1fr}
  .daily-block-card{padding:12px;gap:10px}
  .qcas,.case-question{padding:14px}
  .qcas-tete{flex-wrap:wrap}
  .qpts{margin-left:37px}
  .claude-actions,.case-question-nav,.qcas-actions,.quiz-suite,.fin-module,.nav-jours{align-items:stretch}
  .claude-actions .btn,.qcas-actions .btn,.quiz-suite .btn,.fin-module .btn{flex:1 1 100%}
  .day-switcher{grid-template-columns:1fr auto 1fr;padding:9px;gap:5px}
  .day-switcher-arrow{padding:7px;justify-content:center}.day-switcher-arrow span{display:none}
  .day-switcher label>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .resource-stickers{position:static;justify-content:flex-end;margin:-8px 0 8px}
  .pwa-install-guide{align-items:stretch;flex-direction:column;width:calc(100% - 20px)}
  .pwa-install-guide .btn{width:100%}
}

@media (max-width:360px){
  .marque-txt small{display:none}
  .menu a{font-size:.78rem;padding:6px 7px}
  main{padding-inline:12px}
  .save-status,.save-alert,.focus-toolbar{width:calc(100% - 24px)}
  .save-alert{padding:11px;gap:9px}
  .save-alert .btn{width:100%}
  .daily-block-letter{width:36px;height:36px}
  .daily-block-card{grid-template-columns:36px minmax(0,1fr)}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:0.01ms!important;animation-iteration-count:1!important;
    transition-duration:0.01ms!important;scroll-behavior:auto!important
  }
}

@media print{
  @page{margin:16mm}
  body{background:#fff!important;color:#000!important;font-size:11pt;overflow:visible}
  .entete,.save-status,.save-alert,.focus-toolbar,.pied,.writing-aids,.dashboard-decoration,
  .daily-resources,.daily-block-list,.nav-jours,.case-question-nav,.qcas-actions,.claude-actions,
  .case-workspace .fin-module,button,.btn{display:none!important}
  main,.case-workspace,.case-question,.case-documents,.case-documents-body,.doc,.contexte{
    display:block!important;max-width:none!important;width:auto!important;overflow:visible!important;box-shadow:none!important
  }
  details.case-documents>.case-documents-body{display:block!important}
  body:not(.print-with-corrections) .corrige,
  body:not(.print-with-corrections) .post-correction,
  body:not(.print-with-corrections) .quiz-exp{display:none!important}
  h1,h2,h3,p,.qtxt,.doc-txt{color:#000!important}
  .tab-wrap{overflow:visible}
  table{min-width:0;break-inside:avoid}
}
