.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}:root{color:#333;font-synthesis:none;--teal:#009688;--line:#d9d9d9;--muted:#959595;background:#f6f6f6;font-family:Arial,Microsoft YaHei,PingFang SC,sans-serif;font-size:14px;font-weight:400}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:1px solid var(--line);color:#333;cursor:pointer;white-space:nowrap;background:#fff;border-radius:4px;height:32px;padding:0 15px;transition:border-color .15s,color .15s}button:hover:enabled{color:var(--teal);border-color:var(--teal)}button:disabled{cursor:not-allowed;color:#b8b8b8;background:#f5f5f5;border-color:#d9d9d9}button.primary{color:#fff;background:var(--teal);border-color:var(--teal)}button.primary:hover:enabled{color:#fff;background:#00a596}button.danger{color:#fff;background:#e35252;border-color:#e35252}button.danger:hover:enabled{color:#fff;background:#ee6262;border-color:#ee6262}input:not([type=checkbox]),select{border:1px solid var(--line);color:#333;background:#fff;border-radius:4px;min-width:0;height:32px;padding:4px 11px}input::placeholder{color:#bfbfbf}input:focus,select:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 2px #00968814}button:focus-visible{outline-offset:2px;outline:2px solid #00b5a4}input[type=checkbox]{appearance:none;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:4px;place-content:center;width:16px;height:16px;margin:0;display:inline-grid}input[type=checkbox]:checked,input[type=checkbox]:indeterminate{background:var(--teal);border-color:var(--teal)}input[type=checkbox]:checked:before{content:"";border-bottom:2px solid #fff;border-left:2px solid #fff;width:8px;height:4px;transform:rotate(-45deg)translateY(-1px)}input[type=checkbox]:indeterminate:before{content:"";background:#fff;width:8px;height:2px}.topbar{background:var(--teal);color:#fff;justify-content:space-between;align-items:center;gap:20px;height:52px;padding:0 20px 0 13px;display:flex}.brand,.topbar-right{align-items:center;gap:12px;display:flex}.brand strong{font-size:16px}.brand-icon{background:#007f75;border:1px solid #ffffff70;border-radius:3px;place-items:center;width:30px;height:30px;display:grid}.brand-icon svg{width:20px;height:20px}.topbar-right{gap:15px}.topbar time{font-size:14px}.account{position:relative}.account-button{color:#fff;background:#007e75;border-color:#ffffff65;justify-content:space-between;align-items:center;gap:8px;min-width:104px;display:flex}.account-button:hover:enabled{color:#fff;border-color:#fff}.account-menu{border:1px solid var(--line);z-index:20;background:#fff;border-radius:4px;min-width:125px;padding:5px;position:absolute;top:39px;right:0;box-shadow:0 5px 16px #0002}.account-menu button{text-align:left;border:0;width:100%;display:block}.dashboard{flex-direction:column;gap:10px;min-height:calc(100dvh - 52px);padding:12px 13px;display:flex}.stats-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.stat-card{border:1px solid var(--line);background:#fff;border-radius:4px;align-items:center;gap:12px;height:70px;padding:10px 24px;display:flex}.stat-card>div{flex-direction:column;gap:3px;display:flex}.stat-card>div>span{color:var(--muted)}.stat-card strong{font-size:23px;font-weight:500;line-height:25px}.stat-icon{color:#00aa96;background:#e8f7f3;border:1px solid #afe1d6;border-radius:4px;place-items:center;width:34px;height:34px;display:grid}.stat-icon svg{width:19px;height:19px}.stat-icon.muted{color:#929b98;background:#f6f7f6;border-color:#e1eee9}.panel{border:1px solid var(--line);background:#fff;border-radius:4px}.filter-panel{flex-wrap:wrap;align-items:center;gap:9px;min-height:54px;padding:10px 24px;display:flex}.filter-panel label{white-space:nowrap;align-items:center;gap:3px;margin-right:7px;display:flex}.filter-panel input{width:230px}.filter-panel select{width:140px}.device-panel{flex-direction:column;flex:1;min-width:0;min-height:450px;padding:10px 12px;display:flex}.table-toolbar{border-bottom:1px solid #00ad9d;justify-content:space-between;align-items:center;gap:15px;margin-bottom:8px;padding-bottom:8px;display:flex}.toolbar-left,.toolbar-right{align-items:center;gap:12px;display:flex}.muted-text{color:var(--muted)}.refresh{width:32px;padding:0;font-size:22px;line-height:24px}.table-scroll{border:1px solid var(--line);max-width:100%;overflow:auto}table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1290px;font-size:14px}th,td{text-align:left;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ededed;padding:9px;line-height:18px;overflow:hidden}th{border-bottom-color:var(--line);background:#f5f5f5;padding-top:7px;padding-bottom:7px;font-weight:600}th+th{position:relative}th+th:before{content:"";border-left:1px solid #efefef;height:18px;position:absolute;top:7px;left:0}th:first-child,td:first-child{text-align:center}tbody tr:last-child td{border-bottom:0}tbody tr:nth-child(odd) td{background:#fafafa}tbody tr:nth-child(2n) td{background:#fff}tbody tr:hover td{background:#eff8f6}.device-id{font-weight:600}.status{color:#555;background:#f0f0f0;border-radius:3px;padding:0 6px;font-size:12px;line-height:21px;display:inline-block}.status.online{color:#52c41a;background:#f6ffed}.sticky-actions{z-index:2;position:sticky;right:0;box-shadow:-3px 0 5px #00000004}.row-actions{align-items:center;gap:12px;display:flex}.row-actions button{color:#007b72;border:0;border-radius:0;height:auto;padding:0;font-size:14px;line-height:18px;background:0 0!important}.row-actions button:hover:enabled{color:#00a99a;text-decoration:underline}.row-actions button:disabled{color:#bfbfbf}.empty-state{height:160px;color:var(--muted);text-align:center!important}.pagination{justify-content:space-between;align-items:center;gap:15px;min-height:66px;margin-top:auto;padding-top:26px;display:flex}.pagination-controls{align-items:center;gap:12px;display:flex}.page-button,.page-arrow{background:0 0;border-color:#0000;width:36px;height:36px;padding:0}.page-button.active{color:#009b8c;border-color:#00b5a5}.page-arrow{font-size:24px}.page-arrow:disabled{background:0 0;border-color:#0000}.pagination-controls select{width:104px}.page-jumper{white-space:nowrap;align-items:center;gap:9px;display:flex}.page-jumper input{text-align:center;appearance:textfield;width:58px;height:36px}.page-jumper input::-webkit-inner-spin-button{appearance:none}.error-box{color:#c83e39;background:#fff2f0;border:1px solid #ffccc7;border-radius:4px;padding:10px 14px;line-height:1.6}.error-box button{margin-left:12px}.error-text{color:#d84b45}.login-area{min-height:calc(100dvh - 52px);color:var(--muted);place-content:center;display:grid}.login-card{border:1px solid var(--line);color:#333;background:#fff;border-radius:5px;width:360px;padding:32px;box-shadow:0 8px 30px #00000005}.login-card h1{text-align:center;margin:12px 0;font-size:21px}.login-card p{text-align:center;color:var(--muted);margin-bottom:28px}.login-symbol{text-align:center;color:var(--teal);font-size:36px}.login-card label{flex-direction:column;gap:8px;margin:16px 0;display:flex}.login-card>button{width:100%;height:36px;margin-top:12px}.modal-mask{z-index:100;background:#0007;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:6px;flex-direction:column;max-width:100%;max-height:calc(100dvh - 48px);display:flex;overflow:hidden;box-shadow:0 16px 64px #0004}.dialog-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;gap:12px;min-height:54px;padding:10px 20px;display:flex}.dialog-header strong{font-size:16px}.dialog-header>button,.dialog-actions button{background:0 0;border:0;padding:0 8px}.dialog-actions{align-items:center;gap:12px;display:flex}.dialog-footer{border-top:1px solid #eee;justify-content:flex-end;align-items:center;gap:10px;padding:12px 20px;display:flex}.modal-mask:has(.fullscreen){padding:0}.terminal-page{color:#cedfda;background:#0a1715;flex-direction:column;height:100dvh;display:flex;overflow:hidden}.terminal-page-header,.terminal-page-footer{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 24px;font-size:12px;display:flex}.terminal-page-header{border-bottom:1px solid #21332d}.terminal-page-header strong{text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.terminal-state{color:#b9c2cc;font-size:12px}.terminal-state.connected{color:#47d2a0}.terminal-host{background:#0a1715;flex:1;min-height:0;padding:20px 16px 12px 24px;overflow:hidden}.terminal-host .xterm{height:100%}.terminal-page-footer{color:#839e93;border-top:1px solid #21332d}.terminal-page-footer>div{align-items:center;gap:8px;display:flex}.terminal-page-footer button{color:#b3cfc2;background:0 0;border-color:#2b4439;height:28px;padding-inline:12px;font-size:12px}.terminal-page-footer button:disabled{color:#536d61;border-color:#21332d}.terminal-page-footer a{color:#47d2a0}.logs-dialog{width:1100px;height:640px;min-height:450px}.log-controls{flex-wrap:wrap;align-items:center;gap:10px;padding:14px 20px;display:flex}.log-controls label{align-items:center;gap:8px;display:flex}.log-controls>input{flex:1;min-width:150px}.log-output{white-space:pre-wrap;word-break:break-all;tab-size:4;background:#f8fafb;border-block:1px solid #edf0f2;flex:1;min-height:150px;margin:0;padding:18px 20px;font:12px/1.8 Consolas,Liberation Mono,monospace;overflow:auto}.logs-dialog .error-box{margin:0 20px 10px}.logs-dialog .dialog-footer{justify-content:space-between}.reboot-dialog{width:560px}.reboot-body{gap:16px;padding:25px 24px;line-height:1.6;display:flex}.reboot-body h2{margin:0 0 10px;font-size:16px;font-weight:600}.reboot-body p{color:#777;margin:8px 0}.warning-symbol{color:#e6a23c;text-align:center;border:2px solid #e6a23c;border-radius:50%;flex-shrink:0;width:25px;height:25px;font-size:19px;line-height:22px}.mono{font-family:Consolas,monospace;color:#333!important}.operation-status{overflow-wrap:anywhere;background:#f0f9f7;border-radius:4px;margin-top:18px;padding:12px}.operation-status p{margin:6px 0}.operation-status small{color:#888;font-size:11px}.operation-status.failed,.operation-status.timed_out{background:#fff2f0}.audit-scroll{flex:1;overflow:auto}.audit-scroll table{table-layout:auto;min-width:900px}.audit-scroll td{font-size:12px}.audit-scroll th:first-child,.audit-scroll td:first-child{text-align:left}@media (width>=1700px){table{min-width:1290px}}@media (width<=1000px){.filter-panel{padding-inline:15px}.filter-panel input{width:190px}.pagination{flex-direction:column;align-items:flex-start}.pagination-controls{align-self:flex-end}.stat-card{padding-inline:16px}.table-toolbar{flex-wrap:wrap}.toolbar-right{margin-left:auto}.terminal-page-footer>span{max-width:55%}}@media (width<=600px){.topbar{padding-right:10px}.topbar time{display:none}.stats-row{gap:8px}.stat-card{gap:8px;padding:10px}.stat-icon{display:none}.stat-card>div>span{font-size:12px}.dashboard{padding:10px 8px}.filter-panel label{justify-content:space-between;width:100%}.filter-panel input,.filter-panel select{width:65%}.toolbar-right>span{font-size:11px}.pagination-controls{flex-wrap:wrap;gap:3px}.modal-mask{padding:10px}.dialog{max-height:calc(100dvh - 20px)}.dialog-header{padding-inline:12px}.dialog-header strong{font-size:13px}.dialog-actions{gap:2px}.terminal-state{font-size:10px}.dialog-footer{padding:10px 12px}.terminal-page-header,.terminal-page-footer{padding-inline:12px}.terminal-host{padding-left:12px}.terminal-page-footer{flex-wrap:wrap}.terminal-page-footer>span{max-width:100%}.login-card{width:320px}}.video-dialog{width:1240px;height:730px}.video-dialog.fullscreen{border-radius:0;width:100%;height:100%;max-height:100%}.preview-layout{flex:1;grid-template-columns:minmax(0,1fr) 250px;min-height:0;display:grid}.preview-main{background:#f9fafb;flex-direction:column;min-width:0;min-height:0;display:flex}.preview-stage{background:#121c26;flex:1;min-height:240px;position:relative;overflow:hidden}.preview-stage video{object-fit:contain;width:100%;height:100%;display:block;position:absolute;inset:0}.preview-placeholder{color:#8c9aa6;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.preview-placeholder svg{color:#526473;width:48px;height:48px}.preview-placeholder strong{font-size:14px;font-weight:400}.preview-resolution{color:#d5dee5;background:#0007;border-radius:3px;padding:4px 8px;font-size:12px;position:absolute;top:12px;left:12px}.preview-toolbar{background:#fff;flex-wrap:wrap;align-items:center;gap:10px;padding:14px;display:flex}.preview-toolbar label{align-items:center;gap:8px;display:flex}.preview-toolbar select{max-width:270px}.preview-main .error-box{margin:0 12px 12px}.preview-ptz{border-left:1px solid #eee;padding:22px 20px;overflow:auto}.preview-ptz h3{margin:0 0 22px;font-size:15px;font-weight:600}.preview-pad{grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:22px;display:grid}.preview-pad button{touch-action:none;-webkit-user-select:none;user-select:none;height:48px;padding:0;font-size:22px}.preview-pad .center{color:var(--teal);background:#eff8f5;font-size:15px}.preview-pad button:active:enabled,.preview-zoom button:active:enabled{background:var(--teal);color:#fff;border-color:var(--teal)}.preview-speed{white-space:nowrap;align-items:center;gap:8px;margin:16px 0 22px;font-size:12px;display:flex}.preview-speed input[type=range]{width:90px;height:18px;accent-color:var(--teal);border:0;padding:0}.preview-speed b{min-width:20px;font-weight:400}.preview-zoom{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.preview-zoom button{touch-action:none;-webkit-user-select:none;user-select:none;height:36px;padding:0 8px}.preview-hint{color:#999;margin-top:20px;font-size:12px;line-height:1.8}.preview-ptz .error-text{font-size:12px;line-height:1.6}.preview-state{color:#999;font-size:12px}.preview-state.active{color:var(--teal)}.preview-footer{justify-content:space-between;font-size:12px}@media (width<=800px){.video-dialog{height:90dvh}.preview-layout{grid-template-columns:minmax(0,1fr);overflow:auto}.preview-stage{min-height:240px}.preview-ptz{border-top:1px solid #eee;border-left:0;padding:16px}.preview-pad{max-width:210px;margin:0 auto 16px}.preview-speed{justify-content:center}.preview-zoom{max-width:320px;margin:auto}.preview-hint{text-align:center}.preview-state{display:none}.preview-toolbar{padding:10px}.preview-toolbar select{max-width:200px}}
