@charset "UTF-8";
:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#25282b;background:#edf0f2;font-synthesis:none;--accent:#2878df;--muted:#85898d;--line:#dfe1e2;--left:286px;--right:316px;--gutter:30px}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-size:12px;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none}button:hover{color:var(--accent)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}input,select{color:#42464b;background:#fafafa;border:1px solid #dfe1e2;padding:7px;border-radius:0}button:disabled{cursor:wait;opacity:.45}h1,h2,h3,p{margin:0}p{line-height:1.6}.scene-panel,#viewport{position:fixed;inset:0}#viewport{background:#edf0f2}#viewport canvas{width:100%;height:100%;display:block;touch-action:none}#labels{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}.model-label{position:absolute;white-space:nowrap;transform:translate(-50%,-100%);padding:6px 9px;font-size:11px;color:#454b4f;background:#fafafad9;border:1px solid #c4c9cd;pointer-events:auto;box-shadow:0 1px 8px #17253008;backdrop-filter:blur(8px)}.model-label i{display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%}.model-label:after{content:"";position:absolute;left:50%;top:100%;height:18px;border-left:1px solid #aaaeb1}.model-label.selected{border-color:var(--accent);color:var(--accent);background:#fff}.model-label.selected:after{border-color:var(--accent)}.masthead{position:fixed;inset:0 0 auto;height:131px;z-index:5;display:flex;align-items:flex-start;justify-content:space-between;padding:25px var(--gutter) 0;pointer-events:none;background:linear-gradient(#edf0f2fa,#edf0f2c0 70%,#edf0f200)}.heading{min-width:360px}.red-rule{width:46px;height:3px;background:var(--accent);margin-bottom:11px}.eyebrow{font-size:11px;letter-spacing:2.5px;color:#717579;font-weight:600}h1{font-size:25px;letter-spacing:-.7px;margin:6px 0 8px;font-weight:700}h1>span{color:var(--accent);margin:0 2px}.brand-subtitle{font-size:11px;font-weight:600;letter-spacing:1.4px;color:#73777b}.topnav{position:absolute;left:50%;top:38px;transform:translateX(-50%);pointer-events:auto}.tabs{display:flex;gap:21px}.tabs button{font-size:11px;color:#777d81;padding:0 0 10px;white-space:nowrap;border-bottom:2px solid transparent}.tabs button.active{color:#292d31;border-color:var(--accent)}#nav-alarm{font-size:11px;color:var(--accent);margin-left:4px}.header-right{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;max-width:330px;gap:10px;padding-top:6px;pointer-events:auto}.source-badge{font-size:11px;color:#ba6b25;background:#fafafa88;border:1px solid #d9cfbc;padding:5px 7px}time{font-size:11px;font-family:Consolas,monospace;letter-spacing:.5px;color:#888c90}.icon-btn{font-size:19px;padding:0 3px}.rail-btn{font-size:19px;padding:0 3px}.overlay-layout{position:fixed;inset:140px var(--gutter) 46px;display:grid;grid-template-columns:var(--left) minmax(0,1fr) var(--right);gap:30px;pointer-events:none;z-index:3}.side-column{pointer-events:auto;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c3c6c8 transparent;display:flex;flex-direction:column;gap:12px;padding-right:3px}.side-column>*{flex-shrink:0}.side-column::-webkit-scrollbar{width:3px}.side-column::-webkit-scrollbar-thumb{background:#c3c6c8}.overview-block{padding:0 3px 5px;background:linear-gradient(90deg,#edf0f2f0,#edf0f290)}.section-kicker{font-size:11px;font-weight:600;letter-spacing:1.6px;color:#7c8185;display:flex;justify-content:space-between}.section-kicker>span{color:#9b9fa2}.hero-speed{display:flex;align-items:center;gap:16px;margin:6px 0 10px}.hero-speed>#rpm{font-size:68px;line-height:1.05;font-weight:750;color:var(--accent);letter-spacing:-4px;font-variant-numeric:tabular-nums}.hero-unit{font-size:11px;letter-spacing:2px;line-height:2;color:#4e5358}.hero-unit b{font-weight:400;color:#858a8e;letter-spacing:1px;font-size:11px}.rpm-track{height:7px;background:#d2d6d9}.rpm-track i{display:block;background:var(--accent);height:100%;width:0;transition:width .4s}.scale-labels{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:#8e9499;font-family:Consolas,monospace}.kpis{margin-top:15px;border-top:1px solid #cfd3d6;display:grid;grid-template-columns:repeat(3,1fr);padding-top:12px}.kpis article{min-width:0;padding-right:7px}.kpi-label{display:block;color:#81878c;font-size:11px;margin-bottom:8px}.mini-icon{display:none}.kpi-value{font-size:22px;line-height:1.2;font-weight:600;letter-spacing:-.6px;font-variant-numeric:tabular-nums}.kpi-value small{font-size:11px;font-weight:400;color:#858a8f;margin-left:3px;letter-spacing:0}.kpi-foot{display:block;font-size:11px;line-height:1.5;color:#8b9195;margin-top:8px}.kpi-foot b{font-weight:400}#alarm-total{color:var(--accent)}#line-status{font-size:19px}.dot{display:inline-block;height:5px;width:5px;border-radius:50%;background:#438873}.panel{background:#fafafae8;border:1px solid #ffffffa0;box-shadow:0 2px 12px #28323a03;backdrop-filter:blur(14px)}.panel-title{padding:13px 13px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px}h3{font-size:11px;font-weight:650;letter-spacing:1px}.muted{font-size:11px;letter-spacing:1.1px;color:#9a9ea2}.search-wrap{margin:0 12px 8px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:5px}.search-wrap span{font-size:19px;color:#91979c}.search-wrap input{background:none;border:0;font-size:11px;width:100%;padding:7px 4px}.line-root{font-size:11px;color:#777e84;padding:7px 12px}.device-row{display:flex;align-items:center;text-align:left;gap:9px;width:100%;padding:8px 13px;border-left:2px solid transparent}.device-row:hover{background:#eeeeee}.device-row.selected{border-color:var(--accent);background:#2878df08;color:var(--accent)}.node-icon{font-size:14px;color:#9da4a9}.device-row.selected .node-icon{color:var(--accent)}.device-row strong{font-size:11px;display:block;font-weight:500}.device-row small{font-size:11px;display:block;color:#9da3a8;margin-top:2px;letter-spacing:.7px}.device-row .state{width:4px;height:4px;border-radius:50%;margin-left:auto}.model-info{border-top:1px solid var(--line);margin:10px 13px 0;padding-top:10px;display:flex;gap:8px;align-items:center;font-size:11px}.file-symbol{font-size:20px;color:#9ba1a5}.model-info b{font-weight:500}.file-ok{margin-left:auto;color:#4e8e77}.model-info p{font-size:11px;color:#9ba1a5;margin-top:5px}.mapping-note{font-size:11px;line-height:1.6;color:#969da3;margin:8px 13px 12px}.animation-master{display:flex;gap:5px;margin:0 12px 8px}.animation-master button{padding:8px;font-size:11px;flex:1;border:1px solid #dbdfe2;background:#fff}.animation-master #animation.active{color:#fff;background:var(--accent);border-color:var(--accent)}.animation-row{display:grid;grid-template-columns:1fr 30px 30px;align-items:center;gap:4px;padding:9px 12px;border-top:1px solid #e7e8e9}.animation-name{padding:0;text-align:left;display:block;font-size:11px;font-weight:500}.animation-name small{font-size:11px;color:#999fa3;font-weight:400;margin-top:3px;display:block}.clip-toggle,.clip-reset{font-size:12px;border:1px solid #dedfe0;background:#fff;height:26px}.clip-toggle.active{background:#2d3236;color:white;border-color:#2d3236}.animation-timeline{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:11px;color:#92989c}.animation-timeline input{padding:0;min-width:0;flex:1;width:50%;height:12px;accent-color:var(--accent);cursor:pointer}.animation-timeline select{font-size:11px;padding:2px;border-color:#ddd;width:48px}.clip-time{font-family:Consolas,monospace;width:55px;font-size:11px;text-align:right;font-variant-numeric:tabular-nums}#export{display:flex;align-items:center;justify-content:center;border:1px solid #ccd0d3;background:#f4f5f6b0;padding:11px 13px;font-size:11px}.center-space{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-width:0}.scene-title{text-align:center;padding-top:9px;color:#90969a}.scene-title>#scene-mode{font-size:11px;letter-spacing:2px;color:#b87438}.scene-title h2{font-size:11px;letter-spacing:1px;font-weight:500;margin-top:8px}.scene-title p{font-size:11px;margin-top:5px;color:#a0a5a9}.scene-bottom{text-align:center;padding-bottom:9px}.legend{display:flex;align-items:center;justify-content:center;gap:18px;color:#7c8388;font-size:11px;letter-spacing:1px}.legend i{display:inline-block;width:15px;height:2px;margin-right:5px;vertical-align:middle}.green{background:#397e67}.yellow{background:#cb8c37}.red{background:#2878df}.gray{background:#929da6}.scene-bottom>p{font-size:11px;color:#7b838a;letter-spacing:1px;margin:14px 0 8px}.scene-foot{display:flex;flex-direction:column-reverse;gap:8px}.scene-foot>span:first-child{font-size:11px;color:#a2a7ac;letter-spacing:.4px}#model-state{font-size:11px;color:#a2a8ad}.status-pill{padding:3px 6px;font-size:11px;background:#eef0ef;border:1px solid #e4e7e5}.device-hero{padding:1px 13px 12px}.device-hero p{font-size:11px;color:#9b9fa4;letter-spacing:1.3px}.device-hero h2{font-size:24px;letter-spacing:-.6px;margin-top:6px}.detail-meta{margin:0 13px 12px;border-top:1px solid var(--line);padding-top:9px}.detail-meta span{font-size:11px;letter-spacing:1.3px;color:#a2a7ab;display:block}.detail-meta b{display:block;font-family:Consolas,monospace;font-size:11px;color:#8e9499;font-weight:400;margin-top:5px;overflow-wrap:anywhere}.detail-heading{display:flex;justify-content:space-between;margin:0 13px 9px;font-size:11px;color:#70777d}.detail-heading span{font-size:11px;color:#a1a6ab}.metrics{display:grid;grid-template-columns:1fr 1fr;margin:0 13px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.metrics>div{padding:10px 0}.metrics>div:nth-child(odd){border-right:1px solid var(--line)}.metrics>div:nth-child(even){padding-left:13px}.metrics>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.metrics span{display:block;font-size:11px;color:#8f959b;margin-bottom:4px}.metrics b{font-size:25px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.7px}.metrics small{font-size:11px;color:#949ba0;margin-left:6px}.metrics>div:nth-child(2) b{color:var(--accent)}.load-label{display:flex;justify-content:space-between;padding:13px 13px 7px;font-size:11px;color:#8f969b}.load-label b{font-weight:500;color:#555e64}.load-bar{height:4px;background:#e5e7e8;margin:0 13px}.load-bar i{display:block;background:var(--accent);height:100%;transition:width .4s}.threshold-note{font-size:11px;color:#a0a6ab;line-height:1.8;margin:10px 13px}.focus-btn{background:#2d3236;color:white;border:1px solid #2d3236;padding:9px;font-size:11px}.focus-btn:hover{background:#464c51;color:white}.details-panel>.focus-btn{margin:0 13px 13px;width:calc(100% - 26px)}.chart-controls select{font-size:11px;padding:4px;border-color:#e4e5e6}.chart-controls>span{display:none}.subheading{display:block;font-size:11px;color:#999;font-weight:400;letter-spacing:0;margin-top:6px}.chart-wrap{height:138px;position:relative;margin:8px 10px 8px}.chart-wrap canvas{width:100%;height:100%}#chart-empty{position:absolute;inset:50px 0 auto;text-align:center;font-size:11px;color:#999}.count{font-size:11px;color:var(--accent);margin-left:5px}.check-label{display:flex;align-items:center;gap:4px;font-size:11px;color:#989ea2}input[type=checkbox]{accent-color:var(--accent);width:11px;height:11px}.alarm-table-head,.alarm-row{display:grid;grid-template-columns:.9fr 1.2fr 37px;gap:5px;font-size:11px}.alarm-table-head{background:#f0f1f2;padding:7px 13px;color:#9ca3a8}.alarm-row{padding:10px 13px;border-bottom:1px solid #e7e9ea;align-items:center;color:#687179}.alarm-row small{display:block;font-size:11px;color:#9da4a9;margin-top:4px}.alarm-row>div:nth-child(2){font-size:11px}.alarm-row button{font-size:11px;border:1px solid #d8dcdf;background:#fff;padding:4px 2px}.alarm-row button:disabled{opacity:1;color:#a3a9ae;border:0;cursor:default}#alarm-list{max-height:138px;overflow:auto}.empty-state{text-align:center;font-size:11px;color:#939ba1;padding:20px 8px}.camera-panel{padding-bottom:11px}.scene-toolbar{display:flex;flex-direction:column;gap:7px}.button-group{display:flex;gap:5px;margin:0 12px}.button-group button{flex:1;padding:6px 3px;background:white;border:1px solid #dfe2e4;font-size:11px;white-space:nowrap}.button-group button.active{color:white;background:#2d3236;border-color:#2d3236}.button-group:last-child button.active{background:var(--accent);border-color:var(--accent)}.exposure-control{display:flex;gap:8px;align-items:center;margin:10px 13px 0;color:#989fa5;font-size:11px}.exposure-control input{height:12px;padding:0;flex:1;width:50%;accent-color:var(--accent)}.exposure-control output{font-family:Consolas,monospace;color:#69737a;font-size:11px}footer{position:fixed;inset:auto var(--gutter) 0;height:38px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#8f969c;letter-spacing:.4px;z-index:5;pointer-events:none}footer>span:last-child{font-size:11px;letter-spacing:1px}.footer-sep{margin:0 9px;color:#b7bdc1}.orientation,.view-tag{display:none}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#edf0f2ef;z-index:2;gap:15px}#loading b{font-size:13px;color:#737a80}#load-progress{font-size:11px;color:#9ca4aa}.loader{width:28px;height:28px;border:2px solid #d2d5d7;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{border:1px solid #d2d6d9;background:#fafafa;color:#343c42;width:calc(100% - 32px);max-width:540px;padding:25px;box-shadow:0 20px 100px #26384533}dialog::backdrop{background:#69778055;backdrop-filter:blur(8px)}.dialog-title{display:flex;justify-content:space-between;align-items:center}.dialog-title h2{font-size:18px}dialog p{font-size:11px;color:#899198;margin-top:12px}dialog label{display:flex;flex-direction:column;gap:8px;margin-top:19px;font-size:11px;color:#78838b}.schema-note{margin-top:20px;background:#f0f2f3;padding:12px;font-size:11px;line-height:1.7;color:#939ca3}pre{font-size:11px;color:#626e77;white-space:pre-wrap}.dialog-actions{display:flex;justify-content:flex-end;margin-top:20px}.error{color:#2878df}#toast{position:fixed;left:50%;bottom:45px;transform:translateX(-50%);padding:12px 20px;background:#2e353b;color:white;font-size:11px;z-index:99;pointer-events:none;opacity:0;transition:opacity .2s;max-width:90vw}#toast.visible{opacity:1}.equipment-mode .devices-panel,.alarms-mode .alarm-panel{outline:1px solid var(--accent)}
@media(min-width:1700px){:root{--left:315px;--right:340px;--gutter:40px}.masthead{padding-top:32px}.overlay-layout{top:155px}.side-column{gap:15px}.device-row{padding-top:11px;padding-bottom:11px}.hero-speed>#rpm{font-size:79px}.chart-wrap{height:160px}.animation-row{padding-top:11px;padding-bottom:11px}}
@media(max-width:1200px){:root{--left:248px;--right:282px;--gutter:20px}.masthead{padding-top:21px}.heading{min-width:310px}h1{font-size:22px}.tabs{gap:14px}.header-right{max-width:240px;gap:8px}time{font-size:11px}.overlay-layout{gap:16px;top:135px}.metrics b{font-size:22px}.kpi-value{font-size:19px}#line-status{font-size:17px}.hero-speed>#rpm{font-size:60px}.hero-unit{font-size:11px}.scene-foot>span:first-child{font-size:11px}.legend{gap:10px;font-size:11px}}
@media(max-width:900px){:root{--left:220px;--right:248px;--gutter:15px}.heading{min-width:0}h1{font-size:19px}.eyebrow{font-size:11px;letter-spacing:1.5px}.brand-subtitle{font-size:11px;letter-spacing:.5px}.topnav{top:105px;left:15px;transform:none}.tabs{gap:17px}.header-right time{display:none}.overlay-layout{top:153px;gap:10px}.scene-title p{display:none}.scene-bottom .legend{flex-wrap:wrap;gap:7px}.scene-bottom>p{font-size:11px;overflow-wrap:anywhere}.scene-foot>span:first-child{display:none}.metrics b{font-size:21px}.metrics small{font-size:11px}.hero-speed>#rpm{font-size:56px}.hero-unit{letter-spacing:.5px}.kpi-value{font-size:17px}.kpi-foot{font-size:11px}.muted{font-size:11px}}
@media(max-width:650px){body{overflow:auto}.masthead{height:132px}.header-right{max-width:130px;gap:7px}.source-badge{font-size:11px}.icon-btn,.rail-btn{font-size:17px}.heading{max-width:calc(100% - 135px)}h1{font-size:18px;letter-spacing:-.8px}.brand-subtitle{font-size:11px}.eyebrow{font-size:11px;letter-spacing:1px}.red-rule{margin-bottom:8px}.overlay-layout{position:relative;inset:auto;margin:132px 12px 55px;display:flex;flex-direction:column;gap:14px}.center-space{height:320px;order:-1;padding-top:3px}.center-space .scene-bottom{margin-top:auto}.scene-title h2,.scene-title>#scene-mode{display:none}.scene-title p{display:none}.scene-bottom>p{background:#edf0f299;display:inline-block;padding:4px 8px;margin:3px}.scene-foot{display:none}.legend{background:#edf0f299;padding:5px}.scene-panel,#viewport{position:fixed;inset:0;height:480px}.side-column{overflow:visible;display:grid;grid-template-columns:1fr;gap:12px;padding:0}.overview-block{padding:13px;background:#f8f9f9ed}.section-kicker{font-size:11px}.hero-speed>#rpm{font-size:62px}.hero-unit{font-size:11px}.kpi-value{font-size:22px}.kpi-foot{font-size:11px}.kpi-label{font-size:11px}#line-status{font-size:20px}.devices-panel #device-list{display:grid;grid-template-columns:1fr 1fr}.device-row{padding:11px}.model-info{font-size:11px}.mapping-note{font-size:11px}.panel-title{padding:14px}.muted{font-size:11px}.metrics b{font-size:28px}.metrics span,.metrics small{font-size:11px}.chart-wrap{height:170px}.side-column>*{min-width:0}.animation-row{padding-top:12px;padding-bottom:12px}.animation-name{font-size:11px}.animation-name small{font-size:11px}.clip-time{font-size:11px}.camera-panel button{font-size:11px;padding:9px}.exposure-control{font-size:11px}footer{background:#edf0f2ee;inset:auto 0 0;padding:0 12px;height:32px;backdrop-filter:blur(10px)}footer>span:last-child{display:none}}

/* Continuous edge gradients support the UI without individual cards. */
body::before,body::after{
 content:"";position:fixed;top:0;bottom:0;pointer-events:none;z-index:2;
}
body::before{
 left:0;width:calc(var(--gutter) + var(--left) + 120px);
 background:linear-gradient(to right,#edf0f2 0%,#edf0f2 calc(100% - 120px),#edf0f200 100%);
}
body::after{
 right:0;width:calc(var(--gutter) + var(--right) + 120px);
 background:linear-gradient(to left,#edf0f2 0%,#edf0f2 calc(100% - 120px),#edf0f200 100%);
}
.side-column{gap:20px;background:none;}
.side-column .panel,.side-column .overview-block{
 background:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;outline:none;
}
.side-column *{border-width:0;box-shadow:none;}
.side-column .panel-title{padding-top:12px;padding-bottom:13px;}
.side-column .kpis{border:0;margin-top:15px;padding-top:7px;}
.side-column .search-wrap{border:0;}
.side-column input,.side-column select{background:transparent;border:0;}
.side-column .device-row,.side-column .device-row.selected{border:0;background:none;}
.side-column .device-row:hover{background:none;color:var(--accent);}
.side-column .device-row.selected strong{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;}
.side-column .model-info{border:0;padding-top:6px;}
.side-column .status-pill{border:0;background:none;padding-right:0;}
.side-column .detail-meta,.side-column .metrics,.side-column .metrics>div{border:0;}
.side-column .detail-meta{padding-top:4px;}
.side-column .metrics>div{padding-top:12px;padding-bottom:12px;}
.side-column .animation-row{border:0;padding-top:12px;padding-bottom:12px;}
.side-column .animation-master button,
.side-column .clip-toggle,.side-column .clip-reset,
.side-column .button-group button,
.side-column .alarm-row button,
.side-column #export,.side-column .focus-btn{
 border:0;background:none;color:#657079;
}
.side-column .animation-master #animation.active,
.side-column .clip-toggle.active,
.side-column .button-group button.active,
.side-column .button-group:last-child button.active{
 background:none;border:0;color:var(--accent);
 text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px;
}
.side-column .focus-btn{color:var(--accent);text-align:left;}
.side-column #export{justify-content:flex-start;color:var(--accent);}
.side-column .focus-btn:hover,.side-column button:hover{background:none;color:var(--accent);}
.side-column .alarm-table-head,.side-column .alarm-row{background:none;border:0;}
.side-column .alarm-row button{color:var(--accent);}
.side-column .alarm-row button:disabled{color:#9ba2a8;}
.equipment-mode .devices-panel,.alarms-mode .alarm-panel{outline:none;}
.side-column :focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
@media(max-width:650px){
 body::before{inset:400px 0 0;width:auto;background:linear-gradient(to bottom,#edf0f200,#edf0f2 100px);}
 body::after{display:none;}
 .side-column{gap:22px;}
 .side-column .overview-block{background:none;}
}
