:root{--bg: #0b0f17;--panel: #131a26;--panel-2: #1b2536;--line: #26324a;--text: #e8eefc;--muted: #8ea0c0;--blue: #38bdf8;--red: #fb7185;--accent: #facc15;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden;overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none}body{position:fixed;inset:0;width:100%;height:var(--vvh, 100svh)}#stage{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#ui{position:absolute;inset:0;pointer-events:none}#ui>*{pointer-events:auto}.screen{position:absolute;inset:0;display:grid;place-items:center;padding:calc(16px + var(--safe-t)) 16px calc(16px + var(--safe-b));overflow-y:auto;background:radial-gradient(120% 80% at 50% 0%,#16203200,#0b0f17 70%),var(--bg)}.screen[hidden]{display:none}.panel{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:24px 20px;box-shadow:0 24px 60px #0006;text-align:center}h1{margin:0;font-size:40px;letter-spacing:-.02em}h1 .dot{color:var(--blue)}.sub{margin:6px 0 20px;color:var(--muted);font-size:14px}.field{display:block;text-align:left;margin-bottom:14px}.field span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}input{width:100%;background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:14px;font-size:16px;font-family:inherit;outline:none}input:focus{border-color:var(--blue)}#code{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-weight:700}.btn{width:100%;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-weight:600;font-size:16px;padding:15px 16px;border-radius:12px;cursor:pointer;transition:transform .06s ease,filter .15s ease}.btn:active{transform:scale(.98)}.btn.primary{background:linear-gradient(180deg,#3ea8ff,#1d7fe0);border-color:#1d7fe0;color:#04121f}.btn.primary:disabled{background:var(--panel-2);color:var(--muted);border-color:var(--line);cursor:not-allowed}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted);font-weight:500;margin-top:10px;padding:10px}.btn.tiny{padding:9px 10px;font-size:13px;border-radius:10px}.or{position:relative;margin:18px 0;color:var(--muted);font-size:12px}.or:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--line)}.or span{position:relative;background:var(--panel);padding:0 10px}.join-row{display:grid;grid-template-columns:1fr auto;gap:10px}.join-row .btn{width:auto;padding-inline:22px}.hint{margin:12px 0 0;font-size:13px;color:var(--muted);min-height:18px}.hint.error{color:var(--red)}.code-display{display:block;width:100%;font-size:46px;font-weight:800;letter-spacing:.18em;padding:12px 0 12px .18em;color:var(--accent);background:var(--panel-2);border:1px dashed var(--line);border-radius:14px;font-family:inherit;cursor:pointer}#share-hint{margin-bottom:18px}.teams{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}.team{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:10px}.team header{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.team-a header{color:var(--blue)}.team-b header{color:var(--red)}.team ul{list-style:none;margin:0 0 8px;padding:0;min-height:104px}.team li{font-size:14px;padding:3px 0;display:flex;align-items:center;justify-content:center;gap:5px}.team li.you{font-weight:700}.team li .tag{font-size:10px;color:var(--muted)}#hud{position:absolute;top:0;left:0;right:0;padding-top:calc(8px + var(--safe-t));display:grid;justify-items:center;gap:4px;pointer-events:none}#hud[hidden]{display:none}.hud-bar{display:flex;align-items:center;gap:12px;background:#0b0f17cc;border:1px solid var(--line);border-radius:999px;padding:6px 14px;backdrop-filter:blur(8px)}.score{font-size:20px;font-weight:800;min-width:20px;text-align:center}.score-a{color:var(--blue)}.score-b{color:var(--red)}.round{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.timer{font-size:13px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}#banner{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}#banner[hidden]{display:none}.banner-inner{font-size:clamp(28px,9vw,56px);font-weight:800;text-align:center;letter-spacing:-.02em;text-shadow:0 6px 30px #000000aa;padding:0 20px;animation:pop .25s ease}.banner-inner small{display:block;font-size:15px;font-weight:600;color:var(--muted);margin-top:10px;letter-spacing:0}@keyframes pop{0%{transform:scale(.86);opacity:0}to{transform:scale(1);opacity:1}}#toast{position:absolute;left:50%;bottom:calc(20px + var(--safe-b));transform:translate(-50%);background:#1b2536ee;border:1px solid var(--line);border-radius:999px;padding:10px 18px;font-size:14px;max-width:90vw;text-align:center}#toast[hidden]{display:none}@media(prefers-reduced-motion:reduce){.banner-inner{animation:none}}.team li .tag.bot{color:var(--accent)}.team li button.kick{background:none;border:none;color:var(--muted);font:inherit;font-size:15px;line-height:1;padding:0 2px;cursor:pointer}.watch{display:flex;align-items:center;justify-content:center;gap:9px;margin:0 0 14px;font-size:14px;color:var(--muted);cursor:pointer}.watch input{width:18px;height:18px;accent-color:var(--blue);margin:0}.host-only[hidden]{display:none}.spectating-note{margin:0 0 10px;font-size:13px;color:var(--accent)}
