/* Clé en classe · même charte que Logolab : fond blanc, bandeau lavande à pois, accent violet, cartes pastel */
:root{
  --bg:#ffffff; --bg-soft:#f7f6fb; --ink:#16141f; --muted:#666379; --line:#e8e5f0;
  --violet:#5b3df5; --violet-ink:#ffffff; --violet-soft:#eeeaff; --violet-line:#d6cffd;
  --yellow:#fff1b3; --blue:#dceaff; --green:#dcf4e1; --pink:#ffe0ea; --peach:#ffe6d2;
  --dark:#17151f; --dark-ink:#f4f2fb; --dark-muted:#a9a5bd;
  --ok:#1f9d55; --mint:#d6f5e5; --mint-ink:#0f7a4a;
  --top:#f3f2f8; --dot:#d6d3e2;
  --c1:#5b3df5; --c2:#ffc92e; --c3:#2fb5ff; --c4:#ff5d8f;
  --f-display:"Neulis", "Arial Rounded MT Bold", system-ui, sans-serif;
  --f-body:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-mono:"Geist Mono", ui-monospace, Consolas, monospace;
  --shadow:0 1px 2px rgba(22,20,31,.04), 0 12px 32px -12px rgba(52,34,140,.18);
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto} *{transition:none!important;animation:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
[hidden]{display:none!important}
.wrap{max-width:1120px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--f-display);letter-spacing:-.03em;line-height:1.02;text-wrap:balance;margin:0}
h2{font-size:clamp(2rem,4.4vw,3.1rem);font-weight:800}
h3{font-size:1.18rem;font-weight:700;letter-spacing:-.015em;line-height:1.2}
p{margin:0}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:600;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 6px;background:var(--bg);justify-self:start}
.eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--violet);display:block;margin-left:4px}
.sec-head.center .eyebrow{justify-self:center}
.lead{color:var(--muted);font-size:1.06rem;max-width:58ch}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:600 .95rem var(--f-body);border-radius:42px;padding:12px 18px;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .15s, background .15s;background:var(--bg);color:var(--ink)}
.btn:hover{transform:translateY(-1px)}
.btn:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--violet-line);outline-offset:2px}
.btn-primary{background:var(--violet);color:var(--violet-ink);box-shadow:0 8px 20px -8px var(--violet)}
.btn-ghost{background:var(--bg);color:var(--ink);border-color:var(--line)}
.btn-sm{padding:8px 12px;font-size:.84rem;border-radius:42px}
.pill{border-radius:42px}
.tag{display:inline-block;font:600 .72rem var(--f-body);padding:3px 9px;border-radius:999px;background:var(--bg-soft);border:1px solid var(--line);color:var(--ink);white-space:nowrap}
.t-math{background:var(--violet-soft);border-color:var(--violet-line)}
.t-fr{background:var(--pink);border-color:transparent} .t-art,.t-mus{background:var(--yellow);border-color:transparent} .t-hist{background:var(--peach);border-color:transparent}
.t-sci,.t-ang{background:var(--blue);border-color:transparent} .t-num,.t-emc,.t-eps{background:var(--green);border-color:transparent}
section{padding-block:clamp(56px,8vw,96px)}
.sec-head{display:grid;gap:14px;margin-bottom:32px}
.sec-head.center{text-align:center;justify-items:center}

/* HAUT DE PAGE : fond lavande à pois, menu en pilule blanche */
.top{background-color:var(--top);background-image:radial-gradient(var(--dot) 1.1px,transparent 1.4px);background-size:22px 22px;padding-bottom:72px}
header.nav{padding-block:22px 0}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px}
.brand{display:flex;align-items:center;gap:10px;font:700 1.45rem var(--f-display);letter-spacing:-.04em;text-decoration:none}
.brand svg{flex:none}
.brand-txt{display:flex;flex-direction:column;line-height:1}
.brand-txt small{font:500 .7rem var(--f-body);letter-spacing:0;color:var(--muted);margin-top:3px}
.menu{display:flex;gap:4px;list-style:none;margin:0;padding:6px 10px;background:var(--bg);border-radius:999px;box-shadow:0 1px 2px rgba(22,20,31,.05),0 10px 30px -14px rgba(52,34,140,.25);font-size:.95rem;font-weight:500}
.menu a{display:block;text-decoration:none;padding:9px 16px;border-radius:999px}
.menu a:hover{background:var(--bg-soft)}
.nav-r{display:flex;align-items:center;gap:22px}
.nav-r .login{text-decoration:none;font-weight:500;font-size:.95rem;display:inline-flex;align-items:center;gap:6px}
.count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--violet);color:var(--violet-ink);font:700 .72rem var(--f-body)}
.count:empty{display:none}
.nav .btn{padding:12px 22px;font-size:.95rem}
.brand-txt,.nav-r .login,.nav .btn{white-space:nowrap}
@media (max-width:980px){.menu{display:none}}
@media (max-width:560px){.nav-r .login{display:none}.nav .btn{padding:10px 16px;font-size:.88rem}}

/* HERO + RECHERCHE */
.hero{padding-block:84px 0;text-align:center}
.badge{display:inline-flex;align-items:center;gap:10px;background:var(--bg);border-radius:999px;padding:5px 16px 5px 6px;font-size:.88rem;font-weight:500;box-shadow:0 1px 2px rgba(22,20,31,.05)}
.badge b{background:var(--mint);color:var(--mint-ink);border-radius:999px;padding:3px 10px;font-size:.74rem;font-weight:700;letter-spacing:.02em}
.hero h1{font-size:clamp(2.6rem,7.6vw,5.8rem);letter-spacing:-.055em;line-height:.98;max-width:14ch;margin:34px auto 0}
.hl{display:inline-block;background:var(--violet);color:var(--violet-ink);border-radius:.42em;padding:.02em .2em .1em;transform:rotate(-3deg);margin:.04em 0}
.swoosh{display:block;width:min(520px,70%);height:auto;margin:6px auto 0}
.hero .lead{margin:24px auto 0;text-align:center;font-size:1.12rem;max-width:56ch}
.search{display:flex;align-items:center;gap:8px;max-width:680px;margin:34px auto 0;background:var(--bg);border-radius:999px;padding:8px 8px 8px 22px;box-shadow:0 1px 2px rgba(22,20,31,.05),0 18px 40px -18px rgba(52,34,140,.35)}
.search svg{flex:none;color:var(--muted)}
.search input{flex:1;min-width:0;border:0;background:transparent;font:500 1.05rem var(--f-body);color:var(--ink);padding:10px 4px}
.search input:focus{outline:none}
.search:focus-within{box-shadow:0 0 0 3px var(--violet-line),0 18px 40px -18px rgba(52,34,140,.35)}
.search .btn{border-radius:42px;padding:13px 22px}
@media (max-width:520px){.search{padding-left:16px}.search .btn .lbl{display:none}}
.quick{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.quick button{font:600 .84rem var(--f-body);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:8px 14px;cursor:pointer;color:var(--ink)}
.quick button:hover{border-color:var(--violet-line);background:var(--violet-soft)}
.checks{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin-top:26px;font-size:.88rem;color:var(--muted)}
.checks span::before{content:"✓";color:var(--ink);font-weight:700;margin-right:8px}

/* CHIFFRES */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;max-width:900px;margin:48px auto 0}
@media (max-width:720px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat{background:var(--bg);border-radius:18px;padding:16px;display:grid;gap:2px;text-align:left;box-shadow:0 1px 2px rgba(22,20,31,.05)}
.stat strong{font:800 2rem var(--f-display);letter-spacing:-.04em;line-height:1}
.stat small{font-size:.8rem;color:var(--muted)}

/* FILTRES */
.filters{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;border:1px solid var(--line);border-radius:20px;padding:18px;background:var(--bg);box-shadow:var(--shadow)}
.frow{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:center}
.flabel{font:600 .74rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);min-width:76px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;max-width:100%}
.seg button{font:600 .84rem var(--f-body);background:var(--bg);color:var(--muted);border:0;border-right:1px solid var(--line);padding:8px 12px;cursor:pointer;flex:none;white-space:nowrap}
/* Sur téléphone, les boutons groupés défilent au lieu de passer à la ligne (les bordures restent nettes) */
@media (max-width:640px){
  .frow{flex-direction:column;align-items:flex-start;gap:8px}
  .frow > *{max-width:100%}
  .frow > .chips{width:100%}
  .seg{overflow-x:auto;scrollbar-width:none}
  .seg::-webkit-scrollbar{display:none}
}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--violet);color:var(--violet-ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font:600 .82rem var(--f-body);border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:999px;padding:7px 12px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.toggle{display:inline-flex;align-items:center;gap:8px;font-size:.88rem;font-weight:500;cursor:pointer}
.toggle input{width:18px;height:18px;accent-color:var(--violet)}
.fbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0 14px}
.fbar p{color:var(--muted);font-size:.92rem}
.fbar b{color:var(--ink)}
.link-btn{background:none;border:0;font:600 .88rem var(--f-body);color:var(--violet);cursor:pointer;padding:4px}

