:root{--bg:#1a1523;--card:#241f31;--fg:#f4f2f8;--muted:#a49db8;--accent:#6c5ce7;--accent-dim:#574bc4;--danger:#e05a5a;--line:#ffffff14;--ok:#46c37b;--warn:#e0b64a}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;width:100%;max-width:420px;padding:28px;box-shadow:0 24px 48px #00000073}.header{align-items:center;gap:10px;margin-bottom:20px;display:flex}.logo{background:linear-gradient(135deg, var(--accent), #a29bfe);border-radius:8px;width:28px;height:28px}.brand{font-size:18px;font-weight:700}.muted{color:var(--muted)}.error{color:var(--danger);font-size:14px}.admission{flex-direction:column;display:flex}.admission label{color:var(--muted);margin:12px 0 6px;font-size:13px}.admission input{border:1px solid var(--line);color:var(--fg);background:#14101d;border-radius:10px;outline:none;padding:10px 12px;font-size:15px}.admission input:focus{border-color:var(--accent)}button{cursor:pointer;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:11px 14px;font-size:14px;font-weight:600}button:hover{background:var(--accent-dim)}button:disabled{opacity:.6;cursor:default}.admission button{margin-top:20px}button.danger{border:1px solid var(--danger);color:var(--danger);background:0 0}.message h2{margin:0 0 8px;font-size:20px}.runtime .status{color:var(--muted);align-items:center;gap:8px;margin-bottom:14px;font-size:14px;display:flex}.dot{border-radius:50%;width:9px;height:9px}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.status .count{margin-left:auto}.participants{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.participant{border:1px solid var(--line);background:#14101d;border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.avatar{background:var(--accent-dim);border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;font-weight:700;display:flex}.pname{flex:1}.tag{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:2px 6px;font-size:11px}.tag.mutedtag{color:var(--warn)}.note{text-align:center;margin:16px 0;font-size:13px}.controls{gap:8px;display:flex}.controls button{background:#2f2842;flex:1}.controls button.danger{background:0 0}.app.wide{align-items:flex-start}.prejoin{flex-direction:column;gap:12px;display:flex}.preview{aspect-ratio:16/9;background:#0e0e0e;border-radius:12px;justify-content:center;align-items:center;display:flex;overflow:hidden}.notice{margin:0;font-size:13px}.devicerow{gap:8px;display:flex}.toggle{background:#2f2842;flex:1}.toggle.off{border:1px solid var(--line);color:var(--muted);background:0 0}.selectors{flex-wrap:wrap;gap:8px;display:flex}.selectors select{min-width:140px;color:var(--fg);border:1px solid var(--line);background:#14101d;border-radius:8px;flex:1;padding:8px}.primary{background:var(--accent)}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:14px 0;display:grid}.tile{aspect-ratio:4/3;border:1px solid var(--line);background:#0e0e0e;border-radius:12px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.tilevideo{object-fit:cover;width:100%;height:100%}.tileavatar{background:var(--accent-dim);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;font-size:26px;font-weight:700;display:flex}.tileavatar.big{width:88px;height:88px;font-size:34px}.tilebar{background:linear-gradient(#0000,#0009);align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:flex;position:absolute;bottom:0;left:0;right:0}.tilename{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.pill{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:10px}.card.wide{max-width:1100px}.warnnote{color:var(--warn)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stage{align-items:stretch;gap:12px;display:flex}.stagemain{flex:1;min-width:0}.presentation{background:#0b0b0b;border-radius:12px;margin-bottom:10px;overflow:hidden}.presentation .tile{aspect-ratio:16/9}.grid.strip{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.grid.strip .tile{aspect-ratio:4/3}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chat{border:1px solid var(--line);background:#14101d;border-radius:12px;flex-direction:column;flex:0 0 300px;width:300px;max-height:460px;display:flex}.chathead{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 12px;font-weight:600;display:flex}.iconbtn{color:var(--muted);background:0 0;padding:2px 6px}.chatlist{flex-direction:column;flex:1;gap:10px;padding:10px 12px;display:flex;overflow-y:auto}.chatlist .empty{text-align:center;margin:auto 0}.msg .msghead{align-items:baseline;gap:8px;display:flex}.msgname{font-size:13px;font-weight:600}.msgtime{color:var(--muted);font-size:11px}.msgbody{word-break:break-word;white-space:pre-wrap;font-size:14px}.msgbody a,.msg.mine .msgname{color:var(--accent)}.chatinput{border-top:1px solid var(--line);gap:8px;padding:10px 12px;display:flex}.chatinput input{border:1px solid var(--line);color:var(--fg);background:#0e0e0e;border-radius:8px;outline:none;flex:1;padding:9px 10px}.controls{flex-wrap:wrap}@media (width<=720px){.stage{flex-direction:column}.chat{flex:auto;width:auto;max-height:300px}}
