:root{--bg: #0d1117;--panel: #161b22;--panel-2: #1c2430;--line: #2a3441;--text: #e6edf3;--muted: #8b98a5;--accent: #4493f8;--ok: #3fb950;--warn: #d29922;--bad: #f85149;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}button{font:inherit;color:var(--text);background:var(--accent);border:1px solid transparent;border-radius:6px;padding:5px 12px;cursor:pointer}button:hover{filter:brightness(1.12)}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;border-color:var(--line);color:var(--muted)}button.ghost:hover{color:var(--text);border-color:var(--muted)}button.danger{background:transparent;border-color:var(--bad);color:var(--bad)}input{font:inherit;width:100%;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 10px}input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}label{display:block;margin-bottom:14px;color:var(--muted);font-size:12px;letter-spacing:.02em}label input{margin-top:5px;color:var(--text);font-size:14px}label small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.muted{color:var(--muted)}.spacer{flex:1}.error{color:var(--bad);font-size:13px}.app-bar,.control-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{letter-spacing:.04em}main{padding:16px}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.dot.online{background:var(--ok);box-shadow:0 0 8px color-mix(in srgb,var(--ok) 60%,transparent)}.dot.offline{background:var(--bad)}.dot.connecting{background:var(--warn)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.card.status-offline{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.card-screen{display:block;position:relative;width:100%;padding:0;aspect-ratio:16 / 9;background:#000;border:0;border-radius:0;cursor:pointer}.card-screen img{width:100%;height:100%;object-fit:cover;display:block}.placeholder{display:grid;place-items:center;height:100%;color:var(--muted);font-size:12px}.veil{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0d1117b8;color:var(--bad);font-size:12px;letter-spacing:.14em}.card.status-connecting .veil{color:var(--warn)}.lock-badge{position:absolute;left:8px;bottom:8px;padding:3px 8px;border-radius:999px;background:#0d1117d9;border:1px solid var(--accent);color:var(--accent);font-size:11px}.hd-badge{position:absolute;right:8px;bottom:8px;padding:2px 7px;border-radius:4px;background:#0d1117d9;border:1px solid color-mix(in srgb,var(--ok) 55%,transparent);color:var(--ok);font-size:10px;letter-spacing:.08em}.card-foot{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--line)}.card-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tags{display:flex;gap:4px;flex:1;overflow:hidden}.tags em{font-style:normal;font-size:11px;padding:1px 7px;border-radius:999px;background:var(--panel-2);color:var(--muted);white-space:nowrap}.empty{display:grid;place-items:center;gap:4px;min-height:50vh;text-align:center}.control{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:hidden}.control-surface{flex:1;min-height:0;position:relative;background:#000;overflow:hidden;cursor:default}.control-surface img,.control-surface video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;display:block}.control-surface img[hidden],.control-surface video[hidden]{display:none}.surface-status{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:13px;background:#0d11178c;pointer-events:none}.spinner{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}.badge-live{padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--ok) 22%,transparent);border:1px solid color-mix(in srgb,var(--ok) 55%,transparent);color:var(--ok);font-size:11px}.banner{padding:8px 16px;font-size:13px}.banner.warn{background:color-mix(in srgb,var(--warn) 18%,var(--bg));border-bottom:1px solid color-mix(in srgb,var(--warn) 45%,transparent);color:var(--warn)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#010409b3;display:grid;place-items:center;padding:20px;z-index:10}.modal{width:min(440px,100%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.modal h2{margin:0 0 16px;font-size:16px}.modal-foot{display:flex;gap:8px;align-items:center;margin-top:4px}.row{display:flex;gap:10px}.row .grow{flex:1}.row .port{width:96px}.login-wrap{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.login{width:min(340px,90vw);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.login h1{margin:0 0 20px;font-size:20px;letter-spacing:.04em;color:var(--text)}.login button[type=submit]{width:100%;padding:9px}
