:root{--bg:#0a130e;--bg2:#0f1d15;--card:#13241a;--card2:#183021;--line:#ffffff14;--text:#eef4ec;--dim:#9fb3a5;--lime:#b5f23d;--teal:#3dd6c4;--amber:#f5b83d;--red:#e8604c;--ink:#0b1510;--r:16px;font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0}body{-webkit-font-smoothing:antialiased}#app{max-width:520px;margin:0 auto;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select{font:inherit}.hidden{display:none!important}b{font-weight:800}.btn{letter-spacing:.2px;border-radius:14px;justify-content:center;align-items:center;gap:8px;min-height:52px;padding:0 20px;font-size:17px;font-weight:800;display:inline-flex}.btn.go{background:var(--lime);color:var(--ink);box-shadow:0 4px #7aa823}.btn.go:active{transform:translateY(3px);box-shadow:0 1px #7aa823}.btn.ghost{color:var(--text);background:#ffffff0f;border:1.5px solid #ffffff24}.btn.wide{width:100%}.btn[disabled]{opacity:.5}.link{color:var(--dim);min-height:44px;padding:0 8px;font-size:15px;text-decoration:underline}.play{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;top:0;bottom:0;left:0;right:0}.play canvas.pitch{display:block;position:absolute;top:0;bottom:0;left:0;right:0}.hud-top{pointer-events:none;align-items:center;gap:10px;height:44px;padding:0 8px 0 12px;display:flex;position:absolute;top:0;left:0;right:0}.hud-top .attack{color:var(--dim);letter-spacing:.3px;font-size:12px;font-weight:700}.hud-top .prog{align-items:center;gap:4px;margin-left:auto;display:flex}.hud-top .prog i{background:#ffffff29;border-radius:3px;width:14px;height:8px;display:block}.hud-top .prog i.on{background:var(--lime)}.hud-top .prog i.cur{background:#b5f23d73}.hud-top .prog span{color:var(--dim);margin-left:4px;font-size:12px;font-weight:700}.hud-top .x{pointer-events:auto;width:44px;height:44px;color:var(--dim);font-size:18px}.panel{height:var(--panelH,150px);padding:14px 18px calc(10px + env(safe-area-inset-bottom));pointer-events:none;background:linear-gradient(#0a130e00 0,#0a130eeb 18px,#0a130e 40px);flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.panel .cue{text-align:center;min-height:50px;padding-top:10px;font-size:19px;font-weight:600;line-height:1.3}.panel .cue b{color:var(--lime)}.panel .hint{text-align:center;color:var(--lime);min-height:22px;font-size:15px;font-weight:800;animation:1.2s ease-in-out infinite pulse}.panel .hint .sw{font-size:20px;display:inline-block}.panel .clock{background:#ffffff1a;border-radius:6px;height:10px;margin-top:auto;overflow:hidden}.panel .clock.idle{opacity:.35}.panel .clock .bar{background:var(--lime);border-radius:6px;width:100%;height:100%;transition:width 80ms linear}.panel .clock .bar.low{background:var(--amber)}@keyframes pulse{50%{opacity:.55}}.flash{text-align:center;color:var(--lime);text-shadow:0 4px 20px #0009;pointer-events:none;font-size:44px;font-weight:900;animation:.9s ease-out forwards pop;position:absolute;top:38%;left:0;right:0}@keyframes pop{0%{opacity:0;transform:scale(.6)}25%{opacity:1;transform:scale(1.08)}to{opacity:0;transform:scale(1)}}.why{padding:20px 18px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#0f1d15;border-radius:22px 22px 0 0;animation:.25s ease-out up;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -12px 40px #00000080}@keyframes up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.why .grade{letter-spacing:1px;align-items:center;gap:10px;font-size:26px;font-weight:900;display:flex}.why .gi{width:34px;height:34px;color:var(--ink);border-radius:10px;justify-content:center;align-items:center;font-size:16px;font-weight:900;display:inline-flex}.why .whytext{margin:10px 0 8px;font-size:19px;font-weight:600;line-height:1.35}.why .meta{color:var(--dim);justify-content:space-between;margin-bottom:14px;font-size:14px;font-weight:700;display:flex}.why .meta .xp{color:var(--lime)}.why .btns{grid-template-columns:1fr 1.25fr;gap:10px;display:grid}.screen{-webkit-overflow-scrolling:touch;padding:0 18px calc(24px + env(safe-area-inset-bottom));position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.screen.center{flex-direction:column;justify-content:center;display:flex}.topbar{background:var(--bg);z-index:6;align-items:center;gap:10px;height:60px;display:flex;position:sticky;top:0}.topbar .name{font-size:20px;font-weight:900}.topbar .sp{flex:1}.chip{background:#ffffff0f;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:14px;font-weight:800;display:inline-flex}.chip.fire{color:var(--amber)}.ring{width:38px;height:38px;position:relative}.ring svg{transform:rotate(-90deg)}.ring span{color:var(--dim);justify-content:center;align-items:center;font-size:10px;font-weight:800;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}h1{letter-spacing:-.3px;margin:0 0 10px;font-size:30px;font-weight:900;line-height:1.1}h2{margin:18px 0 10px;font-size:22px;font-weight:900}p.lead{color:var(--dim);margin:0 0 22px;font-size:17px;line-height:1.45}.logo{letter-spacing:2px;color:var(--lime);margin-bottom:18px;font-size:15px;font-weight:900}.logo.tlogo{letter-spacing:0;font-size:18px;font-weight:800}.field{margin:14px 0;display:block}.field>span{color:var(--dim);margin-bottom:6px;font-size:14px;font-weight:700;display:block}.field input{width:100%;height:54px;color:var(--text);background:#0f1d15;border:1.5px solid #ffffff24;border-radius:14px;padding:0 14px;font-size:18px}.field input:focus{border-color:var(--lime);outline:none}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{background:#ffffff0f;border:1.5px solid #0000;border-radius:12px;min-width:48px;height:48px;font-size:17px;font-weight:800}.chips button.on{border-color:var(--lime);color:var(--lime);background:#b5f23d24}.posgrid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.posgrid button{background:#ffffff0d;border:1.5px solid #0000;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;height:86px;font-size:15px;font-weight:900;display:flex}.posgrid button.on{border-color:var(--lime);color:var(--lime);background:#b5f23d1f}.posgrid svg{width:34px;height:44px}.posgrid small{color:var(--dim);font-size:10px;font-weight:700}.err{color:var(--red);min-height:22px;font-size:15px;font-weight:700}.note{color:var(--dim);font-size:14px;line-height:1.4}.tiles{grid-template-columns:1fr 1fr;gap:12px;margin:16px 0;display:grid}.tile{background:var(--card);border:1.5px solid var(--line);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:132px;padding:12px;display:flex}.tile .av{background:var(--lime);width:54px;height:54px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;font-size:24px;font-weight:900;display:flex}.tile .nm{font-size:19px;font-weight:900}.tile .sub{color:var(--dim);font-size:13px;font-weight:700}.tile.add{color:var(--dim);border-style:dashed;font-weight:800}.row{align-items:center;gap:10px;display:flex}.kt{gap:8px}.kt .who{align-items:center;gap:8px;min-width:0;min-height:44px;padding:0;display:flex}.kt .av{background:var(--lime);width:34px;height:34px;color:var(--ink);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:17px;font-weight:900;display:flex;box-shadow:0 3px #7aa823}.kt .name{white-space:nowrap;text-overflow:ellipsis;max-width:96px;font-size:18px;overflow:hidden}.posb{color:#8cc8ff;background:#5ab0ff29;border:1.5px solid #5ab0ff59;border-radius:9px;padding:5px 8px;font-size:13px;font-weight:900}.chip.fire{color:#ff9a4d;gap:3px;padding:5px 9px 5px 6px;font-size:16px}.chip.fire svg{width:20px;height:20px}.chip.fire.cold{color:var(--dim)}.chip.fire.cold svg{filter:grayscale();opacity:.5}.kt .ring{width:40px;height:40px}.kt .ring span{color:var(--text);font-size:10px}.snd{width:34px;height:44px;color:var(--dim);justify-content:center;align-items:center;display:flex}.snd svg{width:22px;height:22px}.snd[aria-pressed=true]{color:var(--lime)}.pathv2{padding-bottom:30px}.unit2{margin-top:14px}.ubanner{z-index:3;background:var(--c);color:var(--ink);box-shadow:0 5px 0 color-mix(in srgb, var(--c) 60%, #000), 0 10px 22px #00000059;border-radius:20px;align-items:center;gap:12px;padding:14px 14px 14px 18px;display:flex;position:sticky;top:60px}.ubt{flex-direction:column;flex:1;min-width:0;display:flex}.ubanner .un{opacity:.72;align-items:center;gap:4px;font-size:14px;font-weight:800;display:flex}.ubanner .un svg{width:14px;height:14px}.ubanner .ut{margin:1px 0 3px;font-size:21px;font-weight:900;line-height:1.15}.ubanner .ul{opacity:.82;font-size:14px;font-weight:600;line-height:1.3}.uart{flex-shrink:0;width:64px;height:64px;position:relative}.uart>svg:first-child{width:64px;height:64px;position:absolute;top:0;bottom:0;left:0;right:0}.uart>svg+svg{width:28px;height:28px;color:var(--ink);--hole:var(--c);position:absolute;top:18px;left:18px}.unit2.locked .ubanner{background:color-mix(in srgb, var(--c) 18%, #17271d);color:var(--text);box-shadow:0 5px #0e1a13}.unit2.locked .ubanner .ut{color:color-mix(in srgb, var(--c) 55%, #eef4ec)}.unit2.locked .uart>svg+svg{color:color-mix(in srgb, var(--c) 60%, #9fb3a5)}.unit2.locked .uart>svg:first-child rect:first-child{fill:#ffffff0f}.nodes2{flex-direction:column;align-items:center;padding:26px 0 18px;display:flex}.nwrap{transform:translateX(var(--x));flex-direction:column;align-items:center;margin:10px 0;display:flex;position:relative}.nwrap.cur{margin-top:56px}.node2{background:var(--c);width:72px;height:66px;color:var(--ink);box-shadow:0 8px 0 color-mix(in srgb, var(--c) 58%, #000);border-radius:50%;justify-content:center;align-items:center;transition:transform 80ms,box-shadow 80ms;display:flex;position:relative}.node2:after{content:"";background:#ffffff61;border-radius:50%;width:18px;height:9px;position:absolute;top:9px;left:14px;transform:rotate(-24deg)}.node2 svg{--hole:var(--c);width:32px;height:32px;position:relative}.node2:active:not([disabled]),.node2.press{box-shadow:0 2px 0 color-mix(in srgb, var(--c) 58%, #000);transform:translateY(6px)}.node2.locked{color:#5d7266;cursor:default;--hole:#2b3b31;background:#2b3b31;box-shadow:0 8px #1c2921}.node2.locked svg{--hole:#2b3b31}.node2.locked:after{background:#ffffff0f}.node2.done svg{width:34px;height:34px}.node2.cur{width:80px;height:74px}.node2.cur:before{content:"";border:5px solid color-mix(in srgb, var(--c) 45%, transparent);border-radius:50%;animation:1.6s ease-in-out infinite ring;position:absolute;top:-11px;bottom:-11px;left:-11px;right:-11px}@keyframes ring{50%{border-color:color-mix(in srgb, var(--c) 75%, transparent);transform:scale(1.07)}}.node2.check{color:#6b4a00;background:#ffcb3d;width:86px;height:78px;box-shadow:0 8px #b98a12}.node2.check svg{width:40px;height:40px}.node2.check.done{color:#6b4a00;background:#ffcb3d}.node2.check.locked{color:#5d7266;background:#2b3b31;box-shadow:0 8px #1c2921}.node2.check.cur:before{border-color:#ffcb3d80}.clbl{color:var(--dim);margin-top:14px;font-size:13px;font-weight:800}.tip{color:color-mix(in srgb, var(--c) 45%, #0b1510);white-space:nowrap;z-index:1;background:#fff;border-radius:12px;padding:8px 14px;font-size:16px;font-weight:900;animation:1.4s ease-in-out infinite tipbob;position:absolute;bottom:calc(100% + 16px);box-shadow:0 4px #00000040}.tip:after{content:"";border:8px solid #0000;border-top-color:#fff;margin-left:-8px;position:absolute;top:100%;left:50%}@keyframes tipbob{50%{transform:translateY(-5px)}}.kidav{background:var(--card2);border:3px solid var(--c);width:40px;height:40px;color:var(--text);border-radius:50%;justify-content:center;align-items:center;font-size:18px;font-weight:900;display:flex;position:absolute;top:14px;box-shadow:0 3px #00000059}.kidav.l{right:calc(100% + 18px)}.kidav.r{left:calc(100% + 18px)}.node2.just{animation:.7s cubic-bezier(.3,1.6,.5,1) .2s both justpop}@keyframes justpop{0%{transform:scale(.5)}to{transform:scale(1)}}.confetti{pointer-events:none;z-index:30;width:100vw;height:100vh;position:fixed;top:0;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){.node2.cur:before,.tip,.node2.just{animation:none}}.tabs{max-width:520px;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);z-index:5;background:#0c1711;grid-template-columns:repeat(3,1fr);margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.tabs button{color:var(--dim);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:13px;font-weight:800;display:flex}.tabs button.on{color:var(--lime)}.tabs button i{border-radius:12px;justify-content:center;align-items:center;width:52px;height:32px;font-style:normal;transition:background .15s;display:flex}.tabs button.on i{background:#b5f23d29;box-shadow:inset 0 0 0 2px #b5f23d73}.tabs button:active i{transform:scale(.92)}.withtabs{padding-bottom:calc(90px + env(safe-area-inset-bottom))}.list .item{text-align:left;background:var(--card);border-radius:14px;align-items:center;gap:12px;width:100%;min-height:60px;margin:8px 0;padding:12px;display:flex}.list .item .g{width:34px;height:34px;color:var(--ink);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-weight:900;display:flex}.list .item .t{flex:1;font-size:15px;font-weight:700;line-height:1.3}.list .item .t small{color:var(--dim);font-weight:600;display:block}.end{text-align:center}.end .big{margin:30px 0 6px;font-size:34px;font-weight:900}.end .dots{justify-content:center;gap:8px;margin:14px 0 6px;display:flex}.end .dots i{background:#26392c;border-radius:50%;width:22px;height:22px;display:block}.end .stat{flex-wrap:wrap;justify-content:center;gap:10px;margin:16px 0;display:flex}.end .learn{background:var(--card);text-align:left;border-radius:18px;margin:16px 0;padding:16px}.end .learn small{color:var(--dim);letter-spacing:1px;font-size:12px;font-weight:800}.end .learn div{margin-top:6px;font-size:19px;font-weight:700;line-height:1.35}.end .btns{gap:10px;margin-top:18px;display:grid}.pcard{background:var(--card);border-radius:18px;margin:12px 0;padding:16px}.pcard h3{color:var(--dim);letter-spacing:.5px;margin:0 0 10px;font-size:15px;font-weight:800}.bars{align-items:flex-end;gap:6px;height:64px;display:flex}.bars div{background:var(--lime);opacity:.9;border-radius:4px 4px 0 0;flex:1;min-height:3px}.bars-l{gap:6px;margin-top:4px;display:flex}.bars-l span{text-align:center;color:var(--dim);flex:1;font-size:11px;font-weight:700}.skill{grid-template-columns:120px 1fr 44px;align-items:center;gap:8px;margin:8px 0;font-size:14px;font-weight:700;display:grid}.skill .track{background:#ffffff14;border-radius:6px;height:10px;overflow:hidden}.skill .track div{background:var(--teal);height:100%}.skill .tag{color:var(--amber);font-size:11px}.gate{background:var(--card);border-radius:20px;margin-top:30px;padding:20px}.toast{z-index:20;background:#213a2a;border-radius:12px;max-width:90%;padding:12px 16px;font-weight:700;position:fixed;top:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0006}.pcard .row svg{flex-shrink:0;width:34px;height:44px}.node svg{width:28px;height:28px}.tabs button svg{width:22px;height:22px}.list .item .g svg{width:20px;height:20px}.looks{left:10px;right:10px;bottom:calc(var(--panelH,150px) + 8px);pointer-events:none;z-index:4;justify-content:space-between;display:flex;position:absolute}.looks.hidden{display:none}.looks .look{pointer-events:auto;color:#fff;background:#0a130ec7;border:1.5px solid #b5f23db3;border-radius:22px;min-height:44px;padding:0 16px;font:600 15px/1 inherit}.looks .look:hover{background:#b5f23d2e}.hud-top .prog span.pl{color:var(--dim);margin:0 4px 0 0;font-weight:600}.sidel,.sider{display:none}.play.wide{z-index:8;background:#0a130e;position:fixed;top:0;bottom:0;left:0;right:0}.play.wide canvas.pitch{left:280px;right:auto}.play.wide .sidel,.play.wide .sider{background:#0c1711;display:block;position:absolute;top:0;bottom:0}.play.wide .sidel{border-right:1px solid var(--line);width:280px;padding:28px 24px;left:0}.play.wide .sider{border-left:1px solid var(--line);width:340px;right:0}.sl-k{color:var(--lime);font-size:14px;font-weight:800}.sl-prog{margin:10px 0 8px;font-size:19px;font-weight:800}.sl-prog b{color:var(--lime)}.sl-dots{gap:6px;margin-bottom:22px;display:flex}.sl-dots i{background:#ffffff29;border-radius:4px;width:30px;height:10px}.sl-dots i.on{background:var(--lime)}.sl-dots i.cur{background:#b5f23d73}.sl-note{background:#213a2a;border-radius:12px;margin-bottom:16px;padding:12px 14px;font-weight:700;line-height:1.35}.sl-tip{border:1px solid var(--line);background:#13241a;border-radius:14px;padding:14px;font-size:17px;font-weight:600;line-height:1.35}.sl-tip span{color:var(--dim);margin-bottom:6px;font-size:12px;font-weight:800;display:block}.sl-streak{color:var(--amber);margin-top:18px;font-weight:800}.sl-keys{color:var(--dim);font-size:13px;position:absolute;bottom:24px;left:24px;right:24px}.play.wide .hud-top{left:280px;right:340px}.play.wide .hud-top .prog{display:none}.play.wide .looks{flex-direction:column;gap:12px;width:300px;top:28px;bottom:auto;left:auto;right:20px}.play.wide .looks .look{border-radius:16px;min-height:64px;font-size:18px}.play.wide .panel{background:0 0;width:340px;height:200px;padding:10px 22px;top:190px;bottom:auto;left:auto;right:0}.play.wide .panel .cue{text-align:left;font-size:20px}.play.wide .panel .hint{text-align:left}.play.wide .panel .clock{margin-top:18px}.play.wide .why{border:1px solid var(--line);z-index:6;border-radius:18px;width:308px;bottom:20px;left:auto;right:16px}.play.wide .why .btns{grid-template-columns:1fr}.play.wide .why .btns .next{order:-1;min-height:56px}.looks .look:disabled{opacity:.38;cursor:default;border-color:#ffffff40}.looks[data-st=done] .look:disabled{opacity:.6}.tst{max-width:560px;margin:0 auto;left:0;right:0}.tst h1{margin:8px 0 6px;font-size:26px;line-height:1.15}.tst .logo{margin-top:22px}.tst .posgrid{grid-template-columns:repeat(5,1fr)}.tst .posgrid button{height:82px;font-size:14px}.tst .posgrid small{color:var(--dim);text-align:center;font-size:10.5px;font-weight:700;line-height:1.1}.tst .chips.ages button{flex:1;height:54px;font-size:18px}.tst .err{color:#ff7a6b;min-height:20px;margin:4px 0;font-weight:700}.tst ol.how{margin:14px 0 18px;padding-left:22px;font-size:17px;line-height:1.45}.tst ol.how li{margin:0 0 12px}.tst .score{justify-content:center;align-items:baseline;gap:4px;margin:14px 0 4px;display:flex}.tst .score b{color:var(--lime);font-size:84px;font-weight:900;line-height:1}.tst .score span{color:var(--dim);font-size:26px;font-weight:800}.tst .scline{text-align:center;margin:6px 0 18px;font-size:18px;font-weight:700}.tst .gate{background:#ffffff0d;border-radius:16px;padding:14px 14px 6px}.tst .gh{margin:0;font-weight:700}.tst .link{color:var(--dim);margin:16px auto 0;font-weight:700;text-decoration:underline;display:block}.tst .rhead{align-items:center;gap:14px;margin:10px 0 14px;display:flex}.tst .score.sm{margin:0}.tst .score.sm b{font-size:52px}.tst .score.sm span{font-size:18px}.tst .rhead p{margin:0;font-weight:700;line-height:1.35}.tst .well{border-left:4px solid var(--lime);background:#b5f23d1a;border-radius:10px;padding:10px 12px}.tst .well p{margin:4px 0 0}.tst h2{margin:20px 0 8px;font-size:20px}.tst .weak{background:#ffffff0d;border-radius:14px;gap:12px;margin-bottom:10px;padding:12px;display:flex}.tst .wn{background:var(--amber,#ffcb3d);color:#0b1510;border-radius:50%;flex:0 0 30px;justify-content:center;align-items:center;height:30px;font-weight:900;display:flex}.tst .weak h3{margin:2px 0 6px;font-size:17px}.tst .weak p{margin:0 0 6px;line-height:1.4}.tst .weak p span{color:var(--dim);font-weight:800}
