/* AERODRY FB-6 — original industrial telemetry dashboard. Local, no remote assets. */
:root{color-scheme:dark;--bg:#07171f;--panel:#0c222b;--panel2:#102c35;--edge:#20424c;--edge-soft:#173541;--ink:#ecf9f6;--muted:#7b9aa2;--faint:#5a7c85;--teal:#50e2d7;--cyan:#74ecf0;--amber:#ffb46f;--red:#ff6f5f;--green:#80e9bd;--r:12px;--mono:ui-monospace,Consolas,'SFMono-Regular',monospace;font-family:Inter,'Segoe UI',Arial,sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--ink);background:radial-gradient(ellipse at top left,#11313a 0%,#081b23 42%,#07171f 100%);font-size:13px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--teal);outline-offset:3px}button:disabled{opacity:.6;cursor:default}.app-shell{width:min(1920px,100%);margin:0 auto;padding:0 24px}.topbar{height:100px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--edge);gap:20px}.identity{display:flex;align-items:center;gap:16px}.mark{width:50px;height:50px;border:1px solid #3a727c;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:35px;font-weight:900;color:#d3fff2;position:relative;background:linear-gradient(145deg,#1d4953,#0b2833);box-shadow:inset 0 0 18px #1b626d66}.mark i{position:absolute;width:7px;height:7px;right:7px;top:7px;background:var(--amber);border-radius:50%}.eyebrow{font-family:var(--mono);color:var(--teal);font-size:10px;letter-spacing:1.35px;font-weight:700}.slash,.small-slash{color:#53747e;margin:0 6px}h1{font-weight:800;font-size:25px;letter-spacing:.8px;margin:2px 0 1px;line-height:1.1}.brand-muted{font-weight:400;color:#6f9299}.identity p{margin:4px 0 0;color:#9cb7bd;font-size:10px;font-weight:650;letter-spacing:2px}.header-actions{display:flex;align-items:center;gap:11px}.utc-pill{background:#0e2b33;border:1px solid #1d4149;border-radius:6px;padding:10px 14px;font:700 10px var(--mono);letter-spacing:1px;color:#a2c2c5;white-space:nowrap}.live-light{display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:100%;background:var(--teal);box-shadow:0 0 11px #50e2d777}.ghost-action{border:1px solid #2a4c56;border-radius:6px;color:#bddee0;background:#122c34;padding:11px 15px;white-space:nowrap;font-size:12px;font-weight:700;transition:background .15s,border-color .15s}.ghost-action:hover,.viewport-btn:hover,.icon-button:hover{background:#1a3d48;border-color:#56a0a4}.primary-action{border:1px solid #49e3d0;color:#041f26;background:#54e7d4;border-radius:6px;padding:12px 20px;min-width:171px;font-weight:800;letter-spacing:.4px;font-size:11px;box-shadow:0 6px 22px #13c9b21c;transition:filter .16s}.primary-action:hover{filter:brightness(1.08)}.primary-action.is-running{border-color:#e5b06e;background:#ffbd70}.primary-action span:first-child{margin-right:7px;font-size:13px}
.summary-strip{display:grid;grid-template-columns:1fr 1.4fr auto;align-items:center;gap:18px;height:53px;border-bottom:1px solid var(--edge-soft);font-family:var(--mono);font-size:10px;letter-spacing:.9px}.summary-label{font-weight:750;color:#789da4;white-space:nowrap}.tiny-square{display:inline-block;background:var(--teal);width:7px;height:7px;margin-right:9px}.divider-dash{color:#37606a}.status-cluster{display:flex;align-items:center;justify-content:center;gap:9px}.status-cluster strong{font-size:10px;color:var(--teal)}.summary-muted{color:#638c96;letter-spacing:.25px}.status-led{width:8px;height:8px;border-radius:50%;background:var(--teal);box-shadow:0 0 10px #60dacc66}.status-led.warn{background:var(--amber);box-shadow:0 0 10px #ffc16d66}.status-led.danger{background:var(--red);box-shadow:0 0 10px #ff6a6666}.runtime{display:flex;gap:15px;align-items:center;white-space:nowrap}.runtime span{color:#76969c}.runtime b{font-size:14px;color:#e8faf8;letter-spacing:1px}
.workspace{display:grid;grid-template-columns:minmax(264px,300px) minmax(440px,1fr) minmax(300px,350px);gap:14px;margin-top:16px;align-items:stretch}.panel{border:1px solid var(--edge);border-radius:var(--r);background:linear-gradient(160deg,#102933 0%,#0a2029 60%,#0a1d27 100%);min-width:0}.controls-panel,.telemetry-panel{padding:20px 20px 19px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:22px}.panel-heading h2,.trends-top h2{font-size:18px;letter-spacing:-.5px;margin:5px 0 0;font-weight:740}.icon-button{background:#183640;border:1px solid #2a4c55;color:#b1d4d6;border-radius:7px;width:32px;height:32px;font-size:22px;line-height:1}.field-block label,.subheading{font-size:10px;letter-spacing:.7px;font-weight:800}.field-block label{display:flex;justify-content:space-between;align-items:center;color:#b4d0d2}.field-block label small{color:#5d8991;font:600 9px var(--mono)}.select-wrap{position:relative}.select-wrap:after{position:absolute;right:12px;top:14px;content:'⌄';pointer-events:none;font-size:15px;color:#70b3b6}select{width:100%;appearance:none;background:#14323c;border:1px solid #295560;border-radius:6px;padding:13px 33px 13px 11px;margin-top:10px;font-size:12px;color:#e0faf7}option{background:#0e2933}.hint{margin:9px 0 20px;font-size:11px;color:#73969f}.subheading{border-top:1px solid var(--edge-soft);padding-top:17px;margin-bottom:18px;display:flex;justify-content:space-between;gap:8px;color:var(--teal);font-family:var(--mono)}.subheading span{color:#557b83;font-size:8px;letter-spacing:.3px;white-space:nowrap}.control-field{margin-bottom:17px}.control-field.compact{margin-bottom:11px}.control-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.control-top label{color:#c1d9d9;font-weight:550;font-size:12px}.micro-unit{color:#678c94;font-size:10px}.control-top output{font:700 13px var(--mono);color:var(--teal);background:#163740;border:1px solid #25555e;padding:4px 7px;border-radius:4px;min-width:45px;text-align:center}input[type=range]{width:100%;margin:0;display:block;cursor:pointer;accent-color:var(--teal);height:5px;background:transparent}.range-ends{display:flex;justify-content:space-between;font:10px var(--mono);color:#64828a;margin-top:9px}.input-note{font-size:10px;color:#688d94;margin:10px 0 0}.check-row{display:flex;align-items:center;gap:11px;cursor:pointer;font-size:12px;color:#c2d9d9}.check-row input{position:absolute;opacity:0;width:1px;height:1px}.toggle-ui{width:34px;height:19px;border-radius:20px;background:#2d4b56;position:relative;transition:background .15s;flex-shrink:0}.toggle-ui:after{content:'';width:13px;height:13px;border-radius:50%;position:absolute;top:3px;left:3px;background:#97aeb5;transition:transform .15s}.check-row input:checked+.toggle-ui{background:#1ca999}.check-row input:checked+.toggle-ui:after{transform:translateX(15px);background:#fff}.check-row input:focus-visible+.toggle-ui{outline:2px solid var(--teal);outline-offset:3px}.speed-title{margin-top:22px}.speed-row{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.speed-row button{background:#102b35;border:1px solid #2c4d54;color:#8eadb3;padding:10px 3px;border-radius:5px;font:700 12px var(--mono)}.speed-row button.active{background:#164c52;border-color:var(--teal);color:#a8fff1}.safety-note{display:flex;align-items:flex-start;gap:10px;background:#122b33;border:1px solid #25454b;border-radius:7px;margin-top:19px;padding:11px;color:#76969c}.safety-note span{font-size:17px;color:var(--amber)}.safety-note p{font-size:10px;line-height:1.6;margin:0}
.center-column{min-width:0;display:flex;flex-direction:column;gap:12px}.visual-viewport{position:relative;min-height:630px;flex:1;overflow:hidden;border:1px solid #2a4e57;border-radius:var(--r);background:#0b2430;isolation:isolate}.visual-viewport:before{position:absolute;content:'';inset:0;pointer-events:none;background:radial-gradient(ellipse at 52% 54%,transparent 38%,#0719236c 100%);z-index:2}.visual-viewport:after{position:absolute;content:'';inset:0;pointer-events:none;opacity:.23;background:linear-gradient(transparent 49%,#285c6533 50%,transparent 51%);background-size:100% 5px;z-index:2}#scene{width:100%;height:100%;display:block;position:absolute;inset:0;touch-action:none;cursor:grab}#scene:active{cursor:grabbing}.visual-top-left{pointer-events:none;position:absolute;z-index:4;left:23px;top:21px}.visual-tag{font:700 10px var(--mono);color:var(--teal);letter-spacing:1px}.scene-title{margin-top:9px;color:#e5faf7;font-size:16px;font-weight:780;letter-spacing:.5px}.scene-title span{color:#8ba9ad;font-weight:400}.visual-top-left p{font:9px var(--mono);color:#6f939f;letter-spacing:1px;margin:7px 0}.visual-top-right{display:flex;position:absolute;z-index:5;right:17px;top:20px;gap:5px}.viewport-btn{background:#102a34e0;border:1px solid #285462;color:#87b1ba;border-radius:4px;padding:9px 10px;font:700 9px var(--mono);letter-spacing:.3px}.viewport-btn.active{border-color:#287a7a;color:#96eade;background:#123c44e8}.machine-label{position:absolute;z-index:3;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:5px;color:#8ad1d3;font:700 9px var(--mono);letter-spacing:.9px;text-shadow:0 1px 8px #07171f}.machine-label i{display:block;width:1px;height:23px;background:linear-gradient(to top,#5bb6b6,transparent);order:2}.label-heater{top:48%;left:14%}.label-bed{top:27%;left:49%}.label-cyclone{top:43%;right:7%}.visual-bottom{position:absolute;left:0;right:0;bottom:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(0deg,#0a1e27f5,#0a1e27b6);padding:16px 21px;color:#7a9fa9;font:700 9px var(--mono);letter-spacing:.3px}.view-icon{color:var(--teal);font-size:15px;margin-right:5px}.light-dash{color:#376673;padding:0 5px}.scene-angle{white-space:nowrap}.scene-angle span{color:var(--teal)}.webgl-warning{position:absolute;z-index:8;left:18px;right:18px;top:35%;text-align:center;padding:20px;background:#4d2520ee;border:1px solid var(--red);border-radius:7px}.webgl-warning[hidden]{display:none}.process-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:linear-gradient(130deg,#13343d,#0e2a34);border:1px solid var(--edge);border-radius:var(--r);padding:17px 0}.process-metrics>div{padding:0 15px;border-right:1px solid #2c525a;min-width:0}.process-metrics>div:last-child{border:0}.micro-caption{display:block;color:#84a8af;font:700 9px var(--mono);letter-spacing:.3px;min-height:25px}.process-metrics strong{display:inline-block;margin-top:10px;font:700 24px var(--mono);letter-spacing:-.8px;color:#f0fffc}.process-metrics small{font-size:11px;color:#6e9aa2;padding-left:5px}.symbol{color:var(--teal)}.metric-health strong{font-size:15px;color:var(--teal);letter-spacing:0;white-space:nowrap}.health-track{height:3px;background:#23515b;border-radius:4px;margin-top:17px;overflow:hidden}.health-track>div{height:100%;width:60%;background:var(--teal);transition:width .2s}
.sensor-indicator{font:700 9px var(--mono);letter-spacing:.6px;color:var(--teal);border:1px solid #266061;padding:7px;border-radius:4px}.sensor-indicator span{display:inline-block;width:6px;height:6px;background:var(--teal);border-radius:50%;margin-right:5px;box-shadow:0 0 8px #65ecde}.main-metric{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(130deg,#193e46,#11323c);border:1px solid #2c555c;border-radius:8px;padding:19px;margin-bottom:13px}.main-metric span,.kpi>span{font:700 9px var(--mono);letter-spacing:.7px;color:#8bb2b8}.main-metric strong{display:block;font-size:35px;letter-spacing:-1.7px;margin-top:7px}.main-metric em,.kpi em,.energy-total em{font-size:13px;letter-spacing:0;font-style:normal;font-weight:500;color:#85aeb4;margin-left:6px}.temp-icon{display:flex;align-items:center;justify-content:center;font-size:30px;border-radius:50%;height:49px;width:49px;background:#2a4b46;color:var(--amber)}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.kpi{min-width:0;padding:14px 10px;background:#102b35;border:1px solid #244751;border-radius:7px}.kpi>span{letter-spacing:0;font-size:9px}.kpi strong{display:block;margin-top:11px;font:700 21px var(--mono);letter-spacing:-.7px}.kpi em{font-size:10px;margin-left:4px}.kpi small{display:block;color:#6c949c;margin-top:9px;font-size:10px}.progress-pane{margin-top:20px}.progress-head,.progress-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}.progress-head span{font:700 10px var(--mono);color:#96bcc0}.progress-head strong{font:700 13px var(--mono);color:var(--teal)}.progress-rail{height:9px;border-radius:20px;background:#25424a;margin:12px 0 10px;overflow:hidden}.progress-rail div{height:100%;width:0%;border-radius:20px;background:linear-gradient(90deg,#298f8c,#59ead7);transition:width .2s}.progress-foot{color:#6f939c;font:9px var(--mono)}.energy-heading,.events-heading{border-top:1px solid var(--edge-soft);margin-top:24px;padding-top:17px;display:flex;justify-content:space-between;gap:6px;color:var(--teal);font:700 10px var(--mono);letter-spacing:.4px}.energy-heading span,.events-heading span{font-size:8px;color:#527f88;white-space:nowrap}.energy-bars{margin-top:15px}.energy-line{display:grid;grid-template-columns:96px 1fr 55px;align-items:center;gap:8px;margin-bottom:14px}.energy-line>span{font-size:10px;color:#97b5ba;white-space:nowrap}.energy-line>div{height:5px;background:#26414b;overflow:hidden;border-radius:5px}.energy-line i{display:block;height:100%;width:0%;transition:width .2s}.bar-heat{background:var(--amber)}.bar-transfer{background:var(--cyan)}.bar-evap{background:var(--teal)}.energy-line>strong{text-align:right;font:700 11px var(--mono);color:#c9e1e1;white-space:nowrap}.energy-total{display:flex;align-items:center;justify-content:space-between;border-radius:6px;background:#15333d;padding:12px;margin-top:16px;gap:10px}.energy-total span{font:700 9px var(--mono);letter-spacing:.25px;color:#8cabb0}.energy-total strong{font:700 16px var(--mono);white-space:nowrap}.energy-total em{font-size:11px}.events{display:grid;gap:8px;margin-top:12px}.event-item{display:flex;gap:9px;align-items:flex-start;min-width:0}.event-dot{width:6px;height:6px;background:var(--teal);border-radius:50%;flex-shrink:0;margin-top:4px}.event-item.warn .event-dot{background:var(--amber)}.event-content{font-size:10px;color:#a1c0c1;line-height:1.4}.event-content strong{font:700 9px var(--mono);color:#c8e8e6}.event-content small{font:9px var(--mono);color:#557f87;margin-left:7px}
.trends-area{border:1px solid var(--edge);background:linear-gradient(130deg,#102a34,#0a222c);border-radius:var(--r);margin-top:14px;padding:20px}.trends-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px}.trend-actions{display:flex;align-items:center;gap:16px}.trend-actions>span{font:700 10px var(--mono);color:#688e96}.compact-btn{padding:9px 11px;font-size:10px}.trend-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.trend-chart{border:1px solid #254854;border-radius:9px;background:#09232b;padding:17px 15px 12px;min-width:0}.trend-chart-title{font:700 11px var(--mono);color:#d2e6e5;display:flex;justify-content:space-between;align-items:center}.chart-unit{color:#66929b;font-size:10px;font-weight:500}.chart-wrap{height:164px;margin-top:5px;position:relative}.chart-wrap canvas{display:block;width:100%;height:100%}.chart-footer{display:flex;justify-content:space-between;gap:12px;color:#7196a0;font:700 9px var(--mono);margin-top:6px}.legend-mark{display:inline-block;height:6px;width:13px;border-radius:5px;margin-right:6px}.legend-mark.teal{background:var(--teal)}.legend-mark.amber{background:var(--amber)}.axis-label{font-size:8px;color:#517a86}.footer{display:flex;justify-content:space-between;gap:12px;padding:23px 0 26px;color:#51727c;font:700 9px var(--mono);letter-spacing:.5px}.footer b{color:#be8d6a}
@media(max-width:1500px){.app-shell{padding:0 16px}.workspace{grid-template-columns:258px minmax(380px,1fr) 296px;gap:10px}.controls-panel,.telemetry-panel{padding:17px 15px}.visual-viewport{min-height:620px}.machine-label{display:none}.visual-top-right{top:19px}.process-metrics>div{padding:0 10px}.process-metrics strong{font-size:21px}.summary-strip{grid-template-columns:1fr 1.3fr auto}}
@media(max-width:1220px){.workspace{grid-template-columns:245px minmax(400px,1fr)}.telemetry-panel{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,1fr);align-items:start;gap:8px 20px}.telemetry-panel .panel-heading{grid-column:1/-1;margin-bottom:0}.telemetry-panel .main-metric{margin-bottom:0}.telemetry-panel .kpi-grid{grid-column:2;grid-row:2/4}.telemetry-panel .progress-pane{margin-top:0}.telemetry-panel .energy-heading{grid-column:1/-1;margin-top:7px}.telemetry-panel .energy-bars,.telemetry-panel .energy-total{grid-column:1}.telemetry-panel .events-heading{grid-column:2;grid-row:5;margin-top:8px}.telemetry-panel .events{grid-column:2}.visual-viewport{min-height:620px}.center-column{min-width:0}}
@media(max-width:840px){.topbar{height:auto;padding:15px 0;flex-wrap:wrap}.header-actions{width:100%;justify-content:space-between}.identity h1{font-size:21px}.utc-pill{font-size:9px}.summary-strip{grid-template-columns:1fr auto;height:auto;min-height:64px}.summary-label{display:none}.status-cluster{justify-content:flex-start;flex-wrap:wrap}.workspace{grid-template-columns:1fr;gap:12px}.controls-panel{display:grid;grid-template-columns:1fr 1fr;column-gap:22px}.controls-panel .panel-heading,.controls-panel .first-field,.controls-panel .safety-note{grid-column:1/-1}.controls-panel .subheading,.controls-panel .check-row,.controls-panel .speed-row{grid-column:1/-1}.controls-panel #controlFields{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.controls-panel .control-field{margin-bottom:17px}.visual-viewport{height:580px;min-height:0;flex:none}.telemetry-panel{grid-column:auto}.trends-area{margin-top:12px}.footer{flex-wrap:wrap}}
@media(max-width:580px){.app-shell{padding:0 10px}.mark{width:43px;height:43px;font-size:29px}.identity{gap:10px}.identity h1{font-size:19px}.identity p{font-size:8px;letter-spacing:1px}.utc-pill{display:none}.ghost-action{padding:10px}.primary-action{min-width:160px;padding:10px}.summary-strip{grid-template-columns:1fr;gap:6px;padding:10px 0}.runtime{justify-content:space-between}.controls-panel{grid-template-columns:1fr}.controls-panel #controlFields{grid-template-columns:1fr}.visual-viewport{height:440px}.visual-top-left{left:13px;top:14px}.visual-top-left p{display:none}.scene-title{font-size:13px}.visual-top-right{right:9px;top:72px}.viewport-btn{padding:7px 7px;font-size:8px}.visual-bottom{padding:10px 12px}.visual-bottom>div:first-child{font-size:7px}.scene-angle{display:none}.process-metrics{grid-template-columns:1fr 1fr;row-gap:18px}.process-metrics>div:nth-child(2){border-right:0}.process-metrics>div{padding:0 15px}.telemetry-panel{display:block}.telemetry-panel .main-metric{margin-bottom:11px}.telemetry-panel .kpi-grid{margin-bottom:20px}.telemetry-panel .energy-heading{margin-top:20px}.telemetry-panel .energy-total{margin-bottom:16px}.trend-grid{grid-template-columns:1fr}.trends-top{align-items:flex-start;gap:15px}.trend-actions{flex-wrap:wrap;justify-content:flex-end}.trends-area{padding:13px}.footer{font-size:8px}.chart-wrap{height:146px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

/* Nonintrusive fallback indicator */
.webgl-warning{left:auto;right:15px;top:auto;bottom:54px;width:min(270px,calc(100% - 30px));padding:8px 10px;border-radius:4px;border:1px solid #5b6d59;background:#1c3634c9;text-align:left;color:#d6d6b6;font:9px/1.45 var(--mono);box-shadow:none}
@media(max-width:580px){.webgl-warning{left:10px;right:10px;bottom:39px;width:auto;font-size:8px}}
