:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#e8eef5;background:#07131f;font-synthesis:none;--bg: #07131f;--panel: #0d1e2d;--panel-2: #11283a;--border: rgba(176, 204, 224, .13);--muted: #8da1b4;--lime: #9bd648;--cyan: #66d7ff;--normal: #39d98a;--warning: #f5b849;--danger: #ff646d;--offline: #718397}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 70% 0,#102a3e 0,var(--bg) 34%)}button,input,select{font:inherit}button{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:28px 20px 22px;background:#04101cf0;border-right:1px solid var(--border);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 28px}.brand-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;color:#07131f;background:var(--lime);font-weight:900;box-shadow:0 0 0 5px #9bd64814}.brand strong{display:block;font-size:15px;letter-spacing:.08em}.brand strong span{color:var(--lime)}.brand small{color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.12em}.sidebar nav{display:grid;gap:4px}.sidebar nav button{border:0;background:transparent;padding:11px 12px;border-radius:8px;color:#9eb0c1;display:flex;justify-content:space-between;cursor:pointer;text-align:left}.sidebar nav button:hover{background:#ffffff09;color:#fff}.sidebar nav button.active{color:#fff;background:#9bd6481f;box-shadow:inset 3px 0 var(--lime)}.sidebar nav small{font-family:ui-monospace,monospace;color:#64788a}.sidebar-meta{margin-top:auto;padding:15px 10px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;gap:10px;align-items:center}.sidebar-meta strong,.sidebar-meta small{display:block}.sidebar-meta strong{font-size:12px;text-transform:capitalize}.sidebar-meta small{color:var(--muted);font-size:10px;margin-top:2px}.connection-light{width:9px;height:9px;border-radius:50%;background:var(--offline)}.connection-live{background:var(--normal);box-shadow:0 0 12px #39d98ab3}.connection-connecting,.connection-reconnecting{background:var(--warning)}.sidebar-foot{padding:16px 10px 0;display:grid;gap:3px}.sidebar-foot span{margin-top:7px;color:#617689;font:9px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em}.sidebar-foot strong{font-size:11px;font-weight:500;color:#9eb0c1}.main-content{min-width:0;padding:38px 42px 70px}.page-stack{width:min(1260px,100%);margin:0 auto;display:grid;gap:18px}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:5px}.page-header h1{margin:3px 0 6px;font-size:clamp(28px,3vw,40px);letter-spacing:-.035em}.page-header p{margin:0;color:var(--muted)}.eyebrow{margin:0;color:var(--lime)!important;text-transform:uppercase;font:10px ui-monospace,monospace;letter-spacing:.13em}.header-state{display:grid;justify-items:end;gap:7px;color:var(--muted);font:11px ui-monospace,monospace}.mock-pill{color:var(--lime);border:1px solid rgba(155,214,72,.3);background:#9bd64814;border-radius:999px;padding:6px 10px;font:10px ui-monospace,monospace;text-transform:uppercase}.panel,.unit-card,.gateway-card,.gauge-card{background:linear-gradient(145deg,#11283aeb,#0a1d2beb);border:1px solid var(--border);border-radius:13px;box-shadow:0 16px 40px #0000001f}.panel{padding:21px;min-width:0}.panel-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:14px}.panel-heading.compact{margin-bottom:17px}.panel-heading h2{margin:5px 0 0;font-size:17px}.subtle{color:var(--muted);font:10px ui-monospace,monospace}.gauge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.gauge-card{padding:16px 17px;position:relative;overflow:hidden}.gauge-card:after{content:"";position:absolute;inset:auto 0 0;height:3px;background:var(--normal);opacity:.75}.gauge-card.gauge-warning:after{background:var(--warning)}.gauge-card.gauge-danger:after{background:var(--danger)}.gauge-top{display:flex;justify-content:space-between;align-items:center}.gauge-icon{color:var(--cyan);font-size:21px}.gauge-card>strong{display:inline-block;margin-top:14px;font:700 29px ui-monospace,monospace;letter-spacing:-.05em}.gauge-unit{margin-left:5px;color:var(--muted);font-size:11px}.gauge-card>p{margin:4px 0 0;color:#a8b9c7;font-size:12px}.status-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 7px;text-transform:capitalize;font:9px ui-monospace,monospace;white-space:nowrap;background:#7183971a;color:var(--offline)}.status-dot,.reading-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.status-normal{color:var(--normal);background:#39d98a1a}.status-warning{color:var(--warning);background:#f5b8491a}.status-danger{color:var(--danger);background:#ff646d1a}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr);gap:12px}.trend-chart{width:100%;height:250px;overflow:visible}.grid-line{stroke:#a0bed31f;stroke-width:.5;vector-effect:non-scaling-stroke}.trend-legend{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:10px;color:var(--muted);font-size:10px}.trend-legend i{display:inline-block;width:13px;height:2px;margin-right:4px;vertical-align:middle}.reading-list{display:grid}.reading-row{display:grid;grid-template-columns:1fr auto 76px;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid var(--border);font-size:11px}.reading-row:last-child{border-bottom:0}.reading-row>div{display:flex;gap:8px;align-items:center;color:#adc0d0}.reading-row>strong{font-family:ui-monospace,monospace;font-weight:500}.dot-normal{background:var(--normal)}.dot-warning{background:var(--warning)}.dot-danger{background:var(--danger)}.dot-offline{background:var(--offline)}.cylinder-panel{display:grid;grid-template-columns:230px 1fr;column-gap:25px;align-items:center}.cylinder-panel .panel-heading{grid-column:1}.engine-body{grid-column:2;grid-row:1 / span 2;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;border-radius:12px;background:#071621;border:1px solid var(--border);padding:18px;position:relative}.engine-body:before{content:"";position:absolute;left:8%;right:8%;top:50%;height:7px;transform:translateY(-50%);border-radius:8px;background:#263e50}.piston{position:relative;z-index:1;height:65px;border:1px solid #2e4a5d;background:#102637;border-radius:7px;display:grid;place-items:center;color:var(--normal)}.piston:nth-child(n+5){grid-row:2}.piston span{font:700 10px ui-monospace,monospace}.piston i{display:block;width:20px;height:11px;border-radius:3px 3px 7px 7px;background:currentColor;opacity:.8}.piston-warning{color:var(--warning);border-color:#f5b84999}.piston-danger{color:var(--danger);border-color:#ff646db3;box-shadow:inset 0 0 20px #ff646d14}.panel-note{margin:0;color:var(--muted);font-size:10px;align-self:start}.unit-card{display:flex;align-items:center;padding:20px;gap:16px}.device-icon{width:53px;height:53px;border-radius:11px;border:1px solid rgba(155,214,72,.3);background:#9bd64814;color:var(--lime);display:grid;place-items:center;font:700 13px ui-monospace,monospace}.device-main{flex:1}.device-main>span{color:var(--muted);font:9px ui-monospace,monospace;text-transform:uppercase}.device-main h2{margin:3px 0;font-size:17px}.device-main p{margin:0;color:var(--muted);font-size:11px}.gateway-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.gateway-card{padding:17px}.gateway-head{display:flex;align-items:center;justify-content:space-between}.gateway-head>span{color:var(--cyan);font:10px ui-monospace,monospace}.gateway-card h3{margin:10px 0 4px;font-size:15px}.gateway-card p{margin:0;color:var(--muted);font-size:11px}.channel-dots{display:flex;flex-wrap:wrap;gap:5px;margin-top:15px}.channel-dots span{width:25px;height:25px;display:grid;place-items:center;border-radius:5px;font:9px ui-monospace,monospace;border:1px solid var(--border)}.channel-dots .assigned{color:var(--lime);background:#9bd64814}.channel-dots .unassigned{color:#64788a}.deployment-panel{display:grid;gap:16px}.duty-pill{border-radius:999px;padding:6px 10px;font:10px ui-monospace,monospace;text-transform:uppercase;white-space:nowrap}.duty-pill.collecting{color:var(--lime);border:1px solid rgba(155,214,72,.3);background:#9bd64814}.duty-pill.dormant{color:var(--muted);border:1px solid var(--border);background:#8da1b414}.deployment-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;padding:14px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.deployment-summary>div{display:grid;gap:4px}.deployment-summary span{color:#6d8294;font:8px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.09em}.deployment-summary strong{font-size:13px}.deployment-form,.duty-cycle-form{padding-top:4px}.deployment-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.deployment-form-actions button{height:38px;padding:0 16px;border-radius:6px}.deployment-error{margin:0;color:var(--danger);font-size:10px}.checkbox-field{display:flex!important;flex-direction:row!important;align-items:center;gap:8px}.checkbox-field input{width:auto!important;height:auto!important}.checkbox-field span{margin:0!important;text-transform:none!important;font:11px inherit!important;color:inherit!important}.config-panel{padding:0;overflow:hidden}.config-notice{padding:15px 19px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border);background:#9bd6480e}.config-notice strong{color:var(--lime);font-size:11px}.config-notice span{color:var(--muted);font-size:11px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}.config-table{min-width:980px}.config-table th{text-align:left;padding:10px 13px;color:#64788a;background:#05111c73;text-transform:uppercase;font:9px ui-monospace,monospace;letter-spacing:.06em}.config-table td{padding:9px 13px;border-top:1px solid var(--border);font-size:11px}.config-table td strong,.config-table td small{display:block}.config-table td small{color:#64788a;margin-top:2px}.config-table select,.config-table input{width:100%;border:1px solid var(--border);border-radius:6px;padding:7px 8px;color:#dce8f1;background:#081925;outline:0}.config-table select:focus,.config-table input:focus{border-color:#9bd6488c}.button{border:0;border-radius:7px;cursor:pointer}.button.secondary{border:1px solid var(--border);background:#102637}.button.small{padding:7px 10px;font-size:10px}.button:hover{border-color:#9bd64880}.button:disabled{opacity:.55;cursor:wait}.scenario-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.scenario-button{text-align:left;border:1px solid var(--border);background:#0d1e2dcc;border-radius:10px;padding:13px;cursor:pointer}.scenario-button:hover{border-color:#f5b84973}.scenario-button.active{border-color:#ff646d99;background:#ff646d14}.scenario-button span{display:block;color:var(--warning);text-transform:uppercase;font:8px ui-monospace,monospace}.scenario-button.active span{color:var(--danger)}.scenario-button strong{display:block;margin-top:5px;font-size:11px}.alarm-list{display:grid}.alarm-row{display:grid;grid-template-columns:82px 1fr auto auto;align-items:center;gap:15px;padding:14px 0;border-top:1px solid var(--border)}.alarm-row:first-child{border-top:0}.alarm-row strong{text-transform:capitalize;font-size:12px}.alarm-row p{margin:3px 0 0;color:var(--muted);font:9px ui-monospace,monospace}.alarm-state{color:var(--muted);font-size:10px}.empty-state{padding:60px 20px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:12px}.empty-state.compact{padding:30px;border:0}@media(max-width:1000px){.gauge-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.scenario-strip{grid-template-columns:repeat(2,1fr)}.cylinder-panel{grid-template-columns:1fr}.engine-body{grid-column:1;grid-row:auto}.panel-note{margin-top:10px}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:18px}.brand{padding-bottom:15px}.sidebar nav{grid-template-columns:repeat(2,1fr)}.sidebar-meta,.sidebar-foot{display:none}.main-content{padding:24px 16px 50px}.page-header{align-items:flex-start;flex-direction:column}.header-state{justify-items:start}.alarm-row{grid-template-columns:75px 1fr}.alarm-state,.alarm-row .button{justify-self:start}.config-notice{align-items:flex-start;flex-direction:column}.trend-chart{height:210px}}@media(max-width:460px){.gauge-grid,.scenario-strip{grid-template-columns:1fr}.sidebar nav{grid-template-columns:1fr 1fr}.sidebar nav button{padding:9px;font-size:11px}.engine-body{grid-template-columns:repeat(2,1fr)}.piston:nth-child(n+5){grid-row:auto}}.hmi-shell{display:block;min-height:100vh;padding:0 0 82px;background:radial-gradient(circle at 75% -20%,#142c3c 0,#07131f 38%)}.hmi-topbar{min-height:68px;padding:0 22px;display:grid;grid-template-columns:250px minmax(210px,.75fr) minmax(260px,1.5fr) 190px;align-items:stretch;border-bottom:1px solid #243848;background:#081520;position:sticky;top:0;z-index:30;box-shadow:0 7px 24px #00000038}.hmi-brand{display:flex;align-items:center;gap:12px;padding-right:24px;border-right:1px solid var(--border)}.hmi-brand .brand-mark{width:38px;height:38px}.hmi-brand strong{display:block;font-size:15px;letter-spacing:.1em}.hmi-brand strong span{color:var(--lime)}.hmi-brand small{color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.15em}.hmi-machine-select,.hmi-context,.hmi-session{padding:0 18px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--border)}.hmi-machine-select span,.hmi-context span{color:#62788b;font:8px ui-monospace,monospace;letter-spacing:.12em}.hmi-machine-select strong,.hmi-context strong{margin-top:4px;font-size:11px;letter-spacing:.03em}.hmi-machine-select strong:after{content:"⌄";margin-left:18px;color:var(--cyan)}.hmi-session{border-right:0;flex-direction:row;align-items:center;gap:10px}.hmi-session strong,.hmi-session small{display:block}.hmi-session strong{font:700 10px ui-monospace,monospace}.hmi-session small{margin-top:3px;color:var(--muted);font:8px ui-monospace,monospace}.hmi-ribbon{min-height:32px;padding:0 24px;display:flex;align-items:center;gap:10px;background:#153347;border-bottom:1px solid rgba(102,215,255,.25);color:#a9c6da}.hmi-ribbon>span{width:16px;height:16px;border:1px solid currentColor;display:grid;place-items:center;font:700 9px ui-monospace,monospace}.hmi-ribbon strong{color:var(--cyan);font:700 9px ui-monospace,monospace;letter-spacing:.08em}.hmi-ribbon p{margin:0;font-size:10px}.hmi-ribbon.ribbon-warning{background:#5a3d10;border-color:var(--warning);color:#ffd58a}.hmi-ribbon.ribbon-warning strong{color:#ffd58a}.hmi-ribbon.ribbon-danger{background:#8e2830;border-color:var(--danger);color:#fff}.hmi-ribbon.ribbon-danger strong{color:#fff}.hmi-main{padding:25px 32px 34px}.hmi-main .page-stack{width:min(1420px,100%)}.bottom-dock{height:82px;position:fixed;inset:auto 0 0;z-index:40;display:grid;grid-template-columns:1fr 150px;padding:0 18px;border-top:1px solid #2c4355;background:#06111bfa;box-shadow:0 -12px 30px #00000052}.bottom-dock nav{display:grid;grid-template-columns:repeat(4,minmax(110px,170px));justify-content:center}.bottom-dock nav button{position:relative;border:0;border-left:1px solid var(--border);background:transparent;color:#71879a;cursor:pointer;display:grid;place-items:center;align-content:center;gap:4px}.bottom-dock nav button:last-child{border-right:1px solid var(--border)}.bottom-dock nav button:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:transparent}.bottom-dock nav button:hover{color:#c6d6e3;background:#ffffff06}.bottom-dock nav button.active{color:#fff;background:linear-gradient(180deg,rgba(102,215,255,.1),transparent 75%)}.bottom-dock nav button.active:before{background:var(--cyan);box-shadow:0 0 14px #66d7ffa6}.dock-icon{height:25px;color:currentColor;font-size:24px;line-height:1}.bottom-dock nav strong{text-transform:uppercase;font:700 9px ui-monospace,monospace;letter-spacing:.07em}.dock-system{display:flex;flex-direction:column;justify-content:center;padding-left:22px}.dock-system span{color:#5e7385;font:8px ui-monospace,monospace;letter-spacing:.1em}.dock-system strong{margin-top:5px;color:var(--normal);font:700 10px ui-monospace,monospace}.channel-config-page{gap:14px}.channel-page-header{margin:0;align-items:center}.channel-page-header h1{font-size:clamp(25px,2.4vw,34px)}.gateway-switcher{min-width:300px;padding:10px 12px;border:1px solid var(--border);background:#091923}.gateway-switcher label{display:block;color:#61788b;font:8px ui-monospace,monospace;letter-spacing:.1em}.gateway-switcher select{width:100%;margin-top:5px;border:0;background:transparent;color:#fff;outline:none;font:700 11px ui-monospace,monospace}.channel-selector-panel{display:grid;grid-template-columns:175px minmax(0,1fr);min-height:96px;border:1px solid var(--border);background:#091923;overflow:hidden}.channel-selector-title{padding:18px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--border)}.channel-selector-title span{color:#b4c4d0;font-size:11px}.channel-selector-title strong{margin-top:5px;color:var(--cyan);font:700 8px ui-monospace,monospace;letter-spacing:.1em}.channel-selector{display:grid;grid-template-columns:repeat(10,minmax(68px,1fr));overflow-x:auto}.channel-selector button{position:relative;min-width:68px;padding:12px 8px 10px;border:0;border-right:1px solid var(--border);background:transparent;color:#768b9c;cursor:pointer;display:grid;justify-items:center;align-content:center}.channel-selector button:hover{color:#d9e5ee;background:#ffffff06}.channel-selector button.active{color:#fff;background:#66d7ff17;box-shadow:inset 0 -3px var(--cyan)}.channel-selector button small{font:8px ui-monospace,monospace}.channel-selector button strong{margin-top:2px;font:700 20px ui-monospace,monospace}.channel-selector button em{margin-top:5px;font: 7px ui-monospace,monospace;text-transform:uppercase;white-space:nowrap}.channel-state{position:absolute;top:9px;right:9px;width:6px;height:6px;border-radius:50%;background:var(--offline)}.channel-state.normal{background:var(--normal);box-shadow:0 0 7px #39d98a99}.channel-state.warning{background:var(--warning)}.channel-state.danger{background:var(--danger)}.channel-state.offline{background:var(--offline)}.calibration-workspace{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(320px,.85fr) minmax(390px,1.2fr);gap:12px}.calibration-workspace>.panel{border-radius:2px;box-shadow:none;padding:18px}.channel-live-panel{background:linear-gradient(145deg,#0d2534,#091a26)}.channel-ident{padding:10px 12px;display:flex;justify-content:space-between;gap:15px;border:1px solid var(--border);background:#0000001f}.channel-ident strong{color:var(--cyan);font:700 10px ui-monospace,monospace}.channel-ident span{color:var(--muted);font:9px ui-monospace,monospace}.live-value-grid{display:grid;grid-template-columns:1fr 30px 1fr;align-items:center;margin:24px 0 20px}.live-value-grid>div:not(.conversion-arrow){display:grid;gap:4px}.live-value-grid span{color:#698095;font:8px ui-monospace,monospace;letter-spacing:.1em}.live-value-grid strong{font:700 clamp(25px,3vw,38px) ui-monospace,monospace;letter-spacing:-.05em}.live-value-grid small{color:var(--muted);font:9px ui-monospace,monospace}.conversion-arrow{color:var(--cyan);font-size:18px;text-align:center}.signal-track{height:52px;padding:0 8px;display:flex;align-items:center;justify-content:space-around;border:1px solid var(--border);background:repeating-linear-gradient(90deg,transparent 0 24px,rgba(102,215,255,.05) 25px),#071722;overflow:hidden}.signal-track i{display:block;width:2px;height:12px;background:var(--cyan);box-shadow:12px -8px 0 var(--cyan),24px 8px 0 var(--cyan);transform:rotate(24deg);opacity:.7}.live-caption{margin:9px 0 0;color:#698095;text-align:center;font:8px ui-monospace,monospace}.field-grid{display:grid;gap:14px}.field-grid label>span,.reference-control label>span{display:block;margin-bottom:6px;color:#6d8294;font:8px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.09em}.field-grid input,.field-grid select,.reference-control input{width:100%;height:40px;border:1px solid #294252;border-radius:2px;padding:0 11px;background:#071722;color:#e5eef5;outline:none}.field-grid input:focus,.field-grid select:focus,.reference-control input:focus{border-color:var(--cyan);box-shadow:0 0 0 1px #66d7ff1f}.field-with-unit{display:grid;grid-template-columns:1fr 46px}.field-with-unit small{display:grid;place-items:center;border:1px solid #294252;border-left:0;color:#70869a;background:#0c2231;font:9px ui-monospace,monospace}.calibration-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px}.numeric-control>span{display:block;margin-bottom:6px;color:#6d8294;font:8px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.09em}.numeric-control>div{height:48px;display:grid;grid-template-columns:43px 1fr 43px;border:1px solid #294252;background:#071722}.numeric-control button{border:0;background:#102c3d;color:var(--cyan);cursor:pointer;font-size:20px}.numeric-control button:hover{background:#17384b}.numeric-control input{width:100%;min-width:0;border:0;border-left:1px solid #294252;border-right:1px solid #294252;background:transparent;color:#fff;text-align:center;outline:none;font:700 14px ui-monospace,monospace}.calibration-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;margin-top:16px}.control-button{min-height:69px;padding:12px;border:1px solid #365263;background:#102a3a;text-align:left;cursor:pointer}.control-button span{display:block;color:var(--cyan);font:700 8px ui-monospace,monospace;letter-spacing:.1em}.control-button strong{display:block;margin-top:7px;font-size:10px}.control-button:disabled{opacity:.4;cursor:not-allowed}.reference-control{display:grid;grid-template-columns:1fr 66px;align-items:end}.reference-control button{height:40px;border:1px solid #3c5c6f;border-left:0;background:#17394c;color:var(--cyan);cursor:pointer;font:700 9px ui-monospace,monospace;text-transform:uppercase}.calibration-warning{display:flex;gap:10px;margin-top:18px;padding:10px;border-left:2px solid var(--warning);background:#f5b84912}.calibration-warning>span{color:var(--warning);font:700 13px ui-monospace,monospace}.calibration-warning p{margin:0;color:#8fa2b2;font-size:9px;line-height:1.55}.calibration-warning strong{color:#d7e0e7}.config-command-bar{grid-column:1 / -1;min-height:72px;padding:10px 12px 10px 17px;display:grid;grid-template-columns:1fr 110px 175px;align-items:center;gap:9px;border:1px solid var(--border);background:#091923}.config-command-bar>div{display:flex;align-items:center;gap:11px}.config-command-bar p{margin:0}.config-command-bar p strong,.config-command-bar p small{display:block}.config-command-bar p strong{font-size:11px}.config-command-bar p small{margin-top:3px;color:var(--muted);font:8px ui-monospace,monospace}.dirty-light,.saved-light{width:9px;height:9px;border-radius:50%;background:var(--warning);box-shadow:0 0 10px #f5b8498c}.saved-light{background:var(--normal);box-shadow:0 0 10px #39d98a8c}.command-secondary,.command-primary{height:43px;border:1px solid #355064;background:#102738;cursor:pointer;text-transform:uppercase;font:700 9px ui-monospace,monospace;letter-spacing:.04em}.command-primary{border-color:#3890b0;background:#13789d;color:#fff}.command-primary:hover{background:#198bae}.command-secondary:hover{border-color:#5d7a8d}.command-primary:disabled,.command-secondary:disabled{opacity:.35;cursor:not-allowed}@media(max-width:1100px){.hmi-topbar{grid-template-columns:220px 1fr 180px}.hmi-context{display:none}.calibration-workspace{grid-template-columns:1fr 1fr}.calibration-panel{grid-column:1 / -1}.channel-selector-panel{grid-template-columns:145px minmax(0,1fr)}}@media(max-width:760px){.hmi-shell{padding-bottom:70px}.hmi-topbar{min-height:58px;padding:0 12px;grid-template-columns:1fr auto}.hmi-brand{border:0}.hmi-machine-select{display:none}.hmi-session{padding:0 4px 0 12px}.hmi-ribbon{padding:7px 12px;min-height:34px}.hmi-ribbon p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hmi-main{padding:18px 12px 24px}.channel-page-header{align-items:stretch}.gateway-switcher{min-width:0;width:100%}.channel-selector-panel{grid-template-columns:1fr}.channel-selector-title{padding:10px 14px;border-right:0;border-bottom:1px solid var(--border);flex-direction:row;justify-content:space-between}.calibration-workspace{grid-template-columns:1fr}.calibration-panel{grid-column:auto}.config-command-bar{grid-column:auto;grid-template-columns:1fr 1fr}.config-command-bar>div{grid-column:1 / -1}.bottom-dock{height:70px;padding:0;grid-template-columns:1fr}.bottom-dock nav{grid-template-columns:repeat(4,1fr)}.dock-system{display:none}.bottom-dock nav button{min-width:0}.dock-icon{font-size:20px;height:22px}.bottom-dock nav strong{font-size:7px}}@media(max-width:480px){.hmi-session small{display:none}.hmi-brand .brand-mark{width:33px;height:33px}.hmi-brand strong{font-size:13px}.live-value-grid{grid-template-columns:1fr 20px 1fr}.calibration-controls,.calibration-actions{grid-template-columns:1fr}.config-command-bar{grid-template-columns:90px 1fr}.command-primary{min-width:0}}.hmi-machine-select select{width:100%;margin-top:3px;border:0;background:transparent;color:#fff;outline:none;cursor:pointer;font:700 10px ui-monospace,monospace;letter-spacing:.03em}.hmi-machine-select select:focus{color:var(--cyan)}.compressor-dashboard{gap:14px}.compressor-header{margin-bottom:0;align-items:center}.compressor-header h1{font-size:clamp(27px,3vw,38px)}.header-state>strong{color:var(--muted);font:9px ui-monospace,monospace}.live-cycle{display:inline-flex;align-items:center;gap:7px;color:var(--normal);font:700 9px ui-monospace,monospace;letter-spacing:.09em}.live-cycle i{width:7px;height:7px;border-radius:50%;background:var(--normal);box-shadow:0 0 10px #39d98ab3;animation:live-pulse 1.5s ease-in-out infinite}@keyframes live-pulse{50%{opacity:.35;transform:scale(.8)}}.compressor-metrics{grid-template-columns:repeat(4,1fr)}.compressor-metric{border-radius:2px}.compressor-metric:after{background:var(--metric-accent)}.compressor-metric>small{display:block;margin-top:9px;color:#688095;font:8px ui-monospace,monospace}.metric-live{color:var(--normal);font:700 8px ui-monospace,monospace;letter-spacing:.1em}.cycle-console{padding:0;border-radius:2px;overflow:hidden}.cycle-console-bar{min-height:72px;padding:14px 17px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--border);background:#0a1a26}.cycle-console-bar h2{margin:4px 0 0;font-size:16px}.cycle-controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.cylinder-tabs,.end-toggle{display:flex;border:1px solid #294454}.cylinder-tabs button,.end-toggle button{min-width:57px;height:34px;padding:0 10px;border:0;border-right:1px solid #294454;background:#081823;color:#71889a;cursor:pointer;font:700 8px ui-monospace,monospace}.cylinder-tabs button:last-child,.end-toggle button:last-child{border-right:0}.cylinder-tabs button:hover,.end-toggle button:hover{color:#fff;background:#102b3b}.cylinder-tabs button.active,.end-toggle button.active{color:#06131d;background:var(--cyan)}.reference-source-note{min-height:35px;padding:7px 17px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(232,163,61,.23);background:#e8a33d0e}.reference-source-note span{flex:none;color:#e8a33d;font:700 8px ui-monospace,monospace;letter-spacing:.08em}.reference-source-note p{margin:0;color:#8ca0b0;font-size:9px}.compressor-plot-grid{display:grid;grid-template-columns:1fr 1fr}.plot-card{min-width:0;padding:14px 16px 10px;border-right:1px solid var(--border);background:linear-gradient(150deg,#0c2230,#081923)}.plot-card:last-child{border-right:0}.plot-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.plot-title strong{color:#b9c8d3;font:700 9px ui-monospace,monospace;letter-spacing:.08em}.plot-title span{color:#617789;font:8px ui-monospace,monospace}.compressor-plot{min-width:0;overflow:hidden}.compressor-plot svg{display:block;width:100%;overflow:visible}.compressor-grid{stroke:#a4c4d921;stroke-width:1;vector-effect:non-scaling-stroke}.compressor-grid.vertical{stroke:#a4c4d913}.compressor-axis-label,.compressor-angle-label{fill:#607789;font:8px ui-monospace,monospace}.compressor-angle-label{fill:#9f635f}.tdc-line{stroke:#6d7881;stroke-width:1;stroke-dasharray:5 5;vector-effect:non-scaling-stroke}.zero-line{stroke:#dae4ec57;stroke-width:1;vector-effect:non-scaling-stroke}.pressure-line{fill:none;stroke-width:1.65;vector-effect:non-scaling-stroke}.pressure-head{stroke:#5877ff}.pressure-crank{stroke:#ff5b4d}.ultrasonic-line{fill:none;stroke-width:1;opacity:.84;vector-effect:non-scaling-stroke}.plot-legend{min-height:20px;display:flex;flex-wrap:wrap;align-items:center;gap:11px;margin-bottom:4px;color:#8195a6;font-size:8px}.plot-legend span{white-space:nowrap}.plot-legend i{display:inline-block;width:12px;height:2px;margin-right:4px;vertical-align:middle}.plot-legend small{margin-left:auto;color:#607789;font:8px ui-monospace,monospace}.valve-legend{gap:7px}.valve-monitor{border-radius:2px}.valve-reading-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border)}.valve-reading-grid article{position:relative;min-width:0;padding:12px;display:grid;grid-template-columns:minmax(70px,1fr) auto auto;gap:12px;align-items:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:#05121c52}.valve-reading-grid article:nth-child(4n){border-right:0}.valve-reading-grid article>i{position:absolute;inset:0 auto 0 0;width:2px}.valve-reading-grid article>div strong,.valve-reading-grid article>div span{display:block}.valve-reading-grid article>div strong{font:700 12px ui-monospace,monospace}.valve-reading-grid article>div span{margin-top:3px;color:#6c8295;font-size:8px}.valve-reading-grid article p{margin:0}.valve-reading-grid article p span,.valve-reading-grid article p strong{display:block}.valve-reading-grid article p span{color:#61778a;font:7px ui-monospace,monospace}.valve-reading-grid article p strong{margin-top:4px;white-space:nowrap;font:700 10px ui-monospace,monospace}.valve-reading-grid .status-badge{display:none}.diagnostic-boundary{margin:12px 0 0;color:#657b8e;font:8px ui-monospace,monospace}@media(max-width:1100px){.compressor-plot-grid{grid-template-columns:1fr}.plot-card{border-right:0;border-bottom:1px solid var(--border)}.plot-card:last-child{border-bottom:0}.valve-reading-grid{grid-template-columns:repeat(2,1fr)}.valve-reading-grid article:nth-child(2n){border-right:0}.valve-reading-grid article:nth-child(4n){border-right:0}}@media(max-width:760px){.compressor-metrics{grid-template-columns:repeat(2,1fr)}.cycle-console-bar{align-items:flex-start;flex-direction:column}.cycle-controls{justify-content:flex-start}.cylinder-tabs{max-width:100%;overflow-x:auto}.reference-source-note{align-items:flex-start;flex-direction:column;gap:3px}.plot-card{padding:12px 8px 8px}.plot-legend small{width:100%;margin:0}}@media(max-width:480px){.compressor-metrics,.valve-reading-grid{grid-template-columns:1fr}.valve-reading-grid article{border-right:0}.end-toggle{width:100%}.end-toggle button{flex:1}}
