@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/outfit-latin-400-normal-BGsTXAXT.woff2)format("woff2"),url(/assets/outfit-latin-400-normal-DMwTpYkH.woff)format("woff")}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/outfit-latin-500-normal-DKnIMDSk.woff2)format("woff2"),url(/assets/outfit-latin-500-normal-ClnHRwRh.woff)format("woff")}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/outfit-latin-600-normal-B7SfZ07L.woff2)format("woff2"),url(/assets/outfit-latin-600-normal-BEfTtDA7.woff)format("woff")}@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/outfit-latin-700-normal-Cu9v6i1X.woff2)format("woff2"),url(/assets/outfit-latin-700-normal-D4itBLBr.woff)format("woff")}:root{--bg:#141726;--ink:#f4f6fb;--muted:#f4f6fba8;--faint:#f4f6fb6b;--line:#ffffff1a;--accent:#c9d97a;--accent-ink:#1a220c;--heart:#ff4d6a;--card:#101220c7;--safe-top:env(safe-area-inset-top,0px);--safe-bot:env(safe-area-inset-bottom,0px);color:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Outfit,system-ui,sans-serif}*{box-sizing:border-box}html,body{background:#0c0e16;height:100%;margin:0;overflow:hidden}button,a{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}button{touch-action:manipulation;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#app{-webkit-user-select:none;user-select:none;background:radial-gradient(90% 42% at 50% -8%,#7e92ff2e,#0000 60%),radial-gradient(70% 36% at 100% 100%,#ff4d6a14,#0000 55%),linear-gradient(#1c2238 0%,#141726 48%,#10131f 100%);width:min(100%,480px);height:100dvh;margin:0 auto;position:relative;overflow:hidden}.screen{flex-direction:column;display:flex;position:absolute;inset:0}.screen[hidden]{display:none}.home{padding:calc(18px + var(--safe-top)) 22px calc(22px + var(--safe-bot));overflow:auto}.top-row{justify-content:flex-end;display:flex}.brand{margin-top:8px}.mark{width:42px;height:42px;display:inline-flex}h1{letter-spacing:-.055em;margin:12px 0 0;font-size:52px;font-weight:700;line-height:.9}.tagline{max-width:18em;color:var(--muted);margin:12px 0 0;font-size:16.5px;font-weight:500;line-height:1.35}.hero{width:100%;height:auto;margin:8px 0 4px;display:block}.primary{background:var(--accent);height:56px;color:var(--accent-ink);letter-spacing:-.02em;border:0;border-radius:999px;font-size:18px;font-weight:700;box-shadow:0 10px 28px #dff56a2e}.primary:active{transform:scale(.985)}.primary:disabled{opacity:.45}.howto{gap:8px;margin:16px 0 0;padding:0;list-style:none;display:grid}.howto li{color:var(--muted);grid-template-columns:28px 1fr;align-items:center;gap:10px;font-size:14px;line-height:1.3;display:grid}.swatch{background:#3ee0a0;border-radius:99px;width:22px;height:8px;position:relative}.swatch:after{content:"";border-top:8px solid #0000;border-bottom:8px solid #0000;border-left:8px solid #3ee0a0;position:absolute;top:-4px;right:-3px}.glyph{place-items:center;width:22px;height:22px;display:grid}.glyph svg{width:22px;height:22px}.glyph.life svg{fill:var(--heart)}.level-head{justify-content:space-between;align-items:baseline;margin:18px 0 10px;display:flex}.level-head h2{letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0;font-size:13px;font-weight:600}.level-head p{color:var(--muted);margin:0;font-size:13px}.levels{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.chapter{letter-spacing:.14em;text-transform:uppercase;color:var(--faint);grid-column:1/-1;margin:16px 0 0;font-size:12px;font-weight:600}.chapter:first-child{margin-top:0}.level{aspect-ratio:1;border:1px solid var(--line);color:var(--ink);letter-spacing:-.03em;background:#ffffff0a;border-radius:18px;font-size:16px;font-weight:600;position:relative}.level.current{border-color:#dff56ad9;box-shadow:inset 0 0 0 1px #dff56a59}.level.cleared{background:#dff56a1a}.level.cleared:after{content:"";border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);width:8px;height:5px;position:absolute;bottom:7px;right:7px;transform:rotate(-45deg)}.level.locked{opacity:.38}.level:active:not(.locked){transform:scale(.96)}.level.nudge{animation:.28s nudge}.fine{text-align:center;color:var(--faint);letter-spacing:.04em;margin:16px 0 0;font-size:12px}.play{min-height:0}.hud{padding:calc(8px + var(--safe-top)) 14px 6px;grid-template-columns:48px 1fr 48px;align-items:center;gap:8px;display:grid}.level-label{text-align:center;min-width:0}.level-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin:0;font-size:11px;font-weight:600}.level-name{letter-spacing:-.03em;white-space:nowrap;text-overflow:ellipsis;margin:1px 0 0;font-size:16px;font-weight:600;overflow:hidden}.hearts{justify-content:center;gap:4px;margin-top:4px;display:flex}.heart{place-items:center;width:22px;height:22px;display:grid}.heart svg{width:22px;height:22px;fill:var(--heart)}.heart.lost svg{fill:#0000;stroke:#ff4d6a8c;stroke-width:1.6px}.heart.pop{animation:.32s pop}.stage{flex:1;min-height:0;position:relative}canvas{touch-action:none;width:100%;height:100%;display:block}.dock{padding:4px 14px calc(10px + var(--safe-bot));gap:8px;display:grid}.coach{text-align:center;min-height:1.2em;color:var(--ink);letter-spacing:-.01em;margin:0;font-size:14px;font-weight:500}.coach:empty{min-height:0}.tools{justify-content:space-between;align-items:center;gap:8px;display:flex}.cluster{gap:8px;display:flex}.icon-btn,.zoom-readout{border:1px solid var(--line);height:48px;color:var(--ink);background:#ffffff0b;border-radius:16px;place-items:center;display:grid}.icon-btn{width:48px;padding:0}.icon-btn svg{width:22px;height:22px;display:block}.mark svg{width:42px;height:42px;display:block}.icon-btn:active,.zoom-readout:active{transform:scale(.96)}.icon-btn:disabled{opacity:.32}.icon-btn.hint-on{color:var(--accent);border-color:#dff56ab3}.hold-hint{text-align:center;color:var(--faint);margin:0;font-size:12px}.zoom-readout{font-variant-numeric:tabular-nums;min-width:64px;padding:0 10px;font-size:14px;font-weight:600}.modal,.sheet,.rotate{z-index:5;position:absolute;inset:0}.modal{background:#0608106b;justify-content:center;align-items:center;padding:24px;display:flex}.modal[hidden],.sheet[hidden],.rotate[hidden]{display:none}.card{background:var(--card);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);text-align:center;border:1px solid #ffffff1a;border-radius:28px;width:min(100%,340px);padding:26px 20px 18px;box-shadow:0 24px 70px #00000061}.card h3{letter-spacing:-.045em;margin:0;font-size:32px}.card p{color:var(--muted);margin:8px 0 18px;font-size:15px;line-height:1.4}.card .primary{width:100%}.ghost{border:1px solid var(--line);background:0 0;border-radius:999px;width:100%;height:46px;margin-top:8px;font-weight:600}.texty{width:100%;height:40px;color:var(--faint);background:0 0;border:0;margin-top:4px;font-weight:600}.sheet{z-index:6;background:#06081080;align-items:flex-end;display:flex}.sheet-card{width:100%;padding:12px 18px calc(18px + var(--safe-bot));border-top:1px solid var(--line);background:#1b2136;border-radius:28px 28px 0 0}.handle{background:#ffffff2e;border-radius:99px;width:42px;height:4px;margin:4px auto 14px}.sheet-card h3{letter-spacing:-.03em;margin:0 0 12px;font-size:22px}.switch{border:1px solid var(--line);background:#ffffff08;border-radius:16px;justify-content:space-between;align-items:center;width:100%;height:58px;margin-bottom:8px;padding:0 14px;font-size:16px;font-weight:600;display:flex}.knob{background:#ffffff1f;border-radius:99px;flex:none;width:46px;height:28px;position:relative}.knob:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .18s;position:absolute;top:3px;left:3px}.switch[aria-checked=true] .knob{background:var(--accent)}.switch[aria-checked=true] .knob:after{background:var(--accent-ink);transform:translate(18px)}.rotate{z-index:8;text-align:center;background:#141726;justify-content:center;align-items:center;padding:24px;display:none}.rotate strong{letter-spacing:-.03em;font-size:22px;display:block}.rotate span{color:var(--muted)}@media (orientation:landscape) and (height<=520px){.rotate{display:flex}}@keyframes pop{0%{transform:scale(1)}35%{transform:scale(1.28)}to{transform:scale(1)}}@keyframes nudge{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
