*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0d10;--panel:#14171b;--line:#23272d;--text:#e6e8eb;--muted:#9aa2ab;--dim:#5c646d;--live:#22c55e;--warn:#eab308;--error:#ef4444}body{min-height:100dvh;display:grid;place-items:center;padding:16px;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.shell{width:100%;max-width:1100px}.bar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.bar h1{font-size:16px;font-weight:600;letter-spacing:-.01em}.bar .status{margin-left:auto;font-size:13px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--dim)}.dot.live{background:var(--live);box-shadow:0 0 0 4px rgb(34 197 94/.15)}.dot.wait{background:var(--warn);animation:pulse 1.4s ease-in-out infinite}.dot.error{background:var(--error);box-shadow:0 0 0 4px rgb(239 68 68/.15)}@keyframes pulse{50%{opacity:.35}}.stage{position:relative;aspect-ratio:16/9;background:#000;border:1px solid var(--line);border-radius:12px;overflow:hidden}.stage video{width:100%;height:100%;display:block;object-fit:contain}.overlay{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;background:var(--bg)}.spinner{width:26px;height:26px;margin:0 auto 14px;border:2px solid #2a2f36;border-top-color:#6b7480;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.overlay p{color:var(--muted);font-size:14px}.overlay .hint{margin-top:12px;font-size:12px;color:var(--dim);max-width:46ch;line-height:1.6}.overlay code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:2px 6px;color:var(--muted);font-size:12px}form{display:flex;gap:8px;justify-content:center}button,input{font:inherit;border-radius:8px;border:1px solid var(--line);padding:9px 14px}input{width:220px;background:var(--panel);color:var(--text)}input:focus{outline:none;border-color:#4b5259}button{background:var(--text);color:var(--bg);border-color:var(--text);font-weight:500;cursor:pointer}button:hover{background:#fff}button:disabled{opacity:.5;cursor:default}.err{min-height:1.4em;font-size:13px;color:#f87171}.err,.foot{margin-top:10px}.foot{display:flex;justify-content:space-between;font-size:12px;color:var(--dim)}