:root{--accent: #3451d1;--accent-contrast: #ffffff;--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f1f3f6;--surface-3: #e8ebf0;--overlay: rgba(15, 18, 25, .45);--text: #0f1219;--text-2: #4a5263;--text-3: #7c8496;--border: #e3e6ec;--border-strong: #cfd4dd;--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--info: #2563eb;--ok-bg: #dcfce7;--warn-bg: #fef3c7;--bad-bg: #fee2e2;--info-bg: #dbeafe;--series-1: var(--accent);--series-2: #a3abba;--series-3: #0ea5e9;--heat-0: #eef1fd;--heat-1: var(--accent);--radius-s: 4px;--radius: 6px;--radius-l: 8px;--shadow-1: none;--shadow-2: 0 8px 24px rgba(16, 24, 40, .12), 0 2px 6px rgba(16, 24, 40, .06);--shadow-3: 0 24px 64px rgba(16, 24, 40, .22);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, Consolas, monospace;--fs-xs: 11px;--fs-s: 12.5px;--fs: 14px;--fs-l: 16px;--fs-xl: 20px;--fs-2xl: 26px;--cam-bg: #1b1f27;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0b0d12;--surface: #12151c;--surface-2: #181c25;--surface-3: #212633;--overlay: rgba(0, 0, 0, .6);--accent: #4d6bfe;--text: #eef0f4;--text-2: #b3b9c6;--text-3: #7d8597;--border: #232835;--border-strong: #323949;--ok: #22c55e;--warn: #f59e0b;--bad: #f87171;--info: #60a5fa;--ok-bg: rgba(34, 197, 94, .14);--warn-bg: rgba(245, 158, 11, .14);--bad-bg: rgba(248, 113, 113, .14);--info-bg: rgba(96, 165, 250, .14);--series-2: #4b5468;--heat-0: #171b26;--shadow-1: none;--shadow-2: 0 8px 24px rgba(0, 0, 0, .45);--shadow-3: 0 24px 64px rgba(0, 0, 0, .6);color-scheme:dark}}:root[data-theme=dark]{--bg: #0b0d12;--surface: #12151c;--surface-2: #181c25;--surface-3: #212633;--overlay: rgba(0, 0, 0, .6);--accent: #4d6bfe;--text: #eef0f4;--text-2: #b3b9c6;--text-3: #7d8597;--border: #232835;--border-strong: #323949;--ok: #22c55e;--warn: #f59e0b;--bad: #f87171;--info: #60a5fa;--ok-bg: rgba(34, 197, 94, .14);--warn-bg: rgba(245, 158, 11, .14);--bad-bg: rgba(248, 113, 113, .14);--info-bg: rgba(96, 165, 250, .14);--series-2: #4b5468;--heat-0: #171b26;--shadow-1: none;--shadow-2: 0 8px 24px rgba(0, 0, 0, .45);--shadow-3: 0 24px 64px rgba(0, 0, 0, .6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:400 var(--fs) / 1.45 var(--font);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01","tnum";overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:var(--fs-xl)}h2{font-size:var(--fs-l)}h3{font-size:var(--fs)}[v-cloak]{display:none}::selection{background:color-mix(in srgb,var(--accent) 25%,transparent)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.mono{font-family:var(--mono);font-size:.92em}.num{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column;gap:8px}.grow{flex:1 1 auto;min-width:0}.spacer{flex:1}.up{color:var(--ok)}.down{color:var(--bad)}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-l);box-shadow:var(--shadow-1);min-width:0}.card-h{display:flex;align-items:center;gap:8px;padding:14px 16px 0;min-height:40px}.card-h h3{font-size:13px;font-weight:600}.card-b{padding:12px 16px 16px}.card.flat{box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:500;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.icon{width:32px;padding:0}.btn.sm{height:26px;padding:0 8px;font-size:12px;border-radius:6px}.btn.sm.icon{width:26px;padding:0}.btn.active{background:color-mix(in srgb,var(--accent) 12%,var(--surface));border-color:color-mix(in srgb,var(--accent) 35%,var(--border));color:var(--accent)}.btn:focus-visible,.tab:focus-visible,.seg button:focus-visible,.navi:focus-visible{outline:2px solid var(--accent);outline-offset:2px}kbd{font:500 11px var(--font);padding:1px 5px;border-radius:4px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2)}.input{height:32px;padding:0 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface);outline:none;min-width:0}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.search{position:relative;display:flex;align-items:center}.search svg{position:absolute;left:9px;color:var(--text-3);pointer-events:none}.search .input{padding-left:30px;width:100%}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{position:relative;padding:10px 12px;border:0;background:none;cursor:pointer;color:var(--text-2);font-weight:500;font-size:13.5px;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}.tab:hover{color:var(--text)}.tab.on{color:var(--text);font-weight:600}.tab.on:after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}.seg{display:inline-flex;padding:2px;background:var(--surface-2);border-radius:6px;gap:2px;border:1px solid var(--border)}.seg button{border:0;background:transparent;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:12.5px;font-weight:500;color:var(--text-2);white-space:nowrap}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.chip{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 7px;border-radius:4px;background:var(--surface-2);border:1px solid var(--border);font-size:12px;color:var(--text-2);white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border-radius:4px;font-size:11.5px;font-weight:600;white-space:nowrap}.badge.high,.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.medium,.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.low,.badge.info{background:var(--info-bg);color:var(--info)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.count{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font-size:11px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}.dot.online,.dot.ok{background:var(--ok)}.dot.warning,.dot.warn{background:var(--warn);border-radius:2px;transform:rotate(45deg) scale(.85)}.dot.offline,.dot.bad{background:transparent;border:2px solid var(--bad)}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--bad);display:inline-block}@keyframes pulse{0%{box-shadow:0 0 #ef444499}70%{box-shadow:0 0 0 7px #ef444400}to{box-shadow:0 0 #ef444400}}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.table th{text-align:left;font-weight:500;font-size:12px;color:var(--text-3);padding:8px 12px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1;white-space:nowrap}.table td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr{cursor:default}.table tbody tr.click{cursor:pointer}.table tbody tr.click:hover td{background:var(--surface-2)}.table tbody tr.sel td{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.table .r{text-align:right}.table-wrap{overflow:auto}.kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.kpi{padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0}.kpi .lbl{font-size:12.5px;color:var(--text-2);display:flex;gap:6px;align-items:center}.kpi .val{font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.kpi .sub{font-size:12px;color:var(--text-3);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.pbar{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden;position:relative}.pbar>i{position:absolute;inset:0 auto 0 0;border-radius:3px;background:var(--accent);transition:width .6s}.pbar.warn>i{background:var(--warn)}.pbar.bad>i{background:var(--bad)}.cam{position:relative;background:var(--cam-bg);border-radius:var(--radius);overflow:hidden;aspect-ratio:16 / 9;color:#fff;min-width:0}.cam canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.cam .cam-top{position:absolute;left:8px;right:8px;top:7px;display:flex;gap:6px;align-items:center;font-size:11.5px;text-shadow:0 1px 2px rgba(0,0,0,.7);pointer-events:none}.cam .cam-bot{position:absolute;left:8px;right:8px;bottom:6px;display:flex;gap:6px;align-items:center;font-size:11px;opacity:.9;text-shadow:0 1px 2px rgba(0,0,0,.7);pointer-events:none}.cam .cam-tag{background:#00000080;padding:1px 6px;border-radius:4px;backdrop-filter:blur(4px)}.cam.flash{box-shadow:0 0 0 2px var(--bad),0 0 24px #ef444473}.cam .cam-off{position:absolute;inset:0;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;color:#9aa3b5;font-size:12px}.ev{display:flex;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border);cursor:pointer;align-items:flex-start;position:relative}.ev:hover{background:var(--surface-2)}.ev.unseen:before{content:"";position:absolute;left:3px;top:16px;width:5px;height:5px;border-radius:50%;background:var(--accent)}.ev-ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:none}.ev-ic.high{background:var(--bad-bg);color:var(--bad)}.ev-ic.medium{background:var(--warn-bg);color:var(--warn)}.ev-ic.low{background:var(--info-bg);color:var(--info)}.ev .ev-t{font-weight:600;font-size:13px}.ev .ev-s{font-size:12px;color:var(--text-2)}.ev .ev-thumb{width:72px;flex:none;border-radius:6px;aspect-ratio:16/9}.ev-enter{animation:evIn .5s ease}@keyframes evIn{0%{background:color-mix(in srgb,var(--accent) 16%,transparent)}to{background:transparent}}.modal-bg{position:fixed;inset:0;background:var(--overlay);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeIn .15s}.modal{background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-3);width:min(860px,100%);max-height:calc(100vh - 32px);overflow:auto;border:1px solid var(--border)}.drawer-bg{position:fixed;inset:0;background:var(--overlay);z-index:90;animation:fadeIn .15s}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);background:var(--surface);z-index:91;box-shadow:var(--shadow-3);display:flex;flex-direction:column;animation:slideIn .2s ease;border-left:1px solid var(--border)}@keyframes fadeIn{0%{opacity:0}}@keyframes slideIn{0%{transform:translate(30px);opacity:0}}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}}.toasts{position:fixed;right:16px;top:64px;z-index:200;display:flex;flex-direction:column;gap:8px;width:min(360px,calc(100vw - 32px));pointer-events:none}.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-2);border-radius:10px;padding:10px 12px;display:flex;gap:10px;animation:slideIn .25s;cursor:pointer}.cmdk-bg{position:fixed;inset:0;background:var(--overlay);z-index:300;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;animation:fadeIn .12s}.cmdk{width:min(640px,100%);background:var(--surface);border-radius:14px;box-shadow:var(--shadow-3);border:1px solid var(--border);overflow:hidden}.cmdk input{width:100%;border:0;border-bottom:1px solid var(--border);padding:16px 18px;font-size:16px;outline:none;background:transparent}.cmdk .list{max-height:50vh;overflow:auto;padding:6px}.cmdk .grp{font-size:11.5px;color:var(--text-3);padding:8px 10px 4px;font-weight:500}.cmdk .it{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13.5px}.cmdk .it.on{background:var(--surface-2)}.cmdk .foot{border-top:1px solid var(--border);padding:8px 12px;display:flex;gap:14px;font-size:11.5px;color:var(--text-3)}.about-fab{position:fixed;z-index:150;right:16px;bottom:16px;height:36px;padding:0 12px 0 10px;border-radius:18px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-2);display:flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;cursor:pointer}.about-fab .vn{background:var(--accent);color:var(--accent-contrast);border-radius:10px;padding:1px 7px;font-size:11px}.about-panel{position:fixed;z-index:151;right:16px;bottom:60px;width:min(380px,calc(100vw - 32px));max-height:calc(100vh - 90px);overflow:auto;animation:slideUp .2s}.about-panel ul{margin:4px 0 0;padding-left:18px}.about-panel li{margin:2px 0;font-size:13px}.plan svg{width:100%;height:auto;display:block}.plan .room{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:2}.plan .room-l{fill:var(--text-2);font-size:19px;font-weight:500}.plan .zone-l{font-size:34px;font-weight:700}.plan .cam-c{cursor:pointer}.chart{position:relative;width:100%}.chart svg{display:block;width:100%;overflow:visible}.chart .ax{fill:var(--text-3);font-size:10.5px}.chart .grid{stroke:var(--border);stroke-width:1}.chart .tip{position:absolute;pointer-events:none;background:var(--text);color:var(--bg);padding:5px 8px;border-radius:6px;font-size:12px;white-space:nowrap;transform:translate(-50%,-110%);z-index:5;box-shadow:var(--shadow-2)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.grid-2{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.stack{display:flex;flex-direction:column;gap:16px}.page{padding:20px 24px 40px;display:flex;flex-direction:column;gap:16px;min-width:0}.page-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-h h1{font-size:22px}.crumbs{display:flex;align-items:center;gap:4px;font-size:12.5px;color:var(--text-3);flex-wrap:wrap}.crumbs a{color:var(--text-2);cursor:pointer}.crumbs a:hover{color:var(--accent)}.empty{padding:36px 16px;text-align:center;color:var(--text-3)}@media(max-width:1100px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}.page{padding:14px 16px 90px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{padding:12px}.kpi .val{font-size:21px}.hide-m{display:none!important}}@media(min-width:761px){.only-m{display:none!important}}.cq{container-type:inline-size}.g-2-1{display:grid;gap:16px;grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.g-1-1{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}@container (max-width: 860px){.g-2-1,.g-1-1{grid-template-columns:minmax(0,1fr)}}@media(max-width:760px){.g-2-1,.g-1-1{grid-template-columns:minmax(0,1fr)}.ev-modal-grid{grid-template-columns:minmax(0,1fr)!important}}.cam-grid{display:grid;gap:8px;grid-template-columns:repeat(var(--cols, 3),minmax(0,1fr))}@container (max-width: 560px){.cam-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.cam-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.wall-split{display:grid;gap:12px;grid-template-columns:minmax(0,1fr) 340px;min-height:0}.wall-feed{min-height:420px;max-height:calc(100vh - 160px)}@media(max-width:1000px){.wall-split{grid-template-columns:minmax(0,1fr)}.wall-feed{height:420px}}.report-tpls{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.tpl:hover{border-color:var(--accent)}.tree{font-size:13px;user-select:none}.tree-row{display:flex;align-items:center;gap:6px;height:30px;padding-right:8px;border-radius:7px;cursor:pointer;color:var(--text)}.tree-row:hover{background:var(--surface-2)}.tree-row.on{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-weight:600}.tree-row .tw{width:16px;display:inline-flex;justify-content:center;color:var(--text-3);flex:none}.navi{display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 10px;border:0;background:none;border-radius:8px;cursor:pointer;color:var(--text-2);font-weight:500;font-size:13.5px;text-align:left}.navi:hover{background:var(--surface-2);color:var(--text)}.navi.on{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.admin-wrap{display:grid;gap:16px;grid-template-columns:230px minmax(0,1fr);align-items:start}.admin-nav{position:sticky;top:0}@media(max-width:900px){.admin-wrap{grid-template-columns:minmax(0,1fr)}.admin-nav{display:flex;overflow-x:auto;position:static}.admin-nav .navi{width:auto;flex:none}.admin-nav .navi .faint{display:none}}.scope-btn{gap:8px}.sp-it{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px}.sp-it:hover{background:var(--surface-2)}.crumb-a{color:var(--accent);cursor:pointer}.mk{display:grid;place-items:center;border-radius:50%;cursor:pointer;font:600 11px var(--font);box-shadow:0 2px 6px #0000004d;transition:transform .12s}.mk:hover{transform:scale(1.12)}.mk-site{width:26px;height:26px;font-size:10px;background:var(--surface);color:var(--text);border:3px solid var(--ok)}.mk-site.warning{border-color:var(--warn)}.mk-site.offline{border-color:var(--bad)}.mk-site.sel{background:var(--accent);color:var(--accent-contrast);transform:scale(1.3)}.mk-cl{background:color-mix(in srgb,var(--accent) 85%,transparent);color:var(--accent-contrast);border:3px solid color-mix(in srgb,var(--accent) 35%,transparent);background-clip:padding-box;font-size:12.5px}.mk-cl.bad{box-shadow:0 0 0 3px var(--bad),0 2px 6px #0000004d}.maplibregl-ctrl-attrib{font-size:10px}.plan .heat{mix-blend-mode:multiply}:root[data-theme=dark] .plan .heat{mix-blend-mode:screen}#app{height:100vh;height:100dvh}.shell{display:grid;grid-template-columns:248px minmax(0,1fr);height:100%;transition:grid-template-columns .18s}.shell.mini{grid-template-columns:64px minmax(0,1fr)}.side{background:var(--surface-2);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:10px;gap:2px;min-width:0;overflow:auto}.ws{display:flex;align-items:center;gap:10px;padding:6px 6px 10px}.side .grp{font-size:11.5px;color:var(--text-3);padding:14px 10px 4px;font-weight:500;display:flex;align-items:center;gap:6px}.side .navi.on{background:var(--surface-3);color:var(--text);font-weight:600}.side .navi.on .ic{color:var(--accent)}.navi .ic{font-size:17px;flex:none}.mini .side .lbl,.mini .side .grp span,.mini .ws .lbl,.mini .modesw .lbl{display:none}.mini .side .navi{justify-content:center;padding:0}.mini .side .grp{padding:10px 0 2px;justify-content:center}.modesw{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;border-radius:6px;background:var(--surface-3);margin:4px 0 2px}.modesw button{display:flex;align-items:center;justify-content:center;gap:6px;height:28px;border:0;border-radius:4px;background:transparent;color:var(--text-2);font-size:12.5px;cursor:pointer}.modesw button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1);font-weight:600}.modesw button.on .ic{color:var(--accent)}.mini .modesw{grid-template-columns:1fr}.site-ctx{margin:4px 0;padding:10px;border-radius:6px;background:var(--surface);border:1px solid var(--border)}.avatar{width:30px;height:30px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;font-weight:600;font-size:12px;flex:none}.work{display:flex;min-width:0;min-height:0}.treep{width:300px;flex:none;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;min-height:0}.treep .hd{height:56px;padding:0 10px;display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--border);flex:none}.treep .bd{flex:1;overflow:auto;padding:6px}.treep .ft{font-size:11.5px;padding:8px 12px;border-top:1px solid var(--border);color:var(--text-3)}.main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.bar{height:56px;display:flex;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--surface);flex:none}.content{flex:1;overflow:auto;min-height:0}.tree-row .ic{font-size:14px;color:var(--text-3)}.tree-row .tw{width:18px;height:18px;display:grid;place-items:center;border-radius:5px;flex:none}.tree-row .tw:hover{background:var(--surface-3)}.tree-row.on{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--text);font-weight:600}.tree-row:not(.on):hover{background:var(--surface-2)}.tree-row .cnt{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.dot.online{background:var(--ok)}.dot.warning{background:var(--warn)}.dot.offline{background:var(--bad)}.dot.unknown,.dot.unassigned{background:var(--border-strong)}.tablewrap{flex:1;display:flex;min-width:0;min-height:0}.tablearea{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.vh{padding:14px 22px 10px;border-bottom:1px solid var(--border);background:var(--surface)}.tb{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:10px}.grid-wrap{flex:1;overflow:auto;background:var(--surface)}.xt{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.xt th{position:sticky;top:0;z-index:2;background:var(--surface-2);text-align:left;font-weight:500;color:var(--text-2);font-size:12px;padding:0 10px;height:34px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none}.xt td{padding:0 10px;height:38px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}.xt tr.rw:hover td{background:var(--surface-2)}.xt tr.rw.sel td{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.xt tr.gr td{background:var(--surface-2);font-weight:600;height:34px;position:sticky;top:34px;z-index:1}.xt .r{text-align:right;font-variant-numeric:tabular-nums}.xt tfoot td{position:sticky;bottom:0;background:var(--surface-2);font-weight:600;height:34px;border-top:1px solid var(--border-strong)}.peek{width:500px;flex:none;border-left:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;min-height:0;animation:slideIn .18s}.peek-b{flex:1;overflow:auto;padding:14px 16px 30px}.auth-page{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(1200px 600px at 10% -10%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%),var(--bg)}.auth-card{width:min(400px,100%);padding:26px 26px 22px;display:flex;flex-direction:column;gap:12px}.fld{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--text-2)}.w-full{width:100%}.player{position:relative;aspect-ratio:16 / 9;background:var(--cam-bg);border-radius:var(--radius);overflow:hidden}.player video{width:100%;height:100%;object-fit:contain;display:block}.player .ov{position:absolute;inset:0;display:grid;place-items:center;color:#c9ced8;font-size:12.5px;text-align:center;padding:12px}.player .cap{position:absolute;left:8px;bottom:8px;right:8px;display:flex;gap:6px;align-items:center;color:#fff;font-size:12px;text-shadow:0 1px 2px rgba(0,0,0,.7)}@media(max-width:1250px){.peek{position:fixed;right:0;top:0;bottom:0;z-index:50;width:min(500px,100vw);box-shadow:var(--shadow-3)}}@media(max-width:760px){.shell,.shell.mini{grid-template-columns:minmax(0,1fr)}.side{position:fixed;inset:0 auto 0 0;width:270px;z-index:70;transform:translate(-100%);transition:transform .2s}.side.open{transform:none;box-shadow:var(--shadow-3)}.mini .side .lbl,.mini .side .grp span,.mini .ws .lbl,.mini .modesw .lbl{display:initial}.treep{position:fixed;left:0;top:0;bottom:0;z-index:61;width:min(320px,88vw);transform:translate(-100%);transition:transform .2s}.treep.open{transform:none;box-shadow:var(--shadow-3)}.bar{padding:0 10px;gap:6px}.vh{padding:12px 14px 10px}}.scrim{position:fixed;inset:0;background:var(--overlay);z-index:58}.p-toast{--p-toast-width: 360px}.table .r{text-align:right;font-variant-numeric:tabular-nums}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}.form-grid .span2{grid-column:1 / -1}.fld .err{color:var(--bad);font-size:12px}.fld>.p-inputtext,.fld>.p-select,.fld>.p-inputnumber,.fld>.p-autocomplete,.fld>.p-multiselect,.fld>.p-treeselect,.fld>.p-datepicker,.fld>.p-password{width:100%}.set-grid{display:grid;grid-template-columns:var(--set-cols, minmax(0, 1fr) minmax(0, 1fr));gap:16px;align-items:start}.secret{font-family:var(--mono, ui-monospace, monospace);font-size:13px;padding:10px 12px;border-radius:8px;background:var(--surface-2);border:1px dashed var(--border-strong);word-break:break-all;user-select:all}.table tr.click{cursor:pointer}.table tr.click:hover td{background:var(--surface-2)}.matrix th.rc{text-align:center;white-space:nowrap;font-size:12px}.matrix td.rc{text-align:center}@media(max-width:1100px){.set-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:640px){.form-grid{grid-template-columns:minmax(0,1fr)}}.table tr.sel td{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px}.mk-site{min-width:26px;width:auto;padding:0 5px;border-radius:13px}.mk-site.unknown,.mk-site.unassigned{border-color:var(--border-strong)}.map-page{display:flex;flex-direction:column;height:100%;padding:16px 20px 20px;gap:12px;min-height:0}.map-wrap{position:relative;flex:1;min-height:360px}.map-card{position:absolute;right:12px;top:12px;width:min(320px,calc(100% - 24px));z-index:2;box-shadow:var(--shadow-3)}.legend-dot{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-2)}.legend-dot i{width:10px;height:10px;border-radius:50%;border:3px solid}