/* CARTES IDÉES */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:580px){.cards{grid-template-columns:1fr}}
.card{border:1px solid var(--line);border-radius:20px;background:var(--bg);display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;transition:box-shadow .15s, transform .15s}
.card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.card .head{padding:16px 18px 14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.card .head .dur{font:500 .8rem var(--f-mono);background:var(--bg);border-radius:999px;padding:3px 10px}
.card .body{padding:16px 18px 14px;display:grid;gap:8px;align-content:start}
.card .body h3{cursor:pointer}
.card .body p{font-size:.9rem;color:var(--muted)}
.card .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.card .foot{display:flex;gap:8px;align-items:center;padding:12px 18px;border-top:1px solid var(--line)}
.card .foot .btn:first-child{flex:1}
.bg-math{background:var(--violet-soft)} .bg-fr{background:var(--pink)} .bg-hist{background:var(--peach)} .bg-sci,.bg-ang{background:var(--blue)}
.bg-art,.bg-mus{background:var(--yellow)} .bg-emc,.bg-eps,.bg-num{background:var(--green)}
.card .head.bg-math{border-bottom:1px solid var(--violet-line)}
.icon-btn{width:40px;height:40px;display:inline-grid;place-items:center;border-radius:12px;border:1px solid var(--line);background:var(--bg);cursor:pointer;font-size:1.05rem;color:var(--ink);flex:none}
.icon-btn:hover{background:var(--bg-soft)}
.icon-btn[aria-pressed="true"]{background:var(--pink);border-color:#ffc2d4;color:#c2185b}
.empty{border:2px dashed var(--line);border-radius:20px;padding:40px 20px;text-align:center;color:var(--muted);display:grid;gap:10px;justify-items:center}
.empty b{font:700 1.2rem var(--f-display);color:var(--ink)}

/* GÉNÉRATEUR */
.gen{background:var(--dark);color:var(--dark-ink);border-radius:28px;padding:clamp(22px,5vw,48px);display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:32px;align-items:center}
@media (max-width:860px){.gen{grid-template-columns:minmax(0,1fr)}}
.gen > *{min-width:0}
.gen h2{font-size:clamp(2rem,4.6vw,3.2rem)}
.gen .lead{color:var(--dark-muted);margin-top:14px}
.gen .opts{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:24px}
.gen .flabel{color:var(--dark-muted)}
.gen .seg{border-color:#2e2b3b}
.gen .seg button{background:#211e2c;color:var(--dark-muted);border-right-color:#2e2b3b}
.gen .seg button[aria-pressed="true"]{background:var(--violet);color:#fff}
.gen select{font:600 .88rem var(--f-body);background:#211e2c;color:var(--dark-ink);border:1px solid #2e2b3b;border-radius:12px;padding:9px 12px}
.result{background:var(--bg);color:var(--ink);border-radius:22px;padding:24px;display:grid;gap:12px;min-height:260px;align-content:start;position:relative}
.result .sticker{position:absolute;right:16px;top:-14px;background:var(--yellow);color:#3a2e00;font:700 .8rem var(--f-display);padding:6px 12px;border-radius:10px;transform:rotate(4deg)}
.result h3{font-size:1.6rem}
.result p{color:var(--muted)}
.result .acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}

/* MA SEMAINE */
.week{display:grid;grid-template-columns:110px repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--bg)}
.week > div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px;min-width:0}
.week > div:nth-child(5n){border-right:0}
.week.d5{grid-template-columns:110px repeat(5,minmax(0,1fr))}
.week.d5 > div:nth-child(5n){border-right:1px solid var(--line)}
.week.d5 > div:nth-child(6n){border-right:0}
.week .wh small{display:block;font:500 .74rem var(--f-body);color:var(--muted);margin-top:2px}
.week .wh.off{background:repeating-linear-gradient(135deg,var(--bg-soft) 0 8px,var(--bg) 8px 16px)}
.week .wh.off small{color:#c0392b}
.week .wh{background:var(--bg-soft);font:700 .95rem var(--f-display);text-align:center;padding:12px}
.week .wl{background:var(--bg-soft);font:600 .78rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;align-items:center}
.week .last{border-bottom:0}
.slot{display:grid;gap:6px;align-content:start;min-height:110px}
.slot:empty::after{content:"Rien de prévu";font-size:.78rem;color:#b4b0c6;border:1.5px dashed var(--line);border-radius:10px;padding:14px 8px;text-align:center}
.wi{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;align-items:start;border-radius:10px;padding:8px 8px 8px 10px;font-size:.82rem;line-height:1.3}
.wi button.t{all:unset;cursor:pointer;font-weight:600}
.wi button.t:hover{text-decoration:underline}
.wi small{display:block;font:500 .72rem var(--f-mono);color:var(--muted);margin-top:2px}
.wi .x{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;padding:0 2px}
@media (max-width:820px){
  .week{grid-template-columns:1fr}
  .week > div{border-right:0}
  .week .wh.corner{display:none}
  .week .wl{display:none}
  .week .wh{text-align:left}
  .slot{min-height:0}
  .slot::before{content:attr(data-label);font:600 .72rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
  .slot:empty::after{padding:8px}
}
.wbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.wbar p{color:var(--muted);font-size:.9rem}

/* PROJETS */
.projets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){.projets{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:580px){.projets{grid-template-columns:1fr}}
.proj{border-radius:22px;padding:22px;display:grid;gap:10px;align-content:start;border:1px solid transparent;position:relative}
.proj.violet{background:var(--violet);color:var(--violet-ink)}
.proj.violet p,.proj.violet small{color:rgba(255,255,255,.82)}
.proj.yellow{background:var(--yellow)} .proj.blue{background:var(--blue)} .proj.peach{background:var(--peach)} .proj.pink{background:var(--pink)} .proj.green{background:var(--green)}
.proj h3{font-size:1.4rem}
.proj p{font-size:.9rem;color:var(--muted)}
.proj small{font:500 .76rem var(--f-mono);color:var(--muted)}
.proj .flag{justify-self:start;font:700 .72rem var(--f-body);padding:4px 10px;border-radius:999px;background:var(--bg);color:var(--ink)}
.proj.violet .flag{background:var(--mint);color:var(--mint-ink)}
.proj .btn{justify-self:start;margin-top:4px}
.proj.violet .btn{background:var(--dark);color:var(--dark-ink)}

/* COMMENT ÇA MARCHE */
.how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:820px){.how{grid-template-columns:1fr}}
.how div{border:1px solid var(--line);border-radius:20px;padding:22px;display:grid;gap:8px;align-content:start}
.how .n{font:800 2.4rem var(--f-display);color:var(--violet);letter-spacing:-.05em;line-height:1}
.how p{color:var(--muted);font-size:.92rem}

/* FICHE (fenêtre) */
dialog.fiche{border:0;padding:0;border-radius:26px;width:min(780px,calc(100vw - 24px));max-height:calc(100vh - 24px);box-shadow:0 30px 80px -20px rgba(22,20,31,.45);color:var(--ink)}
dialog.fiche::backdrop{background:rgba(22,20,31,.45);backdrop-filter:blur(3px)}
.fi-head{padding:26px 28px 22px;display:grid;gap:12px;position:relative}
.fi-head h2{font-size:clamp(1.8rem,4vw,2.5rem);padding-right:44px}
.fi-head p{color:#3d3a4d;max-width:60ch}
.fi-close{position:absolute;top:18px;right:18px}
.fi-tags{display:flex;flex-wrap:wrap;gap:6px}
.fi-body{padding:22px 28px 28px;display:grid;gap:20px}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:620px){.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fact{border:1px solid var(--line);border-radius:14px;padding:10px 12px;display:grid;gap:2px}
.fact small{font-size:.72rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.fact b{font-size:.92rem}
.fi-block{display:grid;gap:8px}
.fi-block h3{font-size:1.05rem}
.fi-block p{font-size:.95rem}
.prog{font:500 .82rem var(--f-mono);color:var(--muted)}
ol.steps{list-style:none;margin:0;padding:0;display:grid;gap:8px;counter-reset:s}
ol.steps li{display:grid;grid-template-columns:34px 64px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;background:var(--bg-soft);border-radius:12px;font-size:.93rem}
ol.steps li::before{counter-increment:s;content:counter(s);font:800 1.1rem var(--f-display);color:var(--violet)}
ol.steps .min{font:500 .8rem var(--f-mono);color:var(--muted);padding-top:2px}
.diff{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:620px){.diff{grid-template-columns:1fr}}
.diff div{border-radius:14px;padding:12px 14px;font-size:.9rem;display:grid;gap:4px}
.diff b{font-family:var(--f-display)}
.diff .a{background:var(--blue)} .diff .p{background:var(--pink)}
.fi-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);padding-top:18px}
.fi-actions select{font:600 .88rem var(--f-body);border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--bg);color:var(--ink)}
.fi-actions .sp{flex:1}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--dark);color:var(--dark-ink);padding:12px 18px;border-radius:14px;font-size:.9rem;font-weight:500;opacity:0;pointer-events:none;transition:opacity .2s, transform .2s;z-index:50;max-width:calc(100vw - 32px)}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

footer{border-top:1px solid var(--line);padding-block:40px;font-size:.86rem;color:var(--muted)}
footer .wrap.cols-wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
footer .cols{display:flex;gap:48px;flex-wrap:wrap}
footer .cols div{display:grid;gap:6px}
footer .cols b{color:var(--ink)}
footer .cols a{text-decoration:none}
footer .cols a:hover{text-decoration:underline}
footer .credit{display:block;border-top:1px solid var(--line);margin-top:28px;padding-top:20px;font-size:.8rem}
footer .credit b{color:var(--ink);font-weight:600}

/* EN-TÊTE : libellé court du bouton sur téléphone */
.nav .btn .sm{display:none}
@media (max-width:560px){.nav .btn .lg{display:none}.nav .btn .sm{display:inline}}
.badge b{white-space:nowrap}
@media (max-width:520px){.badge{font-size:.78rem;text-align:left}}

/* LES DEUX PORTES D'ENTRÉE */
.doors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:920px;margin:40px auto 0;text-align:left}
@media (max-width:720px){.doors{grid-template-columns:1fr}}
.door{display:grid;gap:10px;align-content:start;background:var(--bg);border-radius:24px;padding:26px;text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(22,20,31,.05),0 18px 40px -22px rgba(52,34,140,.35);transition:transform .15s}
.door:hover{transform:translateY(-3px)}
.door h2{font-size:clamp(1.45rem,2.6vw,1.95rem)}
.door p{color:var(--muted);font-size:.95rem}
.door-ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.5rem;background:var(--yellow)}
.door-meta{font:500 .8rem var(--f-mono);color:var(--muted)}
.door-go{font-weight:700;color:var(--violet);margin-top:4px}
.door.feat{background:var(--violet);color:#fff}
.door.feat p,.door.feat .door-meta{color:rgba(255,255,255,.84)}
.door.feat .door-go{color:#fff}
.door.feat .door-ic{background:rgba(255,255,255,.16)}

/* PROJETS EN VEDETTE */
.feat-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:1000px){.feat-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.feat-list{grid-template-columns:1fr}}
.fp h3{text-wrap:balance}
.fp{border-radius:26px;padding:clamp(22px,3.5vw,34px);display:grid;gap:12px;align-content:start}
.fp-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.fp .flag{font:700 .74rem var(--f-body);padding:4px 10px;border-radius:999px;background:var(--mint);color:var(--mint-ink)}
.fp-n{font:500 .8rem var(--f-mono);opacity:.8}
.fp h3{font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.03em}
.fp p{color:#3d3a4d}
.fp-tags{display:flex;flex-wrap:wrap;gap:6px}
.fp-tags .tag{background:rgba(255,255,255,.7);border-color:transparent}
.fp-acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.fp .btn{background:var(--dark);color:var(--dark-ink)}
.fp .btn-line{background:transparent;border-color:rgba(22,20,31,.35);color:var(--ink)}
.fp.violet{background:var(--violet);color:#fff}
.fp.violet p{color:rgba(255,255,255,.86)}
.fp.violet .tag{background:rgba(255,255,255,.16);color:#fff}
.fp.violet .btn{background:#fff;color:var(--ink)}
.fp.violet .btn-line{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.fp.yellow,.soon-item.yellow{background:var(--yellow)} .fp.blue,.soon-item.blue{background:var(--blue)} .fp.peach,.soon-item.peach{background:var(--peach)}
.fp.pink,.soon-item.pink{background:var(--pink)} .fp.green,.soon-item.green{background:var(--green)} .soon-item.violet{background:var(--violet-soft)}
.soon{margin-top:22px}
.soon-h{font:600 .74rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px}
.soon-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:900px){.soon-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.soon-list{grid-template-columns:1fr}}
.soon-item{border-radius:16px;padding:14px 16px;display:grid;gap:4px;font-size:.84rem}
.soon-item b{font-family:var(--f-display);font-size:1rem;letter-spacing:-.01em}
.soon-item span{color:#4b475c}
.vote-info{font-size:.88rem;color:var(--muted);margin:-4px 0 12px}
.vote-info:empty{display:none}
.vote-info a{color:var(--violet);font-weight:600}
.vote{display:none;align-items:center;gap:8px;margin-top:6px}
.votes-on .vote{display:flex}
.vote-btn{font:600 .8rem var(--f-body);border:1px solid rgba(22,20,31,.15);background:rgba(255,255,255,.85);border-radius:999px;padding:5px 11px;cursor:pointer;color:var(--ink)}
.vote-btn[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.vote-n{font:600 .78rem var(--f-mono);color:var(--ink)}
.soon-list:not(.open) .soon-extra{display:none}
.soon-more{display:flex;justify-content:center;margin-top:14px}
.soon-item.top{box-shadow:inset 0 0 0 2px var(--ink)}
.soon-item.top .soon-n::after{content:" · 🔥 en tête"}
.soon-item .soon-n{justify-self:start;font:700 .72rem var(--f-body);color:var(--ink);background:rgba(255,255,255,.7);border-radius:999px;padding:3px 10px;margin-bottom:2px}

/* CATALOGUE : bouton « Voir plus » */
.more{display:flex;justify-content:center;margin-top:22px}

/* SEMAINE VIDE */
.week-empty{display:flex;gap:16px;align-items:center;border:2px dashed var(--line);border-radius:20px;padding:20px 22px;flex-wrap:wrap}
.week-empty > span{font-size:2rem}
.week-empty div{flex:1;min-width:220px}
.week-empty p{color:var(--muted);font-size:.92rem}

/* IMPRESSION : seulement la fiche ouverte, ou seulement la semaine */
@media print{
  @page{size:A4;margin:14mm}
  body{font-size:11pt}
  body.print-fiche > *:not(dialog){display:none!important}
  body.print-fiche dialog.fiche{position:static;display:block;width:auto;max-height:none;box-shadow:none;border-radius:0;overflow:visible}
  body.print-fiche .fi-close,body.print-fiche .fi-actions{display:none!important}
  body.print-fiche .fi-head{border-radius:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-week > *:not(main){display:none!important}
  body.print-week main > *:not(#semaine){display:none!important}
  body.print-week #semaine{padding:0}
  body.print-week .wbar,body.print-week .wi .x{display:none!important}
  body.print-week .week,body.print-week .wi{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-docs > *:not(#docs){display:none!important}
  body.print-docs #docs{display:block}
  .doc-page{break-after:page}
  .doc-page:last-child{break-after:auto}
  .cj-page{page:paysage}
  dialog.fiche .mat-list input{display:none}
  dialog.fiche .mat-list li::before{content:"☐";margin-right:8px}
}
@page paysage{size:A4 landscape;margin:10mm}

/* DOCUMENTS DE LA SEMAINE : cahier journal, fiches de préparation, matériel */
[data-wnav]{margin-bottom:16px}
.wnav{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.wnav label{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;font-weight:600}
.wnav input[type=date],.wnav select,.prog-niv select,.edt-zone select{font:inherit;font-size:.88rem;font-weight:500;border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:var(--bg);color:var(--ink);max-width:100%}
.wnav .icon-btn{width:34px;height:34px;font-size:1.1rem}
.wnav .sp{flex:1}
.wnav-info{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px;font-size:.84rem}
.wnav-info:empty{display:none}
.wnav-hint{color:var(--muted)}
.edt-wrap{overflow-x:auto;margin-top:10px}
.edt{border-collapse:collapse;width:100%;font-size:.84rem}
.edt th{text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:4px}
.edt td{padding:3px 4px}
.edt input,.edt select{font:inherit;border:1px solid var(--line);border-radius:8px;padding:5px 4px;background:var(--bg);color:var(--ink);min-width:0;width:100%}
.edt input{min-width:88px}
.edt select{min-width:104px}
.edt .icon-btn{width:30px;height:30px;font-size:.8rem}
.edt-mer{display:flex;gap:8px;align-items:center;font-weight:600;font-size:.9rem}
.edt-zone{display:grid;gap:8px}
.edt-zone select{width:max-content}
.edt-zone small{color:var(--muted);font-size:.78rem;line-height:1.5}
.cj .cj-h{white-space:nowrap;font-weight:600;font-size:8.5pt}
.cj .cj-pause td{background:#f3f2f7;color:#666379;font-style:italic;padding:2px 6px;font-size:8pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cj-edt{font-size:8pt;line-height:1.25}
.cj-edt .doc-h{margin-bottom:6px;padding-bottom:4px}
.cj-edt .cj th,.cj-edt .cj td{padding:2px 5px}
.cj-edt .cj small{font-size:7pt;margin-top:1px}
.cj-edt .cj .cj-free td{height:7mm}
.cj-edt .cj .cj-mom th{font-size:8.5pt;padding:2px 6px}
.cj-edt .cj .cj-pause td{padding:1px 6px;font-size:7pt}
.cov tbody th{min-width:190px}
/* COUVERTURE DU PROGRAMME */
.prog-niv{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;font-weight:600}
.cov-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:16px}
.cov{width:100%;border-collapse:collapse;font-size:.86rem}
.cov th,.cov td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left}
.cov thead th{font-size:.78rem;background:var(--bg-soft);white-space:nowrap}
.cov thead th small{display:block;font-weight:500;color:var(--muted);font-size:.7rem}
.cov tbody th{font-weight:600}
.cov .cov-g th{background:var(--bg-soft);font:700 .8rem var(--f-display);text-transform:uppercase;letter-spacing:.05em}
.cov .cov-c,.cov .cov-t{text-align:center;font:600 .86rem var(--f-mono);min-width:54px}
.cov .h1{background:#e3f5ea}.cov .h2{background:#bfe8cd}.cov .h3{background:#86d3a4}
.cov th.now,.cov td.now{box-shadow:inset 2px 0 0 var(--violet),inset -2px 0 0 var(--violet)}
.cov .cov-zero th{color:#c0392b}
.cov tr:last-child > *{border-bottom:0}
.cov-todo{margin-top:16px;display:block}
.cov-todo h3{font-size:1rem;margin-bottom:8px}
.cov-todo ul{margin:0;padding-left:18px;display:grid;gap:6px;font-size:.9rem}
#docs .cov-print .cov-wrap{border:0;overflow:visible}
#docs .cov{font-size:9pt}
#docs .cov th,#docs .cov td{border:1px solid #b9b4cc;padding:4px 6px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* MODE CLASSE (TBI) */
dialog.tbi{border:0;padding:0;margin:0;width:100vw;height:100vh;max-width:none;max-height:none;background:var(--bg);color:var(--ink)}
dialog.tbi[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
dialog.tbi::backdrop{background:var(--bg)}
.tb-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px;font-weight:600;color:var(--muted)}
.tb-main{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:clamp(14px,3vh,32px);padding:0 6vw;overflow:auto}
.tb-kicker{margin:0;font:700 clamp(.95rem,1.6vw,1.35rem) var(--f-body);text-transform:uppercase;letter-spacing:.08em;color:var(--violet)}
.tb-title{margin:0;font-size:clamp(2.2rem,6vw,5.4rem);line-height:1.05}
.tb-text{margin:0;font-size:clamp(1.2rem,2.6vw,2.3rem);line-height:1.3;max-width:34ch}
.tb-step{margin:0;font:600 clamp(1.6rem,4.2vw,3.9rem)/1.2 var(--f-display);max-width:26ch}
.tb-mat{margin:0;font-size:clamp(1rem,1.8vw,1.5rem);color:var(--muted)}
.tb-go{font-size:1.15rem;padding:16px 28px}
.tb-timer{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center}
.tb-timer span{font:700 clamp(3rem,9vw,8rem)/1 var(--f-mono);font-variant-numeric:tabular-nums;min-width:4.2ch}
.tb-timer span.end{color:#c0392b;animation:tbpulse 1s infinite}
@keyframes tbpulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.tb-timer span.end{animation:none}}
.tb-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px}
.tb-dots{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.tb-dots i{width:12px;height:12px;border-radius:50%;background:var(--line)}
.tb-dots i.done{background:var(--violet-line)}
.tb-dots i.on{background:var(--violet)}
@media (max-width:560px){.tb-nav .btn{padding:10px 12px;font-size:.85rem}.tb-dots{display:none}}
.wdocs{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.wdocs b{font-family:var(--f-display);margin-right:4px}
.wdocs label{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;font-weight:600}
.wdocs input[type=date]{font:inherit;font-weight:500;border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:var(--bg);color:var(--ink)}
#docs{display:none;font-size:9.5pt;line-height:1.35;color:#16141f}
.doc-h{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;border-bottom:2px solid #16141f;padding-bottom:6px;margin-bottom:10px}
.doc-h b{font-family:var(--f-display);font-size:16pt;margin-right:10px}
#docs .doc-page{padding:0}
.doc-date{font-weight:600;display:inline-block}
.doc-date::first-letter{text-transform:uppercase}
.doc-who{display:flex;gap:18px;font-size:9pt;white-space:nowrap}
.doc-who .dl{display:inline-block;width:38mm;border-bottom:1px solid #16141f;vertical-align:bottom}
.doc-f{margin-top:8px;font-size:7.5pt;color:#666379}
.cj{width:100%;border-collapse:collapse;table-layout:fixed}
.cj th,.cj td{border:1px solid #b9b4cc;padding:4px 6px;vertical-align:top;text-align:left;word-wrap:break-word}
.cj thead th{background:#eeeaff;font-size:8.5pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cj .cj-mom th{background:#f7f6fb;font-family:var(--f-display);font-size:10pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cj small{display:block;color:#666379;font-size:7.8pt;margin-top:2px}
.cj ol{margin:0;padding-left:14px}
.cj .cj-free td{height:12mm}
.prep h2{font-size:18pt;margin:4px 0 8px}
.prep-facts{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:9pt;margin-bottom:8px}
.prep-facts b{display:block;font-size:7.5pt;text-transform:uppercase;letter-spacing:.05em;color:#666379}
.prep-b{margin-top:8px}
.prep-b h3{font-size:11pt;margin:0 0 3px}
.prep-b p{margin:0}
.prep-prog{color:#666379;font-size:8.5pt;margin-top:2px!important}
.prep-t{width:100%;border-collapse:collapse}
.prep-t th,.prep-t td{border:1px solid #b9b4cc;padding:4px 6px;text-align:left;vertical-align:top}
.prep-t th{background:#eeeaff;font-size:8.5pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.prep-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.prep-lines i{display:block;height:9mm;border-bottom:1px solid #b9b4cc}
.mat-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.mat-list label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.mat-list input{accent-color:var(--violet);width:18px;height:18px;margin-top:2px;flex:none}
.mat-list small{display:block;color:var(--muted);font-size:.78rem}

/* COMPTES ENSEIGNANTS (actifs seulement si Firebase est configuré) */
.acct-btn{background:none;border:0;cursor:pointer;font:inherit;color:inherit;padding:0}
.acct-form{display:grid;gap:14px}
.acct-form label{display:grid;gap:6px;font-weight:600;font-size:.9rem}
.acct-form input:not([type=checkbox]):not([type=radio]),.acct-form select,.acct-form textarea{font:inherit;font-weight:500;font-size:1rem;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--bg);color:var(--ink);width:100%}
.acct-form textarea{resize:vertical}
.acct-form fieldset{border:0;padding:0;margin:0;display:grid;gap:8px}
.acct-form legend{font-weight:600;font-size:.9rem;margin-bottom:6px}
.acct-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.acct-chips{display:flex;flex-wrap:wrap;gap:8px}
label.acct-chip{display:inline-flex;align-items:center;gap:6px;font-weight:500;font-size:.9rem;border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer}
label.acct-chip input{accent-color:var(--violet);width:16px;height:16px}
.acct-msg{font-weight:600;font-size:.92rem;color:var(--violet)}
.acct-msg:empty{display:none}
.acct-note{font-size:.84rem;color:var(--muted)}
.acct-list{display:grid;gap:10px}
.acct-item{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px 14px;flex-wrap:wrap}
.acct-item small{display:block;color:var(--muted);font-size:.8rem;margin-top:2px}
.acct-acts{display:flex;gap:6px;flex-wrap:wrap}
.acct-proj{border:1px solid var(--line);border-radius:16px;padding:14px;display:grid;gap:10px;margin-top:12px}
.acct-proj-h{display:flex;justify-content:space-between;gap:10px}
.acct-proj-h span{font:600 .85rem var(--f-mono);color:var(--muted)}
.acct-bar{height:10px;background:var(--bg-soft);border-radius:999px;overflow:hidden}
.acct-bar span{display:block;height:100%;background:var(--violet)}
.tag-own{background:var(--yellow);border-color:transparent}
.menu a{white-space:nowrap}
@media (max-width:1180px){#go-favs{display:none}}
.acct-btn .ab-i{display:none}
@media (max-width:560px){.nav .wrap{gap:10px}.nav-r{gap:8px}.nav-r .login.acct-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--bg)}.acct-btn .ab-i{display:inline;font-size:1.15rem}.acct-btn .ab-l{display:none}}

/* ---------- Espace enseignant (espace.html) ---------- */
.esp-top{padding-bottom:40px}
.esp-hero{padding-top:44px;display:grid;gap:14px;justify-items:start}
.esp-hero h1{font-size:clamp(2.2rem,5.4vw,3.8rem);letter-spacing:-.05em;line-height:1}
.esp{padding-block:36px 24px;min-height:50vh}
.esp-loading{color:var(--muted);font-weight:500}
.esp-card{border:1px solid var(--line);border-radius:20px;padding:22px;background:var(--bg)}
.esp-login{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:32px;align-items:start}
.esp-login h2{font-size:1.7rem}
.esp-why{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.esp-why li{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.esp-why li > span{font-size:1.3rem;width:40px;height:40px;display:grid;place-items:center;background:var(--violet-soft);border-radius:12px;flex:none}
.esp-why b{display:block}
.esp-why div{color:var(--muted);font-size:.92rem}
.esp-why div b{color:var(--ink)}
.esp-app{display:grid;grid-template-columns:240px minmax(0,1fr);gap:32px;align-items:start}
.esp-nav{display:grid;gap:4px;position:sticky;top:16px;border:1px solid var(--line);border-radius:20px;padding:10px;background:var(--bg)}
.esp-nav a,.esp-logout{display:flex;align-items:center;gap:8px;text-decoration:none;font:600 .92rem var(--f-body);padding:10px 12px;border-radius:12px;color:var(--ink)}
.esp-nav a:hover{background:var(--bg-soft)}
.esp-nav a[aria-current=page]{background:var(--violet-soft);color:var(--violet)}
.esp-nav .count{margin-left:auto}
.esp-logout{background:none;border:0;border-top:1px solid var(--line);border-radius:0 0 12px 12px;margin-top:6px;padding-top:14px;cursor:pointer;color:var(--muted)}
.esp-panel{display:grid;gap:16px;min-width:0}
.esp-panel:focus{outline:0}
.esp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.esp-head h2{font-size:clamp(1.6rem,3vw,2.1rem)}
.esp-head .acct-note{margin:6px 0 0}
.esp-h3{margin-top:10px}
.esp-tip{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--yellow);border-radius:16px;padding:14px 16px;font-weight:500}
.esp-tip span{flex:1;min-width:200px}
.esp-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.esp-tile{border:1px solid var(--line);border-radius:18px;padding:16px;text-decoration:none;display:grid;gap:2px;transition:box-shadow .15s, transform .15s}
.esp-tile:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.esp-tile b{font:800 2.2rem var(--f-display);letter-spacing:-.04em;color:var(--violet)}
.esp-tile span{font-weight:600}
.esp-tile small{color:var(--muted);font-size:.8rem}
.esp-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.esp-panel .acct-proj{margin-top:0}
.esp-panel .acct-proj a{text-decoration:none}
.esp-panel .acct-proj a:hover{text-decoration:underline}
.esp-panel .acct-item{background:var(--bg)}
.esp-panel .acct-item .tag{align-self:center}
.esp-st-proposee{background:var(--yellow);border-color:transparent}
.esp-st-publiee{background:var(--mint);color:var(--mint-ink);border-color:transparent}
.esp-st-refusee{background:var(--pink);border-color:transparent}
.esp-danger{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.esp-danger .acct-note{margin:2px 0 0}
.esp-docs{margin:0 0 16px;padding:0 0 14px;border-top:0;border-bottom:1px dashed var(--line)}
@media (min-width:901px){.esp-week.d5{grid-template-columns:repeat(5,minmax(0,1fr))}}
.esp-day h3 small{font:500 .78rem var(--f-body);color:var(--muted)}
.esp-day.off{background:repeating-linear-gradient(135deg,var(--bg-soft) 0 8px,var(--bg) 8px 16px)}
.esp-off{margin:0;font-size:.78rem;font-weight:600;color:#c0392b}
.esp-week{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.esp-day{border:1px solid var(--line);border-radius:18px;padding:12px;display:grid;gap:10px;align-content:start}
.esp-day h3{font-size:1rem}
.esp-slot{display:grid;gap:6px}
.esp-slot small{font:600 .72rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.esp-act{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 6px;align-items:center;background:var(--violet-soft);border-radius:10px;padding:8px 8px 8px 10px;font-size:.86rem}
.esp-act a{font-weight:600;text-decoration:none;grid-column:1}
.esp-act span{grid-column:1;color:var(--muted);font:500 .74rem var(--f-mono)}
.esp-act .icon-btn{grid-column:2;grid-row:1 / span 2;width:30px;height:30px;font-size:.8rem;border-radius:9px}
.esp-none{margin:0;font-size:.8rem;color:#8d89a3;border:1.5px dashed var(--line);border-radius:10px;padding:10px;text-align:center}
.esp-modo summary{cursor:pointer;display:grid;gap:2px}
.esp-modo summary small{color:var(--muted);font-size:.8rem}
.esp-modo[open] summary{margin-bottom:10px}
.esp-modo ol{padding-left:20px}
.esp-card h3{margin-bottom:2px}
@media (max-width:900px){.esp-app{grid-template-columns:1fr;gap:18px}.esp-nav{position:static;display:flex;overflow-x:auto;padding:6px}.esp-nav a,.esp-logout{white-space:nowrap;flex:none}.esp-logout{border:0;margin:0;padding-top:10px}.esp-tiles,.esp-week{grid-template-columns:repeat(2,minmax(0,1fr))}.esp-login{grid-template-columns:1fr}}
@media (max-width:480px){.esp-tiles,.esp-week{grid-template-columns:1fr}.esp-card{padding:16px}}

/* PAGES STATIQUES : une page par idée, liste des idées, pages légales */
.card .body h3 a{color:inherit;text-decoration:none}
.card .body h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.static-top{padding-bottom:0}
.static-wrap{padding-block:28px 20px;display:grid;gap:22px}
.static-wrap section{padding-block:0}
.crumbs{font-size:.85rem;color:var(--muted)}
.crumbs a{color:var(--muted)}
.static-h1{font-size:clamp(2rem,5vw,3rem)}
.fiche-page{border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:var(--shadow);max-width:820px;width:100%;margin-inline:auto;background:var(--bg)}
.fiche-page .fi-head h1{font-size:clamp(1.8rem,4vw,2.5rem)}
.fiche-page .fi-block h2{font-size:1.05rem}
.near,.static-wrap>.crumbs{max-width:820px;width:100%;margin-inline:auto}
.near h2{font-size:1.3rem;margin-bottom:10px}
.near ul,.idx ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.near a,.idx a{display:grid;gap:3px;height:100%;padding:12px 14px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);background:var(--bg)}
.near a:hover,.idx a:hover{border-color:var(--violet-line);background:var(--violet-soft)}
.near span,.idx span{font-size:.8rem;color:var(--muted)}
.idx small{font-size:.84rem;color:#3d3a4d}
.idx{scroll-margin-top:20px}
.idx h2{font-size:1.4rem;margin:8px 0 10px}
.mat-jump{display:flex;flex-wrap:wrap;gap:6px}
.mat-jump .tag{text-decoration:none;font-size:.8rem;padding:5px 11px}
.doc-text{max-width:760px;gap:12px}
.doc-text h1{font-size:clamp(2rem,5vw,2.8rem)}
.doc-text h2{font-size:1.25rem;margin-top:18px}
.doc-text p,.doc-text li{line-height:1.6}
.doc-text ul{padding-left:20px;display:grid;gap:6px}
.doc-maj{color:var(--muted);font-size:.86rem}
.doc-lead{background:var(--violet-soft);border:1px solid var(--violet-line);border-radius:16px;padding:14px 18px}
.doc-table{border-collapse:collapse;width:100%;font-size:.92rem}
.doc-table th,.doc-table td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.doc-table th{background:var(--bg-soft)}
@media (max-width:640px){.fiche-page .facts{grid-template-columns:repeat(2,minmax(0,1fr))}.fiche-page .diff{grid-template-columns:1fr}.doc-table{font-size:.84rem}}
@media print{
  body.static .top,body.static footer,body.static .crumbs,body.static .near,body.static .fi-actions{display:none!important}
  body.static .static-wrap{padding:0}
  body.static .fiche-page{border:0;box-shadow:none;border-radius:0}
  body.static .fi-head{border-radius:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* FONCTIONNALITÉS (fonctionnalites.html) */
.fx section{padding-block:0}
.fx-hero{background-color:var(--top);background-image:radial-gradient(var(--dot) 1.1px,transparent 1.4px);background-size:22px 22px;padding:56px 0 64px;text-align:center}
.fx-hero .wrap{display:grid;justify-items:center;gap:18px}
.fx-hero h1{font-size:clamp(2.4rem,6.4vw,4.8rem);letter-spacing:-.05em;line-height:1;max-width:17ch}
.fx-hero .lead{margin-inline:auto}
.fx-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;width:min(760px,100%);margin:14px 0 0}
.fx-stats div{display:flex;flex-direction:column-reverse;background:var(--bg);border:1px solid var(--line);border-radius:18px;padding:16px 10px;box-shadow:var(--shadow)}
.fx-stats dd{margin:0;font:800 clamp(2rem,5vw,2.8rem)/1 var(--f-display);color:var(--violet)}
.fx-stats dt{font-size:.82rem;color:var(--muted);margin-top:6px}
.fx-toc{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:760px;margin-top:8px}
.fx-toc a{border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:6px 14px;font-size:.88rem;font-weight:600;text-decoration:none;color:var(--ink)}
.fx-toc a:hover{border-color:var(--violet-line);background:var(--violet-soft)}
.fx-sec{padding-block:clamp(48px,7vw,80px) 0;scroll-margin-top:12px}
.fx-title{display:grid;gap:12px;margin-bottom:28px;max-width:720px}
.fx-title h2{font-size:clamp(1.8rem,4vw,2.7rem)}
.fx-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;counter-reset:fx}
.fx-steps>li{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:22px;padding:24px;display:grid;gap:8px;align-content:start;background:var(--bg)}
.fx-steps>li::after{counter-increment:fx;content:counter(fx);position:absolute;right:14px;top:-18px;font:800 7rem var(--f-display);color:var(--violet-soft);z-index:0}
.fx-steps>li>*{position:relative;z-index:1}
.fx-steps small{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--violet)}
.fx-steps h3{font-size:1.3rem}
.fx-steps ul,.fx-checks{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:8px;font-size:.93rem}
.fx-steps ul li,.fx-checks li{display:flex;gap:10px}
.fx-steps ul li::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--c2);margin-top:.5em}
.fx-checks li::before{content:"✓";flex:none;color:var(--ok);font-weight:800}
.fx-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.fx-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.fx-card{border:1px solid var(--line);border-radius:20px;padding:20px;display:grid;gap:6px;align-content:start;background:var(--bg)}
.fx-card h3{font-size:1.1rem}
.fx-card p{font-size:.92rem;color:#3d3a4d}
.fx-ic{font-size:1.5rem;line-height:1}
.fx-more{margin-top:20px}
.fx-projets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.fx-projet{display:grid;gap:8px;align-content:start;border-radius:22px;padding:22px;text-decoration:none;color:var(--ink);transition:transform .15s}
.fx-projet:hover{transform:translateY(-3px)}
.fx-projet small{font:500 .78rem var(--f-mono);color:#3d3a4d}
.fx-projet h3{font-size:1.3rem}
.fx-projet p{font-size:.9rem;color:#3d3a4d}
.fx-mats{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.fx-projet.bg-violet{background:var(--violet-soft)} .fx-projet.bg-yellow{background:var(--yellow)} .fx-projet.bg-green{background:var(--green)} .fx-projet.bg-pink{background:var(--pink)} .fx-projet.bg-blue{background:var(--blue)} .fx-projet.bg-peach{background:var(--peach)}
.fx-note{margin-top:16px;border:1px dashed var(--violet-line);border-radius:18px;padding:14px 18px;font-size:.94rem}
.fx-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:center}
.fx-split .fx-title{margin:0}
.fx-tbi{display:grid;justify-items:center}
.fx-tbi-screen{width:100%;aspect-ratio:16/10;background:var(--dark);color:var(--dark-ink);border-radius:18px;border:10px solid #2b2838;display:grid;align-content:center;justify-items:center;gap:14px;padding:24px;text-align:center;box-shadow:var(--shadow)}
.fx-tbi-screen small{color:var(--dark-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.fx-tbi-screen b{font:800 clamp(1.1rem,2.4vw,1.6rem)/1.2 var(--f-display);max-width:22ch}
.fx-timer{font:500 1.8rem var(--f-mono);color:var(--c2)}
.fx-tbi-foot{width:30%;height:14px;background:#d6d3e2;border-radius:0 0 8px 8px}
.fx-faq details{border:1px solid var(--line);border-radius:16px;padding:14px 18px;margin-bottom:10px;max-width:820px;background:var(--bg)}
.fx-faq summary{cursor:pointer;font-weight:700}
.fx-faq details p{margin-top:8px;font-size:.94rem;color:#3d3a4d}
.fx-cta{background:var(--dark);color:var(--dark-ink);border-radius:28px;padding:clamp(28px,5vw,48px);display:grid;gap:12px;justify-items:center;text-align:center}
.fx-cta p{color:var(--dark-muted)}
.fx-cta div{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:6px}
.fx-cta .btn-ghost{color:var(--dark-ink);border-color:#3b3850}
@media (max-width:900px){.fx-steps,.fx-grid,.fx-projets{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-split{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.fx-steps,.fx-grid,.fx-grid-4,.fx-projets{grid-template-columns:1fr}.fx-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* NOUVEAUTÉS (nouveautes.html) */
.cl{max-width:860px}
.cl-head{display:grid;gap:12px}
.cl-kinds{display:flex;flex-wrap:wrap;gap:6px}
.cl-k{display:inline-block;flex:none;height:fit-content;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:700;white-space:nowrap}
.cl-nouveau{background:var(--violet-soft);color:var(--violet)} .cl-ameliore{background:var(--blue);color:#1d5fa8}
.cl-securite{background:var(--mint);color:var(--mint-ink)} .cl-change{background:var(--bg-soft);color:var(--muted);border:1px solid var(--line)}
.cl-list{list-style:none;margin:10px 0 0;padding:0;position:relative}
.cl-list::before{content:"";position:absolute;left:11px;top:8px;bottom:60px;width:2px;background:linear-gradient(var(--violet),var(--violet-line) 40%,transparent)}
.cl-list>li{position:relative;padding:0 0 44px 44px;scroll-margin-top:12px}
.cl-list>li::before{content:"";position:absolute;left:4px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--dot)}
.cl-list>li.cl-last::before{background:var(--violet);border-color:var(--violet);box-shadow:0 0 0 6px var(--violet-soft)}
.cl-list>li.cl-end::before{display:none}
.cl-date{font-size:.86rem;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cl-badge{background:var(--violet);color:#fff;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:700}
.cl-list h2{font-size:clamp(1.5rem,3.4vw,2rem);margin-top:4px}
.cl-sum{color:var(--muted);margin-top:8px}
.cl-changes{list-style:none;margin:16px 0 0;padding:0;border:1px solid var(--line);border-radius:18px;background:var(--bg);overflow:hidden}
.cl-changes li{display:flex;gap:12px;align-items:baseline;padding:11px 16px;font-size:.93rem}
.cl-changes li+li{border-top:1px solid var(--line)}
.cl-end>div{border:1px solid var(--line);border-radius:18px;padding:18px 20px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;background:var(--bg-soft)}
@media (max-width:520px){.cl-changes li{flex-direction:column;gap:4px}.cl-list>li{padding-left:34px}}

/* ICÔNES (Phosphor Duotone, assets/icons.svg) */
.ic{width:1.2em;height:1.2em;flex:none;vertical-align:-.22em;fill:currentColor}
.ic{margin-inline-end:.3em}
.btn .ic,.esp-nav .ic,.login .ic,.icon-btn .ic,.door-ic .ic,.fx-ic .ic,.ab-i .ic,.week-empty .ic,.esp-login li>span .ic{margin:0}
.fi-block h3 .ic,.fiche-page .fi-block h2 .ic{color:var(--violet);--ic-tint:var(--c2);--ic-op:.55}
.icon-btn .ic{width:1.25em;height:1.25em}
.icon-btn[aria-pressed="true"] .ic{--ic-op:1}
.door-ic .ic,.fx-ic .ic{width:30px;height:30px;color:var(--violet)}
.fx-ic .ic{--ic-tint:var(--c2);--ic-op:.6}
.ab-i .ic{width:1.35em;height:1.35em}
.quick button .ic{color:var(--violet)}
.week-empty .ic{width:40px;height:40px;color:var(--violet)}
.esp-login li>span .ic{width:28px;height:28px;color:var(--violet)}
.tb-title .ic,.tb-mat .ic{vertical-align:-.15em}

/* ACCUEIL : sections alternées blanc / gris pâle */
section.alt{background:var(--top)}
section.alt .week-empty{background:var(--bg)}
section.alt + footer{margin-top:0}
/* Portes de l'accueil : icônes pleines, violettes sur jaune et blanches sur violet */
.door-ic .ic{width:30px;height:30px;color:var(--violet)}
.door.feat .door-ic .ic{color:#fff}

/* MOBILE : barre de navigation du bas, filtres repliables, carrousels, fiche plein écran */
.tabbar,.filters-toggle{display:none}
footer .cols div{align-content:start}
@media (max-width:979px){
  .tabbar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}
  .tabbar a{display:grid;justify-items:center;gap:2px;padding:6px 2px;border-radius:12px;text-decoration:none;color:var(--muted);font:600 .68rem var(--f-body);-webkit-tap-highlight-color:transparent}
  .tabbar .ic{width:24px;height:24px;margin:0}
  .tabbar a[aria-current="true"],.tabbar a[aria-current="page"]{color:var(--violet)}
  .tabbar a[aria-current="true"] .ic,.tabbar a[aria-current="page"] .ic{--ic-op:.35}
  body{padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  section,.idx,.fx-sec{scroll-margin-top:8px}
}
@media (max-width:640px){
  /* En-tête plus compact */
  .hero{padding-top:36px}
  .hero h1{margin-top:22px}
  .hero .lead{font-size:1rem;margin-top:18px}
  .search{margin-top:24px}
  .doors{gap:12px}
  .door{padding:20px}
  .door p{display:none}
  /* Boutons groupés : passent à la ligne au lieu de défiler (le choix reste visible) */
  .seg{flex-wrap:wrap;overflow:visible;border:0;gap:6px;border-radius:0}
  .seg button,.seg button:last-child{border:1px solid var(--line);border-radius:10px}
  .gen .seg button,.gen .seg button:last-child{border-color:#2e2b3b}
  /* Filtres repliés derrière un bouton */
  .filters-toggle{display:inline-flex;width:100%}
  .filters-toggle .count:empty{display:none}
  .filters-toggle .count{background:var(--violet);color:#fff;border-radius:999px;padding:1px 8px;font-size:.75rem}
  .filters{display:none;margin-top:10px}
  .filters.open{display:grid}
  /* Projets et projets en préparation : carrousels à faire glisser */
  .feat-list,.soon-list{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin-inline:-16px;padding:4px 16px 14px;scroll-padding-inline:16px;scrollbar-width:none}
  .feat-list::-webkit-scrollbar,.soon-list::-webkit-scrollbar{display:none}
  .feat-list>*{flex:0 0 86%;scroll-snap-align:start}
  .soon-list>*{flex:0 0 74%;scroll-snap-align:start}
  .soon-list:not(.open) .soon-extra{display:grid}
  .soon-more{display:none}
  /* Cartes d'idées un peu plus compactes */
  .card .head{padding:12px 16px 10px}
  .card .body{padding:12px 16px}
  .card .foot{padding:10px 16px}
  /* Fiche : panneau plein écran qui monte du bas, actions toujours à portée de pouce */
  dialog.fiche{width:100%;max-width:100%;max-height:calc(100dvh - 12px);margin:auto 0 0;border-radius:22px 22px 0 0}
  .fi-head{padding:20px 18px 18px}
  .fi-body{padding:18px 18px 0;gap:18px}
  .fi-actions{position:sticky;bottom:0;z-index:2;background:var(--bg);margin:0 -18px;padding:10px 18px calc(10px + env(safe-area-inset-bottom,0px));box-shadow:0 -10px 20px -14px rgba(22,20,31,.35);gap:8px}
  .fi-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .fi-actions select{min-width:0;width:100%;padding:9px 8px}
  .fi-actions .sp{display:none}
  .fi-actions .btn{padding:10px 8px;min-width:0}
  .fi-actions .icon-btn{width:100%}
  .hide-sm{display:none}
  ol.steps li{grid-template-columns:26px minmax(0,1fr);gap:4px 8px}
  ol.steps li>span:last-child{grid-column:2}
  /* Espace enseignant : en-tête plus court */
  .esp-hero h1{font-size:2.2rem}
}
@media print{.tabbar{display:none!important}body{padding-bottom:0!important}}

/* FICHES ÉLÈVES (assets/fiches-eleves.js) : pages A4 imprimées d'un coup */
#fe-print{display:none}
@media print{
  body.print-fe > *:not(#fe-print){display:none!important}
  body.print-fe{padding:0!important}
  body.print-fe #fe-print{display:block}
}
.fe-page{display:flex;flex-direction:column;min-height:265mm;break-after:page;font:10.5pt/1.35 var(--f-body);color:#16141f;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.fe-page:last-child{break-after:auto}
.fe-h{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #16141f;padding-bottom:4px;margin-bottom:8px;font-size:9pt}
.fe-brand{font:800 11pt var(--f-display)}
.fe-t{font:800 19pt/1.1 var(--f-display);letter-spacing:-.02em}
.fe-meta{font-size:8.5pt;color:#666379;margin:2px 0 0}
.fe-consigne{background:#eeeaff;border-radius:8px;padding:6px 10px;margin:8px 0 10px;font-size:10pt}
.fe-body{display:grid;gap:9px;align-content:start}
.fe-f{margin-top:auto;padding-top:6px;font-size:7.5pt;color:#666379;border-top:1px solid #d6d3e2}
.fe-h2{font:800 12pt var(--f-display);margin-top:6px}
.fe-lines{height:calc(var(--n,1)*8mm);background:repeating-linear-gradient(transparent 0 calc(8mm - 1px),#b9b4cc calc(8mm - 1px) 8mm)}
.fe-field b{display:block;font-size:9.5pt}
.fe-row{display:flex;gap:12px;align-items:flex-start}
.fe-row>.fe-field,.fe-row>.fe-box{flex:1}
.fe-center{justify-content:center;align-items:center}
.fe-box{border:1.5px solid #d6d3e2;border-radius:10px;padding:7px 10px;display:grid;gap:5px}
.fe-box>b{font:800 10pt var(--f-display)}
.fe-box ol{margin:0;padding-left:18px}
.fe-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:9.5pt}
.fe-sym{font-style:normal;font-weight:800;display:inline-block;min-width:16px;text-align:center}
.fe-sw{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid #16141f;vertical-align:-2px}
.fe-table{width:100%;border-collapse:collapse;font-size:9.5pt}
.fe-table th,.fe-table td{border:1px solid #b9b4cc;padding:2px 6px;height:var(--h,10mm);text-align:left;vertical-align:middle}
.fe-table th{background:#f3f2f8;height:auto;padding:4px 6px}
.fe-cut{font-size:8pt;color:#666379;margin:0}
.fe-cards{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px dashed #8a86a0;border-left:1px dashed #8a86a0}
.fe-card{height:19mm;border-right:1px dashed #8a86a0;border-bottom:1px dashed #8a86a0;display:grid;place-items:center;align-content:center;gap:4px}
.fe-frac{display:inline-grid;font:800 17pt/1 var(--f-display);text-align:center}
.fe-frac i{font-style:normal;padding:0 6px}
.fe-frac i:first-child{border-bottom:2px solid #16141f}
.fe-bar{width:32mm;height:4mm}
.fe-faces{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.fe-face{margin:0;border:1.5px solid #d6d3e2;border-radius:10px;padding:4px;text-align:center}
.fe-face svg{width:100%;height:30mm}
.fe-face figcaption{font:800 11pt var(--f-display)}
.fe-fluence h2{font:800 14pt var(--f-display);margin-bottom:6px}
.fe-fluence p{display:flex;justify-content:space-between;gap:12px;font-size:13pt;line-height:1.7;margin:0}
.fe-fluence b{font:500 9pt var(--f-mono);color:#666379;min-width:28px;text-align:right}
.fe-figs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.fe-fig{border:1.5px solid #d6d3e2;border-radius:10px;padding:6px 8px;display:grid;gap:4px;justify-items:start}
.fe-fig p{margin:0;font-size:9.5pt}
.fe-bingos{display:grid;grid-template-columns:repeat(2,1fr);gap:8mm}
.fe-bingo{border:2px solid #16141f;border-radius:10px;padding:5px;text-align:center}
.fe-bingo b{font:800 14pt var(--f-display)}
.fe-bingo>div{display:grid;grid-template-columns:repeat(4,1fr);margin-top:4px;border-top:1px solid #16141f;border-left:1px solid #16141f}
.fe-bingo span{height:16mm;display:grid;place-items:center;border-right:1px solid #16141f;border-bottom:1px solid #16141f;font:700 11pt var(--f-body)}
.fe-bingo span .fe-sw{width:12mm;height:12mm}
.fe-script{display:grid;gap:3px}
.fe-line{display:grid;grid-template-columns:30mm 1fr;gap:8px;margin:0;font-size:10.5pt;line-height:1.45}
.fe-big{font-size:12.5pt}
.fe-big .fe-line{font-size:12.5pt;line-height:1.6}
.fe-who{font:800 9.5pt var(--f-display)}
.fe-narrateur{color:#5b3df5}.fe-voyageur{color:#c2185b}.fe-vieilledame{color:#1d6b3c}.fe-voisin{color:#b45309}
.fe-enigmes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.fe-enigme{border:1.5px solid #d6d3e2;border-radius:10px;padding:7px 9px;display:grid;gap:4px;align-content:start;font-size:9.8pt}
.fe-enigme>b{font:800 10.5pt var(--f-display)}
.fe-enigme p{margin:0}
.fe-enigme .fe-row p{font-size:9.5pt}
.fe-ans{font-weight:700}
.fe-hint{background:#f3f2f8;border-radius:6px;padding:3px 6px;font-size:9pt}
.fe-coded{font:700 15pt var(--f-mono);letter-spacing:.2em;margin:2px 0}
.fe-abc{display:flex;gap:10px;font:700 10pt var(--f-mono)}
.fe-abc-t td,.fe-abc-t th{height:9mm;text-align:center;padding:0;font-family:var(--f-mono)}
.fe-code{display:flex;align-items:center;gap:8px;font:800 12pt var(--f-display)}
.fe-code span{width:14mm;height:14mm;border:2px solid #16141f;border-radius:6px}
.fe-paste{border:2px dashed #b9b4cc;border-radius:10px;min-height:32mm;display:grid;place-items:center;color:#8a86a0;font-size:10pt}
.fe-sketch{min-height:45mm}
.fe-cartel{border:2px solid #16141f;padding:8px 12px;width:95mm;font-size:10pt;line-height:2}
.fe-row>svg{flex:none}

/* SÉQUENCES ET PROGRAMMATION (sequences/, programmation.html, Mon espace → Programme) */
.seq-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.seq-s{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;border:1px solid var(--line);border-radius:16px;padding:14px 16px;break-inside:avoid}
.seq-n{font:800 1.5rem/1 var(--f-display);color:var(--violet)}
.seq-ph{font:600 .72rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.seq-s h3{font-size:1.1rem;margin:3px 0 4px}
.seq-s h3 a{color:inherit;text-decoration-thickness:2px;text-underline-offset:3px}
.seq-s p{font-size:.92rem;color:#3d3a4d}
.seq-s ol.steps{margin-top:10px}
.seq-more{font-size:.86rem;margin-top:6px}
.seq-rep{margin:0;padding-left:20px;display:grid;gap:4px;font-size:.93rem}
.prog-page .cov-wrap{overflow-x:auto}
.prog-t{min-width:640px}
.prog-t td{vertical-align:top;font-size:.86rem;min-width:110px;line-height:1.4}
.prog-t a{color:inherit}
.prog-niv-b{scroll-margin-top:12px;display:grid;gap:8px}
.prog-niv-b h2{font-size:1.4rem;margin-top:10px}
.prog-edit{display:grid;gap:8px;margin-top:10px}
.prog-edit label{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:.9rem}
.prog-edit select{font:600 .86rem var(--f-body);border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:var(--bg);color:var(--ink)}
.prog-edit small{color:var(--muted)}
.seq-grid{page:paysage;min-height:186mm}
.seq-t th{font-size:7.5pt;line-height:1.2;vertical-align:bottom;height:auto}
.seq-t th:first-child{width:38mm}
.seq-t th:last-child{width:40mm}
.seq-t td{height:5.1mm;padding:0 4px}
@media print{
  body.static .seq-page .fi-head{border-radius:12px}
  body.static .prog-niv-b{break-inside:avoid}
  body.static .prog-page .mat-jump{display:none}
}
@media (max-width:640px){.seq-s{grid-template-columns:24px minmax(0,1fr);gap:8px;padding:12px}}
.prog-t tbody th{min-width:110px}
.prog-card{display:grid;gap:12px;margin-top:18px}
.seq-grid .fe-f{padding-top:3px}
.seq-grid{min-height:184mm}
section.fe-page{padding:0}
.sec-links{display:flex;flex-wrap:wrap;gap:8px}

/* BARRE DU HAUT COLLÉE : reste visible au défilement */
header.nav{position:sticky;top:0;z-index:45;padding-block:16px;background-color:var(--top);background-image:radial-gradient(var(--dot) 1.1px,transparent 1.4px);background-size:22px 22px;transition:padding .2s,background-color .2s,box-shadow .2s}
header.nav.scrolled{padding-block:8px;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line),0 10px 24px -18px rgba(22,20,31,.35)}
header.nav.scrolled .menu{box-shadow:none;background:transparent}
html{scroll-padding-top:84px}
.hero{padding-top:62px}
.esp-hero{padding-top:28px}
@media (max-width:640px){header.nav{padding-block:12px}header.nav.scrolled{padding-block:6px}html{scroll-padding-top:72px}.hero{padding-top:24px}}
@media print{header.nav{display:none!important}}
/* Connexion : choix « J'ai déjà un compte » / « Créer un compte » */
.esp-mode{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:18px;border-radius:999px;background:var(--top);border:1px solid var(--line)}
.esp-mode button{border:0;background:transparent;font:inherit;font-weight:600;font-size:.9rem;padding:9px 12px;border-radius:999px;color:var(--muted);cursor:pointer}
.esp-mode button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(22,20,31,.14)}
.esp-mode button{white-space:nowrap;padding-inline:6px}
@media (max-width:400px){.esp-mode button{font-size:.82rem}}

/* ---------- Vues de l'accueil (Accueil, Idées, Projets, Préparer) ---------- */
[data-view][hidden]{display:none!important}
section.view-first{padding-top:clamp(36px,5vw,56px)}
.menu a[aria-current="page"]{background:var(--violet-soft);color:var(--violet)}
.sec-head.row{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap}
.sec-head.row h2{margin-top:14px}
#apercu{padding-top:clamp(28px,4vw,48px)}
.feat-list.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.feat-list.four .fp h3{font-size:clamp(1.35rem,2.2vw,1.7rem)}
.feat-list.four .fp p{font-size:.92rem}
@media (max-width:1100px){.feat-list.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.feat-list.four{grid-template-columns:minmax(0,1fr)}}
.espace-band{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;margin-top:28px;padding:22px 26px;border-radius:24px;background:var(--bg);color:var(--ink);text-decoration:none;box-shadow:0 1px 2px rgba(22,20,31,.05),0 18px 40px -22px rgba(52,34,140,.35);transition:transform .15s}
.espace-band:hover{transform:translateY(-2px)}
.espace-band b{display:block;font-family:var(--f-display);font-size:1.25rem;letter-spacing:-.01em}
.espace-band span span{color:var(--muted);font-size:.95rem}
@media (max-width:640px){.espace-band{grid-template-columns:auto minmax(0,1fr)}.espace-band .door-go{grid-column:1/-1}}
#generateur{margin-bottom:32px}
.soon-box{margin-top:8px;border-radius:20px;background:var(--bg-soft);padding:6px 18px}
.soon-box summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;cursor:pointer;list-style:none;font-size:.95rem}
.soon-box summary::-webkit-details-marker{display:none}
.soon-box summary b{color:var(--ink)}
.soon-box .soon-sum-go{font-weight:700;color:var(--violet);white-space:nowrap}
.soon-box[open] .soon-sum-go{visibility:hidden}
.soon-box[open]{padding-bottom:18px}
.prep-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:1000px){.prep-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.prep-grid{grid-template-columns:minmax(0,1fr)}}
.prep-card{display:grid;gap:8px;align-content:start;padding:22px;border-radius:20px;background:var(--bg);color:var(--ink);text-decoration:none;box-shadow:0 1px 2px rgba(22,20,31,.05),0 14px 34px -22px rgba(52,34,140,.35);transition:transform .15s}
.prep-card:hover{transform:translateY(-2px)}
.prep-card .ic{width:30px;height:30px;color:var(--violet);margin:0}
.prep-card b{font-family:var(--f-display);font-size:1.15rem;letter-spacing:-.01em}
.prep-card span{color:var(--muted);font-size:.92rem}
#preparer{padding-bottom:clamp(28px,4vw,48px)}
.nw{white-space:nowrap}
/* Programmation annuelle : la ligne des projets */
.prog-t .prog-proj th,.prog-t .prog-proj td{background:var(--violet-soft)}
.prog-t .prog-proj small{color:var(--muted);white-space:nowrap}
/* Fiches élèves des séquences (assets/fiches-sequences.js) */
.fs-ex{display:grid;gap:5px;break-inside:avoid}
.fs-ex>b{display:flex;gap:7px;align-items:baseline;font:700 10.5pt var(--f-body)}
.fs-ex>b>span{flex:none;display:inline-grid;place-items:center;width:5.2mm;height:5.2mm;border-radius:50%;background:#16141f;color:#fff;font-size:8.5pt}
.fs-cells{display:grid;grid-template-columns:repeat(var(--c,3),1fr);gap:5px 14px;font-size:11pt;line-height:1.9}
.fs-cells span{white-space:nowrap}
.fs-cells .fs-frac{font-size:12pt;vertical-align:middle}
.fs-bank{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.fs-bank span{border:1.5px dashed #8a86a0;border-radius:6px;padding:1px 8px;font-size:10pt}
.fs-aide{background:#fff6d6;border-radius:8px;padding:6px 10px;display:grid;gap:4px;font-size:9.5pt}
.fs-aide>b,.fs-prof>b{font:800 9pt var(--f-display);text-transform:uppercase;letter-spacing:.04em}
.fs-prof{border:1px dashed #b9b4cc;border-radius:8px;padding:5px 9px;font-size:8.5pt;color:#444}
.fs-pics{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.fs-pic{display:inline-grid;justify-items:center;gap:2px;border:1.5px solid #d6d3e2;border-radius:10px;padding:4px 8px;min-width:20mm}
.fs-pic i{font-style:normal;font-size:24pt;line-height:1.1}
.fs-pic small{font-size:8.5pt}
.fs-q{display:grid;justify-items:center;gap:4px;align-content:end}
.fs-ans{font:600 11pt var(--f-body);color:#8a86a0}
.fs-nums{font:700 13pt var(--f-mono);margin:0;letter-spacing:.02em}
.fs-center{display:flex;justify-content:center}
.fs-grid,.fs-nl{display:block}
.fs-seg{display:flex;align-items:center;gap:8px;font-size:10.5pt}
.fs-seg b{width:5mm}
.fs-clocks{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;text-align:center;font-size:9.5pt}
.fs-clocks div{display:grid;justify-items:center;gap:3px}
.fs-band{display:grid;grid-template-columns:repeat(auto-fit,minmax(7.5mm,1fr));border:1.2px solid #16141f;border-right:0}
.fs-band span{height:9mm;border-right:1.2px solid #16141f;display:grid;place-items:center;font:700 11pt var(--f-body)}
.fs-qcm{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin:0;font-size:11pt}
.fs-qcm span{border:1.5px solid #d6d3e2;border-radius:999px;padding:2px 10px}
.fs-draw{border:1.5px dashed #b9b4cc;border-radius:10px;min-height:34mm;min-width:46mm;position:relative}
.fs-draw small{position:absolute;left:6px;top:3px;font-size:8pt;color:#8a86a0}
.fs-draw-w{width:100%}.fs-draw-low{min-height:16mm}.fs-draw-tall{min-height:70mm;min-width:55mm}
.fs-read{font:600 15pt/1.9 var(--f-body);margin:0;word-spacing:.15em}
.fs-read-big{font-size:20pt}
.fs-match{display:grid;grid-template-columns:auto 1fr;gap:30px;align-items:center}
.fs-match>p{display:flex;flex-direction:column;gap:6px;margin:0}
.fs-match>p:last-child{flex-direction:row;flex-wrap:wrap;gap:10px}
.fs-dict{display:flex;gap:10px}
.fs-dict span{width:32mm;height:14mm;border-bottom:1.5px solid #16141f;background:repeating-linear-gradient(transparent 0 4.6mm,#e3e0ee 4.6mm 4.8mm)}
.fs-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:0}
.fs-days span{border:1.2px solid #16141f;border-radius:6px;height:10mm;display:grid;place-items:center;font-size:10pt}
.fs-words{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.fs-words span{border:1.5px solid #16141f;border-radius:6px;padding:3px 10px;font-size:12pt}
.fs-model{font:500 12pt/1.6 var(--f-body);background:#f3f2f8;border-radius:8px;padding:5px 10px;margin:0}
.fs-text{border:1.5px solid #d6d3e2;border-radius:10px;padding:7px 11px;display:grid;gap:4px;font-size:11pt;line-height:1.5}
.fs-text b{font:800 11pt var(--f-display)}
.fs-text p{margin:0}
.fs-lines-read{font-size:12pt;line-height:2;margin:0}
.fs-ops{display:flex;gap:18mm;flex-wrap:wrap}
.fs-op{display:grid;justify-items:end;font:700 14pt/1.6 var(--f-mono);min-width:30mm}
.fs-op span:nth-child(2){border-bottom:1.5px solid #16141f;width:100%;text-align:right}
.fs-op span:last-child{height:12mm}
.fs-balloons{display:flex;flex-wrap:wrap;gap:4mm}
.fs-sw{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;border:1px solid #16141f}
.fs-line{display:inline-block;width:18px;height:3px;border-radius:2px;margin-right:4px;vertical-align:3px}
.fs-figs3{grid-template-columns:repeat(3,1fr)}
.fs-seq-oral{font-size:.9rem;color:var(--muted)}
/* Sous-menus du menu du haut : au survol, ou au clavier (focus-within) */
.menu .has-sub{position:relative}
.menu .has-sub>a{display:flex;align-items:center;gap:6px}
.menu .has-sub>a::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:rotate(45deg) translateY(-2px);opacity:.55}
.menu .sub{position:absolute;top:100%;left:50%;transform:translateX(-50%);padding-top:10px;display:none;z-index:60;min-width:250px}
.menu .sub::before{content:"";position:absolute;inset:10px 0 0;background:var(--bg);border-radius:18px;box-shadow:0 1px 2px rgba(22,20,31,.06),0 18px 40px -16px rgba(52,34,140,.35)}
.menu .sub a{position:relative;display:grid;gap:1px;padding:9px 14px;border-radius:12px;white-space:normal;margin:0 6px}
.menu .sub a:first-child{margin-top:6px}.menu .sub a:last-child{margin-bottom:6px}
.menu .sub small{font-size:.78rem;font-weight:400;color:var(--muted)}
.menu .has-sub:hover>.sub,.menu .has-sub:focus-within>.sub{display:grid}
.menu .has-sub:hover>a,.menu .has-sub:focus-within>a{background:var(--bg-soft)}
.menu .sub.sub-2{min-width:520px;grid-template-columns:1fr 1fr}
.menu .has-sub:hover>.sub.sub-2,.menu .has-sub:focus-within>.sub.sub-2{display:grid}
.menu .sub.sub-2 a:nth-child(2){margin-top:6px}
.menu .sub.sub-2 a:last-child{grid-column:1/-1;border-top:1px solid var(--line);border-radius:0 0 12px 12px}
/* Accueil : le rituel du jour et les moments de l'année */
#aujourdhui{padding-top:clamp(28px,4vw,48px);padding-bottom:0}
.today{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px}
@media (max-width:900px){.today{grid-template-columns:minmax(0,1fr)}}
.rit,.moments{background:var(--bg);border-radius:24px;padding:clamp(18px,3vw,26px);display:grid;gap:14px;align-content:start;box-shadow:0 1px 2px rgba(22,20,31,.05),0 18px 40px -22px rgba(52,34,140,.35)}
.rit-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.rit-when{font-size:.88rem;color:var(--muted);text-decoration:none}
a.rit-when:hover{color:var(--violet)}
.rit-niv{justify-self:start;flex-wrap:wrap}
.rit-card{border-radius:18px;padding:18px 20px;display:grid;gap:8px}
.rit-card h2{font-size:clamp(1.5rem,2.8vw,2.1rem)}
.rit-card p{margin:0}
.rit-mat{font-size:.9rem;color:#3d3a4d}
.rit-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:4px}
.mo{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;padding-top:12px;border-top:1px solid var(--line)}
.mo:first-of-type{border-top:0;padding-top:0}
.mo-ic{width:42px;height:42px;border-radius:14px;background:var(--yellow);display:grid;place-items:center}
.mo-ic .ic{width:24px;height:24px;margin:0;color:var(--ink)}
.mo b{font-family:var(--f-display);font-size:1.1rem;letter-spacing:-.01em;display:block}
.mo small{color:var(--violet);font-weight:600;font-size:.8rem}
.mo p{margin:4px 0 6px;font-size:.92rem;color:var(--muted)}
.mo-chips{display:flex;flex-wrap:wrap;gap:6px}
.mo-chip{font-size:.78rem;font-weight:600;text-decoration:none;background:var(--bg-soft);border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--ink)}
.mo-chip:hover{border-color:var(--violet);color:var(--violet)}
/* Ma semaine en 1 clic */
.week-auto{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:var(--violet);color:#fff;border-radius:20px;padding:16px 20px;margin-bottom:18px}
.week-auto b{display:flex;align-items:center;gap:8px;font-family:var(--f-display);font-size:1.2rem}
.week-auto b .ic{color:#fff;margin:0}
.week-auto span{display:block;font-size:.9rem;opacity:.9;max-width:560px}
.week-auto-go{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.week-auto select{font:600 .9rem var(--f-body);border:0;border-radius:999px;padding:8px 12px}
.week-auto .btn-primary{background:#fff;color:var(--violet)}
.week-auto .btn-ghost{border-color:rgba(255,255,255,.6);color:#fff;background:transparent}
/* Page des moments de l'année */
.mo-page .mo-month{margin-top:26px;display:grid;gap:14px}
.mo-page .mo-month h2{font-size:1.4rem;border-bottom:2px solid var(--ink);padding-bottom:4px}
.mo-page .mo{border-top:0;padding:16px;background:var(--bg);border:1px solid var(--line);border-radius:18px}
.mo-chip span{color:var(--muted);font-weight:400}
/* Cartes de maternelle (assets/fiches-sequences.js) */
.fs-cardgrid{display:grid;grid-template-columns:repeat(var(--c,4),1fr);border-top:1px dashed #8a86a0;border-left:1px dashed #8a86a0}
.fs-mcard{height:var(--h,40mm);border-right:1px dashed #8a86a0;border-bottom:1px dashed #8a86a0;display:grid;place-items:center;align-content:center;gap:1.5mm;text-align:center;padding:2mm}
.fs-mcard small{font:700 9pt var(--f-body);letter-spacing:.03em}
.fs-big-n{font:800 34pt/1 var(--f-display)}
.fs-word{font:800 15pt var(--f-body);letter-spacing:.06em}
.fs-emo-l{font-style:normal;font-size:30pt;line-height:1}
.fs-emo-s{font-style:normal;font-size:17pt;line-height:1}
.fs-scene{font-style:normal;font-size:44pt;line-height:1;letter-spacing:4mm}
.fs-dots-sy{font-size:12pt;letter-spacing:2mm;color:#5b3df5}
.fs-lotos{display:grid;gap:7mm;justify-items:center}
.fs-loto{border:2px solid #16141f;border-radius:12px;padding:4mm;display:grid;gap:3mm;justify-items:center}
.fs-loto b{font:800 13pt var(--f-display)}
.fs-loto>div{display:grid;grid-template-columns:repeat(3,27mm);border-top:1px solid #16141f;border-left:1px solid #16141f}
.fs-loto span{height:27mm;border-right:1px solid #16141f;border-bottom:1px solid #16141f;display:grid;place-items:center}
.fs-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:4mm}
.fs-strip span{height:60mm;border:2px solid #16141f;border-radius:10px;position:relative}
.fs-strip b{position:absolute;left:3mm;top:2mm;font:800 14pt var(--f-display);color:#5b3df5}
.fs-days-cut{margin-top:4mm}.fs-days-cut span{border-style:dashed;font-weight:700}
.fs-sort{display:grid;grid-template-columns:1fr 1fr;gap:4mm}
.fs-sort div{height:95mm;border:2px solid #16141f;border-radius:12px;padding:3mm;text-align:center}
.fs-sort b{font:800 13pt var(--f-display)}
.fs-bands{display:grid;gap:7mm;justify-items:start}
.fs-bands span{display:block;height:14mm;border:1px dashed #16141f;border-radius:3px}
.fs-dominos{display:grid;grid-template-columns:repeat(3,1fr);gap:4mm;justify-items:center}
/* Outils pour le TBI (outils.html) */
.ot-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0 14px}
.ot-tabs button{display:inline-flex;align-items:center;gap:6px;font:600 .95rem var(--f-body);border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:9px 16px;cursor:pointer;color:var(--ink)}
.ot-tabs button .ic{margin:0;width:20px;height:20px}
.ot-tabs button[aria-selected="true"]{background:var(--violet);border-color:var(--violet);color:#fff}
.ot-tabs button[aria-selected="true"] .ic{color:#fff}
.ot-panel{background:var(--bg);border:1px solid var(--line);border-radius:24px;padding:clamp(14px,2.5vw,24px);display:grid;gap:12px}
.ot-panel[hidden]{display:none}
/* Plein écran : le même bouton orange, toujours en haut à droite du cadre de l'outil (et pour en sortir) */
.ot-panel{position:relative}
.ot-full{position:absolute;top:clamp(14px,2.5vw,24px);right:clamp(14px,2.5vw,24px);z-index:6;display:inline-flex;align-items:center;gap:7px;font:800 .9rem var(--f-body);color:#16141f;background:#ff8a3d;border:0;border-radius:999px;padding:9px 16px;cursor:pointer;box-shadow:0 3px 0 #d9661d,0 6px 16px rgba(255,138,61,.35);transition:transform .15s,background .15s}
.ot-full span[aria-hidden]{font-size:1.1rem;line-height:1}
.ot-full:hover{background:#ff7a22;transform:translateY(-1px)}
.ot-full:active{transform:translateY(2px);box-shadow:0 1px 0 #d9661d}
.ot-full:focus-visible{outline:3px solid var(--violet);outline-offset:3px}
.ot-panel > .ot-full + *{padding-right:200px}
.ot-panel:fullscreen .ot-full{top:3vh;right:3vw}
@media (max-width:640px){.ot-full-l{display:none}.ot-full{padding:9px 12px}.ot-panel > .ot-full + *{padding-right:54px}}
.ot-panel:fullscreen{background:#fff;padding:3vh 3vw;align-content:center;overflow:auto}
.ot-bar{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}
.ot-bar label,.ti-lab{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.92rem}
.ot-bar select,.ot-bar input[type=number]{font:inherit;font-weight:500;border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:#fff;max-width:12em}
.ot-bar input[type=number]{width:5.5em}
.ot-chk{cursor:pointer}.ot-chk input{width:18px;height:18px;accent-color:var(--violet)}
.ot-stage{background:#fbfaff;border:1px solid var(--line);border-radius:18px;padding:12px;display:grid;justify-items:center;gap:6px;touch-action:none}
.ot-panel:fullscreen .ot-stage{min-height:60vh;align-content:center}
.ot-help{margin:0;color:var(--muted);font-size:.92rem}
.dg-svg{width:100%;height:auto;cursor:pointer;font-family:Geist,sans-serif}
.hz-stage{grid-template-columns:minmax(0,1fr)}
.hz-svg{width:min(460px,80vw);height:auto;font-family:Geist,sans-serif;cursor:grab}
.ot-panel:fullscreen .hz-svg{width:min(70vh,80vw)}
.ot-panel:fullscreen .mv-svg{width:min(80vh,80vw)}
.hz-dig,.mv-dig{font:800 clamp(1.8rem,5vw,3.2rem) var(--f-display);margin:0;min-height:1.2em}
.nu-grid{display:grid;grid-template-columns:repeat(var(--c,4),minmax(0,1fr));gap:6px;width:100%;max-width:980px}
.nu-col{display:grid;justify-items:center;gap:6px;background:#fff;border:2px solid #dcd6fd;border-radius:14px;padding:8px 4px;position:relative}
.nu-col small{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);text-align:center;min-height:2.4em}
.nu-col b{font:800 clamp(2.4rem,6vw,4.4rem)/1 var(--f-display)}
.nu-col button{font:800 1.4rem var(--f-body);width:52px;height:44px;border-radius:12px;border:0;background:var(--bg-soft);cursor:pointer}
.nu-dec{border-color:#ffe08a;background:#fffbea}
.nu-u b{color:#1f9d55}.nu-d b{color:#2f7fd8}.nu-c b{color:#e0457b}.nu-x b{color:#e07a1f}
.nu-u{border-color:#bfe9cf}.nu-d{border-color:#c4dcf7}.nu-c{border-color:#f7c6d6}
.nu-comma::after{content:",";position:absolute;right:-8px;top:calc(50% - .2em);font:800 2.8rem/1 var(--f-display);color:#e5484d;z-index:1}
.nu-num{font:800 clamp(2rem,5vw,3.4rem) var(--f-display);margin:6px 0 0}
.nu-words{margin:0;font-size:clamp(1rem,2.4vw,1.5rem);text-align:center;color:#3d3a4d}
.ti-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:14px}
@media (max-width:760px){.ti-wrap{grid-template-columns:minmax(0,1fr)}}
.ti-lab{display:grid!important;gap:6px}
.ti-wrap textarea{width:100%;font:500 1rem var(--f-body);border:1px solid var(--line);border-radius:12px;padding:10px}
.ti-stage{align-content:center;min-height:220px}
.ti-out{font:800 clamp(2.6rem,8vw,5.5rem)/1.1 var(--f-display);margin:0;text-align:center}
.ti-roll{color:var(--muted)}
.ti-done{margin:0;font-size:.9rem;color:var(--muted);text-align:center}
.ti-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.ti-groups div{background:var(--bg-soft);border-radius:14px;padding:10px 12px;line-height:1.6}
.ti-groups b{display:block;font-family:var(--f-display)}
.mv-svg{width:min(440px,80vw);height:auto;overflow:visible;filter:drop-shadow(0 24px 30px rgba(28,24,48,.22))}
#ot-minuteur .btn[aria-pressed=true]{background:#2b2541;border-color:#2b2541;color:#fff}
.mv-tk{stroke:#c9c3da;stroke-width:2;stroke-linecap:round}
.mv-tk.big{stroke:#2b2541;stroke-width:4}
.mv-piste{fill:#ece8f5}
.mv-part{transition:fill .6s}
.mv-bord{stroke:#fff;stroke-width:3;stroke-linecap:round;opacity:.9}
.mv-bouton{fill:#fff;stroke-width:5}
.mv-centre{fill:#fff}
.mv-t{font:800 62px var(--f-display);fill:#2b2541;text-anchor:middle;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.mv-t.long{font-size:54px}
.mv-st{font:600 15px var(--f-body);fill:#8a85a0;text-anchor:middle;text-transform:uppercase;letter-spacing:.12em}
.mv-end .mv-svg{animation:mvsonne .45s ease-in-out 6 alternate}
@keyframes mvsonne{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
.mv-end .ot-stage{animation:mvflash .5s ease-in-out 6 alternate}
@keyframes mvflash{to{background:#ffe1e1}}
@media (prefers-reduced-motion:reduce){.mv-end .mv-svg{animation:none}}
/* La lettre de la période (lettre.html) */
.lt-niv{margin:14px 0}
.lt-card{background:var(--bg);border:1px solid var(--line);border-radius:24px;padding:clamp(16px,3vw,28px);display:grid;gap:12px}
.lt-head h2{font-size:clamp(1.3rem,2.6vw,1.8rem);margin-top:8px}
.lt-ideas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:820px){.lt-ideas{grid-template-columns:minmax(0,1fr)}}
.lt-idea{display:grid;gap:5px;align-content:start;border-radius:18px;padding:16px;text-decoration:none;color:var(--ink)}
.lt-idea small{font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:#3d3a4d}
.lt-idea b{font-family:var(--f-display);font-size:1.25rem;letter-spacing:-.01em}
.lt-idea span{font-size:.92rem;color:#3d3a4d}
.lt-idea em{font-style:normal;font-size:.8rem;font-weight:600}
.lt-card h3{font-size:1.05rem;margin-top:6px}
.lt-list{margin:0;padding-left:20px;display:grid;gap:4px}
.lt-list span{color:var(--muted);font-size:.88rem}
.lt-sub{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;margin-top:16px;background:var(--violet-soft);border-radius:20px;padding:16px 20px}
.lt-sub>.ic{width:34px;height:34px;color:var(--violet);margin:0}
.lt-sub p{margin:2px 0 0;font-size:.92rem}
@media (max-width:640px){.lt-sub{grid-template-columns:minmax(0,1fr)}}
.acct-lettre{display:flex!important;gap:8px;align-items:flex-start;line-height:1.4}
.wnav-niv{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:.9rem;background:var(--violet-soft);color:var(--violet);border-radius:999px;padding:4px 6px 4px 12px}
.wnav-niv select{font:700 .9rem var(--f-body);border:0;border-radius:999px;padding:5px 8px;background:#fff;color:var(--ink)}
/* Ma semaine : modifier le tableau à la main */
.wi-acts{display:flex;gap:2px;align-items:center}
.wi .sw{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:.95rem;line-height:1;padding:0 2px}
.wi .sw:hover,.wi .x:hover{color:var(--violet)}
.wi[draggable="true"]{cursor:grab}
.wi.dragging{opacity:.4}
.slot.drop{outline:2px dashed var(--violet);outline-offset:-3px;border-radius:12px}
.slot-add{justify-self:start;border:1px dashed var(--line);background:transparent;border-radius:999px;padding:3px 10px;font:600 .74rem var(--f-body);color:var(--muted);cursor:pointer}
.slot-add:hover{border-color:var(--violet);color:var(--violet)}
@media print{body.print-week .slot-add,body.print-week .wi .sw{display:none!important}}
.pk{display:grid;gap:12px;padding:20px}
.pk-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.pk-h b{font-family:var(--f-display);font-size:1.25rem;display:block}
.pk-h small{color:var(--muted)}
.pk-f{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pk-f input[type=search]{flex:1 1 240px;font:500 1rem var(--f-body);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.pk-list{display:grid;gap:6px;max-height:55vh;overflow:auto;padding-right:4px}
.pk-i{display:grid;gap:2px;text-align:left;border:0;border-radius:12px;padding:10px 12px;cursor:pointer;font:inherit;color:var(--ink)}
.pk-i b{font-size:.98rem}
.pk-i span{font-size:.8rem;color:#3d3a4d}
.pk-i:hover{outline:2px solid var(--violet)}
.pk-i[aria-disabled="true"]{opacity:.45;cursor:not-allowed;outline:0}
.pk-more{color:var(--muted);font-size:.9rem;margin:4px 0}
/* Frise chronologique de l'histoire de France (assets/frise.js) */
.fr-views{flex-wrap:wrap}
.fr-views button[aria-pressed="true"]{background:var(--pc,var(--violet));color:var(--ink)}
.fr-views button:first-child[aria-pressed="true"]{background:var(--violet);color:#fff}
.fr-track{overflow-x:auto;overflow-y:hidden;border:1px solid var(--line);border-radius:18px;background:linear-gradient(#fbfaff,#f3f0fb);scroll-behavior:smooth}
.fr-inner{position:relative;height:470px}
.fr-axis{position:absolute;left:0;right:0;top:230px;height:4px;background:#16141f;border-radius:2px}
.fr-band{position:absolute;top:238px;height:30px;border:0;border-radius:0;font:800 .82rem var(--f-body);color:#16141f;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;cursor:pointer;opacity:.92;z-index:1}
.fr-band:hover{opacity:1}
.fr-tick{position:absolute;top:274px;transform:translateX(-50%);font:600 .72rem var(--f-mono);color:#5f5c72;white-space:nowrap}
.fr-tick::before{content:"";position:absolute;left:50%;top:-6px;width:2px;height:5px;background:#16141f}
.fr-ev{position:absolute;transform:translateX(-50%);width:128px;height:84px;overflow:visible;border:2px solid var(--pc);background:#fff;border-radius:14px;padding:5px 6px;display:grid;justify-items:center;align-content:center;gap:1px;cursor:pointer;font:inherit;color:var(--ink);text-align:center;box-shadow:0 6px 16px -10px rgba(22,20,31,.45);transition:transform .15s;z-index:2}
.fr-ev:hover,.fr-ev.on{transform:translateX(-50%) scale(1.07);z-index:4;border-width:3px}
.fr-ev i{font-style:normal;font-size:1.6rem;line-height:1.1}
.fr-ev b{font-size:.7rem;line-height:1.15;max-height:2.4em;overflow:hidden}
.fr-ev small{font:600 .64rem var(--f-mono);color:#5f5c72}
.fr-ev::after{content:"";position:absolute;left:50%;width:2px;margin-left:-1px;background:var(--pc);z-index:-1}
.fr-l0{top:8px}.fr-l0::after{top:100%;height:140px}
.fr-l1{top:120px}.fr-l1::after{top:100%;height:28px}
.fr-l3{top:298px}.fr-l3::after{bottom:100%;height:66px}
.fr-l2{top:382px}.fr-l2::after{bottom:100%;height:150px}
.fr-info{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;background:var(--bg-soft);border-radius:18px;padding:14px 16px;min-height:96px}
.fr-big{width:64px;height:64px;border-radius:18px;background:#fff;display:grid;place-items:center;font-size:2.2rem}
.fr-info small{font-weight:700;font-size:.8rem;color:var(--muted)}
.fr-info b{display:block;font-family:var(--f-display);font-size:1.3rem}
.fr-info p{margin:3px 0 0}
.fr-games{display:grid;gap:10px;border-top:1px solid var(--line);padding-top:12px}
.fr-games-tabs{display:flex;gap:6px;flex-wrap:wrap}
.fr-games-tabs button{font:700 .92rem var(--f-body);border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:8px 14px;cursor:pointer;color:var(--ink)}
.fr-games-tabs button[aria-selected="true"]{background:var(--yellow);border-color:var(--yellow)}
.fr-q{font-weight:700;margin:0}
.fr-cards{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.fr-card{position:relative;width:150px;min-height:120px;border:2px solid var(--line);background:#fff;border-radius:16px;padding:10px 8px;display:grid;justify-items:center;align-content:center;gap:3px;cursor:pointer;font:inherit;color:var(--ink);text-align:center}
.fr-card:hover:not([disabled]){border-color:var(--violet)}
.fr-card i{font-style:normal;font-size:2rem}
.fr-card b{font-size:.84rem;line-height:1.25}
.fr-card small{font:600 .74rem var(--f-mono);color:var(--muted)}
.fr-card em{position:absolute;top:6px;left:8px;font:800 1rem var(--f-display);font-style:normal;color:var(--violet)}
.fr-card.picked{border-color:var(--violet);background:var(--violet-soft)}
.fr-card.ok{border-color:#2bc48a;background:#e6f8ef}
.fr-card.ko{border-color:#e5484d;background:#fdecec}
.fr-pair .fr-card{width:200px}
.fr-or{font:800 1.1rem var(--f-display);color:var(--muted)}
.fr-streak{font-weight:700}
/* Frise : jeu « Place sur la frise » */
.fr-placing .fr-track{cursor:crosshair}
.fr-pl,.fr-pioche .fr-card{touch-action:none;cursor:grab}
.fr-pl.fr-ok{background:#e6f8ef}.fr-pl.fr-near{background:#fff4e0}.fr-pl.fr-ko{background:#fdecec}
.fr-pl em{position:absolute;top:-10px;right:-8px;font-style:normal;font-size:1.1rem}
.fr-pioche .fr-card{width:140px;min-height:100px}
.fr-dragging{opacity:.35}
.fr-ghost{position:fixed;z-index:1000;pointer-events:none;transform:translate(-50%,-50%) rotate(-3deg);width:140px;min-height:96px;border-color:var(--violet);box-shadow:0 12px 30px rgba(22,20,31,.25)}
.fr-ghost::after,.fr-ghost em{display:none}
.fr-gap{position:absolute;top:229px;height:6px;background:repeating-linear-gradient(90deg,#e5484d 0 8px,transparent 8px 13px);z-index:2;pointer-events:none}
.fr-true{position:absolute;top:212px;transform:translateX(-50%);width:34px;height:34px;border-radius:50%;background:#fff;border:3px solid #e5484d;display:grid;place-items:center;font:800 1rem var(--f-body);color:#c0392b;z-index:3;box-shadow:0 2px 8px rgba(22,20,31,.2)}
.fr-num{position:absolute;top:-10px;left:-8px;width:22px;height:22px;border-radius:50%;background:#e5484d;color:#fff;font:800 .78rem/22px var(--f-body);text-align:center}
/* Système solaire 3D (assets/systeme-solaire.js) */
.ss-astres{flex-wrap:wrap}
.ss-wrap{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:12px}
@media (max-width:900px){.ss-wrap{grid-template-columns:minmax(0,1fr)}}
.ss-stage{position:relative;padding:0;overflow:hidden;background:#05060f;aspect-ratio:16/9;display:block}
.ss-stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.ot-panel:fullscreen .ss-stage{aspect-ratio:auto;height:72vh}
.ss-labels{position:absolute;inset:0;pointer-events:none}
.ss-labels span{position:absolute;transform:translate(-50%,-160%);font:700 .74rem var(--f-body);color:#fff;text-shadow:0 1px 3px #000;white-space:nowrap}
.ss-clock{position:absolute;left:10px;bottom:8px;font:600 .78rem var(--f-mono);color:#cfd3ff;background:rgba(0,0,0,.45);border-radius:8px;padding:3px 8px}
.ss-info{background:var(--bg-soft);border-radius:18px;padding:14px 16px;display:grid;gap:6px;align-content:start}
.ss-info b{font-family:var(--f-display);font-size:1.5rem}
.ss-info small{color:var(--violet);font-weight:700}
.ss-info dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:4px 0;font-size:.88rem}
.ss-info dt{color:var(--muted)}
.ss-info dd{margin:0;font-weight:600}
.ss-info p{margin:4px 0 0;font-size:.92rem}
/* Fractions à manipuler (assets/fractions.js) */
.fx-area{display:grid;gap:14px;justify-items:stretch;padding:16px}
.fx-row{display:grid;grid-template-columns:200px minmax(0,1fr) 170px;gap:14px;align-items:center;border-left:6px solid var(--fc);padding-left:12px}
@media (max-width:820px){.fx-row{grid-template-columns:minmax(0,1fr)}}
.fx-ctrl{display:grid;gap:6px;font-size:.9rem}
.fx-ctrl b{font-family:var(--f-display);color:var(--fc)}
.fx-ctrl select{font:inherit;border:1px solid var(--line);border-radius:8px;padding:3px 6px}
.fx-btns{display:flex;gap:6px}.fx-btns button{width:44px;height:38px;border-radius:10px;border:0;background:var(--bg-soft);font:800 1.3rem var(--f-body);cursor:pointer}
.fx-svg{width:100%;height:auto;max-height:220px}.fx-svg [data-part]{cursor:pointer}
.fx-disk{max-width:560px}
.fx-written{font:800 1.6rem var(--f-display);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fx-frac{display:inline-grid;text-align:center;line-height:1.05;vertical-align:middle}.fx-frac i{font-style:normal;padding:0 6px}.fx-frac i:first-child{border-bottom:3px solid currentColor}
.fx-q{font-size:2.4rem;color:var(--muted)}
.fx-cmp{font:800 1.5rem var(--f-display);text-align:center;margin:0;display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap}
.fx-cmp b{font-size:2.2rem;color:var(--violet)}
.fx-line{width:100%;height:auto;max-height:130px;font-family:Geist,sans-serif}
/* Solides 3D (assets/solides.js) */
.so-list{flex-wrap:wrap}
.so-stage{position:relative;padding:0;overflow:hidden;aspect-ratio:16/9;display:block}
.so-stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.ot-panel:fullscreen .so-stage{aspect-ratio:auto;height:72vh}
.so-net{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.92rem}
.so-net input{accent-color:var(--violet);width:160px}
.so-count{display:flex;gap:8px;flex-wrap:wrap}
.so-count span{display:grid;justify-items:center;background:#fff;border-radius:12px;padding:6px 10px;font-size:.8rem;font-weight:600;min-width:70px}
.so-count em{font:800 1.8rem var(--f-display);font-style:normal;color:var(--violet)}
.so-tip{font-size:.85rem;color:var(--muted)}
/* Carte de France (assets/carte-france.js) */
.ca-stage{padding:0;overflow:hidden;display:block}
.ca-svg{display:block;width:100%;height:auto;aspect-ratio:688.4/541;font-family:Geist,sans-serif;touch-action:none;cursor:default}
.ca-svg.ca-pan{cursor:grab}.ca-svg.ca-pan:active{cursor:grabbing}
.ca-svg:active{cursor:grabbing}
.ca-reg{stroke:#fff;cursor:pointer;transition:filter .15s}
.ca-reg:hover{filter:brightness(.94)}
.ca-reg.on{stroke:#5b3df5;stroke-width:3.5px;filter:brightness(.9)}
.ca-regname,.ca-depname{font-weight:700;fill:#3d3a4d;paint-order:stroke;stroke:#fff;stroke-width:.25em}
.ca-depname{fill:#16141f;font-weight:800}
.ca-river{fill:none;stroke:#2f7fd6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.ca-hit{fill:none;stroke:transparent;cursor:pointer}
.ca-fl.on .ca-river,.ca-fl:hover .ca-river{stroke:#5b3df5}
.ca-mt{cursor:pointer}.ca-mt path{fill:#8a6a45;stroke:#fff}
.ca-lab{font-weight:700;fill:#16141f;paint-order:stroke;stroke:#fff;stroke-width:.3em}
.ca-mt.on path,.ca-mt:hover path{fill:#5b3df5}
.ca-city{cursor:pointer}.ca-city circle{fill:#e5484d;stroke:#fff}
.ca-city.on circle,.ca-city:hover circle{fill:#5b3df5}
.ca-mer{font-style:italic;fill:#2f6fb0;font-weight:600}
.ca-voisin{fill:#8a86a0;text-transform:uppercase;letter-spacing:.08em}
.ca-game .on{animation:caflash .4s ease-in-out 4 alternate}
@keyframes caflash{to{opacity:.35}}
.ca-cat{display:none!important}.ca-game .ca-cat{display:inline-flex!important}
.ca-ask{font-size:1.35rem!important}
.ca-score{font-weight:700;color:var(--violet)}
/* Carte de France : outre-mer, découpage, zoom, impression */
.ca-om rect{fill:#eaf5ff;stroke:#8a86a0;stroke-width:.6}
.ca-om text{fill:#3d3a4d;font-weight:700}
.ca-cut{flex-wrap:wrap}.ca-cut label{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;font-size:.88rem;font-weight:600;cursor:pointer}
.ca-cut input{accent-color:var(--violet)}
.ca-zoom{display:inline-flex;gap:4px}
.ca-print{border:1px solid var(--line);border-radius:14px;padding:8px 12px}
.ca-print summary{cursor:pointer;font-weight:700;display:flex;align-items:center;gap:6px}
.ca-print summary .ic{margin:0;width:20px;height:20px}
.ca-print .ot-bar{margin-top:10px}
/* Mesures : règle, balance, verre doseur, conversions */
.me-tabs{flex-wrap:wrap;margin-bottom:10px}
.me-tabs [aria-pressed=true]{background:var(--violet);color:#fff}
.me-regle,.me-balance,.me-eau{width:100%;height:auto;display:block;font-family:Geist,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none}
.me-ruler{cursor:grab}.me-ruler:active{cursor:grabbing}
.me-out{font-size:1.15rem;text-align:center;margin:8px 0;min-height:1.6em}
.me-out small{font-size:.9rem;color:var(--muted)}
.me-lab{font-weight:700}
.me-objets,.me-poids{display:inline-flex;flex-wrap:wrap;gap:4px}
.me-objets .btn{font-size:1.4rem;padding:2px 8px}
.me-beam,.me-pan{transition:transform .7s cubic-bezier(.3,1.4,.5,1)}
.me-w{cursor:pointer}.me-w:hover rect{filter:brightness(1.15)}
.me-water{transition:y .4s,height .4s}
.me-range input{width:180px}
.me-cv{display:flex;flex-direction:column;align-items:center;gap:6px;overflow-x:auto}
.me-tab{border-collapse:collapse;font-size:1.6rem;font-weight:700;margin:6px auto}
.me-tab th,.me-tab td{border:2px solid #16141f;min-width:64px;height:56px;text-align:center;position:relative}
.me-tab th{font-size:1.05rem;background:#f3f1fb}
.me-tab .from{background:#efeaff}.me-tab th.from{background:#d9d0ff}
.me-tab td.to{box-shadow:inset 0 -5px 0 #ff8a3d}.me-tab th.to{background:#ffe1c2}
.me-tab .z{color:#ff8a3d}
.me-comma{position:absolute;right:-9px;bottom:2px;color:#e5484d;font-style:normal;font-size:2rem;line-height:1}
@media (max-width:640px){.me-tab{font-size:1.1rem}.me-tab th,.me-tab td{min-width:40px;height:44px}}

/* Planisphère */
.mo-svg{aspect-ratio:1.72;max-height:72vh}
.mo-sea{fill:#dcefff;cursor:pointer}
.mo-land{cursor:pointer;transition:filter .15s}.mo-land:hover{filter:brightness(.95)}
.mo-land.on{filter:brightness(.82) saturate(1.3)}
.mo-land.fr{stroke:#5b3df5}
.mo-grid path{fill:none;stroke:#b9d7f0}
.mo-line .mo-hit{fill:none;stroke:transparent;cursor:pointer}
.mo-line .mo-l{fill:none;stroke:#e5484d;opacity:.75;pointer-events:none}
.mo-line.on .mo-l,.mo-line:hover .mo-l{stroke:#5b3df5;opacity:1}
.mo-rep{cursor:pointer}.mo-rep path{fill:#8a6a45;stroke:#fff}.mo-rep circle{stroke:#fff}
.mo-rep .w{fill:#2f7fd6}.mo-rep .f{fill:#2fa36b}.mo-rep .d{fill:#e0a030}.mo-rep .p{fill:#fff;stroke:#16141f}
.mo-rep.on path,.mo-rep.on circle{fill:#5b3df5}
.mo-om{cursor:pointer}.mo-om circle{fill:#5b3df5;stroke:#fff}.mo-om.on circle{fill:#ff8a3d}
.mo-cont{font-weight:800;fill:#16141f;opacity:.55;letter-spacing:.08em;paint-order:stroke;stroke:#fff;stroke-width:.2em}
.mo-ocean{font-style:italic;font-weight:600;fill:#2f6fb0}
.mo-lname{fill:#c0392b;font-weight:600;font-style:italic}
.mo-lab,.mo-pays{font-weight:700;fill:#16141f;paint-order:stroke;stroke:#fff;stroke-width:.3em}
.mo-labfr{fill:#5b3df5}
.mo-pays{font-weight:600;fill:#3d3a4d}
.mo-c{margin-top:8px}
.ca-game .mo-sea.on{fill:#ffd9a8}
/* Planisphère : fiches des pays et quiz */
.mo-info dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:4px 0;font-size:.88rem}
.mo-info dt{color:var(--muted)}.mo-info dd{margin:0;font-weight:600}
.mo-qset{display:none!important;flex-wrap:wrap;gap:8px;align-items:center}
.mo-quiz .mo-qset{display:inline-flex!important}.mo-quiz .ot-chk{display:none!important}
.mo-land.qz{fill:#ff8a3d}.mo-land.bad{fill:#e5484d}
.mo-qring{fill:none;stroke:#ff8a3d;pointer-events:none}
.qz-top{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:.85rem;color:var(--muted);margin:0!important}
.qz-bar{height:6px;border-radius:99px;background:var(--line);overflow:hidden}.qz-bar i{display:block;height:100%;background:var(--violet);transition:width .3s}
.qz-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.qz-opts .btn{justify-content:flex-start;text-align:left;white-space:normal;min-height:52px;font-size:1rem;line-height:1.2;gap:8px}
.qz-opts .btn small{flex:none;width:22px;height:22px;border-radius:50%;background:var(--bg-soft);display:grid;place-items:center;font-size:.75rem;color:var(--muted)}
.qz-opts .btn.ok{background:#2bc48a;border-color:#2bc48a;color:#fff;opacity:1}
.qz-opts .btn.ko{background:#e5484d;border-color:#e5484d;color:#fff;opacity:1}
.qz-opts .btn:disabled{cursor:default}
.qz-msg{font-weight:700}.qz-yes{color:#1c9a6a}.qz-no{color:#c0392b}
.qz-fact{font-size:.88rem;color:var(--muted)}
.mo-info .qz-fact b,.mo-info .qz-errs b{font-family:inherit;font-size:inherit;color:var(--ink)}.mo-info .qz-sub{font-size:1.05rem}
.qz-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px!important}
.qz-big{font-family:var(--f-display);font-size:2.6rem!important;font-weight:800;color:var(--violet);margin:0!important}
.qz-errs{margin:0;padding-left:18px;font-size:.88rem;display:grid;gap:2px}
.qz-t1{color:#2f7fd6;font-weight:700}.qz-t2{color:#e0702a;font-weight:700}
.qz-turn{font-weight:700;margin:0!important}

/* Météo */
.mt-top{align-items:center}
.mt-where{font-size:1.15rem}
.mt-change{position:relative}
.mt-change summary{list-style:none}.mt-change summary::-webkit-details-marker{display:none}
.mt-form{display:flex;gap:6px;margin-top:8px}
.mt-form input{flex:1;min-width:200px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit}
.mt-results{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.mt-results .btn{width:100%;justify-content:flex-start;gap:8px}
.mt-results small{color:var(--muted);font-weight:500}
.mt-wait{color:var(--muted);padding:4px}
.mt-hello{font-size:1.2rem;text-align:center;padding:40px 10px}
.mt-now{display:grid;grid-template-columns:auto 1fr auto;gap:18px 28px;align-items:center;background:linear-gradient(135deg,#e8f4ff,#fff4e6);border-radius:22px;padding:20px 26px}
.mt-big{display:flex;align-items:center;gap:12px}
.mt-ic{font-size:5.5rem;line-height:1}
.mt-temp{font-size:4.6rem;font-weight:800;line-height:1}.mt-temp small{font-size:1.6rem;vertical-align:super}
.mt-desc,.mt-sun{display:flex;flex-direction:column;gap:4px;font-size:1.05rem}
.mt-desc b{font-size:1.5rem}
.mt-sun{font-size:.95rem;color:#3d3a4d}
.mt-moments{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.mt-moments div{background:#fff;border:1px solid var(--line);border-radius:16px;padding:10px;text-align:center;display:flex;flex-direction:column;gap:2px}
.mt-mi{font-size:2.6rem}.mt-mt{font-size:1.5rem;font-weight:800}
.mt-moments small,.mt-days small{color:var(--muted)}
.mt-phrase{background:#fffbea;border:1px dashed #e0c25a;border-radius:14px;padding:10px 14px;font-size:1.1rem}
.mt-phrase span{font-weight:700;margin-right:4px}
.mt-h{margin:18px 0 6px;font-size:1.1rem}
.mt-curve{width:100%;height:auto;font-family:Geist,sans-serif}
.mt-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.mt-days div{border:1px solid var(--line);border-radius:14px;padding:8px 4px;text-align:center;display:flex;flex-direction:column;gap:2px;background:#fff}
.mt-days .today{border-color:var(--violet);background:#f4f1ff}
.mt-di{font-size:2rem}.mt-mx{font-weight:800;font-size:1.15rem;color:#e5484d}.mt-mn{font-weight:700;color:#2f7fd6}
@media (max-width:760px){.mt-now{grid-template-columns:1fr;padding:16px}.mt-ic{font-size:4rem}.mt-temp{font-size:3.4rem}.mt-days{grid-template-columns:repeat(4,1fr)}.mt-moments{gap:6px}.mt-mi{font-size:2rem}}
.mt-ic,.mt-mi,.mt-di,.mt-emo,.mt-desc span,.mt-sun span,.mt-phrase span,.mt-days small,.mt-hello,.me-tabs button,.me-objets .btn{font-family:Geist,'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif}
.mt-ic,.mt-mi,.mt-di,.mt-emo{font-family:'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif}
.mt-svg{width:1em;height:1em;display:inline-block;vertical-align:middle;overflow:visible}
.mt-ic .mt-svg{width:6rem;height:6rem}.mt-mi .mt-svg{width:3rem;height:3rem}.mt-di .mt-svg{width:2.4rem;height:2.4rem}
/* Cartes : on les attrape pour les déplacer, sans sélectionner de texte */
.ca-svg,.ca-stage,.mo-stage,.ca-info,.mo-info{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.ca-svg text{pointer-events:none}
/* Monnaie */
/* Monnaie : palette à gauche, plateau libre à droite, total en haut avec son œil */
.mn-stage{display:grid;grid-template-columns:auto minmax(0,1fr);align-content:stretch;gap:0;padding:0;overflow:hidden;min-height:460px;align-items:stretch;justify-items:stretch;touch-action:none}
/* La caisse : chaque pièce et chaque billet dans son casier */
.mn-defs{position:absolute;width:0;height:0;overflow:hidden}
.mn-pal{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-content:start;justify-content:center;gap:10px;width:212px;padding:16px 14px;background:linear-gradient(180deg,#fff6d6,#ffeab0);border-right:1px solid #f1d27a;box-shadow:inset -8px 0 14px -10px rgba(150,105,0,.35);overflow:hidden;height:0;min-height:100%;--pk:2.45px;--bw:168px}
/* Tailles pilotées par --z (assets/monnaie.js : fit) pour que tout tienne sans défilement */
.mn-p-p{grid-column:span 3}
.mn-pal.mn-2b .mn-p-b{grid-column:span 3}
.mn-pal.mn-3p .mn-p-p{grid-column:span 2}
.mn-pal .mn-p svg{max-width:none}
.mn-pal .mn-p-b svg{width:calc(var(--bw) * var(--z,1))}
.mn-pal .mn-p-p svg{width:calc(var(--d) * min(var(--pk) * var(--z,1), var(--pmax,999px) / 25.75) + 6px)}
.mn-p{display:flex;align-items:center;justify-content:center;min-height:calc(84px * var(--z,1));background:rgba(255,255,255,.6);border:0;padding:8px;cursor:grab;line-height:0;border-radius:16px;box-shadow:inset 0 2px 5px rgba(150,105,0,.22),0 1px 0 #fff;transition:transform .15s cubic-bezier(.3,1.6,.5,1),background .15s;touch-action:none}
.mn-p-b{grid-column:span 6}
.mn-p:hover{background:#fff}
.mn-p:hover svg{transform:scale(1.08) rotate(-3deg)}
.mn-p svg{transition:transform .15s cubic-bezier(.3,1.6,.5,1)}
.mn-p-b{min-height:auto;padding:calc(10px * var(--z,1)) 8px}
.mn-p:focus-visible{outline:3px solid var(--violet-line)}
.mn-p svg,.mn-it svg,.mn-ghost svg{filter:drop-shadow(0 4px 4px rgba(43,37,65,.25));display:block;max-width:100%;height:auto}
.mn-it svg,.mn-ghost svg{max-width:none}
.mn-main{display:flex;flex-direction:column;min-width:0;position:relative}
.mn-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px 0}
.mn-tot{display:inline-flex;align-items:center;gap:10px;padding:6px 6px 6px 24px;border-radius:999px;background:#2b2541;box-shadow:0 8px 18px -8px rgba(43,37,65,.6)}
.mn-total{font:400 clamp(1.8rem,3.4vw,2.6rem)/1 var(--f-display);color:#ffd84a;min-width:2.2ch;text-align:center;font-variant-numeric:tabular-nums}
.mn-eye{width:46px;height:46px;border:0;border-radius:50%;background:#ffd84a;color:#2b2541;cursor:pointer;display:grid;place-items:center}
.mn-eye svg{width:26px;height:26px}
.mn-eye[aria-pressed=false]{background:#4a4266;color:#fff}
.mn-question{flex:1;min-width:220px}
.mn-q{font-size:1.3rem;margin:0}.mn-q b{color:#2b2541;font-family:var(--f-display);font-weight:400;font-size:1.6rem;background:var(--tcs);padding:0 8px;border-radius:10px}
.mn-emo{font-family:'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;font-size:1.7rem}
.mn-board{position:relative;flex:1;min-height:380px;margin:14px 16px 16px;border-radius:24px;background:radial-gradient(rgba(255,255,255,.18) 1.2px,transparent 1.5px) 0 0/22px 22px,radial-gradient(ellipse at 30% 20%,#3fae7a 0,#23845a 60%,#1b6e4a 100%);box-shadow:inset 0 0 0 6px #b8875a,inset 0 0 0 9px #8d6238,inset 0 10px 30px rgba(0,0,0,.25);overflow:hidden}
.mn-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;text-align:center;color:rgba(255,255,255,.85);font-size:1.15rem;line-height:1.5;pointer-events:none}
.mn-it{position:absolute;transform:translate(-50%,-50%) rotate(var(--r,0deg));cursor:grab;touch-action:none;line-height:0;transition:transform .15s}
.mn-it.drag{cursor:grabbing;transform:translate(-50%,-50%) rotate(0deg) scale(1.06);transition:none}
.mn-it.on{transform:translate(-50%,-50%) rotate(0deg)}
.mn-it.on svg{filter:drop-shadow(0 0 0 #ffd84a) drop-shadow(0 0 5px #ffd84a) drop-shadow(0 0 3px #ffcf1a)}
.mn-x{position:absolute;top:-14px;right:-14px;width:34px;height:34px;border-radius:50%;border:3px solid #fff;background:#e5484d;color:#fff;font:800 .95rem var(--f-body);cursor:pointer;box-shadow:0 3px 8px rgba(43,37,65,.35);line-height:1}
.mn-it-p .mn-x{top:-8px;right:-8px}
.mn-out .mn-pal{background:linear-gradient(180deg,#ffe3e3,#ffc9c9);border-right-color:#e5484d}
.mn-ghost{position:fixed;z-index:1000;pointer-events:none;transform:translate(-50%,-50%) rotate(-4deg) scale(1.04);line-height:0}
.mn-msg{font-size:1.15rem;text-align:center;min-height:1.5em;margin:0}.mn-msg small{color:var(--muted)}
.mn-coin text,.mn-bill text{font-family:Geist,sans-serif}
.mn-free .mn-hide-free{display:none}.mn-free .mn-show-free{display:flex!important}
@media (max-width:640px){.mn-stage{grid-template-columns:minmax(0,1fr)}.mn-pal{width:auto;height:auto;min-height:0;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));border-right:0;border-bottom:1px solid #f1d27a}.mn-p{min-height:64px}.mn-p-b,.mn-p-p{grid-column:auto}.mn-pal .mn-p-b svg{width:96px}}

/* Globe 3D */
.gl-stage{position:relative;aspect-ratio:16/10;max-height:72vh;padding:0;overflow:hidden;background:#05070f}
.gl-stage canvas{width:100%;height:100%;display:block;touch-action:none}
.gl-labels{position:absolute;inset:0;pointer-events:none}
.gl-city{position:absolute;left:0;top:0;display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:12px;color:#fff;text-shadow:0 1px 3px #000}
.gl-city i{width:7px;height:7px;border-radius:50%;background:#ffd84d;box-shadow:0 0 0 2px rgba(0,0,0,.5);margin-left:-3.5px}
.gl-city small{background:rgba(255,216,77,.92);color:#16141f;border-radius:6px;padding:0 4px;font-weight:700;text-shadow:none}
.gl-city.night i{background:#9fb6ff}.gl-city.night small{background:rgba(40,52,100,.9);color:#fff}
.gl-city.me b{color:#ffcf66}
.gl-time{font-size:1.1rem;margin:4px 0 8px}
.gl-range input{width:220px}.gl-dates{display:inline-flex;flex-wrap:wrap;gap:4px}
[data-gl=spin][aria-pressed=true]{background:var(--violet);color:#fff}

/* Ciel de ce soir */
.ci-stage{display:flex;justify-content:center;background:#0b0f1f;border-radius:18px}
.ci-svg{width:100%;max-width:640px;height:auto;max-height:76vh;font-family:Geist,sans-serif;user-select:none;-webkit-user-select:none}
.ci-l{stroke:#8fb4ff;stroke-width:1.6;cursor:pointer}.ci-l.on{stroke:#ffcf66;stroke-width:2.6}
.ci-tri{stroke:#ffcf66;stroke-width:1.2;stroke-dasharray:6 6;cursor:pointer}.ci-tri.on{stroke-width:2.4}
.ci-st,.ci-pl,.ci-moon{cursor:pointer}
.ci-pl.on circle:first-child,.ci-moon.on circle{stroke:#ffcf66;stroke-width:3}
.ci-sn{fill:#e8eeff;font-size:11px;paint-order:stroke;stroke:#0a1330;stroke-width:3px;pointer-events:none}
.ci-cn{fill:#8fb4ff;font-size:12px;font-style:italic;text-anchor:middle;pointer-events:none;letter-spacing:.04em}
.ci-pn{fill:#ffcf66;font-size:13px;font-weight:700;paint-order:stroke;stroke:#0a1330;stroke-width:3px;pointer-events:none}
.ci-card{fill:#fff;font-size:20px;font-weight:800;text-anchor:middle}.ci-card.small{font-size:12px;font-weight:600;fill:#aab4d6}
.ci-range input{width:200px;vertical-align:middle}.ci-hour{display:inline-block;min-width:4.5em}
.ci-head{font-weight:700;margin:4px 0 8px}.ci-head small{font-weight:500;color:var(--muted)}
.ci-sum{font-size:1.05rem}.ci-sum span{display:inline-block;margin-right:10px}
.ci-tip{color:var(--muted);font-size:.9rem}

/* Corps humain */
/* Corps humain : une planche par système, des zones à toucher par-dessus le dessin */
.co-stage{display:grid;justify-items:center;align-content:center;gap:10px;background:#fff}
.co-view{position:relative;height:min(72vh,760px);aspect-ratio:var(--ar);max-width:100%;overflow:hidden;border-radius:18px;touch-action:none}
.co-view.co-zoomed{cursor:grab;box-shadow:inset 0 0 0 2px #ebe8f3}
.co-view.co-zoomed:active{cursor:grabbing}
.co-plate{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.co-stage{position:relative}
.co-zbtns{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;z-index:2}
.co-zbtns button{width:40px;height:40px;border:0;border-radius:50%;background:#fff;color:#2b2541;font:800 1.2rem var(--f-body);cursor:pointer;box-shadow:0 3px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset}
.co-zbtns button:active{transform:translateY(2px)}
.co-plate img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;pointer-events:none}
.co-zones{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.co-z{fill:rgba(91,61,245,.07);stroke:rgba(91,61,245,.45);stroke-width:1.4;stroke-dasharray:4 4;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .15s}
.co-zl{fill:none;stroke:rgba(91,61,245,.14);stroke-dasharray:none;stroke-linecap:round;vector-effect:none}
.co-z:hover{fill:rgba(91,61,245,.18)}
.co-zl:hover{stroke:rgba(91,61,245,.28)}
.co-z.on{fill:rgba(255,196,0,.28);stroke:#f0a500;stroke-dasharray:none;stroke-width:2.5}
.co-zl.on{stroke:rgba(255,196,0,.45)}
.co-nozones .co-z:not(:hover):not(.on){fill:transparent;stroke:transparent}
.co-plates{display:inline-flex;flex-wrap:wrap;gap:6px;background:#fff;border-radius:999px;padding:5px;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.co-plates button{border:0;background:none;border-radius:999px;padding:9px 16px;font:700 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.co-plates button:hover{background:#f3f1fa}
.co-plates button[aria-pressed=true]{background:var(--tc);color:#fff}
.co-top{justify-content:center}
.co-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.co-chip{border:0;border-radius:999px;padding:8px 16px;font:700 .92rem var(--f-body);color:#fff;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.18)}
.co-chip-arteres{background:#d4232f}.co-chip-veines{background:#2f6fd0}
.co-chip.on{outline:4px solid #ffc400;outline-offset:2px}
.co-pulse{fill:rgba(226,49,47,.25);stroke:#e2312f;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:co-beat var(--beat,.75s) infinite;pointer-events:none}
.co-breath [data-it=poumons]{animation:co-breath 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes co-breath{0%,100%{fill:rgba(90,167,232,.08);transform:scale(.96)}50%{fill:rgba(90,167,232,.45);transform:scale(1.06)}}
.co-small{color:var(--muted);font-size:.9rem}
@media (max-width:760px){.co-view{height:60vh}}
.gl-dates [aria-pressed=true]{background:var(--violet);color:#fff}
/* Menu « Outils TBI » : quatre colonnes de quatre outils phares */
.menu .sub.sub-ot{min-width:720px;grid-template-columns:repeat(4,1fr);column-gap:4px}
.menu .has-sub:hover>.sub.sub-ot,.menu .has-sub:focus-within>.sub.sub-ot{display:grid}
.menu .sub-ot>div{position:relative;display:flex;flex-direction:column;padding:12px 4px 4px}
.menu .sub-ot b{font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:0 20px 4px}
.menu .sub-ot>div a,.menu .sub-ot>div a:first-child,.menu .sub-ot>div a:last-child{margin:0 6px;padding:6px 14px}
.menu .sub-ot .sub-all{grid-column:1/-1;border-top:1px solid var(--line);border-radius:0 0 12px 12px;margin:6px 6px 6px}
/* Pied de page sur mobile : plus compact (les liens à la suite, sans le texte de présentation) */
@media (max-width:640px){
  footer{padding-block:22px;font-size:.84rem}
  footer .wrap.cols-wrap{gap:14px}
  footer .wrap.cols-wrap>div:first-child p{display:none}
  footer .cols{display:grid;gap:12px;width:100%}
  footer .cols div{display:flex;flex-wrap:wrap;gap:2px 14px;align-items:baseline}
  footer .cols b{flex-basis:100%;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}
  footer .cols a{padding:1px 0}
  footer .cols>div:nth-child(2){display:none} /* les projets : déjà dans l'onglet Projets de la barre du bas */
  footer .credit{margin-top:16px;padding-top:12px}
}
/* Lien vers le mode tableau (tableau.html) */
.ot-tb-link{display:flex;align-items:center;gap:14px;margin:0 0 18px;padding:14px 18px;border-radius:20px;background:linear-gradient(120deg,#ffe3f3,#e6deff 50%,#d6f3ff);color:var(--ink);text-decoration:none;box-shadow:var(--shadow);max-width:560px}
.ot-tb-link > .ic:first-child{width:34px;height:34px;flex:none;padding:8px;border-radius:50%;background:#fff}
.ot-tb-link span{display:grid;flex:1}
.ot-tb-link b{font-family:var(--f-display);font-weight:400;font-size:1.15rem}
.ot-tb-link small{color:var(--muted)}
.ot-tb-link:hover{transform:translateY(-1px)}

/* ---------- Frise ludique : pleine largeur, mondes colorés, on l'attrape et on la lance (assets/frise.js + GSAP) ---------- */
body.static:has(#ot-frise:not([hidden])){overflow-x:clip}
.fr-stage{position:relative;width:100vw;margin-left:calc(50% - 50vw)}
.ot-panel:fullscreen .fr-stage,.tb .fr-stage{width:auto;margin-left:0}
.tb #ot-frise .fr-stage,.tb #ot-frise .fr-mini{margin-inline:calc(-1 * clamp(16px,3vw,40px))}
.fr-track{border:0;border-radius:0;background:#fffdf7;box-shadow:inset 0 10px 18px -14px rgba(43,37,65,.35),inset 0 -10px 18px -14px rgba(43,37,65,.35)}
.fr-gsap .fr-track{overflow:hidden;cursor:grab;touch-action:pan-y}
.fr-gsap .fr-track.grabbing{cursor:grabbing}
.fr-inner{height:480px}
.fr-world{position:absolute;top:0;bottom:0;background:linear-gradient(180deg,color-mix(in srgb,var(--pc) 30%,#fff) 0%,color-mix(in srgb,var(--pc) 10%,#fff) 46%,color-mix(in srgb,var(--pc) 22%,#fff) 100%);border-right:3px dashed color-mix(in srgb,var(--pc) 55%,#fff)}
.fr-deco{position:absolute;font-size:2.6rem;opacity:.28;transform:rotate(var(--dr,0deg));pointer-events:none;filter:saturate(.8);user-select:none}
.fr-axis{top:226px;height:12px;border-radius:8px;background:#3a3350;box-shadow:0 3px 0 rgba(0,0,0,.18)}
.fr-axis::after{content:"";position:absolute;left:0;right:0;top:5px;height:2px;background:repeating-linear-gradient(90deg,#fff 0 14px,transparent 14px 28px);opacity:.75}
.fr-band{top:242px;height:30px;border-radius:999px;margin-left:3px;border:3px solid #fff;box-shadow:0 3px 0 rgba(43,37,65,.18);font:800 .9rem var(--f-display);letter-spacing:.01em;opacity:1}
.fr-band:hover{filter:brightness(1.06)}
.fr-tick{top:280px;font:700 .78rem var(--f-mono);color:#3a3350;background:#fff;border-radius:999px;padding:1px 7px;box-shadow:0 1px 3px rgba(43,37,65,.15)}
.fr-tick::before{display:none}
.fr-ev{width:136px;height:92px;border:0;border-radius:20px;background:#fff;padding:6px;box-shadow:0 5px 0 color-mix(in srgb,var(--pc) 75%,#3a3350),0 12px 22px -12px rgba(43,37,65,.5);transform:translateX(-50%) rotate(var(--rot,0deg));transition:transform .25s cubic-bezier(.3,1.6,.5,1),box-shadow .2s}
.fr-ev:hover,.fr-ev.on{transform:translateX(-50%) rotate(0deg) scale(1.1) translateY(-4px);border:0;z-index:5}
.fr-ev.on{box-shadow:0 0 0 4px var(--pc),0 5px 0 4px color-mix(in srgb,var(--pc) 75%,#3a3350),0 16px 30px -10px rgba(43,37,65,.55)}
.fr-ev i{display:grid;place-items:center;width:44px;height:44px;margin-top:-26px;border-radius:50%;background:var(--pc);border:3px solid #fff;font-size:1.5rem;box-shadow:0 3px 6px rgba(43,37,65,.2)}
.fr-ev b{font-size:.76rem;margin-top:2px}
.fr-ev small{font-size:.66rem;color:#3a3350;background:color-mix(in srgb,var(--pc) 25%,#fff);border-radius:999px;padding:0 6px}
.fr-ev::after{width:0;margin-left:-1.5px;background:none;border-left:3px dotted color-mix(in srgb,var(--pc) 80%,#3a3350)}
.fr-l0{top:22px}.fr-l0::after{height:118px}
.fr-l1{top:128px}.fr-l1::after{height:12px}
.fr-l3{top:318px}.fr-l3::after{height:42px}
.fr-l2{top:384px}.fr-l2::after{height:108px}
/* Flèches rondes et voyageur du temps au milieu */
.fr-arrow{position:absolute;top:50%;z-index:6;width:56px;height:56px;margin-top:-28px;border-radius:50%;border:0;background:#fff;color:#3a3350;font-size:1.3rem;cursor:pointer;box-shadow:0 4px 0 #dcd8ea,0 10px 24px -10px rgba(43,37,65,.5);transition:transform .15s,opacity .2s}
.fr-arrow:hover{transform:scale(1.08)}.fr-arrow:active{transform:scale(.95)}
.fr-prev{left:14px}.fr-next{right:14px}
.fr-stage.at-start .fr-prev,.fr-stage.at-end .fr-next{opacity:0;pointer-events:none}
.fr-now{position:absolute;left:50%;top:0;bottom:0;width:3px;margin-left:-1.5px;z-index:4;pointer-events:none;background:linear-gradient(color-mix(in srgb,var(--pc,#5b3df5) 75%,#3a3350) 55%,transparent 55%) 0 0/3px 14px repeat-y;opacity:.8}
.fr-now-b{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);white-space:nowrap;display:inline-flex;align-items:center;gap:6px;padding:6px 14px 6px 6px;border-radius:999px;background:#3a3350;color:#fff;font:700 .9rem var(--f-body);box-shadow:0 6px 16px -6px rgba(43,37,65,.6)}
.fr-now-b i{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--pc,#fff);font-style:normal;font-size:1.05rem}
.fr-now-b b{color:#ffe58a}
/* Mini-frise : voir où l'on est, y voyager d'un geste */
.fr-mini{position:relative;display:flex;height:30px;border-radius:999px;overflow:hidden;cursor:pointer;touch-action:none;user-select:none;box-shadow:0 0 0 3px #fff,0 4px 12px -6px rgba(43,37,65,.4);margin:2px 0 0}
.fr-mini span{display:grid;place-items:center;font:700 .74rem var(--f-body);color:#3a3350;white-space:nowrap;overflow:hidden}
.fr-mini-win{position:absolute;top:0;bottom:0;border-radius:999px;border:3px solid #3a3350;background:rgba(255,255,255,.35);box-shadow:0 0 0 2px #fff inset;pointer-events:none}
.tb #ot-frise .fr-mini{margin-inline:clamp(16px,3vw,40px)}
/* Fiche du repère : une bulle */
.fr-info{background:#fff;border-radius:24px;box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 12%,#fff),0 12px 26px -16px rgba(43,37,65,.45)}
.fr-big{border-radius:50%;width:70px;height:70px;font-size:2.4rem;box-shadow:0 4px 0 rgba(43,37,65,.15)}
.fr-info b{font-size:1.45rem}
/* Cartes des jeux : plus rondes, en relief, qui se penchent */
.fr-card{border:0;border-radius:22px;box-shadow:0 4px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset;transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
.fr-card:hover:not([disabled]){transform:rotate(-2deg) translateY(-3px)}
.fr-card.picked{box-shadow:0 4px 0 var(--violet),0 0 0 3px var(--violet) inset}
.fr-card.ok{box-shadow:0 4px 0 #1f9561,0 0 0 3px #2bc48a inset}
.fr-card.ko{box-shadow:0 4px 0 #b8383c,0 0 0 3px #e5484d inset}
.fr-games-tabs button{padding:10px 18px;font-size:1rem;box-shadow:0 3px 0 #dcd8ea}
.fr-games-tabs button[aria-selected="true"]{box-shadow:0 3px 0 #e2b93b}
.fr-true{top:216px}
.fr-gap{top:229px}
@media (max-width:640px){.fr-arrow{width:44px;height:44px;margin-top:-22px}.fr-now-b{font-size:.78rem}}
@media (prefers-reduced-motion:reduce){.fr-ev,.fr-card{transition:none}}

/* ---------- Outils pour le TBI : style ludique commun (page Outils et mode tableau) ----------
   Chaque outil a sa couleur, celle de son domaine dans le catalogue du mode tableau :
   --tc (couleur vive : boutons, accents) et --tcs (couleur douce : fonds). */
.ot-panel{--tc:#7c6cf2;--tcs:#e4dcff;--tci:#fff}
#ot-droite,#ot-numeration,#ot-fractions,#ot-operations{--tc:#e0457b;--tcs:#ffdbe8}
#ot-mesures,#ot-monnaie,#ot-solides{--tc:#f0a500;--tcs:#fff0bf;--tci:#2b2541}
#ot-horloge,#ot-frise{--tc:#7c6cf2;--tcs:#e4dcff}
#ot-carte,#ot-monde,#ot-globe{--tc:#1f9d6b;--tcs:#d3f3e4}
#ot-conjugaison,#ot-homophones,#ot-phrase,#ot-flash,#ot-invisibles{--tc:#0e9aa7;--tcs:#cdf0f2}
#ot-syllabes,#ot-prenoms{--tc:#e0457b;--tcs:#ffdbe8}
#ot-meteo,#ot-ciel,#ot-corps,#ot-solaire{--tc:#2f7fd8;--tcs:#d6eaff}
#ot-tirage,#ot-minuteur{--tc:#f06a1f;--tcs:#ffe1cc}
.ot-tabs [data-tool]{--tc:#7c6cf2;--tcs:#e4dcff}
.ot-tabs [data-tool=droite],.ot-tabs [data-tool=numeration],.ot-tabs [data-tool=fractions],.ot-tabs [data-tool=operations]{--tc:#e0457b;--tcs:#ffdbe8}
.ot-tabs [data-tool=mesures],.ot-tabs [data-tool=monnaie],.ot-tabs [data-tool=solides]{--tc:#e09a00;--tcs:#fff0bf}
.ot-tabs [data-tool=carte],.ot-tabs [data-tool=monde],.ot-tabs [data-tool=globe]{--tc:#1f9d6b;--tcs:#d3f3e4}
.ot-tabs [data-tool=meteo],.ot-tabs [data-tool=ciel],.ot-tabs [data-tool=corps],.ot-tabs [data-tool=solaire]{--tc:#2f7fd8;--tcs:#d6eaff}
.ot-tabs [data-tool=tirage],.ot-tabs [data-tool=minuteur]{--tc:#f06a1f;--tcs:#ffe1cc}

/* Choix de l'outil : des pastilles avec l'icône dans une bulle de couleur */
.ot-tabs{gap:10px}
.ot-tabs button{border:0;padding:5px 16px 5px 5px;font-weight:700;color:#2b2541;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset;transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
.ot-tabs button .ic{width:34px;height:34px;padding:7px;box-sizing:border-box;border-radius:50%;background:var(--tcs);color:#2b2541}
.ot-tabs button:hover{transform:translateY(-2px) rotate(-1deg)}
.ot-tabs button[aria-selected="true"]{background:var(--tc);color:#fff;box-shadow:0 3px 0 color-mix(in srgb,var(--tc) 70%,#000)}
.ot-tabs button[aria-selected="true"] .ic{background:#fff;color:var(--tc)}

/* Le cadre de l'outil : un fond doux pointillé, la scène en carte blanche */
.ot-panel{border:0;border-radius:32px;background:radial-gradient(color-mix(in srgb,var(--tc) 22%,transparent) 1.3px,transparent 1.5px) 0 0/24px 24px,color-mix(in srgb,var(--tcs) 45%,#fff);box-shadow:0 0 0 3px #fff,0 0 0 5px color-mix(in srgb,var(--tcs) 80%,#fff),0 22px 44px -30px rgba(43,37,65,.45)}
.ot-panel:fullscreen{background:radial-gradient(color-mix(in srgb,var(--tc) 22%,transparent) 1.3px,transparent 1.5px) 0 0/24px 24px,color-mix(in srgb,var(--tcs) 45%,#fff)}
.ot-stage{background:#fff;border:0;border-radius:26px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 32px -24px rgba(43,37,65,.5)}
.ot-help{color:#5c5873}

/* Boutons : des pastilles en relief, le bouton principal à la couleur de l'outil */
.ot-panel .btn{border:0;border-radius:42px;min-height:44px;padding:0 20px;font-weight:700;background:#fff;color:#2b2541;box-shadow:0 4px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset;transition:transform .15s,box-shadow .15s}
.ot-panel .btn:hover{transform:translateY(-2px)}
.ot-panel .btn:active{transform:translateY(2px);box-shadow:0 1px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset}
.ot-panel .btn-primary{background:var(--tc);color:var(--tci);box-shadow:0 4px 0 color-mix(in srgb,var(--tc) 68%,#000)}
.ot-panel .btn-primary:active{box-shadow:0 1px 0 color-mix(in srgb,var(--tc) 68%,#000)}
.ot-panel .btn[disabled]{opacity:.45;transform:none;cursor:not-allowed}
.ot-panel .btn-sm{min-height:40px;padding:0 16px;font-size:.9rem}

/* Onglets internes (règle / balance, cube / pavé, périodes, astres, découpage) : des pastilles */
.ot-panel .seg{gap:4px;border:0;border-radius:999px;background:#fff;padding:4px;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset;overflow:visible;flex-wrap:wrap}
.ot-panel .seg button,.ot-panel .seg label{border:0;border-radius:999px;padding:0 14px;min-height:36px;display:inline-flex;align-items:center;gap:6px;font:700 .88rem var(--f-body);color:#2b2541;background:none;cursor:pointer}
.ot-panel .seg button:hover,.ot-panel .seg label:hover{background:#f3f1fa}
.ot-panel .seg button[aria-pressed=true],.ot-panel .seg button[aria-selected=true],.ot-panel .seg label:has(input:checked){background:#2b2541;color:#fff}
.ot-panel .seg label input[type=radio]{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.ot-panel .seg label:has(input:focus-visible){outline:3px solid var(--violet-line)}
.ot-panel .fr-views button[aria-pressed="true"]{background:var(--pc,#2b2541);color:#2b2541}
.ot-panel .fr-views button:first-child[aria-pressed="true"]{background:#2b2541;color:#fff}

/* Listes déroulantes et champs : arrondis, en relief léger */
.ot-panel select,.ot-panel input[type=number],.ot-panel input[type=text],.ot-panel input[type=search],.ot-panel input[type=date],.ot-panel input[type=time]{font:600 .92rem var(--f-body);color:#2b2541;border:0;border-radius:999px;padding:8px 14px;background:#fff;box-shadow:0 2px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.ot-panel select:focus-visible,.ot-panel input:focus-visible{outline:3px solid color-mix(in srgb,var(--tc) 45%,#fff);outline-offset:1px}
.ot-panel textarea{border:0;border-radius:20px;box-shadow:0 0 0 2px #ebe8f3 inset;background:#fff}
.ot-panel input[type=range]{accent-color:var(--tc)}

/* Cases à cocher : des interrupteurs */
.ot-panel .ot-chk input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:40px;height:23px;margin:0;border-radius:999px;background:#d9d6e4;position:relative;cursor:pointer;transition:background .15s}
.ot-panel .ot-chk input[type=checkbox]::before{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.ot-panel .ot-chk input[type=checkbox]:checked{background:#2fbf7f}
.ot-panel .ot-chk input[type=checkbox]:checked::before{transform:translateX(17px)}
.ot-panel .ot-chk input[type=checkbox]:focus-visible{outline:3px solid var(--violet-line);outline-offset:2px}

/* Fiches à droite (cartes, 3D, ciel, corps…) : des bulles blanches */
.ot-panel .ss-info{background:#fff;border-radius:26px;padding:18px 20px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 32px -24px rgba(43,37,65,.5)}
.ot-panel .ss-info b{color:#2b2541}
.ot-panel .ss-info small{color:var(--tc)}
.ot-panel details{border:0;border-radius:20px;background:#fff;box-shadow:0 0 0 2px #ebe8f3 inset}

/* Horloge, minuteur, tirage : chiffres et prénom en grand, à la couleur de l'outil */
.hz-dig,.mv-dig{color:#2b2541}
.hz-dig{display:inline-block;padding:4px 22px;border-radius:999px;background:var(--tcs)}
.ti-stage{background:radial-gradient(circle at 50% 40%,#fff 0,#fff 45%,color-mix(in srgb,var(--tcs) 60%,#fff) 100%)}
.ti-out{color:var(--tc);text-shadow:0 4px 0 color-mix(in srgb,var(--tcs) 90%,#fff)}
.ti-out:not(.ti-roll){animation:ot-pop .45s cubic-bezier(.3,1.6,.5,1)}
.ti-groups div{background:#fff;border-radius:20px;box-shadow:0 4px 0 color-mix(in srgb,var(--c,#ffe1cc) 85%,#000),0 0 0 3px var(--c,#ffe1cc) inset;padding:12px 14px}
.ti-groups div:nth-child(5n+1){--c:#ffd3e2}.ti-groups div:nth-child(5n+2){--c:#cfe6ff}.ti-groups div:nth-child(5n+3){--c:#cdf3df}.ti-groups div:nth-child(5n+4){--c:#fff0bf}.ti-groups div:nth-child(5n+5){--c:#e4dcff}
@keyframes ot-pop{0%{transform:scale(.6);opacity:.3}100%{transform:none;opacity:1}}
/* Numération : boutons + et − en relief */
.nu-col{border-width:3px;border-radius:22px}
.nu-col button{border-radius:14px;background:#f3f1fa;box-shadow:0 3px 0 #dcd8ea;color:#2b2541}
.nu-col button:active{transform:translateY(2px);box-shadow:0 1px 0 #dcd8ea}
.nu-num{color:#2b2541}
/* Droite graduée : les nombres en police d'affiche */
.dg-svg text{font-family:var(--f-display)}
@media (prefers-reduced-motion:reduce){.ti-out{animation:none}.ot-tabs button,.ot-panel .btn{transition:none}}

/* ---------- Opérations posées (assets/operations.js) ---------- */
.op-top{justify-content:center;gap:10px}
.op-terms{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}
.ot-panel .op-terms input{width:6.2em;text-align:center;font:400 1.6rem var(--f-display);padding:6px 12px}
.ot-panel .op-terms select{font:400 1.7rem var(--f-display);padding:4px 14px;text-align:center;background:var(--tcs)}
.op-plus{font:400 1.7rem var(--f-display);color:#2b2541}
.op-rm{border:0;background:#fff;border-radius:50%;width:32px;height:32px;cursor:pointer;box-shadow:0 2px 0 #e2dfec,0 0 0 2px #ebe8f3 inset;color:#5c5873}
.op-zoom input{width:120px}
.op-stage{position:relative;gap:14px;padding:22px 16px 16px;overflow-x:auto;touch-action:manipulation}
/* Fond Seyes : petites lignes tous les 8 px, grandes tous les 32 px, marge rouge */
.op-stage.op-seyes{background:linear-gradient(90deg,transparent 46px,#f3a3b5 46px,#f3a3b5 48px,transparent 48px),repeating-linear-gradient(90deg,transparent 0 31px,rgba(178,156,240,.35) 31px 32px),repeating-linear-gradient(transparent 0 31px,#b29cf0 31px 32px),repeating-linear-gradient(transparent 0 7px,rgba(178,156,240,.38) 7px 8px),#fff}
.op-sheet{--z:1;--zb:1;--k:calc(var(--z) * var(--zb));--cw:calc(58px * var(--k));display:grid;justify-items:center}
.op-sheet > div{display:flex;align-items:stretch;gap:0}
.op-row{display:grid;grid-template-columns:repeat(var(--n),var(--cw))}
.op-big{height:calc(74px * var(--k))}
.op-small{height:calc(30px * var(--k))}
.op-c{display:grid;place-items:center;box-sizing:border-box;font:400 calc(50px * var(--k))/1 var(--f-display);color:#2b2541;border:0;background:none;padding:0;margin:0}
.op-c.u{border-bottom:calc(4px * var(--k)) solid #2b2541}
.op-o{font-size:calc(46px * var(--k))}
.op-z{color:#b9b4cc}
/* Cases à remplir et petites cases des retenues */
.op-s,.op-x{cursor:pointer;position:relative}
.op-s::before{content:"";position:absolute;inset:calc(6px * var(--k)) calc(4px * var(--k));border-radius:calc(14px * var(--k));background:#efedf5;box-shadow:inset 0 2px 0 rgba(43,37,65,.06);z-index:-1;transition:background .15s,box-shadow .15s}
.op-s{z-index:0}
.op-x{font-size:calc(20px * var(--k));font-weight:800;color:#e0457b;font-family:var(--f-body)}
.op-x::before{content:"";position:absolute;inset:calc(3px * var(--k)) calc(14px * var(--k));border-radius:calc(8px * var(--k));border:2px dashed #d9d4e8;z-index:-1}
.op-x{z-index:0}
.op-s.on::before{background:#fff4c2;box-shadow:0 0 0 calc(4px * var(--k)) var(--tc)}
.op-x.on::before{border:2px solid var(--tc);background:#fff4c2}
.op-s.ok::before{background:#d6f5e5;box-shadow:0 0 0 3px #2bc48a}
.op-s.ko::before{background:#fde4e4;box-shadow:0 0 0 3px #e5484d}
.op-s.sol{color:#7c6cf2}
.op-x.sol{color:#7c6cf2}
.op-s:focus-visible,.op-x:focus-visible{outline:none}
.op-s:focus-visible::before,.op-x:focus-visible::before{box-shadow:0 0 0 4px var(--violet-line)}
/* Chiffres en couleur : unités en vert, dizaines en bleu, centaines en rose (comme le tableau de numération) */
.op-col .rk0{color:#1f9d55}.op-col .rk1{color:#2f7fd8}.op-col .rk2{color:#e0457b}
.op-col .op-s.sol{color:inherit}
/* Division : la potence */
.op-potence{border-left:calc(5px * var(--k)) solid #2b2541;margin-left:calc(12px * var(--k));padding-left:calc(6px * var(--k))}
.op-potence .op-row:first-child{height:calc(74px * var(--k))}
.op-msg{margin:0;min-height:1.4em;font:700 1.15rem var(--f-body);color:#5c5873;text-align:center}
.op-msg.win{color:#1f9561;font:400 1.6rem var(--f-display)}
.op-msg.ko{color:#c0392b}
.op-win{animation:op-win .6s cubic-bezier(.3,1.6,.5,1)}
@keyframes op-win{0%{transform:scale(.94) rotate(-1deg)}100%{transform:none}}
/* Pavé numérique pour le doigt */
.op-pad{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:760px}
.op-pad button{width:54px;height:54px;border:0;border-radius:18px;background:#fff;font:400 1.6rem var(--f-display);color:#2b2541;cursor:pointer;box-shadow:0 4px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset;transition:transform .1s}
.op-pad button:active{transform:translateY(3px);box-shadow:0 1px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset}
.op-pad [data-k=del]{width:72px;background:var(--tcs)}
.op-actions{justify-content:center}
.tb .op-sheet{--zb:1.35}
@media (max-width:640px){.op-sheet{--cw:calc(44px * var(--k))}.op-big{height:calc(60px * var(--k))}.op-c{font-size:calc(38px * var(--k))}.op-pad button{width:46px;height:46px}}
@media (prefers-reduced-motion:reduce){.op-win{animation:none}}

/* ---------- Météo : le rituel du jour (assets/meteo.js) ---------- */
.mt-prev .mr-opts{display:none}
#ot-meteo:not(.mt-prev) [data-mt=reload]{display:none}
.mr{display:grid;gap:18px;padding:6px 0}
.mr-date{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 14px}
.mr-pill{display:inline-flex;align-items:center;gap:4px;padding:6px;border-radius:999px;background:#fff;box-shadow:0 0 0 5px color-mix(in srgb,var(--tcs) 90%,#fff),0 8px 18px -10px rgba(43,37,65,.45)}
.mr-pill b{font:400 clamp(1.8rem,4vw,3rem)/1 var(--f-display);color:#2b2541;min-width:1.6ch;text-align:center;padding:4px 10px}
.mr-wide b{min-width:5ch}
.mr-pill button{width:34px;height:34px;border:0;border-radius:50%;background:var(--tcs);color:#2b2541;font:800 1.2rem var(--f-body);cursor:pointer;opacity:.75}
.mr-pill button:hover{opacity:1;transform:scale(1.08)}
.mr-today{border:0;border-radius:999px;padding:10px 16px;background:#2b2541;color:#fff;font:700 .95rem var(--f-body);cursor:pointer;box-shadow:0 3px 0 #000}
.mr-cards{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;align-items:stretch}
.mr-card{position:relative;background:#fff;border-radius:26px;padding:16px;display:grid;justify-items:center;align-content:center;gap:8px;min-height:250px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 30px -22px rgba(43,37,65,.55)}
.mr-card h3{margin:0;font:400 1.4rem var(--f-display);color:#2b2541}
.mr-card p{margin:0;font:700 1.15rem var(--f-body);color:#2b2541;text-align:center}
.mr-card small{color:#8a86a0}
/* Calendrier */
.mr-cal{width:230px;cursor:zoom-in}
.mr-cal.big{width:min(520px,92vw);cursor:zoom-out}
.mr-cal-h{font:700 1rem var(--f-body);color:#2b2541}
.mr-cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;width:100%;font-size:.85rem;text-align:center}
.mr-cal-g b{color:#8a86a0;font-size:.75rem}
.mr-cal-g span{padding:4px 0;border-radius:8px;background:#f4f3f8;font-weight:600}
.mr-cal-g span:empty{background:none}
.mr-cal-g .we{color:#8a86a0}
.mr-cal-g .on{background:#2f7fd8;color:#fff;font-weight:800}
.mr-cal.big .mr-cal-g{font-size:1.3rem;gap:6px}.mr-cal.big .mr-cal-g b{font-size:1rem}.mr-cal.big .mr-cal-h{font-size:1.4rem}
/* Le temps qu'il fait */
.mr-sky{width:270px;grid-template-columns:auto 1fr auto;align-items:center}
.mr-sky p{grid-column:1/-1}
.mr-skyic .mt-svg{width:130px;height:130px}
.mr-arr{border:0;background:var(--tcs);border-radius:50%;width:36px;height:36px;font:800 1.4rem/1 var(--f-body);color:#2b2541;cursor:pointer}
/* Thermomètre */
.mr-temp{width:130px}
.mr-deg{font:400 2.4rem/1 var(--f-display)!important}.mr-deg small{font-size:1.1rem}
.mr-thermo{width:90px;height:auto;cursor:ns-resize;touch-action:none}
.mr-thermo:focus-visible{outline:3px solid var(--violet-line);border-radius:12px}
.mr-pm{display:flex;gap:8px}
.mr-pm button{width:40px;height:40px;border:0;border-radius:50%;background:var(--tcs);font:800 1.3rem var(--f-body);color:#2b2541;cursor:pointer}
/* Vent : l'éolienne tourne plus ou moins vite */
.mr-wind{width:230px;background:linear-gradient(#efe9ff 0,#efe9ff 55%,#fff 55%)}
.mr-eol{width:130px;height:auto}
.mr-eol .mr-pales{transform-origin:60px 58px}
.mr-eol.turn .mr-pales{animation:mr-turn var(--spd,2s) linear infinite}
@keyframes mr-turn{to{transform:rotate(360deg)}}
.mr-wind input[type=range]{width:100%}
.mr-wl{display:flex;justify-content:space-between;width:100%;font-size:.8rem;font-weight:700;color:#5c5873}
/* Saison */
.mr-season{width:170px;padding:10px}
.mr-season svg{width:100%;height:auto;border-radius:18px}
.mr-snav{display:flex;align-items:center;justify-content:space-between;width:100%;background:#fff;border-radius:999px;box-shadow:0 0 0 2px #ebe8f3 inset;padding:3px}
.mr-snav b{font:700 1rem var(--f-body);color:#2b2541}
.mr-snav button{border:0;background:none;width:30px;height:30px;border-radius:50%;font:800 1.3rem/1 var(--f-body);cursor:pointer;color:#2b2541}
.mr-snav button:hover{background:#f3f1fa}
.mr-phrase{max-width:900px;justify-self:center;font-size:1.25rem}
@media (prefers-reduced-motion:reduce){.mr-eol.turn .mr-pales{animation:none}}

/* ---------- Météo : l'onglet Prévisions, dans le même style que le rituel (cartes blanches, police d'affiche) ---------- */
#ot-meteo .mt-body{display:grid;gap:16px;padding:6px 0}
#ot-meteo .mt-body > *{margin:0}
#ot-meteo .mt-hello{background:#fff;border-radius:26px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff)}
#ot-meteo .mt-now{background:#fff;border-radius:28px;padding:22px 28px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 30px -22px rgba(43,37,65,.55)}
#ot-meteo .mt-big{gap:16px}
#ot-meteo .mt-temp{font:400 clamp(3.6rem,7vw,5.4rem)/1 var(--f-display);color:#2b2541}
#ot-meteo .mt-temp small{font-size:1.4rem;color:#8a86a0}
#ot-meteo .mt-desc b{font:400 1.9rem/1.1 var(--f-display);color:#2b2541}
#ot-meteo .mt-desc span{font-weight:600;color:#3d3a4d}
#ot-meteo .mt-sun{gap:8px}
#ot-meteo .mt-sun span{background:var(--tcs);border-radius:999px;padding:6px 14px;font-weight:700;color:#2b2541;white-space:nowrap}
#ot-meteo .mt-moments{gap:16px}
#ot-meteo .mt-moments div{border:0;border-radius:26px;padding:16px 10px;gap:6px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 30px -22px rgba(43,37,65,.55)}
#ot-meteo .mt-moments b{font:400 1.4rem var(--f-display);color:#2b2541}
#ot-meteo .mt-mi .mt-svg{width:4.4rem;height:4.4rem}
#ot-meteo .mt-mt{font:400 2rem/1 var(--f-display);color:#2b2541}
#ot-meteo .mt-moments small{font-weight:600}
#ot-meteo .mt-phrase{justify-self:center;max-width:900px;font-size:1.25rem}
#ot-meteo .mt-h{font:400 1.5rem var(--f-display);color:#2b2541;margin:8px 0 -4px;text-align:center}
#ot-meteo .mt-curve{background:#fff;border-radius:26px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 16px 30px -22px rgba(43,37,65,.55)}
#ot-meteo .mt-days{gap:12px}
#ot-meteo .mt-days div{border:0;border-radius:22px;padding:12px 4px;gap:4px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff),0 12px 24px -20px rgba(43,37,65,.55)}
#ot-meteo .mt-days b{font:400 1.15rem var(--f-display);color:#2b2541}
#ot-meteo .mt-days .today{background:var(--tcs);box-shadow:0 0 0 3px var(--tc),0 12px 24px -20px rgba(43,37,65,.55)}
#ot-meteo .mt-di .mt-svg{width:2.8rem;height:2.8rem}
#ot-meteo .mt-mx{font:400 1.45rem/1 var(--f-display)}
#ot-meteo .mt-mn{font:400 1.15rem/1 var(--f-display)}
#ot-meteo .mt-body > .ot-help{text-align:center}
@media (max-width:640px){#ot-meteo .mt-now{grid-template-columns:1fr;justify-items:center;text-align:center}#ot-meteo .mt-sun{flex-direction:row;flex-wrap:wrap;justify-content:center}#ot-meteo .mt-days{grid-template-columns:repeat(4,1fr)}}
/* Rituel météo : options d'affichage */
.mr{--mz:1}
.mr-date,.mr-cards,.mr-extra{zoom:var(--mz)}
.mr-extra{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.mr-extra span{background:#fff;border-radius:999px;padding:8px 16px;font:600 1.05rem var(--f-body);color:#2b2541;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff)}
.mr-extra b{font-family:var(--f-display);font-weight:400;font-size:1.2rem}
.mr-guess{cursor:pointer;border-radius:16px}
.mr-guess.hid{background:repeating-linear-gradient(45deg,var(--tcs) 0 8px,#fff 8px 16px);color:var(--tc);min-width:2.4ch}
.mr-guess:focus-visible{outline:3px solid var(--violet-line)}
.mr-habits{width:230px;align-content:start}
.mr-habits ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;width:100%}
.mr-habits li{display:flex;align-items:center;gap:10px;background:#f6f5fa;border-radius:14px;padding:6px 10px;font-weight:700;color:#2b2541}
.mr-habits .mt-emo{font-size:1.7rem;font-family:'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif}
.mr-zoom input{width:120px}
/* Planisphère rectangulaire (projection de Miller) : la carte remplit son cadre, sans marge */
#ot-monde .mo-stage{padding:0;overflow:hidden;align-content:start;display:block}
#ot-monde .mo-svg{display:block;width:100%;height:auto;max-height:none}
#ot-monde .mo-svg{cursor:default}
#ot-monde .mo-svg.mo-pan{cursor:grab}
#ot-monde .mo-svg.mo-pan:active{cursor:grabbing}
/* Solides : barre du patron, fiche */
.so-netbar{justify-content:center}
.so-net input{width:min(260px,40vw)}
.so-netbar.so-nonet [data-so=anim],.so-netbar.so-nonet .so-net,.so-netbar [hidden]{display:none}
.so-info small{font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.so-pat{background:var(--tcs);border-radius:16px;padding:10px 12px;font-size:.92rem;margin:4px 0 0}
/* Une rangée de pastilles en tête d'outil laisse la place au bouton Plein écran */
.ot-panel > .ot-full + .seg{padding-right:4px;margin-right:190px}
@media (max-width:640px){.ot-panel > .ot-full + .seg{margin-right:50px}}
.tb .ot-panel > .ot-full + .seg{margin-right:0}
/* Solides : la liste des noms en colonne à gauche, rangée par familles */
#ot-solides .so-wrap{grid-template-columns:190px minmax(0,1fr) 280px}
.so-list{display:flex;flex-direction:column;gap:12px;background:#fff;border-radius:24px;padding:12px 10px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff);overflow-y:auto;align-self:stretch;max-height:100%}
.so-fam{display:grid;gap:2px}
.so-fam b{font:800 .72rem var(--f-body);text-transform:uppercase;letter-spacing:.05em;color:var(--tc);padding:0 10px 2px}
.so-list button{all:unset;cursor:pointer;padding:7px 12px;border-radius:12px;font:600 .92rem var(--f-body);color:#2b2541}
.so-list button:hover{background:#f3f1fa}
.so-list button[aria-pressed=true]{background:#2b2541;color:#fff}
.so-list button:focus-visible{outline:3px solid var(--violet-line)}
@media (max-width:900px){#ot-solides .so-wrap{grid-template-columns:minmax(0,1fr)}.so-list{flex-direction:row;flex-wrap:wrap}.so-fam{display:flex;flex-wrap:wrap;align-items:center}}
.so-netbar{min-height:48px}
.so-nopat{display:none;font-weight:700;color:#5c5873;background:#fff;border-radius:999px;padding:10px 18px;box-shadow:0 0 0 2px #ebe8f3 inset}
.so-netbar.so-nonet .so-nopat{display:inline-block}
#ot-solides .so-wrap{align-items:stretch}
#ot-solides .so-stage{aspect-ratio:auto;height:auto;min-height:460px}
.so-list{overflow-x:hidden}
/* Carte de France : le choix du découpage, en grosses pastilles toujours visibles */
.ca-top{justify-content:center;gap:10px 14px}
.ca-cutlab{font-weight:700;color:#2b2541}
.ca-cut{display:inline-flex;flex-wrap:wrap;gap:6px;background:#fff;border-radius:22px;padding:5px;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.ca-cut label{position:relative;display:grid;justify-items:center;gap:0;padding:7px 16px;border-radius:17px;cursor:pointer;color:#2b2541;transition:background .15s}
.ca-cut label:hover{background:#f3f1fa}
.ca-cut input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.ca-cut b{font:700 .98rem var(--f-body)}
.ca-cut small{font-size:.72rem;color:#6f6b85;font-weight:600}
.ca-cut label:has(input:checked){background:var(--tc);color:#fff}
.ca-cut label:has(input:checked) small{color:rgba(255,255,255,.85)}
.ca-cut label:has(input:focus-visible){outline:3px solid var(--violet-line)}
.ca-zoom{display:inline-flex;gap:6px}
#ot-carte .ca-stage{padding:0;overflow:hidden;display:block}
/* Page Outils : le catalogue en cartes (chaque carte ouvre l'outil en mode tableau) */
.ot-cat{margin:26px 0 0}
.ot-cat h2{display:inline-block;font:400 1.5rem var(--f-display);margin:0 0 12px;background:linear-gradient(transparent 62%,#c9f2df 62%,#c9f2df 92%,transparent 92%);padding:0 4px}
.ot-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.ot-card{--tc:#efeaff;display:flex;align-items:center;gap:14px;padding:14px;border-radius:24px;background:#fff;color:#2b2541;text-decoration:none;box-shadow:0 0 0 2px #efedf5,0 10px 22px -18px rgba(43,37,65,.5);transition:transform .2s cubic-bezier(.3,1.6,.5,1),box-shadow .2s}
.ot-card:hover{transform:translateY(-3px);box-shadow:0 0 0 2px var(--tc),0 16px 28px -18px rgba(43,37,65,.55)}
.ot-card:focus-visible{outline:3px solid var(--violet);outline-offset:3px}
.ot-card-art{flex:none;display:grid;place-items:center;width:78px;height:78px;border-radius:22px;background:var(--tc);box-shadow:inset 0 -4px 0 rgba(43,37,65,.08)}
.ot-card-art.dark{background:#2d2a63}
.ot-card-art svg{width:56px;height:56px;overflow:visible}
.ot-card:hover .ot-card-art{transform:rotate(-3deg)}
.ot-card-t{display:grid;gap:3px}
.ot-card-t b{font:700 1.05rem var(--f-body)}
.ot-card-t span{font-size:.88rem;color:#5c5873;line-height:1.35}
.ot-card[data-c=nombres]{--tc:#ffdbe8}.ot-card[data-c=grandeurs]{--tc:#fff0bf}.ot-card[data-c=temps]{--tc:#e4dcff}
.ot-card[data-c=francais]{--tc:#cdf0f2}.ot-card[data-c=maternelle]{--tc:#ffdbe8}.ot-card[data-c=langues]{--tc:#dbe6ff}.ot-card[data-c=arts]{--tc:#ffd9f0}.ot-card[data-c=geo]{--tc:#d3f3e4}.ot-card[data-c=sciences]{--tc:#d6eaff}.ot-card[data-c=classe]{--tc:#ffe1cc}.ot-card[data-c=emc]{--tc:#ffd9d6}.ot-card[data-c=jeux]{--tc:#e6dcff}

@keyframes co-beat{0%,100%{transform:scale(1)}15%{transform:scale(1.35)}30%{transform:scale(1.05)}}
/* ---------- Conjugaison (assets/conjugaison.js) ---------- */
.cj-top{justify-content:center}
.cj-modes{display:inline-flex;flex-wrap:wrap;gap:4px;background:#fff;border-radius:999px;padding:5px;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.cj-modes button{border:0;background:none;border-radius:999px;padding:9px 16px;font:700 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.cj-modes button:hover{background:#f3f1fa}
.cj-modes button[aria-pressed=true]{background:var(--tc);color:#fff}
.cj-pick{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center}
.cj-set{gap:6px 14px}
.cj-nlab input{width:140px}
.cj-stage{min-height:420px;align-content:center;gap:14px;padding:24px}
.cj-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:10px 14px}
.cj-head b{font:400 clamp(2.2rem,5vw,3.4rem)/1 var(--f-display);color:#2b2541}
.cj-head span{font:700 .85rem var(--f-body);background:var(--tcs);color:#0b6f78;border-radius:999px;padding:4px 12px}
.cj-head em{font:700 1.2rem var(--f-body);font-style:normal;color:#5c5873}
.cj-table{display:grid;gap:8px;width:min(560px,100%)}
.cj-row{display:grid;grid-template-columns:clamp(110px,22vw,190px) 1fr;align-items:center;gap:16px;padding:10px 18px;border-radius:18px;background:#f8f7fb}
.cj-pro{font:700 clamp(1.1rem,2.4vw,1.5rem) var(--f-body);color:#5c5873;text-align:right}
.cj-form{font:700 clamp(1.6rem,3.6vw,2.4rem)/1.1 var(--f-body);color:#2b2541;letter-spacing:-.01em}
.cj-col .cj-t{color:var(--tc)}
.cj-col .cj-aux{color:#8a86a0}
.cj-hid{justify-self:start;min-width:120px;height:46px;border:0;border-radius:14px;background:repeating-linear-gradient(45deg,var(--tcs) 0 8px,#fff 8px 16px);color:var(--tc);font:400 1.6rem var(--f-display);cursor:pointer}
.cj-note{margin:0;max-width:560px;text-align:center;color:#5c5873}
.cj-temps{margin:0;text-align:center;font:400 clamp(1.6rem,4vw,2.6rem) var(--f-display);color:var(--tc)}
.cj-big{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;font:700 clamp(2.4rem,7vw,4.6rem)/1.1 var(--f-body);color:#2b2541}
.cj-big b{font-weight:800}
.cj-inf{color:#b3aec8;background:#f4f2fa;border-radius:20px;padding:4px 22px}
.cj-big-ans{margin:0;text-align:center}
.cj-big-ans .cj-form{font-size:clamp(2.6rem,7vw,4.8rem)}
.cj-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;width:100%}
.cj-card{display:flex;align-items:center;gap:12px;padding:10px 14px;border:3px solid #2b2541;border-radius:20px;background:#fff;cursor:pointer;text-align:left;font:inherit;color:#2b2541}
.cj-card > b{font:800 1.3rem var(--f-body);min-width:3.2em;text-align:center}
.cj-card > span{flex:1;display:grid;justify-items:center;padding:6px 10px;border-radius:12px;background:#f4f2fa;font:700 1.3rem var(--f-body)}
.cj-card .cj-inf{background:none;padding:0;font-size:1.35rem}
.cj-card .cj-form{font-size:1.35rem}
.cj-card small{font:600 .72rem var(--f-body);color:#8a86a0}
.cj-card.on > span{background:var(--tcs)}
.cj-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(640px,100%)}
.cj-choice{min-height:64px;border:0;border-radius:20px;background:#fff;font:700 1.5rem var(--f-body);color:#2b2541;cursor:pointer;box-shadow:0 4px 0 #dcd8ea,0 0 0 2px #ebe8f3 inset}
.cj-choice:hover:not([disabled]){transform:translateY(-2px)}
.cj-choice.ok{background:#d6f5e5;box-shadow:0 4px 0 #1f9561,0 0 0 3px #2bc48a inset}
.cj-choice.ko{background:#fde4e4;box-shadow:0 4px 0 #b8383c,0 0 0 3px #e5484d inset}
.cj-msg{margin:0;text-align:center;font:700 1.1rem var(--f-body);color:#5c5873}
.cj-actions{justify-content:center}
/* ---------- Outils de français et de maternelle (homophones, phrase, flash, invisibles, syllabes, prenoms) ---------- */
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pn-cur,.fl-cur .fl-w{font-family:"Playwrite FR Moderne",cursive;font-weight:400}
.pn-script{font-family:var(--f-body);font-weight:600}
.iv-eb{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:10px}
/* Homophones */
.ho-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.ho-tabs button{border:0;border-radius:999px;padding:8px 14px;background:#f3f1fa;font:700 1rem var(--f-body);color:#2b2541;cursor:pointer}
.ho-tabs button[aria-pressed=true]{background:var(--tc);color:#fff}
.ho-lecon{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;width:min(900px,100%)}
.ho-rule{background:#fff;border:3px solid #2b2541;border-radius:22px;padding:18px 20px;display:grid;gap:8px;justify-items:start}
.ho-rule b{font:400 clamp(2.4rem,5vw,3.4rem)/1 var(--f-display);color:var(--tc)}
.ho-rule p{margin:0;font:600 1.15rem/1.4 var(--f-body);color:#2b2541}
.ho-rule em{font-style:normal;background:var(--tcs);border-radius:12px;padding:6px 12px;font-weight:600;color:#0b6f78}
.ho-niv{margin:0;color:#8a86a0;font-weight:600}
.ho-pair{margin:0;font:700 1rem var(--f-body);color:var(--tc);background:var(--tcs);border-radius:999px;padding:4px 14px}
.ho-big{margin:0;max-width:980px;text-align:center;font:400 clamp(1.8rem,4.4vw,3.2rem)/1.35 var(--f-display);color:#2b2541}
.ho-gap{display:inline-block;min-width:2.2em;border-bottom:4px dashed var(--tc);color:transparent;margin:0 .1em}
.ho-w{font-weight:400;color:var(--tc);background:var(--tcs);border-radius:10px;padding:0 .15em}
.ho-tip{display:inline-block;max-width:640px;background:#fff8dc;border-radius:16px;padding:10px 16px;font:600 1.1rem var(--f-body);color:#5c4a00}
.ho-choices{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.ho-choices .cj-choice{min-width:140px;padding:0 24px}
.ho-list{margin:0;padding:0 0 0 2em;display:grid;gap:8px;width:min(900px,100%)}
.ho-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;width:100%;text-align:left;border:0;border-radius:14px;background:#f8f7fb;padding:8px 14px;font:500 1.25rem/1.5 var(--f-body);color:#2b2541;cursor:pointer}
.ho-line.on{background:var(--tcs)}
.ho-line .ho-gap{min-width:3em}
.ho-ch{font-size:.8rem;font-weight:700;color:#8a86a0}
/* Lecture flash */
.fl-stage{display:grid;place-items:center;gap:10px;min-height:420px}
.fl-word{display:grid;place-items:center;width:min(900px,100%);min-height:260px;border:0;border-radius:32px;background:#fff;box-shadow:0 6px 0 #e2dfec,0 0 0 3px #ebe8f3 inset;cursor:pointer;color:#2b2541}
.fl-w{font:400 clamp(3rem,11vw,8rem)/1.1 var(--f-display);padding:0 .3em}
.fl-cur .fl-w{font-size:clamp(2.6rem,9vw,6.6rem)}
.fl-slow{color:var(--tc)}
.fl-hint{font:600 1.3rem var(--f-body);color:#8a86a0}
.fl-dot{width:22px;height:22px;border-radius:50%;background:var(--tc);animation:fl-pulse .7s ease-in-out}
@keyframes fl-pulse{from{transform:scale(.3);opacity:.2}to{transform:scale(1);opacity:1}}
.fl-mask{font:400 5rem var(--f-display);color:#d7d3e6;letter-spacing:.1em}
.fl-count{margin:0;color:#8a86a0;font-weight:600}
.fl-ta{display:grid;gap:4px;width:100%}
.fl-ta textarea{width:100%;min-height:120px;border:2px solid #ebe8f3;border-radius:12px;padding:8px;font:inherit}
/* Mots invisibles */
.iv-stage{display:grid;place-items:center;gap:12px;min-height:420px;padding:24px}
.iv-text{max-width:1100px;font-family:var(--f-display);line-height:1.9;color:#2b2541;text-align:left}
.iv-w{border:0;background:none;padding:0 .05em;margin:0;font:inherit;color:inherit;cursor:pointer;border-radius:8px}
.iv-w:hover{background:#f3f1fa}
.iv-w.off{color:var(--tc)}
.iv-bar{display:inline-block;height:.18em;background:var(--tc);border-radius:4px;vertical-align:middle}
.iv-dots{letter-spacing:.08em;color:var(--tc)}
.iv-p{color:#2b2541}
.iv-count{margin:0;color:#8a86a0;font-weight:600}
.iv-edit,.ph-edit,.pn-edit{width:min(760px,100%)}
.iv-edit textarea,.ph-edit textarea,.pn-edit textarea{width:100%;border:3px solid #ebe8f3;border-radius:18px;padding:14px;font:500 1.2rem/1.5 var(--f-body);resize:vertical}
/* Phrase du jour */
.ph-stage{display:grid;place-items:center;min-height:420px;padding:20px}
.ph-main{display:grid;justify-items:center;gap:18px;width:100%}
.ph-nav{display:flex;align-items:center;gap:10px}
.ph-src{border:0;background:var(--tcs);color:#0b6f78;border-radius:999px;padding:6px 16px;font:700 1rem var(--f-body);cursor:pointer}
.ph-line{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:10px 8px;max-width:1100px}
.ph-w,.ph-g{display:grid;justify-items:center;gap:4px;border:0;background:none;padding:0;cursor:pointer;font:inherit;color:#2b2541}
.ph-w > span,.ph-g > span{font:400 clamp(1.8rem,4vw,3rem)/1.2 var(--f-display);padding:4px 12px;border-radius:14px;background:#f4f2fa;border:3px solid transparent}
.ph-w.on > span{background:var(--c);color:#fff}
.ph-g > span{background:none;border-bottom:6px solid #e2dfec;border-radius:0;padding:4px 6px}
.ph-g.on > span{border-bottom-color:var(--c)}
.ph-w small,.ph-g small{font:700 .85rem var(--f-body);color:var(--c,#b3aec8);min-height:1.2em}
.ph-w.ko > span,.ph-g.ko > span{outline:4px solid #e5484d;outline-offset:2px}
.ph-w.miss > span,.ph-g.miss > span{outline:3px dashed #e5484d;outline-offset:2px}
.ph-w.ok small::after,.ph-g.ok small::after{content:" ✓"}
.ph-punct{font:400 clamp(1.8rem,4vw,3rem)/1.2 var(--f-display);padding-top:4px;color:#2b2541}
.ph-pal{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.ph-pal button{border:3px solid var(--c,#2b2541);background:#fff;color:#2b2541;border-radius:999px;padding:8px 14px;font:700 .95rem var(--f-body);cursor:pointer}
.ph-pal button::before{content:"";display:inline-block;width:.8em;height:.8em;border-radius:50%;background:var(--c,#fff);margin-right:6px;vertical-align:-1px}
.ph-pal button[aria-pressed=true]{background:var(--c,#2b2541);color:#fff}
.ph-pal .ph-gomme{--c:#8a86a0}
.ph-plain{margin:0;text-align:center;max-width:1000px;font:400 clamp(1.8rem,4vw,3rem)/1.3 var(--f-display);color:#2b2541}
.ph-trs{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;width:min(1000px,100%)}
.ph-tr{display:grid;gap:6px;text-align:left;border:3px solid #2b2541;border-radius:20px;background:#fff;padding:14px 18px;cursor:pointer;font:inherit;color:#2b2541}
.ph-tr b{color:var(--tc);font-size:1.05rem}
.ph-tr span{font:400 1.3rem/1.35 var(--f-display);color:#b3aec8}
.ph-tr.on{background:var(--tcs)}
.ph-tr.on span{color:#2b2541}
/* Syllabes et rimes */
.sy-stage,.pn-stage{display:grid;justify-items:center;align-content:center;gap:16px;min-height:420px;padding:20px}
.sy-score{font:700 1.2rem var(--f-body);color:var(--tc)}
.sy-card{display:grid;justify-items:center;gap:6px;border:4px solid #2b2541;border-radius:28px;background:#fff;padding:14px 18px;cursor:pointer;color:#2b2541;box-shadow:0 6px 0 #2b2541;transition:transform .15s}
.sy-card:active{transform:translateY(4px);box-shadow:0 2px 0 #2b2541}
.sy-emo{font-size:clamp(3.6rem,9vw,6rem);line-height:1.1}
.sy-mot{font:400 clamp(1.4rem,3vw,2.2rem) var(--f-display);letter-spacing:.04em}
.sy-big .sy-emo{font-size:clamp(6rem,18vw,11rem)}
.sy-big{padding:20px 40px;background:var(--tcs)}
.sy-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;min-height:76px}
.sy-dot{display:grid;place-items:center;min-width:70px;height:70px;padding:0 10px;border-radius:999px;border:4px dashed #d7d3e6;font:400 1.3rem var(--f-display);color:#fff}
.sy-dot.on{border:4px solid #2b2541;background:var(--tc);animation:sy-pop .25s ease-out}
.sy-dot.trop{background:#fde4e4;border-color:#e5484d;color:#e5484d}
@keyframes sy-pop{from{transform:scale(.6)}to{transform:scale(1)}}
.sy-msg{margin:0;text-align:center;font:700 clamp(1.1rem,2.4vw,1.5rem) var(--f-body);color:#2b2541}
.sy-row{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.sy-card.ok{background:#d6f5e5;border-color:#1f9561;box-shadow:0 6px 0 #1f9561}
.sy-card.ko{background:#fde4e4;border-color:#e5484d;box-shadow:0 6px 0 #e5484d}
.sy-card.dim{opacity:.45}
.sy-win .sy-big,.pn-win .pn-slots{animation:sy-joy .6s ease-in-out 2}
@keyframes sy-joy{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg) scale(1.04)}75%{transform:rotate(4deg) scale(1.04)}}
/* Lettres et prénoms */
.pn-names{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:1000px}
.pn-names button{border:0;border-radius:999px;padding:6px 14px;background:#f3f1fa;font:700 1rem var(--f-body);color:#2b2541;cursor:pointer}
.pn-names button[aria-pressed=true]{background:var(--tc);color:#fff}
.pn-names small{flex-basis:100%;text-align:center;color:#8a86a0}
.pn-model{margin:0;font:400 clamp(2.4rem,6vw,4rem) var(--f-display);color:#b3aec8;letter-spacing:.12em}
.pn-model.pn-cur{letter-spacing:0}
.pn-slots,.pn-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.pn-slot,.pn-tile{width:clamp(64px,9vw,96px);height:clamp(76px,11vw,112px);border-radius:18px;font:400 clamp(2.2rem,5vw,3.4rem) var(--f-display);color:#2b2541;cursor:pointer}
.pn-cur .pn-slot,.pn-cur .pn-tile,.pn-cell.pn-cur{font-family:"Playwrite FR Moderne",cursive}
.pn-slot{border:4px dashed #d7d3e6;background:#fff}
.pn-slot.full{border:4px solid #2b2541;background:var(--tcs)}
.pn-slot.ko{border-color:#e5484d;background:#fde4e4}
.pn-tile{border:4px solid #2b2541;background:#fff;box-shadow:0 5px 0 #2b2541}
.pn-tile[disabled]{opacity:.18;box-shadow:none;cursor:default}
.pn-target{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center}
.pn-target span{font:700 1.2rem var(--f-body)}
.pn-target b{display:grid;place-items:center;min-width:80px;height:80px;border-radius:20px;background:var(--tc);color:#fff;font:400 3rem var(--f-display)}
.pn-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px;width:min(820px,100%)}
.pn-cell{aspect-ratio:1;border:3px solid #ebe8f3;border-radius:16px;background:#fff;font:400 clamp(1.8rem,4vw,2.8rem) var(--f-display);color:#2b2541;cursor:pointer}
.pn-cell.ok{background:#d6f5e5;border-color:#1f9561}
.pn-cell.ko{background:#fde4e4;border-color:#e5484d;animation:pn-no .3s}
@keyframes pn-no{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.pn-az{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;max-width:1000px}
.pn-az button{min-width:42px;height:42px;border:0;border-radius:12px;background:#f3f1fa;font:400 1.3rem var(--f-display);color:#2b2541;cursor:pointer}
.pn-az button[aria-pressed=true]{background:var(--tc);color:#fff}
.pn-az .pn-all{padding:0 12px;font:700 .9rem var(--f-body)}
.pn-three{display:flex;flex-wrap:wrap;justify-content:center;gap:20px}
.pn-three figure{margin:0;display:grid;justify-items:center;gap:6px;background:#fff;border:3px solid #2b2541;border-radius:26px;padding:16px;width:clamp(180px,24vw,260px)}
.pn-three figure > b{display:grid;place-items:center;height:clamp(150px,20vw,220px);font-size:clamp(7rem,14vw,11rem);line-height:1;color:#2b2541}
.pn-three figcaption{font:700 1rem var(--f-body);color:#8a86a0}
.pn-svg{width:clamp(150px,20vw,220px);height:clamp(150px,20vw,220px)}
.pn-svg path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.pn-ghost path{stroke:#ebe8f3;stroke-width:12}
.pn-ink path{stroke:var(--tc);stroke-width:8}
.pn-start circle{fill:#2b2541}
.pn-start text{fill:#fff;font:800 9px var(--f-body);text-anchor:middle}
.pn-nosvg{font:400 9rem var(--f-display)}
@media (max-width:640px){.pn-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
/* Textes à lire par les élèves : une police simple, sans le « l » bouclé de la police d'affichage */
.fl-w,.iv-text,.ho-big,.ho-line,.ph-w > span,.ph-g > span,.ph-punct,.ph-plain,.ph-tr span,.sy-mot,.pn-model,.pn-slot,.pn-tile,.pn-cell,.pn-target b,.pn-az button,.pn-three figure > b,.pn-nosvg,.fl-mask{font-family:var(--f-body);font-weight:600}
.fl-cur .fl-w,.pn-cur,.pn-cur .pn-slot,.pn-cur .pn-tile,.pn-cell.pn-cur,.pn-target b.pn-cur,.pn-three figure > b.pn-cur{font-family:"Playwrite FR Moderne",cursive;font-weight:400}
.sy-cible .sy-emo{font-size:clamp(4rem,11vw,7rem)}
.sy-cible{padding:12px 30px}
/* ---------- Dés 3D (assets/des.js) ---------- */
#ot-des{--tc:#f08c00;--tcs:#ffe1cc}
.de-stage{position:relative;padding:0;min-height:460px;overflow:hidden;border-radius:24px}
.de-stage canvas{display:block;width:100%;height:100%;position:absolute;inset:0;cursor:pointer}
.de-res{position:absolute;left:50%;top:14px;transform:translateX(-50%);display:grid;justify-items:center;gap:6px;pointer-events:none;animation:de-pop .35s cubic-bezier(.3,1.6,.5,1)}
.de-vals{display:flex;align-items:center;gap:8px;background:#fff;border-radius:24px;padding:10px 16px;box-shadow:0 6px 0 #e2dfec,0 0 0 3px #ebe8f3 inset}
.de-vals b{display:grid;place-items:center;min-width:58px;height:58px;padding:0 8px;border-radius:16px;background:var(--c);border:3px solid #2b2541;font:800 2rem var(--f-body);color:#2b2541}
.de-vals i{font:800 1.8rem var(--f-body);font-style:normal;color:#8a86a0}
.de-vals .de-tot{background:#2b2541;color:#fff;min-width:72px;font-size:2.3rem}
.de-hist{margin:0;background:rgba(255,255,255,.9);border-radius:999px;padding:4px 14px;font:600 .95rem var(--f-body);color:#5c5873}
.de-go{font-size:1.15rem;padding:14px 28px}
.de-roule .de-go{opacity:.6}
@keyframes de-pop{from{transform:translateX(-50%) scale(.6);opacity:0}to{transform:translateX(-50%) scale(1);opacity:1}}
/* ---------- Cahier de texte (assets/cahier.js) ---------- */
#ot-cahier{--tc:#8e5bd8;--tcs:#ece3ff}
.ch-stage{position:relative;display:block;padding:18px;min-height:460px}
.ch-cols{display:grid;grid-template-columns:repeat(var(--cols,1),minmax(0,1fr));gap:16px;align-items:start}
.ch-col{background:#fff;border-radius:22px;padding:14px 16px;box-shadow:0 0 0 2px #ebe8f3 inset;display:grid;gap:14px;align-content:start;min-width:0}
.ch-niv{margin:0;justify-self:end;font:800 1rem var(--f-body);background:#f3f1fa;border-radius:12px;padding:4px 14px;color:#2b2541}
.ch-day h4{margin:0 0 4px 6px;font:700 1.15rem var(--f-body);color:color-mix(in srgb,var(--c) 70%,#2b2541)}
.ch-day.passe,.ch-wd.passe{opacity:.55}
.ch-box{border:3px solid var(--c);border-radius:16px;background:#f7f6fb;overflow:hidden}
.ch-it{display:grid;grid-template-columns:auto minmax(90px,.35fr) 1fr auto;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:none;padding:10px 14px;font:inherit;color:#2b2541;cursor:pointer}
.ch-it + .ch-it{border-top:2px solid #fff}
.ch-it:hover{background:#efedf7}
.ch-ic{font-size:1.4rem}
.ch-it b{font:700 1.1rem var(--f-body)}
.ch-x{font:500 1.1rem/1.35 var(--f-body);white-space:pre-line}
.ch-it small{font:700 .75rem var(--f-body);background:#fff;border-radius:8px;padding:2px 6px;color:#5c5873}
.ch-vide{margin:30px 0;text-align:center;color:#8a86a0;font-weight:600;line-height:2.4}
.ch-weeknav{display:inline-flex;align-items:center;gap:4px}
.ch-wk{border:0;background:var(--tcs);border-radius:999px;padding:7px 14px;font:700 .95rem var(--f-body);color:#5a3a9a;cursor:pointer}
.ch-nivs:empty{display:none}
.ch-grid{display:grid;grid-template-columns:repeat(var(--nb),minmax(0,1fr));gap:8px}
.ch-wd{border:3px solid var(--c);border-radius:16px;background:#f7f6fb;min-height:300px;display:flex;flex-direction:column;min-width:0}
.ch-wd.today{box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 40%,transparent)}
.ch-wd h4{margin:0;padding:8px 10px;background:var(--c);color:#2b2541;font:700 1rem var(--f-body);display:flex;justify-content:space-between}
.ch-wd h4 span{font-weight:800}
.ch-wl{display:grid;gap:6px;padding:6px;align-content:start;flex:1}
.ch-week .ch-it{grid-template-columns:auto 1fr;gap:2px 8px;background:#fff;border-radius:12px;padding:8px 10px}
.ch-week .ch-it + .ch-it{border-top:0}
.ch-week .ch-x{grid-column:1 / -1;font-size:.98rem}
.ch-week .ch-it small{grid-column:1 / -1;justify-self:start}
.ch-plus{border:2px dashed #d7d3e6;background:none;border-radius:12px;min-height:36px;font:700 1.2rem var(--f-body);color:#b3aec8;cursor:pointer}
.ch-plus:hover{border-color:var(--c);color:#2b2541}
.ch-form{position:absolute;inset:0;display:grid;place-items:center;background:rgba(43,37,65,.28);border-radius:inherit;padding:16px;z-index:5}
.ch-form[hidden]{display:none}
.ch-card{background:#fff;border-radius:24px;padding:20px 22px;width:min(720px,100%);display:grid;gap:12px;box-shadow:0 20px 50px rgba(43,37,65,.25)}
.ch-card h3{margin:0;font:400 1.6rem var(--f-display)}
.ch-types{display:flex;flex-wrap:wrap;gap:6px}
.ch-types button{border:0;border-radius:999px;padding:7px 12px;background:#f3f1fa;font:600 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.ch-types button[aria-pressed=true]{background:var(--tc);color:#fff}
.ch-row{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.ch-card label{display:grid;gap:4px;font:600 .9rem var(--f-body);color:#5c5873}
.ch-grow{flex:1;min-width:180px}
.ch-card input,.ch-card select,.ch-card textarea{border:2px solid #ebe8f3;border-radius:12px;padding:9px 10px;font:500 1.05rem var(--f-body);color:#2b2541;background:#fff}
.ch-card textarea{resize:vertical}
.ch-acts{display:flex;flex-wrap:wrap;gap:8px}
.ch-del{margin-left:auto;color:#c2333a}
.ch-coul{display:inline-flex;align-items:center;gap:6px}
.ch-coul input{width:34px;height:28px;border:0;padding:0;background:none;cursor:pointer}
@media (max-width:760px){.ch-cols{grid-template-columns:1fr}.ch-grid{grid-template-columns:1fr}.ch-wd{min-height:0}.ch-it{grid-template-columns:auto 1fr}.ch-x{grid-column:1 / -1}}
/* ---------- Sonomètre (assets/bruit.js) ---------- */
#ot-bruit{--tc:#ff7a45;--tcs:#ffe1cc;--br:#2bb673}
.br-stage{display:grid;place-items:center;gap:10px;min-height:440px;padding:20px;transition:background .3s}
.br-alarme .br-stage{animation:br-flash 1s ease-in-out infinite}
@keyframes br-flash{50%{background:#ffe3e3}}
.br-vue{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(20px,5vw,70px)}
.br-jauge{width:min(560px,90vw)}
.br-jauge svg{display:block;width:100%;height:auto}
.br-arc{fill:none;stroke:#eceaf3;stroke-width:34;stroke-linecap:round}
.br-val{fill:none;stroke:var(--br);stroke-width:34;stroke-linecap:round;stroke-dasharray:370.7;transition:stroke .3s}
.br-needle{stroke:#2b2541;stroke-width:6;stroke-linecap:round}
.br-hub{fill:#2b2541}
.br-mark{stroke:#2b2541;stroke-width:3;stroke-dasharray:4 3}
.br-emo{font-size:clamp(4rem,10vw,7rem);line-height:1;text-align:center}
.br-nom{margin:0;text-align:center;font:400 clamp(1.8rem,4vw,3rem) var(--f-display);color:var(--br);transition:color .3s}
.br-feu{display:none;flex-direction:column;gap:14px;padding:18px;background:#2b2541;border-radius:40px}
.br-feu i{width:clamp(70px,11vh,110px);height:clamp(70px,11vh,110px);border-radius:50%;opacity:.18;transition:opacity .25s,box-shadow .25s}
.br-feu i[data-z=rouge]{background:#e5484d}.br-feu i[data-z=orange]{background:#ff9f1c}.br-feu i[data-z=vert]{background:#2bb673}
.br-feu i.on{opacity:1;box-shadow:0 0 40px currentColor}
.br-feu i.on[data-z=rouge]{color:#e5484d}.br-feu i.on[data-z=orange]{color:#ff9f1c}.br-feu i.on[data-z=vert]{color:#2bb673}
[data-brmode=feu] .br-feu{display:flex}[data-brmode=feu] .br-jauge{display:none}
[data-brmode=visage] .br-jauge{display:none}[data-brmode=visage] .br-emo{font-size:clamp(8rem,22vw,14rem)}
.br-time{margin:0;color:#5c5873;font:600 1rem var(--f-body)}
.br-msg{margin:0;color:#c2333a;font-weight:600;text-align:center}
.br-prive{margin:0;color:#8a86a0;font-size:.85rem;text-align:center}
/* ---------- Ma journée (assets/journee.js) ---------- */
#ot-journee{--tc:#8e5bd8;--tcs:#ece3ff}
.jo-stage{display:grid;gap:14px;align-content:start;min-height:440px;padding:18px}
.jo-days{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.jo-days button{border:0;border-radius:999px;padding:8px 16px;background:#f3f1fa;font:700 1rem var(--f-body);color:#2b2541;cursor:pointer}
.jo-days button small{font-weight:600;opacity:.8}
.jo-days button[aria-pressed=true]{background:var(--tc);color:#fff}
.jo-now{margin:0;text-align:center;font:600 clamp(1.1rem,2.4vw,1.5rem) var(--f-body);color:#2b2541}
.jo-now b{font-weight:800}
.jo-list{display:grid;gap:8px;width:min(860px,100%);justify-self:center}
.jo-slot{position:relative;display:grid;grid-template-columns:100px 54px 1fr auto;align-items:center;gap:10px;padding:12px 18px;border-radius:20px;background:linear-gradient(90deg,var(--c) var(--p),color-mix(in srgb,var(--c) 35%,#fff) var(--p));overflow:hidden}
.jo-slot.pause{background:#f6f5fa}
.jo-slot.petit{padding:4px 18px;opacity:.75}.jo-slot.petit .jo-ic{font-size:1.2rem}.jo-slot.petit b{font-size:1rem}
.jo-h{font:600 1.05rem var(--f-mono);color:#5c5873}
.jo-ic{font-size:1.9rem;text-align:center}
.jo-slot b{font:400 clamp(1.3rem,2.6vw,1.9rem) var(--f-display);color:#2b2541}
.jo-slot.encours{box-shadow:0 0 0 4px #2b2541;transform:scale(1.015)}
.jo-slot.encours.pause{background:linear-gradient(90deg,#dcd8ea var(--p),#f6f5fa var(--p))}
.jo-slot.fini{opacity:.5}
.jo-reste{font:700 1rem var(--f-body);background:#2b2541;color:#fff;border-radius:999px;padding:4px 12px}
.jo-ok{font:800 1.3rem var(--f-body);color:#1f9561}
.jo-note{margin:0;text-align:center;color:#8a86a0;font-size:.9rem}
@media (max-width:640px){.jo-slot{grid-template-columns:62px 36px 1fr}.jo-reste,.jo-ok{grid-column:1 / -1;justify-self:start}}
/* ---------- Tables et calcul mental (assets/tables.js) ---------- */
#ot-tables{--tc:#e0457b;--tcs:#ffdbe8}
.t2-stage{display:grid;justify-items:center;align-content:center;gap:16px;min-height:440px;padding:20px}
.t2-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.t2-tabs button{min-width:52px;height:52px;border:0;border-radius:16px;background:#f3f1fa;font:400 1.6rem var(--f-display);color:#2b2541;cursor:pointer}
.t2-tabs button[aria-pressed=true]{background:var(--tc);color:#fff}
.t2-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 26px;width:min(820px,100%)}
.t2-row{display:grid;grid-template-columns:1fr auto minmax(80px,auto);align-items:center;gap:12px;border:0;border-radius:18px;background:#f8f7fb;padding:8px 18px;font:400 clamp(1.6rem,3.4vw,2.4rem) var(--f-display);color:#2b2541;cursor:pointer;text-align:left}
.t2-row i{font-style:normal;color:#8a86a0}
.t2-row b{font-weight:400;color:var(--tc);text-align:right}
.t2-row.cache b{color:#c9c6d6}
.t2-big{margin:0;text-align:center;font:400 clamp(3rem,9vw,6.4rem)/1.1 var(--f-display);color:#2b2541}
.t2-big i{font-style:normal;color:#8a86a0}
.t2-rep{margin:0;display:flex;align-items:center;gap:16px;font:400 clamp(3rem,9vw,6rem)/1 var(--f-display);color:var(--tc)}
.t2-cd{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;background:conic-gradient(var(--tc) 0 0,#f3f1fa 0);border:4px solid var(--tc);font:800 2rem var(--f-body);color:var(--tc)}
.t2-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(560px,100%)}
.t2-bar{width:min(560px,100%);height:14px;margin:0;border-radius:999px;background:#f3f1fa;overflow:hidden}
.t2-bar span{display:block;height:100%;background:var(--tc);transition:width .2s linear}
/* ---------- Anglais (assets/anglais.js) ---------- */
#ot-anglais{--tc:#2f5fd8;--tcs:#dbe6ff}
.an-stage{display:grid;justify-items:center;align-content:center;gap:16px;min-height:440px;padding:20px}
.an-themes{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.an-themes button{border:0;border-radius:999px;padding:7px 14px;background:#f3f1fa;font:700 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.an-themes button[aria-pressed=true]{background:var(--tc);color:#fff}
.an-date{border:0;background:#fff;border-radius:26px;padding:14px 30px;box-shadow:0 6px 0 #dbe6ff,0 0 0 3px #dbe6ff inset;font:400 clamp(2rem,5vw,3.6rem)/1.1 var(--f-display);color:#2b2541;cursor:pointer;display:grid;gap:4px}
.an-date small{font:700 1.1rem var(--f-body);color:var(--tc)}
.an-q{display:grid;justify-items:center;gap:10px;width:min(1000px,100%)}
.an-ask{border:0;background:var(--tc);color:#fff;border-radius:999px;padding:10px 22px;font:700 1.15rem var(--f-body);cursor:pointer}
.an-ask.an-big{font-size:1.5rem;padding:14px 30px}
.an-row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.an-pill{border:0;border-radius:999px;padding:8px 16px;background:#f3f1fa;font:600 1.05rem var(--f-body);color:#2b2541;cursor:pointer}
.an-pill span{font-size:1.4rem;vertical-align:-3px}
.an-pill.on{background:var(--tcs);box-shadow:0 0 0 3px var(--tc) inset}
.an-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;width:min(1100px,100%)}
.an-card{display:grid;justify-items:center;gap:4px;border:3px solid #2b2541;border-radius:22px;background:#fff;padding:12px 8px;box-shadow:0 5px 0 #2b2541;cursor:pointer;color:#2b2541;min-height:150px;align-content:center}
.an-card:active{transform:translateY(3px);box-shadow:0 2px 0 #2b2541}
.an-emo{font-size:clamp(3rem,6vw,4.4rem);line-height:1.1}
.an-card b{font:400 1.35rem var(--f-display)}
.an-card small{color:#8a86a0;font-weight:600}
.an-card.ok{background:#d6f5e5;border-color:#1f9561;box-shadow:0 5px 0 #1f9561}
.an-card.ko{background:#fde4e4;border-color:#e5484d;box-shadow:0 5px 0 #e5484d}
.an-card.dim{opacity:.45}
.an-trou{border-style:dashed;box-shadow:none;font:400 3rem var(--f-display);color:#c9c6d6;cursor:default}
.an-novoice{margin:0;color:#c2333a;font-weight:600;text-align:center}
/* ---------- Géométrie (assets/geometrie.js) ---------- */
#ot-geometrie{--tc:#e8a400;--tcs:#fff0bf}
.ge-stage{position:relative;padding:0;min-height:480px;overflow:hidden;border-radius:24px}
.ge-svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none;background:#fff;cursor:crosshair}
[data-gefond=quad] .ge-svg{background-image:linear-gradient(#dfe5f5 1px,transparent 1px),linear-gradient(90deg,#dfe5f5 1px,transparent 1px);background-size:40px 40px}
[data-gefond=demi] .ge-svg{background-image:linear-gradient(#c9d3ef 1px,transparent 1px),linear-gradient(90deg,#c9d3ef 1px,transparent 1px),linear-gradient(#eef1fa 1px,transparent 1px),linear-gradient(90deg,#eef1fa 1px,transparent 1px);background-size:40px 40px,40px 40px,20px 20px,20px 20px}
[data-gefond=point] .ge-svg{background-image:radial-gradient(circle,#9aa6cc 1.6px,transparent 2px);background-size:40px 40px;background-position:-20px -20px}
[data-geoutil=gomme] .ge-svg{cursor:cell}
.ge-svg line,.ge-svg path,.ge-svg circle{vector-effect:non-scaling-stroke}
.ge-seg line,.ge-libre,.ge-cer circle{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.ge-cer .ge-c{stroke:none}
.ge-pt{fill:none;stroke-width:2.5}
.ge-rayon{stroke:#8a86a0;stroke-width:2;stroke-dasharray:6 5}
.ge-lab text{font:700 15px var(--f-body);fill:#2b2541;paint-order:stroke;stroke:#fff;stroke-width:5px;text-anchor:middle}
[data-gelong=non] .ge-draw .ge-lab{display:none}
.ge-i{cursor:grab}
.ge-body{fill:rgba(255,236,170,.72);stroke:#c99600;stroke-width:1.5}
.ge-equerre .ge-body{fill:rgba(170,215,255,.62);stroke:#3c86c9}
.ge-rapp .ge-body{fill:rgba(205,240,200,.65);stroke:#3c9a52}
.ge-tick{stroke:#2b2541;stroke-width:1.2}
.ge-num{font:700 12px var(--f-body);fill:#2b2541;text-anchor:middle;pointer-events:none}
.ge-num-s{font-size:10px}.ge-num-2{fill:#c2333a;font-size:9px}
.ge-unit{font:600 11px var(--f-body);fill:#8a6a00;text-anchor:middle}
.ge-droit{fill:none;stroke:#2b2541;stroke-width:1.5}
.ge-centre{fill:#c2333a}
.ge-rot{cursor:alias}
.ge-rot circle{fill:#2b2541}
.ge-rot text{font:700 17px var(--f-body);fill:#fff;text-anchor:middle;pointer-events:none}
.ge-angle{font:800 15px var(--f-body);fill:#2b2541;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:5px;pointer-events:none}
.ge-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;align-items:center}
.ge-tools button{border:0;border-radius:14px;min-width:44px;height:44px;padding:0 12px;background:#f3f1fa;font:700 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.ge-tools button[aria-pressed=true]{background:var(--tc);color:#fff}
.ge-tools .ge-col{min-width:38px;width:38px;padding:0;border-radius:50%;background:var(--c)}
.ge-tools .ge-col[aria-pressed=true]{box-shadow:0 0 0 3px #fff,0 0 0 6px #2b2541;background:var(--c)}
.ge-sep{width:2px;height:28px;background:#ebe8f3}
/* ---------- Lignes Seyes (assets/seyes.js) ---------- */
#ot-seyes{--tc:#0e9aa7;--tcs:#cdf0f2}
.sy2-stage{position:relative;padding:0;min-height:480px;overflow:hidden;border-radius:24px}
.sy2-stage canvas{position:absolute;inset:0;width:100%;height:100%}
.sy2-ink{touch-action:none;cursor:crosshair}
.sy2-top input[type=text]{min-width:min(420px,60vw);font-size:1.1rem}
/* ---------- Mélange des couleurs (assets/couleurs.js) ---------- */
#ot-couleurs{--tc:#d6409f;--tcs:#ffd9f0}
.co2-stage{display:grid;justify-items:center;align-content:center;gap:16px;min-height:440px;padding:20px}
.co2-pots{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.co2-pot{display:grid;justify-items:center;gap:4px;border:0;background:none;cursor:pointer;color:#2b2541;font:inherit}
.co2-tube{width:76px;height:96px;border-radius:14px 14px 30px 30px;background:var(--c);border:4px solid #2b2541;box-shadow:inset -10px 0 0 rgba(0,0,0,.12);transition:transform .15s}
.co2-pot:active .co2-tube{transform:translateY(4px) rotate(-6deg)}
.co2-pot b{font:700 1.05rem var(--f-body)}
.co2-pot small{min-height:1.2em;color:#5c5873;font-weight:700}
.co2-mix{display:grid;justify-items:center;gap:6px}
.co2-bol{display:grid;place-items:center;width:clamp(200px,28vw,300px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.55),transparent 40%),var(--m);border:8px solid #fff;box-shadow:0 0 0 4px #2b2541,0 18px 30px -12px rgba(43,37,65,.5);transition:background .35s}
.co2-bol span{max-width:70%;text-align:center;color:#8a86a0;font-weight:600}
.co2-nom{margin:0;min-height:1.2em;font:400 clamp(2rem,5vw,3.2rem) var(--f-display);color:#2b2541}
.co2-rec{margin:0;color:#5c5873;font:600 1.05rem var(--f-body)}
.co2-lum{display:grid;justify-items:center;gap:12px}
.co2-lum svg{width:min(460px,80vw);height:auto}
.co2-spots{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.co2-spots button{border:3px solid var(--c);border-radius:999px;padding:8px 18px;background:#fff;font:700 1.05rem var(--f-body);color:#2b2541;cursor:pointer}
.co2-spots button[aria-pressed=true]{background:var(--c);color:#fff}
.co2-q{font-size:clamp(2rem,5vw,3.4rem)}
.co2-dot{display:inline-block;width:.8em;height:.8em;border-radius:50%;background:var(--c);border:3px solid #2b2541;vertical-align:-.05em}
.co2-choix{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.co2-c{display:grid;justify-items:center;gap:6px;border:0;background:none;cursor:pointer;font:700 1.05rem var(--f-body);color:#2b2541}
.co2-c span{width:110px;height:110px;border-radius:50%;background:var(--m);border:4px solid #2b2541}
.co2-c.ok span{box-shadow:0 0 0 6px #2bc48a}.co2-c.ko span{box-shadow:0 0 0 6px #e5484d}
/* ---------- Cycle de l'eau (assets/eau.js) ---------- */
#ot-eau{--tc:#2f7fd8;--tcs:#d4e6ff}
.eau-stage{display:grid;justify-items:center;align-content:center;gap:14px;min-height:440px;padding:12px 16px}
.eau-scene{width:100%}
/* En mode tableau, le schéma (2 : 1) prend toute la place que laisse le texte en dessous */
.tb #ot-eau .eau-scene{width:min(100%,calc((100dvh - 330px) * 2))}
.eau-svg{display:block;width:100%;height:auto;border-radius:22px}
.eau-small{font:600 13px var(--f-body);fill:#fff;text-anchor:middle}
.eau-st{opacity:.12;transition:opacity .4s}
.eau-st.on{opacity:1}
[data-eaumode=etapes] .eau-st.on:not(.cur){opacity:.35}
.eau-flux{animation:eau-flow 1.2s linear infinite}
@keyframes eau-flow{to{stroke-dashoffset:-56}}
.eau-st:not(.on) .eau-flux,.eau-st:not(.on) .eau-pluie,.eau-st:not(.on) .eau-neige,.eau-st:not(.on) .eau-nuage{animation-play-state:paused}
.eau-pluie{animation:eau-rain .9s linear infinite}
@keyframes eau-rain{from{transform:translateY(0);opacity:1}to{transform:translateY(95px);opacity:0}}
.eau-neige{font-size:16px;fill:#fff;animation:eau-snow 2s linear infinite;paint-order:stroke;stroke:#9ab8d8;stroke-width:1px}
@keyframes eau-snow{from{transform:translateY(0)}to{transform:translateY(45px);opacity:0}}
.eau-nuage{animation:eau-drift 6s ease-in-out infinite alternate}
.eau-n2{animation-delay:-3s}
@keyframes eau-drift{from{transform:translateX(-14px)}to{transform:translateX(14px)}}
.eau-vague{animation:eau-flow 3s linear infinite;stroke-dasharray:30 10}
.eau-lab{cursor:pointer}
.eau-num{fill:#2b2541;stroke:#fff;stroke-width:3}
.eau-numt{font:800 17px var(--f-body);fill:#fff;text-anchor:middle;pointer-events:none}
.eau-tag rect{fill:#fff;stroke:#2b2541;stroke-width:2.5}
.eau-tag text{font:700 18px var(--f-body);fill:#2b2541}
.eau-lab.cache .eau-tag{display:none}
.eau-lab.off{opacity:.35}
.eau-lab.cur .eau-num{fill:var(--tc)}
.eau-lab.cur .eau-tag rect{fill:var(--tcs);stroke:var(--tc)}
.eau-txt{display:grid;gap:4px;width:min(900px,100%);margin:0;text-align:center}
.eau-txt b{font:400 clamp(1.5rem,3vw,2.2rem) var(--f-display);color:var(--tc)}
.eau-txt span{font:500 clamp(1rem,1.8vw,1.2rem)/1.45 var(--f-body);color:#2b2541}
/* ---------- Circuits électriques (assets/circuits.js) ---------- */
#ot-circuits{--tc:#e8a400;--tcs:#fff0bf}
/* La boîte de pièces à gauche, la plaque de montage à droite */
.cx-stage{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:stretch;min-height:460px;padding:0;overflow:hidden;border-radius:24px;background:#fbfaff}
#ot-circuits .cx-stage{padding:0;justify-items:stretch;align-items:stretch;align-content:stretch;place-content:stretch}
.cx-plaque{position:relative;min-width:0;min-height:0}
.cx-svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:pointer}
.cx-pts circle{fill:#d7d3e6}
.cx-fil{stroke:#2b2541;stroke-width:6;stroke-linecap:round;fill:none}
.cx-zone{fill:transparent;stroke:none}
.cx-pile{fill:#2b2541;stroke:#2b2541;stroke-width:3}
.cx-pile.chaud{fill:#e5484d;animation:ci-chaud .6s ease-in-out infinite alternate}
@keyframes ci-chaud{to{fill:#ff9f1c}}
.cx-pile-plus{fill:#ffd23f}
.cx-signe{font:800 22px var(--f-body);fill:#2b2541;text-anchor:middle}
.cx-ampoule{stroke:#2b2541;stroke-width:4}
.cx-ampoule.trop{stroke:#e5484d}
.cx-croix{stroke:#2b2541;stroke-width:3}
.cx-halo{fill:#ffe066;filter:blur(8px)}
.cx-halo-del{fill:#ff5a5a;filter:blur(8px)}
.cx-moteur{fill:#fff;stroke:#2b2541;stroke-width:4}
.cx-pales{stroke:#2f7fd8;stroke-width:5;stroke-linecap:round;fill:none}
.cx-helice.tourne{animation:ci-tourne 1s linear infinite}
@keyframes ci-tourne{to{transform:rotate(360deg)}}
.cx-m{font:800 16px var(--f-body);fill:#2b2541;text-anchor:middle}
.cx-del{fill:#ffd6d6;stroke:#2b2541;stroke-width:3;stroke-linejoin:round}
.cx-del.on{fill:#ff3b3b}
.cx-rayons{stroke:#c9c6d6;stroke-width:3;stroke-linecap:round}
.cx-rayons.on{stroke:#ff3b3b}
.cx-borne{fill:#2b2541}
.cx-levier{stroke:#2b2541;stroke-width:6;stroke-linecap:round}
.cx-msg{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);margin:0;text-align:center;font:700 1.05rem var(--f-body);color:#5c5873;background:rgba(255,255,255,.92);border-radius:16px;padding:8px 16px;box-shadow:0 4px 14px -6px rgba(43,37,65,.3);pointer-events:none}
.cx-msg.ok{background:#d6f5e5;color:#13643f}
.cx-msg.danger{background:#fde4e4;color:#a12328}
.cx-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);align-content:stretch;height:0;min-height:100%;overflow:hidden;box-sizing:border-box;gap:clamp(6px,1vh,10px);width:clamp(176px,12vw,236px);padding:14px 12px;background:linear-gradient(180deg,#fff6d6,#ffeab0);border-right:1px solid #f1d27a;box-shadow:inset -8px 0 14px -10px rgba(150,105,0,.35)}
.cx-tools button{min-height:0;max-height:120px;align-self:center;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:0;border-radius:16px;padding:6px 4px;background:rgba(255,255,255,.7);box-shadow:inset 0 2px 5px rgba(150,105,0,.2),0 1px 0 #fff;font:700 clamp(.72rem,.75vw,.9rem)/1.1 var(--f-body);color:#2b2541;text-align:center;cursor:pointer;transition:transform .15s,background .15s}
.cx-tools button svg{width:auto;height:clamp(22px,4vh,44px);flex:none;transition:transform .15s cubic-bezier(.3,1.6,.5,1)}
.cx-tools button:hover{background:#fff}
.cx-tools button:hover svg{transform:scale(1.1) rotate(-4deg)}
.cx-tools button[aria-pressed=true]{background:#2b2541;color:#fff;box-shadow:0 0 0 3px var(--tc),0 8px 16px -8px rgba(43,37,65,.6)}
.cx-tools button[aria-pressed=true] svg{background:#fff;border-radius:12px;padding:2px}
@media (max-width:640px){.cx-stage{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(380px,1fr)}.cx-tools{height:auto;min-height:0;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));grid-auto-rows:auto;width:auto;border-right:0;border-bottom:1px solid #f1d27a}.cx-tools button{min-height:64px;height:auto}}
.cx-fantome{opacity:.35;pointer-events:none}
/* Sonnette, bouton-poussoir, fusible, panneau solaire, objet à tester */
.cx-bell{fill:#ffd23f;stroke:#2b2541;stroke-width:3;stroke-linejoin:round}
.cx-cloche{transform-origin:0 -16px}
.cx-cloche.sonne{animation:cx-sonne .1s linear infinite alternate}
@keyframes cx-sonne{from{transform:rotate(-10deg)}to{transform:rotate(10deg)}}
.cx-ondes{fill:none;stroke:#e8a400;stroke-width:3;stroke-linecap:round}
.cx-pous{fill:#e5484d;stroke:#2b2541;stroke-width:2.5}.cx-pous.on{fill:#ff8a8a}
.cx-fus{fill:#e8f4ff;stroke:#2b2541;stroke-width:3}.cx-fus-b{fill:#b9c0cc;stroke:#2b2541;stroke-width:2}
.cx-fus-f{fill:none;stroke:#2b2541;stroke-width:2;stroke-linecap:round}.cx-fus-noir{fill:#3a3340;opacity:.85}
.cx-sol{fill:#2456b8;stroke:#2b2541;stroke-width:3;transition:fill .3s}.cx-sol.nuit{fill:#6b7385}
.cx-sol-g{stroke:#cfe0ff;stroke-width:1.5;opacity:.7;fill:none}
.cx-obj{fill:#fff;stroke:#2b2541;stroke-width:3}
.cx-emo{font:28px 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;text-anchor:middle}
.cx-emo-s{font-size:24px}
.cx-objn{font:700 15px var(--f-body);fill:#2b2541;paint-order:stroke;stroke:#fbfaff;stroke-width:5px}
.cx-mats{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;max-width:420px}
.cx-mats button{border:0;border-radius:10px;background:#fff;font:1.3rem 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;padding:2px 6px;cursor:pointer;line-height:1.3}
.cx-mats [aria-pressed=true]{box-shadow:0 0 0 3px #8e5bd8}
@media (prefers-reduced-motion:reduce){.cx-cloche.sonne{animation:none}}
.cx-sel{fill:none;stroke:#8e5bd8;stroke-width:3;stroke-dasharray:8 6}
.cx-depart{fill:none;stroke:#e8a400;stroke-width:4}
.cx-signe.plus{fill:#c2333a}
.cx-selbar{position:absolute;left:50%;top:12px;transform:translateX(-50%);z-index:2;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:6px 10px;border-radius:999px;background:#ece3ff;box-shadow:0 4px 14px -6px rgba(43,37,65,.35)}
.cx-selbar[hidden]{display:none}
.cx-selbar span{font:700 1rem var(--f-body);color:#4b2687;padding:0 6px}

/* ---------- Planisphère : fonds de carte (zones climatiques, relief) ---------- */
#ot-monde .mo-stage{position:relative}
.mo-legende{position:absolute;left:12px;bottom:12px;z-index:2;display:grid;gap:4px;padding:10px 12px;border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 6px 18px -8px rgba(43,37,65,.35);max-width:min(260px,60%)}
.mo-legende[hidden]{display:none}
.mo-legende b{font:700 .9rem var(--f-body);color:#2b2541}
.mo-legende button{display:flex;align-items:center;gap:8px;border:0;background:none;border-radius:10px;padding:4px 6px;font:600 .9rem var(--f-body);color:#2b2541;cursor:pointer;text-align:left}
.mo-legende button:hover,.mo-legende button[aria-pressed=true]{background:#f3f1fa}
.mo-legende i{width:22px;height:14px;border-radius:4px;flex:none;box-shadow:0 0 0 1px rgba(43,37,65,.25)}
.mo-legende .mo-grad{display:block;height:12px;border-radius:6px;margin:2px 0}
.mo-legende small{display:flex;justify-content:space-between;font:600 .75rem var(--f-body);color:#5c5873}
.mo-zone{fill:#2b2541;font-weight:800;letter-spacing:.06em;opacity:.55}
.mo-zone-on{fill:none;stroke:#2b2541;stroke-dasharray:6 4}
.mo-leg-p{margin:2px 0 0;font:500 .78rem/1.3 var(--f-body);color:#5c5873}
/* ---------- Langues vivantes : sélecteur de langue (assets/anglais.js, simon.js, memory.js) ---------- */
.an-langs button,.si-langs button,.me2-langs button{white-space:nowrap}
/* ---------- Simon says (assets/simon.js) ---------- */
#ot-simon{--tc:#2f5fd8;--tcs:#dbe6ff}
.si-stage{display:grid;justify-items:center;align-content:center;gap:14px;min-height:440px;padding:20px}
.si-ordre{display:grid;justify-items:center;gap:8px}
.si-emo{font-size:clamp(5rem,14vw,9rem);line-height:1}
.si-txt{margin:0;text-align:center;font:400 clamp(2rem,5vw,3.6rem)/1.15 var(--f-display);color:#2b2541}
.si-txt b{font-weight:400;color:var(--tc)}
.si-ecoute{color:#b3aec8}
.si-fr{margin:0;color:#8a86a0;font:600 1.1rem var(--f-body)}
.si-rep{margin:0;padding:10px 22px;border-radius:999px;font:700 clamp(1.1rem,2.4vw,1.5rem) var(--f-body)}
.si-rep.go{background:#d6f5e5;color:#13643f}.si-rep.stop{background:#fde4e4;color:#a12328}.si-rep.wait{color:#c9c6d6}
/* ---------- Memory (assets/memory.js) ---------- */
#ot-memory{--tc:#2f5fd8;--tcs:#dbe6ff}
.me2-stage{display:grid;justify-items:center;align-content:center;gap:12px;min-height:440px;padding:18px}
.me2-score{margin:0;display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.me2-score span{padding:6px 16px;border-radius:999px;background:#f3f1fa;font:700 1.05rem var(--f-body);color:#2b2541}
.me2-score span.on{background:var(--tc);color:#fff}.me2-score span.on.eq2{background:#e0457b}
.me2-grid{display:grid;grid-template-columns:repeat(var(--cols,4),minmax(0,1fr));gap:12px;width:min(900px,100%,calc((100dvh - 330px) / var(--rows,3) * var(--cols,4) * 1.3))}
.me2-c{position:relative;aspect-ratio:4/3;border:0;border-radius:18px;background:none;cursor:pointer;perspective:600px;padding:0;font:inherit}
.me2-dos,.me2-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:18px;backface-visibility:hidden;transition:transform .35s ease}
.me2-dos{background:linear-gradient(135deg,var(--tc),#8e5bd8);color:#fff;font:400 2.4rem var(--f-display);box-shadow:0 5px 0 #1c3a8a}
.me2-face{background:#fff;border:3px solid #2b2541;transform:rotateY(180deg);box-shadow:0 5px 0 #2b2541}
.me2-face i{font-style:normal;font-size:clamp(2.4rem,5vw,3.6rem)}
.me2-face b{font:400 clamp(1.1rem,2.4vw,1.6rem) var(--f-display);color:#2b2541;text-align:center;padding:0 6px}
.me2-c.vu .me2-dos{transform:rotateY(180deg)}.me2-c.vu .me2-face{transform:rotateY(0)}
.me2-c.ok .me2-face{background:#d6f5e5;border-color:#1f9561;box-shadow:0 5px 0 #1f9561}
.me2-c.ok.eq2 .me2-face{background:#ffdbe8;border-color:#e0457b;box-shadow:0 5px 0 #e0457b}
/* ---------- Jeux d'écoute (assets/ecoute.js) ---------- */
#ot-ecoute{--tc:#d6409f;--tcs:#ffd9f0}
.ec-stage{display:grid;justify-items:center;align-content:center;gap:16px;min-height:440px;padding:20px}
.ec-q{font-size:clamp(2rem,5vw,3.2rem)}
.ec-duo{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(16px,4vw,48px)}
.ec-card{display:grid;justify-items:center;gap:6px;min-width:clamp(180px,24vw,280px);padding:18px 22px;border:4px solid #2b2541;border-radius:30px;background:#fff;box-shadow:0 7px 0 #2b2541;cursor:pointer;color:#2b2541;font:inherit}
.ec-card:active:not([disabled]){transform:translateY(5px);box-shadow:0 2px 0 #2b2541}
.ec-card[disabled]{cursor:default}
.ec-emo{font-size:clamp(5rem,12vw,8rem);line-height:1.05}
.ec-card b{font:400 clamp(1.6rem,3.4vw,2.4rem) var(--f-display)}
.ec-card small{font:700 .95rem var(--f-body);color:var(--tc)}
.ec-card.ok{background:#d6f5e5;border-color:#1f9561;box-shadow:0 7px 0 #1f9561}
.ec-card.ko{background:#fde4e4;border-color:#e5484d;box-shadow:0 7px 0 #e5484d}
.ec-card.dim{opacity:.45}
.ec-play{font-size:1.2rem;padding:14px 26px}
/* ---------- Instruments (assets/instruments.js) ---------- */
#ot-instruments{--tc:#d6409f;--tcs:#ffd9f0}
.in-stage{display:grid;place-items:center;min-height:440px;padding:18px;touch-action:none;user-select:none;-webkit-user-select:none}
.in-xylo{display:flex;align-items:center;gap:clamp(6px,1.2vw,14px);height:min(62vh,440px);width:min(1100px,100%)}
.in-lame{flex:1;height:var(--h);min-height:40%;border:0;border-radius:14px;background:var(--c);box-shadow:inset 0 -10px 0 rgba(0,0,0,.15),0 6px 0 rgba(43,37,65,.25);cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding-bottom:16px;position:relative}
.in-lame::before,.in-lame::after{content:"";position:absolute;left:50%;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:rgba(255,255,255,.75)}
.in-lame::before{top:12%}.in-lame::after{bottom:12%}
.in-lame span{font:800 clamp(.9rem,1.8vw,1.3rem) var(--f-body);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4);position:relative;z-index:1}
.in-piano{position:relative;display:flex;height:min(52vh,360px);width:min(1100px,100%)}
.in-blanche{flex:1;border:2px solid #2b2541;border-radius:0 0 12px 12px;background:#fff;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px;margin-right:-2px}
.in-blanche span{font:700 clamp(.7rem,1.3vw,1rem) var(--f-body);color:#8a86a0}
.in-noire{position:absolute;top:0;width:calc(100% / var(--n) * .6);height:60%;border:0;border-radius:0 0 8px 8px;background:#2b2541;cursor:pointer;z-index:2}
.in-perc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:min(900px,100%)}
.in-pad{display:grid;justify-items:center;gap:6px;padding:18px 10px;border:0;border-radius:24px;background:#f3f1fa;box-shadow:0 6px 0 #dcd8ea;cursor:pointer;font:inherit;color:#2b2541}
.in-pad span{font-size:clamp(2.6rem,6vw,4rem)}
.in-pad b{font:700 1rem var(--f-body)}
.tape{animation:in-tape .25s ease-out}
@keyframes in-tape{0%{filter:brightness(1.35);transform:scale(.96)}100%{filter:none;transform:none}}
.in-blanche.tape{background:#ffe1f1}.in-noire.tape{background:#d6409f}
/* ---------- Rythmes (assets/rythmes.js) ---------- */
#ot-rythmes{--tc:#ff7a45;--tcs:#ffe1cc}
.ry-stage{display:grid;justify-items:center;align-content:center;gap:12px;min-height:440px;padding:18px}
.ry-grid{display:grid;gap:8px;width:min(1000px,100%)}
.ry-row{display:grid;grid-template-columns:minmax(120px,190px) repeat(8,minmax(0,1fr));gap:6px;align-items:center}
.ry-lab{display:flex;align-items:center;gap:8px;font:700 .95rem var(--f-body);color:#2b2541}
.ry-lab i{font-style:normal;font-size:1.8rem}
.ry-cell{aspect-ratio:1;border:0;border-radius:14px;background:#f3f1fa;cursor:pointer;font-size:clamp(1.4rem,3vw,2.2rem);transition:transform .08s}
.ry-cell.fort{background:#e6e2f2}
.ry-cell.on{background:var(--tcs);box-shadow:inset 0 0 0 3px var(--tc)}
.ry-cell.cur{outline:4px solid #2b2541;outline-offset:-2px;transform:scale(1.06)}
.ry-cell.juste{background:#d6f5e5;box-shadow:inset 0 0 0 3px #1f9561}
.ry-cell.faux{background:#fde4e4;box-shadow:inset 0 0 0 3px #e5484d}
.ry-cell.manque{box-shadow:inset 0 0 0 3px #e5484d;background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(229,72,77,.15) 6px 12px)}
.ry-nums b{text-align:center;font:800 1rem var(--f-body);color:#b3aec8}
.ry-nums b.cur{color:#2b2541}
.ry-jeubar{display:none;gap:8px;flex-wrap:wrap}
.ry-jeu .ry-jeubar{display:inline-flex}
@media (max-width:640px){.ry-row{grid-template-columns:44px repeat(8,minmax(0,1fr))}.ry-lab b{display:none}}
/* ---------- Kaléidoscope (assets/kaleido.js) ---------- */
#ot-kaleido{--tc:#8e5bd8;--tcs:#ece3ff}
.ka-stage{position:relative;padding:0;min-height:460px;overflow:hidden;border-radius:24px}
.ka-stage canvas{position:absolute;inset:0;width:100%;height:100%}
.ka-cv{touch-action:none;cursor:crosshair}
.ka-guide{pointer-events:none}
.ka-arc{background:conic-gradient(#e5484d,#ffd23f,#2bb673,#2f7fd8,#8e5bd8,#e5484d)!important}
.ka-dot{display:block;border-radius:50%;background:#2b2541}
/* ---------- Pixel art (assets/pixel.js) ---------- */
#ot-pixel{--tc:#e0457b;--tcs:#ffdbe8}
.px-stage{display:grid;place-items:center;min-height:440px;padding:16px;touch-action:none;user-select:none;-webkit-user-select:none}
.px-grid{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:2px;width:min(calc(100dvh - 300px),92vw,640px);aspect-ratio:1;background:#d7d3e6;border:3px solid #2b2541;border-radius:10px;padding:2px}
.px-grid[style*="--co"]{grid-template-columns:22px repeat(var(--n),1fr);aspect-ratio:auto;background:none;border:0;padding:0;gap:2px}
.px-c{aspect-ratio:1;background:#fff;border-radius:2px;cursor:pointer}
.px-grid[style*="--co"] .px-c{box-shadow:0 0 0 1px #d7d3e6}
.px-co{display:grid;place-items:center;font:800 .8rem var(--f-body);color:#8a86a0}
.px-c.juste{box-shadow:inset 0 0 0 3px #1f9561}
.px-c.faux{background-image:linear-gradient(45deg,transparent 45%,#e5484d 45% 55%,transparent 55%)!important;box-shadow:inset 0 0 0 2px #e5484d}
.px-duo{display:flex;justify-content:center;gap:24px;width:100%}
.px-duo figure{margin:0;display:grid;justify-items:center;gap:6px;flex:1;min-width:0}
.px-duo .px-grid{width:min(100%,calc(100dvh - 340px),520px)}
.px-duo figcaption{font:700 1rem var(--f-body);color:#5c5873}
.px-mod .px-c{cursor:default}
.px-msg{margin:0;text-align:center}
/* Les boutons du fond de carte, posés en haut à gauche de la carte */
.mo-fonds{box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.mo-fonds[hidden]{display:none}
/* Les étiquettes des zones climatiques : le nom en clair, sur la couleur de la zone */
/* Étiquettes des zones climatiques : texte de la teinte de la zone, pastille colorée avec l'icône */
.mo-zlab text{font-family:var(--f-body);font-weight:700;text-anchor:middle;letter-spacing:.01em}
.mo-zlab .mo-zic{font-weight:400}
.mo-zlab.on rect{stroke-width:3px}
.mo-legende button span{font-size:.95rem;width:1.2em;text-align:center}
.mo-legende button[data-mo-zone]{color:var(--zt)}
.mo-legende button[data-mo-zone][aria-pressed=true]{background:#fff;box-shadow:inset 0 0 0 2px var(--zb)}
#ot-monde .mo-stage,#ot-monde .mo-svg{background:#dcefff} /* le cadre autour de la carte a la couleur des océans */
#ot-monde[data-mofond=relief] .mo-stage,#ot-monde[data-mofond=relief] .mo-svg{background:#76a6cc}
/* Planisphère : la colonne de droite (la fiche, puis l'impression du planisphère muet) */
.mo-side{display:grid;gap:12px;align-content:start;min-width:0}
#ot-monde .mo-side .ca-print{background:#fff;border:0;border-radius:20px;padding:12px 16px;box-shadow:0 0 0 3px color-mix(in srgb,var(--tcs) 85%,#fff)}
#ot-monde .mo-side .ca-print .ot-bar{flex-direction:column;align-items:stretch;gap:8px}
/* ---------- Accueil : le tableau numérique mis en avant (section #tbi) ---------- */
.tbi-home{position:relative;overflow:hidden;padding-block:clamp(64px,8vw,104px);color:#fff;background:radial-gradient(circle at 8% 12%,rgba(255,201,46,.28) 0,transparent 32%),radial-gradient(circle at 92% 88%,rgba(255,93,143,.32) 0,transparent 36%),radial-gradient(circle at 70% 8%,rgba(47,181,255,.28) 0,transparent 34%),linear-gradient(135deg,#3f26c9 0%,#5b3df5 52%,#7a4dff 100%)}
.tbi-home::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.14) 1.5px,transparent 1.6px);background-size:22px 22px;-webkit-mask-image:linear-gradient(115deg,#000 0,transparent 45%);mask-image:linear-gradient(115deg,#000 0,transparent 45%);pointer-events:none}
.tbi-home>.wrap{position:relative}
.tbi-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:56px;align-items:center}
.tbi-txt{display:grid;gap:16px;align-content:center}
.tbi-home .eyebrow{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff}
.tbi-home .eyebrow i{background:var(--c2)}
.tbi-txt h2{margin:0;font:400 clamp(2rem,4vw,3rem)/1.1 var(--f-display);color:#fff}
.tbi-txt .lead{margin:0;color:rgba(255,255,255,.86)}
.tbi-pts{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:12px}
.tbi-pts li{position:relative;padding-left:34px;line-height:1.45;color:rgba(255,255,255,.92)}
.tbi-pts li b{color:#fff}
.tbi-pts li::before{content:"";position:absolute;left:0;top:.12em;width:22px;height:22px;border-radius:8px;background:var(--pt,var(--c2));box-shadow:0 4px 10px -4px rgba(0,0,0,.35)}
.tbi-pts li:nth-child(1){--pt:var(--c2)}.tbi-pts li:nth-child(2){--pt:var(--c4)}.tbi-pts li:nth-child(3){--pt:var(--c3)}.tbi-pts li:nth-child(4){--pt:#2bc48a}
.tbi-pts li::after{content:"";position:absolute;left:8px;top:calc(.12em + 5px);width:5px;height:9px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.tbi-pts li:nth-child(1)::after{border-color:var(--ink)}
.tbi-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}
.tbi-home .btn-primary{background:#fff;color:var(--violet);box-shadow:0 10px 24px -10px rgba(0,0,0,.45)}
.tbi-home .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.tbi-home .btn-ghost:hover{background:rgba(255,255,255,.12)}
.tbi-ecran{display:grid;justify-items:center}
.tbi-cadre{width:100%;border-radius:22px;padding:12px;background:#231e38;box-shadow:0 40px 70px -30px rgba(20,10,60,.75),inset 0 0 0 2px #3d3657}
.tbi-barre{display:flex;align-items:center;gap:6px;padding:2px 6px 10px;color:#b3aec8;font:600 .78rem var(--f-body)}
.tbi-barre i{width:9px;height:9px;border-radius:50%;background:#56506e}
.tbi-barre span{margin-left:auto}
.tbi-tuiles{padding:6px 18px;border-radius:14px;background:radial-gradient(ellipse at 15% 20%,#ffd1ec 0,transparent 55%),radial-gradient(ellipse at 85% 15%,#c9b8ff 0,transparent 55%),radial-gradient(ellipse at 70% 90%,#9fe8ff 0,transparent 60%),#efe9ff}
/* Deux rangées visibles ; elles défilent deux par deux vers le bas (assets/app.js) */
.tbi-vue{overflow:hidden;padding-block:12px;-webkit-mask-image:linear-gradient(transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%);mask-image:linear-gradient(transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%)}
.tbi-rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;will-change:transform}
.tbi-rail.anim{transition:transform 1s cubic-bezier(.65,0,.35,1)}
.tbi-t{display:grid;justify-items:center;gap:6px;padding:10px 6px 8px;border-radius:16px;text-decoration:none;color:#2b2541;transition:transform .15s ease,background .15s}
.tbi-t:hover{transform:translateY(-3px);background:rgba(255,255,255,.55)}
.tbi-t:focus-visible{outline:3px solid var(--violet);outline-offset:-3px}
.tbi-art{display:grid;place-items:center;width:100%;max-width:84px;aspect-ratio:1;border-radius:20px;background:var(--tc,#fff);box-shadow:0 4px 0 rgba(43,37,65,.12)}
.tbi-art svg{width:72%;height:72%}
.tbi-art.dark{background:#2b2541}
.tbi-t b{font:700 .8rem/1.2 var(--f-body);text-align:center}
.tbi-t[data-c=nombres] .tbi-art{--tc:#ffdbe8}.tbi-t[data-c=francais] .tbi-art{--tc:#cdf0f2}.tbi-t[data-c=grandeurs] .tbi-art{--tc:#fff0bf}.tbi-t[data-c=temps] .tbi-art{--tc:#e4dcff}
.tbi-t[data-c=geo] .tbi-art{--tc:#d3f3e4}.tbi-t[data-c=sciences] .tbi-art{--tc:#d6eaff}.tbi-t[data-c=classe] .tbi-art{--tc:#ffe1cc}.tbi-t[data-c=emc] .tbi-art{--tc:#ffd9d6}.tbi-t[data-c=jeux] .tbi-art{--tc:#e6dcff}.tbi-t[data-c=langues] .tbi-art{--tc:#dbe6ff}.tbi-t[data-c=arts] .tbi-art{--tc:#ffd9f0}
.tbi-pied{width:28%;height:14px;margin-top:-2px;border-radius:0 0 12px 12px;background:#3d3657}
@media (max-width:900px){.tbi-grid{grid-template-columns:minmax(0,1fr);gap:36px}}
@media (max-width:520px){.tbi-tuiles{padding:4px 10px}.tbi-rail{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tbi-t b{font-size:.72rem}}

/* Créer un compte : le même bouton jaune dans chaque section de l'accueil, masqué une fois connecté */
.btn-compte{background:var(--c2);color:var(--ink);box-shadow:0 8px 20px -10px rgba(180,130,0,.7)}
.btn-compte:hover{background:#ffbf00}
.btn-compte .ic{width:1.15em;height:1.15em}
body.connecte .btn-compte,body.connecte .compte-row,body.connecte .hero-compte{display:none}
.hero-compte{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;margin-top:20px;font-size:.9rem;color:var(--muted)}
.compte-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin-top:24px;padding:16px 18px 16px 24px;border-radius:20px;background:#fff8e0;border:1px solid #ffe7a0;color:var(--ink)}
.compte-row b{font-weight:700}
.espace-band .door-go.btn-compte{margin:0;white-space:nowrap}
.espace-band .door-go span{color:inherit;font-size:inherit}
@media (max-width:640px){.espace-band .door-go.btn-compte{grid-column:1/-1;justify-self:start}}

/* Page outils.html : le même fond à points que l'accueil */
body:has(.ot-page) main{background-color:var(--top);background-image:radial-gradient(var(--dot) 1.1px,transparent 1.4px);background-size:22px 22px}

/* ---------- Code de la route ---------- */
#ot-route{--tc:#d4212a;--tcs:#ffe0de}
#ot-route [data-ro-for][hidden]{display:none!important}
.ro-vbtns{display:inline-flex;flex-wrap:wrap;gap:8px}
.ro-stage{display:flex;flex-direction:column;gap:14px;align-items:stretch;justify-content:flex-start;min-height:460px}
.ro-sign{display:block;width:100%;height:auto;filter:drop-shadow(0 4px 5px rgba(43,37,65,.22))}
/* Les familles */
.ro-fams{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;flex:none}
.ro-fams button{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:8px 16px;background:#fff;box-shadow:0 0 0 2px #ebe8f3 inset;font:700 .95rem var(--f-body);color:#2b2541;cursor:pointer}
.ro-fams button[aria-pressed=true]{background:#2b2541;color:#fff;box-shadow:none}
.ro-dot{display:inline-block;width:16px;height:16px;flex:none}
.ro-dot-danger{background:none;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:15px solid #d4212a;width:0;height:0}
.ro-dot-priorite{background:#ffc400;transform:rotate(45deg) scale(.8);border:2px solid #fff;box-shadow:0 0 0 1.5px #b9bcc4}
.ro-dot-interdiction{border-radius:50%;background:#fff;box-shadow:inset 0 0 0 4px #d4212a}
.ro-dot-obligation{border-radius:50%;background:#1f5fbf}
.ro-dot-indication{border-radius:3px;background:#1f5fbf}
/* La grille : le nombre de colonnes est calculé pour que tout tienne (assets/route.js : grille) */
.ro-grid{flex:1 1 0;min-height:0;display:grid;grid-template-columns:repeat(var(--cols,6),var(--card,150px));grid-auto-rows:calc(var(--card,150px) * 1.22);gap:12px;justify-content:center;align-content:center;overflow:hidden}
.ro-card{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;border:0;border-radius:18px;background:#fff;box-shadow:0 0 0 2px #f0edf7 inset,0 10px 22px -18px rgba(43,37,65,.6);padding:10px 8px;cursor:pointer;transition:transform .15s}
.ro-card:hover{transform:translateY(-3px)}
.ro-card .ro-sign{width:72%}
.ro-card b{font:700 clamp(.72rem,calc(var(--card,150px) * .085),1.05rem)/1.15 var(--f-body);color:#2b2541;text-align:center}
/* Un panneau en grand */
.ro-big{flex:1 1 0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(20px,4vw,60px);align-items:center;padding:0 clamp(8px,3vw,40px)}
.ro-big-sign{display:grid;place-items:center;height:100%;min-height:0}
.ro-big-sign .ro-sign{width:auto;height:min(100%,62vh);max-width:100%;aspect-ratio:1}
.ro-big-txt{display:grid;gap:14px;align-content:center}
.ro-big-txt h3{margin:0;font:400 clamp(2rem,4vw,3.4rem)/1.05 var(--f-display);color:#2b2541}
.ro-big-txt p{margin:0;font:600 clamp(1.15rem,2vw,1.6rem)/1.4 var(--f-body);color:#2b2541}
.ro-big-txt small{font-size:clamp(.95rem,1.4vw,1.15rem);color:#5c5873}
.ro-fam{justify-self:start;border-radius:999px;padding:6px 14px;font:700 .95rem var(--f-body);background:#f3f1fa;color:#2b2541}
.ro-fam-danger,.ro-fam-interdiction{background:#ffe0de;color:#a3141b}.ro-fam-priorite{background:#fff2c2;color:#7a5a00}.ro-fam-obligation,.ro-fam-indication{background:#dce8ff;color:#173f8a}
.ro-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
/* Le quiz */
.ro-quiz{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center}
.ro-prog{margin:0;font:700 1rem var(--f-body);color:#8a86a0}
.ro-q{display:grid;justify-items:center;gap:10px}
.ro-q-vis{width:clamp(130px,26vh,260px)}
.ro-emo{display:grid;place-items:center;aspect-ratio:1;border-radius:50%;background:var(--tcs);font:clamp(4rem,12vh,7rem)/1 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif}
.ro-q h3{margin:0;font:400 clamp(1.6rem,3vw,2.4rem) var(--f-display);color:#2b2541}
.ro-q-txt{margin:0;max-width:900px;font:700 clamp(1.3rem,2.4vw,2rem)/1.3 var(--f-body);color:#2b2541}
.ro-chs{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;max-width:1100px}
.ro-ch{display:inline-flex;align-items:center;gap:10px;border:0;border-radius:18px;padding:14px 22px;background:#fff;box-shadow:0 0 0 3px #ebe8f3 inset,0 4px 0 #e2dfec;font:700 clamp(1rem,1.6vw,1.3rem) var(--f-body);color:#2b2541;cursor:pointer}
.ro-ch:hover:not(:disabled){box-shadow:0 0 0 3px var(--tc) inset,0 4px 0 #e2dfec}
.ro-ch:disabled{cursor:default}
.ro-ch.ok{background:#d6f5e5;box-shadow:0 0 0 3px #2fa86b inset;color:#13643f}
.ro-ch.ko{background:#fde4e4;box-shadow:0 0 0 3px #e5484d inset;color:#a12328}
.ro-chs-sit .ro-ch{min-width:180px;justify-content:center;font-size:clamp(1.2rem,2vw,1.6rem)}
.ro-expl{margin:0;max-width:900px;font:600 clamp(1.05rem,1.8vw,1.35rem)/1.4 var(--f-body);padding:12px 20px;border-radius:16px}
.ro-expl.ok{background:#d6f5e5;color:#13643f}.ro-expl.ko{background:#fff3d6;color:#6b4c06}
.ro-fin{flex:1;display:grid;place-content:center;justify-items:center;gap:12px;text-align:center}
.ro-fin p{margin:0;font:700 1.4rem var(--f-body);color:#2b2541}
.ro-score-big{font:400 clamp(4rem,10vw,7rem)/1 var(--f-display)!important;color:var(--tc)!important}
/* Le vélo */
.ro-velo-wrap{flex:1 1 0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(240px,24vw,380px);gap:20px;align-items:center}
.ro-velo-box{height:100%;min-height:0;display:grid;place-items:center;container-type:size}
.ro-velo{width:min(100cqw,calc(100cqh * 1000 / 560));height:auto}
.ro-pin{cursor:pointer}
.ro-pin circle:nth-child(2){fill:#2b2541;stroke:#fff;stroke-width:3}
.ro-pin text{font:800 18px var(--f-body);fill:#fff;text-anchor:middle;pointer-events:none}
.ro-pin.on circle:nth-child(2),.ro-pin:hover circle:nth-child(2){fill:var(--tc)}
.ro-zone{fill:transparent;cursor:pointer}
.ro-zone:hover{fill:rgba(212,33,42,.08)}
.ro-zone.ok{fill:none;stroke:#2fa86b;stroke-width:6;stroke-dasharray:10 7}
.ro-trouve{animation:ro-pop .5s cubic-bezier(.3,1.6,.5,1)}
@keyframes ro-pop{from{opacity:0;transform:scale(.6)}}
.ro-trouve{transform-box:fill-box;transform-origin:center}
.ro-info{align-self:center;display:grid;gap:10px;background:#fff;border-radius:24px;padding:22px;box-shadow:0 0 0 3px var(--tcs),0 16px 30px -22px rgba(43,37,65,.55)}
.ro-info h3{margin:0;font:400 clamp(1.5rem,2.4vw,2.1rem)/1.1 var(--f-display);color:#2b2541}
.ro-info p{margin:0;font:600 clamp(1rem,1.4vw,1.2rem)/1.45 var(--f-body);color:#2b2541}
.ro-num{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--tc);color:#fff;font:800 1.2rem var(--f-body)}
.ro-found{color:#13643f!important}.ro-jmsg{color:#5c5873!important}.ro-bravo{font-size:1.4rem!important;color:#13643f!important}
@media (max-width:760px){.ro-grid{flex:none;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));grid-auto-rows:auto;overflow:visible}.ro-card b{font-size:.78rem}.ro-big{grid-template-columns:minmax(0,1fr)}.ro-big-sign .ro-sign{height:auto;width:min(60vw,260px)}.ro-velo-wrap{grid-template-columns:minmax(0,1fr)}.ro-velo-box{height:auto;container-type:normal}.ro-velo{width:100%}}

/* ---------- Jardin potager (assets/jardin.js) ---------- */
#ot-jardin{--tc:#3f9b46;--tcs:#d6f0c4}
#ot-jardin .jd-stage{padding:0;display:grid;justify-items:stretch;align-items:stretch;align-content:stretch;overflow:hidden;min-height:480px;border-radius:24px;background:#fbfff6;touch-action:manipulation}
.jd-pot,.jd-cyc,.jd-cal{min-width:0;min-height:0}
.jd-pot[hidden],.jd-cyc[hidden],.jd-cal[hidden]{display:none}
.jd-pot{display:grid;grid-template-columns:auto minmax(0,1fr) clamp(260px,22vw,380px)}
/* La boîte à graines et les outils */
.jd-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);align-content:stretch;height:0;min-height:100%;overflow:hidden;box-sizing:border-box;gap:clamp(6px,1vh,10px);width:clamp(170px,12vw,232px);padding:12px;background:linear-gradient(180deg,#eef9e0,#d6eebd);border-right:1px solid #b9dc9c;box-shadow:inset -8px 0 14px -10px rgba(40,100,20,.35)}
.jd-tools button{min-height:0;max-height:120px;align-self:center;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;border-radius:16px;padding:4px;background:rgba(255,255,255,.78);box-shadow:inset 0 2px 5px rgba(40,100,20,.18),0 1px 0 #fff;font:700 clamp(.72rem,.75vw,.92rem)/1.1 var(--f-body);color:#2b2541;text-align:center;cursor:pointer;transition:transform .15s,background .15s}
.jd-tools button svg{width:auto;height:clamp(26px,4.6vh,50px);flex:none;transition:transform .15s cubic-bezier(.3,1.6,.5,1)}
.jd-tools button:hover{background:#fff}
.jd-tools button:hover svg{transform:scale(1.1) rotate(-4deg)}
.jd-tools .jd-outil{background:rgba(232,244,255,.85)}
.jd-tools button[aria-pressed=true]{background:#2b2541;color:#fff;box-shadow:0 0 0 3px var(--tc),0 8px 16px -8px rgba(43,37,65,.6)}
.jd-tools button[aria-pressed=true] svg{background:#fff;border-radius:12px;padding:2px}
/* Le potager dessiné */
.jd-jardin{position:relative;min-width:0;min-height:0;background:#bfe39a}
.jd-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.jd-date{font:800 34px var(--f-body);fill:#2b2541}
.jd-sai{font:700 19px var(--f-body);fill:#3f6b2e}
.jd-ombre{font:800 17px var(--f-body);fill:#fff;paint-order:stroke;stroke:#1d3557;stroke-width:5px;stroke-linejoin:round}
.jd-zone{cursor:pointer;outline:none}
.jd-zone:focus-visible{stroke:#2f7fd8;stroke-width:5}
.jd-soleil{transform-box:fill-box;transform-origin:center;animation:jd-tourne 40s linear infinite}
.jd-pluie path{animation:jd-pluie .8s linear infinite}
.jd-pluie path:nth-child(2n){animation-delay:-.4s}
.jd-badge{transform-box:fill-box;transform-origin:center}
.jd-badge.soif{animation:jd-bat 1s ease-in-out infinite}
.jd-sel{animation:jd-tirets 1s linear infinite}
.jd-arrosoir{animation:jd-fondu 1.1s ease forwards}
.jd-gouttes path{animation:jd-pluie .5s linear infinite}
.jd-fane{filter:saturate(.45) sepia(.35)}
.jd-mort{filter:grayscale(.5) sepia(.45)}
@keyframes jd-tourne{to{transform:rotate(360deg)}}
@keyframes jd-pluie{from{transform:translateY(-8px);opacity:0}30%{opacity:1}to{transform:translateY(34px);opacity:0}}
@keyframes jd-bat{50%{transform:scale(1.18)}}
@keyframes jd-tirets{to{stroke-dashoffset:-18}}
@keyframes jd-fondu{0%{opacity:0}15%,80%{opacity:1}to{opacity:0}}
@keyframes jd-pop{from{opacity:0;transform:translateY(12px) scale(.96)}}
/* La fiche à droite */
.jd-fiche{display:flex;flex-direction:column;gap:10px;min-width:0;min-height:0;overflow:hidden;padding:14px 16px;background:linear-gradient(180deg,#fbfff6,#edf8e2);border-left:1px solid #cfe8bc}
.jd-msg{margin:0;padding:10px 14px;border-radius:16px;background:#fff;font:700 clamp(.9rem,.95vw,1.08rem)/1.3 var(--f-body);color:#2b2541;box-shadow:0 3px 0 #dcefcf}
.jd-msg.ok{background:#d6f5e5;color:#13643f}
.jd-msg.soif{background:#fff3cd;color:#7a5200}
.jd-msg.danger{background:#fde4e4;color:#a12328}
.jd-fc{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}
.jd-ftete{display:flex;gap:12px;align-items:center}
.jd-fdes{width:clamp(86px,8vw,170px);height:auto;flex:none;background:linear-gradient(#e6f6ff 0 72%,transparent 72%);border-radius:16px;box-shadow:0 0 0 3px #fff,0 6px 14px -8px rgba(43,37,65,.4)}
.jd-ftete h3{margin:0;font:400 clamp(1.4rem,1.8vw,2rem)/1.1 var(--f-display);color:#2b2541}
.jd-etat{display:inline-block;margin:6px 0 0;padding:4px 12px;border-radius:999px;background:#eef0f6;font:700 clamp(.85rem,.9vw,1rem) var(--f-body);color:#2b2541}
.jd-etat.ok{background:#d6f5e5;color:#13643f}
.jd-etat.soif{background:#fff3cd;color:#7a5200}
.jd-etat.danger{background:#fde4e4;color:#a12328}
.jd-depuis{margin:5px 0 0;font:600 .85rem var(--f-body);color:#6b6782}
.jd-ftxt{margin:0;font:500 clamp(.92rem,.95vw,1.08rem)/1.4 var(--f-body);color:#2b2541}
.jd-frise{list-style:none;margin:0;padding:0 4px;display:flex;justify-content:space-between;position:relative}
.jd-frise::before{content:'';position:absolute;left:12px;right:12px;top:7px;height:4px;background:#dfe9d6;border-radius:2px}
.jd-frise li{position:relative}
.jd-frise i{display:block;width:18px;height:18px;box-sizing:border-box;border-radius:50%;background:#fff;border:3px solid #cfdcc4}
.jd-frise .fait i{background:#a8d86e;border-color:#5f9a34}
.jd-frise .on i{background:var(--tc);border-color:#21401c;transform:scale(1.35)}
.jd-frise span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.jd-jauge{display:grid;gap:4px;font:700 .88rem var(--f-body);color:#3d5a8a}
.jd-jauge b{display:block;height:14px;border-radius:999px;background:#e1ecf6;overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.12)}
.jd-jauge i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#6db8ef,#2d7fc0);transition:width .4s}
.jd-besoins{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.jd-besoins div{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;border-radius:12px;background:#fff;box-shadow:0 2px 0 #e3f1d8}
.jd-besoins dt{font:700 .85rem var(--f-body);color:#6b6782}
.jd-besoins dd{margin:0;font:700 clamp(.88rem,.9vw,1rem)/1.25 var(--f-body);color:#2b2541;text-align:right}
.jd-besoins dd small{font-weight:600;color:#6b6782;margin-left:4px}
.jd-bande{display:inline-grid;grid-template-columns:repeat(12,1fr);gap:2px;width:clamp(130px,11vw,190px);vertical-align:middle}
.jd-bande i{height:13px;border-radius:3px;background:#eceaf3}
.jd-bande i.s{background:#5cb85c}
.jd-bande i.r{background:#f28b2c}
.jd-bande i.now{outline:2px solid #2b2541;outline-offset:1px}
.jd-fbtn{align-self:flex-start}
.jd-aide h3{margin:0 0 6px;font:400 clamp(1.3rem,1.6vw,1.8rem) var(--f-display);color:#2b2541}
.jd-aide p{margin:0;font:500 clamp(.95rem,1vw,1.1rem)/1.45 var(--f-body);color:#2b2541}
.jd-panier{margin-top:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 12px;border-radius:16px;background:#fff7e6;box-shadow:inset 0 0 0 2px #f3dfb4}
.jd-panier b{font:700 .95rem var(--f-body);color:#7a5200}
.jd-panier span{display:inline-flex;align-items:center;gap:2px;font:800 1rem var(--f-body);color:#2b2541}
.jd-panier svg{width:30px;height:30px}
.jd-panier em{font:600 .9rem var(--f-body);color:#8a7a5a}
/* Cycle de vie */
.jd-cyc{display:flex;flex-direction:column;gap:12px;padding:14px}
.jd-cchoix{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.jd-cchoix button{display:inline-flex;align-items:center;gap:6px;min-height:46px;border:0;border-radius:999px;padding:4px 14px 4px 5px;background:#fff;font:700 clamp(.85rem,.9vw,1rem) var(--f-body);color:#2b2541;cursor:pointer;box-shadow:0 3px 0 #dcefcf,inset 0 0 0 2px #e3f1d8}
.jd-cchoix button svg{width:36px;height:36px;border-radius:50%;background:#f3fbec}
.jd-cchoix button[aria-pressed=true]{background:var(--tc);color:#fff;box-shadow:0 3px 0 #2c6e31}
.jd-cetapes{list-style:none;margin:0;padding:0;flex:1;min-height:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:clamp(10px,1.3vw,22px)}
.jd-cetapes li{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-height:0;padding:10px 8px 12px;border-radius:20px;background:#fff;box-shadow:0 0 0 3px #e3f1d8,0 10px 20px -16px rgba(43,37,65,.5);animation:jd-pop .4s backwards;animation-delay:calc(var(--i) * 70ms)}
.jd-cetapes li svg{width:100%;flex:1;min-height:0;max-height:300px;background:linear-gradient(#e6f6ff 0 72%,transparent 72%);border-radius:14px}
.jd-cetapes li:not(:last-child)::after{content:'➜';position:absolute;right:calc(-.5 * clamp(10px,1.3vw,22px) - .55em);top:34%;z-index:1;font-size:clamp(1rem,1.3vw,1.4rem);color:var(--tc)}
.jd-cetapes b{display:flex;align-items:center;gap:6px;font:400 clamp(1rem,1.3vw,1.4rem)/1.1 var(--f-display);color:#2b2541;text-align:center}
.jd-cetapes b em{font-style:normal;display:inline-grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;background:var(--tc);color:#fff;font:800 .8rem var(--f-body)}
.jd-cetapes span{font:500 clamp(.78rem,.82vw,.98rem)/1.35 var(--f-body);color:#4f4b66;text-align:center}
.jd-cboucle{align-self:center;margin:0;padding:8px 18px;border-radius:999px;background:#e3f5d6;font:700 clamp(.92rem,1vw,1.15rem)/1.3 var(--f-body);color:#13643f;text-align:center}
/* Calendrier des semis */
.jd-cal{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:14px clamp(12px,2vw,30px)}
.jd-ctab{width:100%;border-collapse:separate;border-spacing:0 4px;table-layout:fixed}
.jd-ctab thead th:first-child{width:clamp(120px,14vw,230px)}
.jd-ctab th[scope=col]{padding:4px 0;font:800 clamp(.75rem,.9vw,1rem) var(--f-body);color:#5c5873;text-align:center;border-radius:10px 10px 0 0}
.jd-ctab abbr{text-decoration:none}
.jd-ctab abbr .c{display:none}
.jd-ctab th[scope=row]{display:flex;align-items:center;gap:8px;padding:2px 8px 2px 0;font:700 clamp(.88rem,1.2vw,1.45rem) var(--f-body);color:#2b2541;text-align:left;white-space:nowrap}
.jd-ctab th[scope=row] svg{flex:none;width:clamp(28px,5vh,54px);height:clamp(28px,5vh,54px)}
.jd-ctab td{padding:3px 0;background:#fff;vertical-align:middle}
.jd-ctab td:nth-child(2){border-radius:12px 0 0 12px}
.jd-ctab td:last-child{border-radius:0 12px 12px 0}
.jd-ctab td i{display:block;height:clamp(9px,2.3vh,24px);margin:3px 0}
.jd-ctab td i.s{background:#5cb85c}
.jd-ctab td i.r{background:#f28b2c}
.jd-ctab td i.deb{margin-left:4px;border-top-left-radius:99px;border-bottom-left-radius:99px}
.jd-ctab td i.fin{margin-right:4px;border-top-right-radius:99px;border-bottom-right-radius:99px}
.jd-ctab .now{background:#fff3b0}
.jd-leg{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;margin:0;font:600 clamp(.85rem,.9vw,1rem) var(--f-body);color:#5c5873}
.jd-leg i{display:inline-block;width:26px;height:12px;margin-right:4px;border-radius:99px;vertical-align:middle}
.jd-leg i.s{background:#5cb85c}
.jd-leg i.r{background:#f28b2c}
.jd-leg i.now{background:#fff3b0;box-shadow:inset 0 0 0 1px #e1c75a}
.jd-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (max-width:1000px){.jd-pot{grid-template-columns:auto minmax(0,1fr)}.jd-jardin{min-height:340px}.jd-fiche{grid-column:1 / -1;border-left:0;border-top:1px solid #cfe8bc}.jd-cetapes{grid-auto-flow:row;grid-template-columns:repeat(4,minmax(0,1fr))}.jd-cetapes li svg{max-height:180px}.jd-cetapes li::after{display:none}}
@media (max-width:640px){.jd-pot{grid-template-columns:minmax(0,1fr)}.jd-tools{height:auto;min-height:0;width:auto;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:auto;padding:8px;gap:5px;border-right:0;border-bottom:1px solid #b9dc9c}.jd-tools button{min-height:58px;height:auto;font-size:.66rem;padding:4px 2px}.jd-tools button svg{height:28px}.jd-jardin{min-height:0;aspect-ratio:1000 / 640}.jd-cetapes{grid-template-columns:repeat(2,minmax(0,1fr))}.jd-cetapes li svg{max-height:150px}.jd-cal{padding:10px 6px}.jd-ctab thead th:first-child{width:92px}.jd-ctab th[scope=row]{font-size:.75rem;gap:4px;padding-right:4px}.jd-ctab th[scope=row] svg{width:22px;height:22px}.jd-ctab abbr .l{display:none}.jd-ctab abbr .c{display:inline}.jd-ctab th[scope=col]{font-size:.7rem}}

/* ---------- Drôle de course ---------- */
#ot-course{--tc:#2f7fd8;--tcs:#dce8ff}
.dc-stage{display:flex;flex-direction:column;min-height:480px;padding:clamp(12px,1.8vw,22px)!important}
.dc-stage h3{margin:0;font:400 clamp(1.8rem,3.4vw,2.8rem)/1.1 var(--f-display);color:#2b2541;text-align:center}
.dc-stage p{margin:0;font:600 clamp(1rem,1.4vw,1.2rem)/1.45 var(--f-body);color:#3d3a4d;text-align:center}
/* Réglages de la partie */
.dc-setup,.dc-draft{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,2.2vh,22px);max-width:1100px;margin:0 auto;width:100%}
.dc-opts{display:grid;grid-template-columns:auto auto;gap:12px 18px;align-items:center}
.dc-opts label{font:700 1.1rem var(--f-body);color:#2b2541;text-align:right}
.dc-seg{display:inline-flex;flex-wrap:wrap;gap:4px;background:#fff;border-radius:999px;padding:5px;box-shadow:0 3px 0 #e2dfec,0 0 0 2px #ebe8f3 inset}
.dc-seg button{border:0;background:none;border-radius:999px;padding:10px 18px;min-width:48px;font:700 1.05rem var(--f-body);color:#2b2541;cursor:pointer}
.dc-seg button[aria-pressed=true]{background:var(--tc);color:#fff}
.dc-specs{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.dc-specs span{background:#fff;border-radius:999px;padding:6px 14px;font:600 .95rem var(--f-body);color:#3d3a4d;box-shadow:0 0 0 2px #ebe8f3 inset}
.dc-go{font-size:1.2rem!important;padding:14px 32px!important}
/* Les coureurs tirés au sort */
.dc-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;width:100%}
.dc-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;background:#fff;border-radius:22px;padding:16px 14px 18px;box-shadow:0 0 0 4px var(--c),0 16px 30px -22px rgba(43,37,65,.55);text-align:center}
.dc-card b{font:400 1.5rem var(--f-display);color:#2b2541}
.dc-card p{font-size:.98rem!important}
.dc-team{align-self:center;background:var(--c);color:#fff;border-radius:999px;padding:4px 14px;font:800 .9rem var(--f-body)}
.dc-big{font:clamp(3rem,7vh,4.6rem)/1 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif}
.dc-re{position:absolute;top:10px;right:10px;width:40px;height:40px;border:0;border-radius:50%;background:#f3f1fa;font-size:1.2rem;cursor:pointer}
.dc-re:hover{background:var(--tcs)}
.dc-acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px}
/* Le jeu : la piste à gauche, le tour en cours à droite */
.dc-jeu{flex:1 1 0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,25vw,380px);gap:18px}
.dc-pbox{min-height:0;display:grid;place-items:center;container-type:size;background:radial-gradient(circle at 30% 20%,#e9f7df,#d6efc6);border-radius:24px}
.dc-piste{width:min(100cqw,calc(100cqh * 1000 / 510));height:auto}
.dc-case rect{fill:#fff;stroke:#c7bb9e;stroke-width:3}
.dc-num{font:800 20px var(--f-body);fill:#a59a80;text-anchor:middle}
.dc-lab{font:800 15px var(--f-body);fill:#fff;text-anchor:middle}
.dc-emo{font:30px 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;text-anchor:middle}
.dc-dep rect{fill:#2b2541;stroke:#2b2541}
.dc-arr rect{fill:#fff;stroke:#2b2541;stroke-width:4}
.dc-glace rect{fill:#dff3ff;stroke:#7cc4ef}.dc-tourbillon rect{fill:#efe6ff;stroke:#a68be8}.dc-etoile rect{fill:#fff4c4;stroke:#f0c22e}
.dc-pion circle{stroke:#fff;stroke-width:4;filter:drop-shadow(0 3px 3px rgba(43,37,65,.35))}
.dc-pion.on circle{stroke:#2b2541;stroke-width:5}
.dc-pemo{font:28px 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;text-anchor:middle}
.dc-side{min-height:0;display:flex;flex-direction:column;gap:12px;overflow:hidden}
.dc-tour{background:#fff;border-radius:22px;padding:12px 14px;box-shadow:0 0 0 4px var(--c),0 12px 24px -18px rgba(43,37,65,.55);display:grid;gap:8px}
.dc-tour .dc-team{justify-self:start}
.dc-qui{display:flex;align-items:center;gap:12px}
.dc-qui .dc-big{font-size:clamp(2.6rem,6vh,3.6rem)}
.dc-qui b{font:400 1.4rem var(--f-display);color:#2b2541}
.dc-qui p{text-align:left!important;font-size:.95rem!important}
.dc-des{display:flex;justify-content:center;gap:10px}
.dc-de{width:clamp(56px,9vh,86px);height:auto}
.dc-lancer{font-size:1.25rem!important;padding:14px!important}
.dc-q{display:grid;gap:8px;justify-items:center;background:#fff;border-radius:20px;padding:12px;box-shadow:0 0 0 3px var(--tcs)}
.dc-q span{font:700 .9rem var(--f-body);color:#8a86a0}
.dc-q b{font:400 clamp(1.6rem,3vw,2.4rem) var(--f-display);color:#2b2541}
.dc-q em{font:700 1.1rem var(--f-body);color:#13643f;font-style:normal}
.dc-voir{border:0;background:#f3f1fa;border-radius:999px;padding:6px 14px;font:700 .9rem var(--f-body);cursor:pointer}
.dc-qbtn{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.dc-log{list-style:none;margin:0;padding:0;display:grid;gap:5px;flex:1 1 0;min-height:0;overflow:hidden;align-content:start}
.dc-log li{font:600 .95rem/1.35 var(--f-body);color:#3d3a4d;background:#fff;border-radius:12px;padding:6px 10px}
.dc-log li:first-child{font-weight:800;color:#2b2541}
.dc-log li.pw{background:#efe6ff;color:#4b2687}.dc-log li.ok{background:#d6f5e5;color:#13643f}
.dc-cl{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.dc-cl li{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;background:#fff;border-radius:12px;padding:5px 10px;font:700 .95rem var(--f-body);color:#2b2541}
.dc-cl i{width:14px;height:14px;border-radius:50%;background:var(--c)}
.dc-cl span{font-size:.9rem;white-space:nowrap}.dc-cl em{font-style:normal;color:#5c5873}
.dc-fin{display:grid;gap:12px;align-content:center;height:100%}
.dc-fin h3{text-align:left}.dc-fin p{text-align:left}
.dc-win{font:400 1.6rem/1.2 var(--f-display)!important;color:#13643f!important}
@media (max-width:760px){.dc-jeu{grid-template-columns:minmax(0,1fr)}.dc-pbox{container-type:normal}.dc-piste{width:100%}.dc-opts{grid-template-columns:minmax(0,1fr)}.dc-opts label{text-align:left}}
/* Drôle de course : réglages et coureurs à l'échelle d'un grand écran */
.dc-setup,.dc-draft{max-width:min(1500px,100%)}
.dc-opts label{font-size:clamp(1.1rem,1.4vw,1.5rem)}
.dc-seg button{font-size:clamp(1.05rem,1.3vw,1.45rem);padding:clamp(10px,1.1vh,14px) clamp(18px,1.4vw,26px)}
.dc-specs span{font-size:clamp(.95rem,1.1vw,1.2rem)}
.dc-cards{grid-template-columns:repeat(auto-fit,minmax(clamp(170px,14vw,260px),1fr))}
.dc-card b{font-size:clamp(1.5rem,2vw,2.1rem)}
.dc-card p{font-size:clamp(.98rem,1.1vw,1.25rem)!important}
.dc-big{font-size:clamp(3rem,8vh,6rem)}
/* Colonne du tour : classement sur deux colonnes, réponses côte à côte, pour tout faire tenir */
.dc-side .dc-cl{grid-template-columns:repeat(2,minmax(0,1fr))}
.dc-side .dc-cl li{grid-template-columns:auto minmax(0,1fr) auto;padding:5px 8px;font-size:.88rem}
.dc-side .dc-cl li b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-side .dc-cl span{grid-column:2;grid-row:2;font-size:.8rem}
.dc-side .dc-cl em{grid-row:1/3;grid-column:3}
.dc-qbtn{display:grid;grid-template-columns:1fr 1fr;width:100%}
.tb .tb-tools .dc-qbtn .btn{padding:0 10px;font-size:.95rem;min-height:48px}
@media (max-height:860px){.dc-de{width:56px}.dc-qui p{font-size:.88rem!important}.dc-q{padding:8px;gap:6px}.dc-tour{padding:10px 12px}}
.dc-q b.long{font-size:clamp(1.3rem,2vw,1.8rem);text-align:center}
/* Drôle de course en 3D */
.dc-pbox{position:relative;overflow:hidden}
.dc-pbox.dc-3d{background:#dcefd0}
.dc-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.dc-vue{position:absolute;top:10px;right:10px;z-index:1;border:0;background:#fff;color:#2b2541;border-radius:999px;padding:8px 14px;font:800 .95rem var(--f-body);box-shadow:0 3px 0 #d5d1e2;cursor:pointer}
.dc-vue:hover{background:var(--tcs)}
.dc-des.roule .dc-de{animation:dc-roule .5s ease-in-out infinite alternate}
@keyframes dc-roule{to{transform:rotate(14deg) scale(1.06)}}
@media (max-width:760px){.dc-pbox.dc-3d{aspect-ratio:4/3}}
@media (prefers-reduced-motion:reduce){.dc-des.roule .dc-de{animation:none}}
/* Drôle de course : colonne de droite plus lisible (à qui le tour → que faire → ce qui s'est passé → cases → classement) */
.dc-side{gap:10px}
.dc-tour{padding:0;overflow:hidden;gap:0}
.dc-tete{display:flex;align-items:baseline;gap:8px;background:var(--c);color:#fff;padding:8px 14px}
.dc-tete span{font:700 .95rem var(--f-body);opacity:.9}
.dc-tete b{font:400 clamp(1.5rem,2.2vw,2rem)/1.1 var(--f-display)}
.dc-tete em{margin-left:auto;font:700 .82rem var(--f-body);font-style:normal;background:rgba(255,255,255,.22);border-radius:999px;padding:3px 10px;white-space:nowrap}
.dc-tour .dc-qui{padding:8px 12px 10px}
.dc-qui b{font-size:1.25rem}
.dc-action{display:grid;gap:8px;background:#fff;border-radius:20px;padding:10px;box-shadow:0 0 0 3px var(--tcs)}
.dc-action .dc-q{box-shadow:none;padding:0;background:none;gap:4px}
.dc-q span{text-transform:uppercase;letter-spacing:.08em;font-size:.78rem}
.dc-lance{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}
.dc-lance .dc-des{flex-direction:column;gap:6px}
.dc-lance .dc-de{width:clamp(52px,7.5vh,72px)}
.dc-lance .dc-qbtn{grid-template-columns:minmax(0,1fr);gap:6px}
.dc-qbtn .btn{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15}
.dc-qbtn .btn small{font:600 .78rem var(--f-body);opacity:.85}
.tb .tb-tools .dc-qbtn .btn{min-height:46px;padding:4px 10px}
.dc-lancer{width:100%}
.dc-bloc{display:grid;gap:5px;min-height:0}
.dc-bloc h4{margin:0;font:800 .78rem var(--f-body);text-transform:uppercase;letter-spacing:.08em;color:#8a86a0}
.dc-bloc-log{flex:1 1 0;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
.dc-bloc-log .dc-log{flex:none}
.dc-log li{padding:5px 10px;font-size:.92rem}
.dc-log li:not(:first-child){opacity:.75}
.dc-leg ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.dc-leg li{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px;border-radius:12px;padding:4px 10px;font:600 .9rem/1.2 var(--f-body);color:#3d3a4d;border:2px solid}
.dc-leg i{font:1.15rem 'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;font-style:normal}
.dc-leg b{color:#2b2541;font-weight:800}
.dc-l-glace{background:#dff3ff;border-color:#7cc4ef!important}
.dc-l-tourbillon{background:#efe6ff;border-color:#a68be8!important}
.dc-l-etoile{background:#fff4c4;border-color:#f0c22e!important}
.dc-side .dc-cl li{grid-template-columns:auto minmax(0,1fr) auto auto;gap:6px;padding:4px 8px}
.dc-side .dc-cl span{grid-column:auto;grid-row:auto;font-size:.8rem}
.dc-side .dc-cl em{grid-row:auto;grid-column:auto;font-size:.85rem;white-space:nowrap}
@media (max-height:860px){.dc-tete{padding:6px 12px}.dc-tour .dc-qui{padding:6px 10px 8px}.dc-qui .dc-big{font-size:2.4rem}.dc-leg li{padding:3px 8px;font-size:.84rem}.dc-action{padding:8px}}
@media (max-height:720px){.dc-qui p{display:none}}
.dc-side>*{flex-shrink:0}
.dc-side>.dc-bloc-log{flex:1 1 0;min-height:0}
.dc-action .dc-q{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 10px}
.dc-action .dc-q span{flex-basis:100%;text-align:center}
.dc-lance .dc-des{flex-direction:row}
.dc-lance .dc-qbtn{grid-template-columns:1fr 1fr}
.dc-leg ul{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.dc-leg li{grid-template-columns:auto minmax(0,1fr);gap:2px 5px;padding:5px 7px;align-items:center}
.dc-leg li span{grid-column:1/-1;font-size:.8rem;line-height:1.2}
.dc-leg b{font-size:.9rem;overflow:hidden;text-overflow:ellipsis}
@media (max-height:860px){.dc-leg li{padding:4px 6px}.dc-leg li span{font-size:.76rem}}
.dc-leg li{gap:2px 4px;padding-inline:6px}
.dc-leg b{font-size:.82rem;overflow:visible;white-space:nowrap;letter-spacing:-.01em}
.dc-leg i{font-size:1rem}
@media (max-width:760px){.dc-jeu{grid-template-rows:auto auto;flex:none}.dc-side{overflow:visible}.dc-side>.dc-bloc-log{flex:none}}
/* Drôle de course : réglages des questions et autres matières */
.dc-outils{position:absolute;top:10px;right:10px;z-index:1;display:flex;gap:8px}
.dc-outils .dc-vue{position:static}
.dc-vue[aria-expanded=true]{background:var(--tc);color:#fff}
.dc-jeu{position:relative}
.dc-regbox{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:rgba(43,37,65,.35);border-radius:24px;padding:16px}
.dc-regbox[hidden]{display:none}
.dc-reg{display:grid;gap:14px;justify-items:center;width:min(760px,100%);max-height:100%;overflow:auto;background:#fff;border-radius:24px;padding:18px 22px;box-shadow:0 30px 60px -20px rgba(43,37,65,.6)}
.dc-reg-h{display:flex;align-items:center;justify-content:space-between;width:100%}
.dc-reg-h b{font:400 clamp(1.3rem,2vw,1.8rem) var(--f-display);color:#2b2541}
.dc-reg-x{width:40px;height:40px;border:0;border-radius:50%;background:#f3f1fa;font-size:1.1rem;cursor:pointer}
.dc-reg-n{font-size:.95rem!important;color:#5c5873!important;max-width:60ch}
.dc-mats{justify-content:center}
.dc-mats button[aria-pressed=true]{background:var(--tc);color:#fff}
.dc-off{opacity:.45}
.dc-q b.txt{font:700 clamp(1.05rem,1.35vw,1.35rem)/1.3 var(--f-body);text-align:center;color:#2b2541}
.dc-q em{text-align:center}
@media (max-width:760px){.dc-outils .dc-vue{padding:6px 10px;font-size:.85rem}}
/* Les cadres de la colonne sont des ombres (box-shadow) : on laisse 5px de marge pour que overflow:hidden ne les coupe pas */
.dc-side{padding:5px;margin:-5px}
/* Accueil : l'illustration de l'enseignant dans le bandeau « Votre espace enseignant » */
.espace-ill{display:block;width:auto;height:96px;margin-block:-10px}
@media (max-width:640px){.espace-ill{height:118px;margin-block:-18px -4px}}
/* Accueil : les deux portes avec leur illustration (prof02 à gauche de « Une idée », prof03 à droite de « Un projet »).
   L'enseignante dépasse un peu du haut de la carte ; le texte se pousse pour lui laisser la place. */
.door-g,.door-d{position:relative;min-height:280px;align-content:center}
.door-ill{position:absolute;bottom:10px;height:calc(100% + 6px);max-height:300px;width:auto;pointer-events:none;user-select:none}
.door-g{padding-left:clamp(110px,12vw,128px)}
.door-g .door-ill{left:clamp(14px,1.6vw,22px)}
.door-d{padding-right:clamp(150px,17vw,190px)}
.door-d .door-ill{right:-14px}
@media (max-width:860px){.door-d{padding-right:140px}.door-d .door-ill{height:calc(100% - 10px);right:-6px}}
@media (max-width:720px){.door-g,.door-d{min-height:230px}}
@media (max-width:640px){.door-g,.door-d{min-height:200px}.door-g{padding-left:92px}.door-d{padding-right:118px}.door-ill{max-height:210px}}
/* Accueil, section TBI rééquilibrée : écran plus grand, tuiles plus grandes, boutons sur une ligne sous les deux colonnes */
.tbi-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:28px 56px}
.tbi-ecran{align-self:center}
.tbi-tuiles{padding:8px 22px}
.tbi-rail{gap:14px 16px}
.tbi-t{padding:12px 6px 10px;gap:8px}
.tbi-art{max-width:100px}
.tbi-t b{font-size:.86rem}
.tbi-grid>.tbi-cta{grid-column:1/-1;margin-top:0}
@media (max-width:900px){.tbi-grid>.tbi-cta{grid-row:auto}}
/* Accueil, rituel du jour et moments : deux colonnes égales ; la carte du rituel remplit sa colonne */
.today{grid-template-columns:repeat(2,minmax(0,1fr))}
.rit{grid-template-rows:auto auto 1fr}
.rit-card{align-content:center;gap:10px;padding:22px 24px}
@media (max-width:900px){.today{grid-template-columns:minmax(0,1fr)}.rit{grid-template-rows:none}}
/* Page Outils : les illustrations en image (assets/img/outils) à la place des dessins SVG */
.ot-card-art img{width:58px;height:58px;object-fit:contain;display:block}
/* L'espace sous le contenu est dans main (le pied de page n'a plus de marge au-dessus) */
main:has(~ footer){padding-bottom:40px}
@media (max-width:640px){main:has(~ footer){padding-bottom:24px}}
.tbi-art img{width:74%;height:74%;object-fit:contain;display:block}
/* Accueil, section TBI sur tablette et mobile : une seule colonne (texte, écran, boutons) */
@media (max-width:900px){
  .tbi-grid{grid-template-columns:minmax(0,1fr);gap:28px}
  .tbi-ecran{width:min(560px,100%);justify-self:center}
}
@media (max-width:640px){
  .tbi-home{padding-block:48px 56px}
  .tbi-txt{gap:12px}
  .tbi-txt h2{font-size:clamp(1.8rem,8vw,2.2rem)}
  .tbi-txt .lead{font-size:1rem}
  .tbi-pts{gap:10px}
  .tbi-pts li{font-size:.95rem}
  .tbi-cadre{padding:8px;border-radius:18px}
  .tbi-barre{padding:0 4px 8px;font-size:.72rem}
  .tbi-tuiles{padding:4px 8px;border-radius:12px}
  .tbi-rail{gap:6px 4px}
  .tbi-t{padding:8px 2px 6px;gap:5px}
  .tbi-art{max-width:64px;border-radius:16px}
  .tbi-t b{font-size:.7rem}
  .tbi-grid>.tbi-cta{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .tbi-grid>.tbi-cta .btn{justify-content:center;padding-inline:10px}
  .tbi-grid>.tbi-cta .btn-compte{grid-column:1/-1}
}
/* Les étiquettes des tuiles ont toujours la hauteur de deux lignes : toutes les rangées ont la même hauteur,
   et le défilement deux rangées par deux rangées tombe juste */
.tbi-t b{min-height:2.4em;display:flex;align-items:flex-start;justify-content:center;line-height:1.2}
@media (max-width:640px){
  .tbi-grid>.tbi-cta{grid-template-columns:minmax(0,1fr)}
  .tbi-grid>.tbi-cta .btn{width:100%}
}
