:root{--bg: #0c0f12;--bg-panel: #14181d;--bg-panel-2: #181d23;--bg-input: #0a0d10;--border: #2a323b;--border-bright: #3a4651;--fg: #c8d2dc;--fg-dim: #7d8a97;--accent: #4fd0e3;--accent-2: #e3b94f;--green: #5ad17a;--green-bg: #143018;--red: #e0594f;--red-bg: #301414;--amber: #e3b94f;--changed: #3a3320;--changed-border: #e3b94f;--mono: "SFMono-Regular", "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace}:root[data-theme=light]{--bg: #eef1f5;--bg-panel: #ffffff;--bg-panel-2: #e6eaef;--bg-input: #ffffff;--border: #c2ccd6;--border-bright: #93a1ad;--fg: #111922;--fg-dim: #51606d;--accent: #086582;--accent-2: #8a5e05;--green: #157f3b;--green-bg: #d8f0de;--red: #b22a24;--red-bg: #fbe1df;--amber: #8a5e05;--changed: #fdf0cf;--changed-border: #8a5e05}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:13px;line-height:1.4}#app{height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;flex-wrap:wrap;row-gap:6px;gap:14px;padding:6px 12px;background:var(--bg-panel-2);border-bottom:1px solid var(--border)}.topbar .brand{display:inline-flex;align-items:center;gap:9px}.topbar .brand-logo{display:block;flex:none}.topbar .title{color:var(--accent);font-weight:700;letter-spacing:.5px}.topbar .sub{color:var(--fg-dim);font-size:11px}.topbar .spacer{flex:1}.topbar .scan-badge{color:var(--accent-2)}.layout{flex:1;display:grid;grid-template-columns:minmax(360px,1fr) minmax(420px,1fr);min-height:0}.left,.right{display:flex;flex-direction:column;min-height:0;min-width:0}.left{border-right:1px solid var(--border)}.trend-page{flex:1;display:flex;flex-direction:column;min-height:0;padding:12px 16px;gap:10px;overflow:hidden}.layout[hidden],.trend-page[hidden]{display:none}#trendBuilderBtn.active{background:var(--accent);color:var(--bg)}.tb-head{display:flex;align-items:center;gap:12px}.tb-title{font-size:18px;font-weight:700;letter-spacing:.5px}.tb-sub{color:var(--fg-dim);font-size:12px}.tb-back{font-size:12px;font-weight:600;padding:6px 14px;border-radius:6px;cursor:pointer;background:var(--accent);color:var(--bg);border:1px solid var(--accent)}.tb-back:hover{filter:brightness(1.1)}.tb-close{font-size:14px;line-height:1;width:30px;height:28px;border-radius:6px;cursor:pointer;background:var(--bg-input);color:var(--fg-dim);border:1px solid var(--border)}.tb-close:hover{color:var(--fg);border-color:var(--fg-dim)}.tb-sources{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tb-import{font-size:12px;padding:6px 12px;border-radius:6px;background:var(--bg-panel-2);border:1px dashed var(--border-bright);color:var(--accent);cursor:pointer}.tb-import:hover{background:var(--bg-input)}.tb-srcinfo{color:var(--fg-dim);font-size:11px}.tb-toolbar{display:flex;align-items:center;gap:8px}.tb-toolbar button{font-size:11px;padding:3px 10px;border-radius:5px;background:var(--bg-input);color:var(--fg);border:1px solid var(--border);cursor:pointer}.tb-toolbar button:hover{border-color:var(--fg-dim)}.tb-filter{font-size:12px;padding:3px 8px;width:260px;text-transform:none}.tb-opt{font-size:11px;color:var(--fg-dim);display:inline-flex;align-items:center;gap:5px}.tb-bufsel{font-size:11px;padding:2px 4px}.tb-opt input[disabled]{opacity:.6}.tb-count{color:var(--fg-dim);font-size:11px;font-variant-numeric:tabular-nums}.tb-tablewrap{flex:1;overflow:auto;min-height:0;border:1px solid var(--border);border-radius:8px;position:relative}.tb-table{width:100%;border-collapse:collapse;font-size:12px}.tb-table thead th{position:sticky;top:0;background:var(--bg-panel-2);text-align:left;padding:7px 10px;border-bottom:1px solid var(--border-bright);color:var(--fg-dim);font-weight:600;z-index:1}.tb-table td{padding:5px 10px;border-bottom:1px solid var(--border)}.tb-table tr.tb-on{background:color-mix(in srgb,var(--accent) 8%,transparent)}.tb-table tr:hover td{background:color-mix(in srgb,var(--accent) 5%,transparent)}.tb-c-inc{width:34px;text-align:center}.tb-c-mode{width:110px}.tb-c-src{width:130px}.tb-badge{font-size:9px;letter-spacing:.5px;padding:1px 6px;border-radius:999px;border:1px solid var(--border-bright);white-space:nowrap}.tb-b-p2{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}.tb-b-abt{color:var(--amber, #e0a800);border-color:color-mix(in srgb,var(--amber, #e0a800) 45%,transparent);cursor:help}.tb-table tr.tb-pending .tb-pt{color:var(--fg-dim)}.tb-pt{font-weight:600;font-variant-numeric:tabular-nums}.tb-bn{color:var(--accent)}.tb-ty{color:var(--fg-dim)}.tb-desc{color:var(--fg-dim);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-mode{font-size:11px;width:100%}.tb-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--fg-dim);font-size:13px;pointer-events:none}.tb-empty[hidden]{display:none}.tb-footer{display:flex;align-items:center;gap:10px}.tb-out{color:var(--fg-dim);font-size:12px}.tb-footer button{font-size:12px;padding:6px 12px;border-radius:6px;background:var(--bg-input);color:var(--fg);border:1px solid var(--border);cursor:pointer}.tb-build{background:var(--accent)!important;color:var(--bg)!important;border-color:var(--accent)!important;font-weight:600}.tb-build:disabled{opacity:.5;cursor:default}.tabs{display:flex;flex-direction:column;min-height:0;min-width:0;height:100%}.tab-bar{display:flex;align-items:stretch;background:var(--bg-panel-2);border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.tab-bar::-webkit-scrollbar{height:0}.tab{border:none;border-right:1px solid var(--border);border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--fg-dim);padding:6px 14px;text-transform:uppercase;font-size:10px;letter-spacing:1px;display:flex;align-items:center;gap:6px}.tab:hover{background:var(--bg-panel);color:var(--fg)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);background:var(--bg-panel)}.tab .tab-meta{color:var(--fg-dim);font-size:9px}.tab.active .tab-meta{color:var(--accent-2)}.tab-panels{flex:1;min-height:0;min-width:0;display:flex}.tab-panel{flex:1;min-height:0;min-width:0;flex-direction:column}.tab-panel:not(.active){display:none}.tab-panel.active{display:flex}.right{display:grid;grid-template-rows:1fr auto 1fr;min-height:0}.panel{display:flex;flex-direction:column;min-height:0;min-width:0}.panel-head{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--bg-panel-2);border-bottom:1px solid var(--border);color:var(--fg-dim);text-transform:uppercase;font-size:10px;letter-spacing:1px}.panel-head .spacer{flex:1}.panel-body{flex:1;overflow:auto;min-height:0}button{font-family:var(--mono);font-size:12px;background:var(--bg-panel);color:var(--fg);border:1px solid var(--border-bright);border-radius:3px;padding:4px 9px;cursor:pointer}button:hover{background:var(--bg-panel-2);border-color:var(--accent)}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{border-color:var(--accent);color:var(--accent)}button.danger{border-color:var(--red);color:var(--red)}input,textarea,select{font-family:var(--mono);font-size:12px;background:var(--bg-input);color:var(--fg);border:1px solid var(--border);border-radius:3px;padding:3px 5px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}label{color:var(--fg-dim);font-size:11px}.editor-wrap{flex:1;display:flex;min-height:0;position:relative}.editor-gutter{margin:0;padding:8px 6px;text-align:right;color:var(--fg-dim);background:var(--bg-panel);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;overflow:hidden;white-space:pre;min-width:52px;font-family:var(--mono);font-size:12px;line-height:1.5}.editor-area{flex:1;border:none;border-radius:0;resize:none;padding:8px 10px;white-space:pre;overflow:auto;background:var(--bg-input);-moz-tab-size:4;tab-size:4;font-family:var(--mono);font-size:12px;line-height:1.5}.editor-toolbar,.seed-toolbar{display:flex;gap:8px;padding:6px 10px;border-top:1px solid var(--border);align-items:center}.seed-area{width:100%;height:140px;resize:vertical;white-space:pre}.seed-block{padding:8px 10px;border-top:1px solid var(--border);background:var(--bg-panel)}.seed-block summary{cursor:pointer;color:var(--fg-dim);text-transform:uppercase;font-size:10px;letter-spacing:1px}table.watch{width:100%;border-collapse:collapse}table.watch th,table.watch td{text-align:left;padding:3px 8px;border-bottom:1px solid var(--border);white-space:nowrap}table.watch th{position:sticky;top:0;background:var(--bg-panel-2);color:var(--fg-dim);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:1px;z-index:1}table.watch td.val{text-align:right;font-variant-numeric:tabular-nums}table.watch td.val .val-units{color:var(--fg-dim);font-size:9px}table.watch td.type{color:var(--fg-dim)}table.watch td.name.has-desc{cursor:help;text-decoration:underline dotted var(--border-bright);text-underline-offset:2px}table.watch tr.changed td{background:var(--changed)}table.watch tr.changed td.name{box-shadow:inset 3px 0 0 var(--changed-border)}.digital-on{color:var(--green);font-weight:700}.digital-off{color:var(--fg-dim)}.proof-chip{margin-left:6px;padding:0 5px;border:1px solid var(--border);border-radius:3px;font-size:.85em;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.proof-chip:hover{border-color:var(--border-bright)}.proof-chip.proof-on{color:var(--green);border-color:var(--green)}.proof-chip.proof-off{color:var(--fg-dim)}.proof-chip.proof-alarm{color:var(--red);border-color:var(--red);font-weight:700;background:var(--red-bg)}.proof-chip.proof-held{background:var(--amber-bg, rgba(255, 200, 0, .12))}.status-failed{color:var(--red)}.status-manual{color:var(--amber)}.val-input{width:64px;text-align:right}td.editable{cursor:text}td.editable:hover{outline:1px solid var(--border-bright)}.controls{padding:8px 10px;overflow:auto}.controls .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.clock-readout{font-size:16px;color:var(--accent);font-variant-numeric:tabular-nums}.sysvals{display:grid;grid-template-columns:repeat(3,1fr);gap:2px 12px;color:var(--fg-dim);font-size:11px;margin-top:4px}.sysvals b{color:var(--fg);font-weight:600}.field{display:flex;flex-direction:column;gap:2px}.field input{width:70px}.sep{height:1px;background:var(--border);margin:8px 0}.console{font-size:12px;padding:4px 0}.log-line{padding:1px 10px;white-space:pre-wrap;border-left:3px solid transparent}.log-line .ts{color:var(--fg-dim)}.log-info{color:var(--fg)}.log-warn{color:var(--amber);border-left-color:var(--amber)}.log-error{color:var(--red);border-left-color:var(--red);background:var(--red-bg)}.log-scan{color:var(--fg-dim)}.log-src{color:var(--accent)}.hint{color:var(--fg-dim);font-size:11px}.error-text{color:var(--red)}.pane-fill{display:flex;flex-direction:column;min-height:0;height:100%}.pane-actions{display:flex;align-items:center;gap:8px;padding:3px 8px;border-bottom:1px solid var(--border);background:var(--bg-panel-2)}.pane-actions .spacer{flex:1}.pane-scroll{flex:1;overflow:auto;min-height:0}button.mini{font-size:10px;padding:1px 7px}.trace{font-size:12px;padding:2px 0}.trace-row{display:flex;align-items:baseline;gap:8px;padding:1px 10px;white-space:nowrap}.trace-row.has-writes{background:#4fd0e30f}.trace-ln{color:var(--fg-dim);font-variant-numeric:tabular-nums}.trace-src{color:var(--fg);overflow:hidden;text-overflow:ellipsis}.trace-goto{color:var(--accent-2)}.trace-writes{color:var(--accent);margin-left:auto;padding-left:16px}.trace-error{color:var(--red);background:var(--red-bg);padding:2px 10px;white-space:pre-wrap}.pcfg-box{border:1px solid var(--border);border-radius:3px;margin:6px 8px;padding:5px 8px;background:var(--bg-panel)}.pcfg-name{display:flex;align-items:center;gap:6px;margin-bottom:4px}.pcfg-pt{color:var(--fg);font-weight:700}.pcfg-badge{font-size:9px;padding:1px 5px;border-radius:2px;letter-spacing:.5px;border:1px solid var(--border-bright);color:var(--fg-dim)}.badge-virt{color:var(--accent);border-color:var(--accent)}.badge-phys{color:var(--accent-2);border-color:var(--accent-2)}.badge-role{color:var(--fg-dim)}.pcfg-fields{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.pcfg-fields label{display:flex;flex-direction:column;gap:2px;font-size:10px}.pcfg-fields input[type=number],.pcfg-fields select{width:64px}.pcfg-auto-wrap{flex-direction:row!important;align-items:center;gap:4px!important}.pcfg-fields input:disabled{opacity:.35}td.cmd{text-align:center;padding:1px 6px}.cmd-btn{font-size:10px;padding:1px 7px;border-color:var(--border-bright)}.cmd-btn:hover{border-color:var(--accent);color:var(--accent)}tr.manual-row td{background:#e3b94f14}tr.manual-row td.name{box-shadow:inset 3px 0 0 var(--amber)}.status-manual{color:var(--amber);font-weight:700}td.reliq{text-align:right;color:var(--fg-dim);font-variant-numeric:tabular-nums}td.kind{font-size:10px}.kind-virt{color:var(--accent)}.kind-phys{color:var(--accent-2)}.gr-select{background:var(--bg-input);color:var(--fg);border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:11px;padding:2px 4px}.gr-wrap{flex:1;display:flex;min-height:0;gap:8px;padding:8px}.gr-stage{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;overflow:hidden}.gr-svg{width:100%;height:100%}.gr-empty{color:var(--fg-dim);text-align:center;font-size:13px;line-height:1.6;padding:20px}.gr-side{width:168px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel-2);overflow:hidden}.gr-side-head{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-dim);padding:6px 8px;border-bottom:1px solid var(--border)}.gr-points{flex:1;min-height:0;overflow-y:auto;padding:4px 0}.gr-prow{display:flex;justify-content:space-between;gap:6px;padding:2px 8px;font-size:11px}.gr-pn{color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gr-pv{color:var(--fg);font-variant-numeric:tabular-nums}.gr-pv.gr-off{color:var(--fg-dim)}.gr-pv.gr-cmdable{cursor:pointer;border-bottom:1px dotted transparent}.gr-pv.gr-cmdable:hover{color:var(--accent);border-bottom-color:var(--accent)}.gr-pv-input{width:56px;font:inherit;font-size:11px;padding:0 3px;background:var(--bg-input);color:var(--fg);border:1px solid var(--accent);border-radius:3px}.gr-rel{display:none;font-size:9px;line-height:1;padding:1px 4px;border:1px solid var(--border-bright);border-radius:3px;background:var(--bg-panel);color:var(--fg-dim);cursor:pointer}.gr-rel:hover{color:var(--fg);border-color:var(--accent)}.gr-prow.gr-manual{background:#ffc80014}.gr-prow.gr-manual .gr-pn{color:#d9a514}.gr-prow.gr-manual .gr-rel{display:inline-block}.gr-svg text{font-family:var(--mono);fill:var(--fg)}.gr-box-edge{fill:#454f56;stroke:#2b3237;stroke-width:3}.gr-box-liner{fill:#20272c;stroke:#141a1e;stroke-width:2}.gr-deck-seam{stroke:#141a1e;stroke-width:3;opacity:.9}.gr-title{font-family:ui-monospace,Consolas,monospace;font-size:11px;font-weight:600;fill:var(--text-secondary, #b9c5cb);letter-spacing:1.5px}.gr-cap{font-family:ui-monospace,Consolas,monospace;font-size:9px;fill:var(--steel-300, #b9c2c7);letter-spacing:.5px}.gr-sect{font-family:ui-monospace,Consolas,monospace;font-size:8px;fill:var(--text-muted, #6f7c84);letter-spacing:2px}.gr-sect-div{stroke:#2b343a;stroke-width:1;stroke-dasharray:3 5;opacity:.8}.gr-plenum-div{stroke:#141a1e;stroke-width:3;opacity:.9}.gr-stem{stroke:#46535b;stroke-width:1.5}.gr-stem-tip{fill:#8d9aa2}.gr-flow{font-family:ui-monospace,Consolas,monospace;font-size:10px;fill:#d6dde1;letter-spacing:.5px}.gr-duct-outer{stroke:#0f1519;stroke-width:12;stroke-linecap:round}.gr-duct{stroke:var(--border-bright);stroke-width:10;stroke-linecap:round}.gr-duct.air{stroke:#27333a}.gr-duct.water{stroke:#253242}.gr-lamp circle{fill:var(--status-stopped-bg, #2a3238);stroke:var(--status-stopped, #8a97a0);stroke-width:1.5}.gr-lamp.on circle{fill:var(--status-running, #3fe08a);stroke:var(--status-running, #3fe08a);filter:drop-shadow(0 0 5px var(--status-running, #3fe08a))}.gr-lamp.gr-missing circle{stroke-dasharray:2 2;opacity:.5}.gr-sensor rect{fill:#10161ae0;stroke:#48545b}.gr-sensor .gr-lbl{font-family:ui-monospace,Consolas,monospace;font-size:7px;fill:var(--text-muted, #7f8c93);letter-spacing:.8px}.gr-sensor .gr-val{font-family:ui-monospace,Consolas,monospace;font-size:11px;font-weight:600;fill:#eaf3f8}.gr-sensor.gr-missing rect{opacity:.4}.gr-mode rect{fill:#10161ae6;stroke:#48545b}.gr-mode text{font-family:ui-monospace,Consolas,monospace;font-size:9px;font-weight:600;fill:var(--text-muted, #7f8c93);letter-spacing:.5px}.gr-mode.active rect{fill:var(--status-running-bg, #12352a);stroke:var(--status-running, #3fe08a)}.gr-mode.active text{fill:var(--status-running, #3fe08a)}.gr-bar .gr-track{fill:#10161a;stroke:#2e363b}.gr-bar .gr-fill{fill:var(--blue-400, #3f83bd)}.gr-bar .gr-val{font-family:ui-monospace,Consolas,monospace;font-size:9px;font-weight:600;fill:#eaf3f8}.gr-bar.gr-missing .gr-track{opacity:.4}.exec-clock{font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:400}.clock-tab .clock-readout{margin-bottom:6px}.plant-card{display:flex;align-items:center;gap:11px;margin:6px 0 10px;padding:9px 11px;border:1px solid var(--border-bright);border-radius:7px;background:var(--bg-panel-2);cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}.plant-card:hover{border-color:var(--accent)}.plant-card.on{border-color:var(--green);background:var(--green-bg);box-shadow:0 0 12px -2px var(--green)}.plant-input{position:absolute;opacity:0;width:0;height:0}.plant-switch{position:relative;width:42px;height:23px;flex:none;border-radius:999px;background:var(--bg-input);border:1px solid var(--border-bright);transition:background .2s,border-color .2s}.plant-card.on .plant-switch{background:var(--green);border-color:var(--green)}.plant-knob{position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:var(--fg-dim);transition:transform .2s,background .2s}.plant-card.on .plant-knob{transform:translate(19px);background:#fff}.plant-body{display:flex;flex-direction:column;gap:3px;min-width:0}.plant-name{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.6px;color:var(--fg)}.plant-card.on .plant-name{color:var(--green)}.plant-tag{font-size:8px;text-transform:uppercase;letter-spacing:1px;color:var(--fg-dim);border:1px solid var(--border-bright);border-radius:3px;padding:1px 5px}.plant-card.on .plant-tag{color:var(--green);border-color:var(--green)}.plant-state{font-size:10px;line-height:1.45;color:var(--fg-dim)}.plant-card.on .plant-state{color:var(--fg)}.soo-body{flex:1;overflow-y:auto;padding:10px;min-height:0}.soo-empty{color:var(--fg-dim);text-align:center;font-size:13px;line-height:1.6;padding:24px}.soo-sec{border:1px solid var(--border);border-left:3px solid var(--border-bright);border-radius:5px;background:var(--bg-panel-2);padding:8px 10px;margin-bottom:8px}.soo-sec.active{border-left-color:var(--green);background:var(--green-bg)}.soo-head{display:flex;align-items:center;gap:8px;color:var(--fg);font-weight:600;font-size:12px}.soo-dot{width:8px;height:8px;border-radius:50%;background:var(--border-bright);flex:none}.soo-sec.active .soo-dot{background:var(--green);box-shadow:0 0 5px var(--green)}.soo-step{color:var(--fg-dim);font-size:10px;border:1px solid var(--border-bright);border-radius:3px;padding:0 5px}.soo-sec.active .soo-step{color:var(--green);border-color:var(--green)}.soo-text{color:var(--fg-dim);font-size:11px;line-height:1.5;margin:5px 0 6px}.soo-text code{color:var(--accent);background:var(--bg-input);padding:0 3px;border-radius:2px;font-size:10px}.soo-watch{display:flex;flex-wrap:wrap;gap:5px}.soo-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:3px;padding:1px 5px;font-size:10px;background:var(--bg-input)}.soo-chip .soo-k{color:var(--fg-dim)}.soo-chip .soo-v{color:var(--accent);font-variant-numeric:tabular-nums}.gr-zoom{display:inline-flex;align-items:center;gap:4px}.gr-zoom button{padding:1px 7px;font-size:12px;line-height:1.2;min-width:22px}.gr-zoom .gr-zlevel{color:var(--fg-dim);font-size:10px;min-width:34px;text-align:center;font-variant-numeric:tabular-nums}.gr-stage{cursor:grab;touch-action:none}.gr-stage.grabbing{cursor:grabbing}.gr-svg{transition:transform .05s linear}.tab-panel.gr-expanded{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--bg);display:flex!important;flex-direction:column}.tab-panel.gr-expanded .gr-stage{background:var(--bg-input)}.tab-panel.gr-expanded .gr-side{width:220px}.tab-bar .tab-scan{margin-left:auto;align-self:center;padding:0 12px;color:var(--accent-2);font-size:11px;white-space:nowrap}.prog-select{background:var(--bg-input);color:var(--accent);border:1px solid var(--accent);border-radius:3px;font-family:var(--mono);font-size:11px;padding:2px 4px;max-width:200px}.pane-expand-btn{padding:0 8px;font-size:12px;line-height:1.2;align-self:center;margin-left:6px}.panel.pane-expanded{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--bg)}.tut-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;pointer-events:none}.tut-spotlight{position:fixed;border:2px solid var(--accent);border-radius:6px;box-shadow:0 0 0 9999px #06090cbd,0 0 14px var(--accent);transition:all .18s ease;pointer-events:none}.tut-pop{position:fixed;width:320px;max-width:86vw;pointer-events:auto;background:var(--bg-panel);border:1px solid var(--accent);border-radius:8px;padding:14px 16px;box-shadow:0 8px 30px #0009}.tut-pop.tut-centered{transform:translate(-50%,-50%)}.tut-step{color:var(--accent);font-size:10px;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px}.tut-title{color:var(--fg);font-size:15px;font-weight:700;margin-bottom:6px}.tut-body{color:var(--fg-dim);font-size:12px;line-height:1.55}.tut-body code{color:var(--accent);background:var(--bg-input);padding:0 3px;border-radius:2px;font-size:11px}.tut-actions{display:flex;align-items:center;gap:8px;margin-top:14px}.tut-actions .tut-spacer{flex:1}.tut-skip{color:var(--fg-dim);border-color:var(--border)}.tut-arrow{position:absolute;width:0;height:0}.tut-arrow-bottom{top:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid var(--accent)}.tut-arrow-top{bottom:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid var(--accent)}.tut-arrow-left{right:-8px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:8px solid var(--accent)}.tut-arrow-right{left:-8px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:8px solid var(--accent)}.guide-btn{border-color:var(--accent);color:var(--accent);padding:3px 12px}.find-bar{display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg-panel-2);border-top:1px solid var(--border);flex-wrap:wrap}.find-bar .spacer{flex:1}.find-bar button{font-size:11px;padding:2px 7px}.find-input{width:130px;font-size:11px;padding:2px 5px}.find-input.find-nohit{border-color:var(--red);color:var(--red)}.find-count{color:var(--fg-dim);font-size:10px;min-width:34px;text-align:center;font-variant-numeric:tabular-nums}.find-ci{display:inline-flex;align-items:center;gap:3px;color:var(--fg-dim);font-size:11px}.find-ci input{width:auto}.find-sep{width:1px;height:18px;background:var(--border);margin:0 2px}.find-close{border-color:var(--border)}.theme-pill{display:inline-flex;border:1px solid var(--border-bright);border-radius:999px;overflow:hidden}.theme-pill button{border:none;border-radius:0;background:transparent;color:var(--fg-dim);padding:2px 9px;font-size:10px;letter-spacing:.5px;display:inline-flex;align-items:center;gap:4px}.theme-pill button+button{border-left:1px solid var(--border)}.theme-pill button:hover{background:var(--bg-panel);color:var(--fg)}.theme-pill button.active{background:var(--accent);color:var(--bg)}.theme-pill .th-ic{font-size:11px}.tr-norm{display:inline-flex;align-items:center;gap:4px;color:var(--fg-dim);font-size:11px}.tr-norm input{width:auto}.tr-wrap{flex:1;display:flex;min-height:0;gap:8px;padding:8px}.tr-canvas{flex:1;min-width:0;background:var(--bg-input);border:1px solid var(--border);border-radius:6px}.tr-side{width:172px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel-2);overflow:hidden}.tr-side-head{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-dim);padding:6px 8px;border-bottom:1px solid var(--border)}.tr-filter{margin:6px;width:calc(100% - 12px)}.tr-list{overflow-y:auto;padding:2px 0}.tr-row{display:flex;align-items:center;gap:5px;padding:1px 8px;font-size:11px;cursor:pointer}.tr-row:hover{background:var(--bg-panel)}.tr-row.on{color:var(--fg)}.tr-row input{width:auto}.tr-sw{width:9px;height:9px;border-radius:2px;flex:none;border:1px solid var(--border)}.tr-nm{flex:1;color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tr-row.on .tr-nm{color:var(--fg)}.tr-vv{color:var(--accent);font-variant-numeric:tabular-nums}.scenario-sel{font-size:11px;max-width:230px;padding:2px 4px}.sensor-row{align-items:center;gap:8px}.sensor-lbl{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--fg-dim);white-space:nowrap}.sensor-detail{margin-top:2px}.sensor-detail>summary{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);cursor:pointer;padding:2px 0;list-style:revert}.sensor-detail>summary:hover{filter:brightness(1.15)}.sensor-list{display:flex;flex-direction:column;gap:4px;padding:4px 0 2px 6px}.sensor-item{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:8px}.sensor-item .sensor-name{font-size:11px;font-weight:600;color:var(--fg);font-variant-numeric:tabular-nums}.sensor-item .sensor-desc{font-size:10px;color:var(--fg-dim)}.sensor-item .sensor-each{max-width:150px}td.status-toggle{cursor:pointer}td.status-toggle:hover{outline:1px solid var(--border-bright)}button.live{border-color:var(--green);color:var(--green)}button.runbig{display:block;width:100%;margin:2px 0 9px;padding:11px 14px;border-width:2px;border-radius:5px;font-size:14px;font-weight:700;letter-spacing:.3px;background:var(--green-bg)}button.runbig:hover:not(:disabled){color:var(--green);border-color:var(--green)}button.runbig.active:disabled{opacity:1}button.live.active{background:var(--green-bg);animation:live-pulse 1.1s ease-in-out infinite}button.live.active.paused{animation:none;opacity:.7}@keyframes live-pulse{0%,to{box-shadow:0 0 #5ad17a00}50%{box-shadow:0 0 6px 1px var(--green)}}.live-indicator{color:var(--green);font-size:11px;font-weight:700;letter-spacing:1px;animation:live-pulse 1.1s ease-in-out infinite}.live-indicator.paused{color:var(--amber);animation:none}.tune-sel{font-size:11px;max-width:260px;padding:2px 4px}.tune-body{flex:1;display:flex;flex-direction:column;min-height:0;padding:10px;gap:10px;overflow:auto}.tune-empty{color:var(--fg-dim);text-align:center;font-size:13px;line-height:1.6;padding:24px}.tune-readout{display:flex;flex-wrap:wrap;gap:14px;font-size:12px}.tune-kv{display:inline-flex;align-items:baseline;gap:5px}.tune-kv i{color:var(--fg-dim);font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:1px}.tune-kv b{color:var(--fg);font-variant-numeric:tabular-nums}.tune-kv .tune-pt{color:var(--fg-dim)}.tune-kv .tune-out{color:var(--green)}.tune-err b{color:var(--accent-2)}.tune-gains{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:8px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.tune-gains label{display:inline-flex;flex-direction:column;gap:3px;color:var(--fg-dim);font-size:10px;text-transform:uppercase;letter-spacing:1px}.tune-gains input{width:96px}.tune-gains .hint{text-transform:none;letter-spacing:0}.tune-act{margin-left:auto;color:var(--accent);font-size:11px}.tune-chart{width:100%;height:150px;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;flex:none}.tune-hint{color:var(--fg-dim);font-size:11px;line-height:1.5}.tune-auto{font-size:11px;padding:4px 10px;border-radius:5px;cursor:pointer;color:var(--bg);background:var(--accent);border:1px solid var(--accent);font-weight:600;letter-spacing:.3px}.tune-auto:hover{filter:brightness(1.1)}.tune-auto:disabled{opacity:.6;cursor:default}.tune-autobox{font-size:11px;border-radius:6px;padding:8px 10px;line-height:1.55}.tune-autobox.working{color:var(--accent);background:var(--bg-input);border:1px solid var(--border)}.tune-autobox.note{color:var(--amber, #e0a800);background:var(--bg-input);border:1px solid var(--border)}.tune-autobox.done{background:var(--green-bg, rgba(40,180,120,.12));border:1px solid var(--green, #2bbd7e)}.tune-autobox .ta-head{color:var(--fg);font-size:12px;margin-bottom:2px}.tune-autobox .ta-head b{color:var(--green, #2bbd7e)}.tune-autobox .ta-row{color:var(--fg);font-variant-numeric:tabular-nums}.tune-autobox .ta-row b{color:var(--accent)}.tune-autobox .ta-row s,.tune-autobox .ta-dim{color:var(--fg-dim)}.tune-autobox .ta-sep{color:var(--fg-dim);margin:0 4px}.tune-autobox .ta-revert{margin-top:6px;font-size:10px;padding:2px 8px;border-radius:4px;cursor:pointer;color:var(--fg-dim);background:transparent;border:1px solid var(--border)}.tune-autobox .ta-revert:hover{color:var(--fg);border-color:var(--fg-dim)}.tune-autobox .ta-spin{display:inline-block;animation:ta-spin .9s linear infinite}@keyframes ta-spin{to{transform:rotate(360deg)}}.disclaimer-link{font-size:10px;letter-spacing:.5px;color:var(--fg-dim);background:transparent;border:none;cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px;padding:2px 4px}.disclaimer-link:hover{color:var(--amber, #e0a800)}.disc-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0009;display:flex;align-items:center;justify-content:center;padding:24px}.disc-overlay[hidden]{display:none}.disc-card{width:min(640px,100%);max-height:86vh;display:flex;flex-direction:column;background:var(--bg-panel-2);border:1px solid var(--border-bright);border-radius:12px;box-shadow:0 18px 60px #00000080}.disc-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border)}.disc-title{font-size:16px;font-weight:700;color:var(--amber, #e0a800)}.disc-x{font-size:14px;width:28px;height:26px;border-radius:6px;cursor:pointer;background:var(--bg-input);color:var(--fg-dim);border:1px solid var(--border)}.disc-x:hover{color:var(--fg)}.disc-body{overflow:auto;padding:6px 18px 12px}.disc-body h4{color:var(--fg);font-size:12.5px;margin:14px 0 4px}.disc-body p{color:var(--fg-dim);font-size:12px;line-height:1.6;margin:0}.disc-foot{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--border)}.disc-note{color:var(--fg-dim);font-size:11px}.disc-ok{font-size:12px;font-weight:600;padding:6px 16px;border-radius:6px;cursor:pointer;background:var(--accent);color:var(--bg);border:1px solid var(--accent)}.disc-ok:hover{filter:brightness(1.1)}.disc-ok:disabled{opacity:.45;cursor:not-allowed;filter:none}.disc-agree{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--fg);cursor:pointer;-webkit-user-select:none;user-select:none}.disc-agree input{width:15px;height:15px;cursor:pointer;accent-color:var(--accent)}.feedback-btn{padding:3px 10px}.fb-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0009;display:flex;align-items:center;justify-content:center;padding:24px}.fb-overlay[hidden]{display:none}.fb-card{width:min(520px,100%);display:flex;flex-direction:column;background:var(--bg-panel-2);border:1px solid var(--border-bright);border-radius:12px;box-shadow:0 18px 60px #00000080}.fb-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.fb-title{font-weight:600;font-size:13px}.fb-x{font-size:14px;width:28px;height:26px;border-radius:6px;cursor:pointer;background:var(--bg-input);color:var(--fg-dim);border:1px solid var(--border)}.fb-x:hover{color:var(--fg)}.fb-body{padding:14px 16px;display:flex;flex-direction:column;gap:8px}.fb-row{display:flex;align-items:center;gap:10px}.fb-row label{font-size:12px;color:var(--fg-dim)}.fb-lbl{font-size:12px;color:var(--fg);margin-top:4px}.fb-body textarea,.fb-body input[type=text],.fb-body select{width:100%;background:var(--bg-input);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:7px 9px;font:inherit;font-size:12px}.fb-body textarea{resize:vertical;min-height:84px}.fb-body select{width:auto;cursor:pointer}.fb-note{font-size:10.5px;color:var(--fg-dim);line-height:1.45;margin-top:2px}.fb-foot{display:flex;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}.fb-status{font-size:11.5px;color:var(--fg-dim)}.fb-status.fb-ok{color:var(--green)}.fb-status.fb-err{color:var(--red)}.fb-send{font-size:12px;font-weight:600;padding:6px 16px;border-radius:6px;cursor:pointer;background:var(--accent);color:var(--bg);border:1px solid var(--accent)}.fb-send:hover{filter:brightness(1.1)}.fb-send:disabled{opacity:.5;cursor:default;filter:none}.fb-cancel{font-size:12px;padding:6px 14px;border-radius:6px;cursor:pointer}.topbar .byline{color:var(--fg-dim);font-size:10px;letter-spacing:.5px;opacity:.7;margin-right:4px}.topbar .byline:hover{opacity:1}@media (max-width: 720px){.topbar .byline{display:none}}.bau-link{--bau: #2bbfe6;display:inline-flex;align-items:center;gap:8px;text-decoration:none;margin-right:12px;padding:3px 10px 3px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--bau) 45%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--bau) 16%,transparent),color-mix(in srgb,var(--bau) 7%,transparent));color:var(--fg);line-height:1;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease,background .15s ease}.bau-link:hover{border-color:var(--bau);background:linear-gradient(180deg,color-mix(in srgb,var(--bau) 26%,transparent),color-mix(in srgb,var(--bau) 12%,transparent));box-shadow:0 0 0 3px color-mix(in srgb,var(--bau) 18%,transparent);transform:translateY(-1px)}.bau-link .bau-tag{font-size:8px;letter-spacing:1.2px;text-transform:uppercase;color:var(--bau);opacity:.85;align-self:flex-start;padding-top:1px}.bau-link .bau-logo{display:block;color:var(--bau);flex:none;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--bau) 55%,transparent))}.bau-link .bau-text{display:flex;flex-direction:column;gap:1px}.bau-link .bau-text b{font-size:11px;font-weight:700;letter-spacing:.3px}.bau-link .bau-text em{font-style:normal;font-size:8.5px;letter-spacing:.3px;color:var(--fg-dim)}.bau-link .bau-go{font-size:11px;color:var(--bau);opacity:.8}.bau-link:hover .bau-go{opacity:1}@media (max-width: 880px){.bau-link .bau-tag,.bau-link .bau-text em{display:none}}@media (max-width: 620px){.bau-link .bau-text b{display:none}}.section-sel{font-size:10px;background:var(--bg-input);color:var(--accent);border:1px solid var(--border);border-radius:3px;padding:1px 4px;max-width:230px}.section-sel:disabled{color:var(--fg-dim);border-color:var(--border);opacity:.7}.editor-area.section-view{background:var(--bg-panel);box-shadow:inset 3px 0 0 var(--accent)}.watch-filter{font-size:11px;padding:1px 6px;width:150px;text-transform:none}.watch-count{color:var(--fg-dim);font-size:10px;font-variant-numeric:tabular-nums;min-width:38px;text-align:right}.cx-body{flex:1;overflow:auto;min-height:0;padding:10px}.cx-intro{color:var(--fg-dim);font-size:12px;line-height:1.6;max-width:560px}.cx-intro b{color:var(--fg)}.cx-running{color:var(--accent);font-size:13px;padding:24px;text-align:center}.cx-score{display:flex;align-items:center;gap:16px;padding:12px 14px;border-radius:8px;border:1px solid var(--border-bright);background:var(--bg-panel-2);margin-bottom:12px}.cx-score.cx-good{border-color:var(--green);background:var(--green-bg)}.cx-score.cx-warn{border-color:var(--amber)}.cx-score.cx-bad{border-color:var(--red);background:var(--red-bg)}.cx-pct{font-size:40px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.cx-pct span{font-size:16px;font-weight:600;opacity:.7}.cx-good .cx-pct{color:var(--green)}.cx-warn .cx-pct{color:var(--amber)}.cx-bad .cx-pct{color:var(--red)}.cx-grade{font-size:14px;font-weight:700;color:var(--fg)}.cx-sub{font-size:11px;color:var(--fg-dim);margin:2px 0 6px}.cx-phases{display:flex;flex-wrap:wrap;gap:5px}.cx-chip{font-size:10px;color:var(--fg-dim);border:1px solid var(--border);border-radius:3px;padding:1px 6px}.cx-chip b{color:var(--fg)}.cx-table{width:100%;border-collapse:collapse;font-size:11px}.cx-table th{text-align:left;color:var(--fg-dim);font-size:9px;text-transform:uppercase;letter-spacing:1px;padding:4px 6px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-panel)}.cx-table td{padding:5px 6px;border-bottom:1px solid var(--border);vertical-align:top}.cx-res{font-weight:800;text-align:center;width:18px}.cx-table tr.pass .cx-res{color:var(--green)}.cx-table tr.fail .cx-res{color:var(--red)}.cx-table tr.fail td{background:var(--red-bg)}.cx-ph{color:var(--fg-dim);white-space:nowrap}.cx-name{color:var(--fg)}.cx-detail{color:var(--fg-dim);font-size:10px;margin-top:1px}.cx-exp{color:var(--fg-dim)}.cx-act{color:var(--accent);font-variant-numeric:tabular-nums}.editor-gutter .g-row{display:inline}.editor-gutter .g-click{cursor:pointer}.editor-gutter .g-click:hover{color:var(--fg)}.g-flag{display:inline-block;width:1.4ch;margin-left:3px;text-align:center;font-weight:800;font-style:normal}.g-e .g-flag{color:var(--fg-dim);opacity:.55}.g-e.g-click:hover .g-flag{color:var(--green);opacity:1}.g-d{color:var(--red);opacity:.8}.g-d .g-flag{color:var(--red);opacity:1}.g-t .g-flag{color:var(--accent)}.trace-t,.trace-t-pad{display:inline-block;width:14px;text-align:center}.trace-t{color:var(--accent);font-weight:800;font-style:normal}.trace-row.traced{box-shadow:inset 2px 0 0 var(--accent)}.mode-switch{display:inline-flex;flex:none;border:1px solid var(--border);border-radius:5px;overflow:hidden;margin-left:10px}.mode-btn{border:none;border-radius:0;background:transparent;color:var(--fg-dim);font-size:11px;padding:3px 10px;white-space:nowrap}.mode-btn+.mode-btn{border-left:1px solid var(--border)}.mode-btn:hover{background:var(--bg-panel-2);color:var(--fg)}.mode-btn.active{background:var(--bg-panel-2);color:var(--accent);font-weight:700}.train{padding:10px 12px;display:flex;flex-direction:column;gap:10px}.train-intro{color:var(--fg-dim);font-size:12px;line-height:1.5;max-width:640px}.train-intro b,.train-intro i{color:var(--fg)}.train-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.train-score{color:var(--amber);font-size:12px;font-weight:700}.train-status{font-size:12px;line-height:1.5}.train-hints ol{margin:6px 0 0 18px;padding:0;color:var(--fg-dim);font-size:12px}.train-hints li{margin-bottom:3px}.train-answer{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.train-answer select{min-width:220px}.train-result{font-size:12px;line-height:1.5;border:1px solid var(--border);border-radius:4px;padding:8px 10px;background:var(--bg-panel-2);max-width:640px}.train-result code{color:var(--accent)}.tr-live{color:var(--green);font-size:10px;font-weight:700;letter-spacing:1px;margin-left:8px;animation:live-pulse 1.1s ease-in-out infinite}.tr-live.paused{color:var(--amber);animation:none}.pp-page{display:flex;flex-direction:column;height:100vh;background:var(--bg)}.pp-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.pp-bar .spacer{flex:1}.pp-title{font-weight:700;letter-spacing:1px;color:var(--accent);white-space:nowrap}.pp-title-dim{color:var(--fg-dim);font-weight:400}.pp-name{width:220px;background:var(--bg-input);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-family:var(--mono);font-size:12px}.pp-progsel{max-width:260px}.pp-simlink{color:var(--accent);text-decoration:none;border:1px solid var(--border-bright);border-radius:4px;padding:4px 10px;font-size:12px;white-space:nowrap}.pp-simlink:hover{background:var(--bg-panel-2)}.pp-status{padding:4px 14px;font-size:12px;color:var(--fg-dim);border-bottom:1px solid var(--border);background:var(--bg-panel-2)}.pp-code{flex:1;width:100%;resize:none;border:none;outline:none;background:var(--bg-input);color:var(--fg);font-family:var(--mono);font-size:13px;line-height:1.5;padding:14px 18px;white-space:pre;overflow:auto;-moz-tab-size:8;tab-size:8}.pp-foot{display:flex;gap:8px;padding:5px 14px;font-size:11px;color:var(--fg-dim);background:var(--bg-panel);border-top:1px solid var(--border)}.pp-foot .spacer{flex:1}.pp-foot-dim{opacity:.7}@media (pointer: coarse){.tab{padding:11px 15px}.tab-bar{scroll-snap-type:x proximity}.tab{scroll-snap-align:start}}@media print{.pp-bar,.pp-status,.pp-foot{display:none!important}.pp-page{height:auto;background:#fff}.pp-code{background:#fff;color:#000;font-size:10px;overflow:visible;height:auto;white-space:pre-wrap}}:root{--steel-050: #f7f9fa;--steel-100: #eef2f4;--steel-200: #d6dde1;--steel-300: #b9c2c7;--steel-400: #9aa4aa;--steel-500: #7d8991;--steel-600: #566169;--steel-700: #3a444a;--steel-800: #252d31;--steel-900: #11171a;--blue-300: #67a0d0;--blue-400: #3f83bd;--blue-500: #2f6ea8;--blue-600: #134b7d;--blue-700: #082b4b;--hmi-bg: #20262a;--hmi-stage: #30383d;--hmi-panel: #151a1e;--hmi-panel-2: #1c2327;--status-stopped: #8a97a0;--status-running: #3fe08a;--status-fault: #ff3b30;--status-alarm: #ffb020;--status-unknown: #5b666d;--status-manual: #b06bff;--status-stopped-bg: #2a3238;--status-running-bg: #12352a;--status-fault-bg: #3a1614;--status-alarm-bg: #3a2c10;--status-unknown-bg: #23292d;--status-manual-bg: #2a1f3d;--ease-standard: cubic-bezier(.4, 0, .2, 1);--spin-fast: .35s;--spin-slow: 3.6s;--pulse-period: 1s}.gr-stage{background:var(--hmi-stage)}.tl-symbol{--spin-duration: 1.2s;--symbol-rotation: 0deg}.tl-symbol .tl-symbol-rot{transform-box:fill-box;transform-origin:center;transform:rotate(var(--symbol-rotation, 0deg))}.tl-symbol .tl-spin,.tl-symbol .tl-impeller{transform-box:fill-box;transform-origin:center}@keyframes tl-spin{to{transform:rotate(360deg)}}@keyframes tl-spin-rev{to{transform:rotate(-360deg)}}.tl-symbol[data-state=running] .tl-impeller,.tl-symbol[data-state=running] .tl-spin{animation:tl-spin var(--spin-duration, 1.2s) linear infinite}.tl-symbol[data-state=running] .tl-spin-rev{animation:tl-spin-rev var(--spin-duration, 1.2s) linear infinite}.tl-symbol .tl-run-hl{opacity:0;transition:opacity .2s ease}.tl-symbol[data-state=running] .tl-run-hl{opacity:.95}.tl-symbol .tl-fault{opacity:0;transition:opacity .2s ease}.tl-symbol[data-state=fault] .tl-fault{opacity:1}@keyframes tl-alarm-pulse{0%,to{opacity:1}50%{opacity:.35}}.tl-symbol[data-state=fault] .tl-fault-badge{animation:tl-alarm-pulse var(--pulse-period, 1s) steps(1,end) infinite}.tl-symbol[data-state=unknown]{opacity:.55;filter:grayscale(.7)}.tl-symbol--damper .tl-blade{transform-box:fill-box;transform-origin:center;transition:transform .5s var(--ease-standard, cubic-bezier(.4,0,.2,1));transform:scaleY(calc(1 - .86 * var(--travel, 0)))}.tl-symbol--valve .tl-closed{opacity:1;transition:opacity .25s ease}.tl-symbol--valve[data-state=running] .tl-closed{opacity:0}.tl-symbol--coil.heat{--coil-active: #ff6b57}.tl-symbol--coil.cool{--coil-active: #48c9ff}.gr-dmp .gr-val,.gr-vlv .gr-val{font-family:ui-monospace,Consolas,monospace;font-size:9px;font-weight:600;fill:#eaf3f8}.gr-dmp.gr-missing,.gr-vlv.gr-missing{opacity:.55}.tl-manual-ring{fill:none;stroke:var(--status-manual);stroke-width:2;stroke-dasharray:5 4;opacity:0}.tl-manual .tl-manual-ring{opacity:1}@keyframes ahu-flow{0%{opacity:.05}50%{opacity:.38}to{opacity:.05}}.ahu-flow{animation:ahu-flow 2.4s linear infinite}@media (prefers-reduced-motion: reduce){.tl-symbol[data-state=running] .tl-impeller,.tl-symbol[data-state=running] .tl-spin,.tl-symbol[data-state=running] .tl-spin-rev,.tl-symbol[data-state=fault] .tl-fault-badge,.ahu-flow{animation:none!important}}.why-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:24px}.why-overlay[hidden]{display:none}.why-card{background:var(--hmi-panel, #151a1e);border:1px solid var(--border-strong, #64727a);border-radius:10px;width:min(760px,94vw);max-height:84vh;overflow:auto;box-shadow:0 18px 50px #00000080}.why-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border-subtle, #2e363b);position:sticky;top:0;background:var(--hmi-panel, #151a1e)}.why-auto{font-family:ui-monospace,Consolas,monospace;font-size:10px;font-weight:700;letter-spacing:1px;color:var(--status-alarm, #ffb020);border:1px solid var(--status-alarm, #ffb020);border-radius:4px;padding:2px 7px}.why-title{font-size:13px;color:var(--fg)}.why-close{margin-left:auto;background:none;border:1px solid var(--border);color:var(--fg-dim);border-radius:6px;padding:2px 9px;cursor:pointer}.why-close:hover{color:var(--fg);border-color:var(--border-bright)}.why-body{padding:10px 16px;display:flex;flex-direction:column;gap:12px}.why-finding{border:1px solid var(--border-subtle, #2e363b);border-radius:8px;padding:10px 12px;background:var(--hmi-panel-2, #1c2327)}.why-finding.why-manual{border-color:var(--status-manual, #b06bff)}.why-msg{font-size:12.5px;color:var(--fg);line-height:1.45}.why-src{font-family:ui-monospace,Consolas,monospace;font-size:11px;color:var(--steel-300, #b9c2c7);background:#10161a;border:1px solid #2e363b;border-radius:5px;padding:5px 8px;margin-top:7px;overflow-x:auto;white-space:pre}.why-gate{margin-top:9px}.why-gate-head{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;letter-spacing:.4px;color:var(--text-muted, #7f8c93);text-transform:uppercase}.why-leaf{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:7px 4px;border-bottom:1px dashed var(--border-subtle, #2e363b)}.why-leaf:last-child{border-bottom:none}.why-pass{font-family:ui-monospace,Consolas,monospace;font-size:10px;font-weight:700;border-radius:4px;padding:2px 6px;flex:0 0 auto}.why-pass.on{color:var(--status-running, #3fe08a);background:var(--status-running-bg, #12352a)}.why-pass.off{color:var(--status-stopped, #8a97a0);background:var(--status-stopped-bg, #2a3238)}.why-leaf-txt{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;color:var(--fg)}.why-leaf-vals{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;color:var(--text-muted, #7f8c93)}.why-because{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;color:var(--status-alarm, #ffb020);padding:3px 4px 3px 22px}.why-act{margin-left:auto;flex:0 0 auto;background:var(--status-running-bg, #12352a);color:var(--status-running, #3fe08a);border:1px solid var(--status-running, #3fe08a);border-radius:6px;padding:3px 10px;font-size:11px;font-family:ui-monospace,Consolas,monospace;cursor:pointer}.why-act:hover{filter:brightness(1.25)}.why-foot{padding:9px 16px;font-size:10.5px;color:var(--text-muted, #7f8c93);border-top:1px solid var(--border-subtle, #2e363b)}.gr-why{background:none;border:1px solid var(--border);color:var(--fg-dim);border-radius:50%;width:17px;height:17px;line-height:1;font-size:10px;cursor:pointer;padding:0;flex:0 0 auto}.gr-why:hover{color:var(--accent);border-color:var(--accent)}.state-text-chip{margin-left:7px;font-family:ui-monospace,Consolas,monospace;font-size:9.5px;font-weight:600;letter-spacing:.5px;color:var(--accent);border:1px solid var(--border-bright);border-radius:4px;padding:1px 6px;vertical-align:1px}.g-row.g-ran{background:color-mix(in srgb,var(--green) 15%,transparent)}.g-row.g-skipped{opacity:.42}.g-hits{font-style:normal;font-size:8px;color:var(--green);margin-left:3px;vertical-align:top}.gr-panel{position:relative}.gr-tagbtn{font-size:11px;padding:2px 8px}.gr-tagpop[hidden],.gr-tagauto-list[hidden]{display:none}.gr-tagbtn.has-untagged{border-color:var(--amber);color:var(--amber)}.gr-tagpop{position:absolute;top:34px;right:10px;z-index:40;width:290px;max-height:min(62vh,460px);display:flex;flex-direction:column;background:var(--bg-panel);border:1px solid var(--border-bright);border-radius:8px;box-shadow:0 12px 32px -8px #0009}.gr-tagpop-head{display:flex;align-items:center;gap:6px;padding:7px 9px;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-dim);border-bottom:1px solid var(--border)}.gr-tagclose{padding:0 5px;font-size:11px;line-height:1.5}.gr-taghint{font-size:10px;line-height:1.45;color:var(--fg-dim);padding:7px 9px 4px}.gr-taglist{flex:1;min-height:0;overflow-y:auto;padding:2px 0 6px}.gr-tagrow{display:grid;grid-template-columns:1fr auto;gap:3px 6px;align-items:center;padding:5px 9px}.gr-tagrow+.gr-tagrow{border-top:1px solid var(--border)}.gr-tagrow label{font-size:11px;color:var(--fg)}.gr-tagrow select{grid-column:1 / -1;font-size:11px;width:100%}.gr-tagauto,.gr-tagmine,.gr-tagnone{font-size:9px;font-family:var(--mono);justify-self:end}.gr-tagauto{color:var(--green)}.gr-tagmore{display:block;width:calc(100% - 18px);margin:8px 9px 4px;font-size:10px;padding:4px 6px;color:var(--fg-dim)}.gr-tagmore:hover{color:var(--fg)}.gr-tagclear{font-size:10px;color:var(--green);padding:6px 9px 8px}.gr-tagmine{color:var(--accent)}.gr-tagnone{color:var(--amber)}.gr-tagrow.is-auto label{color:var(--fg-dim)}.gr-tagbtn:not(.has-untagged){color:var(--green);border-color:var(--green)}.lock-btn.active{border-color:var(--amber);color:var(--amber);background:var(--bg-panel-2)}.pcfg-search{width:170px}.prog-tabs{display:flex;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid var(--border);background:var(--bg-panel-2);overflow-x:auto;flex:none;min-width:0;scrollbar-width:thin}.prog-tab{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel);padding:0 2px 0 6px;flex:none}.prog-tab.active{border-color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.prog-tab button{background:none;border:0;color:var(--fg-dim);font:inherit;font-size:11px;cursor:pointer;padding:4px 3px}.prog-tab.active .prog-name{color:var(--fg);font-weight:700}.prog-name:hover{color:var(--fg)}.prog-x{opacity:.55;font-size:13px!important;padding:2px 4px!important}.prog-x:hover{opacity:1;color:var(--red)!important}.prog-dot{width:18px;height:18px;display:inline-grid;place-items:center;padding:0!important}.prog-dot:before{content:"";width:9px;height:9px;border-radius:50%;box-sizing:border-box;border:2px solid var(--fg-dim)}.prog-dot.run:before{background:var(--green);border-color:var(--green)}.prog-dot.idle:before{background:transparent;border-color:var(--fg-dim)}.prog-dot.err:before{background:var(--red);border-color:var(--red)}.prog-dot.warn:before{box-shadow:0 0 0 2px var(--amber)}.prog-dot.beat:before{animation:prog-beat .5s ease-out}@keyframes prog-beat{0%{transform:scale(1.5);filter:brightness(1.6)}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.prog-dot.beat:before{animation:none}}.prog-add,.prog-all{background:var(--bg-panel);border:1px solid var(--border);color:var(--fg-dim);border-radius:6px;font:inherit;font-size:11px;padding:3px 8px;cursor:pointer;flex:none}.prog-add:hover,.prog-all:hover{color:var(--accent);border-color:var(--accent)}.prog-all{color:var(--accent)}.prog-hint{color:var(--fg-dim);font-size:10px;margin-left:auto;padding-left:8px;flex:none}@media (pointer: coarse){.prog-tab button{padding:8px 5px}.prog-dot{width:26px;height:26px}}.a3-host{position:relative;align-self:stretch;flex:1;min-height:460px;overflow:hidden;border-radius:5px;background:#0b1116;cursor:grab;touch-action:none}.a3-host:active{cursor:grabbing}.a3-host canvas{display:block}.a3-labels{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.a3-tag{pointer-events:auto;background:#0a1015c7;border:1px solid rgba(70,211,230,.35);border-radius:6px;padding:3px 7px;font:500 10.5px/1.45 ui-monospace,SF Mono,Menlo,Consolas,monospace;color:#e6f1f5;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;box-shadow:0 4px 14px #00000059}.a3-row{display:flex;gap:10px;justify-content:space-between}.a3-k{color:#8fa3ae;letter-spacing:.04em}.a3-v{font-variant-numeric:tabular-nums;color:#f3fafc}.a3-row.a3-on .a3-v{color:#5ee6a0}.a3-row.a3-alarm .a3-v{color:#ff6a55}.a3-row.a3-manual .a3-v{color:#ffc15c}.a3-sec{font:600 9.5px/1 ui-monospace,SF Mono,Menlo,Consolas,monospace;letter-spacing:.12em;color:#7fd8e6;background:#0a101599;padding:3px 6px;border-radius:3px;white-space:nowrap}.a3-sec:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#46d3e6;margin-right:6px;vertical-align:1px;box-shadow:0 0 6px #46d3e6}.a3-hud{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;color:#e6f1f5;font:12px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}.a3-hud>*{pointer-events:auto}.a3-title{position:absolute;left:14px;top:12px;display:grid;gap:6px;max-width:46%}.a3-eyebrow{font:600 10px/1 ui-monospace,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase;color:#8fa3ae}.a3-name{font:800 30px/1 system-ui,-apple-system,Segoe UI,sans-serif;letter-spacing:.01em;color:#6fe3f2;text-shadow:0 0 18px rgba(70,211,230,.35)}.a3-kpis{display:flex;flex-wrap:wrap;gap:6px}.a3-kpi{display:grid;gap:1px;background:#0a1015b8;border:1px solid #25333d;border-radius:6px;padding:4px 8px;min-width:64px}.a3-kk{font:600 9px/1.2 ui-monospace,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase;color:#8fa3ae}.a3-kv{font:600 14px/1.2 ui-monospace,Menlo,monospace;color:#f3fafc;font-variant-numeric:tabular-nums}.a3-modes{display:flex;flex-wrap:wrap;gap:5px}.a3-mode{font:600 10px/1 ui-monospace,Menlo,monospace;letter-spacing:.06em;padding:4px 7px;border-radius:99px;border:1px solid #2b3a44;color:#6c7f8a;background:#0a101599}.a3-mode.on{color:#0b1116;background:#5ee6a0;border-color:#5ee6a0}.a3-mode.a3-bad.on{background:#ff6a55;border-color:#ff6a55}.a3-panel{position:absolute;right:12px;top:12px;display:grid;gap:7px;background:#0a1015d1;border:1px solid #25333d;border-radius:10px;padding:9px 10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.a3-grp{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.a3-gl{font:600 9px/1 ui-monospace,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;color:#6c7f8a;width:38px}.a3-panel button{font:500 11.5px/1 system-ui,-apple-system,Segoe UI,sans-serif;color:#c7d5dc;background:transparent;border:1px solid transparent;border-radius:6px;padding:6px 9px;cursor:pointer}.a3-panel button:hover{background:#17222a}.a3-panel button.on{background:#e9f4f7;color:#0b1116}.a3-panel button:focus-visible{outline:2px solid #46d3e6;outline-offset:1px}.a3-legend{position:absolute;left:14px;bottom:12px;display:flex;align-items:center;gap:8px;font:600 9.5px/1 ui-monospace,Menlo,monospace;letter-spacing:.08em;color:#8fa3ae;text-transform:uppercase;background:#0a1015b3;padding:6px 9px;border-radius:6px}.a3-grad{display:inline-block;width:120px;height:6px;border-radius:3px;background:linear-gradient(90deg,#2f7dff,#5cc8ff 30%,#e6f3f7 56%,#ffb25c 80%,#ff4a2a)}.a3-lo,.a3-hi{text-transform:none}.a3-hint{position:absolute;right:14px;bottom:12px;font-size:11px;color:#6c7f8a}.a3-hud.a3-narrow .a3-title{max-width:100%;right:12px}.a3-hud.a3-narrow .a3-name{font-size:22px}.a3-hud.a3-narrow .a3-panel{top:auto;bottom:44px;left:10px;right:10px}.a3-hud.a3-narrow .a3-hint{display:none}@media (prefers-reduced-motion: reduce){.a3-panel button{transition:none}}.a3-row{cursor:pointer;border-radius:3px}.a3-row:hover{background:#46d3e629}.a3-hover{position:absolute;left:50%;bottom:12px;transform:translate(-50%);font:600 11px/1 ui-monospace,Menlo,monospace;color:#0b1116;background:#6fe3f2;padding:6px 10px;border-radius:99px;pointer-events:none}.gr-panel [data-point]{cursor:pointer}.gr-cmd[hidden],.a3-hover[hidden],.a3-layout[hidden],.a3-grp[hidden],.a3-panel button[hidden]{display:none}.gr-cmd{position:absolute;z-index:40;width:348px;max-width:calc(100% - 16px);max-height:calc(100% - 16px);overflow-y:auto;background:var(--bg-panel);color:var(--fg);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #00000059;padding:8px 10px 10px;display:grid;gap:8px;font-size:12px}.gr-cmd-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.gr-cmd-title{font-weight:700;font-size:13px;letter-spacing:.02em}.gr-cmd-x{background:none;border:0;color:var(--fg-dim);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px}.gr-cmd-row{display:grid;gap:5px;padding-top:7px;border-top:1px solid var(--border)}.gr-cmd-line{display:flex;align-items:baseline;gap:8px}.gr-cmd-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-dim);font-family:ui-monospace,Menlo,monospace;font-size:11px}.gr-cmd-val{font-family:ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums;font-weight:600}.gr-cmd-st{font:600 9.5px/1 ui-monospace,Menlo,monospace;letter-spacing:.06em;padding:3px 5px;border-radius:4px;color:var(--fg-dim);border:1px solid var(--border)}.gr-cmd-st.man{color:#1a1204;background:#ffc15c;border-color:#ffc15c}.gr-cmd-st.bad{color:#fff;background:#d8453a;border-color:#d8453a}.gr-cmd-ctl{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.gr-cmd-ctl button{font-size:11.5px;padding:4px 8px;border-radius:5px;border:1px solid var(--border);background:var(--bg-panel-2);color:var(--fg);cursor:pointer}.gr-cmd-ctl button:hover{border-color:var(--accent, #46d3e6)}.gr-cmd-ctl button:disabled{opacity:.4;cursor:default}.gr-cmd-ctl .gr-cmd-on{color:#1d8a4e;font-weight:700}.gr-cmd-ctl .gr-cmd-off{color:#c2412f;font-weight:700}.gr-cmd-in{width:72px;padding:4px 6px;border-radius:5px;border:1px solid var(--border);background:var(--bg-input);color:var(--fg);font-family:ui-monospace,Menlo,monospace}.gr-cmd-note{font-size:10.5px;color:var(--fg-dim)}.gr-cmd-all{background:var(--bg-panel-2);border-radius:6px;padding:7px 8px;border-top:0}.gr-cmd-all .gr-cmd-name{color:var(--fg);font-weight:600}.a3-layout{display:grid;gap:7px;padding-top:7px;border-top:1px solid #25333d}.a3-panel .a3-more{color:#7fd8e6}.a3-fps{font:500 10px/1 ui-monospace,Menlo,monospace;color:#6c7f8a;margin-left:6px}.a3-thermal{border-color:#5cc8ff8c}.a3-thermal.a3-risk{border-color:#ff6a55;box-shadow:0 0 14px #ff6a5573}.a3-thermal.a3-risk .a3-k,.a3-thermal.a3-risk .a3-v{color:#ff8a78}.a3-tag[hidden]{display:none}.a3-spark{width:56px;height:14px;align-self:center;opacity:.9}.a3-pb{position:absolute;left:50%;bottom:44px;transform:translate(-50%);width:min(760px,calc(100% - 28px));z-index:3;display:flex;align-items:center;gap:10px;background:#0a1015e0;border:1px solid #2b4450;border-radius:12px;padding:8px 12px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#e6f1f5}.a3-pb button,.a3-pb select{font:600 12px/1 system-ui,-apple-system,Segoe UI,sans-serif;color:#0b1116;background:#e9f4f7;border:0;border-radius:7px;padding:7px 10px;cursor:pointer}.a3-pb select{background:#17222a;color:#c7d5dc;border:1px solid #2b3a44}.a3-pb .a3-pb-x{background:#17222a;color:#7fd8e6;border:1px solid #2b3a44}.a3-pb-mid{flex:1;min-width:0;display:grid;gap:4px}.a3-pb-top{display:flex;justify-content:space-between;gap:8px;font:600 10.5px/1.2 ui-monospace,Menlo,monospace;letter-spacing:.06em}.a3-pb-lbl{color:#ffc15c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.a3-pb-time{color:#e6f1f5;white-space:nowrap}.a3-pb-range{width:100%;accent-color:#46d3e6;margin:0}.a3-pb-strip{width:100%;height:18px;border-radius:3px;background:#0e161b}.gr-cmd.gr-cmd-in{animation:grCmdIn .24s cubic-bezier(.2,1.25,.4,1) both}.gr-cmd.gr-cmd-out{animation:grCmdOut .17s ease-in both;pointer-events:none}@keyframes grCmdIn{0%{opacity:0;transform:scale(.15)}to{opacity:1;transform:scale(1)}}@keyframes grCmdOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.15)}}@media (prefers-reduced-motion: reduce){.gr-cmd.gr-cmd-in,.gr-cmd.gr-cmd-out{animation:none}}.gr-trends-btn{font:600 12px/1 system-ui,sans-serif;padding:8px 12px;border-radius:7px;border:1px solid var(--border);background:var(--bg-panel-2);color:var(--fg);cursor:pointer}
