: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;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;height:100%}.tab-bar{display:flex;align-items:stretch;background:var(--bg-panel-2);border-bottom:1px solid var(--border)}.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;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{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 rect{fill:none;stroke:var(--border-bright);stroke-width:1.5}.gr-title{font-size:11px;fill:var(--fg-dim);letter-spacing:1px}.gr-cap{font-size:9px;fill:var(--fg-dim)}.gr-flow{font-size:11px;fill:var(--accent)}.gr-duct{stroke:var(--border-bright);stroke-width:6;stroke-linecap:round}.gr-duct.air{stroke:#2f4a52}.gr-duct.water{stroke:#2f3f52}.gr-coil rect{fill:var(--bg-panel);stroke:var(--border-bright)}.gr-coil path{fill:none;stroke-width:2}.gr-coil.heat path{stroke:var(--red)}.gr-coil.cool path{stroke:var(--accent)}.gr-lamp circle{fill:var(--bg-panel-2);stroke:var(--border-bright);stroke-width:1.5}.gr-lamp.on circle{fill:var(--green);stroke:var(--green);filter:drop-shadow(0 0 4px var(--green))}.gr-lamp.gr-missing circle{stroke-dasharray:2 2;opacity:.5}.gr-fan-housing{fill:var(--bg-panel-2);stroke:var(--border-bright);stroke-width:1.5}.gr-fan .gr-blades path{fill:var(--fg-dim)}.gr-fan .gr-hub{fill:var(--border-bright)}.gr-fan.running .gr-fan-housing{stroke:var(--green)}.gr-blades{transform-box:fill-box;transform-origin:center}.gr-fan.running .gr-blades{animation:gr-spin 1.1s linear infinite}.gr-fan.running .gr-blades path{fill:var(--green)}@keyframes gr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gr-pump-housing{fill:var(--bg-panel-2);stroke:var(--border-bright);stroke-width:1.5}.gr-pump-volute{stroke:var(--border-bright);stroke-width:2;fill:none}.gr-pump .gr-blades path{fill:none;stroke:var(--fg-dim);stroke-width:2;stroke-linecap:round}.gr-pump .gr-hub{fill:var(--border-bright)}.gr-pump.running .gr-pump-housing,.gr-pump.running .gr-pump-volute{stroke:var(--green)}.gr-pump.running .gr-blades path{stroke:var(--green)}.gr-pump.running .gr-blades{animation:gr-spin 1s linear infinite}.gr-sensor rect{fill:var(--bg-panel);stroke:var(--border)}.gr-sensor .gr-lbl{font-size:8px;fill:var(--fg-dim)}.gr-sensor .gr-val{font-size:12px;fill:var(--accent)}.gr-sensor.gr-missing rect{opacity:.4}.gr-mode rect{fill:var(--bg-panel-2);stroke:var(--border-bright)}.gr-mode text{font-size:9px;fill:var(--fg-dim)}.gr-mode.active rect{fill:var(--green-bg);stroke:var(--green)}.gr-mode.active text{fill:var(--green)}.gr-bar .gr-track{fill:var(--bg-input);stroke:var(--border)}.gr-bar .gr-fill{fill:var(--accent)}.gr-damper .gr-fill{fill:var(--accent-2)}.gr-bar .gr-val{font-size:9px;fill:var(--fg)}.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.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 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}}
