:root{--bg:#f4f5f8;--surface:#fff;--border:#e6e8ec;--border-strong:#d7dae0;--text:#1b1f24;--text-2:#5b6472;--text-3:#8b93a1;--primary:#3d63dd;--primary-hover:#2f52c7;--primary-soft:#edf1fd;--danger:#c0392f;--danger-border:#e5c4c0;--danger-soft:#fdf1f0;--ok:#23915c;--radius:12px;--shadow-sm:0 1px 2px #171e2d0d;--shadow-md:0 1px 2px #171e2d0a, 0 12px 32px #171e2d1a;color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(1000px 480px at 50% -140px, #4d71f517, transparent 70%) no-repeat, var(--bg);min-height:100vh;margin:0}p{margin:0}main{max-width:1160px;margin:0 auto;padding:0 28px 48px}header{justify-content:space-between;align-items:center;gap:12px;padding:20px 0 16px;display:flex}.brand{align-items:center;gap:10px;display:flex}.logo{color:#fff;width:27px;height:27px;box-shadow:var(--shadow-sm);background:linear-gradient(135deg,#5b83f5,#2f4fc7);border-radius:8px;flex:none;place-items:center;display:grid}.brand strong{letter-spacing:-.2px;font-size:15.5px;font-weight:650}nav{align-items:center;gap:6px;min-width:0;display:flex}.header-device{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;margin-right:8px;font-size:13px;overflow:hidden}h1{letter-spacing:-.2px;margin:0;font-size:19px;font-weight:650}h2{margin:0;font-size:15px;font-weight:600}.muted{color:var(--text-2);font-size:13px;line-height:1.65}.status{min-height:20px;color:var(--text-2);overflow-wrap:anywhere;align-items:center;gap:9px;margin:2px 0 14px;font-size:13px;display:flex}.status-meta{color:var(--text-3);font-variant-numeric:tabular-nums}.dot{background:#b9bfca;border-radius:50%;flex:none;width:8px;height:8px;transition:background .2s}.dot.live{background:var(--ok);box-shadow:0 0 0 3px #23915c24}.dot.wait{background:#e0a23c;animation:1.3s ease-in-out infinite pulse}@keyframes pulse{50%{box-shadow:0 0 0 5px #e0a23c29}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.art{background:var(--primary-soft);width:46px;height:46px;color:var(--primary);border-radius:13px;flex:none;place-items:center;display:grid}.stage{box-shadow:var(--shadow-md);aspect-ratio:16/9;background:#0d0f13;border-radius:14px;min-height:220px;max-height:72vh;display:flex;position:relative;overflow:hidden}.stage.idle{aspect-ratio:auto;height:min(400px,52vh)}.stage:fullscreen{aspect-ratio:auto;width:100%;height:100%;min-height:0;max-height:none;box-shadow:none;border-radius:0}.stage video{object-fit:contain;touch-action:none;outline:none;width:100%;height:100%;display:block}.stage video::-webkit-media-controls{display:none!important}.stage video:focus-visible{box-shadow:inset 0 0 0 2px #9db4f2cc}.stage-empty{text-align:center;color:#98a1ad;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:20px;display:flex;position:absolute;inset:0}.stage-empty .art{color:#b9c2cd;background:#ffffff12;border-radius:17px;width:62px;height:62px;margin-bottom:8px}.stage-empty h2{color:#e9ecf1}.stage-empty p{max-width:340px;font-size:12.5px;line-height:1.65}.stage-empty .primary{pointer-events:auto;margin-top:14px}.dock{flex-direction:column;margin-top:14px;padding:13px 16px 11px;display:flex}.dock-row{flex-wrap:wrap;align-items:flex-end;gap:14px;padding-bottom:11px;display:flex}.dock-group{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.dock-sep{background:var(--border);flex:none;align-self:stretch;width:1px;margin:2px 0}.connect{margin-left:auto}.field{gap:5px}.field>span{color:var(--text-3);font-size:11px;font-weight:500}.field select{min-width:86px;padding:7px 30px 7px 10px}.icon-btn{width:36px;height:36px;padding:0}.relay-switch{flex-direction:row;align-items:center;gap:9px}.relay-switch input{appearance:none;background:var(--border-strong);cursor:pointer;border-radius:20px;flex:none;width:34px;height:20px;margin:0;padding:2px}.relay-switch input:before{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;display:block}.relay-switch input:checked{background:var(--primary);border-color:var(--primary)}.relay-switch input:checked:before{transform:translate(14px)}.relay-switch input:disabled{opacity:.5;cursor:not-allowed}.relay-switch span{flex-direction:column;display:flex}.relay-switch small{color:var(--text-2);font-size:11px}.audio-meter{align-items:center;gap:7px;height:36px;display:inline-flex}.audio-meter small{color:var(--text-3);font-size:12px}meter{width:72px;height:4px}meter::-webkit-meter-bar{background:#e3e6eb;border-radius:99px}meter::-webkit-meter-optimum-value{background:var(--primary);border-radius:99px}meter::-moz-meter-bar{background:var(--primary);border-radius:99px}.dock-panel{border-top:1px solid var(--border);padding:8px 0 10px}.dock-panel summary{cursor:pointer;color:var(--text-2);border-radius:8px;align-items:center;gap:7px;margin-left:-8px;padding:4px 8px;font-size:13px;list-style:none;display:inline-flex}.dock-panel summary::-webkit-details-marker{display:none}.dock-panel summary:hover{color:var(--text);background:#f3f4f7}.dock-panel summary:after{content:"";border-bottom:1.5px solid;border-right:1.5px solid;flex:none;width:7px;height:7px;margin-left:4px;transition:transform .18s;transform:rotate(45deg)}.dock-panel[open] summary:after{transform:rotate(225deg)}.panel{flex-direction:column;gap:12px;padding:12px 2px 4px;display:flex}.clipboard-group{flex-direction:column;gap:8px;display:flex}.panel h3{margin:0;font-size:13px;font-weight:600}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions kbd{font:inherit;color:var(--text-2)}.send{flex-direction:column;gap:8px;display:flex}.send textarea{resize:vertical;min-height:74px}.send button{align-self:flex-end}.options{flex-flow:wrap;gap:28px}.check{color:var(--text);flex-direction:row;align-items:flex-start;gap:9px;font-size:13.5px}.check input{accent-color:var(--primary);flex:none;width:15px;height:15px;margin:2px 0 0}.check span{flex-direction:column;gap:1px;display:flex}.check small{color:var(--text-3);font-size:12px;line-height:1.5}label{color:var(--text-2);flex-direction:column;gap:6px;font-size:12.5px;display:flex}input,select,textarea{font:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:9px;padding:8px 11px;transition:border-color .15s,box-shadow .15s}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3d63dd2e}select{appearance:none;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235b6472' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 10px center/10px no-repeat;padding-right:30px}button{font:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border-strong);color:var(--text);white-space:nowrap;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:8px 13px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s,color .15s;display:inline-flex}button svg{flex:none}button:hover:not(:disabled){background:#f6f7f9;border-color:#c8ccd4}button:active:not(:disabled){background:#f0f1f4}button:disabled{color:#a6adba;cursor:not-allowed}button:focus-visible,summary:focus-visible{outline-offset:2px;outline:2px solid #9db4f2}.primary{background:var(--primary);border-color:var(--primary);color:#fff}.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.primary:disabled{color:#9aa3b2;background:#e8ecf4;border-color:#e8ecf4}.danger{color:var(--danger);border-color:var(--danger-border);background:var(--danger-soft)}.danger:hover:not(:disabled){background:#f9e4e2;border-color:#dcb4af}.ghost{color:var(--text-2);background:0 0;border-color:#0000}.ghost:hover:not(:disabled){color:var(--text);background:#eceef2;border-color:#0000}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.gate{text-align:center;max-width:380px;box-shadow:var(--shadow-md);flex-direction:column;gap:14px;margin:15vh auto 0;padding:30px;display:flex}.gate .art{margin:0 auto}.gate label{text-align:left}.gate .primary{width:100%;padding:9px 13px}.gate [role=status]{min-height:18px}.device-name{font-weight:600}.page-head{flex-direction:column;gap:4px;margin:14px 0 18px;display:flex}.device-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;display:grid}.device-card{text-align:left;justify-content:flex-start;align-items:center;gap:13px;width:100%;padding:15px 16px;display:flex}.device-card:hover:not(:disabled){box-shadow:var(--shadow-md);border-color:#c8d4f3;transform:translateY(-1px)}.device-card .tile{background:var(--primary-soft);width:40px;height:40px;color:var(--primary);border-radius:11px;flex:none;place-items:center;display:grid}.device-info{flex-direction:column;gap:2px;min-width:0;display:flex}.device-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:600;overflow:hidden}.device-info small{color:var(--text-3);align-items:center;gap:6px;font-size:12px;display:flex}.device-card>svg{color:var(--text-3);margin-left:auto}.device-card:hover:not(:disabled)>svg{color:var(--primary);transform:translate(2px)}.empty-devices{border:1.5px dashed var(--border-strong);border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:42px 24px;display:flex}.empty-devices .art{margin-bottom:4px}.empty-devices .muted{max-width:360px}.hint{margin-top:18px}@media (width<=720px){main{padding:0 16px 32px}header{padding:14px 0 12px}.header-device{display:none}.gate{margin-top:9vh;padding:24px}.stage:not(:fullscreen){max-height:58vh}.stage.idle:not(:fullscreen){height:min(340px,48vh)}.dock{padding:11px 12px 9px}.dock-row{gap:10px}.dock-sep{display:none}.connect{width:100%;margin-left:0}.device-grid{grid-template-columns:1fr}.options{gap:16px}}
