@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--panel:#eef0ee;--surface:#fff;--ink:#1a2226;--ink-2:#55605f;--muted:#7d8886;--hairline:#d5dad6;--grid:#e6eae6;--strip-bg:#e4e8e4;--supply:#c4432b;--return:#2a6db8;--lamp-good:#0ca30c;--lamp-warn:#fab219;--lamp-bad:#d03b3b;--lamp-off:#c6ccc9;--exhaust:#b98a00;--sans:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace}@media (prefers-color-scheme:dark){:root{--panel:#14181a;--surface:#1d2325;--ink:#e7ebe9;--ink-2:#a9b3b0;--muted:#8a9491;--hairline:#34393b;--grid:#262c2e;--strip-bg:#1a2022;--supply:#e8654a;--return:#5b9bdb;--lamp-good:#2ecc47;--lamp-warn:#ffc94d;--lamp-bad:#ff5c5c;--lamp-off:#4a5250;--exhaust:#d9a334}}*{box-sizing:border-box}body{background:var(--panel);color:var(--ink);font-family:var(--sans);margin:0;font-size:14px;line-height:1.45}h2{letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);margin:0 0 12px;font-size:12px;font-weight:600}a{color:var(--return)}.muted{color:var(--muted)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.splash{height:100vh;font-family:var(--mono);letter-spacing:.3em;color:var(--muted);place-items:center;display:grid}.topbar{background:var(--surface);border-bottom:1px solid var(--hairline);align-items:center;gap:24px;padding:10px 20px;display:flex}.wordmark{align-items:baseline;gap:8px;display:flex}.wordmark-bas2{font-family:var(--mono);letter-spacing:.12em;font-size:17px;font-weight:500}.wordmark-site{color:var(--muted);letter-spacing:.04em;font-size:12px}.nav{flex-wrap:wrap;flex:1;gap:4px;display:flex}.nav a{color:var(--ink-2);border-radius:6px;padding:6px 12px;font-weight:500;text-decoration:none}.nav a:hover{background:var(--panel);color:var(--ink)}.nav a.active{background:var(--ink);color:var(--surface)}.topbar-user{align-items:center;gap:10px;display:flex}.topbar-username{color:var(--muted);font-size:13px}.health-strip{background:var(--strip-bg);border-bottom:1px solid var(--hairline);font-family:var(--mono);color:var(--ink-2);white-space:nowrap;align-items:center;gap:8px;padding:6px 20px;font-size:11.5px;display:flex;overflow-x:auto}.lamp{background:var(--lamp-off);vertical-align:baseline;border-radius:2px;width:9px;height:9px;display:inline-block}.lamp-good{background:var(--lamp-good)}.lamp-warn{background:var(--lamp-warn)}.lamp-bad{background:var(--lamp-bad);box-shadow:0 0 4px #d03b3b8c}.lamp-off{background:var(--lamp-off)}.health-strip-sep{background:var(--hairline);width:1px;height:14px;margin:0 4px}.duc-lamp{align-items:center;gap:3px;display:inline-flex}.duc-lamp-num{color:var(--muted)}.health-strip-alarms{color:var(--supply);margin-left:auto;font-weight:500}.main{max-width:1400px;margin:0 auto;padding:20px}.page{flex-direction:column;gap:16px;display:flex}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:8px;padding:16px}.login-page{place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{background:var(--surface);border:1px solid var(--hairline);border-radius:8px;flex-direction:column;gap:14px;width:100%;max-width:340px;padding:28px;display:flex}.wordmark-login{justify-content:center;margin-bottom:8px}.login-card label{color:var(--ink-2);flex-direction:column;gap:4px;font-size:12px;display:flex}.login-error{color:var(--supply);font-size:13px}input,button{font:inherit}input{border:1px solid var(--hairline);background:var(--surface);color:var(--ink);border-radius:6px;padding:7px 10px}input:focus-visible,button:focus-visible,.point-row:focus-visible{outline:2px solid var(--return);outline-offset:1px}.btn{border:1px solid var(--hairline);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:6px;padding:6px 12px}.btn:hover{background:var(--panel)}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--surface);font-weight:500}.btn-primary:hover{background:color-mix(in srgb, var(--ink) 88%, var(--surface) 12%)}.btn-primary:disabled{opacity:.6;cursor:default}.btn-quiet{color:var(--muted);background:0 0;border:none;padding:4px 6px}.btn-quiet:hover{color:var(--ink);background:var(--panel)}.pin-on{color:var(--supply)}.notice{color:var(--supply);font-size:13px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.tile{border:1px solid var(--hairline);border-radius:8px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.tile-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:500}.tile-name{color:var(--ink-2);font-size:13px}.tile-meta{color:var(--muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.ok-state{color:var(--ink-2)}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--hairline);padding:6px 10px;font-size:11px;font-weight:600}.data-table td{border-bottom:1px solid var(--grid);padding:7px 10px}.data-table tr:last-child td{border-bottom:none}.data-table .num{text-align:left}.alarm-assessment{color:var(--muted);max-width:46ch;font-size:12.5px}.cleared-heading{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:14px 0 4px;font-size:11px;font-weight:600}.cleared-table td{color:var(--muted)}.row-actions{white-space:nowrap;text-align:right}.points-layout{grid-template-columns:320px 1fr;align-items:start;gap:16px;display:grid}.browser{flex-direction:column;max-height:calc(100vh - 120px);display:flex;position:sticky;top:16px}.search{width:100%;margin-bottom:10px}.tree{overflow-y:auto}.tree-node{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:none;border-radius:6px;padding:6px 8px;font-weight:500;display:block}.tree-node:before{content:"▸ ";color:var(--muted)}.tree-node-open:before{content:"▾ "}.tree-node:hover{background:var(--panel)}.tree-node-sub{padding-left:20px;font-weight:400}.tree-count{color:var(--muted);font-size:11px;font-family:var(--mono)}.tree-sys .point-row{padding-left:36px}.point-row{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:5px 8px;display:flex}.point-row:hover,.point-row-selected{background:var(--panel)}.point-chip{border:1px solid var(--hairline);border-radius:3px;flex:none;width:10px;height:10px}.point-row-selected .point-chip{border-color:#0000}.point-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.point-unit{color:var(--muted);font-size:11px;font-family:var(--mono)}.chart-area{flex-direction:column;gap:16px;min-width:0;display:flex}.range-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.btn-range{font-family:var(--mono);padding:5px 10px;font-size:12.5px}.btn-range-active{background:var(--ink);border-color:var(--ink);color:var(--surface)}.btn-range-active:hover{background:var(--ink);color:var(--surface)}.range-custom label{color:var(--ink-2);align-items:center;gap:6px;font-size:12px;display:inline-flex}.csv-link{margin-left:auto;text-decoration:none}.empty-chart{text-align:center;padding:40px 0}a.health-strip-alarms{cursor:pointer;text-decoration:underline}.subscriber-add{gap:8px;max-width:380px;margin-top:10px;display:flex}.subscriber-add input{flex:1}.energy-intro{margin-bottom:12px;font-size:13px}.btn-range .point-chip{border-radius:3px;width:9px;height:9px;display:inline-block}.chart-block{margin-top:8px}.chart-block+.chart-block{border-top:1px solid var(--grid);margin-top:16px;padding-top:12px}.chart-head{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.chart-unit{font-family:var(--mono);color:var(--ink-2);background:var(--panel);border-radius:4px;padding:2px 8px;font-size:12px}.chart-cursor-ts{font-family:var(--mono);color:var(--muted);min-height:1em;font-size:12px}.chart-plot{width:100%}.chart-legend{flex-wrap:wrap;gap:4px 16px;margin-top:8px;font-size:12.5px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-chip{border-radius:3px;width:10px;height:10px;display:inline-block}.legend-label{color:var(--ink-2)}.legend-value{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);min-width:60px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.systems-page{flex-direction:column;gap:16px;display:flex}.sys-tabs{gap:6px;display:flex}.sys-head{flex-wrap:wrap;align-items:baseline;gap:14px;display:flex}.sys-title{margin:0;font-size:19px;font-weight:600}.sys-title small{color:var(--muted);margin-left:8px;font-size:12px;font-weight:400}.sys-ok{font-family:var(--mono);color:var(--lamp-good);font-size:11.5px}.sys-alarm-chip{font-family:var(--mono);color:#fff;background:var(--lamp-bad);border-radius:12px;align-items:center;gap:7px;padding:3px 10px;font-size:11.5px;display:inline-flex}.sys-alarm-dot{background:#fff;border-radius:50%;width:7px;height:7px;animation:1.6s step-end infinite sysblink}@keyframes sysblink{50%{opacity:.25}}.schematic-wrap{margin-top:14px;position:relative;overflow-x:auto}.schematic{width:100%;min-width:760px;height:auto;display:block}svg .sch-duct-casing{stroke:var(--hairline);stroke-width:14px;fill:none}svg .sch-duct{stroke-width:10px;fill:none}svg .sch-flow{stroke:#ffffffd9;stroke-width:2.2px;fill:none;stroke-dasharray:3 15;animation:1.4s linear infinite sch-dash}@keyframes sch-dash{to{stroke-dashoffset:-18px}}svg .sch-flow-thin{stroke-width:1.6px;stroke-dasharray:2 10;animation-name:sch-dash-thin}@keyframes sch-dash-thin{to{stroke-dashoffset:-12px}}svg .sch-pipe{stroke:var(--supply);stroke-width:3px;fill:none;opacity:.55}svg .sch-pipe-active{opacity:1}svg .sch-sym{stroke:var(--ink-2);fill:var(--surface);stroke-width:1.6px}svg .sch-run{fill:var(--lamp-good)}svg .sch-idle{fill:var(--lamp-off)}svg .sch-spin{transform-box:fill-box;transform-origin:50%;animation:2.6s linear infinite sch-spin}@keyframes sch-spin{to{transform:rotate(360deg)}}svg .sch-hatch{stroke:var(--muted);stroke-width:1px;fill:none}svg .sch-damper-blade{stroke:var(--lamp-good);stroke-width:3px}svg .sch-coil-plus{font-family:var(--mono);fill:var(--supply);font-size:20px}svg .sch-coil-minus{font-family:var(--mono);fill:var(--return);font-size:20px}svg .sch-uv{fill:#9b59d0;stroke:var(--ink-2);stroke-width:1.2px}svg .sch-tap{stroke:var(--muted);stroke-width:1.2px;fill:none}svg .sch-lbl{font-family:var(--mono);fill:var(--muted);font-size:11px}svg .sch-room{fill:var(--grid);stroke:var(--hairline)}svg .sch-room-lbl{font-family:var(--sans);fill:var(--ink-2);font-size:13px}svg .sch-chip{cursor:pointer}svg .sch-chip rect{fill:var(--surface);stroke:var(--hairline);filter:drop-shadow(0 1px 1.5px #00000024)}svg .sch-chip:hover rect,.schematic .sch-chip:focus rect{stroke:var(--return)}svg .sch-chip.is-selected rect{stroke:var(--return);stroke-width:1.6px}svg .sch-chip-name{font-family:var(--mono);fill:var(--muted);font-size:10px}svg .sch-chip-val{font-family:var(--mono);fill:var(--ink);font-size:13.5px;font-weight:500}svg .sch-chip-unit{fill:var(--muted);font-size:10.5px}svg .sch-chip-bv{font-family:var(--mono);fill:var(--return);font-size:10px}svg .sch-chip.is-aging .sch-chip-val{fill:var(--ink-2)}svg .sch-chip.is-stale .sch-chip-val{fill:var(--muted)}svg .sch-chip.is-stale rect{stroke-dasharray:3 3}.sys-rail{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:18px;display:grid}.sys-railbox{border:1px solid var(--hairline);border-radius:5px;padding:10px 14px}.sys-railbox h3{letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:10.5px;font-weight:600}.sys-kv{justify-content:space-between;align-items:center;gap:10px;padding:2px 0;font-size:13px;display:flex}.sys-k{color:var(--ink-2)}.sys-v{cursor:pointer;color:var(--ink);background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:13px}.sys-v:hover:not(:disabled){background:var(--panel);color:var(--return)}.sys-v:disabled{cursor:default;color:var(--muted)}.sys-drawer-head{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:4px;display:flex}.sys-drawer-head h2{text-transform:none;letter-spacing:0;font-family:var(--mono);margin:0;font-size:13px}.sys-drawer-head .range-row{margin-left:auto}.sys-foot{font-size:12px}@media (prefers-reduced-motion:reduce){.schematic .sch-spin,.schematic .sch-flow,.sys-alarm-dot{animation:none}}.sys-panel-note{max-width:72ch;margin:10px 0 0;font-size:12.5px}.sys-note{border-top:1px solid var(--hairline);margin-top:18px;padding-top:10px}.sys-note summary{cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:.09em;text-transform:uppercase;width:fit-content;color:var(--muted);font-size:10.5px;font-weight:600}.sys-note summary:hover{color:var(--ink-2)}.sys-note p{max-width:90ch;color:var(--ink-2);margin:8px 0 0;font-size:12.5px}.sys-note .curve-snapshot-badge{margin:0 0 8px;font-size:11.5px}.sys-note .curve-warn{color:var(--supply);max-width:72ch}.shunt-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:14px;display:grid}.shunt-card{border:1px solid var(--hairline);border-radius:5px;padding:12px 14px}.shunt-card h3{margin:0 0 4px;font-size:14px;font-weight:600}.shunt-card svg{width:100%;height:auto;margin:4px 0;display:block}.shunt-row{justify-content:space-between;padding:2px 0;font-size:12.5px;display:flex}.sys-tabs{flex-wrap:wrap;align-items:center;row-gap:8px}.sys-tab-group{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.sys-tab-sep{background:var(--hairline);width:1px;height:22px;margin:0 8px}.sys-tab-grouplbl{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-right:2px;font-size:10px}.curve-warn{color:var(--supply);max-width:72ch;margin:8px 0 0;font-size:12.5px}.curve-snapshot-badge{letter-spacing:.02em;color:var(--muted);background:color-mix(in srgb, var(--return) 12%, var(--surface));border:1px solid var(--hairline);border-radius:5px;margin:0 0 8px;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-block}.curve-editable-badge{letter-spacing:.03em;text-transform:uppercase;color:var(--lamp-good);border:1px solid var(--lamp-good);border-radius:4px;margin-right:8px;padding:1px 6px;font-size:10.5px;font-weight:600;display:inline-block}.curve-legend{color:var(--muted);align-items:center;gap:4px;font-size:11px;display:inline-flex}.curve-legend-swatch{background:var(--return);width:10px;height:2px;margin-left:8px;margin-right:3px;display:inline-block}.curve-legend-orig{background:repeating-linear-gradient(90deg,#9aa39f 0 3px,#0000 3px 5px)}.curve-editor{flex-direction:column;gap:8px;display:flex}.curve-editor-controls{flex-direction:column;gap:6px;display:flex}.curve-editor-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.curve-editor-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;min-width:110px;font-size:11px}.curve-editor-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.curve-editor-group-sep{background:var(--hairline);width:1px;height:18px;margin:0 2px}.curve-editor-shape{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.curve-editor-shape-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.curve-editor-shape-split{justify-content:space-between}.curve-editor-group select,.curve-editor-shape-row select,.curve-editor-exp{border:1px solid var(--hairline);background:var(--panel);color:var(--ink);font-size:12px;font-family:var(--mono);border-radius:6px;padding:5px 6px}.curve-editor-exp{width:52px}.curve-editor-points{flex-wrap:wrap;gap:6px;display:flex}.curve-editor-point{border:1px solid var(--hairline);background:var(--panel);border-radius:6px;flex-direction:column;align-items:center;gap:3px;padding:4px;display:flex}.curve-editor-point input{border:1px solid var(--hairline);background:var(--surface);width:56px;color:var(--ink);font-size:12px;font-family:var(--mono);text-align:center;border-radius:5px;padding:3px 4px}.curve-editor-point-x{color:var(--muted);border-style:dashed!important}.curve-editor-actions{justify-content:flex-start}.curve-editor-changed{color:var(--supply);margin-left:4px;font-size:11.5px}.curve-card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.curve-note{color:var(--muted);margin:6px 0 0;font-size:12.5px}.curve-source{color:var(--muted);margin:2px 0 0;font-size:11px}.curve-edit-btn{margin-top:6px;font-weight:500}.modal-backdrop{z-index:1000;background:#141a1873;justify-content:center;align-items:flex-start;padding:5vh 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-panel{background:var(--surface);border:1px solid var(--hairline);border-radius:10px;flex-direction:column;width:100%;max-width:640px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 12px 40px #00000040}.modal-head{border-bottom:1px solid var(--hairline);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.modal-head h2{margin:0;font-size:16px}.modal-close{padding:4px 8px;font-size:16px;line-height:1}.modal-body{padding:16px;overflow-y:auto}.sch-boiler-on{fill:color-mix(in srgb, var(--lamp-good) 18%, var(--surface))}.sch-boiler-flame{fill:var(--muted);opacity:.35}.sch-boiler-on~.sch-boiler-flame{fill:var(--supply);opacity:1}g:has(.sch-boiler-on) .sch-boiler-flame{fill:var(--supply);opacity:1}.chart-tip{z-index:10;pointer-events:none;white-space:nowrap;background:var(--surface);border:1px solid var(--hairline);font-family:var(--mono);color:var(--ink);border-radius:4px;padding:5px 8px;font-size:11px;line-height:1.5;display:none;position:absolute;top:0;left:0;box-shadow:0 2px 8px #0000002e}.chart-tip-ts{color:var(--muted);display:block}.chart-tip-row{align-items:center;gap:5px;display:flex}.chart-tip-dot{border-radius:50%;flex:none;width:7px;height:7px}.chart-tip-lbl{color:var(--ink-2)}.chart-tip-band{color:var(--muted)}svg .sch-chip-spark{fill:none;stroke:var(--return);stroke-width:1.8px;opacity:.55}svg .sch-chip.is-aging .sch-chip-spark,svg .sch-chip.is-stale .sch-chip-spark{opacity:.3}@media (width<=860px){.topbar{flex-wrap:wrap;gap:2px 10px;padding:6px 12px 0}.topbar-user{flex:none;margin-left:auto}.topbar-username{display:none}.nav{scrollbar-width:none;flex-wrap:nowrap;flex:0 0 calc(100% + 24px);order:3;margin:0 -12px;padding:2px 30px 6px 12px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.nav::-webkit-scrollbar{display:none}.nav a{white-space:nowrap;flex:none;padding:7px 10px}.main{padding:12px}.health-strip{padding:6px 12px}.points-layout{grid-template-columns:1fr}.browser{max-height:320px;position:static}.csv-link{margin-left:0}input,select{font-size:16px}.sys-tabs{flex-direction:column;align-items:stretch;gap:8px}.sys-tab-group{display:flex}.sys-tab-sep{display:none}.sys-tab-grouplbl{width:100%;margin:0}.sys-drawer-head .range-row{margin-left:0}.schematic-wrap:before{content:"← svep i sidled →";width:max-content;font-family:var(--mono);color:var(--muted);padding-bottom:4px;font-size:10.5px;display:block;position:sticky;left:0}}@media (width<=700px){.stack-sm,.stack-sm tbody,.stack-sm tr,.stack-sm td{display:block}.stack-sm thead{display:none}.stack-sm tr{border-bottom:1px solid var(--grid);padding:9px 0}.stack-sm tr:last-child{border-bottom:none}.stack-sm td{border:none;padding:2px 0}.stack-sm td:first-child{font-weight:500}.stack-sm td:empty{display:none}.stack-sm td[data-label]:before{content:attr(data-label);letter-spacing:.07em;text-transform:uppercase;min-width:104px;color:var(--muted);font-size:10px;font-weight:600;display:inline-block}.stack-sm .alarm-assessment{max-width:none}.data-table th,.data-table td{padding:6px 8px}.modal-backdrop{padding:0}.modal-panel{border:none;border-radius:0;max-width:none;height:100dvh;max-height:none}.curve-editor-label{min-width:100%}}@media (pointer:coarse){.btn{min-height:38px}.tree-node,.point-row{min-height:36px}}.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
