:root{--bg:#f5f5f5;--surface:#fff;--surface-hover:#f3f4f6;--border:#ddd;--border-soft:#e0e0e0;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-soft:#eff6ff;--primary-tint:#e8f0fe;--primary-tint-strong:#bfdbfe;--danger:#dc2626;--danger-hover:#b91c1c;--danger-soft:#fef2f2;--danger-glow:#dc262673;--info-glow:#3b82f673;--text:#1f2937;--text-muted:#6b7280;--text-faint:#9ca3af;--text-dim:#aaa;--text-strong:#111827;--text-mid:#555;--on-primary:#fff;--on-primary-alpha:#ffffff80;--sent:#9ca3af;--delivered:#f59e0b;--read:#22c55e;--accent-red:#e53e3e;--accent-red-inner:#f8b400;--accent-blue:#3b82f6;--accent-orange:#c05020;--control-off:#ccc;--shadow-sm:0 1px 2px #0f14190d;--shadow-md:0 4px 12px #00000026;--shadow-lg:0 12px 32px #00000024;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--radius-sm:4px;--radius-md:6px;--radius-lg:12px;--radius-pill:999px;--text-xs:11px;--text-sm:12px;--text-md:13px;--text-lg:15px;--text-xl:18px;--type-notification:#6b7280;--type-notification-soft:#f3f4f6;--type-action:#2563eb;--type-action-soft:#eff6ff;--type-alarm:#dc2626;--type-alarm-soft:#fef2f2;--rail:#e5e7eb;--selected-row:#eff6ff;--active-row:#e8f0fe;--active-bar:#2563eb;--bldg-wall:#e3ded7;--bldg-wall-dark:#ddd7cf;--bldg-outline:#c5bfb7;--bldg-window:#f5f2ee;--bldg-window-outline:#d0ccc5;--bldg-detail:#c0b9b0;--bldg-ground:#d9d3cb;--bldg-baseline:#bbb;--bldg-floor-cell:#f5f5f5;--bldg-floor-border:#ccc;--bldg-person:#999;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1419;--surface:#1a1f29;--surface-hover:#242a36;--border:#2d3441;--border-soft:#252b36;--primary:#3b82f6;--primary-hover:#2563eb;--primary-soft:#1e2a44;--primary-tint:#1e3a8a;--primary-tint-strong:#2563eb;--danger:#ef4444;--danger-hover:#dc2626;--danger-soft:#3f1a1a;--danger-glow:#ef444473;--info-glow:#60a5fa73;--text:#ecf0f7;--text-muted:#b3bcca;--text-faint:#7a8392;--text-dim:#4b5563;--text-strong:#f6f8fc;--text-mid:#d1d5db;--on-primary:#fff;--on-primary-alpha:#ffffff80;--sent:#8893a3;--delivered:#fbbf24;--read:#4ade80;--accent-red:#ef4444;--accent-red-inner:#fbbf24;--accent-blue:#60a5fa;--accent-orange:#f97316;--control-off:#4b5563;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #0009;--shadow-lg:0 12px 32px #000000b3;--type-notification:#b3bcca;--type-notification-soft:#242a36;--type-action:#60a5fa;--type-action-soft:#1e2a44;--type-alarm:#ef4444;--type-alarm-soft:#3f1a1a;--rail:#2d3441;--selected-row:#1e2a44;--active-row:#1e3a8a;--active-bar:#3b82f6;--bldg-wall:#2a2e38;--bldg-wall-dark:#1e2128;--bldg-outline:#4b5563;--bldg-window:#3b4250;--bldg-window-outline:#6b7280;--bldg-detail:#6b7280;--bldg-ground:#1f2937;--bldg-baseline:#4b5563;--bldg-floor-cell:#242a36;--bldg-floor-border:#4b5563;--bldg-person:#9ca3af;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}.app{min-height:100vh;display:flex}.rail{background:var(--surface);border-right:1px solid var(--border);z-index:10;flex-direction:column;flex-shrink:0;width:60px;padding:12px 0;transition:width .2s;display:flex;position:relative;overflow:hidden}.rail:hover{width:220px}.rail-section{border-bottom:1px solid var(--border-soft);flex-direction:column;margin-bottom:6px;padding-bottom:6px;display:flex}.rail-section:last-of-type{border-bottom:none}.rail-section-head{color:var(--text-muted);opacity:0;align-items:center;gap:14px;height:0;padding:0 18px;transition:height .18s,opacity .15s,padding .18s;display:flex;overflow:hidden}.rail:hover .rail-section-head{opacity:1;height:38px;padding:6px 18px}.rail-section-icon{width:26px;color:var(--text);flex-shrink:0;justify-content:center;align-items:center;display:flex}.rail-section-icon svg{width:22px;height:22px}.rail-section-title{font-size:var(--text-md);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;color:var(--text);font-weight:700}.rail-section-items{flex-direction:column;display:flex}.rail-item{color:var(--text);font-size:var(--text-md);align-items:center;gap:10px;height:32px;padding:7px 18px;text-decoration:none;transition:background .12s;display:flex;position:relative}.rail-item:hover{background:var(--surface-hover)}.rail-item.active{background:var(--active-row);color:var(--primary);font-weight:600}.rail-item.active:before{content:"";background:var(--active-bar);border-radius:0 2px 2px 0;width:3px;position:absolute;top:0;bottom:0;left:0}.rail-item-icon{width:22px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.rail-item.active .rail-item-icon{color:var(--primary)}.rail-item-label{white-space:nowrap;opacity:0;transition:opacity .15s;overflow:hidden}.rail:hover .rail-item-label{opacity:1}.rail-spacer{flex:1}.rail-foot{border-top:1px solid var(--border);align-items:center;gap:10px;margin-top:8px;padding:10px 14px;display:flex}.rail-avatar{background:var(--primary);width:32px;height:32px;color:var(--on-primary);font-size:var(--text-md);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.rail-foot-name{opacity:0;flex:1;min-width:0;transition:opacity .15s}.rail:hover .rail-foot-name{opacity:1}.rail-foot-display{font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;color:var(--text);font-weight:600;overflow:hidden}.rail-foot-role{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px}.rail-foot-actions{opacity:0;flex-shrink:0;gap:4px;transition:opacity .15s;display:flex}.rail:hover .rail-foot-actions{opacity:1;pointer-events:auto}.rail:not(:hover) .rail-foot-actions{pointer-events:none}.rail-foot-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-family:inherit;transition:all .15s;display:inline-flex}.rail-foot-btn:hover{background:var(--surface-hover);color:var(--text);border-color:var(--border)}.theme-toggle{border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;font-size:var(--text-md);color:var(--text-muted);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-family:inherit;line-height:1;transition:all .15s;display:inline-flex}.theme-toggle:hover{background:var(--surface-hover);color:var(--text);border-color:var(--border)}.coming-soon{color:var(--text-muted);border:1px dashed var(--border);background:var(--surface);border-radius:6px;margin-top:.5rem;padding:1rem}.main{flex:1;max-width:1400px;padding:1.5rem}.main h1{margin-bottom:1rem;font-size:1.3rem}.form-group{margin-bottom:1rem}.form-group label{margin-bottom:.25rem;font-size:.85rem;font-weight:600;display:block}input[type=text],input[type=number],textarea,select{border:1px solid var(--border);border-radius:4px;width:100%;padding:.5rem;font-size:.9rem}textarea{resize:vertical;min-height:80px}.btn{cursor:pointer;color:var(--on-primary);background:var(--primary);border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;display:inline-block}.btn:hover{background:var(--primary-hover)}.btn-danger{background:var(--danger)}.btn-danger:hover{background:var(--danger-hover)}.btn-sm{padding:.25rem .5rem;font-size:.8rem}.btn+.btn{margin-left:.5rem}.checkbox-grid{flex-wrap:wrap;gap:.5rem;display:flex}.checkbox-grid label{cursor:pointer;align-items:center;gap:.25rem;font-size:.9rem;font-weight:400;display:flex}table{border-collapse:collapse;background:var(--surface);border-radius:4px;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .75rem;font-size:.9rem}th{background:var(--bg);font-weight:600}.badge{color:var(--on-primary);border-radius:10px;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-sent{background:var(--sent)}.badge-delivered{background:var(--delivered)}.badge-read{background:var(--read)}.card{background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:1rem;padding:1rem}.row{gap:1rem;display:flex}.row>*{flex:1}.svg-fill-surface{fill:var(--surface)}.svg-fill-bldg-wall{fill:var(--bldg-wall)}.svg-fill-bldg-wall-dk{fill:var(--bldg-wall-dark)}.svg-fill-bldg-window{fill:var(--bldg-window)}.svg-fill-bldg-detail{fill:var(--bldg-detail)}.svg-fill-bldg-ground{fill:var(--bldg-ground)}.svg-fill-floor-cell{fill:var(--bldg-floor-cell)}.svg-fill-primary{fill:var(--primary)}.svg-fill-primary-tint{fill:var(--primary-tint)}.svg-fill-primary-tint-s{fill:var(--primary-tint-strong)}.svg-fill-accent-red{fill:var(--accent-red)}.svg-fill-accent-blue{fill:var(--accent-blue)}.svg-fill-accent-orange{fill:var(--accent-orange)}.svg-fill-on-primary{fill:var(--on-primary)}.svg-fill-on-primary-a{fill:var(--on-primary-alpha)}.svg-fill-accent-red-in{fill:var(--accent-red-inner)}.svg-fill-text-mid{fill:var(--text-mid)}.svg-fill-text-strong{fill:var(--text-strong)}.svg-fill-text-faint{fill:var(--text-faint)}.svg-fill-text-dim{fill:var(--text-dim)}.svg-fill-danger-glow{fill:var(--danger-glow)}.svg-fill-info-glow{fill:var(--info-glow)}.svg-stroke-bldg-outline{stroke:var(--bldg-outline)}.svg-stroke-bldg-detail{stroke:var(--bldg-detail)}.svg-stroke-bldg-win{stroke:var(--bldg-window-outline)}.svg-stroke-bldg-base{stroke:var(--bldg-baseline)}.svg-stroke-primary{stroke:var(--primary)}.svg-stroke-row-border{stroke:var(--bldg-floor-border)}.svg-stroke-row-divider{stroke:var(--border-soft)}.svg-stroke-on-primary{stroke:var(--on-primary)}@media (width<=720px){.rail{width:52px}.rail:hover{width:200px}.rail-section-head,.rail-item{padding-left:14px;padding-right:14px}}@media (width<=900px){.page-scope .listpage-head{flex-wrap:wrap;gap:8px}.page-scope .listpage-head-actions{width:100%;margin-left:0}.page-scope .listpage-search{flex:1;width:auto}}@media (width<=640px){.page-scope .listpage-row-time{display:none}.page-scope .listpage-tabs{padding:4px 14px 0}.page-scope .listpage-head{padding:14px 16px 10px}.page-scope .listpage-body{padding:12px 16px}}.login-root{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow-md);border-radius:8px;flex-direction:column;padding:2rem;display:flex}.login-card h1{margin-bottom:.25rem;font-size:1.3rem}.login-sub{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9rem}.login-card label{margin-top:.75rem;margin-bottom:.25rem;font-size:.8rem;font-weight:600}.login-card input{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;padding:.55rem;font-size:.95rem}.login-card input:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:#0000}.login-error{background:var(--danger-soft);color:var(--danger);border-radius:4px;margin-top:.75rem;padding:.5rem .75rem;font-size:.85rem}.login-card .btn{margin-top:1.25rem;padding:.65rem;font-size:.95rem}.auth-loading{text-align:center;color:var(--text-muted);padding:2rem}.inbox-scope{background:var(--bg);min-width:0;height:100vh;margin:-1.5rem;display:flex}@media (width<=1024px){.inbox-scope .itr{width:260px}}@media (width<=720px){.inbox-scope .itr{display:none}}.inbox-scope .itr{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:320px;display:flex}.inbox-scope .itr-head{border-bottom:1px solid var(--border-soft);flex-direction:column;gap:10px;padding:14px 16px 12px;display:flex}.inbox-scope .itr-title-row{justify-content:space-between;align-items:center;display:flex}.inbox-scope .itr-title{font-size:var(--text-lg);letter-spacing:-.005em;color:var(--text-strong);font-weight:600}.inbox-scope .itr-counter{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.inbox-scope .itr-counter-pill{background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-pill);padding:2px 8px;font-weight:500}.inbox-scope .itr-counter-pill b{font-weight:700}.inbox-scope .itr-search{background:var(--surface-hover);border-radius:var(--radius-md);color:var(--text-muted);border:1px solid #0000;align-items:center;gap:8px;padding:7px 10px;transition:border-color .15s,background .15s;display:flex}.inbox-scope .itr-search:focus-within{border-color:var(--primary);background:var(--surface)}.inbox-scope .itr-search input{min-width:0;font:inherit;color:var(--text);font-size:var(--text-md);background:0 0;border:none;outline:none;flex:1}.inbox-scope .itr-search input::placeholder{color:var(--text-faint)}.inbox-scope .itr-search-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px;display:flex}.inbox-scope .itr-search-clear:hover{color:var(--text);background:var(--surface-hover)}.inbox-scope .itr-scope{background:var(--surface-hover);border-radius:var(--radius-md);gap:4px;padding:3px;display:flex}.inbox-scope .itr-scope-btn{font-size:var(--text-xs);color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:5px;padding:5px 8px;font-family:inherit;font-weight:500;transition:all .15s;display:flex}.inbox-scope .itr-scope-btn:hover{color:var(--text)}.inbox-scope .itr-scope-btn.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.inbox-scope .itr-scope-dot{border-radius:50%;width:6px;height:6px}.inbox-scope .itr-list{background:var(--surface);flex:1;padding:6px 0 12px;overflow:auto}.inbox-scope .itr-list-rule{background:var(--border-soft);height:1px;margin:10px 16px 4px;position:relative}.inbox-scope .itr-list-rule span{background:var(--surface);letter-spacing:.14em;color:var(--text-faint);padding-right:8px;font-size:9px;font-weight:700;position:absolute;top:50%;left:0;transform:translateY(-50%)}.inbox-scope .itr-row{cursor:pointer;outline:none;align-items:center;gap:7px;height:32px;padding-right:12px;transition:background .12s;display:flex;position:relative}.inbox-scope .itr-rail{background:var(--rail);opacity:.55;width:1px;position:absolute;top:0;bottom:0}.inbox-scope .itr-row:hover{background:var(--surface-hover)}.inbox-scope .itr-row:focus-visible{box-shadow:inset 0 0 0 2px var(--primary)}.inbox-scope .itr-row.active{background:var(--active-row)}.inbox-scope .itr-row.selected{background:var(--selected-row)}.inbox-scope .itr-row.active.selected{background:var(--active-row)}.inbox-scope .itr-row.active:before{content:"";background:var(--active-bar);border-radius:0 2px 2px 0;width:3px;position:absolute;top:0;bottom:0;left:0}.inbox-scope .itr-check{border:1.5px solid var(--text-faint);border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;padding:0;transition:all .15s;display:flex}.inbox-scope .itr-check:hover{border-color:var(--primary)}.inbox-scope .itr-check.on,.inbox-scope .itr-check.indeterminate{background:var(--primary);border-color:var(--primary)}.inbox-scope .itr-check.indeterminate:after{content:"";background:var(--on-primary);border-radius:1px;width:7px;height:1.5px;display:block}.inbox-scope .itr-chev{cursor:pointer;width:14px;height:14px;color:var(--text-faint);background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:transform .15s;display:flex}.inbox-scope .itr-chev:hover:not(:disabled){color:var(--text)}.inbox-scope .itr-chev:disabled{cursor:default}.inbox-scope .itr-chev.open{transform:rotate(90deg)}.inbox-scope .itr-icon{color:var(--text-muted);flex-shrink:0;align-items:center;display:flex}.inbox-scope .itr-icon[data-kind=all]{color:var(--primary)}.inbox-scope .itr-icon[data-kind=floor]{color:var(--text-muted)}.inbox-scope .itr-icon[data-kind=group]{color:var(--type-action)}.inbox-scope .itr-row.active .itr-icon{color:var(--primary)}.inbox-scope .itr-label{font-size:var(--text-md);color:var(--text);letter-spacing:-.005em;white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.inbox-scope .itr-row.active .itr-label{font-weight:600}.inbox-scope .itr-spacer{flex:1}.inbox-scope .itr-rename-input{font-size:var(--text-md);border:1px solid var(--primary);background:var(--surface);color:var(--text);border-radius:3px;outline:none;flex:1;min-width:0;padding:2px 6px;font-family:inherit}.inbox-scope .itr-badge{border-radius:var(--radius-pill);min-width:18px;height:18px;font-size:var(--text-xs);color:var(--on-primary);font-variant-numeric:tabular-nums;letter-spacing:0;justify-content:center;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.inbox-scope .itr-badge[data-type=alarm]{background:var(--type-alarm)}.inbox-scope .itr-badge[data-type=action]{background:var(--type-action)}.inbox-scope .itr-badge[data-type=notification]{background:var(--type-notification)}.inbox-scope .itr-total{font-size:var(--text-xs);color:var(--text-faint);text-align:right;font-variant-numeric:tabular-nums;min-width:18px}.inbox-scope .itr-call-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:24px;height:24px;color:var(--text-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;margin-left:4px;padding:0;display:inline-flex}.inbox-scope .itr-call-btn:hover{color:#10b981;border-color:#10b981}.inbox-scope .right{background:var(--bg);flex-direction:column;flex:1;min-width:0;display:flex}.inbox-scope .ith{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:14px 20px;display:flex}.inbox-scope .ith-icon{border-radius:var(--radius-md);background:var(--primary-soft);width:36px;height:36px;color:var(--primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.inbox-scope .ith-icon[data-kind=alarm]{background:var(--danger-soft);color:var(--danger)}.inbox-scope .ith-textcol{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.inbox-scope .ith-title{font-size:var(--text-lg);color:var(--text-strong);letter-spacing:-.005em;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.inbox-scope .ith-meta{font-size:var(--text-sm);color:var(--text-muted);align-items:center;gap:6px;display:flex}.inbox-scope .ith-meta-dot{background:var(--text-faint);border-radius:50%;width:3px;height:3px}.inbox-scope .ith-online{background:var(--read);width:8px;height:8px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;flex-shrink:0}.inbox-scope .ith-search{background:var(--surface-hover);border-radius:var(--radius-md);width:clamp(140px,22vw,240px);color:var(--text-muted);border:1px solid #0000;flex-shrink:1;align-items:center;gap:6px;min-width:0;padding:7px 10px;transition:all .15s;display:flex}.inbox-scope .ith-search:focus-within{border-color:var(--primary);background:var(--surface)}.inbox-scope .ith-search input{min-width:0;font:inherit;font-size:var(--text-md);color:var(--text);background:0 0;border:none;outline:none;flex:1}.inbox-scope .ith-search input::placeholder{color:var(--text-faint)}.inbox-scope .stb{background:var(--surface);border-bottom:1px solid var(--border-soft);font-size:var(--text-xs);align-items:center;gap:14px;padding:8px 20px;display:flex}.inbox-scope .stb-stat{color:var(--text-muted);align-items:center;gap:6px;display:flex}.inbox-scope .stb-stat b{color:var(--text-strong);font-variant-numeric:tabular-nums;font-weight:600}.inbox-scope .stb-stat-dot{border-radius:50%;width:6px;height:6px}.inbox-scope .stb-stat[data-kind=sent] .stb-stat-dot{background:var(--sent)}.inbox-scope .stb-stat[data-kind=delivered] .stb-stat-dot{background:var(--delivered)}.inbox-scope .stb-stat[data-kind=read] .stb-stat-dot{background:var(--read)}.inbox-scope .stb-spacer{flex:1}.inbox-scope .stb-bar{border-radius:var(--radius-pill);background:var(--surface-hover);flex:1;max-width:280px;height:4px;position:relative;overflow:hidden}.inbox-scope .stb-bar-seg{height:100%;transition:width .4s cubic-bezier(.4,0,.2,1);position:absolute;top:0;bottom:0}.inbox-scope .stb-bar-seg.delivered{background:var(--delivered)}.inbox-scope .stb-bar-seg.read{background:var(--read)}.inbox-scope .stb-clean{color:var(--text-muted);font-size:var(--text-xs);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:5px 10px;font-family:inherit;font-weight:500;transition:all .15s;display:inline-flex}.inbox-scope .stb-clean:hover{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-soft)}.inbox-scope .thr{flex-direction:column;flex:1;gap:12px;padding:24px 28px;display:flex;overflow-y:auto}.inbox-scope .thr-day{font-size:var(--text-xs);color:var(--text-muted);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-pill);align-self:center;margin:6px 0;padding:4px 12px}.inbox-scope .msg{flex-direction:column;gap:4px;max-width:64%;display:flex;position:relative}.inbox-scope .msg.received{align-self:flex-start}.inbox-scope .msg.sent{align-self:flex-end;align-items:flex-end}.inbox-scope .msg-author{font-size:var(--text-xs);color:var(--text-muted);padding:0 12px}.inbox-scope .msg-bubble{border-radius:var(--radius-lg);font-size:var(--text-md);word-wrap:break-word;padding:10px 14px;line-height:1.45;position:relative}.inbox-scope .msg.received .msg-bubble{background:var(--surface);color:var(--text);border:1px solid var(--border-soft);border-bottom-left-radius:4px}.inbox-scope .msg.sent .msg-bubble{background:var(--primary);color:var(--on-primary);border-bottom-right-radius:4px}.inbox-scope .msg.sent[data-type=alarm] .msg-bubble{background:var(--danger)}.inbox-scope .msg.sent[data-type=notification] .msg-bubble{background:var(--text-muted)}.inbox-scope .msg-attachments{flex-direction:column;gap:6px;margin-top:6px;display:flex}.inbox-scope .msg-attachment-img,.inbox-scope .msg-attachment-video{border-radius:var(--radius-md);max-width:320px;max-height:240px;display:block}.inbox-scope .msg-attachment-file{border-radius:var(--radius-md);font-size:var(--text-sm);background:#0000000f;align-items:center;gap:10px;padding:10px 12px;display:flex}.inbox-scope .msg.sent .msg-attachment-file{background:#ffffff2e}.inbox-scope .msg-meta{font-size:var(--text-xs);color:var(--text-faint);align-items:center;gap:6px;padding:0 4px;display:flex}.inbox-scope .msg-status{align-items:center;gap:3px;display:inline-flex}.inbox-scope .msg-typebadge{letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius-sm);align-items:center;gap:4px;margin-bottom:4px;padding:2px 6px;font-size:9px;font-weight:700;display:inline-flex}.inbox-scope .msg-typebadge[data-type=alarm]{background:var(--danger-soft);color:var(--danger)}.inbox-scope .msg-typebadge[data-type=action]{background:var(--type-action-soft);color:var(--type-action)}.inbox-scope .msg.msg-deleted .msg-bubble,.inbox-scope .msg.msg-deleted.sent .msg-bubble,.inbox-scope .msg.msg-deleted.received .msg-bubble{border:1px dashed var(--border);color:var(--text-muted);font-style:italic;font-size:var(--text-sm);background:0 0}.inbox-scope .msg-reactions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.inbox-scope .reaction-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--text-xs);cursor:pointer;color:var(--text);padding:1px 7px;font-family:inherit}.inbox-scope .reaction-chip.mine{background:var(--primary-tint);border-color:var(--primary)}.inbox-scope .msg-actions{font-size:var(--text-xs);gap:4px;margin-top:4px;display:none}.inbox-scope .msg:hover .msg-actions{display:flex}.inbox-scope .msg-actions button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-xs);color:var(--text);padding:2px 6px;font-family:inherit}.inbox-scope .reaction-picker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.inbox-scope .reaction-picker button{font-size:var(--text-md);cursor:pointer;background:0 0;border:none;padding:1px 4px}.inbox-scope .cmp{background:var(--surface);border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:12px 20px 16px;display:flex}.inbox-scope .cmp.disabled{opacity:.55;pointer-events:none}.inbox-scope .cmp-typebar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inbox-scope .cmp-typebar-label{font-size:var(--text-xs);color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;margin-right:4px;font-weight:600}.inbox-scope .cmp-type{border-radius:var(--radius-pill);border:1px solid var(--border);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-weight:500;transition:all .15s;display:inline-flex}.inbox-scope .cmp-type:disabled{opacity:.5;cursor:not-allowed}.inbox-scope .cmp-type:not(:disabled):hover{border-color:var(--text-muted);color:var(--text)}.inbox-scope .cmp-type.on{border-color:#0000;font-weight:600}.inbox-scope .cmp-type.on[data-type=notification]{background:var(--type-notification);color:var(--on-primary)}.inbox-scope .cmp-type.on[data-type=action]{background:var(--type-action);color:var(--on-primary);box-shadow:0 2px 6px #2563eb4d}.inbox-scope .cmp-type.on[data-type=alarm]{background:var(--type-alarm);color:var(--on-primary);box-shadow:0 2px 6px #dc26264d}.inbox-scope .cmp-type-icon{justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.inbox-scope .cmp-typebar-spacer{flex:1}.inbox-scope .cmp-use-template{border-radius:var(--radius-pill);background:var(--surface-hover);border:1px solid var(--border);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;align-items:center;gap:6px;margin-left:6px;padding:6px 10px;font-family:inherit;font-weight:500;transition:all .15s;display:inline-flex}.inbox-scope .cmp-use-template:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.inbox-scope .cmp-use-template:disabled{opacity:.5;cursor:not-allowed}.inbox-scope .cmp-template-toggle,.cmp-template-toggle{font-family:inherit;font-size:inherit;color:var(--primary);cursor:pointer;background:0 0;border:none;padding:0 2px;text-decoration:underline}.inbox-scope .cmp-typebar-hint{font-size:var(--text-xs);color:var(--text-faint)}.inbox-scope .cmp-typebar-hint b{color:var(--text-muted);font-weight:600}.inbox-scope .cmp-row{align-items:flex-end;gap:10px;display:flex}.inbox-scope .cmp-mediabtns{flex-direction:column;gap:4px;display:flex}.inbox-scope .cmp-mediabtn{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;font-family:inherit;transition:all .15s;display:flex}.inbox-scope .cmp-mediabtn:hover:not(:disabled){background:var(--primary-soft);color:var(--primary);border-color:var(--primary)}.inbox-scope .cmp-mediabtn:disabled{opacity:.4;cursor:not-allowed}.inbox-scope .cmp-textwrap{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-lg);flex:1;transition:border-color .15s;position:relative}.inbox-scope .cmp-textwrap:focus-within{border-color:var(--primary)}.inbox-scope .cmp-textwrap[data-type=alarm]:focus-within{border-color:var(--danger)}.inbox-scope .cmp-textarea{width:100%;min-height:76px;max-height:200px;font:inherit;font-size:var(--text-md);color:var(--text);resize:none;background:0 0;border:none;outline:none;padding:12px 14px;font-family:inherit}.inbox-scope .cmp-textarea::placeholder{color:var(--text-faint)}.inbox-scope .cmp-send{border-radius:var(--radius-md);background:var(--primary);min-width:76px;height:76px;color:var(--on-primary);font-size:var(--text-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;font-family:inherit;font-weight:600;transition:all .15s;display:flex}.inbox-scope .cmp-send:hover:not(:disabled){background:var(--primary-hover)}.inbox-scope .cmp-send:disabled{opacity:.5;cursor:not-allowed}.inbox-scope .cmp-send[data-type=alarm]{background:var(--danger)}.inbox-scope .cmp-send[data-type=alarm]:hover:not(:disabled){background:var(--danger-hover)}.inbox-scope .cmp-send[data-type=notification]{background:var(--text-muted)}.inbox-scope .cmp-attachments{flex-wrap:wrap;gap:6px;display:flex}.inbox-scope .cmp-att-chip{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--text);align-items:center;gap:4px;padding:3px 10px;display:inline-flex}.inbox-scope .cmp-att-chip button{cursor:pointer;color:var(--text-muted);font-size:var(--text-md);background:0 0;border:none;padding:0 0 0 2px;line-height:1}.inbox-scope .emp{color:var(--text-muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:18px;padding:40px;display:flex}.inbox-scope .emp-illu{background:var(--surface);border:1px dashed var(--border);width:96px;height:96px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.inbox-scope .emp-illu:before,.inbox-scope .emp-illu:after{content:"";border:1px dashed var(--border);opacity:.6;border-radius:50%;position:absolute;inset:-10px}.inbox-scope .emp-illu:after{opacity:.3;inset:-22px}.inbox-scope .emp-title{font-size:var(--text-xl);color:var(--text-strong);letter-spacing:-.01em;font-weight:600}.inbox-scope .emp-body{font-size:var(--text-md);max-width:340px;line-height:1.55}.inbox-scope .emp-empty-thread{text-align:center;flex-direction:column;align-self:center;align-items:center;gap:14px;max-width:360px;padding:32px 0;display:flex}.inbox-scope .emp-empty-thread h3{font-size:var(--text-lg);color:var(--text-strong);margin:0;font-weight:600}.inbox-scope .emp-empty-thread p{font-size:var(--text-md);color:var(--text-muted);margin:0;line-height:1.5}.inbox-scope .multibanner{background:var(--primary-soft);border-bottom:1px solid var(--border-soft);color:var(--primary);font-size:var(--text-md);align-items:center;gap:10px;padding:10px 20px;display:flex}.inbox-scope .multibanner-icon{background:var(--primary);width:24px;height:24px;color:var(--on-primary);font-size:var(--text-xs);font-variant-numeric:tabular-nums;border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.inbox-scope .multibanner-spacer{flex:1}.inbox-scope .multibanner-clear{color:var(--primary);font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;padding:4px 10px;font-family:inherit;font-weight:500;transition:all .15s}.inbox-scope .multibanner-clear:hover{background:#2563eb1a}.page-scope .dlg-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);background:#0f141973;justify-content:center;align-items:center;padding:32px;display:flex;position:fixed;inset:0}[data-theme=dark] .page-scope .dlg-backdrop{background:#000000a6}.page-scope .dlg{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;width:540px;max-width:100%;max-height:80vh;display:flex;overflow:hidden}.page-scope .dlg.dlg-wide{width:640px}.page-scope .dlg.dlg-narrow{width:420px}.page-scope .dlg-head{border-bottom:1px solid var(--border-soft);align-items:center;gap:12px;padding:16px 20px;display:flex}.page-scope .dlg-head-icon{border-radius:var(--radius-md);background:var(--primary-soft);width:32px;height:32px;color:var(--primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.page-scope .dlg-head-icon[data-tone=danger]{background:var(--danger-soft);color:var(--danger)}.page-scope .dlg-head-textcol{flex:1;min-width:0}.page-scope .dlg-title{font-size:var(--text-lg);color:var(--text-strong);letter-spacing:-.005em;font-weight:600}.page-scope .dlg-subtitle{font-size:var(--text-sm);color:var(--text-muted);margin-top:2px}.page-scope .dlg-close{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;transition:all .15s;display:flex}.page-scope .dlg-close:hover{background:var(--surface-hover);color:var(--text)}.page-scope .dlg-body{flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.page-scope .dlg-foot{border-top:1px solid var(--border-soft);background:var(--surface);justify-content:flex-end;align-items:center;gap:8px;padding:14px 20px;display:flex}.page-scope .dlg-foot-left{color:var(--text-muted);font-size:var(--text-sm);align-items:center;gap:6px;margin-right:auto;display:flex}.page-scope .field{flex-direction:column;gap:6px;display:flex}.page-scope .field-label{font-size:var(--text-sm);color:var(--text);align-items:center;gap:6px;font-weight:500;display:flex}.page-scope .field-label .field-required{color:var(--danger)}.page-scope .field-hint{font-size:var(--text-xs);color:var(--text-muted)}.page-scope .field-error{font-size:var(--text-xs);color:var(--danger);align-items:center;gap:4px;display:flex}.page-scope .field-input,.page-scope .field-textarea{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-md);width:100%;font:inherit;font-size:var(--text-md);color:var(--text);outline:none;padding:8px 12px;transition:border-color .15s}.page-scope .field-input:focus,.page-scope .field-textarea:focus{border-color:var(--primary)}.page-scope .field-input::placeholder,.page-scope .field-textarea::placeholder{color:var(--text-faint)}.page-scope .field-textarea{resize:vertical;min-height:86px;font-family:inherit;line-height:1.5}.page-scope .field-input.has-error,.page-scope .field-textarea.has-error{border-color:var(--danger)}.page-scope .field-row{gap:12px;display:flex}.page-scope .field-row>.field{flex:1}.page-scope .field-counter{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums;margin-left:auto}.page-scope .btn{border-radius:var(--radius-md);font-size:var(--text-md);cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;padding:8px 14px;font-weight:500;transition:all .15s;display:inline-flex}.page-scope .btn-primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.page-scope .btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.page-scope .btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.page-scope .btn-secondary:hover{background:var(--surface-hover);border-color:var(--text-muted)}.page-scope .btn-danger{background:var(--danger);color:var(--on-primary);border-color:var(--danger)}.page-scope .btn-danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.page-scope .btn-ghost{color:var(--text-muted);background:0 0}.page-scope .btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.page-scope .btn-ghost-danger{color:var(--danger);background:0 0}.page-scope .btn-ghost-danger:hover{background:var(--danger-soft)}.page-scope .member-list{background:var(--surface-hover);border:1px solid var(--border-soft);border-radius:var(--radius-md);flex-direction:column;gap:4px;max-height:240px;padding:6px;display:flex;overflow:auto}.page-scope .member-row{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;transition:background .12s;display:flex}.page-scope .member-row:hover{background:var(--surface)}.page-scope .member-row.on{background:var(--primary-soft)}.page-scope .member-check{border:1.5px solid var(--text-faint);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;transition:all .15s;display:flex}.page-scope .member-row.on .member-check{background:var(--primary);border-color:var(--primary)}.page-scope .member-icon{color:var(--text-muted);flex-shrink:0;display:flex}.page-scope .member-label{font-size:var(--text-md);color:var(--text);flex:1}.page-scope .member-sub{font-size:var(--text-xs);color:var(--text-faint)}.page-scope .selected-chips{border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface);flex-wrap:wrap;gap:6px;min-height:44px;padding:8px;display:flex}.page-scope .selected-chip{background:var(--primary-soft);border-radius:var(--radius-pill);color:var(--primary);font-size:var(--text-sm);border:1px solid #0000;align-items:center;gap:5px;padding:4px 4px 4px 9px;font-weight:500;display:inline-flex}.page-scope .selected-chip-remove{width:18px;height:18px;color:var(--primary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.page-scope .selected-chip-remove:hover{background:#2563eb2e}.page-scope .selected-chip-count{border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;background:#2563eb2e;align-items:center;margin-left:2px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-flex}[data-theme=dark] .page-scope .selected-chip-count{background:#60a5fa38}.page-scope .selected-chip[data-kind=floor]{background:var(--type-action-soft);color:var(--type-action)}.page-scope .selected-chip[data-kind=room]{background:var(--primary-soft);color:var(--primary)}.page-scope .selected-chip[data-kind=group]{background:var(--surface-hover);color:var(--text)}.page-scope .member-tree{background:var(--surface-hover);border:1px solid var(--border-soft);border-radius:var(--radius-md);max-height:240px;margin-top:8px;padding:4px;overflow:auto}.page-scope .mtr-row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:5px 8px;transition:background .12s;display:flex;position:relative}.page-scope .mtr-row:hover{background:var(--surface)}.page-scope .mtr-row.state-on{background:var(--primary-soft)}.page-scope .mtr-row.state-on:hover{background:color-mix(in oklab, var(--primary-soft) 65%, var(--primary) 0%)}.page-scope .mtr-rail{background:var(--border-soft);pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.page-scope .mtr-check{border:1.5px solid var(--text-faint);border-radius:var(--radius-sm);background:var(--surface);flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;transition:all .15s;display:flex}.page-scope .mtr-check.state-on,.page-scope .mtr-check.state-partial{background:var(--primary);border-color:var(--primary)}.page-scope .mtr-check-dash{background:var(--on-primary);border-radius:1px;width:7px;height:2px}.page-scope .mtr-chev{width:14px;height:14px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.page-scope .mtr-chev:disabled{cursor:default}.page-scope .mtr-icon{color:var(--text-muted);flex-shrink:0;display:flex}.page-scope .mtr-row.state-on .mtr-icon,.page-scope .mtr-row.state-partial .mtr-icon{color:var(--primary)}.page-scope .mtr-label{font-size:var(--text-md);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.page-scope .mtr-spacer{flex:1;min-width:6px}.page-scope .mtr-count{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums;background:var(--surface);border-radius:var(--radius-pill);border:1px solid var(--border-soft);padding:2px 7px}.page-scope .mtr-row.state-on .mtr-count{color:var(--primary);border-color:var(--primary-soft);background:var(--surface)}.page-scope .mtr-row.state-partial .mtr-count{color:var(--primary)}.page-scope .mtr-count strong{color:var(--primary);font-weight:700}.page-scope .itr-search-clear{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.page-scope .itr-search-clear:hover{background:var(--surface-hover);color:var(--text)}.page-scope .tpl-preview-media{background:#0000002e;border:1px solid #ffffff26;border-radius:6px;margin-top:8px;position:relative;overflow:hidden}.page-scope .tpl-preview-media svg.media-svg{width:100%;height:auto;display:block}.page-scope .tpl-preview-media-meta{color:#ffffffd9;letter-spacing:.04em;background:#0000008c;border-radius:3px;align-items:center;gap:5px;padding:2px 6px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;display:flex;position:absolute;bottom:6px;left:6px}.page-scope .tpl-preview-media-meta:before{content:"";background:var(--read);border-radius:50%;width:5px;height:5px;animation:1.4s ease-in-out infinite tpl-rec-blink;display:inline-block}.page-scope .tpl-preview-media-meta--still:before{background:var(--text-faint);animation:none}@keyframes tpl-rec-blink{0%,to{opacity:1}50%{opacity:.3}}.page-scope .tpl-preview-media .play-overlay{pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000080;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;margin:-18px 0 0 -18px;display:flex;position:absolute;top:50%;left:50%}.page-scope .tpl-preview-media .play-overlay.playing{display:none}.page-scope .tpl-preview-toggle{color:#fff;cursor:pointer;background:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex;position:absolute;bottom:6px;right:6px}.page-scope .tpl-preview-toggle:hover{background:#000000bf}@keyframes tpl-video-pan{0%{transform:translate(0)}50%{transform:translate(-6%,-3%)}to{transform:translate(0)}}@keyframes tpl-video-flicker{0%,to{opacity:.7}50%{opacity:.95}}.page-scope .tpl-video-canvas{transform-origin:50%;animation:6s ease-in-out infinite tpl-video-pan}.page-scope .tpl-video-glow{animation:2.2s ease-in-out infinite tpl-video-flicker}.page-scope .pill-type{border-radius:var(--radius-pill);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:5px;padding:3px 9px;font-weight:600;display:inline-flex}.page-scope .pill-type[data-type=notification]{background:var(--type-notification-soft);color:var(--type-notification)}.page-scope .pill-type[data-type=action]{background:var(--type-action-soft);color:var(--type-action)}.page-scope .pill-type[data-type=alarm]{background:var(--type-alarm-soft);color:var(--type-alarm)}.page-scope .pill-type-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.page-scope .type-radio{gap:8px;display:flex}.page-scope .type-radio-opt{border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;flex-direction:column;flex:1;gap:4px;padding:12px;transition:all .15s;display:flex}.page-scope .type-radio-opt:hover{border-color:var(--text-muted)}.page-scope .type-radio-opt.on[data-type=notification]{border-color:var(--type-notification);background:var(--type-notification-soft)}.page-scope .type-radio-opt.on[data-type=action]{border-color:var(--type-action);background:var(--type-action-soft)}.page-scope .type-radio-opt.on[data-type=alarm]{border-color:var(--type-alarm);background:var(--type-alarm-soft)}.page-scope .type-radio-opt-head{font-size:var(--text-sm);color:var(--text);align-items:center;gap:6px;font-weight:600;display:flex}.page-scope .type-radio-opt-desc{font-size:var(--text-xs);color:var(--text-muted);line-height:1.4}.page-scope .type-radio-opt[data-type=notification] .type-radio-opt-icon{color:var(--type-notification)}.page-scope .type-radio-opt[data-type=action] .type-radio-opt-icon{color:var(--type-action)}.page-scope .type-radio-opt[data-type=alarm] .type-radio-opt-icon{color:var(--type-alarm)}.page-scope{background:var(--bg);flex-direction:column;height:100vh;margin:-1.5rem;display:flex}.page-scope .listpage{background:var(--bg);flex-direction:column;flex:1;min-height:0;display:flex}.page-scope .listpage-head-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.page-scope .listpage-search{background:var(--surface-hover);border-radius:var(--radius-md);width:240px;color:var(--text-muted);border:1px solid #0000;align-items:center;gap:6px;padding:7px 10px;transition:all .15s;display:flex}.page-scope .listpage-search:focus-within{border-color:var(--primary);background:var(--surface)}.page-scope .listpage-search input{min-width:0;font:inherit;font-size:var(--text-md);color:var(--text);background:0 0;border:none;outline:none;flex:1}.page-scope .listpage-search input::placeholder{color:var(--text-faint)}.page-scope .listpage-tabs{background:var(--surface);border-bottom:1px solid var(--border);gap:4px;padding:4px 24px 0;display:flex}.page-scope .listpage-tab{font-family:inherit;font-size:var(--text-md);color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:10px 14px;font-weight:500;display:inline-flex}.page-scope .listpage-tab.on{color:var(--text-strong);border-bottom-color:var(--primary);font-weight:600}.page-scope .listpage-tab-count{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.page-scope .listpage-row-time{font-size:var(--text-sm);color:var(--text-faint);white-space:nowrap;flex-shrink:0}.page-scope .listpage-empty{text-align:center;color:var(--text-muted);font-size:var(--text-md);padding:64px 24px}.page-scope .listpage-head{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:18px 24px 14px;display:flex}.page-scope .listpage-title{font-size:var(--text-xl);color:var(--text-strong);letter-spacing:-.01em;font-weight:600}.page-scope .listpage-counter{font-size:var(--text-sm);color:var(--text-muted);background:var(--surface-hover);border-radius:var(--radius-pill);padding:3px 10px}.page-scope .listpage-body{flex:1;padding:18px 24px;overflow:auto}.page-scope .listpage-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.page-scope .listpage-row{border-bottom:1px solid var(--border-soft);cursor:pointer;align-items:center;gap:14px;padding:12px 16px;transition:background .12s;display:flex}.page-scope .listpage-row:last-child{border-bottom:none}.page-scope .listpage-row:hover{background:var(--surface-hover)}.page-scope .listpage-row.highlight{background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}.page-scope .listpage-row-icon{border-radius:var(--radius-md);background:var(--surface-hover);width:32px;height:32px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.page-scope .listpage-row-textcol{flex:1;min-width:0}.page-scope .listpage-row-title{font-size:var(--text-md);color:var(--text);align-items:center;gap:8px;margin-bottom:2px;font-weight:600;display:flex}.page-scope .listpage-row-sub{font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.page-scope .listpage-row-actions{opacity:0;gap:4px;transition:opacity .12s;display:flex}.page-scope .listpage-row:hover .listpage-row-actions{opacity:1}.page-scope .listpage-row-iconbtn{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;transition:all .15s;display:flex}.page-scope .listpage-row-iconbtn:hover{background:var(--surface-hover);color:var(--text)}.page-scope .listpage-row-iconbtn.danger:hover{background:var(--danger-soft);color:var(--danger)}.page-scope .logs-filterbar{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.page-scope .pill-presence{border-radius:var(--radius-pill);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:5px;padding:2px 8px;font-weight:600;display:inline-flex}.page-scope .pill-presence[data-state=ONLINE]{color:var(--read);background:#4ade8026}.page-scope .pill-presence[data-state=OFFLINE]{background:var(--surface-hover);color:var(--text-faint)}.page-scope .pill-presence-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.page-scope .pair-banner{background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--radius-md);align-items:center;gap:16px;margin-bottom:14px;padding:16px 20px;display:flex}.page-scope .pair-banner-text{flex:1}.page-scope .pair-banner-label{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:2px}.page-scope .pair-banner-code{letter-spacing:.18em;color:var(--primary);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:28px;font-weight:700}.page-scope .pair-banner-meta{font-size:var(--text-xs);color:var(--text-muted)}.page-scope .pair-banner-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:6px;font-family:inherit}.page-scope .pair-banner-close:hover{background:var(--surface-hover);color:var(--text)}.page-scope .detail-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:18px;display:grid}@media (width<=1100px){.page-scope .detail-grid{grid-template-columns:1fr}}.page-scope .panel-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:14px;padding:14px 16px}.page-scope .panel-card-title{font-size:var(--text-md);color:var(--text-strong);align-items:center;gap:8px;margin-bottom:10px;font-weight:600;display:flex}.page-scope .stat-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.page-scope .stat-tile{border-radius:var(--radius-md);background:var(--surface-hover);align-items:center;gap:10px;padding:10px 12px;display:flex}.page-scope .stat-tile-icon{font-size:1.2rem;line-height:1}.page-scope .stat-tile-value{font-size:var(--text-lg);color:var(--text-strong);font-variant-numeric:tabular-nums;font-weight:700}.page-scope .stat-tile-label{font-size:var(--text-xs);color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.iso-scene{--iso-bg:#0f172a;--iso-floor-fill:#94a3b80a;--iso-floor-stroke:#94a3b8;--iso-wall-stroke:#cbd5e1;--iso-room-fill:#1e293b8c;--iso-room-hover-fill:#fef3c733;--iso-furn-stroke:#64748b;--iso-corridor-fill:#64748b1a;--iso-lift-fill:#6366f12e;--iso-fire-fill:#ef444438;--iso-text-dim:#64748b;--iso-text-strong:#e2e8f0;--iso-room-label-fill:#e2e8f0c7;--iso-room-label-stroke:#0f172ae6;--iso-sensor-ok:#10b981;--iso-sensor-alarm:#ef4444;--iso-sensor-leak:#3b82f6;--iso-sensor-ts:#facc15;--iso-sensor-off:#475569;--iso-sensor-icon-fill:#fff;--iso-volume-top-fill:#1e293ba6;--iso-volume-furn-fill:#64748b73;--iso-volume-lift-fill:#6366f159;--iso-volume-fire-fill:#ef44444d;--iso-glyph-bg:#0f172ab3;--iso-glyph-bg-fire:#7f1d1dd9;--iso-glyph-line-fire:#fee2e2;--iso-nav-bg:#0f172a80;--iso-nav-border:#94a3b829;--iso-nav-item-fg:#e2e8f0d1;--iso-nav-item-hover:#94a3b814;--iso-nav-on-bg:#6366f12e;--iso-nav-on-border:#6366f173;--iso-nav-on-fg:#fff;--iso-nav-meta:#94a3b8a6;--iso-nav-clear-border:#94a3b84d;--iso-nav-title:#94a3b8b3;--iso-popover-bg:#0f172a99;--iso-popover-border:#94a3b838;--iso-popover-divider:#94a3b82e;--iso-popover-shadow:0 16px 48px #00000073;background:var(--iso-bg);border-radius:12px;width:100%;position:relative;overflow:hidden}[data-theme=light] .iso-scene{--iso-bg:#f1f5f9;--iso-floor-fill:#0f172a0a;--iso-floor-stroke:#475569;--iso-wall-stroke:#1e293b;--iso-room-fill:#ffffffa6;--iso-room-hover-fill:#fef9c3;--iso-furn-stroke:#475569;--iso-corridor-fill:#64748b1a;--iso-lift-fill:#6366f124;--iso-fire-fill:#ef44442e;--iso-text-dim:#64748b;--iso-text-strong:#0f172a;--iso-room-label-fill:#0f172ad9;--iso-room-label-stroke:#f8fafcf2;--iso-sensor-ok:#10b981;--iso-sensor-alarm:#ef4444;--iso-sensor-leak:#3b82f6;--iso-sensor-ts:#ca8a04;--iso-sensor-off:#94a3b8;--iso-sensor-icon-fill:#fff;--iso-volume-top-fill:#cbd5e1bf;--iso-volume-furn-fill:#94a3b88c;--iso-volume-lift-fill:#6366f14d;--iso-volume-fire-fill:#ef44444d;--iso-glyph-bg:#f8fafcf2;--iso-glyph-bg-fire:#fee2e2f2;--iso-glyph-line-fire:#b91c1c;--iso-nav-bg:#f1f5f9b3;--iso-nav-border:#0f172a1a;--iso-nav-item-fg:#0f172ac7;--iso-nav-item-hover:#0f172a0f;--iso-nav-on-bg:#6366f124;--iso-nav-on-border:#6366f18c;--iso-nav-on-fg:#1e293b;--iso-nav-meta:#64748bd9;--iso-nav-clear-border:#0f172a2e;--iso-nav-title:#64748bb3;--iso-popover-bg:#ffffffb3;--iso-popover-border:#0f172a1a;--iso-popover-divider:#0f172a1f;--iso-popover-shadow:0 16px 48px #0f172a2e}.iso-floor{transform-origin:50%;transform-box:fill-box;cursor:pointer;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .24s}.iso-scene[data-focus=none] .iso-floor{opacity:1}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"],.iso-scene[data-focus="1"] .iso-floor[data-stack="1"],.iso-scene[data-focus="2"] .iso-floor[data-stack="2"]{opacity:1;filter:drop-shadow(0 8px 24px #6366f140);transform:scale(1.08)translate(-20px)}.iso-scene[data-focus="0"] .iso-floor[data-stack="1"]{opacity:.07;transform:translateY(-100px)}.iso-scene[data-focus="0"] .iso-floor[data-stack="2"]{opacity:.07;transform:translateY(-200px)}.iso-scene[data-focus="1"] .iso-floor[data-stack="0"]{opacity:.07;transform:translateY(100px)}.iso-scene[data-focus="1"] .iso-floor[data-stack="2"]{opacity:.07;transform:translateY(-100px)}.iso-scene[data-focus="2"] .iso-floor[data-stack="0"]{opacity:.07;transform:translateY(200px)}.iso-scene[data-focus="2"] .iso-floor[data-stack="1"]{opacity:.07;transform:translateY(100px)}.iso-floor-plane{fill:var(--iso-bg);stroke:var(--iso-floor-stroke);stroke-width:1.4px}.iso-room{fill:var(--iso-room-fill);stroke:var(--iso-wall-stroke);stroke-width:1px;pointer-events:visiblePainted;transition:fill 80ms}.iso-room:hover{fill:var(--iso-room-hover-fill)}@keyframes iso-room-alarm-blink{0%,to{fill-opacity:1}50%{fill-opacity:.45}}.iso-room[data-alarm=smoke]{fill:var(--iso-sensor-alarm);animation:1.2s ease-in-out infinite iso-room-alarm-blink}.iso-room[data-alarm=leak]{fill:var(--iso-sensor-leak);animation:1.2s ease-in-out infinite iso-room-alarm-blink}.iso-room[data-alarm=smoke]:hover,.iso-room[data-alarm=leak]:hover{fill:var(--iso-room-hover-fill);animation:none}.iso-floor[data-active=false]{pointer-events:none}.iso-status-strip{display:none}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"] .iso-status-strip,.iso-scene[data-focus="1"] .iso-floor[data-stack="1"] .iso-status-strip,.iso-scene[data-focus="2"] .iso-floor[data-stack="2"] .iso-status-strip{display:block}.iso-status-segment-fill{fill:var(--iso-bg);stroke:var(--iso-floor-stroke);stroke-width:.6px;pointer-events:none}.iso-status-segment[data-state=active][data-type=sd] .iso-status-segment-fill{fill:var(--iso-sensor-alarm)}.iso-status-segment[data-state=active][data-type=lds] .iso-status-segment-fill{fill:var(--iso-sensor-leak)}.iso-status-segment[data-state=active][data-type=hps] .iso-status-segment-fill{fill:var(--iso-sensor-ok)}.iso-status-segment[data-state=active][data-type=ts] .iso-status-segment-fill{fill:#facc15}.iso-status-segment[data-state=active][data-type=sw] .iso-status-segment-fill{fill:#f3f4f6}.iso-status-segment-label{fill:var(--iso-text-strong);stroke:var(--iso-bg);stroke-width:2.2px;paint-order:stroke;letter-spacing:.05em;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:13px;font-weight:700}.iso-status-segment[data-state=off] .iso-status-segment-label{fill:var(--iso-text-dim)}.iso-floor .iso-volume-top,.iso-floor .iso-volume-ridge,.iso-floor .iso-volume-edge,.iso-floor .iso-furniture,.iso-floor .iso-window,.iso-floor .iso-window-inner,.iso-floor .iso-door,.iso-floor-label{pointer-events:none}.iso-corridor{fill:var(--iso-corridor-fill);stroke:var(--iso-floor-stroke);stroke-width:.8px;stroke-dasharray:4 3}.iso-lift{fill:var(--iso-lift-fill);stroke:var(--iso-wall-stroke);stroke-width:1px}.iso-fire-escape{fill:var(--iso-fire-fill);stroke:#ef4444;stroke-width:1.4px;stroke-dasharray:6 3}.iso-furniture{fill:none;stroke:var(--iso-furn-stroke);stroke-width:.9px;stroke-linecap:round;stroke-linejoin:round}.iso-volume-top{fill:var(--iso-volume-top-fill);stroke:var(--iso-wall-stroke);stroke-width:.9px;stroke-linejoin:round}.iso-volume-ridge{fill:none;stroke:var(--iso-wall-stroke);stroke-width:1.1px;stroke-linejoin:round;stroke-linecap:round}.iso-volume-edge{stroke:var(--iso-wall-stroke);stroke-width:.9px;stroke-linecap:round;opacity:.85}.iso-volume-furn .iso-volume-top{fill:var(--iso-volume-furn-fill);stroke:var(--iso-furn-stroke)}.iso-volume-furn .iso-volume-edge{stroke:var(--iso-furn-stroke)}.iso-volume-lift .iso-volume-top{fill:var(--iso-volume-lift-fill);stroke:var(--iso-wall-stroke)}.iso-volume-fire .iso-volume-top{fill:var(--iso-volume-fire-fill);stroke:#ef4444;stroke-dasharray:4 2}.iso-volume-fire .iso-volume-edge{stroke:#ef4444}.iso-glyph-bg-lift{fill:var(--iso-glyph-bg);stroke:var(--iso-wall-stroke);stroke-width:1.2px}.iso-glyph-line{fill:none;stroke:var(--iso-wall-stroke);stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round}.iso-glyph-bg-fire{fill:var(--iso-glyph-bg-fire);stroke:#ef4444;stroke-width:1.2px}.iso-glyph-line-fire{fill:none;stroke:var(--iso-glyph-line-fire);stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round}.iso-window{stroke:var(--iso-wall-stroke);stroke-width:1.6px}.iso-window-inner{stroke:var(--iso-floor-stroke);stroke-width:.6px}.iso-door{fill:none;stroke:var(--iso-wall-stroke);stroke-width:.9px;stroke-linecap:round}.iso-floor-label{fill:var(--iso-text-dim);letter-spacing:.16em;pointer-events:none;font-size:22px;font-weight:700}.iso-room-label{fill:var(--iso-room-label-fill);stroke:var(--iso-room-label-stroke);stroke-width:3.5px;paint-order:stroke;letter-spacing:.04em;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:24px;font-weight:700}.iso-rooftop-glyph{pointer-events:none}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"] .iso-floor-label,.iso-scene[data-focus="1"] .iso-floor[data-stack="1"] .iso-floor-label,.iso-scene[data-focus="2"] .iso-floor[data-stack="2"] .iso-floor-label{fill:var(--iso-text-strong)}.iso-sensor{cursor:pointer}.iso-sensor-dot{stroke:var(--iso-bg);stroke-width:1.2px}.iso-sensor[data-category=hps] .iso-sensor-dot{fill:var(--iso-sensor-ok)}.iso-sensor[data-category=smoke] .iso-sensor-dot{fill:var(--iso-sensor-alarm)}.iso-sensor[data-category=leak] .iso-sensor-dot{fill:var(--iso-sensor-leak)}.iso-sensor[data-category=ts] .iso-sensor-dot{fill:var(--iso-sensor-ts)}.iso-sensor[data-category=other] .iso-sensor-dot{fill:var(--iso-text-dim)}.iso-sensor-halo{fill:currentColor;opacity:0;pointer-events:none}.iso-sensor[data-category=hps]{color:var(--iso-sensor-ok)}.iso-sensor[data-category=smoke]{color:var(--iso-sensor-alarm)}.iso-sensor[data-category=leak]{color:var(--iso-sensor-leak)}.iso-sensor[data-category=ts]{color:var(--iso-sensor-ts)}.iso-sensor[data-state=alarm] .iso-sensor-halo{animation:1.2s ease-in-out infinite iso-sensor-pulse}@keyframes iso-sensor-pulse{0%{opacity:.55;transform:scale(.7)}60%{opacity:0;transform:scale(1.6)}to{opacity:0;transform:scale(1.6)}}.iso-popover{background:var(--iso-popover-bg);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1px solid var(--iso-popover-border);min-width:240px;max-width:320px;box-shadow:var(--iso-popover-shadow);color:var(--iso-text-strong);z-index:5;pointer-events:auto;border-radius:14px;padding:14px 16px;font-size:12.5px;line-height:1.45;animation:.18s ease-out iso-popover-in;position:absolute}@keyframes iso-popover-in{0%{opacity:0;transform:translate(-50%,-8px)scale(.96)}to{opacity:1;transform:translate(-50%)scale(1)}}.iso-popover-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.iso-popover-title{font-size:13px;font-weight:600}.iso-popover-subtitle{color:var(--iso-text-dim);font-size:11px}.iso-popover-row{justify-content:space-between;padding:3px 0;display:flex}.iso-popover-row-label{color:var(--iso-text-dim)}.iso-popover-row-value{color:var(--iso-text-strong);font-variant-numeric:tabular-nums}.iso-popover-spark{border-top:1px solid var(--iso-popover-divider);margin-top:8px;padding-top:8px}.iso-popover-spark-label{color:var(--iso-text-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:10.5px}.iso-popover-spark-svg{width:100%;height:36px;display:block}.iso-popover-spark-path{fill:none;stroke:#10b981;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.iso-popover-spark-path.alarm{stroke:var(--iso-sensor-alarm)}.iso-popover-close{width:18px;height:18px;color:var(--iso-text-dim);cursor:pointer;background:0 0;border:0;font-size:14px;line-height:1;position:absolute;top:8px;right:8px}.iso-popover-close:hover{color:var(--iso-text-strong)}.iso-hint{color:var(--iso-nav-title);letter-spacing:.04em;pointer-events:none;font-size:11px;position:absolute;top:12px;left:16px}.overview-panel{font-size:var(--text-sm);line-height:1.4}.overview-panel .panel-card-title{font-size:calc(var(--text-md) * 1.5);align-items:center;display:flex}.overview-section+.overview-section{border-top:1px solid var(--border-soft);margin-top:14px;padding-top:12px}.overview-section-head{text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);align-items:center;gap:6px;margin-bottom:8px;font-size:11px;display:flex}.overview-stat-list{flex-direction:column;gap:2px;display:flex}.overview-stat-row{border-radius:6px;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;padding:4px 4px 4px 6px;display:grid}.overview-stat-row:hover{background:var(--surface-hover)}.overview-stat-icon{color:var(--text-muted);align-items:center;display:inline-flex}.overview-stat-label{color:var(--text);font-weight:500}.overview-stat-value{color:var(--text);font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.overview-stat-row[data-tone=alarm] .overview-stat-value{color:var(--danger);font-weight:700}.overview-stat-row[data-tone=off] .overview-stat-value{color:var(--text-faint);font-weight:500}.overview-stat-row[data-tone=ok] .overview-stat-value{color:#10b981}.overview-tree{flex-direction:column;gap:2px;display:flex}.overview-tree-row{width:100%;color:var(--text);font-size:var(--text-sm);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;grid-template-columns:16px 1fr auto;align-items:center;gap:8px;padding:6px 8px 6px 4px;font-weight:500;transition:background .1s,border-color .1s;display:grid}.overview-tree-row:hover,.overview-tree-row.is-hovered{background:var(--surface-hover)}.overview-tree-row.is-selected{background:var(--primary-soft);border-color:var(--primary)}.overview-tree-chevron{color:var(--text-muted);display:inline-flex}.overview-tree-name{color:var(--text)}.overview-tree-meta{color:var(--text-muted);letter-spacing:.04em;font-variant-numeric:tabular-nums;font-size:11px}.overview-tree-meta[data-status=occupied]{color:#10b981;letter-spacing:.06em;font-weight:700}.overview-tree-meta[data-status=free]{color:var(--text-faint)}.overview-tree-body{flex-direction:column;gap:2px;padding:6px 4px 8px 26px;display:flex}.overview-empty{color:var(--text-muted);font-size:var(--text-sm);padding:6px 0}.overview-alarm-list{flex-direction:column;gap:4px;display:flex}.overview-alarm-row{background:var(--surface-hover);border-left:3px solid #0000;border-radius:6px;grid-template-columns:18px auto auto 1fr;align-items:center;gap:8px;padding:6px 8px;display:grid}.overview-alarm-row[data-kind=smoke]{border-left-color:var(--danger);color:var(--danger)}.overview-alarm-row[data-kind=leak]{color:#3b82f6;border-left-color:#3b82f6}.overview-alarm-glyph{align-items:center;display:inline-flex}.overview-alarm-loc{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:700}.overview-alarm-type{letter-spacing:.08em;background:#0000000f;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:600}.overview-alarm-time{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;margin-left:auto;font-size:11px}.iso-scene[data-heatmap=true] .iso-volume-furn,.iso-scene[data-heatmap=true] .iso-volume-lift,.iso-scene[data-heatmap=true] .iso-volume-fire,.iso-scene[data-heatmap=true] .iso-furniture,.iso-scene[data-heatmap=true] .iso-rooftop-glyph,.iso-scene[data-heatmap=true] .iso-lift,.iso-scene[data-heatmap=true] .iso-fire-escape,.iso-scene[data-heatmap=true] .iso-door,.iso-scene[data-heatmap=true] .iso-window,.iso-scene[data-heatmap=true] .iso-window-inner,.iso-scene[data-heatmap=true] .iso-sensor,.iso-scene[data-heatmap=true] .iso-status-strip{display:none}.iso-room[data-heatmap=true],.iso-room[data-heatmap=true]:hover{transition:fill .12s;fill:var(--heatmap-fill,var(--iso-room-fill))!important;animation:none!important}.iso-corridor[data-heatmap=true]{stroke-dasharray:0;fill:var(--heatmap-fill,var(--iso-corridor-fill))!important}.iso-legend-heatmap{flex-direction:column;gap:4px;display:flex}.iso-legend-heatmap-row{font-variant-numeric:tabular-nums;color:var(--iso-text-strong);align-items:center;gap:8px;font-size:11.5px;display:flex}.iso-legend-heatmap-swatch{border:1px solid var(--iso-popover-border);border-radius:3px;width:14px;height:14px;display:inline-block}.iso-room-tooltip{z-index:9000;background:var(--surface);border:1px solid var(--border,var(--iso-popover-border));min-width:150px;color:var(--text,var(--iso-text-strong));pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:8px;padding:6px 8px;font-size:11px;line-height:1.35;position:fixed;box-shadow:0 8px 24px #00000059}[data-theme=light] .iso-room-tooltip{box-shadow:0 8px 24px #0f172a2e}.iso-room-tooltip-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.iso-room-tooltip-title{letter-spacing:.02em;font-weight:700}.iso-room-tooltip-status{letter-spacing:.06em;border-radius:999px;padding:1px 5px;font-size:9.5px;font-weight:700}.iso-room-tooltip-status[data-status=occupied]{color:#064e3b;background:#10b981d9}.iso-room-tooltip-status[data-status=free]{color:var(--text-muted);background:#94a3b82e}.iso-room-tooltip-temp{border-bottom:1px solid var(--border-soft);font-variant-numeric:tabular-nums;align-items:center;gap:5px;margin-bottom:4px;padding-bottom:4px;font-weight:700;display:flex}.iso-room-tooltip-temp-dot{border:1px solid var(--border);border-radius:50%;width:8px;height:8px}.iso-room-tooltip-rows{grid-template-columns:28px 1fr;gap:1px 6px;display:grid}.iso-room-tooltip-row{display:contents}.iso-room-tooltip-row-label{color:var(--text-muted);letter-spacing:.04em;font-size:10px;font-weight:600}.iso-room-tooltip-row-value{text-align:right;font-variant-numeric:tabular-nums}.iso-room-tooltip-row[data-tone=alarm] .iso-room-tooltip-row-value{color:var(--danger);font-weight:700}.iso-room-tooltip-row[data-tone=off] .iso-room-tooltip-row-value{color:var(--text-muted)}.iso-room-tooltip-row[data-tone=ok] .iso-room-tooltip-row-value{color:#10b981}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"] .iso-room-content[data-occupied=false],.iso-scene[data-focus="1"] .iso-floor[data-stack="1"] .iso-room-content[data-occupied=false],.iso-scene[data-focus="2"] .iso-floor[data-stack="2"] .iso-room-content[data-occupied=false]{opacity:.3}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"] .iso-room-content[data-occupied=true] .iso-volume-ridge,.iso-scene[data-focus="1"] .iso-floor[data-stack="1"] .iso-room-content[data-occupied=true] .iso-volume-ridge,.iso-scene[data-focus="2"] .iso-floor[data-stack="2"] .iso-room-content[data-occupied=true] .iso-volume-ridge{stroke-width:1.21px}.iso-scene[data-focus="0"] .iso-floor[data-stack="0"] .iso-room-content[data-occupied=true] .iso-volume-edge,.iso-scene[data-focus="1"] .iso-floor[data-stack="1"] .iso-room-content[data-occupied=true] .iso-volume-edge,.iso-scene[data-focus="2"] .iso-floor[data-stack="2"] .iso-room-content[data-occupied=true] .iso-volume-edge{stroke-width:.99px}.iso-floor-nav-heatmap{letter-spacing:.04em;color:var(--iso-nav-item-fg);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin-top:auto;padding:8px 12px;font-size:12px;display:flex}.iso-floor-nav-heatmap input{cursor:pointer;width:14px;height:14px;accent-color:var(--iso-sensor-ok);margin:0}.iso-floor-nav-heatmap:hover{color:var(--iso-text-strong)}.iso-legend{background:var(--iso-popover-bg);-webkit-backdrop-filter:blur(10px)saturate(140%);border:1px solid var(--iso-popover-border);color:var(--iso-text-strong);letter-spacing:.02em;pointer-events:none;z-index:4;opacity:0;border-radius:10px;padding:10px 14px;font-size:12px;line-height:1.55;transition:opacity .2s,transform .2s;position:absolute;bottom:16px;left:16px;transform:translateY(8px);box-shadow:0 6px 18px #00000040}.iso-scene[data-focus="0"] .iso-legend,.iso-scene[data-focus="1"] .iso-legend,.iso-scene[data-focus="2"] .iso-legend{opacity:1;transform:translateY(0)}.iso-legend-title{text-transform:uppercase;letter-spacing:.14em;color:var(--iso-nav-title);margin-bottom:6px;font-size:10.5px}.iso-legend-grid{grid-template-columns:auto auto 1fr;align-items:baseline;gap:2px 8px;display:grid}.iso-legend-abbr{font-variant-numeric:tabular-nums;text-align:right;font-weight:700}.iso-legend-abbr[data-type=sd]{color:var(--iso-sensor-alarm)}.iso-legend-abbr[data-type=lds]{color:var(--iso-sensor-leak)}.iso-legend-abbr[data-type=hps]{color:var(--iso-sensor-ok)}.iso-legend-abbr[data-type=ts]{color:#facc15}.iso-legend-abbr[data-type=sw]{color:var(--iso-text-strong)}.iso-legend-dash{color:var(--iso-text-dim);text-align:center}.iso-legend-name{color:var(--iso-text-strong)}.iso-stage{background:var(--iso-bg);border-radius:12px;align-items:stretch;gap:0;width:100%;display:flex;overflow:hidden}.iso-stage>.iso-scene{border-radius:0;flex:auto;min-width:0}.iso-floor-nav{background:var(--iso-nav-bg);border-left:1px solid var(--iso-nav-border);color:var(--iso-text-strong);flex-direction:column;flex:0 0 168px;gap:6px;padding:16px 12px;display:flex}.iso-floor-nav-title{text-transform:uppercase;letter-spacing:.12em;color:var(--iso-nav-title);margin-bottom:4px;padding-left:8px;font-size:10.5px}.iso-floor-nav-item{color:var(--iso-nav-item-fg);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:500;transition:background-color .12s,border-color .12s,color .12s;display:flex}.iso-floor-nav-item:hover{background:var(--iso-nav-item-hover);color:var(--iso-text-strong)}.iso-floor-nav-item.on{background:var(--iso-nav-on-bg);border-color:var(--iso-nav-on-border);color:var(--iso-nav-on-fg)}.iso-floor-nav-meta{color:var(--iso-nav-meta);letter-spacing:.04em;font-size:10.5px}.iso-floor-nav-clear{border:1px dashed var(--iso-nav-clear-border);color:var(--iso-text-dim);letter-spacing:.04em;cursor:pointer;background:0 0;border-radius:8px;margin-top:auto;padding:8px 12px;font-size:11px}.iso-floor-nav-clear:hover{color:var(--iso-text-strong);border-color:var(--iso-nav-on-border)}.cfg-root{flex-direction:column;gap:12px;height:calc(100vh - 64px);min-height:520px;display:flex}.cfg-section{gap:12px;min-height:0;display:flex}.cfg-section-top{flex:70 1 0}.cfg-section-bottom{flex:30 1 0}.cfg-pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;min-width:0;min-height:0;display:flex}.cfg-pane-left{flex:0 0 280px}.cfg-pane-right{flex:auto}.cfg-pane-head{border-bottom:1px solid var(--border-soft);font-size:var(--text-sm);color:var(--text-strong);align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:flex}.cfg-pane-head .cfg-pane-actions{gap:4px;margin-left:auto;display:inline-flex}.cfg-pane-head .cfg-pane-counter{color:var(--text-muted);font-weight:500;font-size:var(--text-xs);margin-left:auto}.cfg-pane-body{flex:auto;padding:6px 4px;overflow:auto}.cfg-tree-row{border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;color:var(--text);-webkit-user-select:none;user-select:none;border:1px solid #0000;align-items:center;gap:6px;padding:5px 10px 5px 8px;display:flex}.cfg-tree-row:hover{background:var(--surface-hover)}.cfg-tree-row.is-selected{background:var(--primary-soft);border-color:var(--primary);color:var(--text-strong);font-weight:600}.cfg-tree-row .cfg-tree-chev{width:14px;height:14px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.cfg-tree-row .cfg-tree-chev svg{transition:transform .12s}.cfg-tree-row .cfg-tree-icon{width:16px;color:var(--text-muted);justify-content:center;align-items:center;display:inline-flex}.cfg-tree-row.is-selected .cfg-tree-icon{color:var(--primary)}.cfg-tree-row .cfg-tree-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.cfg-tree-row .cfg-tree-meta{font-variant-numeric:tabular-nums;font-size:var(--text-xs);color:var(--text-muted)}.cfg-tree-section-head{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:10px 10px 4px;font-size:10.5px;font-weight:600}.cfg-tree-section-head.cfg-groups-section{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.cfg-tree-row.cfg-group-readonly{cursor:default;color:var(--text-muted)}.cfg-tree-row.cfg-group-readonly:hover{background:0 0}.cfg-rule-row{border-bottom:1px solid var(--border-soft);cursor:pointer;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:12px;padding:8px 12px;display:grid}.cfg-rule-row:hover{background:var(--surface-hover)}.cfg-rule-icons{align-items:center;gap:3px;display:inline-flex}.cfg-rule-icons-dot{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.cfg-rule-text{flex-direction:column;gap:2px;min-width:0;display:flex}.cfg-rule-text-title{color:var(--text-strong);font-weight:600;font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cfg-rule-text-sub{font-size:var(--text-xs);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cfg-rule-presets{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap;font-weight:500}.cfg-rule-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.cfg-rule-actions{gap:4px;display:inline-flex}.cfg-iconbtn{border-radius:var(--radius-sm);cursor:pointer;width:26px;height:26px;color:var(--text-muted);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.cfg-iconbtn:hover{background:var(--surface-hover);color:var(--text-strong)}.cfg-iconbtn.danger:hover{color:var(--danger)}.cfg-preset-group{border-bottom:1px solid var(--border-soft);padding:4px 0}.cfg-preset-group:last-child{border-bottom:0}.cfg-preset-group-head{font-weight:600;font-size:var(--text-sm);color:var(--text-strong);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 10px 8px 6px;display:flex}.cfg-preset-group-head .cfg-tree-chev{color:var(--text-muted)}.cfg-preset-group-head:hover{background:var(--surface-hover)}.cfg-preset-group-icon{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.cfg-preset-group-name{flex:1}.cfg-preset-group-count{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500}.cfg-preset-add{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;height:24px;color:var(--text-muted);letter-spacing:.02em;white-space:nowrap;justify-content:center;align-items:center;gap:4px;padding:0 12px;font-size:11.5px;font-weight:500;line-height:1;display:inline-flex}.cfg-preset-add:hover{color:var(--primary);border-color:var(--primary)}.cfg-preset-row{font-size:var(--text-sm);cursor:pointer;border-radius:var(--radius-sm);grid-template-columns:1fr auto auto;align-items:center;gap:8px;margin:0 4px;padding:5px 10px 5px 28px;display:grid}.cfg-preset-row:hover{background:var(--surface-hover)}.cfg-preset-row.is-selected{background:var(--primary-soft);color:var(--text-strong);font-weight:600}.cfg-preset-row-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cfg-editor-empty{color:var(--text-muted);font-size:var(--text-sm);text-align:center;padding:24px}.cfg-editor-form{flex-direction:column;gap:12px;padding:12px 14px;display:flex}.cfg-editor-row{flex-direction:column;gap:4px;display:flex}.cfg-editor-row label{font-size:var(--text-xs);color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-weight:600}.cfg-editor-row input,.cfg-editor-row select,.cfg-editor-row textarea{font:inherit;font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:6px 8px}.cfg-editor-row textarea{resize:vertical;min-height:50px}.cfg-editor-grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.cfg-editor-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.cfg-editor-checkrow{align-items:center;gap:8px;display:flex}.cfg-editor-actions-list{flex-direction:column;gap:6px;display:flex}.cfg-editor-checkbox{font-size:var(--text-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.cfg-editor-checkbox input{margin:0}.cfg-editor-empty-state{text-align:center;color:var(--text-muted);font-size:var(--text-sm);padding:28px}.cfg-empty-state{text-align:center;color:var(--text-muted);font-size:var(--text-sm);padding:24px}.cfg-preset-pick{border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:2px;max-height:240px;padding:4px;display:flex;overflow:auto}.cfg-preset-pick-row{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);align-items:center;gap:8px;padding:5px 8px;display:flex}.cfg-preset-pick-row:hover{background:var(--surface-hover)}.cfg-preset-pick-row.is-selected{background:var(--primary-soft);color:var(--text-strong)}.cfg-preset-pick-row .cfg-preset-pick-icon{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.cfg-preset-pick-empty{text-align:center;font-size:var(--text-xs);color:var(--text-muted);padding:20px}.page-scope .listpage.cfg-listpage>.listpage-body{flex-direction:column;padding:0 12px 12px;display:flex}
