@font-face{font-family:Fredoka;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/fredoka-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Fredoka;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/fredoka-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:Fredoka;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/fredoka-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:Outfit;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/outfit-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/outfit-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:Outfit;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/outfit-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:Outfit;font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/outfit-latin-800-normal.woff2) format('woff2')}
@font-face{font-family:Outfit;font-style:normal;font-weight:900;font-display:swap;src:url(../fonts/outfit-latin-900-normal.woff2) format('woff2')}
:root{--line:#ffffff2a;--muted:#cfc6e6;--gold:#ffd166;--mint:#6ff0c8;--pink:#ff8fb8}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{-webkit-touch-callout:none;overscroll-behavior:none;margin:0;height:100%;overflow:hidden;background:#140e2b;color:#fff;font-family:Outfit,system-ui,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
#ui{position:fixed;inset:0;pointer-events:none}
.hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left));gap:8px;transition:opacity .3s}
.hud.off{opacity:0}
.chip{display:inline-flex;align-items:center;gap:12px;background:#120c28c7;border:1px solid var(--line);border-radius:16px;padding:7px 14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 30px #0004}
.lvl small{display:block;font-size:9px;letter-spacing:2px;color:var(--muted);font-weight:800}
.lvl b{font-family:Fredoka;font-size:19px;letter-spacing:.3px}
.dots{display:flex;gap:5px}.dots i{width:9px;height:9px;border-radius:50%;background:#ffffff26;display:block}
.dots i.on{background:var(--mint);box-shadow:0 0 8px var(--mint)}.dots i.cur{background:var(--gold);box-shadow:0 0 10px var(--gold);animation:pulse 1.2s infinite}
@keyframes pulse{50%{transform:scale(1.35)}}
.r{display:flex;flex:none;gap:7px;align-items:center}.r .btn{flex:none}#bMenu{position:relative;z-index:2}
.btn{pointer-events:auto;cursor:pointer;border:1px solid var(--line);background:#120c28c7;color:#fff;border-radius:14px;height:42px;min-width:42px;padding:0 12px;font:800 15px Outfit,system-ui;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:transform .15s,background .2s}
.btn:hover{background:#2a2050d0}.btn:active{transform:scale(.93)}
.stars b{color:var(--gold)}
#hint{position:absolute;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translateX(-50%);background:#120c28d9;border:1px solid var(--line);padding:10px 20px;border-radius:99px;font-weight:700;font-size:14px;white-space:nowrap;backdrop-filter:blur(10px);transition:opacity .3s;max-width:94vw;overflow:hidden;text-overflow:ellipsis}
#hint b{color:var(--gold)}#hint.off{opacity:0}
#banner{position:absolute;top:19%;left:50%;transform:translate(-50%,-24px) scale(.92);text-align:center;opacity:0;transition:.5s cubic-bezier(.2,.9,.3,1.25);width:92vw}
#banner.show{opacity:1;transform:translate(-50%,0) scale(1)}
#banner .s{font-weight:800;letter-spacing:3px;font-size:12px;color:var(--gold);text-shadow:0 2px 10px #0008}
#banner .t{font-family:Fredoka;font-size:clamp(30px,6.5vw,58px);font-weight:700;text-shadow:0 6px 30px #000a;letter-spacing:-1px;line-height:1.05;margin-top:4px}
#banner .n{margin-top:12px;display:inline-block;background:#160f30e6;border:1px solid #ffd16677;color:#ffeab8;padding:9px 16px;border-radius:14px;font-weight:700;font-size:14px;max-width:90vw}
#toast{position:absolute;top:30%;left:50%;transform:translate(-50%,10px) scale(.8);text-align:center;opacity:0;transition:.3s cubic-bezier(.2,.9,.3,1.4);pointer-events:none}
#toast.show{opacity:1;transform:translate(-50%,0) scale(1)}
#toast .t{font-family:Fredoka;font-weight:700;font-size:clamp(34px,8vw,64px);letter-spacing:-1px;text-shadow:0 5px 0 #0005,0 10px 40px #000a;-webkit-text-stroke:1px #0002}
#toast .s{font-weight:800;font-size:15px;color:#ffe6a6;margin-top:6px;text-shadow:0 2px 12px #000c}
#achpop{position:absolute;top:max(70px,calc(env(safe-area-inset-top) + 64px));right:14px;background:linear-gradient(120deg,#3b2a70,#271b52);border:1px solid #ffd16688;border-radius:16px;padding:10px 14px;display:flex;gap:10px;align-items:center;transform:translateX(130%);transition:.45s cubic-bezier(.2,.9,.3,1.2);box-shadow:0 14px 40px #0006;max-width:80vw}
#achpop.show{transform:none}#achpop .i{font-size:28px}#achpop small{display:block;color:var(--gold);font-weight:800;font-size:10px;letter-spacing:2px}#achpop b{font-size:14px}
.ov{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:18px;background:#0b0720a8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);pointer-events:auto;opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s}
.ov.on{opacity:1;visibility:visible;transition:opacity .3s}
.card{position:relative;width:min(520px,100%);max-height:calc(100vh - 36px);overflow:auto;padding:30px 26px 26px;text-align:center;border:1px solid #ffffff33;border-radius:30px;background:linear-gradient(155deg,#3a2e66,#1e173f 72%);box-shadow:0 30px 100px #05031acc,inset 0 2px #ffffff22;transform:translateY(16px) scale(.97);transition:transform .35s cubic-bezier(.2,.9,.3,1.2);scrollbar-width:thin}
.ov.on .card{transform:none}
.card h1{font-family:Fredoka;font-size:clamp(40px,9vw,64px);letter-spacing:-2px;line-height:.95;margin:4px 0 12px}
.card h1 em{font-style:normal;color:var(--gold)}
.card h2{font-family:Fredoka;font-size:30px;letter-spacing:-.5px;margin:4px 0 14px}
.card p{color:#d6cdea;line-height:1.5;margin:0 auto 18px;max-width:400px;font-size:15px}
.tag{font-size:11px;letter-spacing:3px;color:#c8bde6;font-weight:800}
.big{cursor:pointer;border:none;border-radius:18px;padding:16px 28px;background:linear-gradient(115deg,#ffd27a,#ff8fb0);font:900 17px Outfit,system-ui;color:#3a1d40;box-shadow:0 7px 0 #b8607f,0 14px 30px #0006;transition:transform .12s,filter .12s;margin:4px}
.big:hover{filter:brightness(1.06)}.big:active{transform:translateY(5px);box-shadow:0 2px 0 #b8607f}
.big.alt{background:#ffffff14;color:#fff;border:1px solid #ffffff30;box-shadow:0 6px 0 #0005}
.row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px}
.sm{cursor:pointer;border:1px solid #ffffff2c;background:#ffffff10;color:#fff;border-radius:14px;padding:11px 14px;font:800 14px Outfit,system-ui;transition:background .2s}
.sm:hover{background:#ffffff22}.sm.on{background:#6ff0c833;border-color:#6ff0c899}
.close{position:absolute;top:14px;right:14px;width:38px;height:38px;border-radius:12px;border:1px solid #ffffff2c;background:#ffffff10;color:#fff;font-size:18px;cursor:pointer}
.starsbig{font-size:54px;letter-spacing:6px;margin:4px 0 6px;height:64px}
.starsbig span{display:inline-block;color:#ffffff22;transform:scale(.4);transition:.4s cubic-bezier(.2,.9,.3,1.6)}
.starsbig span.on{color:var(--gold);transform:scale(1);text-shadow:0 0 24px #ffd16699}
.pts{font-family:Fredoka;font-size:26px;color:#ffe3a0;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(102px,1fr));gap:10px;text-align:left;margin-top:6px}
.set{border:1px solid #ffffff22;border-radius:18px;padding:10px;background:#ffffff0c;cursor:pointer;transition:.15s;min-height:88px}
.set:hover{background:#ffffff1a;transform:translateY(-2px)}
.set.lock{opacity:.38;cursor:default;transform:none}.set.cur{border-color:#ffd166aa;background:#ffd16614}
.set b{font-family:Fredoka;font-size:20px;display:block}.set small{font-size:10px;color:#cfc6e6;font-weight:700;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set .st{font-size:11px;color:var(--gold);margin-top:6px;letter-spacing:1px}
.pedia{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px;margin-top:6px}
.pd{border:1px solid #ffffff22;border-radius:18px;padding:6px 6px 8px;background:#ffffff0c;cursor:pointer;font-size:11px;font-weight:700;color:#e9e2f8;transition:.15s}
.pd:hover{background:#ffffff1c}.pd.lock{opacity:.45;cursor:default}.pd canvas{position:static;width:80px;height:92px;display:block;margin:0 auto}
.pd.eq{border-color:#6ff0c8;box-shadow:0 0 0 2px #6ff0c844}
.recipe{text-align:left;background:#ffffff0d;border:1px solid #ffffff1c;border-radius:18px;padding:14px 16px;margin:10px 0;font-size:14px;line-height:1.5;color:#ece6f9}
.recipe ul{margin:6px 0 8px;padding-left:20px}.recipe .f{margin-top:10px;padding-top:10px;border-top:1px dashed #ffffff26;color:#ffe9b5}
.ach{display:flex;gap:12px;align-items:center;text-align:left;padding:10px 12px;border-radius:16px;background:#ffffff0c;border:1px solid #ffffff1a;margin-bottom:8px}
.ach .i{font-size:26px;width:36px;text-align:center}.ach.lock{opacity:.4;filter:grayscale(1)}.ach small{display:block;color:#cfc6e6}
#shakeC{position:static;width:150px;height:170px;display:block;margin:0 auto}
.muted{font-size:12px;color:#b9afd2;margin-top:16px}
.highscore{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px auto 4px;padding:10px 15px;width:max-content;max-width:100%;border:1px solid #ffd16655;border-radius:16px;background:#ffd16610;color:#fff0bd;box-shadow:inset 0 1px #ffffff13}
.highscore .cup{font-size:24px}.highscore span{display:block;text-align:left;font-size:9px;font-weight:800;letter-spacing:2px;color:#cfc6e6}.highscore b{display:block;font-family:Fredoka;font-size:20px;color:var(--gold);line-height:1.05}
.playername{display:flex;align-items:center;justify-content:center;gap:9px;margin:8px auto 10px;color:#cfc6e6;font-size:9px;font-weight:800;letter-spacing:2px}
.playername input{width:150px;min-width:0;border:1px solid #ffffff30;border-radius:12px;background:#100a25aa;color:#fff;padding:9px 11px;outline:none;font:700 14px Outfit,system-ui;text-align:center;letter-spacing:.2px;user-select:text;-webkit-user-select:text;touch-action:auto}
.playername input:focus{border-color:#ffd166aa;box-shadow:0 0 0 3px #ffd16618}.playername input::placeholder{color:#8f85a8}
.combo{color:#ffd9a0;font-family:Fredoka;font-size:17px;font-weight:700;margin-top:8px;padding:5px 12px;transition:transform .25s cubic-bezier(.2,.9,.3,1.6),opacity .25s;transform-origin:left center}
.combo.off{opacity:0;transform:scale(.6);max-height:0;padding-top:0;padding-bottom:0;margin-top:0;border-width:0;overflow:hidden}.combo small{font:800 10px Outfit,system-ui;color:#cfc6e6;letter-spacing:1px}
.combo.pop{animation:cpop .4s}@keyframes cpop{40%{transform:scale(1.25)}}
.l{display:flex;flex:1;min-width:0;flex-direction:column;align-items:flex-start}.lvl{max-width:100%;overflow:hidden}.lvl>div:first-child{min-width:0;overflow:hidden}.lvl small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opts{display:flex;flex-direction:column;gap:8px;text-align:left;margin-top:4px}
.opt{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;border-radius:16px;background:#ffffff0c;border:1px solid #ffffff1a;font-weight:700;font-size:14px}
.opt input[type=range]{width:46%;accent-color:#ffd166;touch-action:auto;cursor:pointer}
.tog{position:relative;width:52px;height:30px;border-radius:99px;border:1px solid #ffffff33;background:#ffffff1a;cursor:pointer;transition:background .2s;flex:none}
.tog::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s cubic-bezier(.2,.9,.3,1.3);box-shadow:0 2px 6px #0005}
.tog.on{background:#6ff0c8aa;border-color:#6ff0c8}.tog.on::after{transform:translateX(22px)}
.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 14px}
.stat{padding:10px 6px;border-radius:14px;background:#ffffff0c;border:1px solid #ffffff1a}.stat b{display:block;font-family:Fredoka;font-size:20px;color:var(--gold)}.stat small{font-size:10px;font-weight:800;letter-spacing:1px;color:#cfc6e6}
.tabs{display:flex;justify-content:center;gap:8px;margin-bottom:12px}
.brow{display:flex;align-items:center;gap:12px;padding:9px 14px;border-radius:14px;background:#ffffff0a;border:1px solid #ffffff14;margin-bottom:6px;text-align:left;font-weight:700}
.brow .rk{width:30px;text-align:center;font-family:Fredoka;font-size:17px;color:#cfc6e6}.brow .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brow .sc{font-family:Fredoka;color:var(--gold)}
.brow.me{background:#ffd16622;border-color:#ffd16688}.brow.gap{background:none;border:none;justify-content:center;color:#8f85a8;padding:2px}
#codeBox{width:100%;height:110px;resize:none;border:1px solid #ffffff30;border-radius:14px;background:#100a25cc;color:#fff;padding:10px;font:600 12px ui-monospace,Menlo,Consolas,monospace;word-break:break-all;user-select:text;-webkit-user-select:text;touch-action:auto;outline:none}
.card.doc{text-align:left;width:min(640px,100%)}.card.doc h2{text-align:center}.card.doc h3{font-family:Fredoka;margin:18px 0 6px;font-size:18px}.card.doc p,.card.doc li{font-size:14px;line-height:1.55;color:#ddd4f0;max-width:none;margin:0 0 8px}.card.doc ul{padding-left:20px;margin:0 0 8px}.card.doc a{color:var(--gold)}
.empty{padding:22px 10px;color:#cfc6e6;font-size:14px;line-height:1.5}
.big.daily{display:inline-flex;flex-direction:column;align-items:center;line-height:1.1}.big.daily small{font:700 11px Outfit,system-ui;opacity:.8;margin-top:3px;letter-spacing:.5px}
.howto{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 16px}.howto div{padding:12px 8px;border-radius:16px;background:#ffffff0c;border:1px solid #ffffff1a;font-size:13px;line-height:1.35;color:#e9e2f8}.howto i{display:block;font-style:normal;font-size:28px;margin-bottom:6px}
#pauseTag{position:absolute;inset:0;display:none}
@media (prefers-reduced-motion:reduce){.card,.ov,#banner,#toast,#achpop{transition:none!important}}
@media(max-width:600px){.statgrid{grid-template-columns:repeat(2,1fr)}.howto{grid-template-columns:1fr}.howto div{display:flex;gap:10px;align-items:center;text-align:left}.howto i{margin:0;font-size:24px}.btn{height:38px;min-width:38px;padding:0 10px;font-size:14px;border-radius:12px}.chip{padding:6px 11px;gap:9px}.lvl b{font-size:16px}#hint{font-size:12.5px;padding:9px 15px}.card{padding:26px 18px 20px}.hidem{display:none}}
@media(max-width:340px){.hud{gap:5px}.hud .r{gap:5px}#bPeek{display:none}.lvl{padding-left:8px;padding-right:8px;gap:6px}.lvl small{max-width:62px}.dots{gap:3px}.dots i{width:7px;height:7px}}
@media(max-width:230px){#bSnd{display:none}.lvl small{display:none}}

/* ---- Boss ---- */
#banner.boss{top:31%}
#banner.boss .s{color:#ff6a7a;letter-spacing:4px;text-shadow:0 0 18px #ff2a4a}
#banner.boss .t{color:#fff;text-shadow:0 0 30px #ff2a4a,0 6px 30px #000a}
#banner.boss .n{border-color:#ff5a6a99;background:#2a0812e6;color:#ffd6dc}
.set.boss{background:linear-gradient(135deg,#4a0f1f,#24081a);border-color:#ff5a6a66}
.set.boss.lock{background:#ffffff0c;border-color:#ffffff22}
.set.boss.cur{box-shadow:0 0 0 2px #ff5a6a88,0 0 24px #ff2a4a55;animation:bossPulse 1.6s infinite}
@keyframes bossPulse{50%{box-shadow:0 0 0 2px #ff5a6a,0 0 34px #ff2a4a99}}
/* ---- Message « le jeu a été repensé » ---- */
#ovReboot .card{border-color:#ff5a6a77;background:linear-gradient(160deg,#3a1030,#170a26 70%)}
#rebootC{display:block;margin:0 auto 6px;width:240px;height:220px;position:static}
#ovReboot h2{font-size:28px;margin:6px 0 10px}
#ovReboot .mwa{font-family:Fredoka;font-weight:700;font-size:22px;color:#ff7a8a;letter-spacing:1px;margin-bottom:6px;min-height:28px}
