
:root{
  --bg: oklch(0.965 0.012 250);
  --tile: oklch(0.995 0.003 250);
  --line: oklch(0.88 0.014 250);
  --ink: oklch(0.24 0.03 265);
  --muted: oklch(0.47 0.025 265);
  --term: oklch(0.22 0.025 265);
  --term-ink: oklch(0.93 0.01 250);
  --term-dim: oklch(0.7 0.02 250);
  --green: oklch(0.64 0.16 150);  --green-d: oklch(0.52 0.14 150); --green-s: oklch(0.94 0.05 150);
  --orange: oklch(0.68 0.17 50);  --orange-d: oklch(0.56 0.16 45); --orange-s: oklch(0.95 0.045 60);
  --violet: oklch(0.56 0.18 295); --violet-d: oklch(0.45 0.17 295); --violet-s: oklch(0.94 0.04 295);
  --blue: oklch(0.6 0.15 245);    --blue-d: oklch(0.49 0.14 248); --blue-s: oklch(0.94 0.035 245);
  --red: oklch(0.6 0.19 25);      --red-d: oklch(0.5 0.18 25);    --red-s: oklch(0.95 0.035 25);
  --gold: oklch(0.8 0.15 85);     --gold-d: oklch(0.66 0.14 75);
  --grey: oklch(0.8 0.01 250);    --grey-d: oklch(0.68 0.012 250);
  --mono: "Cascadia Code","Cascadia Mono",Consolas,Menlo,monospace;
  --sans: "Segoe UI Variable Display","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --ease: cubic-bezier(0.23,1,0.32,1);
  --spring: cubic-bezier(0.34,1.4,0.64,1);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh}
h1,h2,h3,p{margin:0}
h1,h2,h3{line-height:1.12;text-wrap:balance}
button{font:inherit;color:inherit;cursor:pointer}
code,.mono{font-family:var(--mono)}
svg{display:block}

/* Barre du haut */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:10px 24px;background:oklch(0.995 0.003 250 / .92);backdrop-filter:blur(8px);border-bottom:2px solid var(--line)}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;letter-spacing:-0.01em;white-space:nowrap}
.logo i{width:34px;height:34px;border-radius:10px;background:var(--term);color:var(--green);display:grid;place-items:center;font:700 15px var(--mono);font-style:normal}
.tabs{display:flex;gap:4px}
.tab{display:flex;align-items:center;gap:8px;border:0;background:none;padding:9px 14px;border-radius:12px;font-weight:700;font-size:15px;color:var(--muted)}
.tab svg{width:20px;height:20px}
.tab:hover{background:var(--bg);color:var(--ink)}
.tab[aria-current="page"]{background:var(--blue-s);color:var(--blue-d)}
.hud{margin-left:auto;display:flex;align-items:center;gap:14px}
.pill{display:flex;align-items:center;gap:7px;font-weight:800;font-size:15px;padding:6px 12px;border-radius:999px;background:var(--bg)}
.pill svg{width:20px;height:20px}
.lvl{display:flex;align-items:center;gap:10px;min-width:210px}
.lvl-badge{width:36px;height:36px;border-radius:11px;background:var(--violet);color:#fff;display:grid;place-items:center;font-weight:800;box-shadow:0 3px 0 var(--violet-d)}
.lvl-txt{flex:1;font-size:13px;font-weight:700;color:var(--muted)}
.lvl-txt b{display:block;color:var(--ink);font-size:14px}
.xpbar{height:9px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:4px}
.xpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--orange));border-radius:99px;transition:width .5s var(--ease)}

main{padding:22px 24px 110px}
.screen{display:none}
.screen.on{display:block;animation:in .25s var(--ease)}
@keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Tuiles */
.tile{background:var(--tile);border:2px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 4px 0 var(--line)}
.label{font-size:13px;font-weight:800;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}
.big{font-size:clamp(22px,2.2vw,30px);font-weight:800;letter-spacing:-0.02em}
.mid{font-size:19px;font-weight:800;letter-spacing:-0.01em}
.sub{color:var(--muted);font-size:14.5px}

