body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font:16px/1.5 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#root{min-height:100vh}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d1117;--surface:#161b22;--surface-2:#1c2333;--accent:#3fb950;--accent-glow:#3fb95059;--accent-soft:#3fb9501f;--text:#e6edf3;--text-muted:#8b949e;--border:#21262d;--success:#3fb950;--error:#ef4444;--radius:10px;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-sans:"Inter", system-ui, -apple-system, Segoe UI, Roboto, sans-serif}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);min-height:100vh}.app-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);z-index:50;background:#0d1117cc;padding:0 24px;position:sticky;top:0}.header-inner{grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;max-width:1200px;height:64px;margin:0 auto;display:grid}.header-left,.header-right{align-items:center;gap:24px;display:flex}.header-left{justify-self:start}.header-right{justify-self:end}.app-title{justify-self:center}.nav__logo{font-family:var(--font-mono);color:var(--text);font-size:1.1rem;font-weight:700;text-decoration:none;transition:color .15s}.nav__logo:hover{color:var(--accent)}.nav{align-items:center;gap:28px;display:flex}.nav__link{font-family:var(--font-mono);color:var(--text-muted);cursor:pointer;font-size:.95rem;text-decoration:none;transition:color .15s}.nav__link:hover{color:var(--accent)}.app-title{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text);font-size:1.4rem;font-weight:700}.trophy{margin-right:8px}.connection-status{text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--border);border-radius:20px;align-items:center;gap:8px;padding:4px 12px;font-size:.8rem;font-weight:600;display:flex}.connection-status .dot{border-radius:50%;width:8px;height:8px;display:inline-block}.connection-status.connected{color:var(--success);border-color:var(--success)}.connection-status.connected .dot{background:var(--success);box-shadow:0 0 6px var(--success);animation:2s infinite pulse}.connection-status.disconnected{color:var(--error);border-color:var(--error)}.connection-status.disconnected .dot{background:var(--error)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.app-main{grid-template-columns:1fr 360px;align-items:start;gap:32px;max-width:1200px;margin:0 auto;padding:32px 24px;display:grid}@media (width<=800px){.app-main{grid-template-columns:1fr}.game-section{order:-1}}.game-section{flex-direction:column;align-items:center;display:flex}.game-section .game-card{width:100%;max-width:400px}.section-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:16px;font-size:1rem;font-weight:600}.leaderboard-table-wrapper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.leaderboard-table{border-collapse:collapse;width:100%}.leaderboard-table thead th{background:var(--surface-2);text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:12px 16px;font-size:.75rem;font-weight:600}.leaderboard-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.leaderboard-table tbody tr:last-child{border-bottom:none}.leaderboard-table tbody tr:hover{background:var(--accent-soft)}.leaderboard-table tbody tr.top-three{background:#3fb9500f}.leaderboard-table td{padding:14px 16px;font-size:.95rem}.leaderboard-table .position{width:52px;font-size:1.2rem}.leaderboard-table .pos-num{color:var(--text-muted);font-size:.85rem;font-weight:600}.leaderboard-table .username{font-weight:600}.leaderboard-table .score{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--accent);font-weight:700}.rank-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:#0d1117;border-radius:20px;padding:3px 10px;font-size:.7rem;font-weight:700;display:inline-block}.empty-state{text-align:center;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:48px 24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;transition:border-color .18s}.card:hover{border-color:var(--accent)}.card h2{font-family:var(--font-mono);color:var(--text);margin-bottom:16px;font-size:1rem;font-weight:700}.form{flex-direction:column;gap:10px;display:flex}.form input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:.9rem;transition:border-color .15s}.form input:focus{border-color:var(--accent)}.form input::placeholder{color:var(--text-muted)}.form button{background:var(--accent);color:var(--bg);border:1px solid var(--accent);font-family:var(--font-mono);cursor:pointer;border-radius:8px;padding:10px 16px;font-size:.9rem;font-weight:600;transition:transform .12s,box-shadow .15s,opacity .15s}.form button:hover:not(:disabled){box-shadow:0 0 12px var(--accent-glow);transform:translateY(-2px)}.form button:disabled{opacity:.5;cursor:not-allowed}.form-message{border-radius:6px;margin-top:10px;padding:8px 12px;font-size:.85rem}.form-message.success{color:var(--success);border:1px solid var(--success);background:#10b9811a}.form-message.error{color:var(--error);border:1px solid var(--error);background:#ef44441a}.game-card .game-hint{color:var(--text-muted);text-align:center;font-size:.8rem}.game-stage{flex-direction:column;align-items:center;gap:8px;display:flex}.game-score-live{font-family:var(--font-mono);color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:800}.game-canvas{border:1px solid var(--border);border-radius:var(--radius);touch-action:none;cursor:pointer;max-width:100%;height:auto}.game-over{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.game-over-title{color:var(--error);text-transform:uppercase;letter-spacing:.06em;font-size:1.2rem;font-weight:800}.game-final-score{color:var(--text);font-size:1rem}.game-final-score strong{color:var(--accent);font-variant-numeric:tabular-nums}.game-play-again{background:var(--accent);color:var(--bg);border:1px solid var(--accent);font-family:var(--font-mono);cursor:pointer;border-radius:8px;padding:10px 20px;font-size:.9rem;font-weight:600;transition:transform .12s,box-shadow .15s}.game-play-again:hover{box-shadow:0 0 12px var(--accent-glow);transform:translateY(-2px)}
