:root{--ink: #0e1116;--panel: #161a22;--line: #242b38;--hi: #eef1f6;--lo: #8b93a3;--h: 200;--accent: oklch(.72 .12 var(--h));--gold: #f3c44c;--col: 360px;--ff-ui: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ff-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Roboto Mono", monospace;--sat: env(safe-area-inset-top);--sab: env(safe-area-inset-bottom)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--ink);height:100%;overflow:hidden;overscroll-behavior:none}body{color:var(--hi);font-family:var(--ff-ui);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:fixed;inset:0}#bg{position:fixed;inset:0;z-index:0;background:radial-gradient(120% 70% at 50% -8%,oklch(.22 .04 var(--h)) 0%,var(--ink) 58%);transition:background .4s ease}#game{position:fixed;inset:0;z-index:1}#game canvas{display:block}.overlay{position:fixed;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;gap:4px}.overlay.hidden{display:none}#over{justify-content:flex-start;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding-top:max(72px,calc(var(--sat) + 56px));padding-bottom:max(28px,calc(var(--sab) + 20px));background:linear-gradient(180deg,#080a0ebd,#080a0ee6)}.title-row{display:flex;align-items:center;justify-content:center;gap:.28em;font-size:clamp(34px,12vw,60px)}.title-logo{width:1.9em;height:1.9em;flex:none;filter:drop-shadow(0 2px 8px rgba(0,0,0,.45));transform-origin:50% 80%;animation:logo-fly 2s infinite}@keyframes logo-fly{0%{transform:translateY(.08em) rotate(-5deg);animation-timing-function:cubic-bezier(.2,.85,.3,1)}20%{transform:translateY(-.11em) rotate(6deg);animation-timing-function:cubic-bezier(.55,0,.9,.45)}to{transform:translateY(.08em) rotate(-5deg)}}.title-logo.flap{animation:logo-fly 2.6s ease-in-out infinite,logo-flap .42s cubic-bezier(.2,1.5,.35,1) 1}@keyframes logo-flap{0%{scale:1}35%{scale:1.22 .86}70%{scale:.94 1.08}to{scale:1}}@media(prefers-reduced-motion:reduce){.title-logo,.title-logo.flap{animation:none}}.title{font-weight:800;letter-spacing:-.02em;line-height:.96;font-size:1em;text-align:left}.title .hot{color:var(--accent);transition:color .4s}.tag{color:var(--lo);font-size:14px;margin-top:14px;max-width:300px;line-height:1.5}.key{display:inline-block;font-family:var(--ff-mono);font-size:12px;color:var(--hi);border:1px solid var(--line);border-radius:6px;padding:2px 8px;margin:0 2px}.score-big{font-weight:800;font-size:clamp(40px,15vw,74px);line-height:1;color:var(--accent);transition:color .4s}.score-big.diverged{color:#ff6b5e}.score-label{font-family:var(--ff-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--lo);margin-bottom:6px}.board-wrap{width:100%;max-width:var(--col);margin:10px 0 4px;padding:14px 15px 12px;font-family:var(--ff-mono);font-size:13px;background:#0d1015d1;border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:0 12px 34px #00000061}@media(prefers-reduced-transparency:reduce){.board-wrap{background:#0d1015f7;backdrop-filter:none;-webkit-backdrop-filter:none}}.lb-caption{font-family:var(--ff-mono);font-size:11px;line-height:1.45;color:var(--lo);text-align:left;padding:0 1px;margin-bottom:7px}.lb-caption b{color:var(--hi);font-weight:700}.lb-caption u{text-underline-offset:2px}.lb-caption .lb-n{font-variant-numeric:tabular-nums;white-space:nowrap}.lb-row .step,.lb-row .flops{color:var(--lo);text-align:right}.run-flops{font-family:var(--ff-mono);font-size:11px;color:var(--lo);text-align:center;margin-top:2px}.lb-tabs{display:flex;gap:18px;padding:0 1px;margin-bottom:7px;border-bottom:1px solid var(--line)}.lb-tab{min-height:44px;padding:0 2px;font-family:var(--ff-mono);font-size:12px;letter-spacing:.02em;color:var(--lo);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color .12s ease}.lb-tab.active{color:var(--hi);border-bottom-color:var(--gold)}.board-head,.lb-row{display:grid;grid-template-columns:20px 18px 1fr 56px 34px 38px;align-items:center;gap:6px}.lb-table{display:contents}.board-head{color:var(--hi);font-size:11px;padding:0 6px 6px;border-top:1.5px solid rgba(255,255,255,.62);border-bottom:1px solid rgba(255,255,255,.28)}#lbRows{border-bottom:1.5px solid rgba(255,255,255,.62);position:relative;max-height:min(248px,42vh);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}#lbRows::-webkit-scrollbar{width:5px}#lbRows::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:3px}.lb-row{padding:6px;color:var(--lo)}.lb-row .rk{color:var(--lo);text-align:right}.lb-row .av{width:18px;height:18px}.lb-row .nm{min-width:0;display:flex;align-items:baseline;gap:5px;color:var(--hi)}.lb-row .nm .nmtext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums}.board-head .lhd{text-align:center}.lb-row .st{color:var(--lo)}.lb-row .sc{color:var(--hi);font-weight:600;display:grid;grid-template-columns:1ch 1fr;align-items:baseline;font-variant-numeric:tabular-nums}.lb-row .sc .lint{text-align:right}.lb-row .sc .lfrac{text-align:left}.lb-row .sc .lwhole{grid-column:1 / -1;text-align:right}.lb-row.r1 .rk,.lb-row.r1 .nm,.lb-row.r1 .sc{font-weight:800}.lb-row.r2 .nm{text-decoration:underline;text-underline-offset:2px}.lb-row .ours{flex:none;color:var(--accent);font-size:11px;opacity:.85}.lb-row.me{color:var(--accent);background:oklch(.72 .12 var(--h) / .1);border-radius:8px}.lb-row.me .nm,.lb-row.me .sc,.lb-row.me .rk{color:var(--accent)}@media(max-width:360px){.board-head,.lb-row{grid-template-columns:20px 18px 1fr 56px 34px;gap:4px}.board-head>:last-child,.lb-row .flops{display:none}}.lb-gap{text-align:center;color:var(--lo);opacity:.5;padding:2px 0}.lb-status{color:var(--lo);font-size:12px;padding:14px 0}.lb-dots span{animation:lb-dots 1.4s infinite both}.lb-dots span:nth-child(2){animation-delay:.2s}.lb-dots span:nth-child(3){animation-delay:.4s}@keyframes lb-dots{0%,80%,to{opacity:.2}40%{opacity:1}}@media(prefers-reduced-motion:reduce){.lb-dots span{animation:none}}.board-wrap.lb-empty .board-head{display:none}.board-wrap.lb-empty #lbRows{border-bottom:none}.board-wrap.lb-empty .lb-status{text-align:center;color:var(--hi)}.lb-figure{margin:10px 1px 2px}.lb-figure.hidden{display:none}.lb-figure img{width:100%;aspect-ratio:1200 / 560;height:auto;max-height:172px;object-fit:cover;display:block;border-radius:8px;border:1px solid var(--line)}.lb-figure figcaption{font-family:var(--ff-mono);font-size:11px;line-height:1.45;color:var(--lo);text-align:left;margin-top:7px;padding:0 1px}.lb-figure figcaption b{color:var(--hi);font-weight:700}.avatar-picker{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;justify-content:center}.av-btn{width:52px;height:52px;border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:6px;cursor:pointer;transition:border-color .15s,background .15s,transform .05s;-webkit-tap-highlight-color:transparent}.av-btn img{width:100%;height:100%;display:block}.av-btn.sel{border-color:var(--accent);background:oklch(.72 .12 var(--h) / .12)}.av-btn:active{transform:translateY(1px)}.av-btn.gold.sel{border-color:var(--gold);background:#f3c44c24}.webauth{margin-top:14px;display:flex;flex-direction:column;align-items:center;gap:8px}.webauth:empty{display:none}.webauth-cap{font-family:var(--ff-mono);font-size:12px;color:var(--lo)}.webauth-box{min-height:30px}.webauth-in{display:flex;align-items:center;gap:10px;font-family:var(--ff-mono);font-size:13px;color:var(--lo)}.webauth-in b{color:var(--hi)}.webauth-in .btn{margin-top:0;padding:6px 12px;font-size:12px}.deadline{width:100%;max-width:var(--col);margin-top:18px;font-family:var(--ff-mono);font-size:14px;color:var(--hi)}.deadline .anchor{border-bottom:2px solid var(--accent);padding-bottom:1px;color:inherit;text-decoration:none;cursor:pointer;transition:border-color .4s}.deadline .anchor:hover,.deadline .anchor:focus-visible{border-color:var(--hi)}.deadline .anchor:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.deadline small{display:block;color:var(--lo);font-size:10px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}.btn-row{display:flex;gap:10px;width:100%;max-width:var(--col);margin-top:14px;justify-content:center}.btn-row .btn{flex:1;padding-left:0;padding-right:0}.btn{background:transparent;color:var(--hi);border:1px solid var(--accent);border-radius:11px;padding:13px 26px;font-family:var(--ff-mono);font-size:14px;letter-spacing:.04em;cursor:pointer;transition:background .2s,transform .05s;-webkit-tap-highlight-color:transparent}.btn.ghost{border-color:var(--line);color:var(--lo)}#startBtn{margin-top:28px}@media(max-height:560px){#start{justify-content:flex-start;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding-top:max(54px,calc(var(--sat) + 46px));padding-bottom:max(14px,calc(var(--sab) + 10px))}.title-row{font-size:clamp(26px,7vh,44px)}.tag{margin-top:8px}.avatar-picker{margin-top:10px}#startBtn{margin-top:16px}.corner{display:none}}@media(hover:hover){.btn:hover{background:oklch(.72 .12 var(--h) / .14)}}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default;pointer-events:none}.btn.busy{opacity:.55;cursor:default;pointer-events:none;animation:btn-pulse 1s ease-in-out infinite}@keyframes btn-pulse{50%{opacity:.3}}.btn.gold-btn{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:600}@media(hover:hover){.btn.gold-btn:hover{background:#f7d06a;border-color:#f7d06a}}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--ink);font-weight:600}@media(hover:hover){.btn.primary:hover{filter:brightness(1.08)}}.sub-gate{display:flex;flex-direction:column;align-items:center;gap:9px;width:100%;max-width:var(--col);margin:10px 0 2px;padding:11px 14px;background:#f3c44c0f;border:1px solid rgba(243,196,76,.32);border-radius:12px}.sub-gate.hidden{display:none}.sub-gate-text{font-size:13px;line-height:1.45;color:var(--lo);text-align:center}.sub-gate-text b{color:var(--gold)}#hud{position:fixed;top:max(64px,calc(var(--sat) + 46px));left:0;right:0;z-index:2;text-align:center;font-weight:800;font-size:42px;color:var(--hi);text-shadow:0 2px 14px rgba(0,0,0,.6);pointer-events:none;opacity:0;transition:opacity .2s}#hud.show{opacity:1}.nan-splash{position:fixed;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none;background:radial-gradient(120% 90% at 50% 50%,#080a0e8c,#080a0ecc)}.nan-splash.hidden{display:none}.nan-big-wrap{line-height:.9}.nan-big{font-family:var(--ff-mono);font-weight:700;letter-spacing:-.02em;font-size:min(clamp(96px,40vw,300px),calc(90vw / (var(--len, 4) * .6)));color:var(--accent);text-shadow:0 0 32px oklch(.72 .12 var(--h) / .45)}.nan-splash.diverged .nan-big{color:#ff6b5e;text-shadow:0 0 32px rgba(255,107,94,.42)}.nan-sub{font-family:var(--ff-mono);font-size:clamp(12px,3.4vw,16px);letter-spacing:.22em;text-transform:uppercase;color:var(--lo)}.nan-splash.in .nan-big-wrap{animation:nanPop .34s cubic-bezier(.2,1.5,.4,1) both}.nan-splash.in.diverged .nan-big{animation:nanGlitch .36s steps(2) .06s 2 both}.nan-splash.in .nan-sub{animation:nanFade .4s ease .2s both}@media(prefers-reduced-motion:reduce){.nan-splash.in .nan-big-wrap,.nan-splash.in.diverged .nan-big,.nan-splash.in .nan-sub{animation:none}}@keyframes nanPop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}@keyframes nanFade{0%{opacity:0}to{opacity:1}}@keyframes nanGlitch{0%{transform:translate(0);text-shadow:none}25%{transform:translate(-3px,2px);text-shadow:3px 0 #00e5ff,-3px 0 #ff00a0}50%{transform:translate(3px,-2px);text-shadow:-3px 0 #00e5ff,3px 0 #ff00a0}75%{transform:translate(-2px,-1px);text-shadow:2px 0 #00e5ff,-2px 0 #ff00a0}to{transform:translate(0);text-shadow:none}}#board{position:fixed;top:0;left:0;right:0;z-index:3;padding:calc(var(--sat) + 8px) 12px 8px;display:flex;align-items:center;gap:10px;font-family:var(--ff-mono);font-size:12px;color:var(--lo);background:linear-gradient(180deg,#0a0d12f7,#0a0d12f2 60%,#0a0d12db);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);pointer-events:none}#board .proj{color:var(--lo);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#board .run{color:var(--hi)}#board .state{display:inline-flex;align-items:center;gap:5px;flex:none;padding:2px 8px;border:1px solid var(--line);border-radius:999px;color:#ffcf4d}#board .state:before{content:"";width:6px;height:6px;border-radius:50%;background:#ffcf4d;box-shadow:0 0 8px #ffcf4d;animation:pulse 1.2s ease-in-out infinite}#board .state.crashed{color:#ff6b5e}#board .state.crashed:before{background:#ff6b5e;box-shadow:0 0 8px #ff6b5e;animation:none}#board .state.idle{color:var(--lo)}#board .state.idle:before{background:var(--lo);box-shadow:none;animation:none}@keyframes pulse{50%{opacity:.35}}#board .metrics{margin-left:auto;display:flex;gap:12px;flex:none}#board .metrics b{color:var(--hi);font-weight:600}@media(max-width:600px){#board .proj{display:none}#board{font-size:11px}#board .metrics{gap:9px}}.corner{font-family:var(--ff-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--lo);opacity:.6;position:fixed;left:0;right:0;bottom:max(12px,calc(var(--sab) + 6px));z-index:2;text-align:center;pointer-events:none}.corner.hidden{display:none}.ad-banner{position:fixed;left:0;right:0;bottom:0;z-index:2;display:flex;flex-direction:column;padding:clamp(6px,1.7vw,9px) clamp(14px,4vw,22px) calc(var(--sab) + 6px);background:linear-gradient(0deg,#0a0d12f7,#0a0d12f2 55%,#0a0d12db);border-top:2px solid var(--gold);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-family:var(--ff-mono);pointer-events:none}.ad-banner.hidden{display:none}.ad-fact{display:flex;align-items:center;min-height:3.75em;font-size:clamp(11.5px,3.6vw,15px);line-height:1.25;letter-spacing:.01em;text-align:center;color:var(--hi)}.ad-fact-text{width:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden;transition:opacity .45s ease}.ad-fact-text.fading{opacity:0}@media(prefers-reduced-motion:reduce){.ad-fact-text{transition:none}}
