.hmi-view #ahu-page{flex:1;display:flex;flex-direction:column;min-width:0}.hmi-view #ahu-toolbar{display:flex;align-items:baseline;gap:12px;padding:8px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.hmi-view #ahu-toolbar .spacer{flex:1}.hmi-view #ahu-title{font-weight:600}.hmi-view #ahu-body{flex:1;min-height:0;display:flex}.hmi-view #ahu-render{flex:1;min-height:0;overflow:auto;padding:16px}.hmi-view #ahu-palette,.hmi-view #ahu-props{width:230px;flex-shrink:0;overflow-y:auto;padding:12px 14px;background:var(--bg-panel);font-size:13px}.hmi-view #ahu-palette{border-right:1px solid var(--border)}.hmi-view #ahu-props{border-left:1px solid var(--border)}.hmi-view #ahu-palette h3,.hmi-view #ahu-props h3{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.hmi-view .ahu-pal-item{display:flex;flex-direction:column;gap:1px;padding:8px 10px;margin-bottom:6px;background:var(--bg);border:1px solid var(--border);border-radius:8px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.hmi-view .ahu-pal-item:hover{border-color:var(--accent)}.hmi-view .ahu-pal-item .dim{font-size:11px}.hmi-view .ahu-prop-title{font-family:ui-monospace,Consolas,monospace;font-size:11px;letter-spacing:.05em;color:var(--accent);margin-bottom:10px}.hmi-view .ahu-prop-field{display:flex;flex-direction:column;gap:3px;margin-bottom:9px;font-size:12px;color:var(--text-dim)}.hmi-view .ahu-prop-field input[type=text],.hmi-view .ahu-prop-field input[type=number],.hmi-view .ahu-prop-field select{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:5px 7px;border-radius:5px;font-size:12px}.hmi-view .ahu-prop-field input[type=checkbox]{align-self:flex-start}.hmi-view .ahu-prop-handle{margin:10px 0;padding:8px;background:var(--bg);border:1px solid var(--border-subtle, var(--border));border-radius:8px}.hmi-view .ahu-prop-handle-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:11px}.hmi-view .ahu-prop-handle-head input{width:76px;font-family:ui-monospace,Consolas,monospace;font-size:11px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:3px 5px;border-radius:4px}.hmi-view .ahu-prop-handle-head span{flex:1}.hmi-view .lab-badge{font-family:ui-monospace,Consolas,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;color:#b06bff;border:1px solid #b06bff;border-radius:5px;padding:2px 8px;background:color-mix(in srgb,#b06bff 12%,transparent)}.hmi-view #lab-source{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:5px 7px;border-radius:5px;font-size:12px;max-width:220px}.hmi-view .ahu-edit-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30}.hmi-view .ahu-edit-cell{position:absolute;border:1px dashed transparent;border-radius:6px;cursor:grab;touch-action:none}.hmi-view .ahu-edit-cell:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.hmi-view .ahu-edit-cell.sel{border:1.5px solid var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.hmi-view .ahu-edit-del{position:absolute;top:-2px;right:-2px;display:none;width:18px;height:18px;padding:0;line-height:1;font-size:10px;border-radius:50%;border:1px solid var(--bad);color:var(--bad);background:var(--bg);cursor:pointer}.hmi-view .ahu-edit-cell:hover .ahu-edit-del,.hmi-view .ahu-edit-cell.sel .ahu-edit-del{display:block}.hmi-view .ahu-edit-indicator{position:absolute;width:3px;background:var(--accent);border-radius:2px;box-shadow:0 0 8px var(--accent);pointer-events:none}.hmi-view .ahu-edit-ghost{position:fixed;z-index:100;pointer-events:none;background:var(--bg-panel);border:1px solid var(--accent);color:var(--text);border-radius:6px;padding:4px 10px;font-size:12px;box-shadow:0 6px 18px #00000080}.hmi-view .ahu-frame{max-width:1220px;margin:auto}.hmi-view .ahu-cutaway .ahu-stage{background:radial-gradient(ellipse at 50% 40%,#1c2b37,#101b26 65%,#0c151e);border:1px solid #2d404f;border-radius:12px}.hmi-view .ahu-cutaway .ahu-head{padding:6px 2px;flex-wrap:wrap}.hmi-view .ahu-cutaway .ahu-seclabel{color:#b8cbd7;letter-spacing:.025em}.hmi-view .ahu-cutaway .ahu-secstate{color:#a9bdcc}.hmi-view .ahu-cutaway .ahu-host{align-items:flex-end}.hmi-view .ahu-cutaway .ahu-fanctl{background:#132330;border-color:#405666;border-radius:6px}.hmi-view .ahu-cutaway .ahu-fanctl .pc{color:#d3e2eb}.hmi-view .ahu-cutaway .ahu-fanctl .ss{background:#203442;border-color:#496170;color:#d3e2eb;border-radius:4px}.hmi-view .ahu-cutaway .ahu-rtd .v{background:#12222e;border-color:#3c5261;box-shadow:none}.hmi-view .ahu-cutaway .ahu-rtd .t{color:#afc3d1}.hmi-view .ahu-instruments{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:1px;background:#2d404f;border:1px solid #2d404f;border-radius:8px;overflow:hidden;margin-top:10px}.hmi-view .ahu-instruments:empty{display:none}.hmi-view .ahu-cutaway .ahu-instruments .ahu-rtd{position:static;transform:none;align-items:flex-start;padding:12px;gap:5px;background:#12202c;min-width:0}.hmi-view .ahu-cutaway .ahu-instruments .t{font:11px/1.4 system-ui,sans-serif;letter-spacing:0;white-space:normal;overflow-wrap:anywhere}.hmi-view .ahu-cutaway .ahu-instruments .v{font:500 16px/1.4 ui-monospace,Consolas,monospace;padding:0;border:0;background:none}@media (prefers-reduced-motion: reduce){.hmi-view .ahu-cutaway .ahu-flow{animation:none;opacity:.18}}.hmi-view .ahu-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.hmi-view .ahu-head .ahu-brand{font-weight:700;font-size:16px}.hmi-view .ahu-head .ahu-sys{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--text-secondary)}.hmi-view .ahu-head .ahu-spacer{margin-left:auto}.hmi-view .ahu-stage{position:relative;width:100%;aspect-ratio:1220/640;border-radius:14px;overflow:hidden;background:linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#30383d;background-size:28px 28px}.hmi-view .ahu-cabinet,.hmi-view #ahu-overlay{position:absolute;top:0;right:0;bottom:0;left:0}.hmi-view .ahu-host{position:absolute;display:flex;align-items:center;justify-content:center;z-index:10}.hmi-view .ahu-host svg{max-width:100%;max-height:100%;height:auto}.hmi-view .ahu-host.fill svg{width:100%;height:100%;max-width:none;max-height:none}.hmi-view .ahu-seclabel{position:absolute;z-index:11;font-family:ui-monospace,Consolas,monospace;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:#d6dde1;white-space:nowrap}.hmi-view .ahu-secstate{position:absolute;z-index:11;font-family:ui-monospace,Consolas,monospace;font-size:9px;white-space:nowrap}.hmi-view .ahu-rtd{position:absolute;z-index:12;display:flex;flex-direction:column;align-items:center;gap:1px;transform:translate(-50%)}.hmi-view .ahu-rtd .v{font-family:ui-monospace,Consolas,monospace;font-size:11px;font-weight:600;color:#eaf3f8;background:#10161ad9;border:1px solid var(--border);border-radius:5px;padding:1px 6px;white-space:nowrap}.hmi-view .ahu-rtd .t{font-family:ui-monospace,Consolas,monospace;font-size:8px;letter-spacing:.08em;color:var(--text-muted)}@keyframes ahu-flow{0%{opacity:.05}50%{opacity:.32}to{opacity:.05}}.hmi-view .ahu-flow{animation:ahu-flow 2.4s linear infinite}.hmi-view .ahu-flow.ahu-flow-off{animation:none;opacity:.07;stroke:var(--text-muted, #7f8c93)}.hmi-view .ahu-fanctl.ahu-noproof{border-color:var(--status-fault, #ff3b30);box-shadow:0 0 0 1px var(--status-fault, #ff3b30) inset}.hmi-view .ahu-pill.noproof{color:var(--status-fault, #ff3b30);background:var(--status-fault-bg, #3a1614);animation:alarm-pulse 1.2s ease-in-out infinite}.hmi-view .ahu-fanctl{position:absolute;z-index:13;transform:translate(-50%);display:flex;align-items:center;gap:6px;background:#10161ae6;border:1px solid var(--border);border-radius:999px;padding:2px 3px 2px 9px;white-space:nowrap}.hmi-view .ahu-fanctl .dot{width:7px;height:7px;border-radius:50%;background:var(--status-stopped, #8a97a0);flex:0 0 auto}.hmi-view .ahu-fanctl .st{font-family:ui-monospace,Consolas,monospace;font-size:10px;font-weight:600}.hmi-view .ahu-fanctl .pc{font-family:ui-monospace,Consolas,monospace;font-size:10px;color:var(--text-secondary);cursor:pointer}.hmi-view .ahu-fanctl .ss{border:1px solid var(--border-strong);background:var(--bg-hover);color:var(--text-secondary);border-radius:999px;padding:2px 9px;font-size:10px;font-weight:600;cursor:pointer}.hmi-view .ahu-fanctl .ss.on{border-color:var(--ok);color:var(--ok)}.hmi-view .ahu-rtd .v.big{font-size:17px;font-weight:700;padding:2px 10px;letter-spacing:.01em}.hmi-view .ahu-occ{position:absolute;z-index:13;transform:translate(-50%);display:flex;align-items:center;gap:6px;background:#10161ae6;border:1px solid var(--border);border-radius:999px;padding:2px 9px;white-space:nowrap}.hmi-view .ahu-occ .dot{width:8px;height:8px;border-radius:50%;background:var(--status-unknown, #8a97a0);flex:0 0 auto}.hmi-view .ahu-occ .lb{font-family:ui-monospace,Consolas,monospace;font-size:9px;font-weight:600;letter-spacing:.06em;color:var(--text-secondary)}.hmi-view .ahu-fanctl.zone-chip{padding:2px 10px}.hmi-view .ahu-fanctl.zone-chip .st{color:var(--text-muted);font-size:9px;letter-spacing:.06em}.hmi-view .ahu-fanctl.zone-chip .pc{font-size:11px;color:var(--text)}.hmi-view .ahu-st{font-family:ui-monospace,Consolas,monospace;font-size:8px;font-weight:700;letter-spacing:.04em;border-radius:999px;padding:0 5px;line-height:13px;white-space:nowrap;margin-top:2px;border:1px solid currentColor;background:#10161ae6}.hmi-view .ahu-fanctl>.ahu-st{margin:0 0 0 2px}.hmi-view .ahu-st.stale{color:var(--status-unknown, #7f8c93)}.hmi-view .ahu-st.offline{color:var(--status-fault, #ff3b30);border-style:dashed}.hmi-view .ahu-st.unbound,.hmi-view .ahu-st.nodata{color:var(--text-muted, #7f8c93);border-style:dotted}.hmi-view .ahu-st.hand{color:var(--status-manual, #b06bff);background:var(--status-manual-bg, #2a1f3d);cursor:pointer}.hmi-view .ahu-st.hand:hover{filter:brightness(1.2)}.hmi-view .ahu-rtd.ahu-stale .v,.hmi-view .ahu-fanctl.ahu-stale{opacity:.6;filter:grayscale(.6)}.hmi-view .ahu-rtd.ahu-stale .v{border-style:dashed;background:repeating-linear-gradient(135deg,#5b666d38 0,#5b666d38 5px,#10161ad9 5px,#10161ad9 10px)}.hmi-view .ahu-rtd.ahu-offline .v,.hmi-view .ahu-fanctl.ahu-offline{color:var(--status-fault, #ff3b30);border-color:var(--status-fault, #ff3b30);border-style:dashed}.hmi-view .ahu-rtd.ahu-unbound .v,.hmi-view .ahu-fanctl.ahu-unbound,.hmi-view .ahu-rtd.ahu-nodata .v,.hmi-view .ahu-fanctl.ahu-nodata{opacity:.5;border-style:dotted}.hmi-view .ahu-rtd.ahu-hand .v,.hmi-view .ahu-fanctl.ahu-hand{outline:2px dashed var(--status-manual, #b06bff);outline-offset:2px}.hmi-view svg.tl-symbol.ahu-stale{filter:grayscale(.85);opacity:.55}.hmi-view svg.tl-symbol.ahu-offline{filter:grayscale(1);opacity:.45}.hmi-view svg.tl-symbol.ahu-unbound,.hmi-view svg.tl-symbol.ahu-nodata{opacity:.35}.hmi-view svg.tl-symbol.ahu-hand{outline:2px dashed var(--status-manual, #b06bff);outline-offset:3px;border-radius:10px}.hmi-view svg.tl-symbol.in-alarm{outline:3px solid var(--al-c);outline-offset:2px;animation:alarm-outline-blink 1s ease-in-out infinite;border-radius:10px}.hmi-view svg.tl-symbol.in-alarm.al-life-safety{animation-duration:.45s}.hmi-view svg.tl-symbol.in-alarm.al-high{animation-duration:.7s}.hmi-view .ahu-rtd.in-alarm .v{color:var(--al-c);border-color:var(--al-c);animation:alarm-pulse 1.2s ease-in-out infinite}.hmi-view .ahu-fanctl.in-alarm{outline:2px solid var(--al-c);outline-offset:2px;animation:alarm-outline-blink 1s ease-in-out infinite}.hmi-view .ahu-secstate.ahu-stale,.hmi-view .ahu-secstate.ahu-offline,.hmi-view .ahu-secstate.ahu-unbound,.hmi-view .ahu-secstate.ahu-nodata{opacity:.5}.hmi-view .ahu-status{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.hmi-view .ahu-pill{font-family:ui-monospace,Consolas,monospace;font-size:10px;font-weight:700;letter-spacing:.03em;padding:2px 8px;border-radius:999px;border:1px solid currentColor;white-space:nowrap;background:#10161a99}.hmi-view .ahu-pill.ok{color:var(--status-running, #3fe08a)}.hmi-view .ahu-pill.alarm{color:var(--status-alarm, #ffb020);background:var(--status-alarm-bg, #3a2c10);animation:alarm-pulse 1.2s ease-in-out infinite}.hmi-view .ahu-pill.hand{color:var(--status-manual, #b06bff);background:var(--status-manual-bg, #2a1f3d)}.hmi-view .ahu-pill.offline{color:var(--status-fault, #ff3b30);background:var(--status-fault-bg, #3a1614)}.hmi-view .ahu-pill.stale{color:var(--status-unknown, #8a97a0)}.hmi-view .ahu-pill.nodata,.hmi-view .ahu-pill.unbound{color:var(--text-muted, #7f8c93)}.hmi-view .equip-badge{font-family:ui-monospace,Consolas,monospace;font-size:9px;font-weight:700;letter-spacing:.06em;padding:1px 6px;border-radius:4px;vertical-align:middle;border:1px solid var(--border-strong);color:var(--text-secondary);background:var(--bg-hover)}.hmi-view .equip-badge.equip-ahu{color:#9cc7e6;border-color:#33628c}.hmi-view .equip-badge.equip-vav{color:#7fe0a8;border-color:#2f7a52}.hmi-view .equip-badge.equip-fcu{color:#c7b3ff;border-color:#5a4a9a}.hmi-view .equip-badge.equip-crac{color:#ffab6b;border-color:#8a5a2a}.hmi-view .equip-badge.equip-hx{color:#7fd6ff;border-color:#2f6a8c}.hmi-view .ahu-cmdpop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080b0d99;z-index:100;display:none;align-items:center;justify-content:center}.hmi-view .ahu-cmdpop.open{display:flex}.hmi-view .ahu-cmdpop .box{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:18px;width:320px}.hmi-view .ahu-cmdpop h3{margin:0 0 2px;font-size:14px}.hmi-view .ahu-cmdpop .sub{color:var(--text-dim);font-size:11px;margin:0 0 10px;line-height:1.4}.hmi-view .ahu-cmdpop .cur{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--text-secondary);margin-bottom:8px}.hmi-view .ahu-cmdpop input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:9px;font-family:ui-monospace,Consolas,monospace;font-size:16px;box-sizing:border-box}.hmi-view .ahu-cmdpop select.enum{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:9px;font-family:ui-monospace,Consolas,monospace;font-size:15px;box-sizing:border-box}.hmi-view .ahu-cmdpop .prio{font-size:12px;color:var(--text-dim);margin:10px 0 0;display:flex;align-items:center;gap:8px}.hmi-view .ahu-cmdpop .prio select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:4px}.hmi-view .ahu-cmdpop .btns{display:flex;gap:8px;margin-top:14px;align-items:center}.hmi-view .ahu-cmdpop .btns button{border:1px solid var(--border-strong);background:var(--bg-hover);color:var(--text);border-radius:6px;padding:9px 14px;font-size:12px;font-weight:600;cursor:pointer}.hmi-view .ahu-cmdpop .btns .go{border-color:var(--ok);color:var(--ok)}.hmi-view .ahu-cmdpop .btns .st{font-size:12px}.hmi-view .ahu-cmdpop .btns .relq{border-color:var(--warn, #ffab6b);color:var(--warn, #ffab6b)}.hmi-view .ahu-cmdpop .verdict{margin-top:12px;padding:9px 10px;border-radius:6px;font-size:12px;line-height:1.45}.hmi-view .ahu-cmdpop .verdict.ok{background:#3fe08a1a;border:1px solid rgba(63,224,138,.45);color:#9ff0c4}.hmi-view .ahu-cmdpop .verdict.warn{background:#ffab6b1a;border:1px solid rgba(255,171,107,.5);color:#ffcda1}.hmi-view #term-page{display:flex;flex-direction:column;height:calc(100vh - 130px);min-height:420px}.hmi-view #term-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.hmi-view #term-bar label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.hmi-view #term-bar input[type=text]{width:180px}.hmi-view #term-bar input[type=number]{width:80px}.hmi-view #term-bar input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:6px 8px;font-family:ui-monospace,Consolas,monospace;font-size:13px}.hmi-view #term-bar .spacer{flex:1}.hmi-view #term-note{font-size:11px;margin-bottom:8px}.hmi-view #term-host-box{flex:1;min-height:0;background:#0b0d10;border:1px solid var(--border);border-radius:8px;padding:8px;overflow:hidden}.hmi-view #term-host-box .xterm,.hmi-view #term-host-box .xterm-viewport,.hmi-view #term-host-box .xterm-screen{height:100%!important}.hmi-view .ahu-map-hint{margin-bottom:10px;font-size:12px}.hmi-view .ahu-automap{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;padding:8px 10px;background:var(--bg-hover);border:1px solid var(--border);border-radius:8px}.hmi-view .ahu-automap select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:5px 7px;font-size:12px;max-width:240px}.hmi-view .ahu-automap .am-status{font-size:11px}.hmi-view .ahu-map-list{max-height:46vh;overflow-y:auto}.hmi-view .ahu-map-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}.hmi-view .ahu-map-row .ahu-map-sym{width:64px;flex-shrink:0;font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--accent)}.hmi-view .ahu-map-row .point-picker{flex:1}.hmi-view .al-life-safety{--al-c: var(--al-life-safety)}.hmi-view .al-high{--al-c: var(--al-high)}.hmi-view .al-medium{--al-c: var(--al-medium)}.hmi-view .al-low{--al-c: var(--al-low)}.hmi-view .al-life-safety .alarm-dot,.hmi-view .alarm-dot.al-life-safety{animation-duration:.5s}@keyframes alarm-pulse{50%{opacity:.25}}.hmi-view .al-cond{white-space:nowrap}.hmi-view .al-value-in{width:76px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:3px 6px;border-radius:4px;font-size:12px;font-family:ui-monospace,Consolas,monospace}@keyframes alarm-outline-blink{50%{outline-color:transparent}}.hmi-view .pw-value.in-alarm{color:var(--al-c);animation:alarm-pulse 1.2s ease-in-out infinite}.hmi-view .pw-value.in-alarm.al-life-safety{animation-duration:.5s}.hmi-view .slot-chip{display:inline-flex;align-items:center;gap:5px;background:var(--bg-hover);border:1px solid var(--border);border-radius:5px;padding:2px 6px;margin-right:6px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.hmi-view{width:100%;height:100%;overflow:auto;padding:14px;box-sizing:border-box;color:var(--text, #d7dae0)}.hmi-view .ahu-frame{width:100%}.hmi-view .gr-empty{color:var(--text-dim, #8a919e)}.hmi-view{display:block;padding:4px;overflow:hidden}.hmi-view .hmi-fit{width:1220px;transform-origin:0 0}
