.sig-bars{vertical-align:-2px;align-items:flex-end;gap:2px;height:16px;display:inline-flex}.sig-bars i{background:var(--fill-4);border-radius:2px;width:3px;display:block;position:relative;overflow:hidden}.sig-bars i:after{content:"";transform-origin:bottom;transition:transform .34s var(--ease-out);background:currentColor;border-radius:2px;position:absolute;inset:0;transform:scaleY(0)}.sig-bars i.on:after{transform:scaleY(1)}.sig-bars i:first-child{height:35%}.sig-bars i:nth-child(2){height:55%}.sig-bars i:nth-child(3){height:78%}.sig-bars i:nth-child(4){height:100%}.sig-bars i:nth-child(2):after{transition-delay:60ms}.sig-bars i:nth-child(3):after{transition-delay:.12s}.sig-bars i:nth-child(4):after{transition-delay:.18s}.sig-bars.big{gap:4px;height:34px}.sig-bars.big i{border-radius:3px;width:7px}.tone-ok{color:var(--success)}.tone-warn{color:var(--warning)}.tone-bad{color:var(--danger)}.tone-none{color:var(--text3)}.sig-rows{gap:0;margin:0;display:grid}.sig-row{border-top:1px solid var(--glass-border);align-items:center;gap:12px;min-height:40px;display:flex}.sig-row:first-child{border-top:0}.sig-row dt{max-width:55%;color:var(--text2);flex:none;font-size:13px}.sig-row dd{text-align:right;min-width:0;color:var(--text);flex:auto;justify-content:flex-end;align-items:center;gap:8px;margin:0;font-size:14px;display:flex}.sig-row dd span.v{text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sig-hint{background:var(--warning-soft);color:var(--warning-text);border-radius:12px;margin-top:12px;padding:12px 14px;font-size:14px}.sig-note{color:var(--text3);margin-top:10px;font-size:12px;line-height:1.45}.sig-weak{color:var(--warning);vertical-align:-2px;margin-left:6px;display:inline-flex}.role-ic{color:var(--text2);display:inline-flex}.net-svg{width:100%;height:auto;display:block;overflow:visible}.net-link{fill:none;stroke-width:2px;stroke-linecap:round;opacity:.5}.net-link.route{stroke-width:2.5px;opacity:.85}.net-link.neighbor{stroke-dasharray:3 5;opacity:.22;stroke-width:1.5px}.net-link.lit{opacity:1;stroke-width:3.5px}.net-link.dim{opacity:.08}.net-link.draw{stroke-dasharray:1;stroke-dashoffset:1px;animation:net-draw .7s var(--ease-out) forwards}@keyframes net-draw{to{stroke-dashoffset:0}}.net-node{cursor:pointer;animation:net-in .38s var(--ease-out) backwards;outline:none}@keyframes net-in{0%{opacity:0;transform:translateY(6px)scale(.85)}}.net-node .shape{fill:var(--elevated);stroke:var(--divider);stroke-width:1.5px;transition:stroke .16s,filter .2s}.net-node.router .shape{stroke:var(--text3)}.net-node.coordinator .shape{stroke:var(--accent);stroke-width:2.5px;fill:var(--accent-soft)}.net-node .ic{color:var(--text2)}.net-node.coordinator .ic{color:var(--accent-hi)}.net-node text{fill:var(--text);font-size:12px;font-family:var(--font)}.net-node text.sub{fill:var(--text3);font-size:11px}.net-node:hover .shape,.net-node:focus-visible .shape{stroke:var(--accent);filter:drop-shadow(0 0 6px var(--accent))}.net-node.sel .shape{stroke:var(--accent);stroke-width:2.5px;filter:drop-shadow(0 0 9px var(--accent))}.net-node.dim{opacity:.35}.net-node .weak-dot{fill:var(--warning)}.net-pulse{pointer-events:none}.net-pulse.glow{filter:drop-shadow(0 0 6px)drop-shadow(0 0 12px)}.q-low .net-pulse.glow,.q-low .net-node:hover .shape,.q-low .net-node.sel .shape{filter:none}.q-low .net-node{animation:none}.q-low .net-link.draw{stroke-dashoffset:0;stroke-dasharray:none;animation:none}.net-wrap{background:var(--glass-solid);border:1px solid var(--glass-border);border-radius:14px;max-height:min(70vh,900px);padding:8px;overflow:auto}.net-toolbar{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:12px;display:flex}.net-toolbar .meta{color:var(--text2);font-size:13px}.net-legend{color:var(--text2);flex-wrap:wrap;align-items:center;gap:6px 14px;margin:10px 2px 0;font-size:12px;display:flex}.net-legend i{vertical-align:middle;background:currentColor;border-radius:2px;width:18px;height:3px;margin-right:6px;display:inline-block}.net-legend .sym{align-items:center;gap:6px;display:inline-flex}.net-route-line{color:var(--text2);min-height:18px;margin:10px 2px 0;font-size:13px}.net-grid{grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start;gap:16px;display:grid}@media (max-width:900px){.net-grid{grid-template-columns:minmax(0,1fr)}}.range-card .big{align-items:center;gap:14px;margin:6px 0 4px;display:flex}.range-num{font-variant-numeric:tabular-nums;letter-spacing:-1px;font-size:56px;font-weight:600;line-height:1;transition:color .3s}.range-num.bump{animation:range-bump .42s var(--ease-out)}@keyframes range-bump{30%{transform:scale(1.08)}}.range-q{font-size:15px;font-weight:500}.range-meta{color:var(--text2);font-size:13px}.range-chart{width:100%;height:70px;margin-top:10px;display:block}.range-chart path.line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.range-chart path.area{fill:var(--accent-soft);stroke:none}.range-chart line.band{stroke:var(--glass-border);stroke-dasharray:2 4}.range-live{color:var(--success-text);align-items:center;gap:6px;font-size:12px;display:inline-flex}.range-live:before{content:"";background:var(--success);border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite range-blink}@keyframes range-blink{50%{opacity:.25}}.range-select{width:100%}@media (prefers-reduced-motion:reduce){.sig-bars i:after{transition:none}.net-node,.net-link.draw,.range-num.bump,.range-live:before{animation:none}.net-link.draw{stroke-dashoffset:0;stroke-dasharray:none}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/dashboard/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");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{--canvas:#0b0c10;--canvas-2:#12131a;--surface:#22232a;--elevated:#2b2c33;--divider:#34353d;--text:#f5f4ef;--text2:#c4c4cc;--text3:#9d9da8;--accent:#c87855;--accent-hi:#f3b48f;--accent-decor:#d9b48f;--accent-soft:#c8785529;--navy:#1f2a5c;--sky:#8cc4ff;--dawn:#ffb089;--success:#55c78a;--success-soft:#55c78a24;--warning:#f0b44d;--warning-soft:#f0b44d24;--danger:#f97066;--danger-soft:#f9706629;--info:#6fa8dc;--glass:#13141af6;--glass-strong:#13141af5;--glass-border:#ffffff17;--glass-hi:#ffffff21;--r-card:18px;--r-btn:12px;--gap:16px;--nav-w:76px;--top-h:60px;--rail-w:clamp(272px, 17vw, 352px);--right-w:clamp(336px, 22vw, 440px);--view-w:clamp(520px, 46vw, 960px);--font:"Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ease-out:cubic-bezier(.22, 1, .36, 1);--fill-1:#ffffff09;--fill-2:#ffffff0d;--fill-3:#ffffff12;--fill-4:#ffffff1c;--glass-solid:#16171ef7;--shadow:0 20px 50px #00000057;--on-accent:#141416;--accent-hover:#d48662;--success-text:#9be8bd;--warning-text:#f6d08f;--danger-text:#ffb4ad;--scrim:#050507a8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--canvas:#f2f1ec;--canvas-2:#e8e6df;--surface:#fff;--elevated:#fff;--divider:#d8d6d0;--text:#1c1c1e;--text2:#4c4c52;--text3:#66666c;--accent:#9a4f32;--accent-hi:#8a4429;--accent-decor:#a2603c;--accent-soft:#9a4f321f;--success:#176b4a;--success-soft:#176b4a1f;--warning:#8a5700;--warning-soft:#8a57001f;--danger:#b42318;--danger-soft:#b423181a;--info:#2a5b8c;--glass:#fffffff7;--glass-strong:#fffffffa;--glass-border:#14161e1a;--glass-hi:#ffffffe6;--fill-1:#14161e08;--fill-2:#14161e0b;--fill-3:#14161e12;--fill-4:#14161e1f;--glass-solid:#fffffffa;--shadow:0 18px 44px #1e1a1424;--on-accent:#fff;--accent-hover:#84422a;--success-text:#176b4a;--warning-text:#8a5700;--danger-text:#b42318;--scrim:#1e1c1861;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--canvas);color:var(--text);font:400 15px/20px var(--font);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit}.tab{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.shell{position:fixed;inset:0;overflow:hidden}.stage,.scene-layer{z-index:0;position:absolute;inset:0}.scene-layer canvas{touch-action:none;display:block}.scene-loading{position:absolute;inset:0}.scene-bg{background:radial-gradient(1100px 760px at 52% 40%,#c878551a,#0000 62%),radial-gradient(1500px 900px at 50% 118%,#8cc4ff12,#0000 60%),radial-gradient(900px 600px at 8% -10%,#1f2a5c8c,#0000 70%),linear-gradient(#11131a 0%,#0a0b0f 100%);position:absolute;inset:0}.scene-bg.night{background:radial-gradient(1100px 760px at 52% 42%,#c878551f,#0000 62%),radial-gradient(1300px 860px at 50% -12%,#1f2a5cbf,#0000 62%),linear-gradient(#080a10 0%,#050507 100%)}.alert-tint{pointer-events:none;z-index:1;background:radial-gradient(#0000 38%,#b4231866 100%);position:absolute;inset:0}.hud{pointer-events:none;z-index:2;position:absolute;inset:0}.hud>*,.view-layer>*{pointer-events:auto}.view-layer{pointer-events:none;position:absolute;inset:0}.glass{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--r-card);-webkit-backdrop-filter:blur(16px)saturate(135%);box-shadow:0 1px 0 var(--glass-hi) inset, var(--shadow)}.nav{top:var(--gap);left:var(--gap);bottom:var(--gap);width:var(--nav-w);flex-direction:column;align-items:center;gap:10px;padding:14px 0 10px;display:flex;position:absolute}.nav-logo{place-items:center;height:42px;margin-bottom:8px;display:grid}.nav-items{flex-direction:column;gap:6px;width:100%;padding:0 8px;display:flex}.nav-foot{width:100%;margin-top:auto;padding:0 8px}.nav-item{cursor:pointer;width:100%;color:var(--text2);background:0 0;border:0;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:10px 0 8px;transition:color .16s,background .16s;display:flex;position:relative}.nav-item:hover{color:var(--text);background:var(--fill-2)}.nav-item.on{color:var(--text)}.nav-item.small{padding:10px 0}.nav-pill{background:linear-gradient(#c8785557,#c8785529);border:1px solid #c8785573;border-radius:14px;position:absolute;inset:0;box-shadow:0 0 22px #c8785538}.nav-ico{z-index:1;place-items:center;display:grid;position:relative}.nav-label{z-index:1;letter-spacing:.1px;font-size:11px;font-weight:500;position:relative}.nav-dot{background:var(--danger);width:9px;height:9px;box-shadow:0 0 0 2px var(--canvas), 0 0 10px var(--danger);border-radius:50%;position:absolute;top:-3px;right:-5px}.topbar{z-index:5;top:var(--gap);left:calc(var(--gap) * 2 + var(--nav-w));right:var(--gap);height:var(--top-h);align-items:center;gap:12px;padding:0 10px 0 18px;display:flex;position:absolute}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{flex:none;width:30px;height:30px}.brand-name{letter-spacing:.1px;white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.brand-sub{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.home-switch-btn{min-width:0;max-width:320px;color:inherit;cursor:pointer;text-align:left;font:inherit;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:5px 10px 5px 6px;transition:background .15s,border-color .15s;display:flex}.home-switch-btn:hover,.home-switch-btn.active{background:var(--fill-3);border-color:var(--glass-border)}.home-switch-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.home-switch-ic,.home-item-ic{background:var(--fill-3);width:30px;height:30px;color:var(--text2);border-radius:50%;flex:none;place-items:center;display:grid}.home-switch-chev{color:var(--text2);flex:none;place-items:center;transition:transform .18s;display:grid}.home-switch-btn.active .home-switch-chev{transform:rotate(180deg)}.home-menu{z-index:7;background:var(--glass-strong);flex-direction:column;gap:4px;width:320px;max-width:calc(100vw - 32px);max-height:60vh;padding:8px;display:flex;position:absolute;top:52px;left:0;overflow:auto}.home-menu-title{color:var(--text3);letter-spacing:.3px;text-transform:uppercase;padding:6px 10px 4px;font-size:12px;font-weight:600}.home-item{color:inherit;cursor:pointer;text-align:left;font:inherit;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:12px;padding:10px;display:flex}.home-item:hover{background:var(--fill-3)}.home-item.active{border-color:var(--glass-border);background:var(--fill-3)}.home-item.active .home-item-ic{background:var(--accent);color:#fff}.home-item-txt{flex:1;min-width:0}.home-item-txt b{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;display:block;overflow:hidden}.home-item-txt small{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.home-badge{border:1px solid var(--glass-border);color:var(--text3);border-radius:6px;margin-left:6px;padding:0 6px;font-size:11px;font-style:normal}.home-item-check{width:18px;color:var(--accent);flex:none;place-items:center;display:grid}@media (max-width:700px){.brand.home-switch{flex:none}.home-switch-btn>div{display:none}.home-menu{width:calc(100vw - 136px);min-width:240px}}.topbar-spacer{flex:1}.topbar-sep{background:var(--glass-border);width:1px;height:24px}.live-pill{background:var(--success-soft);height:28px;color:var(--success-text);border-radius:999px;align-items:center;gap:7px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.live-pill i{background:var(--success);width:7px;height:7px;box-shadow:0 0 8px var(--success);border-radius:50%}.live-pill.offline{background:var(--warning-soft);color:var(--warning-text)}.live-pill.offline i{background:var(--warning);box-shadow:none}.live-dot{color:var(--text2);align-items:center;gap:8px;font-size:13px;display:inline-flex}.live-dot i{background:var(--success);border-radius:50%;width:8px;height:8px}.clock{color:var(--text);font-size:14px;font-weight:500}.segmented{background:var(--fill-2);border:1px solid var(--glass-border);border-radius:999px;padding:4px;display:inline-flex;position:relative}.segmented button{z-index:1;cursor:pointer;color:var(--text2);background:0 0;border:0;border-radius:999px;padding:7px 16px;font-size:14px;font-weight:500;transition:color .2s;position:relative}.segmented button[aria-selected=true]{color:var(--text)}.segmented .pill{z-index:0;background:linear-gradient(#c8785561,#c8785538);border:1px solid #c8785580;border-radius:999px;position:absolute;inset:4px auto 4px 4px;box-shadow:0 0 22px #c8785538}.segmented.small button{padding:5px 12px;font-size:13px}.segmented button[disabled]{opacity:.45;cursor:not-allowed}.btn{border-radius:var(--r-btn);border:1px solid var(--glass-border);background:var(--fill-2);cursor:pointer;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 14px;font-size:14px;font-weight:500;transition:background .16s,border-color .16s,transform .12s;display:inline-flex}.btn:hover{background:var(--fill-4);border-color:var(--glass-hi)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent);color:var(--on-accent);border-color:#0000;font-weight:600}.btn.primary:hover{background:var(--accent-hover)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--fill-3)}.btn.ghost.active{background:var(--accent-soft);color:var(--accent-hi)}.btn.icon{width:40px;padding:0}.btn[disabled]{opacity:.5;cursor:default}.link-btn{color:var(--accent-hi);letter-spacing:.2px;text-transform:none;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;font-weight:500}.link-btn:hover{text-underline-offset:3px;text-decoration:underline}.pop{z-index:6;background:var(--glass-solid);flex-direction:column;gap:8px;width:290px;padding:12px;display:flex;position:absolute;top:52px;right:0}.pop-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.pop-row b{font-size:14px;font-weight:600;display:block}.pop-row small{color:var(--text3);font-size:12px;display:block}.pop-more{color:var(--text2);cursor:pointer;background:0 0;border:0;align-self:flex-start;align-items:center;gap:6px;padding:2px 0;font-size:12px;display:inline-flex}.pop-note{color:var(--text2);margin:0;font-size:12px;line-height:17px}.rail{top:calc(var(--gap) * 2 + var(--top-h));left:calc(var(--gap) * 2 + var(--nav-w));bottom:var(--gap);width:var(--rail-w);scrollbar-width:none;flex-direction:column;gap:12px;display:flex;position:absolute;overflow:hidden auto}.rail::-webkit-scrollbar{display:none}.card{padding:16px}.card-h{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:12px;font-weight:500;display:flex}.status{text-align:left;cursor:pointer;align-items:center;gap:14px;width:100%;transition:border-color .2s;display:flex;position:relative;overflow:hidden}.status:hover{border-color:var(--glass-hi)}.status-go{color:var(--text3);margin-left:auto;display:grid;transform:rotate(180deg)}.status-orb{flex:none;place-items:center;width:48px;height:48px;display:grid;position:relative}.status-orb .core{background:radial-gradient(circle at 35% 30%,#7de0a9,#2f9e66 70%);border-radius:50%;place-items:center;width:40px;height:40px;display:grid;box-shadow:0 0 0 6px #55c78a1f,0 0 22px #55c78a6b}.status-orb .ring{animation:ring 1.2s var(--ease-out) infinite;border:2px solid #f97066bf;border-radius:50%;position:absolute;inset:0}.status-orb .ring.r2{animation-delay:.6s}.status.alert{background:linear-gradient(#7816108c,#111218b3);border-color:#f9706673}.status.alert .status-orb .core{background:radial-gradient(circle at 35% 30%,#ff9a90,#c4291c 70%);box-shadow:0 0 34px #f97066bf}.status.unknown .status-orb .core{box-shadow:none;background:radial-gradient(circle at 35% 30%,#c9c9cd,#6b6b70 70%)}@keyframes ring{0%{opacity:1;transform:scale(.75)}to{opacity:0;transform:scale(1.45)}}.status-title{font-size:19px;font-weight:600;line-height:24px}.status-sub{color:var(--text2);margin-top:2px;font-size:13px}.status.alert .status-title{color:var(--danger-text)}.gauge-wrap{place-items:center;height:176px;display:grid;position:relative}.gauge-center{flex-direction:column;justify-content:center;align-items:center;padding-top:8px;display:flex;position:absolute;inset:0}.gauge-value{letter-spacing:-1px;font-size:40px;font-weight:600;line-height:44px}.gauge-unit{color:var(--text2);margin-top:2px;font-size:13px}.kpis{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;display:grid}.kpi{background:var(--fill-1);border:1px solid var(--glass-border);border-radius:12px;padding:12px}.kpi-label{color:var(--text2);font-size:12px}.kpi-value{white-space:nowrap;margin-top:2px;font-size:22px;font-weight:600;line-height:28px}.kpi-value.money{color:var(--accent-decor)}.kpi-unit{color:var(--text2);margin-left:5px;font-size:13px;font-weight:500}.consumers{flex-direction:column;gap:10px;display:flex}.consumer{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;margin:-6px -8px;padding:6px 8px;transition:background .16s;display:grid}.consumer:hover{background:var(--fill-2)}.consumer-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.consumer-room{color:var(--text3);font-size:12px}.consumer-w{font-size:14px;font-weight:500}.bar{background:var(--fill-3);border-radius:4px;grid-column:1/-1;height:4px;overflow:hidden}.bar i{background:linear-gradient(90deg, #c8785580, var(--accent));border-radius:4px;height:100%;display:block}.chart{flex:1;min-height:0;margin-top:8px;position:relative}.chart svg{width:100%;height:100%;display:block;overflow:visible}.chart .axis{fill:var(--text3);font-size:11px}.chart .grid{stroke:var(--fill-2)}.chart-tip{background:var(--glass-strong);border:1px solid var(--glass-border);pointer-events:none;white-space:nowrap;border-radius:10px;padding:6px 10px;font-size:12px;position:absolute;transform:translate(-50%,-100%)}.right{top:calc(var(--gap) * 2 + var(--top-h));right:var(--gap);bottom:var(--gap);width:var(--right-w);flex-direction:column;gap:12px;display:flex;position:absolute}.panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.panel-head{align-items:center;gap:10px;padding:16px 16px 8px;display:flex}.panel-title{letter-spacing:-.2px;font-size:21px;font-weight:600;line-height:28px}.panel-sub{color:var(--text2);font-size:13px}.panel-body{scrollbar-width:thin;scrollbar-color:var(--divider) transparent;flex:1;padding:8px 16px 16px;overflow:auto}.chips{flex-wrap:wrap;gap:8px;padding:0 16px 8px;display:flex}.chip{background:var(--fill-2);border:1px solid var(--glass-border);height:28px;color:var(--text2);border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.chip b{color:var(--text);font-weight:600}.dev{cursor:pointer;border:1px solid var(--glass-border);background:var(--fill-1);text-align:left;border-radius:14px;grid-template-columns:38px 1fr auto;align-items:center;gap:6px 12px;width:100%;margin-bottom:8px;padding:12px;transition:background .16s,border-color .2s;display:grid}.dev:hover{background:var(--fill-3);border-color:var(--glass-hi)}.dev.is-confirming{background:#c8785512;border-color:#c878558c}.dev.is-rolledback{background:var(--warning-soft);border-color:#f0b44d99}.dev.is-alert{background:var(--danger-soft);border-color:#f9706699}.dev.is-offline{opacity:.72;border-style:dashed}.dev-icon{background:var(--fill-3);width:38px;height:38px;color:var(--text2);border-radius:11px;place-items:center;display:grid}.dev-icon.on{background:var(--accent-soft);color:var(--accent-hi);box-shadow:0 0 18px #c8785538}.dev-icon.alert{background:var(--danger-soft);color:var(--danger)}.dev-icon.ok{color:var(--success)}.dev-name{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:500;overflow:hidden}.dev-sub{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;font-size:13px;display:flex;overflow:hidden}.dev-sub.alert{color:var(--danger)}.dev-state{grid-column:2/4;align-items:center;gap:8px;display:flex}.dev-spark{grid-column:1/4;width:100%;height:24px}.state-badge{letter-spacing:.1px;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;height:22px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.state-badge.ok{background:var(--success-soft);color:var(--success-text)}.state-badge.pending{background:var(--accent-soft);color:var(--accent-hi)}.state-badge.rollback{background:var(--warning-soft);color:var(--warning-text)}.state-badge.muted{background:var(--fill-3);color:var(--text2)}.spin-dot{border:2px solid #f3b48f59;border-top-color:var(--accent-hi);border-radius:50%;width:10px;height:10px;animation:.8s linear infinite spin}.toggle{cursor:pointer;background:var(--fill-4);width:48px;height:28px;transition:background .2s var(--ease-out);border:0;border-radius:999px;flex:none;position:relative}.toggle.on{background:var(--accent);box-shadow:0 0 16px #c8785566}.toggle .knob{width:22px;height:22px;transition:transform .22s var(--ease-out);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #00000059}.toggle.pending{opacity:.6}.toggle[disabled]{opacity:.4;cursor:default}.toggle .spin{border:2px solid #0000;border-top-color:var(--accent);border-radius:999px;animation:.8s linear infinite spin;position:absolute;inset:-4px}@keyframes spin{to{transform:rotate(360deg)}}.rollback{color:var(--warning);font-size:12px}.big-value{letter-spacing:-1.5px;font-size:52px;font-weight:600;line-height:58px}.big-unit{color:var(--text2);letter-spacing:0;margin-left:6px;font-size:20px}.state-line{color:var(--text2);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:13px;display:flex}.section-h{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;align-items:baseline;gap:10px;margin:18px 0 10px;font-size:12px;font-weight:500;display:flex}.section-note{color:var(--text3);text-transform:none;letter-spacing:0;font-weight:400}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline li{padding:0 0 12px 22px;font-size:13px;position:relative}.timeline li:before{content:"";background:var(--divider);width:1px;position:absolute;top:6px;bottom:-6px;left:5px}.timeline li:last-child:before{display:none}.timeline li i{background:var(--surface);border:2px solid var(--text3);border-radius:50%;width:11px;height:11px;position:absolute;top:3px;left:0}.timeline li.on i{border-color:var(--accent)}.timeline li.alert i{border-color:var(--danger);background:var(--danger)}.timeline li.ok i{border-color:var(--success)}.timeline .t{color:var(--text3);margin-right:8px}.alerts-list{flex-direction:column;gap:2px;display:flex}.alert-row{border-bottom:1px solid var(--fill-1);grid-template-columns:10px 1fr auto;align-items:baseline;gap:10px;padding:8px 0;font-size:14px;display:grid}.alert-row:last-child{border-bottom:0}.alert-row .dot{background:var(--text3);border-radius:50%;width:8px;height:8px;transform:translateY(-1px)}.alert-row.alert .dot{background:var(--danger);box-shadow:0 0 10px var(--danger)}.alert-row.ok .dot{background:var(--success)}.alert-row.fail .dot{background:var(--danger)}.alert-row .sub{color:var(--text2);grid-column:2;font-size:12px}.alert-row .when{color:var(--text3);font-size:12px}.empty{color:var(--text2);padding:6px 0;font-size:14px}.rooms-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.room-tile{text-align:left;border:1px solid var(--glass-border);background:var(--fill-1);cursor:pointer;border-radius:12px;padding:10px 12px;transition:background .16s,border-color .16s}.room-tile:hover{background:#c878551a;border-color:#c8785559}.room-tile b{font-size:14px;font-weight:500;display:block}.room-tile span{color:var(--text2);font-size:12px}.room-hud{bottom:var(--gap);left:calc(var(--gap) * 3 + var(--nav-w) + var(--rail-w));right:calc(var(--gap) * 2 + var(--right-w));width:max-content;max-width:calc(100% - var(--gap) * 5 - var(--nav-w) - var(--rail-w) - var(--right-w));scrollbar-width:none;border-radius:16px;gap:6px;margin:0 auto;padding:6px;display:flex;position:absolute;overflow-x:auto}.room-hud::-webkit-scrollbar{display:none}.hud-room{cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;flex-direction:column;flex:none;align-items:flex-start;gap:1px;min-width:92px;padding:7px 12px;transition:background .16s,border-color .16s;display:flex}.hud-room:hover{background:var(--fill-3)}.hud-room b{white-space:nowrap;font-size:13px;font-weight:600}.hud-room span{color:var(--text2);align-items:center;gap:8px;min-height:16px;font-size:12px;display:flex}.hud-room em{color:var(--accent-hi);align-items:center;gap:4px;font-style:normal;display:inline-flex}.hud-room em i{background:var(--accent);width:6px;height:6px;box-shadow:0 0 6px var(--accent);border-radius:50%}.hud-room.sel{background:var(--accent-soft);border-color:#c8785580}.hud-room.alert{background:var(--danger-soft);border-color:#f97066b3}.hud-room.alert b{color:var(--danger-text)}.view-panel{top:calc(var(--gap) * 2 + var(--top-h));right:var(--gap);bottom:var(--gap);width:var(--view-w);animation:view-in .42s var(--ease-out) both;flex-direction:column;display:flex;position:absolute;overflow:hidden}@keyframes view-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.view-head{justify-content:space-between;align-items:center;gap:16px;padding:20px 22px 6px;display:flex}.view-title{letter-spacing:-.4px;font-size:26px;font-weight:600;line-height:32px}.view-sub{color:var(--text2);align-items:center;gap:8px;margin-top:2px;font-size:13px;display:flex}.view-sub.alert{color:var(--danger-text)}.tone-dot{background:var(--success);width:8px;height:8px;box-shadow:0 0 8px var(--success);border-radius:50%}.tone-dot.alert{background:var(--danger);box-shadow:0 0 8px var(--danger)}.tone-dot.unknown{background:var(--text3);box-shadow:none}.view-body{scrollbar-width:thin;scrollbar-color:var(--divider) transparent;flex:1;min-height:0;padding:10px 22px 22px;overflow:auto}.card-flat{background:var(--fill-1);border:1px solid var(--glass-border);border-radius:16px;padding:16px}.card-flat .section-h{margin-top:0}.safety-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.safety-col{flex-direction:column;gap:14px;min-width:0;display:flex}.valve-card{border:1px solid var(--glass-border);background:linear-gradient(160deg,#55c78a29,#ffffff05 60%);border-radius:18px;flex-wrap:wrap;align-items:center;gap:16px;padding:20px;display:flex;position:relative}.valve-card.closed{background:linear-gradient(160deg,#f0b44d38,#ffffff05 60%);border-color:#f0b44d80}.valve-card.unknown{background:var(--fill-1);border-style:dashed}.valve-icon{width:60px;height:60px;color:var(--success-text);background:#55c78a2e;border-radius:18px;flex:none;place-items:center;display:grid}.valve-card.closed .valve-icon{color:var(--warning-text);background:#f0b44d33}.valve-card.unknown .valve-icon{background:var(--fill-3);color:var(--text3)}.valve-label{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;font-size:12px;font-weight:500}.valve-state{letter-spacing:-.5px;font-size:30px;font-weight:700;line-height:36px}.valve-sub{color:var(--text2);margin-top:2px;font-size:13px}.valve-note{color:var(--text2);background:#00000038;border-radius:12px;flex-basis:100%;margin:0;padding:10px 12px;font-size:13px;line-height:18px}.sensor-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.sensor{border:1px solid var(--glass-border);background:var(--fill-1);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:10px;min-width:0;padding:10px 12px;transition:background .16s,border-color .16s;display:flex}.sensor:hover{background:var(--fill-3)}.sensor b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;display:block;overflow:hidden}.sensor small{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.sensor-text{flex:1;min-width:0}.sensor-ico{background:var(--success-soft);width:32px;height:32px;color:var(--success-text);border-radius:10px;flex:none;place-items:center;display:grid}.sensor.alert{background:var(--danger-soft);border-color:#f97066b3}.sensor.alert .sensor-ico{background:var(--danger);color:#2a0806}.sensor.alert small{color:var(--danger-text)}.sensor.off{border-style:dashed}.sensor.off .sensor-ico{background:var(--fill-3);color:var(--text3)}.battery{color:var(--text3);margin-left:auto;font-size:11px}.battery.low{color:var(--warning)}.timeline-card{min-width:0}.tl-day+.tl-day{margin-top:12px}.tl-date{color:var(--text3);margin-bottom:6px;font-size:12px;font-weight:600}.tl{margin:0;padding:0;list-style:none}.tl li{grid-template-columns:44px 1fr;gap:10px;padding:0 0 12px 20px;font-size:13px;display:grid;position:relative}.tl li:before{content:"";background:var(--divider);width:1px;position:absolute;top:8px;bottom:-4px;left:5px}.tl li:last-child:before{display:none}.tl li i{background:var(--surface);border:2px solid var(--text3);border-radius:50%;width:11px;height:11px;position:absolute;top:3px;left:0}.tl li.alert i,.tl li.fail i{border-color:var(--danger);background:var(--danger)}.tl li.ok i{border-color:var(--success);background:var(--success)}.tl-t{color:var(--text3)}.tl-body small{color:var(--text2);margin-top:1px;font-size:12px;display:block}.kpi-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.kpi.big{padding:14px 16px}.kpi.big .kpi-value{letter-spacing:-.5px;font-size:28px;line-height:34px}.energy-chart{height:clamp(180px,26vh,320px);margin-top:12px;padding:4px 0 0;display:flex}.per-device{flex-direction:column;gap:6px;display:flex}.pd-row{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:center;gap:14px;padding:9px 10px;transition:background .16s;display:grid}.pd-row:hover{background:var(--fill-2)}.pd-name{min-width:0;color:var(--text2);align-items:center;gap:10px;display:flex}.pd-name>span{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.pd-name small{color:var(--text3);font-size:12px;display:block}.pd-bar{background:var(--fill-3);border-radius:6px;height:6px;overflow:hidden}.pd-bar i{background:linear-gradient(90deg, #c8785573, var(--accent));transform-origin:0;height:100%;transition:transform .5s var(--ease-out);border-radius:6px;display:block}.pd-val{text-align:right;white-space:nowrap;font-size:14px;font-weight:600}.pd-val small{color:var(--text3);font-size:12px;font-weight:400;display:block}.incident-slot{top:calc(var(--gap) * 2 + var(--top-h));left:calc(var(--gap) * 3 + var(--nav-w) + var(--rail-w));right:calc(var(--gap) * 2 + var(--right-w));pointer-events:none;z-index:4;justify-content:center;display:flex;position:absolute}.view-wide .incident-slot{left:calc(var(--gap) * 2 + var(--nav-w));right:calc(var(--gap) * 2 + var(--view-w))}.incident{pointer-events:auto;background:linear-gradient(#781610eb,#3c0c0aeb);border:1px solid #f970668c;border-radius:20px;width:min(560px,100%);padding:18px 20px;box-shadow:0 0 0 1px #f9706626,0 0 60px #f9706652,0 30px 80px #00000080}.incident-head{align-items:center;gap:14px;display:flex}.incident-icon{color:#2a0806;background:#f97066;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;display:grid;position:relative}.incident-icon:after{content:"";opacity:0;border:2px solid #f97066b3;border-radius:50%;position:absolute;inset:-6px}.incident.live .incident-icon:after{animation:ring 1.2s var(--ease-out) infinite}.incident-title{color:#fff;font-size:22px;font-weight:700;line-height:26px}.incident-sub{color:#ffd3cf;font-size:14px}.incident-steps{flex-direction:column;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.incident-steps li{color:#fff;background:#00000038;border-radius:12px;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;padding:8px 10px;font-size:14px;display:grid}.incident-steps li .ico{border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:grid}.incident-steps li.alert .ico{color:#2a0806;background:#f97066}.incident-steps li.ok .ico{color:#08210f;background:#55c78a}.incident-steps li.fail .ico{color:#b42318;background:#fff}.incident-steps li.info .ico{background:#fff3}.incident-steps li.wait .ico{border:2px solid #ffffff80;border-top-color:#0000;animation:.9s linear infinite spin}.incident-steps .d,.incident-steps .t{color:#ffd3cf;font-size:12px}.badge-local{color:var(--success-text);background:#55c78a29;border-radius:999px;align-items:center;gap:6px;margin-top:12px;padding:4px 10px;font-size:12px;font-weight:500;display:inline-flex}.incident .badge-local{color:#9be8bd;background:#08210f73}.demo-menu{z-index:5;background:var(--glass-strong);flex-direction:column;gap:4px;width:260px;padding:8px;display:flex;position:absolute;top:52px;right:0}.demo-item{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.demo-item:hover{background:var(--fill-3)}.demo-item small{color:var(--text3);font-size:12px;display:block}.demo-item .sw{border-radius:50%;flex:none;width:10px;height:10px}.tag{white-space:nowrap;border:1px solid var(--fill-4);color:var(--text);pointer-events:none;font-variant-numeric:tabular-nums;background:#101012db;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600;transform:translate(-50%,-100%)}.tag.on{color:#ffd9c6;border-color:#c8785599}.tag.alert{color:#fff;background:#b42318e6;border-color:#f97066}.tag.cool{color:#cfe3ff}.room-tag{letter-spacing:.6px;text-transform:uppercase;color:#ffffffc7;text-shadow:0 1px 8px #000c;pointer-events:none;white-space:nowrap;font-size:12px;font-weight:600;transform:translate(-50%,-50%)}.room-tag.sel{color:#ffd9c6}.login{background:radial-gradient(900px 600px at 70% 20%, #c878552e, transparent 60%), radial-gradient(900px 700px at 10% 100%, #6fa8dc1a, transparent 60%), var(--canvas);place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow:hidden}.login-card{z-index:1;width:min(420px,100%);padding:32px;position:relative}.login h1{letter-spacing:-.4px;margin:18px 0 4px;font-size:28px;font-weight:600;line-height:34px}.login p{color:var(--text2);margin:0 0 22px;font-size:14px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text2);font-size:13px}.field input{border-radius:var(--r-btn);border:1px solid var(--divider);background:var(--fill-1);height:48px;color:var(--text);font:inherit;padding:0 14px;font-size:16px;transition:border-color .16s,box-shadow .16s}.field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #c8785540}.pw{position:relative}.pw input{width:100%;padding-right:48px}.pw button{width:40px;height:40px;color:var(--text2);cursor:pointer;background:0 0;border:0;border-radius:10px;position:absolute;top:4px;right:4px}.login .btn.primary{width:100%;height:48px;margin-top:6px;font-size:15px}.login-or{color:var(--text-3,#8a8a8a);align-items:center;gap:12px;margin:14px 0 10px;font-size:12px;display:flex}.login-or:before,.login-or:after{content:"";opacity:.35;background:currentColor;flex:1;height:1px}.login .btn.apple{color:#000;background:#fff;border-color:#fff;border-radius:20px;justify-content:center;align-self:center;align-items:center;gap:8px;width:100%;max-width:400px;height:40px;font-size:15px;font-weight:600;display:inline-flex}.login .btn.apple:hover{background:#e8e8ed}:root[data-theme=light] .login .btn.apple{color:#fff;background:#000;border-color:#000}:root[data-theme=light] .login .btn.apple:hover{background:#1c1c1e}.login .login-social{flex-direction:column;gap:10px;display:flex}.login .gsi-host{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;justify-content:center;min-height:40px}.login .gsi-host iframe{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.login-err{color:var(--danger);min-height:18px;margin-top:10px;font-size:13px}.login-links{justify-content:space-between;margin-top:18px;font-size:13px;display:flex}.login-links a{color:var(--accent);text-decoration:none}.login-links a:hover{text-decoration:underline}.login-art{pointer-events:none;opacity:.5;position:absolute;inset:0}.oauth-card{width:min(480px,100%);max-height:calc(100dvh - 32px);overflow-y:auto}.login .oauth-card h1{margin:14px 0 4px;font-size:22px;line-height:28px}.oauth-card h2{text-transform:uppercase;letter-spacing:.4px;color:var(--text2);margin:18px 0 6px;font-size:13px;font-weight:600}.login .oauth-card p{color:var(--text);margin:0 0 6px}.login .oauth-card .oauth-host,.login .oauth-card .oauth-never{color:var(--text2);font-size:13px}.oauth-message{margin-top:16px!important}.oauth-homes{margin:0;padding-left:18px;font-size:14px}.oauth-homes li{margin:2px 0}.oauth-control{background:var(--accent-soft);cursor:pointer;border-radius:12px;align-items:flex-start;gap:10px;margin:18px 0 4px;padding:12px;display:flex}.oauth-control input{accent-color:var(--accent);margin-top:3px}.oauth-control span{flex-direction:column;gap:4px;font-size:14px;display:flex}.oauth-control small{color:var(--text2);font-size:12px;line-height:16px}.oauth-actions{gap:10px;margin-top:18px;display:flex}.oauth-actions .btn{flex:1;height:46px;margin-top:0}.login .oauth-actions .btn.primary{margin-top:0}.login .oauth-card .oauth-disclosure{color:var(--text2);margin-top:4px;font-size:13px;line-height:1.45}.login .oauth-card .oauth-disclosure a{color:inherit;text-decoration:underline}.login .oauth-card .oauth-revoke{color:var(--text2);margin-top:6px;font-size:12px}.loading{color:var(--text2);background:var(--canvas);place-items:center;display:grid;position:fixed;inset:0}.spinner{border:3px solid var(--fill-4);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite spin}.fps{color:var(--text3);font-size:11px;position:absolute;bottom:248px;left:50%;transform:translate(-50%)}.hint{color:var(--text3);letter-spacing:.3px;pointer-events:none;white-space:nowrap;font-size:12px;position:absolute;bottom:250px;left:50%;transform:translate(-50%)}@media (min-width:2200px){:root{--gap:20px;--top-h:64px}body{font-size:16px}}@media (max-width:1440px){:root{--nav-w:68px;--rail-w:268px;--right-w:340px}.gauge-wrap{height:160px}.gauge-value{font-size:34px}}@media (max-width:1280px){:root{--rail-w:252px;--right-w:320px;--view-w:calc(100vw - var(--nav-w) - var(--gap) * 3 - 220px)}.hide-sm,.clock{display:none}.safety-grid{grid-template-columns:1fr}}@media (max-width:1100px){.rail{display:none}.room-hud{left:calc(var(--gap) * 2 + var(--nav-w));max-width:calc(100% - var(--gap) * 4 - var(--nav-w) - var(--right-w))}.brand-sub{display:none}:root{--view-w:calc(100vw - var(--nav-w) - var(--gap) * 3)}.incident-slot{left:calc(var(--gap) * 2 + var(--nav-w))}.view-wide .incident-slot{right:var(--gap);top:auto;bottom:var(--gap)}.hint,.fps{display:none}}.q-low .glass{-webkit-backdrop-filter:none;background:var(--glass-strong)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation:none!important}}.label-layer{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.label-anchor{will-change:transform;position:absolute;top:0;left:0}.holo{text-align:center;white-space:nowrap;pointer-events:none;animation:holo-in .7s var(--ease-out) both;background:linear-gradient(#7846329e,#141418c7);border:1px solid #ffbe9659;border-radius:12px;padding:7px 12px 8px;position:relative;transform:translate(-50%,-50%);box-shadow:0 0 24px #c8785540,inset 0 1px #ffffff2e}.holo:after{content:"";background:linear-gradient(#ffbe9699,#0000);width:1px;height:14px;position:absolute;bottom:-14px;left:50%}.holo-name{letter-spacing:.8px;text-transform:uppercase;color:#fff;text-shadow:0 0 10px #ffaa78b3;font-size:12px;font-weight:600}.holo-meta{color:#ffd9c6;margin-top:1px;font-size:12px}.holo.compact{-webkit-backdrop-filter:none;backdrop-filter:none;background:#121318d1;border-color:#ffffff2e;border-radius:8px;padding:4px 9px;box-shadow:0 4px 12px #00000059}.holo.compact:after{display:none}.holo.compact .holo-name{color:#fff;text-shadow:none;font-size:11px}:root[data-theme=light] .holo.compact{background:#ffffffeb;border-color:#14161e2e;box-shadow:0 3px 10px #1e1a142e}:root[data-theme=light] .holo.compact .holo-name{color:#1c1c1e}:root[data-theme=light] .holo.compact.sel .holo-name{color:var(--accent)}.view-shift .scene-layer{-webkit-mask-image:linear-gradient(270deg,#0000 0,#000 220px);mask-image:linear-gradient(270deg,#0000 0,#000 220px)}.holo.sel .holo-name{color:#ffd9c6}.holo.alert{background:linear-gradient(#f9706673,#3c0a0899);border-color:#f97066cc;box-shadow:0 0 30px #f970668c}@keyframes holo-in{0%{opacity:0;transform:translate(-50%,-30%)scale(.92)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.collapsed .rail{transform:translateX(calc(-1 * var(--rail-w) - 120px));opacity:0;pointer-events:none}.collapsed .right,.collapsed .view-panel{transform:translateX(calc(var(--view-w) + 40px));opacity:0;pointer-events:none}.collapsed .room-hud{opacity:0;pointer-events:none;transform:translateY(120px)}.collapsed .nav{opacity:0;pointer-events:none;transform:translate(-120px)}.rail,.right,.room-hud,.nav,.view-panel{transition:transform .52s var(--ease-out), opacity .42s ease}:root{--pin-off-bg:#2a2d36;--pin-off-fg:#f4f4f7;--pin-ring:#ffffffeb;--pin-on-bg:linear-gradient(180deg, #f6b98c, #d27d50);--pin-on-fg:#2a1309;--pin-ok-bg:#23885a;--pin-ok-fg:#fff;--pin-alert-bg:#d92d20;--pin-alert-fg:#fff;--pin-offline-bg:#4a4b53;--pin-offline-fg:#d6d6dc;--pin-shadow:0 4px 12px #00000073}:root[data-theme=light]{--pin-off-bg:#fff;--pin-off-fg:#24252b;--pin-ring:#24252bc7;--pin-ok-bg:#1d7a51;--pin-offline-bg:#e4e3de;--pin-offline-fg:#55555b;--pin-shadow:0 3px 10px #1e1a1447}.label-anchor.is-chip{z-index:5}.chip3d,.pin{pointer-events:auto;cursor:pointer;background:var(--pin-off-bg);min-width:34px;height:34px;color:var(--pin-off-fg);border:2px solid var(--pin-ring);box-shadow:var(--pin-shadow);font:700 12px/1 var(--font);font-variant-numeric:tabular-nums;white-space:nowrap;transition:transform .14s var(--ease-out), box-shadow .2s ease;border-radius:999px;justify-content:center;align-items:center;gap:5px;padding:0 8px;display:inline-flex;position:relative}.chip3d{transform:translate(-50%,-50%)}.chip3d:hover,.chip3d:focus-visible{z-index:3;transform:translate(-50%,-50%)scale(1.12)}.chip3d.on,.pin.on{background:var(--pin-on-bg);color:var(--pin-on-fg);box-shadow:0 0 16px #d27d5099, var(--pin-shadow);border-color:#fff3e8}.chip3d.ok,.pin.ok{background:var(--pin-ok-bg);color:var(--pin-ok-fg)}.chip3d.alert,.pin.alert{background:var(--pin-alert-bg);color:var(--pin-alert-fg);box-shadow:0 0 18px #f97066bf, var(--pin-shadow);border-color:#ffd3cf}.chip3d.offline,.pin.offline{background:var(--pin-offline-bg);color:var(--pin-offline-fg);box-shadow:none;border-style:dashed}.chip3d.alert:before,.pin.alert:not(.static):before{content:"";animation:ring 1.1s var(--ease-out) infinite;pointer-events:none;border:2px solid #f97066e6;border-radius:999px;position:absolute;inset:-4px}.chip3d.pending:after,.pin.pending:after{content:"";border:2px solid #0000;border-top-color:var(--accent);border-right-color:var(--accent);pointer-events:none;border-radius:999px;animation:.8s linear infinite spin;position:absolute;inset:-6px}.pin.static.pending:after{animation:none}.chip-count,.pin-count{background:var(--pin-ring);min-width:18px;height:18px;color:var(--pin-off-bg);border-radius:999px;place-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-grid}.chip3d.on .chip-count,.pin.on .pin-count{color:#fff;background:#2a1309d9}.chip-value{font-size:12px}.pin-tip{background:var(--glass-solid);border:1px solid var(--divider);min-width:120px;max-width:280px;box-shadow:var(--shadow);color:var(--text);text-align:left;white-space:normal;pointer-events:none;z-index:10;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 11px;display:none;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)}.pin-tip b{font-size:13px;font-weight:600;line-height:17px}.pin-tip small{color:var(--text2);font-size:12px;font-weight:500;line-height:16px}.chip3d:hover .pin-tip,.chip3d:focus-visible .pin-tip,.pin:hover .pin-tip,.pin:focus-visible .pin-tip{display:flex}:root{--plan-slab:#0b0c0f;--plan-room:#17191e;--plan-room-hover:#20232a;--plan-hall:#1f2128;--plan-stairs:#252830;--plan-terrace:#141b17;--plan-lit:#221e19;--plan-sel:#33261f;--plan-alert:#4d1f1b;--plan-glow:#ffb45a;--plan-glow-a:.32;--plan-wall:#ecebe6;--plan-wall-int:#bdbbb4;--plan-window:#8cc4ff;--plan-rail:#8ab8a0;--plan-door:#9c9ca6;--plan-label:#f5f4ef;--plan-meta:#d0d0d6}:root[data-theme=light]{--plan-slab:#bdb8ac;--plan-room:#e6e2d8;--plan-room-hover:#dedad0;--plan-hall:#d9d4c8;--plan-stairs:#cec8bb;--plan-terrace:#d8e3da;--plan-lit:#eadcc4;--plan-sel:#e6d0c0;--plan-alert:#f2cdc8;--plan-glow:#ffa733;--plan-glow-a:.42;--plan-wall:#26272c;--plan-wall-int:#45464d;--plan-window:#2a6fb3;--plan-rail:#3c7a5a;--plan-door:#5e5e66;--plan-label:#1c1c1e;--plan-meta:#45454b}.plan-layer{position:absolute;inset:0}.plan-layer[hidden]{display:none}.plan2d{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.plan2d:active{cursor:grabbing}.plan2d:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);border-radius:0;outline:none}.plan2d-svg{width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.p-slab{fill:var(--plan-slab)}.p-room{fill:var(--plan-room);cursor:pointer;outline:none;transition:fill .16s}.p-room:hover{fill:var(--plan-room-hover)}.p-room.terrace{fill:var(--plan-terrace)}.p-room.hall{fill:var(--plan-hall)}.p-room.hall:hover{fill:var(--plan-room-hover)}.p-lit-layer{pointer-events:none}.p-lit{animation:.2s ease-out plan-lit-in}.p-lit-flat{fill:var(--plan-lit);fill-opacity:.75}.p-glow-0{stop-color:var(--plan-glow);stop-opacity:var(--plan-glow-a)}.p-glow-1{stop-color:var(--plan-glow);stop-opacity:calc(var(--plan-glow-a) * .45)}.p-glow-2{stop-color:var(--plan-glow);stop-opacity:0}@keyframes plan-lit-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.p-lit{animation:none}}.p-room.sel{fill:var(--plan-sel)}.p-room.alert{fill:var(--plan-alert)}.p-room-outline{fill:none;stroke-width:3px;vector-effect:non-scaling-stroke;stroke-linejoin:round;pointer-events:none}.p-room-outline.sel{stroke:var(--accent)}.p-room-outline.alert{stroke:var(--danger);stroke-width:4px}.p-stairs{fill:var(--plan-stairs);stroke:var(--plan-door);stroke-width:1.5px;vector-effect:non-scaling-stroke;stroke-dasharray:4 4;pointer-events:none}.p-wall{stroke:var(--plan-wall-int);stroke-linecap:square;pointer-events:none}.p-wall.ext{stroke:var(--plan-wall)}.p-window{stroke:var(--plan-window);stroke-width:4px;vector-effect:non-scaling-stroke;stroke-linecap:butt;pointer-events:none}.p-rail{stroke:var(--plan-rail);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-dasharray:6 4;pointer-events:none}.p-door{fill:none;stroke:var(--plan-wall-int);stroke-opacity:.7;stroke-width:1px;stroke-linecap:butt;vector-effect:non-scaling-stroke;pointer-events:none}.plan2d-overlay{width:0;height:0;position:absolute;top:0;left:0}.plan-label{pointer-events:none;text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;transform:translate(-50%,-50%)}.plan-label b{letter-spacing:.6px;text-transform:uppercase;color:var(--plan-label);white-space:nowrap;font-size:12px;font-weight:600;line-height:14px}.plan-label span{color:var(--plan-meta);white-space:nowrap;font-size:12px;font-weight:500;line-height:14px}.plan-label.sel b{color:var(--accent-hi)}.plan-label.alert b,.plan-label.alert span{color:var(--danger-text)}.pin{position:absolute;transform:translate(-50%,-50%)}.pin:hover,.pin:focus-visible{z-index:3}.pin.sel{outline:3px solid var(--accent);outline-offset:3px;z-index:2}.pin-value{background:var(--glass-solid);border:1px solid var(--divider);color:var(--text);pointer-events:none;border-radius:8px;padding:3px 7px;font-size:11px;font-weight:600;position:absolute;top:50%;left:calc(100% + 4px);transform:translateY(-50%)}.plan2d-alert{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 3px #f970668c}.pin.static{cursor:default;border-width:2px;min-width:26px;height:26px;padding:0;position:relative;transform:none}.topbar-house{align-items:center;gap:10px;display:flex}.map-tools{z-index:3;right:calc(var(--gap) * 2 + var(--right-w));bottom:calc(var(--gap) + 78px);flex-direction:column;gap:6px;display:flex;position:absolute}.view-shift .map-tools{right:calc(var(--gap) * 2 + var(--view-w));bottom:var(--gap)}.collapsed .map-tools{right:var(--gap)}.map-tools .btn.tool{background:var(--glass-strong);border-color:var(--glass-border);box-shadow:var(--shadow)}.map-tools .btn.tool:hover{background:var(--elevated)}.map-tools .btn.tool.active{background:var(--accent-soft);color:var(--accent-hi);border-color:#c8785580}.map-legend{background:var(--glass-solid);width:248px;padding:12px 14px;position:absolute;bottom:0;right:calc(100% + 10px)}.map-legend-h{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;margin-bottom:8px;font-size:12px;font-weight:600}.map-legend ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.map-legend li{color:var(--text);align-items:center;gap:10px;font-size:13px;display:flex}.mode-2d .label-layer{display:none}.mode-2d .scene-layer{visibility:hidden;pointer-events:none}.mode-3d .plan-layer{display:none}.mode-3d .plan-layer.placeholder{display:block}.booting-3d .scene-layer{visibility:hidden}.booting-3d .label-layer{display:none}.right .panel{flex:0 auto}.view-panel.safety,.view-panel.energy-view{max-height:calc(100% - var(--gap) * 3 - var(--top-h));bottom:auto}.battery{color:var(--text2);flex:none;align-items:center;gap:4px;margin-left:auto;font-size:12px;display:inline-flex}.battery svg{opacity:.85}.reconnecting{z-index:1000;color:#8a5a10;pointer-events:none;background:#c48c2824;border:1px solid #c48c2899;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;position:fixed;top:12px;left:50%;transform:translate(-50%)}.ctl-full{z-index:2000;background:radial-gradient(circle at 15% 10%, #c8785547, transparent 45%), radial-gradient(circle at 85% 70%, #6fa8dc29, transparent 45%), var(--canvas);place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow:auto}.ctl-card{text-align:center;width:100%;max-width:460px;animation:ctl-in .42s var(--ease-out) both;flex-direction:column;gap:14px;display:flex}.ctl-card h1{margin:0;font-size:26px;font-weight:600;line-height:32px}.ctl-card p{color:var(--text2);margin:0;line-height:22px}.ctl-card a{color:var(--accent);font-weight:600;text-decoration:none}.ctl-icon{background:var(--surface);border:1px solid var(--divider);border-radius:50%;place-items:center;width:76px;height:76px;margin:0 auto 6px;font-size:30px;display:grid}.ctl-meta{color:var(--text3);letter-spacing:.04em;font-size:12px}.ctl-glass{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--r-card);color:var(--text2);padding:14px 16px;font-size:14px}.ctl-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.ctl-banners{z-index:1500;flex-direction:column;gap:8px;width:min(560px,100vw - 32px);display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}.ctl-banner{background:var(--glass-strong);border:1px solid var(--glass-border);border-left:3px solid var(--info);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:ctl-in .3s var(--ease-out) both;border-radius:14px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.ctl-banner.warning{border-left-color:var(--warning)}.ctl-banner b{display:block}.ctl-banner span{color:var(--text2);font-size:13px}.ctl-scrim{z-index:1800;background:#0000008c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.ctl-modal{background:var(--elevated);border:1px solid var(--divider);width:100%;max-width:420px;animation:ctl-in .3s var(--ease-out) both;border-radius:24px;padding:24px}.ctl-modal h2{margin:0 0 10px;font-size:20px}.ctl-modal p{color:var(--text2);margin:0 0 18px;line-height:22px}@keyframes ctl-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.ctl-card,.ctl-banner,.ctl-modal{animation:none}}.sp-scrim{z-index:50;background:var(--scrim);-webkit-backdrop-filter:blur(6px);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.sp-panel{background:var(--glass-solid);flex-direction:column;width:min(560px,100%);max-height:min(780px,100vh - 32px);display:flex;overflow:hidden}.sp-head{border-bottom:1px solid var(--glass-border);align-items:center;gap:6px;padding:14px 14px 10px 20px;display:flex}.sp-head h2{letter-spacing:-.2px;flex:1;margin:0;font-size:18px;font-weight:600;line-height:24px}.sp-body{flex-direction:column;gap:14px;padding:16px 20px 20px;display:flex;overflow-y:auto}.sp-wide{justify-content:center;width:100%;height:44px}.sp-empty{color:var(--text2);text-align:center;padding:28px 0;font-size:14px}.sp-muted{color:var(--text3);font-size:13px}.sp-link{color:var(--accent);cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.sp-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.sp-row{text-align:left;border:1px solid var(--glass-border);background:var(--fill-1);cursor:pointer;border-radius:12px;flex-direction:column;gap:6px;width:100%;padding:12px 14px;transition:background .16s,border-color .16s;display:flex}.sp-row:hover{background:var(--fill-3);border-color:var(--glass-hi)}.sp-row-main{align-items:center;gap:8px;min-width:0;display:flex}.sp-subject{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:15px;font-weight:500;overflow:hidden}.sp-subject.strong{font-weight:600}.sp-badge{background:var(--accent);color:var(--on-accent);border-radius:999px;flex:none;padding:2px 8px;font-size:11px;font-weight:600}.sp-row-meta{color:var(--text3);align-items:center;gap:10px;font-size:12px;display:flex}.sp-status{align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.sp-status i{background:currentColor;border-radius:50%;width:7px;height:7px}.sp-status.info{color:var(--info)}.sp-status.accent{color:var(--accent)}.sp-status.success{color:var(--success)}.sp-status.muted{color:var(--text3)}.sp-form .field{margin-bottom:0}.sp-form{flex-direction:column;gap:14px;display:flex}.sp-chips{flex-wrap:wrap;gap:8px;display:flex}.sp-chip{border:1px solid var(--divider);height:34px;color:var(--text2);cursor:pointer;background:0 0;border-radius:999px;padding:0 14px;font-size:13px;font-weight:500;transition:background .16s,color .16s,border-color .16s}.sp-chip:hover{border-color:var(--glass-hi);color:var(--text)}.sp-chip.on{background:var(--accent);color:var(--on-accent);border-color:#0000}.sp-textarea,.sp-select{border-radius:var(--r-btn);border:1px solid var(--divider);background:var(--fill-1);width:100%;color:var(--text);font:inherit;resize:vertical;padding:12px 14px;font-size:15px;line-height:21px;transition:border-color .16s,box-shadow .16s}.sp-select{height:44px;padding:0 12px}.sp-select option{background:var(--elevated)}.sp-textarea:focus,.sp-select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #c8785540}.sp-drop{border-radius:var(--r-btn);border:1px dashed var(--divider);color:var(--text2);text-align:center;cursor:pointer;flex-direction:column;align-items:center;gap:4px;padding:18px 14px;font-size:14px;transition:border-color .16s,background .16s;display:flex}.sp-drop small{color:var(--text3);font-size:12px}.sp-drop:hover,.sp-drop.over{border-color:var(--accent);background:var(--accent-soft)}.sp-file{border-radius:var(--r-btn);border:1px solid var(--divider);color:var(--text2);align-items:center;gap:10px;padding:6px 6px 6px 14px;display:flex}.sp-file-name{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.sp-note{color:var(--text3);margin:0;font-size:12px;line-height:16px}.sp-thread-meta{align-items:center;gap:10px;display:flex}.sp-thread{flex-direction:column;gap:10px;display:flex}.sp-msg{background:var(--fill-2);border:1px solid var(--glass-border);border-radius:14px;align-self:flex-start;max-width:86%;padding:10px 14px}.sp-msg.user{background:var(--accent-soft);border-color:#c8785559;align-self:flex-end}.sp-msg.system{max-width:100%;color:var(--text3);text-align:center;background:0 0;border:0;align-self:center;padding:2px 0;font-size:12px}.sp-msg-who{color:var(--text2);margin-bottom:3px;font-size:12px;font-weight:500}.sp-msg-body{white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:20px}.sp-msg-when{color:var(--text3);margin-top:4px;font-size:11px}.sp-msg.user .sp-msg-when{text-align:right}.sp-shot{background:var(--surface);border-radius:10px;width:180px;height:120px;margin-top:8px;display:block;overflow:hidden}.sp-shot img{object-fit:cover;width:100%;height:100%;display:block}.sp-reply{flex-direction:column;gap:10px;display:flex}.sp-reply .btn{align-self:flex-end}:root[data-theme=light] .scene-bg{background:radial-gradient(1100px 760px at 52% 40%,#c8785524,#0000 62%),radial-gradient(1400px 900px at 50% 118%,#6fa8dc29,#0000 60%),linear-gradient(#f4f3ee 0%,#e4e2da 100%)}:root[data-theme=light] .scene-bg.night{background:radial-gradient(1100px 760px at 52% 42%,#c8785529,#0000 62%),radial-gradient(1300px 860px at 50% -12%,#1f2a5c2e,#0000 62%),linear-gradient(#e9e8e3 0%,#d9d7cf 100%)}:root[data-theme=light] .nav-pill,:root[data-theme=light] .segmented .pill{box-shadow:none;background:linear-gradient(#9a4f3233,#9a4f321a);border-color:#9a4f3266}:root[data-theme=light] .live-pill{color:var(--success-text)}:root[data-theme=light] .live-pill.offline{color:var(--warning-text)}:root[data-theme=light] .status-title{color:var(--text)}.nav-label{text-overflow:ellipsis;white-space:nowrap;letter-spacing:0;max-width:100%;padding:0 3px;font-size:10.5px;overflow:hidden}:root{--manage-w:max(var(--view-w), min(1080px, calc(100vw - var(--nav-w) - var(--gap) * 3 - 260px)))}.view-wide .view-panel.manage{width:var(--manage-w);background:var(--glass-strong)}.view-wide:has(.view-panel.manage) .incident-slot{right:calc(var(--gap) * 2 + var(--manage-w))}.view-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.btn.small{height:32px;padding:0 10px;font-size:13px}.btn.danger{background:var(--danger);color:#fff;border-color:#0000;font-weight:600}.btn.danger:hover{filter:brightness(1.08)}.muted{color:var(--text2)}.m-empty{color:var(--text2);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:28px 12px;font-size:14px;display:flex}.m-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.m-row{border:1px solid var(--glass-border);background:var(--fill-1);content-visibility:auto;contain-intrinsic-size:auto 60px;border-radius:14px;align-items:center;gap:12px;min-width:0;padding:10px 12px;display:flex}.m-row.locked{border-style:dashed}.m-ico{background:var(--fill-3);width:36px;height:36px;color:var(--text2);border-radius:11px;flex:none;place-items:center;display:grid}.m-ico.ok{background:var(--success-soft);color:var(--success-text)}.m-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.m-main b{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.m-main small{color:var(--text2);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;display:-webkit-box;overflow:hidden}.m-time{letter-spacing:-.3px;min-width:62px;font-size:20px;font-weight:600}.m-class{color:var(--text3);flex:none;font-size:11px}.row-actions{flex:none;gap:2px;display:flex}.badge-hub{background:var(--success-soft);height:24px;color:var(--success-text);border-radius:999px;flex:none;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:600;display:inline-flex}.role-badge{background:var(--fill-3);height:22px;color:var(--text2);border-radius:999px;flex:none;align-items:center;padding:0 9px;font-size:12px;font-weight:600;display:inline-flex}.role-badge.resident{background:var(--accent-soft);color:var(--accent-hi)}.avatar{background:linear-gradient(160deg, var(--accent-soft), var(--fill-3));width:36px;height:36px;color:var(--accent-hi);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.you{color:var(--text3);font-weight:500}.form-err{color:var(--danger);margin-top:4px;font-size:13px}.form-ok{color:var(--success-text);margin-top:6px;font-size:13px}.form-note{color:var(--text3);margin:10px 0 0;font-size:12px;line-height:17px}.field-hint{color:var(--text3);font-size:12px}.input{border-radius:var(--r-btn);border:1px solid var(--divider);background:var(--fill-1);width:100%;height:42px;color:var(--text);font:inherit;padding:0 12px;font-size:15px;transition:border-color .16s,box-shadow .16s}.field .input{height:42px;font-size:15px}.input.small{height:34px;font-size:13px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}select.input option{background:var(--elevated);color:var(--text)}.input[disabled]{opacity:.55}.input-row{align-items:center;gap:8px;display:flex}.input-row .input{flex:1}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;display:grid}.form-row{justify-content:space-between;align-items:center;gap:12px;padding:6px 0;display:flex}.check-row{color:var(--text2);align-items:center;gap:8px;margin:4px 0 8px;font-size:14px;display:flex}.check-row input{accent-color:var(--accent);width:16px;height:16px}.modal-scrim{z-index:60;background:var(--scrim);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--glass-solid);flex-direction:column;width:min(520px,100%);max-height:min(820px,100vh - 32px);display:flex;overflow:hidden}.modal.wide{width:min(760px,100%)}.modal-head{border-bottom:1px solid var(--glass-border);align-items:center;gap:8px;padding:14px 14px 10px 20px;display:flex}.modal-head h2{letter-spacing:-.2px;flex:1;margin:0;font-size:18px;font-weight:600;line-height:24px}.modal-body{min-height:0;padding:16px 20px 18px;overflow-y:auto}.modal-foot{border-top:1px solid var(--glass-border);justify-content:flex-end;gap:8px;padding:12px 20px 16px;display:flex}.modal-text{color:var(--text);margin:0 0 10px;font-size:15px;line-height:22px}.legal-text{white-space:pre-wrap;color:var(--text2);margin-top:8px;font-size:14px;line-height:21px}.scene-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start;gap:12px;display:grid}.scene-card{border:1px solid var(--glass-border);background:var(--fill-1);border-radius:16px;flex-direction:column;gap:12px;min-width:0;padding:14px;transition:border-color .16s;display:flex}.scene-card:hover{border-color:var(--glass-hi)}.scene-top{align-items:center;gap:12px;min-width:0;display:flex}.scene-ico{background:var(--accent-soft);width:42px;height:42px;color:var(--accent-hi);border-radius:13px;flex:none;place-items:center;display:grid}.scene-name{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;display:block;overflow:hidden}.scene-top small{color:var(--text3);font-size:12px}.scene-run{width:100%}.run-panel{border-top:1px solid var(--glass-border);padding-top:10px;font-size:13px}.run-head{color:var(--text2);flex-wrap:wrap;justify-content:space-between;gap:6px 12px;margin-bottom:6px;display:flex}.run-note{color:var(--warning-text)}.run-list{flex-direction:column;gap:4px;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.run-row{grid-template-columns:12px 1fr auto;align-items:center;gap:8px;display:grid}.run-row .dot{background:var(--text3);border-radius:50%;width:8px;height:8px}.run-row.confirmed .dot{background:var(--success)}.run-row.failed .dot,.run-row.blocked .dot{background:var(--warning)}.run-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.run-status{color:var(--text3);font-size:12px}.run-row.confirmed .run-status{color:var(--success-text)}.run-row.failed .run-status,.run-row.blocked .run-status{color:var(--warning-text)}.icon-pick{flex-wrap:wrap;gap:6px;display:flex}.icon-opt{border:1px solid var(--glass-border);background:var(--fill-1);width:38px;height:38px;color:var(--text2);cursor:pointer;border-radius:11px;place-items:center;transition:background .16s,border-color .16s;display:grid}.icon-opt.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hi)}.picker-head{justify-content:space-between;align-items:center;gap:12px;margin:6px 0 8px;display:flex}.picker-head .input{width:220px}.picker{flex-direction:column;gap:4px;max-height:min(46vh,460px);margin:0;padding:0;list-style:none;display:flex;overflow:auto}.pick-row{content-visibility:auto;contain-intrinsic-size:auto 50px;border:1px solid #0000;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:6px 10px;display:flex}.pick-row:hover{background:var(--fill-2)}.pick-row.on{border-color:var(--glass-border);background:var(--fill-1)}.pick-main{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;display:flex}.pick-main input{accent-color:var(--accent);flex:none;width:16px;height:16px}.pick-main b{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;display:block;overflow:hidden}.pick-main small{color:var(--text3);font-size:12px;display:block}.dev-icon.small{border-radius:9px;flex:none;width:30px;height:30px}.seg-mini{background:var(--fill-2);border:1px solid var(--glass-border);border-radius:999px;flex:none;padding:3px;display:inline-flex}.seg-mini button{cursor:pointer;color:var(--text2);background:0 0;border:0;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500;transition:background .16s,color .16s}.seg-mini button.on{background:var(--accent);color:var(--on-accent)}.day-chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.day-chip{border:1px solid var(--divider);width:40px;height:34px;color:var(--text2);cursor:pointer;background:0 0;border-radius:10px;font-size:13px;font-weight:600}.day-chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hi)}.view-panel.split .view-body{min-height:0;padding-bottom:0;display:flex}.split-grid{flex:1;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:14px;min-height:0;display:grid}.dev-list{flex-direction:column;gap:8px;min-height:0;padding-bottom:18px;display:flex}.dev-list ul{scrollbar-width:thin;scrollbar-color:var(--divider) transparent;flex-direction:column;flex:1;gap:2px;min-height:0;margin:0;padding:0 4px 0 0;list-style:none;display:flex;overflow:auto}.dev-list li{content-visibility:auto;contain-intrinsic-size:auto 50px}.dev-pick{cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:10px;width:100%;min-width:0;padding:7px 8px;transition:background .16s;display:flex}.dev-pick:hover{background:var(--fill-2)}.dev-pick.on{background:var(--accent-soft);border-color:#c8785566}.dev-pick b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;display:block;overflow:hidden}.dev-pick small{color:var(--text3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.dev-pick small.alert{color:var(--danger)}.split-main{scrollbar-width:thin;scrollbar-color:var(--divider) transparent;flex-direction:column;gap:12px;min-width:0;padding:0 4px 18px 0;display:flex;overflow:auto}.dev-head{align-items:center;gap:12px;display:flex}.kpi-row.two{grid-template-columns:repeat(2,minmax(0,1fr))}.tl li{content-visibility:auto;contain-intrinsic-size:auto 24px}.tl-more{list-style:none;padding:4px 0 0!important}.tl-more:before,.tl-more i{display:none}.members-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.invite-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:0 12px;display:grid}.invite-btn{grid-column:1/-1;justify-self:start}.received{border-color:#c8785566;margin-bottom:14px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.settings-card .section-h{align-items:center;gap:8px}.set-row{border-top:1px solid var(--glass-border);justify-content:space-between;align-items:center;gap:14px;padding:10px 0;display:flex}.set-row:first-of-type{border-top:0}.inline-form+.set-row{border-top:1px solid var(--glass-border)}.set-label{flex-shrink:0;min-width:0;max-width:55%}.set-label b{font-size:14px;font-weight:500;display:block}.set-label small{color:var(--text3);margin-top:2px;font-size:12px;line-height:16px;display:block}.set-value{text-align:right;overflow-wrap:anywhere;flex-shrink:1;justify-content:flex-end;min-width:0;display:flex}.deletion{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.deletion.pending b{color:var(--warning-text);font-size:15px}.deletion small{color:var(--text2)}@media (max-width:1280px){:root{--manage-w:var(--view-w)}.members-grid,.settings-grid{grid-template-columns:1fr}}@media (max-width:1100px){.split-grid{grid-template-columns:minmax(200px,240px) minmax(0,1fr)}.form-grid{grid-template-columns:1fr}}.skel{background:var(--fill-3);border-radius:8px;display:block}.skel-title{width:38%;height:26px;margin:3px 0}.skel-sub{width:24%;height:13px;margin-top:6px}.skel-row{pointer-events:none}.skel-ico{border-radius:11px;flex:none;width:36px;height:36px}.skel-lines{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.skel-line{height:12px}.skel-line.short{opacity:.7;width:28%;height:10px}.incident .incident-head .btn{color:#fff}.incident-resolved{vertical-align:middle;background:var(--success-soft);color:var(--success-text);border-radius:999px;margin-left:10px;padding:2px 8px;font-size:12px;font-weight:600;line-height:18px;display:inline-block}.incident.resolved{background:var(--glass-solid);border-color:var(--glass-border);box-shadow:var(--shadow)}.incident.resolved .incident-title{color:var(--text);font-size:18px;line-height:24px}.incident.resolved .incident-sub,.incident.resolved .incident-steps .d,.incident.resolved .incident-steps .t{color:var(--text2)}.incident.resolved .incident-icon{background:var(--fill-3);color:var(--text2)}.incident.resolved .incident-head .btn{color:var(--text2)}.incident.resolved .incident-steps li{background:var(--fill-2);color:var(--text)}.incident.resolved .incident-steps li.info .ico{background:var(--fill-4)}.incident.resolved .badge-local{color:var(--success-text);background:var(--success-soft)}.incident-banner{pointer-events:auto;background:linear-gradient(#961c14f5,#5a100cf5);border:1px solid #f97066a6;border-radius:999px;max-width:100%;box-shadow:0 0 0 1px #f9706626,0 0 30px #f9706659,0 12px 30px #0006}.incident-banner-btn{color:#fff;min-width:0;max-width:100%;font:inherit;cursor:pointer;border-radius:inherit;background:0 0;border:0;align-items:center;gap:10px;padding:7px 14px 7px 8px;font-size:14px;display:flex}.incident-banner-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.incident-banner-ico{color:#2a0806;background:#f97066;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;display:grid;position:relative}.incident-banner-ico:after{content:"";animation:ring 1.2s var(--ease-out) infinite;border:2px solid #f97066b3;border-radius:50%;position:absolute;inset:-4px}.incident-banner-btn b{flex:none;font-weight:700}.incident-banner-sub{color:#ffd3cf;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.incident-banner-act{background:#ffffff29;border-radius:999px;flex:none;padding:2px 10px;font-size:12px;font-weight:600}@media (prefers-reduced-motion:reduce){.incident-banner-ico:after{opacity:0;animation:none}}.tip-wrap{display:inline-flex;position:relative}.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.tip-wrap .tip{background:var(--glass-solid);border:1px solid var(--divider);width:max-content;max-width:260px;box-shadow:var(--shadow);color:var(--text);white-space:normal;pointer-events:none;z-index:10;border-radius:10px;padding:7px 10px;font-size:12px;line-height:16px;display:none;position:absolute;bottom:calc(100% + 8px);right:0}.tip-wrap:hover .tip,.tip-wrap:focus-within .tip{display:block}.setup-slot{inset:calc(var(--top-h) + var(--gap) * 2) var(--gap) var(--gap) calc(var(--nav-w) + var(--gap) * 2);pointer-events:none;z-index:3;place-items:center;display:grid;position:absolute;overflow:auto}.setup{pointer-events:auto;border-radius:var(--r-card);border:1px solid var(--glass-border);background:var(--glass);width:min(640px,100%);box-shadow:var(--shadow);padding:24px}.setup-head{align-items:center;gap:14px;margin-bottom:18px;display:flex}.setup-head h2{margin:0;font-size:22px;font-weight:650;line-height:28px}.setup-head p{color:var(--text2);margin:2px 0 0;font-size:14px}.setup-badge{background:var(--accent-soft);width:46px;height:46px;color:var(--accent-hi);border-radius:14px;flex:none;place-items:center;display:grid}:root[data-theme=light] .setup-badge{color:var(--accent)}.setup-steps{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.setup-step{background:var(--fill-2);border:1px solid var(--glass-border);border-radius:14px;align-items:center;gap:14px;padding:14px 16px;display:flex}.setup-ico{background:var(--fill-3);width:36px;height:36px;color:var(--text2);border-radius:50%;flex:none;place-items:center;display:grid}.setup-step.ok .setup-ico{background:var(--success-soft);color:var(--success-text)}.setup-step.warn .setup-ico{background:var(--warning-soft);color:var(--warning-text)}.setup-text{flex-direction:column;flex:1;min-width:0;display:flex}.setup-k{letter-spacing:.06em;text-transform:uppercase;color:var(--text3);font-size:12px;font-weight:600;line-height:16px}.setup-text b{font-size:15px;font-weight:600;line-height:20px}.setup-step.warn .setup-text b{color:var(--warning-text)}.setup-text small{color:var(--text2);font-size:13px;line-height:18px}.setup-actions{flex:none;gap:8px;display:flex}.setup-actions .btn{white-space:nowrap}.nav-label{white-space:normal;text-overflow:clip;overflow-wrap:normal;text-align:center;padding:0 2px;font-size:10px;line-height:12px}.sensor .sensor-text small{white-space:normal;overflow:visible}.valve-card.none{padding-block:14px}.valve-card.none .valve-state{letter-spacing:0;color:var(--text2);font-size:16px;font-weight:600;line-height:22px}.hub-pill{background:var(--warning-soft);height:28px;color:var(--warning-text);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:600;display:inline-flex}@media (max-width:1100px){.view-shift .map-tools{display:none}}.pair-status{background:var(--fill-2);border-radius:14px;align-items:center;gap:12px;margin-bottom:16px;padding:14px;display:flex}.pair-status b{font-size:15px;line-height:20px;display:block}.pair-status small{color:var(--text2);margin-top:2px;font-size:13px;line-height:18px;display:block}.pair-dot{background:var(--text3);border-radius:50%;flex:none;width:12px;height:12px}.pair-status.searching .pair-dot{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.pair-status.error .pair-dot{background:var(--warning)}.pair-status.error b{color:var(--warning-text)}.pair-row{border-top:1px solid var(--glass-border);grid-template-columns:36px 1fr 1fr auto;align-items:end;gap:10px;padding:10px 0;display:grid}.pair-row .field{color:var(--text2);flex-direction:column;gap:4px;font-size:12px;display:flex}.pair-row input{border:1px solid var(--glass-border);background:var(--fill-2);height:38px;color:var(--text);font:inherit;border-radius:10px;padding:0 10px;font-size:14px}.pair-row .dev-icon{align-self:end;margin-bottom:1px}.pair-row>.btn{border:1px solid var(--glass-border);height:38px}.pair-row .form-err{grid-column:1/-1}.add-choices{flex-direction:column;gap:10px;display:flex}.add-choice{border:1px solid var(--glass-border);background:var(--fill-2);width:100%;min-height:84px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:16px;align-items:center;gap:14px;padding:14px 16px;transition:transform .15s,border-color .15s;display:flex}.add-choice:hover{border-color:var(--accent)}.add-choice:active{transform:scale(.99)}.add-choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.add-choice-ico{background:var(--accent-soft);width:52px;height:52px;color:var(--accent);border-radius:50%;flex:none;place-items:center;display:grid}.add-choice-text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.add-choice-text b{font-size:16px;line-height:22px}.add-choice-text small{color:var(--text2);font-size:13px;line-height:18px}.add-choice-text small.ok{color:var(--success-text)}.add-choice-text small.warn{color:var(--warning-text)}.add-panel{flex-direction:column;gap:14px;display:flex}.add-banner{background:var(--fill-2);border-radius:14px;align-items:center;gap:12px;padding:14px;display:flex}.add-banner>div{flex:1;min-width:0}.add-banner b{font-size:15px;line-height:20px;display:block}.add-banner small{color:var(--text2);margin-top:2px;font-size:13px;line-height:18px;display:block}.add-banner.ok{background:var(--success-soft);color:var(--success-text)}.add-banner.warn{background:var(--warning-soft)}.add-banner.warn>svg{color:var(--warning-text)}.add-spin{border:2px solid var(--glass-border);border-top-color:var(--text2);border-radius:50%;flex:none;width:16px;height:16px;animation:.9s linear infinite add-spin}@keyframes add-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.add-spin{animation:none}}.add-kvs{flex-direction:column;display:flex}.add-kv{border-top:1px solid var(--glass-border);align-items:flex-start;gap:12px;padding:7px 0;font-size:14px;display:flex}.add-kv:first-child{border-top:0}.add-kv>span{max-width:55%;color:var(--text2);flex:none}.add-kv>b{text-align:right;overflow-wrap:anywhere;-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;min-width:0;font-weight:500;display:-webkit-box;overflow:hidden}.add-kv>b.ok{color:var(--success-text)}.add-kv>b.warn{color:var(--warning-text)}.add-steps{flex-direction:column;gap:6px;margin:0;padding-left:22px;font-size:14px;line-height:20px;display:flex}.add-note{color:var(--text2);align-items:flex-start;gap:8px;margin:10px 0 0;font-size:13px;line-height:18px;display:flex}.add-note svg{flex:none;margin-top:2px}.add-how{border:1px solid var(--glass-border);border-radius:14px;align-items:flex-start;gap:12px;padding:14px;display:flex}.add-how>svg{color:var(--accent);flex:none;margin-top:2px}.add-how b{font-size:15px;line-height:20px;display:block}.add-how small{color:var(--text2);margin-top:2px;font-size:13px;line-height:19px;display:block}.add-wide{justify-content:center;align-items:center;width:100%;height:44px;text-decoration:none;display:inline-flex}.battery-info{display:inline}.battery-info-btn{vertical-align:-3px;min-width:24px;min-height:24px;color:var(--text2);cursor:pointer;background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;margin-left:4px;padding:4px;display:inline-flex}.battery-info-btn:hover,.battery-info-btn[aria-expanded=true]{color:var(--text)}.battery-note{color:var(--text2);white-space:normal;background:#00000038;border-radius:12px;margin-top:6px;padding:10px 12px;font-size:13px;line-height:18px;display:block}.ai-assistants{flex-direction:column;gap:10px;display:flex}.ai-intro{color:var(--text2);margin:0;font-size:14px;line-height:1.45}.ai-url{border:1px solid var(--glass-border);background:var(--fill-1);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex}.ai-url-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ai-url-text small{color:var(--text3);font-size:12px}.ai-url-text code{color:var(--text);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;font-size:14px}.ai-url .form-err{flex-basis:100%}.ai-subhead{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;margin-top:8px;font-size:12px;font-weight:500}.ai-steps{color:var(--text2);flex-direction:column;gap:8px;margin:0;padding:0 0 0 22px;font-size:14px;line-height:1.45;display:flex}.ai-steps li::marker{color:var(--accent);font-weight:600}.ai-steps b{color:var(--text);font-weight:600}.ai-steps code{color:var(--accent-hi,var(--accent));overflow-wrap:anywhere;font-family:inherit;font-weight:500}.ai-perm{background:var(--fill-1);border:1px solid var(--glass-border);color:var(--text2);border-radius:12px;padding:8px 12px;font-size:13px}.ai-perm summary{cursor:pointer;color:var(--text);align-items:center;gap:6px;font-weight:500;display:inline-flex}.ai-perm p{margin:8px 0 0;line-height:1.45}.ai-conn-head{align-items:center;gap:8px;min-width:0;display:flex}.ai-conn-head .ai-conn-name{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.ai-chips{flex:none;gap:6px;display:inline-flex}.ai-chip{vertical-align:middle;background:var(--accent-soft);height:20px;color:var(--text2);border-radius:999px;align-items:center;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.ai-chip.control{background:var(--warning-soft);color:var(--warning-text)}.ai-revoke{color:var(--danger);flex:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
