*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;overscroll-behavior:none}body{min-height:100dvh}button,input,select{font:inherit;color:inherit}h1,h2{font-family:var(--font-display);margin:0}h1{font-size:var(--fs-xl);line-height:var(--lh-xl);font-weight:800}h2{font-size:var(--fs-lg);line-height:var(--lh-lg);font-weight:700}p{margin:0}.num{font-variant-numeric:tabular-nums;font-family:var(--font-display)}.muted{color:var(--text-muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.error{color:var(--danger);font-size:var(--fs-sm);font-weight:600}.help{color:var(--text-muted);font-size:var(--fs-xs)}.link{background:none;border:0;color:var(--accent);padding:var(--s2);cursor:pointer;min-height:44px;font-weight:600}.link.light{color:#ffffffd9}.icon-btn{background:var(--surface);border:1px solid var(--border);border-radius:50%;width:44px;height:44px;cursor:pointer;display:grid;place-items:center;font-size:20px;box-shadow:var(--sh-card)}.flag{border-radius:2px;vertical-align:-2px;box-shadow:0 0 0 1px #0000001a;display:inline-block}.flag-none{display:none}.avatar{display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:800;font-family:var(--font-display);flex:none;box-shadow:0 0 0 3px #fff}.bar{height:8px;background:var(--surface-2);border-radius:var(--r-pill);overflow:hidden}.bar i{display:block;height:100%;background:var(--accent);border-radius:inherit;transition:width var(--m-base) var(--m-ease)}[dir=rtl] .bar i{margin-inline-start:auto}.row-between{display:flex;justify-content:space-between;align-items:center}.row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}.empty{text-align:center;padding:var(--s4)}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);border:0;border-radius:var(--r-pill);cursor:pointer;font-family:var(--font-display);font-weight:800;min-height:48px;padding:0 var(--s5);transition:transform var(--m-fast) var(--m-spring),filter var(--m-fast)}.btn:active{transform:scale(.97)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-lg{min-height:60px;font-size:var(--fs-xl);width:100%}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:var(--sh-glow)}.btn-hot{background:linear-gradient(180deg,#ec6a52,var(--accent-2));color:var(--on-accent-2);box-shadow:0 12px 30px #cf443059}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn-ghost{background:transparent;color:var(--text-muted)}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:spin .8s linear infinite;position:absolute}.btn-label.is-loading{opacity:0}@keyframes spin{to{transform:rotate(360deg)}}.field{display:grid;gap:var(--s1);font-size:var(--fs-sm);color:var(--text-muted)}.field input,.field select,.select select{background:#fffffff5;border:1.5px solid var(--border-input);border-radius:var(--r-md);min-height:56px;padding:0 var(--s4);color:var(--text);font-size:var(--fs-lg);text-align:center;width:100%;font-weight:600}.field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #0b7a7233}.inline{display:flex;gap:var(--s2)}.select{display:block}.select select{font-size:var(--fs-base);min-height:44px;text-align:start}.splash{min-height:100dvh;display:grid;place-content:center;gap:var(--s4);justify-items:center;background:#120d0a;color:#fff}.brand-mark{font-family:var(--font-display);font-weight:800;font-size:var(--fs-lg);letter-spacing:.08em}.loader{width:120px;height:3px;background:#ffffff26;border-radius:var(--r-pill);overflow:hidden;position:relative}.loader:after{content:"";position:absolute;inset:0;width:40%;background:var(--accent-2);animation:load 1s var(--m-ease) infinite alternate}@keyframes load{to{transform:translate(150%)}}.gate{min-height:100dvh;display:grid;align-content:end;padding:var(--gutter);padding-bottom:calc(var(--s6) + env(safe-area-inset-bottom));position:relative;overflow:hidden;max-width:var(--max);margin:0 auto}.gate-scene{position:fixed;inset:0;z-index:0;background:url(/art/sky_dusk.webp) 50% 30%/auto 72% no-repeat,linear-gradient(180deg,#5a3f8a,#e7a066 55%,#c98b52 72%,#2a2b31)}.gate-scene:before{content:"";position:absolute;inset:auto 0 0;height:58%;background:linear-gradient(180deg,transparent,rgba(18,13,10,.15) 30%,rgba(18,13,10,.82) 70%,#120d0a)}.gate-hero{position:absolute;left:50%;bottom:44%;height:44%;transform:translate(-50%);filter:drop-shadow(0 18px 18px rgba(0,0,0,.35))}.lang-btn{z-index:2;position:fixed;top:calc(var(--s4) + env(safe-area-inset-top));inset-inline-end:var(--s4);background:#00000059;backdrop-filter:blur(8px);color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:var(--r-pill);padding:var(--s2) var(--s4);min-height:40px;cursor:pointer;font-weight:600}.gate-card{display:grid;gap:var(--s3);text-align:center;position:relative;z-index:1}.gate-card h1{color:#fff;font-size:var(--fs-display);line-height:var(--lh-display);text-shadow:0 4px 18px rgba(0,0,0,.4)}.gate-card .help{color:#ffffffb3}.gate-card .error{color:#ffb4a6}.home,.board{max-width:var(--max);margin:0 auto;padding:var(--gutter);padding-bottom:calc(var(--tabbar) + var(--s6) + env(safe-area-inset-bottom));display:grid;gap:var(--s4)}.hub-head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--s2);padding-top:env(safe-area-inset-top)}.hub-head .icon-btn{justify-self:end}.hi{display:flex;align-items:center;gap:var(--s2);background:none;border:0;cursor:pointer;min-height:44px;padding:0;text-align:start}.hi-text{display:grid;line-height:1.15}.hi-text small{color:var(--text-muted);font-size:var(--fs-xs)}.hi-text bdi{font-weight:800;font-family:var(--font-display);max-width:9ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wordmark{font-family:var(--font-display);font-weight:800;font-size:var(--fs-lg);color:var(--ink);white-space:nowrap}.hero-banner{position:relative;display:flex;align-items:flex-end;justify-content:space-between;min-height:190px;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(135deg,#fbe3c2,#f4c58c 60%,#e9a768);box-shadow:var(--sh-card)}.hero-banner:after{content:"";position:absolute;inset:auto 0 0;height:16px;background:repeating-linear-gradient(90deg,var(--ink) 0 14px,var(--gold) 14px 28px);opacity:.85}.hero-copy{padding:var(--s5);display:grid;gap:var(--s3);align-self:stretch;align-content:center;z-index:1}.hero-copy h1{font-size:40px;line-height:44px;color:var(--ink)}.live{display:inline-flex;align-items:center;gap:var(--s2);justify-self:start;background:#fff;border-radius:var(--r-pill);padding:6px 14px;font-size:var(--fs-sm);font-weight:700;box-shadow:var(--sh-card)}.dot{width:9px;height:9px;border-radius:50%;background:#22a45d;box-shadow:0 0 #22a45d99;animation:pulse 1.6s infinite}@keyframes pulse{70%{box-shadow:0 0 0 8px #22a45d00}to{box-shadow:0 0 #22a45d00}}.hero-man{height:210px;margin-bottom:-6px;margin-inline-end:var(--s2);filter:drop-shadow(0 10px 12px rgba(0,0,0,.25));position:relative;z-index:1}.play-card{position:relative;border-radius:var(--r-lg);overflow:hidden;min-height:250px;display:grid;align-content:end;background:#1d1712;box-shadow:var(--sh-pop);color:#fff}.play-art{position:absolute;inset:0;background:url(/art/sky_dusk.webp) 60% 40%/cover no-repeat}.play-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0000000d 20%,#100b08e0 78%)}.play-body{position:relative;padding:var(--s5);display:grid;gap:var(--s2)}.play-kicker{font-size:var(--fs-xs);font-weight:700;color:#ffd9a8;letter-spacing:.02em}.play-card h2{font-size:28px;line-height:32px;font-weight:800}.play-best{font-size:var(--fs-sm);color:#ffffffd9}.play-best b{color:var(--gold)}.play-row{display:flex;gap:var(--s3);align-items:stretch;margin-top:var(--s2)}.play-btn{flex:1;min-height:62px;border:0;border-radius:var(--r-pill);background:linear-gradient(180deg,#ec6a52,var(--accent-2));color:#fff;font-family:var(--font-display);font-weight:800;font-size:24px;display:flex;align-items:center;justify-content:center;gap:var(--s3);cursor:pointer;box-shadow:0 12px 30px #cf443073;transition:transform var(--m-fast) var(--m-spring)}.play-btn:active{transform:scale(.97)}.play-online{display:grid;place-content:center;text-align:center;min-width:92px;border-radius:var(--r-lg);background:#ffffff1f;border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(6px)}.play-online b{font-size:var(--fs-lg)}.play-online small{font-size:var(--fs-xs);color:#ffffffbf}.season-card{display:flex;align-items:center;gap:var(--s3);background:var(--ink);color:var(--on-ink);border:0;border-radius:var(--r-lg);padding:var(--s4) var(--s5);cursor:pointer;text-align:start;box-shadow:var(--sh-card)}.trophy{font-size:34px}.season-text{flex:1;display:grid}.season-text b{font-family:var(--font-display);font-size:var(--fs-lg)}.season-text small{color:#f6f0e6bf}.gold{color:var(--gold);font-weight:800}.season-rank{display:grid;justify-items:center;padding-inline-start:var(--s4);border-inline-start:1px solid rgba(255,255,255,.2)}.season-rank small{font-size:var(--fs-xs);color:#f6f0e6b3}.season-rank b{font-size:32px;line-height:36px;color:var(--gold)}.challenge-card{display:flex;align-items:center;gap:var(--s3);background:var(--surface);border-radius:var(--r-lg);padding:var(--s4) var(--s5);box-shadow:var(--sh-card)}.target{font-size:30px}.challenge-text{flex:1;display:grid}.challenge-text b{font-family:var(--font-display)}.challenge-text small{color:var(--text-muted)}.challenge-prog{display:grid;gap:6px;min-width:96px;text-align:end;font-weight:700}.champs{display:grid;gap:var(--s3)}.podium{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2);align-items:end}.podium li{display:grid;justify-items:center;gap:var(--s1);background:var(--surface);border-radius:var(--r-lg);padding:var(--s5) var(--s2) var(--s3);position:relative;box-shadow:var(--sh-card)}.podium li.p1{order:2;padding-top:var(--s7);background:linear-gradient(180deg,#fff3d6,#fff)}.podium li.p2{order:1}.podium li.p3{order:3}.medal{position:absolute;top:-12px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:var(--fs-sm);font-weight:800;background:var(--gold);color:#2a1d05;box-shadow:0 0 0 3px var(--bg)}.p2 .medal{background:#cfd6e0}.p3 .medal{background:#d79b6a}.pname{font-weight:800;font-size:var(--fs-sm);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pscore{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.feed{display:grid;gap:4px}.feed-row{font-size:var(--fs-sm);color:var(--text-muted)}.tabbar{position:fixed;bottom:0;inset-inline:0;display:flex;justify-content:center;gap:var(--s2);padding:var(--s2) var(--s4) calc(var(--s2) + env(safe-area-inset-bottom));background:#fffffff0;backdrop-filter:blur(12px);border-top:1px solid var(--border);box-shadow:0 -8px 24px #17202e0f}.tabbar button{flex:1;max-width:140px;min-height:54px;background:none;border:0;border-radius:var(--r-md);color:var(--text-muted);cursor:pointer;font-weight:700;font-size:var(--fs-xs);display:grid;place-items:center;gap:2px}.tabbar button span{font-size:20px;line-height:1}.tabbar button.on{color:var(--accent);background:#0b7a7217}.run{position:fixed;inset:0;background:#000;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.run-canvas{position:absolute;inset:0}.hud{position:absolute;inset:0;pointer-events:none;font-family:var(--font-display);color:#fff}.hud-top{position:absolute;top:calc(var(--s4) + env(safe-area-inset-top));inset-inline:0;display:grid;justify-items:center;gap:var(--s1);text-shadow:0 2px 12px rgba(0,0,0,.45)}.hud-dist .num{font-size:64px;line-height:64px;font-weight:800}.hud-dist .unit{font-size:var(--fs-lg);margin-inline-start:4px;opacity:.85}.hud-rank{font-size:var(--fs-sm);font-weight:700;letter-spacing:.06em;opacity:.95;transition:color var(--m-base)}.hud-rank.up{color:#7dffb4}.hud-rank .muted{color:#fffc}.practice{display:block;font-size:var(--fs-xs);color:#ffd27a}.rival{display:flex;align-items:center;gap:var(--s2);background:#0a0e168c;backdrop-filter:blur(8px);border-radius:var(--r-pill);padding:4px 14px 4px 4px;min-width:220px;text-shadow:none}[dir=rtl] .rival{padding:4px 4px 4px 14px}.rival .avatar{box-shadow:none}.rival-body{flex:1;display:grid;gap:4px}.rival-text{font-size:var(--fs-sm);font-weight:700;white-space:nowrap}.rival .bar{height:5px;background:#fff3}.rival .bar i{background:#ff7d6b}.toasts{position:absolute;top:calc(176px + env(safe-area-inset-top));inset-inline:0;display:grid;justify-items:center;gap:var(--s2)}.toast{background:#0a0e16a8;backdrop-filter:blur(8px);border-radius:var(--r-pill);padding:var(--s2) var(--s4);font-weight:800;font-size:var(--fs-base);animation:tin .3s var(--m-spring);display:flex;align-items:center;gap:var(--s2)}.toast-passed{border:1px solid rgba(125,255,180,.5)}.toast-passed:before{content:"✓";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#22a45d;font-size:12px}.toast-milestone{background:linear-gradient(90deg,#f5d58a,#ffe9b5);color:#2a1d05;font-size:var(--fs-xl);padding:var(--s3) var(--s6)}@keyframes tin{0%{transform:translateY(-10px) scale(.9);opacity:0}}@keyframes pop{0%{transform:scale(1.6);opacity:.2}}.tag{position:absolute;top:0;left:0;white-space:nowrap;background:#0a0e168c;color:#fff;border-radius:var(--r-pill);padding:2px 10px;font-size:var(--fs-xs);font-weight:700;transform-origin:50% 100%;will-change:transform;display:flex;align-items:center;gap:4px}.tag-heat{background:#cf4430e0;font-size:var(--fs-sm);padding:4px 12px}.tag-best{background:#0b7a72eb}.countdown{position:absolute;inset:0;display:grid;place-items:center;font-size:140px;font-weight:800;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.45);animation:pop .5s var(--m-spring)}.go{position:absolute;inset:0;display:grid;place-items:center;font-size:110px;font-weight:800;color:#e8553f;text-shadow:0 8px 40px rgba(0,0,0,.35);animation:goout 1s var(--m-ease) forwards;letter-spacing:.02em}@keyframes goout{0%{transform:scale(.6);opacity:0}25%{transform:scale(1);opacity:1}75%{opacity:1}to{transform:scale(1.25);opacity:0}}.hint{position:absolute;bottom:calc(var(--s7) + env(safe-area-inset-bottom));inset-inline:0;display:grid;justify-items:center;gap:var(--s2);font-weight:800;font-size:var(--fs-sm);letter-spacing:.12em;text-shadow:0 2px 10px rgba(0,0,0,.6)}.slider{display:block;width:110px;height:6px;border-radius:6px;background:#fff6;position:relative}.slider i{position:absolute;top:50%;left:50%;width:22px;height:22px;margin:-11px;border-radius:50%;background:#fff;box-shadow:0 2px 10px #0006;animation:slide 1.6s ease-in-out infinite}@keyframes slide{0%,to{transform:translate(-36px)}50%{transform:translate(36px)}}.speedlines{position:absolute;inset:0;background:repeating-conic-gradient(from 0deg at 50% 30%,#fff0 0deg 5deg,#ffffff24 5.4deg,#fff0 6deg);-webkit-mask:radial-gradient(circle at 50% 30%,transparent 35%,#000 78%);mask:radial-gradient(circle at 50% 30%,transparent 35%,#000 78%);transition:opacity .4s}.over{position:fixed;inset:0;z-index:20;background:linear-gradient(180deg,#0e0a088c,#0e0a08e6 45%,#0e0a08f5);display:grid;align-items:center;overflow:auto;animation:fade .35s}.over-inner{max-width:var(--max);margin:0 auto;width:100%;padding:var(--s7) var(--gutter) calc(var(--s6) + env(safe-area-inset-bottom));display:grid;gap:var(--s3);text-align:center;color:#fff}.over-kicker{color:#ff8a75;font-family:var(--font-display);font-weight:800;letter-spacing:.14em;font-size:var(--fs-sm)}.over-dist{font-size:96px;line-height:1;font-weight:800}.badge-best{justify-self:center;background:linear-gradient(90deg,#f5d58a,#ffe9b5);color:#2a1d05;font-weight:800;border-radius:var(--r-pill);padding:var(--s1) var(--s4);animation:pop .5s var(--m-spring)}.over-rank{font-family:var(--font-display);font-size:32px;line-height:38px;font-weight:800}.over-sub{color:#ffffffa6;font-size:var(--fs-sm)}.over-err{color:#ffb4a6;font-weight:700}.next-rival{display:flex;align-items:center;gap:var(--s3);background:#ffffff14;border:1px solid rgba(255,125,107,.45);border-radius:var(--r-lg);padding:var(--s3);text-align:start}.next-rival .avatar{box-shadow:none}.next-rival>div{flex:1;display:grid}.next-rival small{color:#ff9d8c;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em}.again-btn{min-height:64px;border:0;border-radius:var(--r-pill);background:linear-gradient(180deg,#ec6a52,var(--accent-2));color:#fff;font-family:var(--font-display);font-weight:800;font-size:26px;cursor:pointer;margin-top:var(--s2);box-shadow:0 14px 34px #cf443073}.ghost-btn{min-height:50px;border-radius:var(--r-pill);background:#ffffff0f;border:1px solid rgba(255,255,255,.25);color:#fff;font-weight:800;cursor:pointer;letter-spacing:.04em}.sponsored{display:block;position:relative;border-radius:var(--r-md);overflow:hidden;border:1px solid rgba(255,255,255,.15);text-decoration:none;color:#fff;background:#ffffff0f}.sponsored img{display:block;width:100%;height:auto}.sponsored-empty{padding:var(--s4);font-weight:700}.ad-label{position:absolute;top:6px;inset-inline-start:6px;font-size:10px;background:#0009;border-radius:4px;padding:1px 6px;color:#fff}.board .topbar{display:flex;align-items:center;justify-content:space-between;padding-top:env(safe-area-inset-top)}.board .topbar h1{font-size:var(--fs-xl)}.tabs{display:grid;grid-template-columns:repeat(4,1fr);background:var(--surface);border-radius:var(--r-pill);padding:4px;gap:4px;box-shadow:var(--sh-card)}.tabs button{min-height:42px;border:0;background:none;border-radius:var(--r-pill);cursor:pointer;color:var(--text-muted);font-weight:700}.tabs button.on{background:var(--ink);color:var(--on-ink)}.rows{list-style:none;margin:0;padding:0;display:grid;gap:6px}.row{display:flex;align-items:center;gap:var(--s3);background:var(--surface);border-radius:var(--r-md);padding:var(--s2) var(--s3);min-height:56px;box-shadow:var(--sh-card)}.row .rk{width:2.4em;text-align:center;font-weight:800;color:var(--text-muted)}.row .nm{flex:1;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .sc{font-weight:800}.row.top1 .rk{color:#b8860b}.row.top2 .rk{color:#7b8794}.row.top3 .rk{color:#a8653a}.row.me{outline:2px solid var(--accent);background:#eef8f6}.row.sticky{position:sticky;bottom:calc(var(--s3) + env(safe-area-inset-bottom))}.skeleton{background:linear-gradient(90deg,var(--surface) 0%,var(--surface-2) 50%,var(--surface) 100%);background-size:200% 100%;animation:sk 1.2s linear infinite}@keyframes sk{to{background-position:-200% 0}}.sheet-scrim{position:fixed;inset:0;background:#17202e73;display:grid;align-items:end;z-index:50;animation:fade .2s}.sheet{background:var(--bg);border-radius:var(--r-lg) var(--r-lg) 0 0;max-width:var(--max);width:100%;margin:0 auto;padding:var(--s3) var(--s4) calc(var(--s6) + env(safe-area-inset-bottom));animation:up .28s var(--m-ease);max-height:88dvh;overflow:auto}.sheet-grip{width:40px;height:4px;background:var(--border);border-radius:4px;margin:0 auto var(--s3)}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--s4)}.sheet-body{display:grid;gap:var(--s4)}.sheet .field input{text-align:start;font-size:var(--fs-base)}@keyframes up{0%{transform:translateY(40px);opacity:0}}@keyframes fade{0%{opacity:0}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.speedlines{display:none}}.loading-cover{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:var(--s4);background:linear-gradient(180deg,#120d0a26,#120d0abf),url(/art/sky_dusk.webp) 60% 40%/cover no-repeat;color:#fff;pointer-events:none}.tag-ghost{font-size:var(--fs-sm);padding:4px 12px;background:#0a0e16b8;animation:tin .35s var(--m-spring)}
