:root{--c-felt-edge: #0a1412;--c-felt-mid: #15332c;--c-bg-top: #101c1a;--c-bg-bottom: #070d0c;--c-panel: #18211f;--c-plate: #101b19;--c-text: #e8e6e1;--c-muted: #8f9a97;--c-good: #8fd6b4;--c-warn: #e0b15f;--c-bad: #e07a5f;--c-accent: #7ee0c6;--c-team-0: #4ea8de;--c-team-1: #e07a5f;--c-gold: #f6c453;--u: min(100vw / 1920, 100vh / 1080);--font: Noto Sans, Droid Sans, Segoe UI, Arial, sans-serif}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font);color:var(--c-text);background:var(--c-bg-bottom);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}a{color:var(--c-accent);text-decoration:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5em;border:1px solid hsla(0,0%,100%,.12);border-radius:8px;background:#1f2a27;color:var(--c-text);padding:.55em 1.1em;cursor:pointer;user-select:none;transition:background .12s,transform .08s}.button:hover:not(:disabled){background:#283732}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{opacity:.45;cursor:default}.button.primary{background:var(--c-accent);color:#062019;border-color:rgba(0,0,0,0);font-weight:600}.button.primary:hover:not(:disabled){background:#93ead3}.button.danger{color:var(--c-bad)}.panel{background:var(--c-panel);border:1px solid hsla(0,0%,100%,.07);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.45)}.field{display:flex;align-items:center;gap:10px}.field label{color:var(--c-muted);min-width:92px}.field input[type=text]{flex:1;background:#0f1715;border:1px solid hsla(0,0%,100%,.12);border-radius:8px;padding:.5em .7em;color:var(--c-text);font-size:16px}.field input[type=text]:focus{outline:none;border-color:var(--c-accent)}.choice{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.choice .caption{color:var(--c-muted);min-width:92px}.choice .opt{border:1px solid hsla(0,0%,100%,.12);border-radius:999px;padding:.3em .9em;cursor:pointer;color:var(--c-muted)}.choice .opt.on{color:#062019;background:var(--c-accent);border-color:rgba(0,0,0,0)}.choice .opt:disabled{cursor:default;opacity:.6}.toasts{position:fixed;top:30vh;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;z-index:200}.toast{background:rgba(16,27,25,.95);color:var(--c-bad);border:1px solid rgba(224,122,95,.4);padding:.6em 1.2em;border-radius:10px;font-size:18px;opacity:0;transform:translateY(-6px);transition:opacity .2s,transform .2s}.toast.in{opacity:1;transform:none}.toast.toast-info{color:var(--c-good);border-color:rgba(143,214,180,.4)}.card{display:block;aspect-ratio:132/185;filter:drop-shadow(0 2px 3px rgba(0, 0, 0, 0.45));transition:transform .11s ease-out,filter .15s}.card.dimmed{filter:brightness(0.55) saturate(0.7) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.card.ghost{opacity:.68;filter:none}.card text{user-select:none}body.lobby-page{min-height:100vh;background:linear-gradient(180deg, var(--c-bg-top) 0%, var(--c-bg-bottom) 100%);background-attachment:fixed}.lobby{min-height:100vh;display:grid;place-items:center;padding:24px 12px}.lobby-panel{width:min(640px,100%);padding:26px;display:flex;flex-direction:column;gap:10px}.lobby-panel h1{margin:0;font-size:38px;font-weight:500;letter-spacing:.02em}.lobby-panel .caption{margin:0 0 6px;color:var(--c-muted)}.lobby-panel .error{color:var(--c-bad);margin:0}.lobby-panel .button.wide{width:100%;height:42px}.lobby-panel .join{display:flex;gap:8px}.lobby-panel .join .code{flex:1;background:#0f1715;border:1px solid hsla(0,0%,100%,.12);border-radius:8px;padding:.5em .7em;color:var(--c-text);font-size:16px;letter-spacing:.15em;text-transform:uppercase}.lobby-panel .join .code:focus{outline:none;border-color:var(--c-accent)}.lobby-panel .settings{display:flex;flex-direction:column;gap:6px;margin-top:6px}.lobby-panel .public{margin-top:10px}.lobby-panel .public h3{margin:0 0 6px;font-weight:500;color:var(--c-muted);font-size:15px;text-transform:uppercase;letter-spacing:.1em}.lobby-panel .public .list{display:flex;flex-direction:column;gap:4px}.lobby-panel .public .row{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:8px 10px;border-radius:8px;background:hsla(0,0%,100%,.03);color:var(--c-text)}.lobby-panel .public .row:hover{background:rgba(126,224,198,.1)}.lobby-panel .public .row .seats,.lobby-panel .public .row .mode{color:var(--c-muted);font-size:14px}.lobby-panel .public .muted{color:var(--c-muted);margin:0}