:root{--bg: #1b1b2f;--panel: #262645;--text: #f1f1f8;--muted: #a9a9c8;--accent: #ffd166;--accent-text: #1b1b2f;--danger: #ff7b7b;--radius: 8px}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:grid;place-items:center;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}#root{width:100%;display:grid;place-items:center;padding:16px}h1{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:1rem;line-height:1.6;margin:0 0 1rem}.card{width:min(420px,100%);background:var(--panel);padding:24px;border-radius:var(--radius);display:flex;flex-direction:column;gap:12px}form{display:flex;flex-direction:column;gap:12px}label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:.9rem}label.toggle{flex-direction:row;align-items:center;gap:8px;color:var(--text)}input[type=email],input:not([type]),input[type=text]{padding:10px;border-radius:var(--radius);border:1px solid var(--muted);background:var(--bg);color:var(--text);font:inherit}button,.button{padding:10px 16px;border:0;border-radius:var(--radius);background:var(--accent);color:var(--accent-text);font:inherit;font-weight:600;cursor:pointer;text-align:center;text-decoration:none}button:disabled{opacity:.5;cursor:default}.button.secondary{background:transparent;color:var(--text);border:1px solid var(--muted)}.error{color:var(--danger);margin:0}.preview{width:100%;aspect-ratio:4 / 3;background:#000;border-radius:var(--radius);object-fit:cover}.preview.placeholder{display:grid;place-items:center;color:var(--muted)}body.in-game{overflow:hidden;display:block;min-height:0}body.in-game #root{display:block;padding:0}.game-root{position:fixed;top:0;right:0;bottom:0;left:0}.game-root canvas{display:block}.hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.hud>*{pointer-events:auto}.hud-button{position:absolute;top:12px;left:12px}.banner{position:absolute;top:12px;left:50%;transform:translate(-50%);width:max-content;max-width:calc(100vw - 24px);text-align:center;background:var(--accent);color:var(--accent-text);padding:6px 16px;border-radius:var(--radius);font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#1b1b2feb;padding:16px}.avatar-picker{position:absolute;top:56px;left:12px;width:232px;background:var(--panel);padding:16px;border-radius:var(--radius);display:flex;flex-direction:column;gap:12px}.avatar-picker h2{margin:0;font-size:.9rem}.avatar-grid{display:grid;grid-template-columns:repeat(4,48px);gap:8px}.avatar-option{padding:0;width:48px;height:48px;background:var(--bg);border:2px solid transparent}.avatar-option.selected{border-color:var(--accent)}.avatar-face{display:block;width:48px;height:48px;background-size:144px 192px;background-position:-48px 0;image-rendering:pixelated}.video-strip{position:fixed;top:8px;left:50%;transform:translate(-50%);display:flex;gap:8px;max-width:90vw;overflow-x:auto;z-index:20}.video-tile{position:relative;width:160px;height:100px;border-radius:8px;overflow:hidden;background:#222;border:3px solid transparent;flex:none}.video-tile.speaking{border-color:#3ddc84}.video-tile video{width:100%;height:100%;object-fit:cover}.video-placeholder{display:grid;place-items:center;width:100%;height:100%;color:#fff;font-size:2rem}.video-name{position:absolute;left:4px;bottom:4px;padding:1px 6px;border-radius:4px;background:#0009;color:#fff;font-size:.75rem}.video-screen-btn{position:absolute;top:4px;right:4px;font-size:.7rem}.screen-big{position:fixed;top:8%;right:6%;bottom:8%;left:6%;z-index:30;background:#000;display:flex;flex-direction:column;align-items:center}.screen-big-video{flex:1;min-height:0;max-width:100%}.controls-bar{position:fixed;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:8px;align-items:center;z-index:20}.controls-bar .banner{top:auto;bottom:calc(100% + 8px)}.status-menu,.focus-timer,.zone-actions,.capture-controls{position:absolute;left:12px;background:var(--panel);padding:6px 12px;border-radius:var(--radius);display:flex;align-items:center;gap:8px}.status-menu{top:56px}.focus-timer{top:100px}.hud-dock{position:absolute;left:12px;bottom:72px;z-index:5;max-width:calc(100vw - 24px);display:flex;flex-direction:column;align-items:flex-start;gap:8px}.hud-dock:empty{display:none}.hud-dock>.zone-actions,.hud-dock>.capture-controls{position:static}.zone-actions{flex-wrap:wrap;max-width:320px}body:has(.controls-bar .banner) .hud-dock{bottom:172px}.chat-panel{position:absolute;top:12px;right:12px;bottom:72px;width:280px;max-width:calc(100vw - 24px);background:var(--panel);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:8px}.chat-panel.collapsed{bottom:auto;width:auto}.chat-tabs{display:flex;gap:4px}.chat-tabs [aria-selected=true]{background:var(--accent);color:var(--accent-text)}.chat-messages{flex:1;overflow-y:auto;font-size:.85rem}.chat-messages p{margin:0 0 8px;overflow-wrap:anywhere}.chat-messages time{opacity:.6;font-size:.75rem}.toasts{position:absolute;top:64px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px}.toast{background:var(--panel);padding:8px 12px;border-radius:var(--radius);display:flex;align-items:center;gap:8px}.player-menu{position:fixed;background:var(--panel);padding:8px;border-radius:var(--radius);display:flex;flex-direction:column;gap:6px;z-index:10}.hud-profile{top:12px;left:92px}.profile-menu{position:absolute;top:56px;left:92px;width:232px;background:var(--panel);padding:16px;border-radius:var(--radius);display:flex;flex-direction:column;gap:12px}.profile-menu form{display:flex;flex-direction:column;gap:8px}.hud-admin{top:12px;left:176px;padding:4px 10px;background:var(--panel);border-radius:var(--radius)}.admin table{width:100%;border-collapse:collapse}.admin th,.admin td{text-align:left;padding:4px 8px}.admin-invite{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.banner-capture{top:120px;z-index:25;background:#b3261e;color:#fff}.meetings table{width:100%;border-collapse:collapse}.meetings th,.meetings td{text-align:left;padding:4px 8px}.meeting audio{width:100%}.meeting-transcript{list-style:none;padding:0}
