:root{--bg: #0a0c0e;--surface-1: #111418;--surface-2: #161a1f;--surface-3: #1c2128;--border: #242a31;--border-strong: #2f3742;--text: #e6edf3;--text-dim: #9aa7b2;--text-faint: #5c6873;--accent: #2dd4bf;--accent-bright: #5eead4;--accent-dim: #0f3b38;--accent-glow: rgba(45, 212, 191, .15);--ok: #34d399;--warn: #fbbf24;--crit: #fb7185;--crit-dim: #3a1620;--font-ui: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--r: 6px;--gap: 8px;--pad: 16px;--elev-1: inset 0 1px 0 rgba(210, 235, 255, .055), 0 1px 2px rgba(0, 0, 0, .5), 0 6px 14px rgba(0, 0, 0, .38), 0 20px 40px rgba(0, 0, 0, .28);--elev-2: inset 0 1px 0 rgba(210, 235, 255, .08), 0 2px 4px rgba(0, 0, 0, .55), 0 12px 26px rgba(0, 0, 0, .46), 0 36px 68px rgba(0, 0, 0, .36);--edge-light: rgba(94, 234, 212, .2);--surface-grad: linear-gradient(145deg, var(--surface-2) 0%, var(--surface-1) 100%);--surface-grad-raised: linear-gradient(145deg, var(--surface-3) 0%, var(--surface-2) 100%)}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background-color:var(--bg);background-image:radial-gradient(1200px 480px at 70% -10%,rgba(45,212,191,.06),transparent 60%),linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:100% 100%,28px 28px,28px 28px;color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-feature-settings:"cv05" 1,"ss01" 1}::selection{background:var(--accent-glow);color:var(--accent-bright)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}::-webkit-scrollbar-track{background:transparent}.label{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-faint);margin:0 0 10px;font-weight:500}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.shell{max-width:1180px;margin:0 auto;padding:0 24px 64px}.topbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;row-gap:10px;padding:18px 0 16px;border-bottom:1px solid var(--border);margin-bottom:28px;position:sticky;top:0;background:linear-gradient(var(--bg),rgba(10,12,14,.86));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10}.topbar img{height:30px;opacity:.95}.topbar h1{font-size:14px;font-weight:600;letter-spacing:.04em;margin:0;flex:1}.topbar .sub{color:var(--text-faint);font-weight:400}.topbar h1 .byline{display:block;font-family:var(--font-ui);font-size:11px;letter-spacing:.08em;line-height:1.3;margin-top:3px}.topbar-actions{display:contents}.menu-btn{display:none;font-family:var(--font-ui);font-size:16px;line-height:1;padding:7px 11px;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;align-items:center}.menu-btn:hover{border-color:var(--accent-dim);color:var(--accent-bright)}.menu-btn[aria-expanded=true]{border-color:var(--accent);color:var(--accent-bright)}.live{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:var(--text-dim);text-transform:uppercase}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent-glow);animation:pulse 2.2s infinite}@keyframes pulse{0%{box-shadow:0 0 #2dd4bf66}70%{box-shadow:0 0 0 7px #2dd4bf00}to{box-shadow:0 0 #2dd4bf00}}.badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid var(--accent-dim);color:var(--accent-bright);background:#2dd4bf0f}.section{margin-top:32px}.sensor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(380px,100%),1fr));gap:16px}.sortable{display:flex;gap:8px;align-items:stretch}.sortable>.card,.sortable>.summary-card{flex:1;min-width:0}.drag-handle{flex:none;width:24px;display:grid;place-items:center;padding:0;cursor:grab;border:1px solid var(--accent-dim);border-radius:6px;background:var(--surface-2);color:var(--accent-bright);font-size:15px;line-height:1;transition:background .15s,color .15s,border-color .15s}.drag-handle:hover{background:var(--accent-dim);border-color:var(--accent)}.drag-handle:active{cursor:grabbing}.sortable.is-dragging{opacity:.4}.sortable.is-over{outline:2px dashed var(--accent);outline-offset:3px;border-radius:var(--r)}.card{background:var(--surface-grad);border:1px solid var(--border);border-top-color:var(--edge-light);border-bottom-color:#00000073;border-radius:var(--r);padding:var(--pad);position:relative;overflow:hidden;box-shadow:var(--elev-1)}.card:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;background:linear-gradient(90deg,transparent,var(--accent-dim),transparent)}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}.card-head .type{font-family:var(--font-ui);font-size:14px;font-weight:600;color:var(--text);letter-spacing:.01em}.card-head .model{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;color:var(--text-faint);border:1px solid var(--border);border-radius:4px;padding:1px 6px;margin-left:8px;vertical-align:middle}.card-head .eui{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);white-space:nowrap}.name-block{min-width:0;flex:1 1 14ch}.name-row{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.name-edit{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.name-input{width:200px;max-width:100%;padding:5px 9px;font-size:14px}.icon-btn-xs{width:22px;height:22px;font-size:11px;opacity:0;transition:opacity .15s,color .15s,border-color .15s,background .15s}.card:hover .icon-btn-xs{opacity:1}.tally{display:flex;align-items:baseline;gap:8px;margin:0 0 14px;padding:10px 14px;background:var(--accent-glow);border:1px solid var(--accent-dim);border-radius:var(--r)}.tally-value{font-family:var(--font-mono);font-size:22px;font-weight:700;line-height:1;color:var(--accent-bright);font-variant-numeric:tabular-nums}.tally-label{font-size:13px;font-weight:600;color:var(--text)}.tally-range{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);margin-left:auto}.chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 4px}.range-group{display:inline-flex;gap:2px;background:var(--surface-3);border:1px solid var(--border);border-radius:6px;padding:2px}.range-btn{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;padding:5px 10px;border:none;background:transparent;color:var(--text-dim);border-radius:4px;cursor:pointer;transition:background .12s,color .12s}.range-btn:hover{color:var(--text)}.range-btn.is-active{background:#2dd4bf1f;color:var(--accent-bright)}.btn-sm{padding:5px 11px;font-family:var(--font-mono);font-size:11px}.btn-sm:disabled{opacity:.4;cursor:not-allowed}.card-head-right{display:flex;align-items:center;gap:10px;flex:0 1 auto;min-width:0;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}.icon-btn{background:var(--surface-3);border:1px solid var(--border);color:var(--text-dim);border-radius:5px;width:28px;height:28px;cursor:pointer;font-size:14px;line-height:1;transition:border-color .15s,color .15s,background .15s}.icon-btn:hover{color:var(--accent-bright);border-color:var(--accent-dim);background:#2dd4bf14}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#050709a8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:24px}.modal{width:100%;max-width:440px;background:linear-gradient(180deg,var(--surface-1),var(--surface-2));border:1px solid var(--border-strong);border-radius:10px;padding:24px;position:relative;overflow:hidden}.modal:before{content:"";position:absolute;inset:-1px -1px auto -1px;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.modal-head h3{margin:2px 0 0;font-size:17px}.field-label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}.channel-row{display:flex;gap:8px}.channel-chip{font-family:var(--font-ui);font-size:13px;padding:7px 14px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);cursor:pointer;transition:all .15s}.channel-chip.is-on{border-color:var(--accent);color:var(--accent-bright);background:#2dd4bf1a}.band-ref{margin-top:14px}.band-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.band-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:5px;border:1px solid transparent;font-size:12px;color:var(--text-dim)}.band-row.is-on{border-color:var(--border-strong);background:var(--surface-2);color:var(--text)}.band-range{flex:none;min-width:76px;font-size:11px}.band-text{flex:1}.band-tag{flex:none;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-bright)}@media (max-width: 380px){.band-row{flex-wrap:wrap;row-gap:2px}.band-text{flex:1 0 100%;padding-left:16px}}.toggle-row{display:flex;align-items:center;gap:8px;margin-top:16px;font-size:14px;cursor:pointer}.toggle-row input{width:16px;height:16px;accent-color:var(--accent)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.audit-list{list-style:none;margin:6px 0 0;padding:0;max-height:60vh;overflow-y:auto}.audit-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--border)}.audit-row:last-child{border-bottom:none}.audit-action{font-size:14px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:flex;flex-direction:column;gap:2px;padding:7px 11px;background:var(--surface-3);border:1px solid var(--border);border-radius:5px;min-width:84px;text-align:left}.chip-btn{cursor:pointer;transition:border-color .12s,background .12s;font-family:inherit}.chip-btn:hover{border-color:var(--border-strong)}.chip-btn.is-active{border-color:var(--accent);background:#2dd4bf14}.chip-btn.is-active .k{color:var(--accent)}.chip .k{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--text-faint)}.chip .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:600;color:var(--accent-bright);line-height:1.1}.pills{display:flex;flex-wrap:wrap;gap:10px}.pill{display:inline-flex;align-items:center;gap:9px;padding:8px 12px;border-radius:5px;background:var(--surface-1);border:1px solid var(--border);font-family:var(--font-mono);font-size:12px}.pill .dot{width:8px;height:8px;border-radius:50%;flex:none}.pill .name{color:var(--text-dim);letter-spacing:.04em}.pill .lvl{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.pill--ok .dot{background:var(--ok);box-shadow:0 0 8px #34d39980}.pill--warn .dot{background:var(--warn);box-shadow:0 0 8px #fbbf2480}.pill--crit .dot{background:var(--crit);box-shadow:0 0 8px #fb718580}.pill--none .dot{background:var(--text-faint)}.summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.summary-card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;background:var(--surface-grad);border:1px solid var(--border);border-top-color:var(--edge-light);border-bottom-color:#00000073;border-radius:var(--r);box-shadow:var(--elev-1);transition:box-shadow .18s,border-color .18s,transform .18s}.summary-card:hover{box-shadow:var(--elev-2)}.summary-top{display:flex;align-items:center;gap:8px}.status-dot{width:8px;height:8px;border-radius:50%;flex:none}.status-dot--ok{background:var(--ok);box-shadow:0 0 8px #34d39980}.status-dot--warn{background:var(--warn);box-shadow:0 0 8px #fbbf2480}.status-dot--crit{background:var(--crit);box-shadow:0 0 8px #fb718580}.status-dot--none{background:var(--text-faint)}.summary-name{font-size:13px;font-weight:600;color:var(--text)}.summary-status{font-family:var(--font-mono);font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent-bright)}.summary-status--warn{color:var(--warn)}.summary-status--crit{color:var(--crit)}.summary-status--none{color:var(--text-faint)}.summary-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.summary-batt{font-family:var(--font-mono);font-size:11px;color:var(--text-faint)}.summary-batt.batt--warn{color:var(--warn)}.summary-batt.batt--crit{color:var(--crit)}.conn{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em}.conn--on{color:var(--ok)}.conn--off{color:var(--crit)}.summary-age{font-size:11px}.summary-grid--roomy{gap:12px;grid-template-columns:minmax(0,1fr)}@media (min-width: 620px){.summary-grid--roomy{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.summary-grid--roomy{grid-template-columns:repeat(4,minmax(0,1fr))}}.summary-card--roomy{padding:18px;gap:8px}.summary-card--roomy .summary-name{font-size:14px}.summary-card--roomy .summary-status{font-size:15px;line-height:1.35;letter-spacing:-.01em}.summary-sub{font-size:13px;color:var(--text-dim);font-variant-numeric:tabular-nums}.tz-clock{color:var(--text-dim);margin-left:4px;flex:none;vertical-align:middle}.tz-now{font-size:12px;color:var(--text-dim);letter-spacing:.02em;flex:none}.lang-warn{font-size:11px;color:var(--warn);white-space:nowrap;align-self:center;padding-left:6px;cursor:help}.summary-note{font-size:12px;line-height:1.35;color:var(--text-dim)}.summary-card--roomy .summary-foot{margin-top:auto;padding-top:6px}.summary-card--roomy .summary-age,.summary-card--roomy .summary-batt{color:var(--text-dim)}.summary-card--roomy .summary-batt.batt--warn{color:var(--warn)}.summary-card--roomy .summary-batt.batt--crit{color:var(--crit)}.summary-activity{font-size:11px;color:var(--text-dim)}.summary-card--btn{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.summary-card--btn:hover{border-color:var(--border-strong);box-shadow:0 10px 26px -18px #000000e6;transform:translateY(-2px)}.summary-card--btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skel-card{pointer-events:none}.skel-handle{pointer-events:none;border-color:transparent;background:none}.skel{display:block;border-radius:4px;background:linear-gradient(90deg,var(--surface-3) 0%,var(--border-strong) 40%,var(--surface-3) 80%);background-size:300% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}.skel-dot{width:8px;height:8px;border-radius:50%;flex:none}.skel-line{height:11px}.skel-line--lg{height:17px}@keyframes skel-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.sensor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;pointer-events:none;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:overlay-in .17s ease-out}.sensor-modal-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:41;pointer-events:none;display:grid;place-items:center;padding:24px}.sensor-modal{pointer-events:auto;width:min(70vw,900px);max-height:88vh;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--surface-1),var(--surface-2));border:1px solid var(--border-strong);border-top:2px solid var(--accent);border-radius:10px;box-shadow:0 40px 90px -40px #000000f2;animation:modal-in .17s cubic-bezier(.22,.61,.36,1)}.sensor-modal-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 10px;border-bottom:1px solid var(--border)}.sensor-modal-title{margin:0;font-family:var(--font-ui);font-size:15px;font-weight:600;color:var(--text);letter-spacing:.01em}.sensor-modal-body{flex:1;overflow-y:auto;padding:14px 16px 20px;animation:content-in .16s ease-out}.sensor-modal-body .chip .k,.sensor-modal-body .faint,.sensor-modal-body .label{color:var(--text-dim)}.sensor-modal-body>.card{border:0;background:none;padding:0;border-radius:0;animation:none}.sensor-modal-body>.card:before{display:none}.sensor-modal-body>.card .card-head .type{display:none}.sensor-modal-body>.card .card-head{margin-bottom:10px}.sensor-overlay.is-closing{animation:overlay-in .16s ease-in reverse forwards}.sensor-modal.is-closing{animation:modal-in .16s ease-in reverse forwards}@keyframes overlay-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:scale(.96)}}@keyframes content-in{0%{opacity:0}}@media (max-width: 720px){.sensor-modal-layer{padding:10px}.sensor-modal{width:95vw;max-height:92vh}}.actuator{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--border);flex-wrap:wrap}.actuator-msg{font-family:var(--font-mono);font-size:12px;color:var(--text-dim)}.alerts{position:relative;z-index:45;border:1px solid var(--crit-dim);border-left:3px solid var(--crit);background:linear-gradient(90deg,rgba(251,113,133,.08),transparent);border-radius:var(--r);padding:12px 16px;margin-bottom:24px}.alerts .row{display:flex;align-items:center;gap:10px;font-size:13px;padding:3px 0}.alerts .row .tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--crit);border:1px solid var(--crit-dim);border-radius:4px;padding:2px 6px}.ack-btn{margin-left:auto;border-color:var(--crit-dim);color:var(--crit)}.ack-btn:hover{border-color:var(--crit);background:var(--crit-dim)}.alerts--ok{z-index:auto;border-color:#34d39938;border-left:2px solid var(--ok);background:linear-gradient(90deg,rgba(52,211,153,.06),transparent)}.alerts--ok .row .tag{color:var(--ok);border-color:#34d39938}@media (prefers-reduced-motion: reduce){.sensor-overlay,.sensor-modal,.sensor-modal-body,.sensor-overlay.is-closing,.sensor-modal.is-closing{animation:none}.summary-card--btn{transition:none}.summary-card--btn:hover{transform:none}.skel{animation:none;background:var(--surface-3)}}.btn{font-family:var(--font-ui);font-size:13px;font-weight:500;letter-spacing:.02em;padding:8px 14px;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;transition:border-color .15s,background .15s,color .15s}.btn:hover{border-color:var(--text-faint);background:var(--surface-3)}.btn-accent{width:100%;border-color:var(--accent-dim);background:#2dd4bf1a;color:var(--accent-bright)}.btn-accent:hover{background:#2dd4bf29;border-color:var(--accent)}.btn-link{display:block;width:100%;margin-top:12px;padding:4px;border:none;background:none;color:var(--text-dim);font-family:var(--font-ui);font-size:13px;cursor:pointer;transition:color .15s}.btn-link:hover{color:var(--accent-bright)}.field{display:block;margin:12px 0}.input{width:100%;font-family:var(--font-ui);font-size:14px;padding:11px 13px;border-radius:5px;border:1px solid var(--border-strong);background:var(--bg);color:var(--text);transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--text-faint)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:380px;background:linear-gradient(180deg,var(--surface-1),var(--surface-2));border:1px solid var(--border);border-radius:10px;padding:32px;position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;inset:-1px -1px auto -1px;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent)}.login-card img{height:34px;margin-bottom:22px}.login-card h2{font-size:18px;font-weight:600;margin:0 0 4px;letter-spacing:.01em}.login-card .hint{color:var(--text-dim);font-size:13px;margin:0 0 20px}.qr{display:block;margin:8px auto 14px;border-radius:8px;border:1px solid var(--border-strong);background:#fff;padding:8px}.secret-manual{margin:4px 0 16px;text-align:center}.secret-manual .label{display:block;margin-bottom:6px}.secret-code{display:inline-block;font-family:var(--font-mono);font-size:13px;letter-spacing:.14em;color:var(--accent-bright);background:var(--surface-3);border:1px solid var(--border);border-radius:5px;padding:8px 12px;-webkit-user-select:all;user-select:all;word-break:break-all;cursor:text}.error{color:var(--crit);font-family:var(--font-mono);font-size:12px;background:var(--crit-dim);border:1px solid rgba(251,113,133,.25);border-radius:5px;padding:8px 11px;margin:0 0 14px}.ae-wrap{position:relative;display:inline-flex}.ae-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:20;width:300px;display:flex;flex-direction:column;gap:10px;padding:14px;background:linear-gradient(180deg,var(--surface-1),var(--surface-2));border:1px solid var(--border-strong, var(--border));border-radius:var(--r);box-shadow:0 10px 30px #0006}.ae-row{display:flex;flex-direction:column;gap:4px;margin:0}.ae-k{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.ae-v{font-size:13px;color:var(--text);word-break:break-all}.ae-err{color:var(--crit);font-family:var(--font-mono);font-size:11px;margin:0}.ae-actions{display:flex;gap:8px;flex-wrap:wrap}.empty{color:var(--text-faint);font-family:var(--font-mono);font-size:13px;padding:24px;border:1px dashed var(--border-strong);border-radius:var(--r);text-align:center}.loading{color:var(--text-dim);font-family:var(--font-mono);padding:40px;letter-spacing:.1em}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rise{animation:rise .4s cubic-bezier(.2,.7,.2,1) both}.property-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px;padding-bottom:10px;border-bottom:1px solid var(--border)}.property-tab{font-family:var(--font-ui);font-size:14px;font-weight:600;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-radius:7px;padding:7px 16px;cursor:pointer;letter-spacing:-.01em;transition:color .12s,border-color .12s,background .12s}.property-tab:hover{color:var(--text);border-color:var(--border-strong)}.property-tab.is-active{color:var(--text);background:var(--surface-3);border-color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}[data-theme=concierge] .property-tab{font-family:Fraunces,serif;font-weight:500}.property-tabs+.property-section{margin-top:20px}.property-section{margin-top:30px}.property-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border)}.property-title{font-family:var(--font-ui);font-size:18px;font-weight:600;color:var(--text);letter-spacing:-.01em}.property-head .icon-btn-xs{opacity:.7}.property-head .icon-btn-xs:hover{opacity:1}.property-section .summary-grid{margin-bottom:18px}[data-theme=concierge] .property-title{font-family:Fraunces,serif;font-weight:500;letter-spacing:0}.prop-select{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);background:var(--surface-3);border:1px solid var(--border);border-radius:5px;padding:3px 6px;cursor:pointer;max-width:min(180px,100%)}.prop-select:hover{border-color:var(--border-strong);color:var(--text)}@media (max-width: 560px){.shell{padding:0 14px 48px}.topbar{position:static;gap:10px;padding:12px 0;margin-bottom:18px}.topbar h1{font-size:13px}.menu-btn{display:inline-flex}.topbar-actions{display:none;position:absolute;top:100%;right:0;z-index:30;min-width:210px;max-width:calc(100vw - 28px);flex-direction:column;align-items:stretch;gap:8px;padding:12px;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:0 14px 34px #00000080}.topbar-actions.is-open{display:flex}.topbar{position:relative}.topbar-actions .btn,.topbar-actions .ae-wrap,.topbar-actions .theme-toggle{width:100%;justify-content:center}}[data-theme=concierge]{--bg: #0d0a08;--surface-1: #261e17;--surface-2: #322620;--surface-3: #3e3128;--border: rgba(212, 176, 140, .1);--border-strong: rgba(212, 176, 140, .22);--text: #f5efe8;--text-dim: #a59c92;--text-faint: #7d7368;--accent: #c9a574;--accent-bright: #d4b08c;--accent-dim: #3a2e20;--accent-glow: rgba(201, 165, 116, .15);--ok: #8fa88a;--warn: #c89566;--crit: #c07f6d;--crit-dim: #3a241c;--font-ui: "Hanken Grotesk", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--r: 14px;--elev-1: inset 0 1px 0 rgba(255, 242, 225, .14), inset 0 -1px 0 rgba(0, 0, 0, .45), 0 1px 2px rgba(0, 0, 0, .6), 0 10px 22px rgba(0, 0, 0, .5), 0 30px 60px rgba(0, 0, 0, .4);--elev-2: inset 0 1px 0 rgba(255, 242, 225, .18), inset 0 -1px 0 rgba(0, 0, 0, .5), 0 2px 5px rgba(0, 0, 0, .65), 0 18px 38px rgba(0, 0, 0, .55), 0 52px 92px rgba(0, 0, 0, .48);--edge-light: rgba(212, 176, 140, .32);--surface-grad: linear-gradient(145deg, var(--surface-2) 0%, var(--surface-1) 100%);--surface-grad-raised: linear-gradient(145deg, var(--surface-3) 0%, var(--surface-2) 100%);--ease-calm: .25s cubic-bezier(.22, .61, .36, 1)}[data-theme=concierge] body{background-image:radial-gradient(1200px 800px at 50% -15%,rgba(201,165,116,.14),transparent 64%),radial-gradient(900px 700px at 12% 8%,rgba(143,168,138,.045),transparent 58%),radial-gradient(1000px 900px at 92% 96%,rgba(196,136,113,.04),transparent 60%);background-attachment:fixed;background-size:100% 100%}[data-theme=concierge] body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.35;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");mix-blend-mode:overlay}[data-theme=concierge] .topbar h1{font-family:Fraunces,serif;font-weight:500;font-size:18px;letter-spacing:-.01em}[data-theme=concierge] .login-card h2,[data-theme=concierge] .modal h3{font-family:Fraunces,serif;font-weight:500;letter-spacing:-.01em}[data-theme=concierge] .label{font-family:var(--font-ui);text-transform:none;letter-spacing:.03em;font-weight:600}[data-theme=concierge] section>.label{font-family:Fraunces,serif;font-style:italic;font-size:18px;letter-spacing:0;color:var(--text)}[data-theme=concierge] .summary-status{font-family:Fraunces,serif;font-weight:500;font-size:30px;line-height:1.15;letter-spacing:-.015em;text-shadow:0 0 22px var(--accent-glow)}[data-theme=concierge] .summary-card--roomy .summary-status{font-size:22px;line-height:1.28}[data-theme=concierge] .summary-sub{font-size:14px;color:var(--accent);opacity:.85}[data-theme=concierge] .summary-batt,[data-theme=concierge] .conn,[data-theme=concierge] .summary-top .status-dot{opacity:.68}[data-theme=concierge] .summary-card,[data-theme=concierge] .card,[data-theme=concierge] .alerts,[data-theme=concierge] .sensor-modal{background:var(--surface-grad);border:1px solid rgba(212,176,140,.07);border-top-color:var(--edge-light);border-bottom-color:#00000073;box-shadow:var(--elev-1);transition:transform var(--ease-calm),box-shadow var(--ease-calm),border-color var(--ease-calm)}[data-theme=concierge] .summary-card:hover{transform:translateY(-3px);box-shadow:var(--elev-2);border-color:var(--border-strong)}[data-theme=concierge] .sensor-modal{box-shadow:var(--elev-2)}[data-theme=concierge] .sensor-modal-body>.card{background:none;border-top:0;box-shadow:none}[data-theme=concierge] .chip,[data-theme=concierge] .tally{background:var(--surface-grad-raised);border:1px solid rgba(212,176,140,.07);border-top-color:var(--edge-light);border-bottom-color:#0006;box-shadow:inset 0 1px #fff0dc12,0 2px 6px #0006}[data-theme=concierge] .badge,[data-theme=concierge] .range-btn.is-active,[data-theme=concierge] .icon-btn:hover,[data-theme=concierge] .channel-chip.is-on,[data-theme=concierge] .chip-btn.is-active,[data-theme=concierge] .btn-accent{background:var(--accent-glow)}[data-theme=concierge] .btn-accent:hover{background:#c9a5743d}[data-theme=concierge] .alerts{background:linear-gradient(90deg,rgba(196,136,113,.12),transparent 60%),var(--surface-grad)}[data-theme=concierge] .alerts--ok{background:linear-gradient(90deg,rgba(143,168,138,.1),transparent 60%),var(--surface-grad)}[data-theme=concierge] .topbar{background:linear-gradient(var(--bg),rgba(26,21,18,.86));border-bottom-color:var(--border)}[data-theme=concierge] .property-tab{transition:color var(--ease-calm),background var(--ease-calm),border-color var(--ease-calm)}[data-theme=concierge] .property-tab.is-active{background:var(--accent-glow);border-color:var(--border-strong);color:var(--accent-bright)}[data-theme=concierge] .btn,[data-theme=concierge] .theme-toggle{box-shadow:0 2px 8px #00000038;border-top-color:var(--edge-light)}[data-theme=concierge] .sensor-modal,[data-theme=concierge] .sensor-modal-body,[data-theme=concierge] .sensor-overlay{animation-duration:.25s}[data-theme=concierge] .live-dot{animation-name:pulse-warm}@keyframes pulse-warm{0%{box-shadow:0 0 #c9a57473}70%{box-shadow:0 0 0 7px #c9a57400}to{box-shadow:0 0 #c9a57400}}.theme-toggle{display:inline-flex;gap:2px;background:var(--surface-3);border:1px solid var(--border);border-radius:8px;padding:2px}.theme-toggle button{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;padding:5px 10px;border:none;background:transparent;color:var(--text-dim);border-radius:6px;cursor:pointer;transition:color .14s,background .14s}.theme-toggle button:hover{color:var(--text)}.theme-toggle button.on{background:var(--accent-glow);color:var(--accent-bright)}@media (prefers-reduced-motion: reduce){.rise,.live-dot,.er-shell.er-flash{animation:none}}@media (prefers-reduced-motion: reduce){[data-theme=concierge] .summary-card,[data-theme=concierge] .card,[data-theme=concierge] .alerts,[data-theme=concierge] .sensor-modal,[data-theme=concierge] .property-tab,[data-theme=concierge] .btn,[data-theme=concierge] .theme-toggle{transition:none}[data-theme=concierge] .summary-card:hover{transform:none}[data-theme=concierge] .sensor-modal,[data-theme=concierge] .sensor-modal-body,[data-theme=concierge] .sensor-overlay{animation:none}}.er-shell{max-width:1100px;margin:0 auto;padding:16px clamp(12px,3vw,28px) 48px}.er-shell.er-flash{animation:erflash .45s ease-in-out 0 3}@keyframes erflash{0%,to{background:transparent}50%{background:#dc262638}}.er-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 0 18px;border-bottom:1px solid var(--line, #1f2937)}.er-top h1{font-size:22px;margin:0;letter-spacing:.3px}.er-top h1 .sub{font-size:12px;font-weight:400;color:var(--muted, #94a3b8);margin-left:8px}.er-live{display:inline-flex;align-items:center;gap:6px;color:var(--muted, #94a3b8);font-size:12px;margin-left:auto}.er-empty{margin:56px auto;text-align:center;font-size:18px;color:var(--ok, #34d399)}.er-section{margin-top:22px}.er-h2{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--muted, #94a3b8);margin:0 0 10px}.er-h2--urgent{color:#f87171}.incident-list{display:flex;flex-direction:column;gap:10px}.incident{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-radius:12px;background:var(--card, #111827);border:1px solid var(--line, #1f2937);border-left-width:6px}.incident--critical{border-left-color:#dc2626;background:linear-gradient(90deg,rgba(220,38,38,.1),var(--card, #111827) 40%)}.incident--warning{border-left-color:#f59e0b}.incident--info{border-left-color:#38bdf8}.incident--acked{opacity:.72;border-left-color:var(--muted, #94a3b8);background:var(--card, #111827)}.incident-main{display:flex;flex-direction:column;gap:4px;min-width:0}.incident-kind{font-size:18px;font-weight:700}.incident--critical .incident-kind{color:#fca5a5}.incident-where{font-size:14px;color:var(--text, #e5e7eb)}.incident-side{display:flex;align-items:center;gap:14px;flex-shrink:0}.incident-timer{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;color:#fca5a5;min-width:72px;text-align:right}.incident--warning .incident-timer{color:#fbbf24}.incident-acked{font-size:13px;color:var(--muted, #94a3b8)}.ack-big{font-size:16px;font-weight:700;padding:12px 24px;border-radius:10px;background:#dc2626;color:#fff;border:none;cursor:pointer;transition:background .14s,transform .05s}.ack-big:hover{background:#b91c1c}.ack-big:active{transform:scale(.97)}.src-badge{align-self:flex-start;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid currentColor}.src-badge--d2d{color:#f59e0b}.src-badge--cloud{color:#38bdf8}.src-badge--both{color:#34d399}.incident-opened{font-size:11px}.er-h2-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.er-h2-row .er-h2{margin:0}.er-history{width:100%;border-collapse:collapse;font-size:13px}.er-history th,.er-history td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line, #1f2937)}.er-history th{color:var(--muted, #94a3b8);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.er-history td.mono{font-size:12px;color:var(--muted, #94a3b8)}.event-log{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto}.event-log li{display:flex;gap:12px;align-items:baseline;padding:8px 10px;border-radius:8px;background:var(--card, #111827);border:1px solid var(--line, #1f2937)}.event-log .event-label{font-weight:600}.billing-banner{display:flex;align-items:center;gap:14px;margin:20px 0 4px;padding:13px 18px;border:1px solid rgba(251,191,36,.25);border-left:3px solid var(--warn);border-radius:var(--r);background:linear-gradient(90deg,rgba(251,191,36,.08),transparent)}.billing-banner--urgent{border-color:#fb71854d;border-left-color:var(--crit);background:linear-gradient(90deg,rgba(251,113,133,.1),transparent)}.billing-tag{flex-shrink:0;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--warn);border:1px solid rgba(251,191,36,.3);border-radius:4px;padding:2px 6px}.billing-banner--urgent .billing-tag{color:var(--crit);border-color:#fb718559}.billing-text{font-size:13px;color:var(--text);line-height:1.5}.billing-count{margin-left:auto;display:flex;align-items:baseline;gap:5px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;color:var(--warn)}.billing-banner--urgent .billing-count{color:var(--crit)}.billing-count small{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.bill-table{display:flex;flex-direction:column}.bill-row{display:grid;grid-template-columns:minmax(160px,2fr) 1fr 84px 84px 60px 96px auto;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid var(--border);font-size:13px}.bill-row--head{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);border-bottom-color:var(--border-strong)}.bill-row .summary-status{font-size:12px}.bill-name{font-weight:600;color:var(--text)}.bill-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}@media (max-width: 860px){.bill-row{grid-template-columns:1fr 1fr;row-gap:6px}.bill-row--head{display:none}.bill-actions{grid-column:1 / -1;justify-content:flex-start}}.ok-msg{color:var(--ok);font-family:var(--font-mono);font-size:12px;background:#34d39914;border:1px solid rgba(52,211,153,.25);border-radius:5px;padding:8px 11px;margin:0 0 14px}.user-row{grid-template-columns:minmax(180px,2fr) minmax(120px,1fr) 96px 116px 76px auto}@media (max-width: 860px){.user-row{grid-template-columns:1fr 1fr}}.prov-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 18px}.prov-row{grid-template-columns:minmax(160px,1.2fr) minmax(130px,1fr) minmax(140px,1fr) auto;align-items:center}.prov-row .input{margin:0}.input--bad{border-color:#fb71858c}.prop-row{grid-template-columns:minmax(160px,1fr) max-content auto}@media (max-width: 860px){.prov-row{grid-template-columns:1fr 1fr}.prop-row{grid-template-columns:1fr auto}}.insights-head{margin-top:26px;align-items:baseline}.insights-filter{width:auto;margin:0 0 0 auto;padding:5px 9px;font-size:12px}.insights-count{font-size:11px;font-family:var(--font-mono);margin-left:10px}.insights-empty{text-align:left}.insight-card{max-width:880px;border:1px solid var(--border);border-radius:10px;background:var(--surface-grad);margin-bottom:10px;overflow:hidden}.insight-card.is-open{border-color:var(--border-strong)}.insight-head{display:flex;align-items:center;gap:10px;width:100%;padding:13px 15px;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}.insight-head:hover{background:var(--surface-3)}.insight-week{font-weight:600}.insight-chevron{margin-left:auto;color:var(--text-faint);font-size:12px}.insight-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-faint)}.insight-tag--failed,.insight-tag--pending,.insight-tag--skipped{background:var(--surface-3)}.insight-body{padding:2px 15px 16px;border-top:1px solid var(--border)}.md{max-width:68ch;font-size:14px;line-height:1.62;color:var(--text)}.md h3{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);margin:20px 0 7px}.md h3:first-child{margin-top:12px}.md h4{font-size:13px;margin:15px 0 5px}.md p{margin:0 0 11px}.md ul{margin:0 0 11px;padding-left:19px}.md li{margin-bottom:6px}.md strong{color:var(--text);font-weight:650}[data-theme=concierge] .md h3{font-family:Fraunces,serif;font-weight:500;letter-spacing:0;text-transform:none;font-size:16px}@media (max-width: 860px){.insights-head{flex-wrap:wrap}.insights-filter,.insights-count{margin-left:0}.insight-head{padding:12px}.insight-body{padding:2px 12px 14px}.md,.insight-card{max-width:none}}.btn-ai{border-color:var(--accent-dim);color:var(--accent-bright)}.btn-ai:hover{border-color:var(--accent)}.ai-sub{font-size:13px;color:var(--text-dim, var(--text-faint));margin:0 0 14px}.ai-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:9px;margin-bottom:16px}.ai-stat{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface-grad)}.ai-stat--alarm{border-color:var(--crit, #fb7185)}.ai-stat--alarm .ai-stat-value{color:var(--crit, #fb7185)}.ai-stat-value{font-family:var(--font-mono);font-size:19px;font-weight:600;line-height:1.1}.ai-stat-label{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint)}.ai-news{margin:0 0 14px;padding-left:18px;font-size:14px;line-height:1.55}.ai-news li{margin-bottom:7px}.ai-quiet{font-size:14px;color:var(--text-faint);margin:0 0 14px}.ai-degraded{font-size:12px;color:var(--text-faint);border-left:2px solid var(--border-strong);padding-left:10px;margin:0 0 14px}.ai-actions{display:flex;gap:8px;flex-wrap:wrap}.ai-actions .btn{width:auto}.ai-full{margin-top:16px;border-top:1px solid var(--border)}[data-theme=concierge] .ai-stat-value{font-family:Fraunces,serif;font-size:21px}@media (max-width: 860px){.ai-stats{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}.ai-stat-value{font-size:17px}}.ai-empty{font-size:14px;line-height:1.6;color:var(--text-faint);margin:0}.ai-empty-where{margin-top:10px;font-size:13px}.insights-generate{width:auto;margin-left:10px;font-size:12px}.ai-sched{margin-top:18px;border-top:1px solid var(--border);padding-top:12px}.ai-sched-toggle{width:auto}.ai-sched-panel{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding:14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);font-size:13px}.ai-sched-row{display:flex;align-items:center;gap:9px;cursor:pointer}.ai-sched-row input{accent-color:var(--accent)}.ai-sched-when{display:flex;gap:12px;flex-wrap:wrap}.ai-sched-when label,.ai-sched-field{display:flex;flex-direction:column;gap:5px}.ai-sched-when .input{min-width:132px}.ai-sched-k{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.ai-sched-help,.ai-sched-note{font-size:12px;line-height:1.5;color:var(--text-faint);margin:0}.ai-sched-err{font-size:12px;color:var(--crit, #fb7185);margin:0}.ai-sched-ok{font-size:12px;color:var(--ok, #34d399);margin:0}
