:root{--bg:#f2f5f4;--paper:#fff;--ink:#1c2e2b;--muted:#778680;--line:#dfe7e3;--primary:#16725f;--primary-dark:#105744;--primary-soft:#eaf4ef;--nav:#173b39;--nav-muted:#a4bdb6;--red:#bd5046;--red-soft:#fff0ed;--amber:#ab7a29;--amber-soft:#fff6e7;--blue:#5276a0;--radius:6px;--font:"Microsoft YaHei","PingFang SC",Arial,sans-serif;--mono:Consolas,"SFMono-Regular",monospace}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 var(--font)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #6ab3a1;outline-offset:3px}a{color:var(--primary);text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.35;font-weight:650;letter-spacing:-.5px}h2{font-size:16px;font-weight:600;line-height:1.5}h3{font-size:14px;font-weight:600}small{font-size:11px}.app-shell{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:100dvh}.sidebar{background:var(--nav);color:#f2f8f5;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;padding:27px 15px 18px;overflow:auto}.brand{display:flex;align-items:center;gap:11px;padding:0 10px}.brand-mark{width:36px;height:36px;border:2px solid #91b5a8;border-radius:var(--radius);display:grid;place-items:center;font-size:24px;font-weight:500;color:#dcece3;line-height:1}.brand strong{font-size:18px;font-weight:600;letter-spacing:.5px}.brand span:not(.brand-mark){display:block;font-size:10px;color:var(--nav-muted);letter-spacing:1px;margin-top:1px}.line-label{border-top:1px solid #305450;border-bottom:1px solid #305450;margin:28px 9px 14px;padding:13px 0;display:flex;align-items:center;gap:8px;font-size:12px;color:#d3e5dc}.line-no{margin-left:auto;color:#86a89c;font:10px var(--mono)}.dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:#7cac90;flex-shrink:0}.nav-group{color:#789e90;font-size:10px;letter-spacing:1px;margin:15px 13px 7px}.nav-item{display:flex;align-items:center;width:100%;gap:12px;color:#c2d6ce;background:none;border:0;text-align:left;padding:10px 13px;border-radius:var(--radius);margin:2px 0;font-size:13px;transition:background .16s,color .16s}.nav-item:hover{background:#254a43;color:#fff}.nav-item.active{color:#fff;background:#2c564b;box-shadow:inset 3px 0 #80b295}.nav-symbol{font-size:11px;width:17px;text-align:center;opacity:.7}.nav-count{font:10px var(--mono);margin-left:auto;background:#688470;color:#fff;min-width:18px;text-align:center;border-radius:3px;padding:1px 3px}.nav-count.alert{background:#be6856}.sidebar-bottom{margin-top:auto;padding:25px 8px 0;display:flex;align-items:center;gap:9px}.avatar{width:30px;height:30px;border-radius:50%;background:#41695b;display:grid;place-items:center;font-size:12px}.sidebar-bottom strong{font-size:11px;font-weight:500;display:block}.sidebar-bottom div span{font-size:10px;color:var(--nav-muted)}.user-light{width:5px;height:5px;border-radius:50%;background:#8db796;margin-left:auto}.workspace{min-width:0}.topbar{height:65px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.breadcrumb{font-size:12px;color:#84918b;display:flex;gap:14px;align-items:center}.breadcrumb span{color:#c8d2cc}.breadcrumb strong{font-weight:500;color:#465b52}.topbar-right{display:flex;align-items:center;gap:17px;color:#738078;font-size:11px}.connection-pill{display:inline-flex;gap:7px;align-items:center;color:var(--primary)}.connection-pill.offline{color:var(--red)}.connection-pill.offline .dot{background:var(--red)}.top-separator{width:1px;height:15px;background:var(--line)}#server-clock{font:12px var(--mono);min-width:63px}main{padding:27px 34px 15px;max-width:1700px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:25px}.eyebrow{color:#819189;font-size:11px;margin-bottom:8px;display:flex;gap:14px;align-items:center}.eyebrow span{color:#7b9688;padding-left:14px;border-left:1px solid #cbd8d0;font-size:10px}.page-description{font-size:12px;color:var(--muted);margin-top:7px}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;border:1px solid #cfdad4;border-radius:var(--radius);padding:7px 14px;background:#fff;color:#52665b;font-size:12px;white-space:nowrap;transition:background .15s,border-color .15s}.btn:hover{background:#f3f7f4;border-color:#9caf9f}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn-danger{color:var(--red);border-color:#eccbc2;background:#fff}.btn-small{padding:4px 10px;min-height:28px;font-size:11px}.btn-link{border:0;background:none;padding:2px 0;color:var(--primary);font-size:12px;min-height:22px}.btn-link:hover{text-decoration:underline;background:none;border:0}.warning-strip{background:var(--amber-soft);border:1px solid #ecd9b5;color:#8b662c;font-size:12px;padding:9px 13px;border-radius:var(--radius);margin-bottom:16px}.warning-strip[hidden]{display:none}.status{display:inline-flex;align-items:center;gap:5px;line-height:1.4;border-radius:3px;padding:3px 7px;font-size:10px;font-weight:500;white-space:nowrap;background:#f0f3f1;color:#78897e}.status.good{color:#337756;background:#edf5ef}.status.warn{color:#986923;background:var(--amber-soft)}.status.bad{color:var(--red);background:var(--red-soft)}.status.blue{color:#5d789a;background:#edf2f8}.status .dot{height:4px;width:4px;background:currentColor}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.text-right{text-align:right}.text-danger{color:var(--red)}.text-primary{color:var(--primary)}.section-gap{margin-top:20px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;gap:12px;border-bottom:1px solid #edf1ee}.panel-heading h2{font-size:14px}.panel-heading .subtext{font-size:11px;color:var(--muted);margin-left:10px;font-weight:400}.panel-body{padding:19px 20px}.panel-note{font-size:11px;color:#8a968d;padding:11px 20px;border-top:1px solid #edf1ee}.metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:21px;padding:18px 0}.metric{padding:0 23px;border-right:1px solid #e7eee9}.metric:last-child{border:0}.metric-label{font-size:11px;color:#7c8d82;display:flex;align-items:center;justify-content:space-between}.metric-value{font:32px/1.5 var(--mono);letter-spacing:-1px;margin:4px 0}.metric-value span{font:11px var(--font);color:var(--muted);letter-spacing:0;margin-left:6px}.metric-meta{font-size:10px;color:#91a096}.metric-meta strong{color:#537e60;font-weight:400}.metric.alert .metric-value{color:var(--red)}.overview-bottom{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,1fr);gap:20px;margin-top:20px}.legend{display:flex;align-items:center;gap:15px;font-size:10px;color:#829388}.legend-item{display:flex;align-items:center;gap:5px}.legend-swatch{width:7px;height:7px;border-radius:2px;background:#dceae1}.legend-swatch.running{background:#529881}.legend-swatch.occupied{background:#c5a45f}.legend-swatch.alarm{background:#ce7665}.process-plant{padding:20px 20px 15px}.crane-stage{height:76px;position:relative;margin:0 8px 12px;border-bottom:1px solid #dce5df}.rail{position:absolute;left:0;right:0;top:21px;height:4px;background:#d1ddd5;border-top:1px solid #baccc0;border-bottom:1px solid #b6c8bf}.rail:after{content:"";position:absolute;left:0;right:0;top:13px;height:1px;background:#e0e8e1}.crane{position:absolute;top:0;left:0;min-width:83px;transform:translateX(-50%);transition:left .8s linear}.crane-name{font:9px var(--mono);color:#788a7d;text-align:center;margin-bottom:4px}.crane-body{background:#527969;color:#fff;border-radius:3px;min-height:22px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:9px;position:relative;border:2px solid #3e6658}.crane-body:after{content:"";position:absolute;height:14px;width:2px;top:20px;left:50%;background:#91a398}.crane-hook{position:absolute;left:50%;top:48px;transform:translateX(-50%);width:21px;height:10px;border:2px solid #91a398;border-top:0;border-radius:0 0 3px 3px}.tanks-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px;overflow-x:auto}.tank{border:1px solid #dfe7e2;background:#fcfdfc;border-radius:var(--radius);padding:11px 8px 10px;text-align:left;min-width:100px;color:var(--ink);transition:box-shadow .15s,border-color .15s;position:relative}.tank:hover{border-color:#87ad97;box-shadow:0 2px 7px #29473512}.tank.is-active{border-color:#91b7a0}.tank.is-warning{border-color:#dbc391}.tank.is-stale{opacity:.65;border-style:dashed}.tank-top{display:flex;justify-content:space-between;align-items:center}.tank-id{font:9px var(--mono);color:#9bac9f}.tank-name{font-size:12px;font-weight:550;margin-top:4px;white-space:nowrap}.tank-vessel{height:53px;border:1px solid #c9d8ce;border-top:3px solid #aabfb0;border-radius:0 0 4px 4px;position:relative;margin:12px 0 10px;overflow:hidden;background:#f1f5f1}.tank-liquid{position:absolute;bottom:0;left:0;right:0;background:#dae9df;border-top:2px solid #b7cfc0;transition:height .8s}.is-active .tank-liquid{background:#b7d7c3;border-color:#78aa8e}.is-warning .tank-liquid{background:#e8dbbc;border-color:#c6b080}.rack-in-tank{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);width:30px;height:25px;border:1.5px solid #658b74;border-top:0;border-bottom:3px solid #658b74;background:repeating-linear-gradient(90deg,transparent 0,transparent 8px,#86a493 8px,#86a493 10px);opacity:.8}.tank-temperature{position:relative;z-index:1;font:17px var(--mono);color:#51725d;text-align:center;padding-top:16px}.tank-temperature small{font:9px var(--font);color:#809683;margin-left:2px}.tank-progress{height:3px;background:#edf1ee;overflow:hidden;border-radius:1px}.tank-progress span{display:block;height:100%;background:#78aa8e;transition:width .8s}.is-warning .tank-progress span{background:#c1a36a}.tank-countdown{font:13px var(--mono);margin:9px 0 3px;color:#486452}.tank-detail{font-size:9px;color:#8fa094;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.plant-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;color:#84938a;font-size:10px}.plant-mode{display:flex;align-items:center;gap:8px}.plant-mode strong{font-weight:500;color:#527864}.chart-wrap{width:100%;min-height:180px;position:relative}.chart{width:100%;display:block;overflow:visible}.chart-label{font:10px var(--mono);fill:#9bad9f}.chart-grid{stroke:#edf1ee;stroke-width:1}.chart-path{fill:none;stroke:#2f9276;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-area{fill:#edf6ef}.chart-legend{display:flex;justify-content:space-between;font-size:10px;color:#89998e;margin:0 0 10px}.chart-legend strong{font:13px var(--mono);color:var(--ink)}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left}th{font-weight:400;color:#89968d;background:#fafcfb;padding:11px 16px;border-bottom:1px solid #edf1ee;white-space:nowrap}td{padding:13px 16px;border-bottom:1px solid #edf1ee;vertical-align:middle;white-space:nowrap}tr:last-child td{border-bottom:0}.compact-table td{padding:12px 13px}.compact-table th{padding:10px 13px}.row-title{font-size:11px;font-weight:500;color:#3f5548}.row-secondary{font-size:9px;color:#93a097;margin-top:3px}.row-selected{background:#f0f6f2}.click-row{cursor:pointer}.click-row:hover{background:#f5f8f6}.progress-inline{display:flex;align-items:center;gap:8px}.progress-track{height:4px;min-width:55px;flex:1;background:#e7eee9;border-radius:2px;overflow:hidden}.progress-track span{display:block;height:100%;background:#78a98c}.progress-inline .mono{font-size:10px;color:#6f8777;min-width:32px}.empty-state{padding:40px 20px;text-align:center;color:#8a9d90;font-size:12px}.empty-state h3{color:#617467;margin-bottom:6px}.summary-strip{display:flex;gap:26px;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);font-size:11px;color:#7d8c82}.summary-strip strong{font:18px var(--mono);color:var(--ink);margin-right:5px}.summary-strip .spacer{margin-left:auto}.split-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,1fr);gap:20px;align-items:start}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-group label{font-size:11px;color:#64796b}.form-group input,.form-group select,.form-group textarea{border:1px solid #d5e0d8;border-radius:var(--radius);padding:9px 10px;background:#fff;color:#354d3f;width:100%;font-size:12px;min-height:37px}.form-group textarea{resize:vertical;line-height:1.8;min-height:125px;font-family:var(--mono)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#77a68b}.form-group input:disabled{background:#f4f7f5;color:#8b9b91}.input-unit{position:relative}.input-unit input{padding-right:50px}.input-unit span{position:absolute;right:11px;top:10px;color:#9ca99f;font-size:10px}.form-hint{font-size:10px;color:#8b9b91;margin-top:4px}.form-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #edf1ee;padding-top:17px;margin-top:5px}.note{font-size:11px;line-height:1.8;color:#7f9285;margin-bottom:16px}.recipe-version{font:10px var(--mono);color:#86a394}.steps-list{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:9px 0 21px}.step-tag{font-size:10px;border:1px solid #dfe8e1;padding:4px 7px;border-radius:3px;background:#f8faf8;color:#738676}.step-separator{font-size:10px;color:#b3c1b5}.scan-workflow{display:flex;align-items:center;gap:0;margin-bottom:24px}.scan-step{flex:1;font-size:11px;color:#8c9c91;display:flex;align-items:center;gap:7px;position:relative}.scan-step:not(:last-child):after{content:"";height:1px;background:#dce7df;flex:1;margin:0 12px}.step-number{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;border:1px solid #c8d9cc;font:10px var(--mono)}.scan-step.current{color:var(--primary)}.scan-step.current .step-number{background:var(--primary);border-color:var(--primary);color:#fff}.scanner-box{border:1px dashed #9ebfa9;padding:21px;border-radius:var(--radius);margin-bottom:18px;background:#f7fbf8}.scanner-box label{display:flex;justify-content:space-between;align-items:center}.scan-help{padding:14px 17px;font-size:10px;color:#7b9280;border-left:2px solid #a0bdab;background:#f7faf7;line-height:1.9}.code-list{display:flex;flex-wrap:wrap;gap:5px}.code-tag{font:10px var(--mono);padding:3px 6px;background:#f3f7f3;color:#6c8c75;border:1px solid #e4ece4;border-radius:3px}.trace-search{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:19px 22px;margin-bottom:20px}.trace-search label{font-size:12px;color:#607869;margin-right:9px;white-space:nowrap}.trace-search input{flex:1;min-width:100px;max-width:460px;border:1px solid #d2ddd5;padding:10px 12px;border-radius:var(--radius);font:12px var(--mono);color:#456650}.trace-layout{display:grid;grid-template-columns:minmax(245px,.7fr) minmax(0,2fr);gap:20px;align-items:start}.trace-profile{padding:23px}.trace-code{font:16px var(--mono);color:#2b6449;margin-bottom:8px;overflow-wrap:anywhere}.trace-product{font-size:13px;margin-bottom:16px}.detail-list{margin:20px 0 0;display:grid;grid-template-columns:85px minmax(0,1fr);font-size:11px;gap:13px 5px}.detail-list dt{color:#95a197}.detail-list dd{margin:0;color:#526b59;overflow-wrap:anywhere}.trace-timeline{padding:22px 25px 10px}.timeline-item{display:grid;grid-template-columns:120px 20px 1fr;position:relative;gap:5px;padding-bottom:18px;font-size:11px}.timeline-time{color:#82988a;font:10px var(--mono);padding-top:3px}.timeline-line{position:relative}.timeline-line:before{content:"";position:absolute;top:5px;left:5px;width:7px;height:7px;border:2px solid #9abd9f;background:#fff;border-radius:50%;z-index:1}.timeline-line:after{content:"";position:absolute;left:9px;top:15px;bottom:-17px;width:1px;background:#dbe7dd}.timeline-item:last-child .timeline-line:after{display:none}.timeline-item strong{font-size:12px;font-weight:500}.timeline-item p{font-size:10px;color:#91a291;margin-top:3px}.filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.filter-row select{font-size:11px;border:1px solid #d5e0d7;padding:6px 25px 6px 10px;border-radius:var(--radius);color:#607762;background:#fff}.charts-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.history-detail{margin-top:21px}.alert-row{border-left:3px solid var(--red)}.severity{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--red)}.severity.warn{color:var(--amber)}.severity.info{color:var(--blue)}.severity .dot{background:currentColor}.master-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);padding:0 20px}.master-tab{border:0;background:none;padding:15px 17px;color:#8a9c8d;font-size:12px;border-bottom:2px solid transparent}.master-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.architecture{display:grid;grid-template-columns:1fr 40px 1fr 40px 1fr;align-items:center;gap:8px;padding:27px 20px}.architecture-node{border:1px solid #dce7df;border-radius:var(--radius);padding:16px 10px;text-align:center}.architecture-node strong{font-size:13px;font-weight:500}.architecture-node p{font-size:10px;color:#96a394;margin-top:5px}.architecture-node.online{border-color:#9ebfab;background:#f5faf6}.architecture-arrow{font:22px var(--mono);color:#abc0ad;text-align:center}.comm-info{display:flex;flex-wrap:wrap;gap:25px;font-size:11px;color:#8da18e;padding:0 20px 20px}.comm-info strong{color:#536f59;font-weight:500;margin-left:7px}.driver-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.driver{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.driver strong{font-size:12px;font-weight:500;display:block;margin-bottom:7px}.driver p{font-size:10px;color:#9bac9e;margin-top:10px}.audit-section{margin-top:20px}.quality-notice{font-size:10px;line-height:1.8;padding:13px 18px;border-top:1px solid #edf1ee;color:#8b9e8d}.page-footer{display:flex;justify-content:space-between;gap:15px;color:#98a699;font-size:9px;padding:22px 0 7px}.page-footer>span:first-child{display:flex;align-items:center;gap:7px}.page-footer .dot{width:4px;height:4px;background:#9cab99}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;color:#9cab9e;gap:12px}.loading-state h2{font-size:15px;color:#6a8470}.loading-state p{font-size:11px}.loading-spinner{width:25px;height:25px;border:2px solid #dce7de;border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-stack{position:fixed;right:25px;bottom:25px;z-index:20;display:flex;flex-direction:column;gap:9px;max-width:440px}.toast{padding:13px 18px;background:#fff;border:1px solid #c8decf;border-left:3px solid var(--primary);border-radius:var(--radius);box-shadow:0 5px 20px #1b3b2712;color:#4f7558;font-size:12px;animation:appear .2s ease}.toast.error{color:#9f564a;border-color:#e8ccc3;border-left-color:#bd6650}@keyframes appear{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}dialog{border:1px solid #dce6dd;border-radius:var(--radius);padding:0;width:min(680px,calc(100vw - 32px));max-height:85dvh;color:var(--ink);box-shadow:0 15px 60px #18352324}dialog::backdrop{background:#183b3266}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:19px 23px;border-bottom:1px solid var(--line)}.dialog-head h2{font-size:16px}.icon-button{width:28px;height:28px;border:0;background:#f3f7f3;border-radius:var(--radius);color:#809785;font-size:21px;line-height:1}#dialog-body{padding:21px 23px}.dialog-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:23px}.dialog-metrics div{border-bottom:1px solid var(--line);padding-bottom:12px}.dialog-metrics span{display:block;font-size:11px;color:#8a9c8d}.dialog-metrics strong{font:24px var(--mono);color:#4d7656}.dialog-metrics small{font:10px var(--font);color:#8b9b8d;margin-left:4px}.help-inline{display:flex;align-items:center;justify-content:space-between;color:#94a798;font-size:10px;margin-top:13px}.full-width{grid-column:1/-1}.section-title{display:flex;align-items:center;justify-content:space-between;margin:23px 0 13px}.section-title h2{font-size:14px}.inline-input{display:flex;gap:10px}.inline-input input{flex:1}.route-notice{font-size:11px;line-height:1.8;color:#8c9e90;margin-top:15px}.alarm-zero{color:#698c72;font-size:11px;display:flex;align-items:center;gap:7px}.flow-label{font:9px var(--mono);color:#9bab9b}.record-time{font:10px var(--mono);color:#8b9e8c}
@media(min-width:1550px){main{padding-left:45px;padding-right:45px}.tanks-grid{gap:15px}.tank{padding:13px 11px}.tank-vessel{height:70px}.tank-temperature{padding-top:25px}}
@media(max-height:850px) and (min-width:651px){.sidebar{padding-top:20px;padding-bottom:12px}.line-label{margin-top:20px;margin-bottom:10px;padding:10px 0}.nav-group{margin-top:10px;margin-bottom:5px}.nav-item{padding-top:7px;padding-bottom:7px}.sidebar-bottom{padding-top:17px}.brand-mark{width:31px;height:31px}}
@media(max-width:1200px){.app-shell{grid-template-columns:185px minmax(0,1fr)}main{padding:23px}.topbar{padding:0 23px}.sidebar{padding-left:10px;padding-right:10px}.overview-bottom{grid-template-columns:1fr}.metric{padding:0 16px}.tanks-grid{grid-template-columns:repeat(8,minmax(90px,1fr))}.tank{min-width:90px;padding:8px}.tank-name{font-size:11px}.split-layout{grid-template-columns:minmax(0,1.1fr) minmax(290px,1fr)}.charts-grid{gap:13px}.chart-wrap{min-height:145px}}
@media(max-width:900px){.app-shell{grid-template-columns:165px minmax(0,1fr)}.brand{padding:0 5px;gap:8px}.brand strong{font-size:16px}.brand-mark{width:30px;height:30px}.nav-item{padding:9px 8px;gap:8px}.line-no{display:none}.page-heading{align-items:flex-start}.page-actions{justify-content:flex-end;max-width:210px}.metrics{grid-template-columns:repeat(3,1fr);gap:15px 0}.metric:nth-child(3){border:0}.metric-value{font-size:27px}.split-layout,.trace-layout{grid-template-columns:1fr}.charts-grid{grid-template-columns:1fr}.chart-wrap{min-height:200px}.chart{max-height:280px}.driver-list{grid-template-columns:1fr}.page-description{max-width:350px}.page-heading{gap:8px}.page-actions .btn{font-size:11px;padding:7px 10px}.topbar-right{gap:10px}.trace-search{flex-wrap:wrap}.trace-search label{width:100%}.trace-search input{max-width:none}.trace-profile .detail-list{grid-template-columns:95px 1fr 95px 1fr}.trace-code{font-size:16px}.form-grid{gap:12px}.architecture{gap:3px;padding:20px 12px}.architecture-node{padding:13px 5px}.architecture-node strong{font-size:11px}}
@media(max-width:650px){.app-shell{display:block}.sidebar{height:auto;position:static;padding:14px 15px 10px}.brand{padding:0}.brand span:not(.brand-mark){display:none}.line-label,.sidebar-bottom,.nav-group{display:none}#navigation{display:flex;overflow-x:auto;margin-top:13px;gap:5px;scrollbar-width:thin;padding-bottom:3px}.nav-item{width:auto;flex-shrink:0;font-size:11px;padding:6px 11px;margin:0;gap:0}.nav-symbol{display:none}.nav-count{margin-left:6px}.nav-item.active{box-shadow:none;background:#3b6655}.topbar{height:48px;padding:0 18px}.topbar-right{gap:10px}.breadcrumb{font-size:10px;gap:9px}.top-separator{display:none}#server-clock{font-size:10px}.connection-pill{font-size:10px}main{padding:22px 16px 10px}.page-heading{flex-direction:column;gap:16px;margin-bottom:20px}.page-actions{max-width:none;justify-content:flex-start;width:100%}h1{font-size:25px}.eyebrow{margin-bottom:5px}.metrics{grid-template-columns:repeat(2,1fr);padding:15px 0;gap:16px 0}.metric{padding:0 17px}.metric:nth-child(2),.metric:nth-child(4){border:0}.metric:nth-child(3){border-right:1px solid #e7eee9}.metric:last-child{grid-column:1/-1;border-top:1px solid #edf1ee;padding-top:12px;display:grid;grid-template-columns:1fr 1fr;align-items:center}.metric:last-child .metric-meta{grid-column:1/-1}.metric-value{font-size:25px}.metric:last-child .metric-value{text-align:right;margin:0}.metric-meta{font-size:9px}.process-plant{padding:13px}.panel-heading{padding:13px 15px;flex-wrap:wrap}.panel-heading .subtext{display:none}.legend{gap:9px;font-size:9px}.tanks-grid{gap:8px}.crane-stage{min-width:750px}.process-plant{overflow-x:auto}.plant-footer{min-width:700px}.tank{min-width:90px}.overview-bottom{margin-top:15px;gap:15px}.panel-body{padding:17px 16px}.summary-strip{gap:14px;flex-wrap:wrap}.split-layout{gap:15px}.form-grid{grid-template-columns:1fr}.form-grid .form-group{margin-bottom:5px}.trace-search{padding:16px;gap:8px}.trace-profile .detail-list{grid-template-columns:85px 1fr}.trace-timeline{padding:20px 15px}.timeline-item{grid-template-columns:77px 17px 1fr}.timeline-time{font-size:9px}.scan-step{font-size:10px;gap:4px}.scan-step:not(:last-child):after{margin:0 7px}.scan-workflow{margin-bottom:19px}.page-footer{font-size:8px;gap:10px;align-items:flex-start}.page-footer>span:last-child{display:none}.architecture{grid-template-columns:1fr}.architecture-arrow{transform:rotate(90deg);font-size:19px;line-height:1}.comm-info{gap:12px}.toast-stack{left:16px;right:16px;bottom:16px}.dialog-metrics{gap:10px}.dialog-metrics strong{font-size:20px}#dialog-body{padding:18px}.chart-wrap{min-height:155px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:650px){.trace-search input{flex:1 1 100%;width:100%;max-width:none}.master-tabs{padding:0 9px;overflow-x:auto}.master-tab{padding:13px 10px;white-space:nowrap;flex-shrink:0;font-size:11px}.section-title{align-items:flex-start;flex-direction:column;gap:10px}.tanks-grid{overflow:visible}}
.crane{padding:0;border:0;background:none;color:inherit}.crane-name{display:block}.crane:focus-visible .crane-body,.crane:hover .crane-body{border-color:#16725f;background:#3d6855}.tank-power{margin-top:10px;padding-top:7px;border-top:1px solid #dde8e0}.electrical-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:23px;text-align:left}.electrical-values>div>span{display:block;font-size:10px;color:#819786}.electrical-values strong{display:block;font-size:23px;font-weight:400;line-height:1.7;color:#37694c;white-space:nowrap}.electrical-values small{font:11px var(--font);color:#7f9585}.electrical-values.compact{gap:5px}.electrical-values.compact>div>span{font-size:8px;white-space:nowrap}.electrical-values.compact strong{font-size:12px}.electrical-values.compact small{font-size:8px}.electrical-values.stale strong{color:#a57f41}.electrical-quality{font-size:9px;color:#aa8140;margin-top:3px}.electrical-unavailable{font-size:11px;color:#8b9f8e;padding:13px 0 6px}.rectifier-readouts{border-top:1px solid #e3ece5;padding:14px 20px;background:#fafcfb}.rectifier-readout{display:grid;grid-template-columns:minmax(170px,1fr) minmax(230px,1fr) auto;gap:20px;align-items:center}.rectifier-readout>div>strong{font-size:12px;font-weight:500}.rectifier-readout>div>p{font-size:10px;color:#8d9d91;margin-top:4px}.rectifier-readout .electrical-values{max-width:320px}.rectifier-readout .electrical-quality{grid-column:2;grid-row:2;margin-top:-15px}.rectifier-readout .record-time{justify-self:end;font-size:9px}.crane-readouts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.crane-readout{border:0;border-right:1px solid #e7eee9;background:none;padding:17px 20px;text-align:left;color:var(--ink)}.crane-readout:last-child{border-right:0}.crane-readout:hover{background:#f7faf8}.crane-readout-heading{display:flex;gap:10px;align-items:center}.crane-readout-heading>strong{font-size:12px;font-weight:500}.crane-detail-link{margin-left:auto;font-size:10px;color:var(--primary)}.crane-source{font-size:10px;color:#8da190;margin:9px 0 11px}.crane-readout .electrical-values{max-width:300px}.electrical-shared{font-size:9px;color:#9b9a73;margin-top:5px}.crane-dialog-power{margin-top:24px;padding-top:15px;border-top:1px solid var(--line)}.crane-dialog-power h3{margin-bottom:9px}
@media(max-width:900px){.rectifier-readout{grid-template-columns:minmax(150px,1fr) minmax(190px,1fr);gap:12px}.rectifier-readout .record-time{grid-column:1/-1;justify-self:start}.rectifier-readout .electrical-quality{grid-row:auto;grid-column:auto;margin-top:0}.electrical-values strong{font-size:21px}}
@media(max-width:650px){.rectifier-readouts{padding:14px 15px}.rectifier-readout{grid-template-columns:1fr}.rectifier-readout .electrical-values{width:100%;max-width:none}.rectifier-readout .record-time{grid-column:auto}.crane-readouts{grid-template-columns:1fr}.crane-readout{border-right:0;border-bottom:1px solid #e7eee9;padding:16px}.crane-readout:last-child{border-bottom:0}.crane-readout .electrical-values{max-width:none}}

.tank{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}.tank-vessel{flex-shrink:0}

/* Current process mode and dual-axis electrical sampling on the monitoring overview. */
.operation-panel{margin-bottom:20px}.operation-buttons{display:flex;gap:8px;flex-wrap:wrap}.operation-buttons .btn{min-width:60px}.operation-feedback{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;background:#fafcfb;border-bottom:1px solid #edf1ee}.operation-feedback>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px}.operation-feedback strong{font-size:13px;font-weight:500}.operation-feedback .status{font-size:12px;padding:4px 10px}.operation-feedback p{font-size:10px;color:#819488}.operation-table{min-width:730px}.operation-table td strong{font-weight:500}.process-step-number{font-size:11px;color:#657e6a}.process-step-number strong{font-size:19px;color:var(--primary);margin:0 3px}.operation-panel .empty-state{padding:26px 20px}
.overview-bottom.overview-trends{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.overview-trends>.panel{display:flex;flex-direction:column;min-height:330px}.overview-trends>.panel .panel-body{flex:1;display:flex;flex-direction:column}.overview-trends>.panel .chart-wrap{margin-top:auto}.electrical-trend-readings{display:grid;grid-template-columns:1fr 1fr auto;gap:15px;align-items:center;margin-bottom:12px}.electrical-trend-readings>div>span{display:flex;align-items:center;gap:7px;font-size:10px}.electrical-trend-readings i{display:inline-block;width:15px;height:2px;flex-shrink:0;background:currentColor}.electrical-trend-readings strong{display:block;font-size:25px;font-weight:400;line-height:1.65;white-space:nowrap}.electrical-trend-readings small{font:11px var(--font)}.electrical-trend-readings .voltage,.electrical-axis.voltage{color:#5276a0;fill:#5276a0}.electrical-trend-readings .current,.electrical-axis.current{color:#a77f35;fill:#a77f35}.electrical-trend-readings>p{font-size:9px;line-height:1.9;color:#86998b;text-align:right}.electrical-trend-readings.stale strong,.electrical-trend-readings.stale>p{color:#a47f3f}.electrical-trend-chart{max-height:none}.trend-axis-note{font-size:9px;line-height:1.8;color:#8a9b90;margin-top:7px}
@media(max-width:1000px){.overview-bottom.overview-trends{grid-template-columns:1fr}.overview-trends>.panel{min-height:0}.electrical-trend-chart{max-height:270px}.operation-feedback{align-items:flex-start;flex-direction:column;gap:7px}}
@media(max-width:650px){.operation-buttons{gap:6px}.operation-buttons .btn{min-width:50px;padding:6px 10px}.operation-feedback{padding:14px 15px}.operation-feedback>div{gap:8px}.electrical-trend-readings{grid-template-columns:1fr 1fr;gap:8px}.electrical-trend-readings>p{grid-column:1/-1;text-align:left}.electrical-trend-readings strong{font-size:23px}}

/* Equipment feedback stays readable as text as well as a red/green lamp. */
.tank-auxiliary{display:grid;gap:4px;text-align:left;margin-top:10px;padding-top:9px;border-top:1px solid #dde8e0}
.aux-indicator{display:inline-flex;align-items:center;gap:7px;font-size:12px;line-height:1.5;white-space:nowrap;color:#52645c}
.aux-lamp{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 10px;background:#a4ada8;border:1px solid #8c9991;box-shadow:0 0 0 2px #a4ada817}
.aux-indicator.on .aux-lamp,.aux-lamp.on{background:#399467;border-color:#257949;box-shadow:0 0 0 2px #39946718}
.aux-indicator.off .aux-lamp,.aux-lamp.off{background:#cf6458;border-color:#b74b41;box-shadow:0 0 0 2px #cf645818}
.aux-indicator.unconfigured{color:#92a098}.aux-indicator.unconfigured .aux-lamp,.aux-lamp.unconfigured{background:#c7d0ca;border-color:#aebbb2;box-shadow:none}
.aux-indicator.stale .aux-state-label{color:#aa8140;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
.aux-indicator.compact{display:grid;grid-template-columns:7px minmax(0,1fr) auto;gap:5px;font-size:9px}
.aux-indicator.compact .aux-lamp{width:7px;height:7px;border-width:1px;box-shadow:none}
.aux-device-label{color:#758a7d}.aux-state-label{font-weight:500}
.tank-auxiliary-quality{font-size:8px;color:#a77f3d;margin-top:2px;white-space:nowrap}.tank-auxiliary-quality[hidden]{display:none}
.auxiliary-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:10px;color:#7d9184}.auxiliary-legend>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.auxiliary-legend .aux-lamp{width:7px;height:7px;flex-basis:7px;box-shadow:none}
.auxiliary-table{min-width:650px}.auxiliary-table td:first-child strong{font-size:11px;font-weight:500}.aux-tank-id{margin-left:9px;color:#8a9d90;font-size:10px}.auxiliary-table time{font-size:11px;color:#73887b}.aux-mode{display:block;font-size:9px;color:#95a397;margin-top:4px}.auxiliary-panel .panel-heading{gap:10px 18px}.auxiliary-panel .quality-notice{font-size:10px}
@media(max-width:650px){.auxiliary-legend{gap:7px 12px;font-size:9px}.auxiliary-panel .panel-heading{align-items:flex-start}.auxiliary-table td,.auxiliary-table th{padding-left:15px;padding-right:15px}}

/* Auto-hiding navigation: the compact rail stays in place while the menu overlays it. */
.app-shell{--sidebar-rail:60px;--sidebar-width:210px;display:grid;grid-template-columns:var(--sidebar-rail) minmax(0,1fr)}
.app-shell>.workspace{grid-column:2}
.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:var(--sidebar-rail);height:100dvh;padding:16px 8px 12px;overflow:hidden;transition:width .18s ease,box-shadow .18s ease}
.sidebar-open .sidebar{width:var(--sidebar-width);box-shadow:8px 0 24px #173b3926}
.sidebar .brand{width:194px;flex:0 0 40px;padding:0 4px;gap:11px}
.sidebar .brand-mark{width:36px;height:36px;flex-shrink:0}
.sidebar .brand strong{font-size:18px}
.sidebar .brand span:not(.brand-mark){display:block}
.brand-copy,.nav-label,.sidebar-user-copy{white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .12s ease}
.sidebar-open .brand-copy,.sidebar-open .nav-label,.sidebar-open .sidebar-user-copy{opacity:1;visibility:visible}
.sidebar-toggle{display:flex;align-items:center;width:100%;flex:0 0 32px;margin:12px 0 0;padding:0;border:0;border-radius:6px;background:#244b46;color:#bcd5ca;text-align:left;overflow:hidden}
.sidebar-toggle:hover{background:#305c50;color:#fff}
.sidebar-toggle-symbol{flex:0 0 44px;text-align:center;font:25px/32px var(--mono)}
.sidebar-toggle-label{white-space:nowrap;font-size:10px;opacity:0;visibility:hidden}
.sidebar-open .sidebar-toggle-label{opacity:1;visibility:visible}
.sidebar .line-label{display:flex;flex:0 0 32px;min-height:32px;margin:12px 4px 8px;padding:0 9px;gap:8px;white-space:nowrap;overflow:hidden}
.sidebar .line-copy{display:none}
.sidebar .line-no{display:none}
.sidebar-open .line-copy{display:inline}
.sidebar-open .line-no{display:inline;margin-left:auto}
.sidebar #navigation{display:block;flex:1;min-height:0;margin:0;padding:2px 0;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#45685a transparent}
.sidebar .nav-group{display:block;position:relative;height:16px;margin:7px 8px 4px;font-size:10px;line-height:16px;color:transparent;white-space:nowrap}
.sidebar .nav-group::after{content:"";position:absolute;left:6px;right:6px;top:8px;border-top:1px solid #31564d}
.sidebar-open .nav-group{color:#789e90}
.sidebar-open .nav-group::after{display:none}
.sidebar .nav-item{position:relative;display:flex;width:100%;min-height:40px;margin:2px 0;padding:8px 0;gap:0;overflow:hidden;font-size:13px;flex-shrink:0}
.sidebar .nav-item.active{background:#2c564b;box-shadow:inset 3px 0 #80b295}
.sidebar .nav-symbol{display:inline-block;flex:0 0 44px;width:44px;font-size:12px;text-align:center;opacity:.85}
.sidebar .nav-label{flex-shrink:0}
.sidebar .nav-count{display:none}
.sidebar-open .nav-count{display:inline-block;position:static;margin-left:auto;margin-right:9px;min-width:18px;width:auto;height:auto;padding:1px 3px;font-size:10px;line-height:normal;border-radius:3px}
.app-shell:not(.sidebar-open) .sidebar .nav-count.alert{display:block;position:absolute;top:7px;right:5px;width:6px;min-width:6px;height:6px;padding:0;font-size:0;border-radius:50%}
.sidebar .sidebar-bottom{display:flex;flex:0 0 46px;margin-top:8px;padding:10px 7px 0;gap:9px;overflow:hidden}
.sidebar .avatar{flex:0 0 30px}
.sidebar .user-light{display:none}
.sidebar-open .user-light{display:block;flex-shrink:0}
.sidebar-backdrop{display:none}
@media(max-height:720px){.sidebar{padding-top:10px;padding-bottom:8px}.sidebar .nav-item{min-height:36px;padding:6px 0}.sidebar .line-label{margin-top:8px;margin-bottom:5px}.sidebar .nav-group{margin-top:5px;margin-bottom:2px}}
@media(max-width:650px){
  .app-shell{display:grid;--sidebar-width:210px}
  .sidebar-open .sidebar-backdrop:not([hidden]){display:block;position:fixed;inset:0 0 0 var(--sidebar-rail);z-index:29;border:0;background:#173b3955;cursor:default}
  .topbar{height:auto;min-height:48px;padding:9px 12px;gap:4px 8px;flex-wrap:wrap}
  .breadcrumb{gap:6px}
  main{padding-left:12px;padding-right:12px}
}

/* One shared plot for all three measured channels. */
.overview-bottom.overview-trends{grid-template-columns:minmax(0,1fr)}
.combined-trend-panel .electrical-trend-chart{width:100%;max-height:340px}
.combined-readings{grid-template-columns:repeat(3,minmax(0,1fr)) auto}
.electrical-trend-readings .temperature,.electrical-axis.temperature{color:#2f9276;fill:#2f9276}
@media(max-width:650px){.combined-readings{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.combined-readings>p{grid-column:1/-1}.combined-readings strong{font-size:19px}.combined-readings>div>span{font-size:9px}.combined-trend-panel .chart-wrap{overflow-x:auto}.combined-trend-panel .electrical-trend-chart{min-width:520px}}