/* Boutons de jeu */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:14px;border:0;font-weight:800;font-size:16px;letter-spacing:.01em;background:var(--tile);color:var(--ink);box-shadow:0 4px 0 var(--line),inset 0 0 0 2px var(--line);transition:transform .1s var(--ease),box-shadow .1s var(--ease)}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line),inset 0 0 0 2px var(--line)}
.btn.go{background:var(--green);color:#fff;box-shadow:0 4px 0 var(--green-d)}
.btn.go:active{box-shadow:0 1px 0 var(--green-d)}
.btn.hot{background:var(--orange);color:#fff;box-shadow:0 4px 0 var(--orange-d)}
.btn.hot:active{box-shadow:0 1px 0 var(--orange-d)}
.btn.sm{min-height:38px;padding:0 14px;font-size:14px;border-radius:11px}
.btn svg{width:20px;height:20px}
.btn:focus-visible,.tab:focus-visible,.world:focus-visible,.card:focus-visible,.choice:focus-visible,input:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* Accueil */
.home{display:grid;grid-template-columns:1.25fr 1.1fr .8fr;gap:18px}
.mission{background:var(--green);border-color:var(--green-d);box-shadow:0 5px 0 var(--green-d);color:#fff;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px}
.mission .label{color:oklch(1 0 0 / .8)}
.mission .big{max-width:20ch}
.seg{display:flex;gap:6px}
.seg i{flex:1;height:10px;border-radius:99px;background:oklch(1 0 0 / .3)}
.seg i.on{background:#fff}
.mission .btn{background:#fff;color:var(--green-d);box-shadow:0 4px 0 var(--green-d);align-self:flex-start}
.mission .deco{position:absolute;right:-16px;bottom:-22px;font:800 120px/1 var(--mono);color:oklch(1 0 0 / .13);pointer-events:none}
.chips-cmd{display:flex;gap:6px;flex-wrap:wrap}
.chips-cmd code{background:oklch(1 0 0 / .2);padding:3px 9px;border-radius:8px;font-size:13.5px;font-weight:600}

.ask{display:flex;flex-direction:column;gap:12px}
.ask form{position:relative}
.ask input{width:100%;height:56px;border:2px solid var(--line);border-radius:16px;background:var(--bg);padding:0 16px 0 48px;font:600 17px var(--sans);color:var(--ink)}
.ask input::placeholder{color:var(--muted);font-weight:500}
.ask form svg{position:absolute;left:15px;top:17px;width:22px;height:22px;color:var(--muted)}
.qchips{display:flex;flex-wrap:wrap;gap:8px}
.qchip{border:2px solid var(--line);background:var(--tile);border-radius:12px;padding:6px 12px;font-weight:700;font-size:14px;box-shadow:0 2px 0 var(--line)}
.qchip:hover{border-color:var(--blue);color:var(--blue-d)}

.streak{display:flex;flex-direction:column;gap:12px}
.flame{display:flex;align-items:center;gap:12px}
.flame svg{width:46px;height:46px}
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center;font-size:12px;font-weight:800;color:var(--muted)}
.week span{display:grid;place-items:center;aspect-ratio:1;border-radius:50%;background:var(--bg);margin-top:4px;border:2px solid var(--line)}
.week .on span{background:var(--orange);border-color:var(--orange-d)}
.week .today span{border-color:var(--orange);border-style:dashed}
.ring{display:flex;align-items:center;gap:12px}

.row-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:30px 2px 12px}
.worlds{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:16px;overflow-x:auto;padding:4px 2px 10px;scroll-snap-type:x mandatory}
.world{scroll-snap-align:start;text-align:left;border:0;border-radius:22px;padding:18px;color:#fff;display:flex;flex-direction:column;gap:10px;min-height:208px;transition:transform .15s var(--ease)}
.world:hover{transform:translateY(-3px)}
.world:active{transform:translateY(2px)}
.world .wi{width:44px;height:44px;border-radius:13px;background:oklch(1 0 0 / .22);display:grid;place-items:center}
.world .wi svg{width:24px;height:24px}
.world h3{font-size:21px;font-weight:800}
.world .sub{color:oklch(1 0 0 / .85)}
.world .xpbar{background:oklch(1 0 0 / .28);margin-top:auto}
.world .xpbar i{background:#fff}
.w-terminal{background:var(--green);box-shadow:0 5px 0 var(--green-d)}
.w-git{background:var(--orange);box-shadow:0 5px 0 var(--orange-d)}
.w-github{background:var(--violet);box-shadow:0 5px 0 var(--violet-d)}
.w-vscode{background:var(--blue);box-shadow:0 5px 0 var(--blue-d)}
.world.locked{background:var(--grey);box-shadow:0 5px 0 var(--grey-d);cursor:default}
.world.locked:hover{transform:none}
.lockline{display:flex;align-items:center;gap:6px;font-weight:700;font-size:14px;margin-top:auto}
.lockline svg{width:18px;height:18px}

.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.mini{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:2px solid var(--bg)}
.mini:first-of-type{border-top:0}
.mini>svg{width:22px;height:22px;flex:none;color:var(--muted)}
.home>*,.trio>*,.gridf>*,.fiche>*,.game>*{min-width:0}
.tag{font:700 14px var(--mono);padding:4px 10px;border-radius:9px;background:var(--bg);white-space:nowrap}
.badges{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;text-align:center;font-size:12px;font-weight:700;color:var(--muted)}
.medal{width:54px;height:54px;margin:0 auto 6px;border-radius:50%;display:grid;place-items:center;background:var(--gold);box-shadow:0 4px 0 var(--gold-d)}
.medal svg{width:26px;height:26px;color:#fff}
.medal.off{background:var(--line);box-shadow:0 4px 0 var(--grey)}
.medal.off svg{color:var(--grey-d)}

/* Monde */
.world-head{display:flex;align-items:center;gap:18px;border-radius:22px;padding:20px 22px;color:#fff;margin-bottom:18px}
.world-head .wi{width:56px;height:56px;border-radius:16px;background:oklch(1 0 0 / .22);display:grid;place-items:center}
.world-head .wi svg{width:30px;height:30px}
.world-head .xpbar{background:oklch(1 0 0 / .28);width:220px}
.world-head .xpbar i{background:#fff}
.world-pick{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.world-pick button{border:0;border-radius:11px;padding:7px 12px;font-weight:800;font-size:14px;background:oklch(1 0 0 / .2);color:#fff}
.world-pick button[aria-pressed="true"]{background:#fff;color:var(--ink)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.card{text-align:left;border:2px solid var(--line);background:var(--tile);border-radius:18px;padding:16px;box-shadow:0 4px 0 var(--line);display:flex;flex-direction:column;gap:8px;min-height:150px;transition:transform .12s var(--ease)}
.card:hover{transform:translateY(-3px);border-color:var(--ink)}
.card:active{transform:translateY(2px)}
.card .cmdbig{font:700 21px var(--mono);letter-spacing:-0.01em}
.card .state{margin-top:auto;display:flex;align-items:center;justify-content:space-between}
.stars{display:flex;gap:2px}
.stars svg{width:18px;height:18px;color:var(--line)}
.stars svg.on{color:var(--gold)}
.st{font-size:12.5px;font-weight:800;padding:3px 9px;border-radius:99px}
.st.ok{background:var(--green-s);color:var(--green-d)}
.st.ko{background:var(--red-s);color:var(--red-d)}
.st.new{background:var(--blue-s);color:var(--blue-d)}
.empty{grid-column:1/-1;text-align:center;padding:30px}

/* Fiche */
.fiche{display:grid;grid-template-columns:330px 1fr;gap:18px;align-items:start}
.hero{position:sticky;top:84px;color:#fff;border:0;display:flex;flex-direction:column;gap:12px}
.hero .cmdhuge{font:800 clamp(34px,3.4vw,46px)/1.05 var(--mono);letter-spacing:-0.03em}
.hero .say{font-size:17px;font-weight:700}
.hero .label{color:oklch(1 0 0 / .8)}
.speak{display:flex;align-items:center;gap:10px;background:oklch(1 0 0 / .18);border-radius:14px;padding:10px 12px;border:0;color:#fff;font-weight:700;text-align:left}
.speak svg{width:26px;height:26px;flex:none}
.speak small{display:block;font-weight:600;opacity:.85}
.hero .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hero .btn{width:100%}
.hero .btn.light{background:#fff;color:var(--ink);box-shadow:0 4px 0 oklch(0 0 0 / .18)}
.hero .btn.light.sel-ok{background:var(--green-s);color:var(--green-d)}
.hero .btn.light.sel-ko{background:var(--red-s);color:var(--red-d)}
.hero .btn.hot{background:var(--ink);box-shadow:0 4px 0 oklch(0 0 0 / .35)}
.gridf{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.gridf .span2{grid-column:span 2}
.gridf .tile{display:flex;flex-direction:column;gap:10px}
.gridf .tile .label{display:flex;align-items:center;gap:8px}
.gridf .tile .label svg{width:18px;height:18px}
.say-big{font-size:19px;font-weight:700;line-height:1.35}
.flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.flow .tag.here{background:var(--ink);color:#fff}
.flow svg{width:18px;height:18px;color:var(--muted)}
.term{background:var(--term);color:var(--term-ink);border-radius:14px;font:14.5px/1.55 var(--mono);overflow:hidden}
.tline{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid oklch(0.32 0.02 265)}
.tline:first-child{border-top:0}
.tline .p{color:var(--green)}
.tline code{flex:1;min-width:0;overflow-wrap:anywhere}
.tline small{display:block;font-family:var(--sans);color:var(--term-dim);font-size:13px}
.copy{border:0;background:oklch(1 0 0 / .1);color:var(--term-ink);border-radius:9px;padding:6px 10px;font:700 12.5px var(--sans)}
.copy:hover{background:oklch(1 0 0 / .2)}
.vsc{display:flex;gap:12px;align-items:stretch}
.vsc-mock{flex:none;width:150px;background:var(--term);border-radius:12px;padding:10px;color:var(--term-ink);font:12.5px var(--mono);display:flex;flex-direction:column;gap:6px}
.vsc-mock div{display:flex;justify-content:space-between;align-items:center;padding:4px 6px;border-radius:6px}
.vsc-mock .hl{background:oklch(1 0 0 / .1)}
.vsc-mock b{width:20px;height:20px;border-radius:6px;background:var(--orange);color:#fff;display:grid;place-items:center;font:800 15px var(--sans);animation:blink 1.6s ease-in-out infinite}
@keyframes blink{50%{transform:scale(1.15)}}
@media (prefers-reduced-motion:reduce){.vsc-mock b{animation:none}}
.kbd{font:700 12.5px var(--mono);border:2px solid var(--line);border-bottom-width:3px;border-radius:7px;padding:0 6px;background:var(--tile)}
.trad{display:grid;gap:8px}
.trad div{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:center;background:var(--bg);border-radius:11px;padding:8px 10px;font-size:14px}
.trad code{font-size:13px}
.trad span{font-weight:700}
details.trap{border:2px solid var(--line);border-radius:13px;background:var(--bg)}
details.trap+details.trap{margin-top:8px}
details.trap summary{list-style:none;cursor:pointer;padding:10px 12px;display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px}
details.trap summary::-webkit-details-marker{display:none}
details.trap summary code{color:var(--red-d);font-size:13px;flex:1;overflow-wrap:anywhere}
details.trap summary svg{width:18px;height:18px;transition:transform .2s var(--ease);flex:none}
details.trap[open] summary svg{transform:rotate(90deg)}
details.trap p{padding:0 12px 12px;font-size:14.5px}
.words{display:flex;flex-wrap:wrap;gap:8px}
.word{border:2px solid var(--line);background:var(--tile);border-radius:12px;padding:6px 12px;font-weight:700;box-shadow:0 2px 0 var(--line)}
.word small{color:var(--muted);font-weight:600;margin-left:6px}

/* Défis */
.game{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.gbar{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.gbar .xpbar{flex:1;height:14px}
.gbar .xpbar i{background:var(--green)}
.hearts{display:flex;gap:4px}
.hearts svg{width:26px;height:26px;color:var(--red)}
.hearts svg.lost{color:var(--line)}
.q{font-size:clamp(22px,2.4vw,30px);font-weight:800;letter-spacing:-0.02em;margin:6px 0 18px}
.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.choice{border:2px solid var(--line);background:var(--tile);border-radius:18px;padding:20px;font:700 20px var(--mono);box-shadow:0 4px 0 var(--line);text-align:left;transition:transform .1s var(--ease)}
.choice:hover{border-color:var(--blue)}
.choice:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line)}
.choice.good{background:var(--green-s);border-color:var(--green);box-shadow:0 4px 0 var(--green)}
.choice.bad{background:var(--red-s);border-color:var(--red);box-shadow:0 4px 0 var(--red);animation:shake .3s}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.typebox{background:var(--term);border-radius:18px;overflow:hidden}
.typebox pre{margin:0;padding:16px 18px;color:var(--term-ink);font:15px/1.6 var(--mono);white-space:pre-wrap;min-height:92px}
.typebox pre .c{color:var(--term-dim)}
.typebox pre .p{color:var(--green)}
.typebox form{display:flex;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid oklch(0.32 0.02 265)}
.typebox input{flex:1;min-width:0;background:transparent;border:0;outline:none;color:#fff;font:17px var(--mono)}
.typebox input::placeholder{color:var(--term-dim)}
.typebox form .p{color:var(--green);font:700 17px var(--mono)}
.feedback{margin-top:16px;border-radius:18px;padding:16px 18px;display:none;align-items:center;gap:14px}
.feedback.ok{display:flex;background:var(--green-s);color:var(--green-d)}
.feedback.ko{display:flex;background:var(--red-s);color:var(--red-d)}
.feedback b{display:block;font-size:19px}
.feedback p{color:var(--ink);font-size:15px;margin-top:2px}
.feedback .btn{margin-left:auto;flex:none}
.side-g{display:flex;flex-direction:column;gap:14px}
.end{text-align:center;padding:40px 20px}
.end .bigstars{display:flex;justify-content:center;gap:10px;margin:14px 0}
.end .bigstars svg{width:56px;height:56px;color:var(--gold)}
.end .bigstars svg.off{color:var(--line)}

/* Cartes-mots */
.deck{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:16px}
.flip{perspective:900px;height:190px;border:0;background:none;padding:0;text-align:left}
.flip-in{position:relative;width:100%;height:100%;transition:transform .45s var(--ease);transform-style:preserve-3d}
.flip.on .flip-in{transform:rotateY(180deg)}
.face{position:absolute;inset:0;backface-visibility:hidden;border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:6px}
.front{background:var(--tile);border:2px solid var(--line);box-shadow:0 4px 0 var(--line)}
.front b{font:800 22px var(--mono);letter-spacing:-0.01em}
.front .pr{color:var(--orange-d);font-weight:800}
.front .hint2{margin-top:auto;font-size:13px;color:var(--muted);font-weight:700}
.back{background:var(--violet);color:#fff;transform:rotateY(180deg);box-shadow:0 4px 0 var(--violet-d)}
.back b{font-size:21px;font-weight:800}
.back p{font-size:14.5px;opacity:.95}
.say-btn{position:absolute;top:12px;right:12px;width:38px;height:38px;border-radius:11px;border:0;background:var(--orange-s);color:var(--orange-d);display:grid;place-items:center}
.say-btn svg{width:20px;height:20px}
.deck-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.deck-tools input{flex:1;min-width:220px;height:50px;border:2px solid var(--line);border-radius:14px;background:var(--tile);padding:0 16px;font:600 16px var(--sans);color:var(--ink)}

/* Parcours */
.road{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(210px,1fr);gap:0;overflow-x:auto;padding:10px 2px 16px}
.stop{position:relative;padding:0 10px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
.stop::before{content:"";position:absolute;top:34px;left:0;right:0;height:8px;background:var(--line);z-index:0}
.stop:first-child::before{left:50%}
.stop:last-child::before{right:50%}
.stop.done::before,.stop.cur::before{background:linear-gradient(90deg,var(--green) 50%,var(--line) 50%)}
.stop.done::before{background:var(--green)}
.node{position:relative;z-index:1;width:76px;height:76px;border-radius:50%;display:grid;place-items:center;font:800 26px var(--mono);background:var(--tile);border:4px solid var(--line);color:var(--muted)}
.stop.cur .node{background:var(--orange);border-color:var(--orange-d);color:#fff;box-shadow:0 0 0 8px var(--orange-s)}
.stop.done .node{background:var(--green);border-color:var(--green-d);color:#fff}
.stop h3{font-size:17px;font-weight:800}
.stop .when{font-size:12.5px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.week0{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.sess{display:flex;flex-direction:column;gap:8px;min-height:160px}
.sess .n{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font:800 18px var(--mono);background:var(--bg)}
.sess.cur{border-color:var(--orange);box-shadow:0 4px 0 var(--orange)}
.sess.cur .n{background:var(--orange);color:#fff}
.sess .btn{margin-top:auto}

/* Gain de points */
.pop{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%) scale(.95);font:800 44px var(--sans);color:var(--gold-d);text-shadow:0 3px 0 #fff;opacity:0;pointer-events:none;z-index:40}
.pop.show{animation:pop 1s var(--ease)}
@keyframes pop{0%{opacity:0;transform:translate(-50%,-30%) scale(.95)}25%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-90%) scale(1)}}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,8px);background:var(--ink);color:#fff;padding:11px 18px;border-radius:13px;font-weight:700;font-size:14.5px;opacity:0;pointer-events:none;transition:opacity .18s,transform .2s var(--ease);z-index:40}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){.screen.on,.pop.show,.choice.bad{animation:none}.flip-in{transition:none}}

/* Écrans moyens et téléphone */
@media (max-width:1180px){
  .home{grid-template-columns:1fr 1fr}
  .home .streak{grid-column:span 2}
  .gridf{grid-template-columns:1fr 1fr}
  .week0{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:820px){
  .top{padding:10px 14px;gap:10px;backdrop-filter:none;background:var(--tile)}
  .tabs{position:fixed;left:0;right:0;bottom:0;justify-content:space-around;background:var(--tile);border-top:2px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:30}
  .tab{flex-direction:column;gap:2px;font-size:11.5px;padding:6px 4px;flex:1}
  .lvl{min-width:0}
  .lvl-txt{display:none}
  .logo span{display:none}
  main{padding:16px 14px 110px}
  .home,.trio,.fiche,.game,.gridf{grid-template-columns:1fr}
  .home .streak{grid-column:auto}
  .gridf .span2{grid-column:auto}
  .hero{position:static}
  .choices{grid-template-columns:1fr}
  .week0{grid-template-columns:repeat(5,minmax(160px,1fr));overflow-x:auto}
  .world-head{flex-wrap:wrap}
  .world-pick{margin-left:0}
  .world-head .xpbar{width:100%}
  .badges{grid-template-columns:repeat(5,minmax(0,1fr))}
  .medal{width:46px;height:46px}
}

/* Ajouts de l'outil (au-delà de la maquette) */
.guide-link{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;color:var(--muted);text-decoration:none;padding:8px 12px;border-radius:12px}
.guide-link:hover{background:var(--bg);color:var(--ink)}
.guide-link svg{width:18px;height:18px}
.qdel{border:0;background:none;color:var(--muted);width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none}
.qdel:hover{background:var(--red-s);color:var(--red-d)}
.qdel svg{width:16px;height:16px}
.quand{font-size:15px;color:var(--muted)}
.sess.locked{opacity:.6}
.sess .bar2{height:8px;border-radius:99px;background:var(--bg);overflow:hidden}
.sess .bar2 i{display:block;height:100%;background:var(--green)}
.mission .row2{display:flex;gap:10px;flex-wrap:wrap;align-self:flex-start}
.mission .btn.ghostw{background:oklch(1 0 0 / .18);color:#fff;box-shadow:0 4px 0 var(--green-d)}
.hello{font-weight:700;color:oklch(1 0 0 / .9)}
@media (max-width:820px){.guide-link span{display:none}}
.guide-link[hidden]{display:none}
