:root{--night:#070a18;--raised:#11152e;--raised-2:#1a1f45;--line:#f4f0e81f;--cream:#f4f0e8;--muted:#a3a6c4;--good:#7fd6a8;--bad:#ef7a64;--star:#f2c94c;--acc:#8cc6ec;--spring:cubic-bezier(.16, 1, .3, 1);color:var(--cream);background:var(--night);font-synthesis:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:Fredoka,Avenir Next,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{background:var(--night);overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--cream);outline-offset:3px}h1,h2,h3{margin:0;font-weight:600}p{margin:0}.note{color:var(--muted);font-size:.9rem}.row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.btn{border:1px solid var(--line);background:var(--raised-2);white-space:nowrap;min-height:48px;transition:transform .12s var(--spring), background .16s;border-radius:16px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:1.05rem;font-weight:500;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)scale(.98)}.btn:disabled{opacity:.4}.btn.primary{background:var(--acc);color:#0b0e22;border-color:#0000;font-weight:600}.btn.big{min-height:60px;padding:0 32px;font-size:1.3rem}.btn.danger{background:#5a2530;border-color:#8a3a44}.icon-btn{border:1px solid var(--line);background:var(--raised-2);border-radius:14px;place-items:center;width:44px;height:44px;font-size:1.3rem;line-height:1;display:grid}.icon-btn:disabled{opacity:.3}.chip{border:1px solid var(--line);background:var(--raised-2);border-radius:999px;padding:8px 14px}.chip.on{background:var(--acc);color:#0b0e22}.avatar{background:var(--raised-2);color:#0b0e22;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-weight:700;display:inline-grid}.avatar.big{width:72px;height:72px;font-size:2rem}.base{grid-template-rows:auto 1fr auto;max-width:1400px;height:100%;margin:0 auto;display:grid}.topbar{flex-wrap:wrap;align-items:center;gap:12px;padding:10px 16px;display:flex}.who{background:0 0;border:0;border-radius:12px;align-items:center;gap:10px;padding:4px;display:flex}.who-name{font-size:1.15rem;font-weight:600}.purse{gap:14px;font-size:1.1rem;font-weight:600;display:flex}.purse span{align-items:center;gap:5px;display:inline-flex}.nav{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.nav button{background:var(--raised);border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:.95rem}.stage{grid-template-columns:minmax(0,1fr) 380px;gap:14px;min-height:0;padding:0 16px;display:grid}.scene-wrap{border:1px solid var(--line);background:#060818;border-radius:24px;min-height:0;position:relative;overflow:hidden}.scene{width:100%;height:100%;display:block}.actions{flex-direction:column;gap:10px;min-height:0;padding-bottom:8px;display:flex;overflow-y:auto}.dock{padding:14px 16px calc(14px + env(safe-area-inset-bottom));grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.op-btn{text-align:left;border:1px solid color-mix(in oklab, var(--acc) 40%, transparent);background:color-mix(in oklab, var(--acc) 14%, var(--raised));min-height:84px;transition:transform .12s var(--spring);border-radius:22px;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;column-gap:12px;padding:10px 16px;display:grid;position:relative}.op-btn:active{transform:translateY(1px)scale(.98)}.op-btn .op-sign{color:var(--acc);text-align:center;grid-row:span 2;width:1ch;font-size:3rem;font-weight:600;line-height:1}.op-res{align-items:center;gap:6px;font-size:1.4rem;font-weight:600;display:inline-flex}.op-name{color:var(--muted);font-size:.95rem}.op-btn.locked{filter:grayscale();opacity:.45}.op-btn.hint{animation:1.6s ease-in-out infinite nudge}.op-btn .check{background:var(--good);color:#0b0e22;border-radius:50%;place-items:center;width:26px;height:26px;font-size:.9rem;font-weight:700;display:grid;position:absolute;top:8px;right:10px}@keyframes nudge{0%,to{box-shadow:0 0 0 0 color-mix(in oklab, var(--acc) 0%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklab, var(--acc) 35%, transparent)}}.chest{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#070a188c;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:8px 10px;display:flex;position:absolute;top:12px;right:12px}.chest svg{width:52px;height:42px}.chest.ready{border-color:var(--star);animation:1.2s ease-in-out infinite bounce}.chest.opened{opacity:.6}.chest:disabled{opacity:1}.chest.opened:disabled{opacity:.55}.locks{gap:4px;display:flex}.lock{border:1.5px solid var(--c);width:22px;height:22px;color:var(--c);border-radius:7px;place-items:center;font-size:.85rem;font-weight:700;display:grid}.lock.open{background:var(--c);color:#0b0e22}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.bliep-wrap{align-items:flex-start;gap:8px;max-width:min(460px,100% - 150px);display:flex;position:absolute;top:12px;left:12px}.bliep{flex:none;width:56px;height:64px;animation:3s ease-in-out infinite hover}.bubble{background:var(--cream);color:#151936;border-radius:4px 16px 16px;margin-top:18px;padding:10px 14px;font-size:1rem;line-height:1.3}.bang{background:var(--bad);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;margin-right:6px;font-size:.8rem;animation:1s ease-in-out infinite bounce;display:inline-grid}@keyframes hover{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.build-chip{white-space:nowrap;border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#070a1899;border-radius:999px;padding:6px 12px;font-size:.9rem;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.workshop{flex-direction:column;gap:10px;display:flex}.target{background:color-mix(in oklab, var(--acc) 8%, var(--raised));border:1px solid color-mix(in oklab, var(--acc) 25%, transparent);border-radius:18px;gap:8px;padding:12px 14px;display:grid}.target-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.target-num{color:var(--muted);font-variant-numeric:tabular-nums}.target-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.meter{background:#ffffff14;border-radius:999px;height:12px;overflow:hidden}.meter-fill{border-radius:inherit;height:100%;transition:width 90ms linear}.hold{border:1px solid color-mix(in oklab, var(--acc) 50%, transparent);background:color-mix(in oklab, var(--acc) 22%, var(--raised));touch-action:none;min-height:48px;transition:transform .12s var(--spring);border-radius:14px;flex:none;align-items:center;gap:6px;padding:0 16px;font-weight:600;display:inline-flex}.hold.held{background:var(--acc);color:#0b0e22;transform:scale(.95)}.hold:disabled{opacity:.35}.aim{align-items:center;gap:10px;display:flex}.aim-dot{border-radius:50%;flex:none;width:22px;height:22px}.find-card{background:var(--raised);border:1px solid var(--star);border-radius:18px;grid-template-columns:auto 1fr;align-items:center;gap:10px 12px;padding:14px;display:grid}.find-card .btn{grid-column:span 1}.find-gem{clip-path:polygon(50% 0,100% 40%,80% 100%,20% 100%,0 40%);width:36px;height:36px}.quality{color:var(--star);letter-spacing:2px}.launch-btn{--acc:var(--star);animation:1.6s ease-in-out infinite nudge}.modal-back{z-index:20;background:#03040cb3;place-items:center;padding:16px;animation:.18s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--raised);border:1px solid var(--line);width:min(460px,100%);animation:rise .26s var(--spring);border-radius:26px;padding:22px}.sheet{gap:14px;display:grid}.sheet-head{align-items:center;gap:16px;display:flex}.sheet-head .op-sign{color:var(--acc);font-size:3.6rem;font-weight:600;line-height:1}.sheet-stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.sheet-stats div{background:var(--raised-2);text-align:center;border-radius:14px;padding:10px;display:grid}.sheet-stats b{font-size:1.6rem}.sheet-stats small{color:var(--muted)}.crystals{flex-wrap:wrap;gap:8px;display:flex}.cargo-note{color:var(--star);align-items:center;gap:6px;font-size:.95rem;display:flex}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.play{max-width:560px;height:100%;padding:12px 16px calc(16px + env(safe-area-inset-bottom));grid-template-rows:auto auto 1fr auto auto;gap:10px;margin:0 auto;display:grid;position:relative}.play-top{align-items:center;gap:10px;display:flex}.tiers{flex:1;grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.tier{background:var(--raised);text-align:center;border-radius:10px;padding:4px 6px;line-height:1.15;display:grid}.tier-label{color:var(--muted);font-size:.75rem}.tier-count{font-variant-numeric:tabular-nums;font-weight:600}.tier-count small{color:var(--muted);margin-left:2px;font-size:.7rem;font-weight:500}.earned{font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;gap:6px;min-width:80px;font-size:1.5rem;display:flex;position:relative}.float{color:var(--acc);pointer-events:none;font-size:1.2rem;font-weight:700;animation:.9s ease-out forwards floatUp;position:absolute;top:100%;right:0}@keyframes floatUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}.timebar{background:var(--raised);border-radius:999px;place-items:center;height:16px;display:grid;position:relative;overflow:hidden}.timebar-fill{background:var(--acc);border-radius:inherit;position:absolute;inset:0 auto 0 0}.time-left{color:#0b0e22;mix-blend-mode:normal;text-shadow:0 0 4px #fff6;font-size:.75rem;font-weight:600;position:relative}.problem-area{text-align:center;place-content:center;gap:10px;display:grid}.problem{font-variant-numeric:tabular-nums;white-space:nowrap;justify-content:center;align-items:baseline;gap:.35em;font-size:clamp(3rem,13vw,5.2rem);font-weight:600;display:flex}.problem .eq{color:var(--muted)}.problem .answer{text-align:left;min-width:1.4em;color:var(--acc)}.caret{opacity:.35}.wrong-digit{color:var(--bad)}.right-answer{color:var(--good)}.shake{animation:.36s ease-in-out shake}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.last-line{color:var(--muted);font-variant-numeric:tabular-nums;font-size:1rem}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.key{aspect-ratio:1.6;border:1px solid var(--line);background:var(--raised-2);touch-action:none;max-height:84px;transition:transform 90ms var(--spring), background 90ms;border-radius:18px;font-size:2rem;font-weight:600}.key.pressed,.key:active{background:color-mix(in oklab, var(--acc) 30%, var(--raised-2));transform:scale(.95)}.key-zero{grid-column:2}.lost-panel{text-align:center;animation:rise .3s var(--spring);gap:14px;padding-bottom:12px;font-size:1.2rem;display:grid}.lost-panel .cargo-note{justify-content:center;font-size:1rem}.ready{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#070a18c7;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.ready-card{text-align:center;justify-items:center;gap:14px;max-width:380px;display:grid}.ready-sign{color:var(--acc);font-size:5rem;font-weight:600;line-height:1}.ready-card p{color:var(--muted);font-size:1.1rem;line-height:1.4}.stop-practice{justify-self:center}.result{justify-items:center;gap:18px;max-width:900px;margin:0 auto;padding:20px 16px;display:grid}.result h1{color:var(--acc);font-size:2rem}.result-body{grid-template-columns:minmax(0,420px) minmax(220px,1fr);align-items:start;gap:24px;width:100%;display:grid}.result-side{gap:12px;display:grid}.big-stat{align-items:baseline;gap:10px;display:flex}.big-stat span{color:var(--acc);font-size:4rem;font-weight:600;line-height:1}.big-stat small{color:var(--muted);font-size:1.2rem}.tier-summary{gap:4px;display:grid}.tier-line{grid-template-columns:50px 40px 40px;align-items:center;display:grid}.tier-line:before{content:none}.payout{opacity:.25;transition:opacity .3s, transform .4s var(--spring);align-items:center;gap:8px;font-size:1.5rem;font-weight:600;display:flex}.payout.in{opacity:1;transform:scale(1.04)}.badge-new{background:var(--star);color:#0b0e22;border-radius:999px;padding:4px 12px;font-weight:600}.fact-grid{grid-template-columns:repeat(11,minmax(0,1fr));gap:3px;width:100%;max-width:440px;display:grid}.fg-head,.fg-corner{color:var(--muted);aspect-ratio:1;place-items:center;font-size:.72rem;display:grid}.fg-corner{color:var(--acc);font-size:1rem}.fg-cell{aspect-ratio:1;background:#141836;border:0;border-radius:5px;padding:0}.fg-cell.hit{animation:pop .26s var(--spring)}.fg-cell.tier-t5{background:var(--acc)}.fg-cell.tier-t3{background:color-mix(in oklab, var(--acc) 72%, #141836)}.fg-cell.tier-t2{background:color-mix(in oklab, var(--acc) 48%, #141836)}.fg-cell.tier-t1{background:color-mix(in oklab, var(--acc) 28%, #141836)}.fg-cell.miss{background:var(--bad)}.fg-cell.fluent{box-shadow:inset 0 0 0 2px #ffffff8c}@keyframes pop{0%{transform:scale(.4)}}.tier-t5 .tier-count{color:var(--acc)}.page{max-width:1100px;margin:0 auto;padding:12px 16px 32px}.page-head{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-bottom:18px;display:grid}.page-head h1{text-align:center;font-size:1.6rem}.page-right{justify-self:end}.back{justify-self:start}.section{margin:18px 0 10px;font-size:1.2rem}.cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.card{background:var(--raised);border:1px solid var(--line);text-align:left;border-radius:18px;align-content:start;justify-items:start;gap:8px;padding:16px;display:grid}.card.on{border-color:var(--acc)}.color-card{text-align:center;justify-items:center}.color-card:disabled,.badge{opacity:.45}.badge.got{opacity:1;border-color:var(--star)}.badge-medal{color:var(--star);font-size:1.6rem}.find{text-align:center;justify-items:center}.empty{color:var(--muted);text-align:center;padding:40px 0;font-size:1.1rem}.tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.tab{border:1px solid color-mix(in oklab, var(--acc) 35%, transparent);background:var(--raised);border-radius:14px;padding:10px 16px;font-size:1.1rem}.tab.on{background:color-mix(in oklab, var(--acc) 25%, var(--raised));border-color:var(--acc)}.kaart{grid-template-columns:minmax(0,460px) 1fr;align-items:start;gap:28px;display:grid}.kaart-side{gap:12px;display:grid}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;font-size:.85rem;display:flex}.lg{background:#141836;border-radius:4px;width:14px;height:14px;margin-left:8px;display:inline-block}.fact-detail{background:var(--raised);border-radius:16px;gap:6px;padding:14px;display:grid}.pips{gap:4px;display:flex}.pips span{background:#ffffff1f;border-radius:4px;width:18px;height:8px}.pips span.on{background:var(--good)}.bars{background:var(--raised);border-radius:14px;align-items:flex-end;gap:4px;height:120px;padding:10px;display:flex}.bar{background:var(--acc);border-radius:4px 4px 0 0;flex:1;min-height:3px}.bar.lost{background:color-mix(in oklab, var(--acc) 35%, #141836)}.profiles .lead{text-align:center;margin-bottom:18px;font-size:1.4rem}.profile-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.profile{text-align:center;justify-items:center;padding:20px 12px;font-size:1.15rem}.profile.add .avatar{color:var(--cream)}.new-profile{background:var(--raised);border-radius:22px;gap:16px;max-width:420px;margin:20px auto 0;padding:20px;display:grid}.new-profile label{gap:8px;font-size:1.1rem;display:grid}.new-profile input{font:inherit;border:1px solid var(--line);background:var(--night);color:var(--cream);border-radius:14px;padding:10px 14px;font-size:1.4rem}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{border:3px solid #0000;border-radius:50%;width:40px;height:40px}.swatch.on{border-color:var(--cream)}.parents-link{text-align:center;margin-top:36px}.long-press{color:var(--muted);background:0 0;border:0;border-radius:12px;min-height:44px;padding:10px 14px;font-size:.9rem;position:relative;overflow:hidden}.long-press:after{content:"";background:var(--cream);width:0;height:3px;position:absolute;bottom:0;left:0}.long-press.on:after{width:100%;transition:width var(--ms) linear}.parents{gap:8px;max-width:760px;margin:0 auto;line-height:1.5;display:grid}.toggle{align-items:center;gap:10px;min-height:44px;font-size:1.05rem;display:flex}.toggle input{width:22px;height:22px}.parent-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex}.toasts{z-index:40;pointer-events:none;gap:8px;width:min(440px,100% - 32px);display:grid;position:fixed;top:14px;left:50%;transform:translate(-50%)}.toast{background:var(--cream);color:#151936;text-align:center;animation:rise .3s var(--spring);border-radius:16px;padding:12px 16px;font-weight:500;box-shadow:0 10px 30px #0006}.twinkle{animation:3.2s ease-in-out infinite twinkle}@keyframes twinkle{50%{opacity:.25}}.blink{animation:1.4s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.2}}.glow{filter:drop-shadow(0 0 5px #ffd98a)}.pulse{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55;transform:scale(.92)}}.rocket.launching{animation:2.6s cubic-bezier(.5,0,.9,.4) forwards liftoff}@keyframes liftoff{0%{translate:0}15%{translate:2px}20%{translate:-2px}to{translate:0 -720px}}.flame{animation:90ms steps(2,end) infinite flicker}@keyframes flicker{50%{opacity:.75}}.radar{transform-box:view-box;animation:5s ease-in-out infinite alternate sweep}@keyframes sweep{0%{rotate:-25deg}to{rotate:25deg}}.rover{animation:26s linear infinite alternate drive}@keyframes drive{0%{translate:150px}to{translate:880px}}.orbit{animation:8s linear infinite orbit}@keyframes orbit{0%{rotate:0deg}to{rotate:360deg}}.zzz{animation:2.4s ease-in-out infinite hover}@media (width<=900px){.stage{grid-template-rows:minmax(200px,44vh) auto;grid-template-columns:1fr;overflow-y:auto}.actions{overflow:visible}.base{height:auto;min-height:100%}.dock{background:linear-gradient(to top, var(--night) 70%, transparent);position:sticky;bottom:0}.result-body,.kaart{grid-template-columns:1fr;justify-items:center}.nav{width:100%;margin-left:0}}@media (width<=560px){.dock{grid-template-columns:repeat(2,1fr);gap:8px}.op-btn{min-height:68px;padding:8px 12px}.op-btn .op-sign{font-size:2.4rem}.bubble{margin-top:12px;font-size:.9rem}.bliep{width:44px;height:50px}.tab-name{display:none}.nav button{flex:1;padding:8px 6px;font-size:.85rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
