*{box-sizing:border-box}body{color:#ddd;background:#111;margin:0}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2)format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff)format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2)format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff)format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/archivo-latin-800-normal-cB6v3kRN.woff2)format("woff2"),url(/assets/archivo-latin-800-normal-DZa_k145.woff)format("woff")}.operator-hmi-shell{background:#0b0c0f;width:100%;min-height:360px;position:relative;overflow:hidden}.operator-hmi-stage,.operator-hmi-stage *{box-sizing:border-box}.operator-hmi-stage{--operator-red:#ec3013;--operator-green:#37d67a;--operator-green-deep:#1c7a4a;--operator-amber:#e8a33d;--operator-ink:#e9e7e4;--operator-muted:#7d838f;--operator-soft:#b9bec8;--operator-dim:#4a5058;--operator-card:#14161c;--operator-card-head:#191c23;--operator-border:#262a33;--operator-divider:#1e222a;transform-origin:50%;width:1920px;height:1080px;color:var(--operator-ink);background:radial-gradient(120% 90% at 50% -10%,#16181f 0%,#0b0c0f 60%);grid-template-rows:56px 52px 1fr;gap:8px;padding:8px;font-family:Archivo,Bahnschrift,Arial Narrow,Segoe UI,sans-serif;display:grid;position:absolute;top:50%;left:50%;overflow:hidden}@keyframes operator-sweep{to{transform:rotate(360deg)}}@keyframes operator-pulse{0%,to{opacity:1}50%{opacity:.2}}@keyframes operator-spin{to{transform:rotate(360deg)}}@keyframes operator-hold-fill{0%{width:0}to{width:100%}}.operator-topbar{border:0;grid-template-columns:330px minmax(0,1fr) auto;align-items:stretch;gap:8px;min-height:0;margin:0;padding:0;display:grid}.operator-brand,.operator-connectivity,.operator-alarm,.operator-status-card,.operator-hopper-card{background:var(--operator-card);border:1px solid var(--operator-border)}.operator-brand{align-items:center;gap:12px;padding:0 14px;display:flex}.operator-brand>div{flex-direction:column;gap:2px;min-width:0;display:flex}.operator-brand strong{letter-spacing:.04em;font-size:24px;font-weight:800;line-height:1}.operator-brand small{color:var(--operator-muted);letter-spacing:.03em;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.operator-beacon{background:var(--operator-green-deep);flex:none;width:28px;height:28px;position:relative;overflow:hidden;box-shadow:0 0 14px #37d67a59}.operator-beacon.alarm{background:var(--operator-red);box-shadow:0 0 18px #ec3013cc}.operator-beacon.alarm:after{content:"";background:conic-gradient(#fffffff2 0deg,#0000 55deg 180deg,#fffffff2 235deg,#0000 290deg);animation:.85s linear infinite operator-sweep;position:absolute;inset:-50%}.operator-alarm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0;display:grid}.operator-alarm{align-items:center;gap:10px;min-width:0;padding:0 14px;display:flex}.operator-alarm.active{border-color:var(--operator-red);background:#ec301326}.operator-alarm>div{flex-direction:column;gap:2px;min-width:0;display:flex}.operator-alarm strong,.operator-status-card strong{letter-spacing:.06em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:15px;font-weight:800;overflow:hidden}.operator-alarm span:not(.operator-lamp){color:var(--operator-muted);letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:14px;overflow:hidden}.operator-connectivity{align-items:center;gap:11px;padding:0 14px;display:flex}.operator-connectivity>span{color:var(--operator-muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:7px;font-size:14px;display:flex}.operator-connectivity>small{border:1px solid var(--operator-border);color:var(--operator-amber);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;padding:4px 7px;font-size:12px;font-weight:800}.operator-connectivity>small.ready{border-color:var(--operator-green-deep);color:var(--operator-green)}.operator-connectivity>div{flex-direction:column;min-width:112px;display:flex}.operator-connectivity>div strong{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;line-height:1}.operator-connectivity>div span{color:var(--operator-muted);letter-spacing:.05em;text-transform:uppercase;font-size:14px}.operator-lamp{background:var(--operator-dim);flex:none;width:12px;height:12px;display:inline-block}.operator-lamp.healthy,.operator-lamp.run{background:var(--operator-green-deep)}.operator-lamp.run{background:var(--operator-green);box-shadow:0 0 10px #37d67a99}.operator-lamp.stop{background:var(--operator-dim)}.operator-lamp.neutral{background:#69717d}.operator-lamp.unknown{background:var(--operator-amber)}.operator-lamp.alarm{background:var(--operator-red);box-shadow:0 0 10px #ec3013e6}.operator-lamp.pulse{animation:.6s step-end infinite operator-pulse}.operator-status-strip{grid-template-columns:repeat(3,minmax(0,1fr)) 340px;gap:8px;min-height:0;display:grid}.operator-status-card{align-items:center;gap:12px;min-width:0;padding:0 14px;display:flex}.operator-status-card>span:last-child{color:var(--operator-amber);letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;margin-left:auto;font-size:14px;font-weight:800}.operator-status-card.neutral>span:last-child{color:var(--operator-soft)}.operator-hopper-card{grid-template-columns:1fr 1fr;display:grid}.operator-hopper-card>div{border-right:1px solid var(--operator-divider);align-items:center;gap:9px;min-width:0;padding:0 12px;display:flex}.operator-hopper-card>div:last-child{border-right:0}.operator-hopper-card span:not(.operator-lamp){flex-direction:column;gap:1px;min-width:0;display:flex}.operator-hopper-card strong{letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;font-size:14px;font-weight:800}.operator-hopper-card small{color:var(--operator-amber);letter-spacing:.05em;font-size:12px;font-weight:700}.operator-main-grid{grid-template-columns:340px minmax(0,1fr) 340px;gap:8px;min-height:0;display:grid}.operator-left-column,.operator-centre-column,.operator-right-column{flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex}.operator-card{border:1px solid var(--operator-border);background:var(--operator-card);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.operator-card.alert{border-color:var(--operator-red);background:#ec301324;box-shadow:inset 0 0 60px #ec301340}.operator-card-head{border-bottom:1px solid var(--operator-border);background:var(--operator-card-head);justify-content:space-between;align-items:center;gap:8px;min-height:38px;padding:7px 12px;display:flex}.operator-card-head h3{color:var(--operator-ink);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:15px;font-weight:800}.operator-card-meta{color:var(--operator-muted);letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.operator-auger-card,.operator-temperature-card{flex:1}.operator-aux-card,.operator-power-card,.operator-centre-bottom{flex:none;height:280px}.operator-auger-actions{border-bottom:1px solid var(--operator-divider);grid-template-columns:1fr 1fr;gap:8px;padding:10px;display:grid}.operator-command{min-width:0;color:var(--operator-soft);cursor:pointer;font:inherit;letter-spacing:.08em;text-align:left;text-transform:uppercase;touch-action:none;background:0 0;border:1px solid #333944;padding:13px 11px;font-size:14px;font-weight:800;position:relative;overflow:hidden}.operator-command.run{border-color:var(--operator-green);color:var(--operator-green);background:#37d67a29}.operator-command:hover:not(:disabled){color:var(--operator-ink);border-color:#6c7480}.operator-command:disabled,.operator-gauge-button:disabled,.operator-timer-chips button:disabled{cursor:not-allowed;opacity:1}.operator-command:disabled:not(.run),.operator-timer-chips button:disabled{color:#6c7480}.operator-hold-progress{background:var(--operator-red);height:3px;animation:.72s linear forwards operator-hold-fill;position:absolute;bottom:0;left:0}.operator-auger-values{flex:none;grid-template-columns:1fr 1fr;grid-auto-rows:86px;display:grid}.operator-auger-values>div{border-right:1px solid var(--operator-divider);border-bottom:1px solid var(--operator-divider);flex-direction:column;justify-content:center;gap:5px;min-width:0;padding:4px 12px;display:flex}.operator-auger-values>div>span,.operator-scale span,.operator-gps-values span{color:var(--operator-muted);letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:14px;overflow:hidden}.operator-auger-values strong,.operator-auger-values button{color:var(--operator-ink);font:inherit;font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-size:26px;font-weight:800;line-height:1;display:flex}.operator-auger-values button{cursor:pointer;text-align:left;background:0 0;border:1px dashed #3d434e;margin:0 -7px;padding:3px 7px}.operator-auger-values em{color:var(--operator-muted);letter-spacing:.04em;font-size:14px;font-style:normal}.operator-auger-values .pending{color:var(--operator-amber)}.operator-torque-load{border-bottom:1px solid var(--operator-divider);flex-direction:column;flex:1;justify-content:center;gap:8px;min-height:0;padding:10px 12px;display:flex}.operator-torque-load>div{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.operator-torque-load span,.operator-torque-load small,.operator-fault-strip span{color:var(--operator-muted);letter-spacing:.06em;text-transform:uppercase;font-size:14px}.operator-torque-load strong{font-variant-numeric:tabular-nums;font-size:22px}.operator-torque-load>i{background:#23272f;height:16px;display:block;position:relative}.operator-torque-load>i>b{background:var(--operator-green);position:absolute;inset:0 auto 0 0}.operator-fault-strip{justify-content:space-between;align-items:center;gap:8px;min-height:42px;padding:9px 12px;display:flex}.operator-fault-strip strong{color:var(--operator-amber);letter-spacing:.05em;font-size:14px}.operator-aux-list{flex:1;grid-template-rows:repeat(3,1fr);min-height:0;display:grid}.operator-aux-row{border-bottom:1px solid var(--operator-divider);grid-template-columns:1fr auto;align-items:center;gap:8px;min-height:0;padding:5px 10px;display:grid}.operator-aux-row>div:first-child{flex-direction:column;gap:4px;min-width:0;display:flex}.operator-aux-label{letter-spacing:.02em;text-transform:uppercase;align-items:center;gap:8px;font-size:14px;font-weight:800;line-height:1.1;display:flex}.operator-aux-row small{color:var(--operator-amber);letter-spacing:.04em;font-size:12px;font-weight:700}.operator-binary-actions{grid-template-columns:1fr 1fr;gap:5px;display:grid}.operator-binary-actions .operator-command{text-align:center;min-width:48px;padding:10px 7px}.operator-timer-chips{gap:5px;display:flex}.operator-timer-chips button{color:var(--operator-ink);cursor:pointer;font:inherit;font-variant-numeric:tabular-nums;background:0 0;border:1px dashed #3d434e;align-items:baseline;gap:4px;padding:3px 6px;font-size:14px;font-weight:800;display:flex}.operator-timer-chips span{color:var(--operator-muted);font-size:12px}.operator-blower-bank{flex:1}.operator-blower-grid{flex:1;grid-template-columns:repeat(5,minmax(0,1fr));min-height:0;display:grid}.operator-blower{border-right:1px solid var(--operator-divider);flex-direction:column;gap:4px;min-width:0;min-height:0;padding:6px 10px 8px;display:flex}.operator-blower:last-child{border-right:0}.operator-blower-tag{justify-content:space-between;align-items:center;gap:4px;display:flex}.operator-blower-tag strong{letter-spacing:.05em;font-size:15px;font-weight:800}.operator-blower-tag .operator-lamp{width:10px;height:10px}.operator-role{color:#9aa0ab;cursor:pointer;font:inherit;letter-spacing:.03em;text-align:left;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;background:0 0;border:1px solid #333944;padding:6px 8px;font-size:14px;font-weight:800;overflow:hidden}.operator-role.primary{color:var(--operator-ink);background:#22262e;border-color:#5b6470}.operator-gauge-button{cursor:pointer;background:0 0;border:0;flex:1;justify-content:center;align-items:center;min-height:0;padding:0;display:flex}.operator-gauge{width:100%;height:100%;max-height:112px;display:block}.operator-gauge circle{fill:none;stroke-width:9px;transform-origin:64px 64px;transform:rotate(135deg)}.operator-gauge-track{stroke:#22262e;stroke-dasharray:226.2 301.6}.operator-gauge-dead{stroke:#2f343d;stroke-dasharray:52.6 301.6}.operator-gauge-value{stroke:var(--operator-dim)}.operator-gauge-value.running{stroke:var(--operator-green)}.operator-impeller{fill:#3a4048;transform-origin:64px 64px}.operator-impeller.spinning{fill:var(--operator-green);animation:.9s linear infinite operator-spin}.operator-gauge .operator-gauge-hub{fill:var(--operator-card);stroke:var(--operator-dim);stroke-width:2px;transform:none}.operator-blower-speed{justify-content:space-between;align-items:baseline;gap:4px;display:flex}.operator-blower-speed strong{color:var(--operator-ink);font-variant-numeric:tabular-nums;font-size:28px;font-weight:800;line-height:1}.operator-blower-speed span{color:var(--operator-muted);font-size:14px;font-weight:800}.operator-blower .operator-command{padding:9px 10px}.operator-centre-bottom{grid-template-columns:minmax(0,1fr) 300px;gap:8px;display:grid}.operator-weighing-card,.operator-gps-card{height:100%}.operator-weighing-grid{flex:1;grid-template-columns:1fr 1fr;min-height:0;display:grid}.operator-scale{border-right:1px solid var(--operator-divider);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-width:0;display:grid}.operator-scale-main{border-right:1px solid var(--operator-divider);flex-direction:column;justify-content:center;gap:6px;min-width:0;padding:12px 16px;display:flex}.operator-scale-main>strong{letter-spacing:.08em;text-transform:uppercase;font-size:16px;font-weight:800}.operator-scale-main>div{align-items:baseline;gap:6px;display:flex}.operator-scale-main>div b{font-variant-numeric:tabular-nums;font-size:48px;line-height:1}.operator-scale em,.operator-gps-card em{color:var(--operator-muted);font-size:14px;font-style:normal;font-weight:600}.operator-ack-button{color:#0b0c0f;width:100%;font:inherit;letter-spacing:.1em;text-align:left;text-transform:uppercase;background:#13ec1a;border:1px solid #0bff09;padding:12px;font-size:14px;font-weight:800}.operator-ack-button:disabled{cursor:not-allowed;filter:none;opacity:1}.operator-scale-secondary{flex-direction:column;min-width:0;display:flex}.operator-scale-secondary>div{border-bottom:1px solid var(--operator-divider);flex-direction:column;flex:1;justify-content:center;gap:5px;min-height:0;padding:8px 14px;display:flex}.operator-scale-secondary strong{color:var(--operator-soft);font-variant-numeric:tabular-nums;font-size:28px;line-height:1}.operator-scale-secondary small{color:var(--operator-amber);letter-spacing:.04em;font-size:11px;font-weight:800}.operator-gps-values{flex:1;grid-template-rows:1fr 1fr;min-height:0;display:grid}.operator-gps-values>div{border-bottom:1px solid var(--operator-divider);flex-direction:column;justify-content:center;gap:5px;padding:6px 14px;display:flex}.operator-gps-values strong{font-variant-numeric:tabular-nums;font-size:26px;line-height:1}.operator-readonly-button{color:var(--operator-amber);font:inherit;letter-spacing:.06em;text-align:left;text-transform:uppercase;background:0 0;border:1px dashed #3d434e;margin:10px;padding:12px;font-size:13px;font-weight:800}.operator-temperature-list{flex-direction:column;flex:1;min-height:0;display:flex}.operator-temperature-row{border-bottom:1px solid var(--operator-divider);flex:1;grid-template-columns:1fr auto;align-items:center;gap:10px;min-height:0;padding:0 12px;display:grid}.operator-temperature-row.alarm{background:#ec30132e;box-shadow:inset 0 0 26px #ec301359}.operator-temperature-row.pending{background:#e8a33d0d}.operator-temperature-row>div{flex-direction:column;gap:6px;min-width:0;display:flex}.operator-temperature-row>div>strong{letter-spacing:.05em;align-items:center;gap:8px;font-size:15px;font-weight:800;display:flex}.operator-temperature-row>div>span{color:var(--operator-muted);letter-spacing:.04em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:14px;overflow:hidden}.operator-temperature-row i{background:#23272f;height:4px;display:block}.operator-temperature-row i b{background:#5c6470;height:100%;display:block}.operator-temperature-row i b.open{background:var(--operator-amber)}.operator-temperature-row i b.fault{background:var(--operator-red)}.operator-temperature-row>em{color:var(--operator-ink);font-variant-numeric:tabular-nums;font-size:30px;font-style:normal;font-weight:800;line-height:1}.operator-temperature-row>em.open{color:var(--operator-amber);font-size:22px}.operator-temperature-row>em.fault{color:var(--operator-red);font-size:22px}.operator-power-list{flex-direction:column;flex:1;min-height:0;display:flex}.operator-power-list>div{border-bottom:1px solid var(--operator-divider);flex:1;grid-template-columns:1fr auto 96px;align-items:center;gap:10px;min-height:0;padding:0 12px;display:grid}.operator-power-list span,.operator-power-list em{color:var(--operator-muted);letter-spacing:.04em;font-size:14px;font-style:normal}.operator-power-list span{text-transform:uppercase}.operator-power-list strong{font-variant-numeric:tabular-nums;font-size:24px;font-weight:800;line-height:1}.operator-power-list strong.alarm{color:var(--operator-red)}.operator-power-list strong.pending{color:var(--operator-amber)}.operator-command-toast{z-index:50;background:#14161cf5;border:1px solid #5f6874;align-items:center;gap:10px;max-width:620px;padding:10px 13px;font-size:14px;display:flex;position:absolute;bottom:18px;right:20px;box-shadow:0 12px 36px #0009}.operator-command-toast.staged{border-color:var(--operator-green)}.operator-command-toast.error,.operator-command-toast.rejected{border-color:var(--operator-red)}.operator-command-toast strong{color:var(--operator-soft);white-space:nowrap}.operator-telemetry-age{color:#606975;letter-spacing:.04em;pointer-events:none;text-transform:uppercase;font-size:11px;position:absolute;bottom:10px;right:354px}.operator-modal-backdrop{z-index:60;background:#060709c7;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.operator-keypad{background:var(--operator-card);border:1px solid #333944;width:400px;box-shadow:0 24px 80px #000000b3}.operator-modal-head{border-bottom:1px solid var(--operator-border);background:var(--operator-card-head);justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.operator-modal-head>div{flex-direction:column;gap:3px;display:flex}.operator-modal-head strong{letter-spacing:.05em;text-transform:uppercase;font-size:16px}.operator-modal-head span{color:var(--operator-muted);letter-spacing:.05em;text-transform:uppercase;font-size:14px}.operator-modal-head button{color:var(--operator-soft);cursor:pointer;font:inherit;background:0 0;border:1px solid #333944;padding:5px 11px;font-size:16px;font-weight:800}.operator-keypad-display{background:#0f1116;border:1px solid #333944;justify-content:flex-end;align-items:baseline;gap:8px;margin:14px 16px 6px;padding:10px 14px;display:flex}.operator-keypad-display strong{font-variant-numeric:tabular-nums;font-size:36px;line-height:1}.operator-keypad-display strong.muted{color:#5b616c}.operator-keypad-display span{color:var(--operator-muted);font-size:14px;font-weight:800}.operator-pad-hint{min-height:18px;color:var(--operator-muted);letter-spacing:.05em;text-transform:uppercase;margin:8px 16px 0;font-size:14px}.operator-pad-hint.error{color:var(--operator-red)}.operator-key-grid,.operator-preset-grid{grid-template-columns:repeat(3,1fr);gap:6px;padding:8px 16px 0;display:grid}.operator-preset-grid{padding-top:6px}.operator-key-grid button,.operator-preset-grid button,.operator-modal-actions button{background:var(--operator-card-head);color:var(--operator-ink);cursor:pointer;font:inherit;border:1px solid #333944;font-size:22px;font-weight:800}.operator-key-grid button{padding:14px 0}.operator-preset-grid button{color:var(--operator-soft);background:0 0;border-style:dashed;padding:10px 0;font-size:14px}.operator-modal-actions{grid-template-columns:1fr 1fr;gap:6px;padding:8px 16px 16px;display:grid}.operator-modal-actions button{color:var(--operator-soft);letter-spacing:.1em;text-transform:uppercase;background:0 0;padding:14px 0;font-size:14px}.operator-modal-actions button.accent{border-color:var(--operator-red);background:var(--operator-red);color:#0b0c0f}@media (prefers-reduced-motion:reduce){.operator-beacon.alarm:after,.operator-lamp.pulse,.operator-impeller.spinning{animation:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app{max-width:1200px;margin:0 auto;padding:24px;font-family:Segoe UI,system-ui,sans-serif}.app:has(.operator-hmi-shell){max-width:none;padding:12px}.app:has(.operator-hmi-shell)>header{margin-bottom:10px}header{border-bottom:1px solid #333;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;display:flex}header h1{margin:0;font-size:22px}.status{border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.status.connected{color:#7fe0a5;background:#16442b}.status.connecting,.status.reconnecting{color:#e6d27a;background:#4a4420}.status.disconnected,.status.error{color:#f0a0a0;background:#4a1f1f}.err-msg{color:#f0a0a0;background:#4a1f1f;border-radius:6px;padding:8px 12px;font-size:13px}.waiting{color:#999;font-style:italic}.devices{gap:20px;display:grid}.panel{background:#0e1721;border:1px solid #293746;border-radius:14px;overflow:hidden;box-shadow:0 18px 48px #00000038}.panel-head{background:linear-gradient(90deg,#22d3ad14,#0000 42%),#14202c;border-bottom:1px solid #2a3948;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.panel-head>div{flex-direction:column;gap:2px;display:flex}.device-id{color:#8ee7d2;letter-spacing:.25px;font-size:14px;font-weight:750}.panel-kicker{color:#8191a1;letter-spacing:.2px;font-size:11px}.panel-meta{color:#93a1af;align-items:center;gap:6px;font-size:12px;display:flex}.latency{color:#b8c7d4;background:#1b2a38;border:1px solid #354657;border-radius:999px;margin-right:4px;padding:2px 8px;font-size:11px;font-weight:650}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.dot.online{background:#45d58c;box-shadow:0 0 8px #45d58cb3}.dot.stale{background:#d29350}.summary-strip{background:#101b26;border-bottom:1px solid #263545;grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.summary-metric{border-right:1px solid #263545;min-width:0;padding:15px 17px}.summary-metric:last-child{border-right:0}.summary-label{color:#78899a;letter-spacing:.72px;text-transform:uppercase;margin-bottom:6px;font-size:10px;font-weight:700;display:block}.summary-value{color:#f1f5f8;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(17px,2.1vw,23px);font-weight:720;line-height:1.1;display:block;overflow:hidden}.command-bar{background:#162330;border:1px solid #314354;border-radius:10px;grid-template-columns:auto minmax(220px,1fr) auto;align-items:center;gap:16px;margin:14px 14px 0;padding:10px 12px;display:grid}.command-bar.has-drafts{background:linear-gradient(90deg,#d69f471a,#0000 60%),#18242f;border-color:#b9863e}.command-mode,.command-actions{align-items:center;gap:9px;display:flex}.command-bar-label{color:#d4dee6;font-size:12px;font-weight:700}.command-state{color:#9aabba;text-align:center;justify-content:center;align-items:center;gap:8px;min-width:0;font-size:12px;display:flex}.command-feedback{color:#c5d2dc;background:#263746;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:650}.command-feedback.success{color:#77dfa7;background:#153d2b}.command-feedback.warning{color:#edcf7b;background:#493b1f}.command-feedback.error{color:#f0a4a7;background:#4b2527}.command-feedback.sending{color:#96c8ed;background:#1e3a54}.command-actions button{cursor:pointer;font:inherit;border:0;border-radius:7px;padding:7px 12px;font-size:12px;font-weight:720}.discard-btn{color:#aab8c3;background:0 0}.discard-btn:hover:not(:disabled){background:#243341}.send-btn{color:#fff;background:#2b9b7f;box-shadow:0 5px 14px #2b9b7f38}.send-btn:hover:not(:disabled){background:#33aa8c}.command-actions button:disabled{cursor:not-allowed;opacity:.4;box-shadow:none}.data-dashboard-grid{grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:dense;gap:12px;padding:14px;display:grid}.data-card{background:linear-gradient(145deg,#ffffff07,#0000 45%),#121e29;border:1px solid #273747;border-radius:11px;min-width:0;padding:14px}.data-card-auger{grid-column:span 5}.data-card-blowers{grid-column:span 7}.data-card-temperatures,.data-card-electrical,.data-card-device,.data-card-signals{grid-column:span 4}.data-card-operations{grid-column:span 8}.data-dashboard-grid:not(:has(.data-card-signals)) .data-card-operations{grid-column:span 12}.data-card-heading{justify-content:space-between;align-items:flex-start;min-height:39px;margin-bottom:10px;display:flex}.data-card h3{color:#e7edf2;letter-spacing:.1px;margin:2px 0 0;font-size:14px;font-weight:720}.data-card-eyebrow{color:#708396;letter-spacing:.7px;text-transform:uppercase;font-size:9px;font-weight:720}.control-list,.readout-list{flex-direction:column;display:flex}.control-row,.readout-row{border-top:1px solid #53697c36;justify-content:space-between;align-items:center;gap:10px;min-height:34px;display:flex}.control-list>:first-child,.readout-list>:first-child{border-top:0}.control-row.compact{border-top:0;min-height:0}.control-label,.readout-label{color:#aebbc6;font-size:12px;line-height:1.25}.readout-value{color:#edf2f5;font-variant-numeric:tabular-nums;text-align:right;font-size:12px;font-weight:680}.draft-dot{vertical-align:1px;background:#e3a44d;border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block;box-shadow:0 0 6px #e3a44d80}.control-input-stack{flex-direction:column;align-items:flex-end;gap:3px;min-width:105px;display:inline-flex}.control-input-wrap{align-items:center;gap:6px;display:inline-flex}.control-input{color:#eef3f6;width:72px;font:inherit;font-variant-numeric:tabular-nums;text-align:right;background:#0b141d;border:1px solid #3a4c5d;border-radius:6px;outline:none;padding:5px 7px;font-size:12px;transition:border-color .12s,box-shadow .12s,background .12s}.control-input:hover:not(:disabled){border-color:#587086}.control-input:focus{border-color:#42b99a;box-shadow:0 0 0 3px #42b99a24}.control-input.dirty{background:#1e1a12;border-color:#c28a3c}.control-input.invalid{background:#241416;border-color:#d36e72}.control-input:disabled{cursor:not-allowed;opacity:.58}.control-unit{color:#718496;min-width:29px;font-size:10px}.control-error{color:#ef9ea1;text-align:right;max-width:155px;font-size:10px}.seg{border:1px solid #3a4b5b;border-radius:6px;display:inline-flex;overflow:hidden}.seg-btn{color:#718496;cursor:pointer;background:#182632;border:0;border-left:1px solid #3a4b5b;min-width:40px;padding:5px 8px;font-size:10px;font-weight:750}.seg-btn:first-child{border-left:0}.seg-btn:hover:not(:disabled){color:#c1cbd3;background:#223442}.seg-btn.active-on{color:#7be3ab;background:#174732}.seg-btn.active-off{color:#f0a5a8;background:#4d292b}.seg-btn:disabled{cursor:not-allowed;opacity:.58}.badge{letter-spacing:.35px;border-radius:999px;align-items:center;padding:2px 8px;font-size:10px;font-weight:750;display:inline-flex}.badge.on{color:#7be3ab;background:#174732}.badge.off{color:#f0a5a8;background:#4d292b}.badge.neutral{color:#c0ccd5;background:#283846}.badge.warn{color:#edcf7b;background:#493b1f}.card-readouts{border-top:1px solid #2a3b4b;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;margin-top:8px;padding-top:8px;display:grid}.card-readouts .readout-row{border-top:0;min-height:30px}.blower-control-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.blower-control{background:#0f1a24;border:1px solid #2a3c4c;border-radius:8px;min-width:0;padding:8px 9px}.blower-control-heading{color:#8ee7d2;letter-spacing:.45px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;font-size:10px;font-weight:750;display:flex}.blower-control-heading .control-label{display:none}.blower-control>.control-row .control-label{color:#76899a;text-overflow:ellipsis;white-space:nowrap;max-width:72px;font-size:9px;overflow:hidden}.blower-control .control-input-stack{min-width:94px}.blower-control .control-input{width:62px}.blower-control .seg-btn{min-width:34px;padding:4px 6px}.sensor-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.sensor-tile{text-align:center;background:#0e1923;border:1px solid #2b3c4b;border-radius:8px;min-width:0;padding:9px 7px}.sensor-label{color:#718596;margin-bottom:4px;font-size:9px;font-weight:720;display:block}.sensor-value{color:#e8eff3;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:720;display:block;overflow:hidden}.sensor-value small{color:#718596;margin-left:2px;font-size:9px;font-weight:500}.operation-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.operation-columns h4{color:#718596;letter-spacing:.5px;text-transform:uppercase;margin:0 0 6px;font-size:10px;font-weight:720}@media (width<=900px){.summary-strip{grid-template-columns:repeat(5,minmax(105px,1fr));overflow-x:auto}.command-bar{grid-template-columns:1fr auto}.command-state{text-align:left;grid-area:2/1/auto/-1;justify-content:flex-start}.data-card-auger,.data-card-blowers,.data-card-operations{grid-column:span 12}.data-card-temperatures,.data-card-electrical,.data-card-device,.data-card-signals{grid-column:span 6}}@media (width<=620px){.panel-head{flex-direction:column;align-items:flex-start}.panel-meta{flex-wrap:wrap}.command-bar{grid-template-columns:1fr}.command-state,.command-actions{grid-area:auto/1;justify-content:flex-start}.command-actions{width:100%}.command-actions button{flex:1}.data-dashboard-grid{grid-template-columns:1fr}.data-dashboard-grid>.data-card{grid-column:1}.blower-control-grid,.operation-columns{grid-template-columns:1fr}}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px;font-family:Segoe UI,system-ui,sans-serif;display:flex}.login-card{background:#171717;border:1px solid #333;border-radius:14px;flex-direction:column;gap:12px;width:100%;max-width:360px;padding:28px 26px;display:flex}.login-title{margin:0;font-size:22px}.login-sub{color:#999;margin:0 0 8px;font-size:13px}.login-field{color:#bbb;flex-direction:column;gap:4px;font-size:13px;display:flex}.login-field input{color:#eee;background:#0e0e0e;border:1px solid #3a3a3a;border-radius:6px;padding:9px 10px;font-size:14px}.login-btn{color:#fff;cursor:pointer;background:#2f6fed;border:none;border-radius:6px;margin-top:4px;padding:10px;font-size:14px;font-weight:700}.login-err{color:#f0a0a0;background:#4a1f1f;border-radius:6px;margin:0;padding:8px 10px;font-size:13px}.login-hint{color:#888;margin:6px 0 0;font-size:12px;line-height:1.6}.header-right{align-items:center;gap:10px;display:flex}.user-chip{color:#cdd;background:#222;border:1px solid #3a3a3a;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.logout-btn{color:#ccc;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:600}.logout-btn:hover{background:#333}.fleet-summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.fleet-summary h2{margin:0 0 4px;font-size:18px}.summary-counts{color:#aaa;align-items:center;gap:6px;font-size:13px;display:inline-flex}.fleet-search{color:#eee;background:#0e0e0e;border:1px solid #3a3a3a;border-radius:6px;min-width:200px;padding:8px 10px;font-size:13px}.fleet-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.machine-card{text-align:left;cursor:pointer;color:inherit;font:inherit;background:#191919;border:1px solid #333;border-radius:12px;align-items:center;gap:14px;padding:16px;transition:border-color .15s,background .15s;display:flex}.machine-card:hover{background:#1e1e1e;border-color:#555}.machine-card.online{background:#13241a;border-color:#2f6f4a}.machine-card.online:hover{background:#16301f}.card-img{flex-shrink:0;width:52px;height:52px}.card-body{flex-direction:column;gap:3px;min-width:0;display:flex}.card-name{color:#eee;font-size:15px;font-weight:700}.card-id{color:#888;text-overflow:ellipsis;font-family:Consolas,monospace;font-size:11px;overflow:hidden}.status-pill{letter-spacing:.5px;border-radius:999px;align-self:flex-start;margin-top:2px;padding:2px 8px;font-size:10px;font-weight:800}.status-pill.online{color:#7fe0a5;background:#16442b}.status-pill.offline{color:#d99;background:#3a2323}.card-last{color:#999;font-size:12px}.plant-view{color:#2b3038;background:#eceef2;border:1px solid #d3d7de;border-radius:12px;padding:12px 14px 8px}.plant-view.offline{opacity:.55;filter:grayscale(.4)}.plant-toolbar{align-items:center;gap:12px;margin-bottom:6px;display:flex}.mode-badge{letter-spacing:.6px;border-radius:999px;padding:3px 12px;font-size:12px;font-weight:800}.mode-badge.remote{color:#1d7a45;background:#d6f0e0;border:1px solid #9ed8b7}.mode-badge.local{color:#8a6d1f;background:#fbeecb;border:1px solid #e6cf8a}.mode-badge.unknown{color:#6b7480;background:#e2e5ea;border:1px solid #cfd4db}.flow-hint{color:#6b7480;letter-spacing:.4px;font-size:12px}.plant-stage{background:#f4f6f8;border:1px solid #dde1e7;border-radius:8px;position:relative;overflow:hidden}.plant-svg{z-index:3;background:0 0;width:100%;height:auto;display:block;position:relative}.t1000-assembly-host{z-index:2;pointer-events:none;width:78.912%;line-height:0;position:absolute;top:3.45%;left:7.9%}.t1000-assembly-host>img{filter:contrast(1.03)saturate(.94);width:100%;height:auto;display:block}.biomass-input-conveyor-host,.char-output-conveyor-host,.char-output-conveyor-hopper-overlay{z-index:1;line-height:0;position:absolute}.biomass-input-conveyor-host{width:33%;height:55.3%;top:43.2%;left:61%}.biomass-input-conveyor-host>img{width:100%;height:100%;display:block}.char-output-conveyor-host,.char-output-conveyor-hopper-overlay{width:24.18%;top:65.5%;left:9.5%}.char-output-conveyor-host>img,.char-output-conveyor-hopper-overlay>img{filter:contrast(1.04)saturate(.92);width:100%;height:auto;display:block}.char-output-conveyor-hopper-overlay{z-index:3;pointer-events:none;opacity:.7;clip-path:polygon(69% 7%,97% 7%,97% 43%,84% 43%,70% 35%)}.equipment-resource-status{color:#59666d;letter-spacing:.45px;background:#ffffffe0;border:1px solid #c6cdd1;border-radius:999px;align-items:center;gap:5px;padding:3px 7px;font-size:8px;font-weight:800;line-height:1;display:inline-flex;position:absolute;top:5%;left:4%}.equipment-resource-led{background:#8b969c;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 2px #8b969c2e}.char-output-conveyor-host[data-state=running] .equipment-resource-led{background:#2dbe60;box-shadow:0 0 0 2px #2dbe602e}.char-output-conveyor-host[data-state=unknown] .equipment-resource-led{background:#f4b400}.char-output-conveyor-host[data-state=offline]{opacity:.52;filter:grayscale()}.char-output-conveyor-hopper-overlay[data-state=offline]{opacity:.36;filter:grayscale()}.biomass-input-conveyor-host[data-state=offline],.t1000-assembly-host[data-state=offline]{opacity:.52;filter:grayscale()}.plant-svg .cabinet{fill:#cfd4db;stroke:#59616e;stroke-width:2px}.plant-svg .panel-box{fill:#fbfcfd;stroke:#c3c9d1;stroke-width:1.5px}.plant-svg .fill-soft{fill:#fbfcfd}.plant-svg .sym .fill-soft{fill:color-mix(in srgb, currentColor 10%, #fbfcfd)}.plant-svg .sym-label{letter-spacing:.4px;fill:#6b7480;font-size:10px;font-weight:700}.plant-svg .dir-arrow{letter-spacing:1px;font-size:12px;font-weight:800}.plant-svg .chip-bg{fill:#fff;stroke:#d3d8df;stroke-width:1px}.plant-svg .chip-label{letter-spacing:.3px;fill:#7a828d;text-transform:uppercase;font-size:9px;font-weight:600}.plant-svg .chip-value{font-variant-numeric:tabular-nums;font-size:13px;font-weight:800}@media (prefers-reduced-motion:no-preference){.plant-svg .blower.run .fan{transform-box:fill-box;transform-origin:50%;animation:1.1s linear infinite spin}.plant-svg .auger.run{animation:.9s linear infinite dash}.plant-svg .pump.run{transform-box:fill-box;transform-origin:50%;animation:1.3s ease-in-out infinite pumppulse}.char-output-conveyor-host[data-state=running] .equipment-resource-led{animation:1.35s ease-in-out infinite equipmentpulse}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes dash{to{stroke-dashoffset:-20px}}@keyframes pumppulse{50%{opacity:.65}}@keyframes equipmentpulse{50%{opacity:.42;transform:scale(.82)}}.plant-note{color:#6b7480;margin:8px 4px 2px;font-size:12px;line-height:1.5}.view-toggle{border:1px solid #3a3a3a;border-radius:7px;margin-left:auto;display:inline-flex;overflow:hidden}.vt-btn{color:#9aa0a8;letter-spacing:.3px;cursor:pointer;background:#222;border:none;padding:6px 14px;font-size:12px;font-weight:700}.vt-btn:hover{background:#2c2c2c}.vt-btn.active{color:#fff;background:#2f6fed}.machine-view{gap:14px;display:grid}.machine-bar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.machine-view:has(.operator-hmi-shell){gap:8px}.machine-view:has(.operator-hmi-shell) .machine-bar{padding-inline:2px}.machine-title{margin:0;font-size:18px}.back-btn{color:#cdd;cursor:pointer;background:#222;border:1px solid #3a3a3a;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:600}.back-btn:hover{background:#2c2c2c}.offline-banner{color:#e6b0b0;background:#3a2323;border:1px solid #5a3030;border-radius:8px;padding:10px 14px;font-size:13px}
