:root{color-scheme:dark;font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;--bg: #0b0d10;--panel: #14181e;--line: #2a323c;--text: #e8edf2;--muted: #8b98a8;--live: #3dd68c;--warn: #f0b429;--off: #ff6b6b}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{min-height:100dvh;-webkit-text-size-adjust:100%}.shell{padding:calc(16px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));max-width:1600px;margin:0 auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.topbar-title{display:flex;align-items:center;gap:10px}.topbar-actions{display:flex;align-items:center;gap:8px}.topbar h1{margin:0;font-size:1.15rem;font-weight:600}.topbar p{margin:3px 0 0;color:var(--muted);font-size:.82rem}button{background:#e8edf2;color:#101418;border:0;border-radius:8px;padding:9px 13px;font:inherit;font-weight:600;cursor:pointer;min-height:40px}button.ghost{background:transparent;color:var(--text);border:1px solid var(--line);font-size:1.1rem;line-height:1;padding:9px 14px}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.segmented button{background:transparent;color:var(--muted);border-radius:0;font-size:.85rem;padding:8px 14px}.segmented button.on{background:var(--text);color:#101418}.grid{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width: 640px){.grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.grid{grid-template-columns:repeat(3,1fr)}}.tile{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;color:var(--text)}.tile.selected{border-color:#3dd68c8c}.tile .stage{display:block;width:100%;padding:0;border:0;border-radius:0;background:#000;cursor:pointer;min-height:0}.play-badge{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#0a0d109e;border:1px solid rgba(232,237,242,.35);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--text);pointer-events:none}.play-badge svg{width:26px;height:26px;margin-left:2px}.tile-label{display:flex;align-items:center;gap:9px;padding:8px 10px;font-size:.88rem;font-weight:600}.tile-name{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-toggle,.tile-expand{flex:none;background:transparent;border:1px solid var(--line);color:var(--text);border-radius:8px;padding:0;width:34px;height:34px;min-height:34px;display:grid;place-items:center}.tile-toggle svg{width:17px;height:17px}.tile.selected .tile-toggle{border-color:#3dd68c80;color:var(--live)}.tile-expand{font-size:.95rem;line-height:1}.stage{position:relative;background:#000;aspect-ratio:16 / 9}.detail-stage{border-radius:14px;overflow:hidden;border:1px solid var(--line)}.feed{display:block;width:100%;height:100%;object-fit:cover}.detail-stage .feed{object-fit:contain}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#00000073;color:var(--muted);font-size:.85rem;pointer-events:none}.overlay p{margin:0}.dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--muted)}.dot.live{background:var(--live);box-shadow:0 0 0 3px #3dd68c2e}.dot.error{background:var(--off)}.badge{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;padding:4px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.badge.live{color:var(--live);border-color:#3dd68c66}.badge.connecting{color:var(--warn);border-color:#f0b42966}.badge.error{color:var(--off);border-color:#ff6b6b66}.stats{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid var(--line);border-radius:14px;margin-top:12px;overflow:hidden}@media (min-width: 640px){.stats{grid-template-columns:repeat(4,1fr)}}.stat{display:flex;flex-direction:column;gap:4px;padding:11px 13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.stat-label{color:var(--muted);font-size:.66rem;text-transform:uppercase;letter-spacing:.07em}.stat-value{font-size:.92rem;font-weight:600;font-variant-numeric:tabular-nums}.hint{color:var(--muted);font-size:.8rem;line-height:1.5;margin:14px 2px 0}
