@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-latin-600-normal-Br8yIETf.woff2)format("woff2"),url(/assets/nunito-latin-600-normal-Cd0eNu1l.woff)format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-800-normal-Dz8SOQK_.woff2)format("woff2"),url(/assets/nunito-latin-800-normal-D-J0wlBY.woff)format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2)format("woff2"),url(/assets/nunito-latin-ext-600-normal-BKUpuB78.woff)format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2)format("woff2"),url(/assets/nunito-latin-ext-800-normal-CDcxIxx8.woff)format("woff")}html,body,canvas,#root,.board-root{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;padding:0;font-weight:600;overflow:hidden}#root{position:fixed;inset:0}#overlay-root{z-index:10;pointer-events:none;position:fixed;inset:0}#overlay-root>*{pointer-events:auto}#overlay-root>.toast{pointer-events:none}.board-root{z-index:1}.board-root canvas{display:block}*{box-sizing:border-box}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0}.tnum{font-variant-numeric:tabular-nums}.screen{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));background:var(--bg);z-index:5;flex-direction:column;display:flex;position:absolute;inset:0}.screen.busy{pointer-events:none}.scroll{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding-bottom:16px;overflow:hidden auto}.topbar{align-items:center;gap:8px;min-height:56px;padding:6px 0;display:flex}.topbar .title{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:20px;font-weight:800;overflow:hidden}.topbar .title small{color:var(--textMuted);font-size:13px;font-weight:600;display:block}.h1{margin:8px 0 4px;font-size:26px;font-weight:800}.muted{color:var(--textMuted)}.btn{border-radius:var(--r-sm);background:var(--surface2);min-width:44px;min-height:44px;color:var(--text);transition:transform var(--d-release) var(--e-back), filter var(--d-release) var(--e-out);justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:16px;font-weight:800;display:inline-flex;position:relative}.btn[data-pressed=true]{filter:brightness(.88);transition:transform var(--d-press) var(--e-out), filter var(--d-press) var(--e-out);transform:scale(.96)}.btn.primary{background:var(--accent);color:#1a1408}.btn.ghost{background:0 0}.btn.icon{width:44px;padding:0}.btn.block{width:100%;min-height:52px}.btn[disabled]{opacity:.4}.btn img{width:24px;height:24px}.btn.danger{background:var(--danger);color:#1a0808}.avatar{background:var(--surface2);border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:relative}.avatar .face{width:32px;height:32px;animation:breathe var(--t-breathe) var(--e-inOut) infinite alternate}.avatar .face.blink{animation:blink .14s var(--e-out) 1}.avatar .badge{width:18px;height:18px;animation:pop var(--d-pop) var(--e-back);position:absolute;top:-4px;right:-2px}.avatar.happy .face{animation:hop .32s var(--e-back) 1}.avatar.surprised .face{animation:jolt .22s var(--e-out) 1}.avatar.sleep .face{opacity:.7;filter:saturate(.6)}@keyframes breathe{0%{transform:scale(1)}to{transform:scale(1.02)}}@keyframes blink{0%,to{transform:scaleY(1)}50%{transform:scaleY(.15)}}@keyframes hop{0%{transform:translateY(0)scale(1)}40%{transform:translateY(-6px)scale(1.08)}to{transform:translateY(0)scale(1)}}@keyframes jolt{0%,to{transform:translate(0)}33%{transform:translate(-3px)}66%{transform:translate(3px)}}@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes pulseOnce{0%{box-shadow:0 0 0 0 var(--accent);transform:scale(1)}50%{transform:scale(1.08);box-shadow:0 0 0 6px #0000}to{transform:scale(1)}}@keyframes starIn{0%{opacity:0;transform:translateY(-14px)scale(.4)}70%{opacity:1;transform:translateY(0)scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{box-shadow:0 0 0 0 var(--info)}50%{box-shadow:0 0 0 4px var(--info)}to{box-shadow:0 0 #0000}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.companion-grid{grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0;display:grid}.companion-opt{aspect-ratio:1;border-radius:var(--r-md);background:var(--surface);transition:transform var(--d-release) var(--e-back), border-color var(--d-press) var(--e-out);border:2px solid #0000;place-items:center;display:grid}.companion-opt img{width:56%;height:56%;animation:breathe var(--t-breathe) var(--e-inOut) infinite alternate}.companion-opt.selected{border-color:var(--accent);background:var(--surface2)}.companion-opt.selected img{animation:hop .32s var(--e-back) 1}.companion-opt[data-pressed=true]{transition:transform var(--d-press) var(--e-out);transform:scale(.94)}.cards{grid-template-columns:1fr;gap:12px;padding-top:8px;display:grid}.card{border-radius:var(--r-md);background:var(--surface);text-align:left;width:100%;min-height:84px;transition:transform var(--d-release) var(--e-back);align-items:center;gap:14px;padding:14px 16px;display:flex}.card[data-pressed=true]{transition:transform var(--d-press) var(--e-out);transform:scale(.96)}.card .icon{flex:none;width:48px;height:48px}.card .body{flex:1;min-width:0}.card .name{font-size:18px;font-weight:800}.card .tag{color:var(--textMuted);margin-top:2px;font-size:14px}.card .prog{text-align:right;color:var(--textMuted);white-space:nowrap;font-size:14px}.card .prog b{color:var(--text);font-weight:800}.banner{border-radius:var(--r-md);background:var(--surface2);animation:slideUp var(--d-screen) var(--e-out);align-items:center;gap:12px;margin:4px 0 8px;padding:12px 14px;display:flex}.banner .text{flex:1;font-size:14px}.banner .text b{margin-bottom:2px;font-size:16px;display:block}.tabs{grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 12px;display:grid}.tab{border-radius:var(--r-sm);background:var(--surface);min-height:48px;color:var(--textMuted);transition:transform var(--d-release) var(--e-back);font-weight:800;position:relative}.tab.active{background:var(--surface2);color:var(--text);box-shadow:inset 0 -3px 0 var(--accent)}.tab[data-pressed=true]{transition:transform var(--d-press) var(--e-out);transform:scale(.96)}.tab .reco{background:var(--accent);color:#1a1408;white-space:nowrap;border-radius:8px;padding:1px 6px;font-size:10px;position:absolute;top:-8px;left:50%;transform:translate(-50%)}.intro{color:var(--textMuted);margin:0 0 12px;font-size:14px}.levels{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.lvl{aspect-ratio:1;border-radius:var(--r-sm);background:var(--surface);min-height:48px;transition:transform var(--d-release) var(--e-back);flex-direction:column;justify-content:center;align-items:center;font-size:18px;font-weight:800;display:flex}.lvl.done{background:var(--surface2)}.lvl.locked{opacity:.35}.lvl .stars{gap:1px;height:12px;margin-top:2px;display:flex}.lvl .stars img{width:12px;height:12px}.lvl .stars img.off{opacity:.18;filter:grayscale()}.lvl.just-won .stars img:not(.off){animation:starIn .3s var(--e-back) both}.lvl.just-unlocked{animation:pulseOnce .6s var(--e-out) .3s 1}.lvl[data-pressed=true]{transition:transform var(--d-press) var(--e-out);transform:scale(.94)}.level .board-slot{flex:1;min-height:0;position:relative}.hud-bottom{align-items:center;gap:8px;padding:8px 0 10px;display:flex}.hud-bottom .counter{text-align:center;color:var(--textMuted);flex:1;font-size:15px;font-weight:800}.btn.chip{color:var(--textMuted);padding:0 10px;font-size:13px}.btn.chip.on{color:var(--bg);background:var(--success)}.btn.nudge{animation:shimmer .9s var(--e-inOut) 1}.msg{pointer-events:none;z-index:6;justify-content:center;display:flex;position:absolute;top:4px;left:0;right:0}.msg span{background:var(--surface2);color:var(--text);border-radius:var(--r-md);text-align:center;max-width:100%;animation:slideUp var(--d-screen) var(--e-out);padding:8px 14px;font-size:15px}.skip-row{justify-content:center;padding-bottom:4px;display:flex}.win{z-index:20;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));background:color-mix(in srgb, var(--bg) 88%, transparent);animation:fadeIn .12s var(--e-out);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.reveal{aspect-ratio:1;border-radius:var(--r-lg);perspective:600px;width:min(72vw,300px);position:relative;overflow:hidden}.reveal .art{place-items:center;display:grid;position:absolute;inset:0}.reveal .art .face{width:58%;height:58%}.reveal .art .food{width:18%;height:18%;position:absolute}.reveal .tiles{display:grid;position:absolute;inset:0}.reveal .tile{background:var(--surface2);border:1px solid var(--bg);backface-visibility:hidden;transition:transform .2s var(--e-out), opacity .2s var(--e-out);transform:rotateY(0)}.reveal.go .tile{opacity:0;transform:rotateY(180deg)}.reveal.final .tile{opacity:0;transition:none;transform:rotateY(180deg)}.win .wtitle{font-size:28px;font-weight:800}.win .wstars{gap:10px;height:44px;display:flex}.win .wstars img{opacity:0;width:44px;height:44px}.win .wstars img.on{animation:starIn .3s var(--e-back) both}.win .wstars img.dim{opacity:.18;filter:grayscale()}.win.final .wstars img.on{opacity:1;animation:none}.win .wstats{color:var(--textMuted);gap:24px;display:flex}.win .wstats b{color:var(--text);text-align:center;font-size:20px;display:block}.win .upnext{color:var(--accent);font-weight:800}.win .wbtns{opacity:0;pointer-events:none;width:100%;max-width:420px;transition:opacity .16s var(--e-out);gap:10px;display:flex}.win .wbtns.show{opacity:1;pointer-events:auto}.win .wbtns.flip{flex-direction:row-reverse}.win .wbtns .btn{flex:1}.list{flex-direction:column;gap:10px;margin-top:8px;display:flex}.row{border-radius:var(--r-md);background:var(--surface);align-items:center;gap:12px;min-height:56px;padding:8px 14px;display:flex}.row .label{flex:1;font-weight:800}.toggle{background:var(--surface2);width:56px;height:32px;transition:background var(--d-release) var(--e-out);border-radius:16px;position:relative}.toggle:after{content:"";background:var(--textMuted);width:26px;height:26px;transition:transform var(--d-release) var(--e-back), background var(--d-release) var(--e-out);border-radius:50%;position:absolute;top:3px;left:3px}.toggle.on{background:var(--success)}.toggle.on:after{background:var(--text);transform:translate(24px)}.seg{gap:6px;display:flex}.seg .btn.active{background:var(--accent);color:#1a1408}.credits p{color:var(--textMuted);line-height:1.5}.modal{z-index:40;animation:fadeIn var(--d-screen) var(--e-out);padding:0 max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sheet{background:var(--surface);border-radius:var(--r-lg);width:100%;max-width:480px;animation:slideUp var(--d-screen) var(--e-out);padding:16px}.sheet .actions{gap:10px;margin-top:12px;display:flex}.sheet .actions .btn{flex:1}.toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:60;background:var(--text);color:var(--bg);pointer-events:none;animation:slideUp var(--d-screen) var(--e-out);border-radius:20px;padding:10px 18px;font-weight:800;position:absolute;transform:translate(-50%)}.rotate{display:none}@media (orientation:landscape) and (max-height:520px){.rotate{z-index:100;background:var(--bg);justify-content:center;align-items:center;font-size:22px;font-weight:800;display:flex;position:fixed;inset:0}}@media (prefers-reduced-motion:reduce){.avatar .face,.companion-opt img{animation:none}}
