:root{--bg:#080b0f;--surface:#0e1318;--surface2:#141b22;--border:#1e2a35;--accent:#00d4ff;--red:#ff4d6d;--green:#a8ff3e;--gold:gold;--lemon:#ffd93d;--text:#e8f0f8;--muted:#8aa0b2;--font-mono:"Space Mono", "Space Mono Fallback", monospace;--font-head:"Syne", sans-serif;--font-clear:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--oe-src-color:#3a5068;--vkb-bg:#111820;--vkb-key:#1e2d3d;--vkb-fn:#111820}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scrollbar-gutter:stable}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);min-height:100vh;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#00d4ff08 1px,#0000 1px),linear-gradient(90deg,#00d4ff08 1px,#0000 1px);background-size:40px 40px;position:fixed;inset:0}.btn{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-size:.78rem;font-weight:700;transition:all .18s}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover{background:#3df;transform:translateY(-1px)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-ghost{color:var(--muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn-match{color:var(--green);background:#a8ff3e1f;border:1px solid #a8ff3e66;position:relative;overflow:hidden}.btn-match:hover{background:#a8ff3e33}.btn-match .badge{background:var(--green);color:#000;letter-spacing:.04em;border-radius:0 8px 0 6px;padding:2px 6px;font-size:.55rem;font-weight:700;position:absolute;top:-1px;right:-1px}.btn-danger{color:var(--red);background:0 0;border:1px solid #ff4d6d66}.btn-danger:hover{background:#ff4d6d1a}.btn-with-icon{align-items:center;gap:6px;text-decoration:none;display:inline-flex}.btn-with-icon .lb-trigger-icon{width:1rem;height:1rem}.btn-row{flex-wrap:wrap;justify-content:center;gap:9px;display:flex}.screen{animation:.3s fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.stat{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:10px;padding:13px 10px}.stat-val{font-family:var(--font-head);color:var(--accent);font-size:1.6rem;font-weight:800}.stat-val.idle{color:var(--muted)}.stat-lbl{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-top:2px;font-size:.6rem}.stats-row{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:22px;display:grid}.prog-wrap{margin-bottom:18px}.prog-track{background:var(--surface2);border:1px solid var(--border);border-radius:100px;height:6px;overflow:hidden}.prog-fill{background:linear-gradient(90deg, var(--accent), var(--green));border-radius:100px;height:100%;transition:width .3s}.prog-pct{color:var(--muted);text-align:right;margin-top:4px;font-size:.68rem}.mode-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px;display:flex}.mode-left{flex-direction:column;gap:3px;display:flex}.mode-title{font-family:var(--font-head);font-size:1.3rem;font-weight:800}.mode-nick{color:var(--accent);font-size:.72rem}.mode-right{align-items:center;gap:8px;display:flex}.toast{background:var(--surface2);border:1px solid var(--border);white-space:nowrap;z-index:200;pointer-events:none;border-radius:100px;padding:9px 20px;font-size:.75rem;animation:.25s fadeUp;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.result-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;max-width:520px;margin:0 auto;padding:38px 34px}.result-emoji{margin-bottom:10px;font-size:3rem}.result-title{font-family:var(--font-head);margin-bottom:5px;font-size:1.9rem;font-weight:800}.result-sub{color:var(--muted);margin-bottom:28px;font-size:.8rem}.result-stats{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:28px;display:grid}.rs{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px 8px}.rs-val{font-family:var(--font-head);color:var(--accent);font-size:1.7rem;font-weight:800}.rs-lbl{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-top:3px;font-size:.6rem}.match-results-list{text-align:left;margin-bottom:24px}.mr-row{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;margin-bottom:6px;padding:11px 14px;display:flex}.mr-row.you{border-color:var(--accent)}.mr-rank{text-align:center;min-width:28px;font-size:1.2rem}.mr-name{flex:1;font-size:.82rem;font-weight:700}.mr-wpm{font-family:var(--font-head);color:var(--accent);font-size:1.1rem;font-weight:800}.mr-wpm-lbl{color:var(--muted);font-size:.6rem}.dnf{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem}.fireworks-canvas{pointer-events:none;z-index:150;position:fixed;inset:0}.winner-glow{animation:1s infinite alternate winnerPulse}@keyframes winnerPulse{0%{text-shadow:0 0 10px var(--gold), 0 0 20px var(--gold)}to{text-shadow:0 0 30px var(--gold), 0 0 60px var(--gold), 0 0 80px #fff}}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;margin:22px auto 0;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dot{background:var(--muted);border-radius:50%;width:7px;height:7px}.dot.live{background:var(--green);box-shadow:0 0 8px var(--green);animation:1.8s infinite bpulse}@keyframes bpulse{0%,to{opacity:1}50%{opacity:.4}}.rank-dot{background:var(--surface2);border:1px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.6rem;font-weight:700;display:flex}.rank-dot.r1{background:var(--gold);color:#000;border-color:var(--gold)}.rank-dot.r2{color:#000;background:#c0c8d0;border-color:#c0c8d0}.rank-dot.r3{color:#000;background:#cd7f32;border-color:#cd7f32}.countdown-wrap{text-align:center;padding:80px 0}.cd-num{font-family:var(--font-head);color:var(--accent);text-shadow:0 0 60px #00d4ff66;font-size:9rem;font-weight:800;line-height:1;animation:.3s cdbounce}@keyframes cdbounce{0%{transform:scale(1.3)}to{transform:scale(1)}}.cd-label{color:var(--muted);letter-spacing:.2em;text-transform:uppercase;margin-top:14px;font-size:.9rem}.err-card{text-align:center;background:var(--surface);border:1px solid var(--red);border-radius:14px;max-width:440px;margin:80px auto;padding:38px 28px}.err-card h2{font-family:var(--font-head);color:var(--red);margin-bottom:10px;font-size:1.4rem}.err-card p{color:var(--muted);margin-bottom:22px;font-size:.8rem;line-height:1.7}.lobby-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:22px}.lobby-panel h3{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;font-size:.68rem}.player-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.p-slot{background:var(--bg);border:1px solid var(--border);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:80px;padding:14px 10px;transition:border-color .2s;display:flex}.p-slot.filled{border-color:#00d4ff59}.p-slot.you{border-color:var(--accent)}.p-avatar{background:var(--surface2);border:2px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.9rem;display:flex}.p-slot.filled .p-avatar{border-color:var(--accent)}.p-name{font-size:.72rem;font-weight:700}.p-you{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;font-size:.6rem}.p-empty{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem}.prompt-preview{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:8px;margin-bottom:14px;padding:12px 16px;font-size:.82rem;line-height:1.7}.prompt-preview label{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:.6rem;display:block}.lobby-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.lobby-hint{color:var(--muted);font-size:.72rem}.auto-start-badge{color:var(--green);background:#a8ff3e14;border:1px solid #a8ff3e4d;border-radius:6px;padding:4px 10px;font-size:.72rem}.auto-start-badge span{font-size:.9rem;font-weight:700}.racers-panel{margin-bottom:16px}.racers-panel h3{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:.68rem}.racer-row{align-items:center;gap:10px;margin-bottom:8px;display:flex}.racer-name{text-overflow:ellipsis;white-space:nowrap;min-width:90px;font-size:.78rem;font-weight:700;overflow:hidden}.racer-name.you{color:var(--accent)}.r-track{background:var(--bg);border:1px solid var(--border);border-radius:100px;flex:1;height:7px;overflow:hidden}.r-fill{background:linear-gradient(90deg, var(--accent), var(--green));border-radius:100px;height:100%;transition:width .35s}.racer-wpm{text-align:right;min-width:52px;color:var(--muted);font-size:.72rem}.app-container{flex-direction:column;min-height:100vh;display:flex}.app-container>*{min-width:0}.app-container>main{overflow-wrap:break-word;width:100%}.ad-layout{align-items:flex-start;min-height:100vh;display:flex}.ad-slot-left,.ad-slot-right{flex-shrink:0;justify-content:center;align-items:center;width:160px;height:100vh;display:flex;position:sticky;top:0}.ad-placeholder{border:2px dashed var(--border);width:160px;height:600px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;background:var(--surface);opacity:0;pointer-events:none;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:.65rem;transition:opacity .4s;display:flex}.ad-placeholder .ad-icon{font-size:1.4rem}.ads-active .ad-placeholder{opacity:1;pointer-events:auto}.main-col{flex:1;min-width:0}main{z-index:1;max-width:860px;margin:0 auto;padding:32px 20px 80px;position:relative}.ad-transition{text-align:center;padding:40px 20px}.ad-trans-stats{grid-template-columns:repeat(3,1fr);gap:12px;max-width:360px;margin:0 auto 28px;display:inline-grid}.ad-trans-countdown{font-family:var(--font-head);color:var(--muted);margin-bottom:8px;font-size:1rem;font-weight:700}.ad-trans-countdown span{color:var(--accent);font-size:1.4rem}.ad-trans-hint{color:var(--muted);letter-spacing:.06em;font-size:.72rem}.ad-trans-title{font-family:var(--font-head);margin-bottom:6px;font-size:2rem;font-weight:800}.ad-trans-sub{color:var(--muted);margin-bottom:28px;font-size:.8rem}.match-banner{z-index:9;background:#00d4ff12;border-bottom:1px solid #00d4ff33;justify-content:space-between;align-items:center;padding:10px 26px;animation:.3s slideDown;display:flex;position:relative}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}.match-banner-text{color:var(--accent);font-size:.78rem}.guest-signin-banner{gap:14px}.guest-signin-actions{flex-shrink:0;gap:8px;display:flex}@media (width<=768px){.guest-signin-banner{flex-direction:column;align-items:stretch;padding:10px 16px}.guest-signin-actions{justify-content:flex-end}.desktop-layout__ad{display:none!important}}.lb-trigger-btn{border:1px solid var(--border);color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:100px;align-items:center;gap:8px;margin:28px auto 0;padding:9px 18px;font-size:.72rem;font-weight:700;transition:border-color .18s,color .18s,background .18s;display:flex}.lb-trigger-btn:hover{border-color:var(--gold);color:var(--gold);background:#ffd7000f}.lb-trigger-btn{width:fit-content;text-decoration:none}.lb-trigger-icon{flex:none;width:1.1rem;height:1.1rem}.lb-you-badge{background:var(--accent);color:var(--bg);letter-spacing:.06em;border-radius:4px;flex-shrink:0;padding:2px 5px;font-size:.5rem;font-weight:800}.btn-secondary{color:var(--accent);background:#00d4ff1a;border:1px solid #00d4ff4d}.btn-secondary:hover{background:#00d4ff33}html[dir=rtl] .logo{font-family:var(--font-head)}html[dir=rtl] .oe-wrap,html[dir=rtl] [class^=oe-],html[dir=rtl] [class^=tbe-],html[dir=rtl] [class^=vkb]{font-family:var(--font-mono,monospace)}.about-page p a{color:var(--accent,#00d4ff)}html[dir=rtl] .logo,html[dir=rtl] .oe-wrap,html[dir=rtl] [class^=oe-],html[dir=rtl] [class^=tbe-],html[dir=rtl] [class^=vkb],html[dir=rtl] canvas,html[dir=rtl] .prog-track,html[dir=rtl] .r-track,html[dir=rtl] .lb-row-bar-wrap,html[dir=rtl] .lbp-bar-wrap{direction:ltr}html:lang(zh-Hans) :where(body,p,h1,h2,h3,h4,h5,li,a,button,span,div,dt,dd,summary,strong){font-family:var(--font-mono,monospace), "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif}html:lang(zh-Hant) :where(body,p,h1,h2,h3,h4,h5,li,a,button,span,div,dt,dd,summary,strong){font-family:var(--font-mono,monospace), "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", sans-serif}html:lang(ja) :where(body,p,h1,h2,h3,h4,h5,li,a,button,span,div,dt,dd,summary,strong){font-family:var(--font-mono,monospace), "Hiragino Sans", "Yu Gothic", "Meiryo", "Noto Sans JP", sans-serif}html:lang(zh-Hans) .logo,html:lang(zh-Hant) .logo,html:lang(ja) .logo{font-family:var(--font-head)}.history-note{color:var(--muted,#8aa0b2);text-align:center;margin-top:10px;font-size:.7rem;line-height:1.4}.history-note--local{color:var(--accent,#00d4ff);opacity:.85}.mystats-overlay{z-index:1000;background:#080b0fe0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mystats-modal{background:var(--surface,#0e1318);border:1px solid var(--border,#1e2a35);width:360px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);color:var(--text,#e8f0f8);font-family:var(--font-mono,monospace);border-radius:14px;padding:24px 22px;overflow-y:auto;box-shadow:0 20px 60px #0009}.mystats-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.mystats-title{letter-spacing:.06em;text-transform:uppercase;font-size:1rem;font-weight:700}.mystats-close{color:var(--muted,#8aa0b2);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;font-size:1rem;line-height:1}.mystats-msg{color:var(--muted,#8aa0b2);text-align:center;padding:18px 0;font-size:.8rem}.mystats-summary{gap:8px;margin-bottom:16px;display:flex}.mystats-stat{text-align:center;background:#ffffff08;border-radius:8px;flex:1;min-width:0;padding:10px 6px}.mystats-stat-val{color:var(--accent,#00d4ff);white-space:nowrap;text-overflow:ellipsis;font-size:1.05rem;font-weight:700;overflow:hidden}.mystats-stat-lbl{color:var(--muted,#8aa0b2);text-transform:uppercase;letter-spacing:.06em;margin-top:2px;font-size:.62rem}.mystats-section{color:var(--muted,#8aa0b2);text-transform:uppercase;letter-spacing:.08em;margin:14px 0 8px;font-size:.7rem}.mystats-chart{width:100%;height:auto;display:block}.mystats-bar{fill:var(--accent,#00d4ff);opacity:.85}.mystats-bar-val{fill:var(--text,#e8f0f8);font-size:9px}.mystats-bar-date{fill:var(--muted,#8aa0b2);font-size:8px}.mystats-runs{margin:0;padding:0;list-style:none}.mystats-runs li{border-bottom:1px solid var(--border,#1e2a35);justify-content:space-between;gap:8px;padding:7px 0;font-size:.78rem;display:flex}.mystats-runs li:last-child{border-bottom:none}.mystats-run-main{font-weight:700}.mystats-run-when{color:var(--muted,#8aa0b2)}.mystats-note{color:var(--muted,#8aa0b2);margin-top:12px;font-size:.66rem;line-height:1.4}
