@import "https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-base:#0a0e14;--bg-surface:#111720;--bg-raised:#1a2235;--bg-overlay:#212d42;--bg-hover:#263350;--text-primary:#e8dfc8;--text-secondary:#9aa5b8;--text-muted:#5a6478;--text-inverse:#0a0e14;--accent:#c8893a;--accent-bright:#e0a04a;--accent-dim:#7a5222;--accent-glow:#c8893a26;--success:#4a9e6b;--error:#c84a4a;--warning:#c8a03a;--info:#4a7ec8;--border:#c8893a2e;--border-strong:#c8893a59;--font-display:"Cinzel", Georgia, serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:4px;--radius:8px;--radius-lg:12px;--radius-xl:20px;--shadow-sm:0 1px 3px #0006;--shadow:0 4px 12px #00000080;--shadow-lg:0 8px 32px #0009;--shadow-accent:0 0 20px #c8893a33}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font-body);background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6}h1,h2,h3{font-family:var(--font-display);letter-spacing:.03em;color:var(--text-primary);font-weight:600}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-bright)}code,pre{font-family:var(--font-mono);font-size:.875em}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-base)}::-webkit-scrollbar-thumb{background:var(--bg-overlay);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent-dim)}.app-layout{flex-direction:column;min-height:100vh;display:flex}.page-center{min-height:100vh;padding:var(--space-6);justify-content:center;align-items:center;display:flex}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-8);box-shadow:var(--shadow)}.card-sm{padding:var(--space-5) var(--space-6)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;font-size:.9375rem;font-weight:500;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--text-inverse)}.btn-primary:hover:not(:disabled){background:var(--accent-bright);box-shadow:var(--shadow-accent)}.btn-secondary{background:var(--bg-raised);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn-ghost{color:var(--text-secondary);background:0 0;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background:var(--bg-raised);color:var(--text-primary)}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:.875rem}.btn-lg{padding:var(--space-4) var(--space-8);font-size:1.0625rem}.btn-full{width:100%}.form-group{gap:var(--space-2);flex-direction:column;display:flex}.form-label{color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase;font-size:.875rem;font-weight:500}.form-input{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3) var(--space-4);color:var(--text-primary);font-family:var(--font-body);outline:none;width:100%;font-size:1rem;transition:border-color .15s,box-shadow .15s}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-input::placeholder{color:var(--text-muted)}.form-error{color:var(--error);font-size:.875rem}.badge{letter-spacing:.04em;border-radius:99px;align-items:center;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-accent{background:var(--accent-glow);color:var(--accent-bright);border:1px solid var(--accent-dim)}.badge-success{color:var(--success);background:#4a9e6b26;border:1px solid #4a9e6b4d}.badge-muted{background:var(--bg-overlay);color:var(--text-secondary);border:1px solid var(--border)}.conn-status{color:var(--text-muted);align-items:center;gap:6px;font-size:.8125rem;display:inline-flex}.conn-dot{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.conn-dot.connected{background:var(--success);box-shadow:0 0 6px var(--success)}.conn-dot.connecting{background:var(--warning);animation:1s infinite pulse}.conn-dot.disconnected{background:var(--error)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.divider{align-items:center;gap:var(--space-4);color:var(--text-muted);font-size:.8125rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.alert{padding:var(--space-3) var(--space-5);border-radius:var(--radius);border:1px solid;font-size:.9375rem}.alert-error{color:#e88;background:#c84a4a1f;border-color:#c84a4a4d}.alert-success{color:#6d9;background:#4a9e6b1f;border-color:#4a9e6b4d}.alert-info{color:#8af;background:#4a7ec81f;border-color:#4a7ec84d}.navbar{padding:var(--space-4) var(--space-8);background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:100;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.navbar-brand{font-family:var(--font-display);color:var(--accent);letter-spacing:.08em;font-size:1.375rem;font-weight:700}.navbar-actions{align-items:center;gap:var(--space-4);display:flex}.room-code{font-family:var(--font-mono);letter-spacing:.25em;color:var(--accent);text-align:center;padding:var(--space-4);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);-webkit-user-select:all;user-select:all;font-size:2rem;font-weight:500}@media (width<=640px){.hide-mobile{display:none!important}.card{padding:var(--space-5)}.navbar{padding:var(--space-3) var(--space-4)}}
