@charset "UTF-8";
:root{--ink:#182c38;--muted:#75848d;--line:#e4e9ec;--bg:#f4f7f8;--accent:#087f73;--accent-hover:#07695f;--nav:#112d35;--danger:#bd4048;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}
body{margin:0}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border:1px solid #dbe3e6;border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s}
button:hover{background:#f0f6f5;border-color:#a7c6c0}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
button.primary:hover{background:var(--accent-hover)}
button.subtle{background:transparent}
button.danger{color:var(--danger)}
input,select,textarea{width:100%;border:1px solid #dbe3e6;background:#fff;color:var(--ink);border-radius:7px;padding:10px 12px;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #087f7312}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);margin:0}
button:focus-visible,a:focus-visible{outline:3px solid #71bcaf;outline-offset:3px}
label{display:flex;flex-direction:column;gap:8px;font-weight:500}
h1,h2,h3,h4,p{margin-top:0}
h1{font-size:30px;letter-spacing:-.8px;margin-bottom:10px}
h2{font-size:24px;letter-spacing:-.5px;margin-bottom:8px}
h3{font-size:17px;margin-bottom:16px}
h4{font-size:14px;margin:20px 0 12px}
a{color:inherit;text-decoration:none}
.muted,.form-note{color:var(--muted);line-height:1.7;font-weight:400}
.compact{font-size:12px;margin:12px 0 24px}
.eyebrow{color:var(--accent);font-size:10px;font-weight:700;letter-spacing:2px;margin-bottom:10px}
.brand{display:flex;align-items:center;gap:10px;color:#fff;font-size:20px;font-weight:650;letter-spacing:-.5px}
.brand-mark{display:grid;place-items:center;background:#7be0bc;color:#123b37;border-radius:9px;width:33px;height:33px;font-weight:850;font-size:20px}
.brand-tag{font-size:9px;letter-spacing:2px;font-weight:400;color:#a7bbb8;margin-left:8px}
.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.login-story{background:radial-gradient(ellipse at 15% 90%,#1a5f5c 0,transparent 62%),#112d35;color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:48px 12% 32px}
.login-story .eyebrow{color:#79d3b5;margin-bottom:25px}
.login-story h1{font-size:clamp(40px,4.5vw,66px);font-weight:600;line-height:1.4;letter-spacing:-2px}
.story-copy{font-size:16px;line-height:2;color:#b4c9cb;margin:24px 0 38px}
.story-status{display:flex;align-items:center;gap:10px;font-size:12px;color:#d5e5e3}
.pulse{width:7px;height:7px;background:#7be0bc;border-radius:50%;box-shadow:0 0 0 5px #7be0bc16}
.divider{color:#648783;margin:0 5px}
.story-footer{font-size:11px;color:#8facad;margin:40px 0 0}
.login-side{display:grid;place-items:center;background:#fff;padding:50px}
.login-form{width:100%;max-width:360px}
.small-brand{font-size:10px;letter-spacing:2px;color:var(--accent);font-weight:600;display:block;margin-bottom:22px}
.login-form h2{font-size:27px}
.login-form>.muted{margin-bottom:38px}
.login-form label{margin:20px 0;font-size:13px}
.login-form input{padding:13px}
.login-submit{width:100%;margin:6px 0 20px;padding:13px;justify-content:space-between}
.form-note{font-size:11px}
.workspace{display:flex;min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:224px;padding:30px 20px;background:var(--nav);color:#c9d8dc;display:flex;flex-direction:column}
.sidebar .brand{font-size:19px;margin-bottom:50px}
.nav-label{font-size:10px;letter-spacing:1px;color:#72959f;margin:0 14px 15px}
.nav-item{justify-content:flex-start;background:transparent;color:#a9c0c8;border:0;width:100%;padding:13px 14px;margin-bottom:7px}
.nav-item span{font-size:18px;line-height:1;width:19px;text-align:center;margin-right:4px}
.nav-item:hover,.nav-item.active{background:#23464e;color:#fff}
.nav-item.active{box-shadow:inset 3px 0 #80daba}
.sidebar-bottom{margin-top:auto;display:flex;align-items:center;gap:10px;padding-top:24px;border-top:1px solid #29454f}
.admin-avatar{width:33px;height:33px;border-radius:50%;background:#375860;color:#d9e9ed;display:grid;place-items:center;font-size:12px}
.sidebar-bottom strong{font-size:12px;display:block;max-width:90px;overflow:hidden;text-overflow:ellipsis}
.sidebar-bottom small{display:block;color:#7e9ea9;font-size:10px;margin-top:5px}
#logout{margin-left:auto;background:transparent;border:0;color:#a9c0c8;padding:5px;font-size:22px}
.workspace-main{width:calc(100% - 224px);margin-left:224px}
.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 40px;background:#fff;border-bottom:1px solid var(--line);font-size:12px}
.stream-state{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px}
.stream-state i{width:6px;height:6px;border-radius:50%;background:#b3bec4}
.stream-state.connected{color:var(--accent)}
.stream-state.connected i{background:#169c80}
.stream-state.fallback{color:#b3792a}
.stream-state.fallback i{background:#ce9835}
main{max-width:1660px;padding:38px 40px;margin:auto}
.heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}
.heading .muted{font-size:12px;margin:0}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:30px}
.metrics article{background:#fff;border:1px solid var(--line);border-radius:11px;padding:21px 23px}
.metrics article>span{color:#667b87;font-size:12px;display:flex;align-items:center;gap:7px}
.metrics strong{display:block;font-size:34px;line-height:1.5;letter-spacing:-1px;font-weight:600;margin:6px 0}
.metrics em{font-style:normal;font-size:13px;letter-spacing:0;color:var(--muted);font-weight:400}
.metrics small{font-size:11px;color:#8d9aa2}
.dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0}
.green{background:#19a17b}
.blue{background:#6b9fea}
.devices-section{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.toolbar-spacer{flex:1}
.toolbar select,.toolbar input{width:auto}
.device-toolbar{padding:20px 22px;border-bottom:1px solid var(--line)}
.search-wrap{position:relative;flex:0 1 320px}
.search-wrap>span{position:absolute;top:6px;left:13px;font-size:25px;color:#82949e}
.search-wrap input{width:100%;padding-left:38px;background:#f9fbfc}
.device-toolbar select{font-size:12px}
.grid{padding:22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.card{display:block;padding:0;text-align:left;overflow:hidden;border-radius:10px;border-color:var(--line);width:100%;background:#fff}
.card:hover{background:#fff;box-shadow:0 5px 20px #112d350a}
.thumbnail{position:relative;aspect-ratio:16/9;background:#eef2f4;overflow:hidden;display:grid;place-items:center}
.thumbnail img{position:absolute;width:100%;height:100%;object-fit:contain;background:#162630}
.thumbnail img:not([src]){display:none}
.thumbnail-empty{display:flex;align-items:center;flex-direction:column;gap:9px;color:#99a9b2;font-size:11px}
.thumbnail-empty>span{font-size:32px;line-height:1;color:#bbc7cd}
.thumbnail .status-badge{position:absolute;top:10px;left:10px;background:#fffefc;border:1px solid #e6eaec;box-shadow:0 2px 6px #152e3710}
.status-badge{display:inline-flex;align-items:center;gap:5px;border-radius:5px;padding:4px 7px;font-size:10px;color:#72818a}
.status-badge .dot{background:#adb9c0;width:5px;height:5px}
.status-badge.recording{color:#087f73}
.status-badge.recording .dot{background:#169c80}
.status-badge.online{color:#447ab3}
.status-badge.online .dot{background:#6b9fea}
.thumbnail .live-hint{position:absolute;right:9px;bottom:9px;padding:4px 7px;border-radius:4px;background:#122d38ba;color:#fff;font-size:9px}
.card .info{padding:17px}
.info h3{font-size:14px;margin:0 0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.info p{font-size:11px;color:#85959f;line-height:1.6;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-meta{display:flex;justify-content:space-between;border-top:1px solid #f0f3f5;margin-top:13px;padding-top:12px;color:#8798a1;font-size:10px}
.card-meta .open-live{color:var(--accent)}
.grid-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 22px;border-top:1px solid var(--line);font-size:11px}
.pagination{display:flex;gap:14px;align-items:center}
.pagination button{width:29px;height:29px;padding:0}
.pagination span{color:#6f818d;min-width:30px;text-align:center}
.page-note{font-size:11px;display:flex;align-items:center;gap:8px;color:#8b9aa4;margin:22px 0 0}
.empty{text-align:center;padding:70px 24px;color:#8b9aa4}
.empty>div{font-size:42px;color:#abb9c2;margin-bottom:16px}
.empty h3{color:#607582;font-weight:500}
.empty p{font-size:12px;line-height:1.8}
#notice{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#183942;color:#fff;padding:13px 22px;border-radius:9px;box-shadow:0 6px 24px #0a252e26;z-index:10000;max-width:min(90vw,680px);font-size:13px;line-height:1.5}
dialog{border:1px solid var(--line);border-radius:14px;padding:28px;width:min(560px,calc(100vw - 32px));max-height:90vh;overflow:auto;color:var(--ink);box-shadow:0 24px 120px #0f2a3340}
dialog::backdrop{background:#112d356b;backdrop-filter:blur(3px)}
.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:25px}
.dialog-heading h2{font-size:21px;margin:0}
.dialog-heading p.muted{font-size:12px;margin:10px 0 0}
.icon-button{border:0;background:#f0f4f5;font-size:23px;width:32px;height:32px;padding:0}
.callout{background:#eaf7f1;padding:12px 15px;border:1px solid #cfe9db;border-radius:7px;color:#337b61;font-size:12px;line-height:1.6}
pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.8}
#enrollForm>label{margin-bottom:15px}
#credentials label{margin-bottom:15px}
#credentials>.muted{font-size:12px;margin-top:20px}
textarea{resize:vertical;min-height:70px}
.detail-dialog{width:min(1120px,calc(100vw - 32px))}
.inline-label{flex-direction:row;align-items:center;font-size:12px}
.check-label{flex-direction:row;align-items:center;font-size:12px;font-weight:400;gap:7px}
.video-wrap{margin-top:16px;border-radius:9px;overflow:hidden;background:#102a34;position:relative}
#liveVideo{display:block;width:100%;aspect-ratio:16/9;max-height:52vh;background:#102a34;object-fit:contain}
#liveStatus{background:#0b202a;color:#b7d3d8;font-size:11px;margin:0;padding:11px 15px;line-height:1.7}
#player{width:100%;height:auto;max-height:230px;aspect-ratio:16/9;background:#142f38;border-radius:6px;margin-top:12px}
.history-heading{display:flex;align-items:center;justify-content:space-between;margin-top:24px}
.history-heading h3{margin:0}
.history-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
h4 .muted{font-size:10px;margin-left:7px}
.app-list{max-height:280px;overflow:auto;font-size:12px;color:#758690}
.app-list p{padding:11px 12px;background:#f6f9fa;border-radius:5px;display:flex;justify-content:space-between}
.scroll{overflow:auto;max-height:360px}
table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}
th{background:#f3f7f8;color:#83949c;font-size:11px;font-weight:500;position:sticky;top:0}
th,td{padding:12px 14px;border-bottom:1px solid var(--line)}
td{max-width:400px;overflow-wrap:anywhere}
.settings-dialog{width:min(760px,calc(100vw - 32px))}
.settings-dialog h3{font-size:15px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 22px}
.form-grid label,.settings-dialog>form>label{font-size:12px}
.form-grid input,.form-grid select{min-width:0}
fieldset{border:0;padding:0;margin:22px 0}
legend{font-size:12px;margin-bottom:13px}
.weekday-list{display:flex;gap:14px;flex-wrap:wrap}
.weekday-list label{flex-direction:row;align-items:center;font-size:12px;font-weight:400;gap:5px}
hr{border:0;border-top:1px solid var(--line);margin:28px 0}
.form-message{font-size:12px;line-height:1.6;min-height:16px;color:var(--accent);margin:13px 0}
.form-message.error{color:var(--danger)}
.wide-dialog{width:min(860px,calc(100vw - 32px))}
.system-info{display:grid;grid-template-columns:1fr 1fr;font-size:12px;gap:0;margin:0 0 25px}
.system-info dt,.system-info dd{border-bottom:1px solid var(--line);padding:14px 0;margin:0;overflow-wrap:anywhere}
.system-info dt{color:var(--muted)}
.system-info dd{text-align:right}
[hidden]{display:none!important}
@media(min-width:1600px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:1160px){.sidebar{width:190px;padding:26px 15px}
.sidebar .brand{font-size:17px}
.workspace-main{margin-left:190px;width:calc(100% - 190px)}
main{padding:30px 24px}
.topbar{padding:0 24px}
.grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.metrics{gap:12px}
.metrics article{padding:18px 15px}
.metrics strong{font-size:29px}
.metrics small{font-size:10px}
}
@media(max-width:780px){.sidebar{position:static;width:100%;padding:14px 18px;display:flex;flex-direction:row;align-items:center;gap:18px}
.sidebar .brand{margin:0}
.nav-label,.sidebar-bottom .admin-avatar,.sidebar-bottom strong,.sidebar-bottom small{display:none}
.sidebar nav{display:flex;margin-left:auto;gap:3px}
.nav-item{font-size:0;width:34px;height:34px;padding:5px;margin:0}
.nav-item span{font-size:20px;margin:0}
.sidebar-bottom{margin:0;padding:0;border:0}
.workspace{flex-direction:column}
.workspace-main{margin:0;width:100%}
.topbar{height:54px}
.metrics{grid-template-columns:repeat(2,1fr)}
main{padding:25px 18px}
.heading h1{font-size:25px}
.heading .muted{font-size:11px}
.heading{gap:10px}
.heading>button{font-size:12px;white-space:nowrap;padding:10px}
.device-toolbar{padding:16px;gap:8px}
.search-wrap{flex:1}
.toolbar select{max-width:100%}
.device-toolbar .toolbar-spacer{display:none}
.grid{padding:16px;gap:14px}
.info{padding:13px!important}
.page-note{font-size:10px;line-height:1.7;align-items:flex-start}
.page-note .dot{margin-top:5px}
.login-page{grid-template-columns:1fr}
.login-story{padding:24px 28px 30px;gap:30px}
.login-story h1{font-size:34px}
.login-story h1 br{display:none}
.login-story .eyebrow,.story-copy,.story-footer{display:none}
.story-status{font-size:11px;margin-top:18px}
.login-side{padding:40px 28px}
.history-grid{grid-template-columns:1fr}
.form-grid{gap:16px}
.grid-footer{font-size:10px;line-height:1.7}
.detail-dialog .toolbar-spacer{display:none}
dialog{padding:20px}
}
@media(max-width:480px){.grid{grid-template-columns:1fr}
.form-grid{grid-template-columns:1fr}
.toolbar button{font-size:12px}
.sidebar{gap:10px}
.sidebar .brand{font-size:15px}
.brand-mark{width:28px;height:28px;font-size:18px}
.sidebar nav{gap:0}
.topbar{padding:0 18px}
.device-toolbar .subtle{padding:10px}
.story-status .divider{margin:0}
.grid-footer{align-items:flex-start}
.page-note{max-width:330px}
}
