.um[data-v-b0899bc2]{position:relative}.um-trigger[data-v-b0899bc2]{align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);text-align:left;display:flex}.um-trigger[data-v-b0899bc2]:hover,.um-trigger--open[data-v-b0899bc2]{background:var(--paper-3)}.um-trigger[data-v-b0899bc2]:focus-visible{box-shadow:var(--focus-ring);outline:none}.um-avatar[data-v-b0899bc2]{border-radius:var(--radius-pill);background:var(--ink);width:24px;height:24px;color:var(--paper);font:var(--type-caption);font-weight:var(--weight-bold);flex-shrink:0;place-items:center;display:grid}.um-meta[data-v-b0899bc2]{flex-direction:column;flex:1;min-width:0;display:flex}.um-name[data-v-b0899bc2]{font:var(--type-secondary-strong);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.um-role[data-v-b0899bc2],.um-email[data-v-b0899bc2]{font:var(--type-caption);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.um-caret[data-v-b0899bc2]{color:var(--ink-3);flex-shrink:0}.um-panel[data-v-b0899bc2]{left:0;bottom:calc(100% + var(--space-xs));background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);width:max-content;min-width:100%;max-width:280px;box-shadow:var(--shadow-float);padding:var(--space-xs);z-index:50;position:absolute}.um-head[data-v-b0899bc2]{padding:var(--space-sm);border-bottom:1px solid var(--line);margin-bottom:var(--space-xs);flex-direction:column;display:flex}.um-item[data-v-b0899bc2]{align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm);border-radius:calc(var(--radius-lg) - var(--space-xs));font:var(--type-secondary);color:var(--ink);text-align:left;display:flex}.um-item svg[data-v-b0899bc2]{color:var(--ink-3)}.um-item[data-v-b0899bc2]:hover,.um-item[data-v-b0899bc2]:focus-visible{background:var(--paper-3);outline:none}.um-sep[data-v-b0899bc2]{background:var(--line);height:1px;margin:var(--space-xs) 0}.sb[data-v-35f0a3ee]{background:var(--paper);border-right:1px solid var(--line);height:100vh;padding:var(--space-md) var(--space-sm) var(--space-sm);flex-direction:column;display:flex;position:sticky;top:0}.sb-brand[data-v-35f0a3ee]{padding:var(--space-xs) var(--space-sm) var(--space-md);justify-content:space-between;align-items:center;display:flex}.sb-brand-link[data-v-35f0a3ee]{align-items:center;gap:var(--space-sm);color:var(--ink);display:inline-flex}.sb-org[data-v-35f0a3ee]{margin:0 var(--space-sm) var(--space-xs);font:var(--type-secondary-strong);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sb-nav[data-v-35f0a3ee]{flex:1;min-height:0;overflow-y:auto}.sb-section[data-v-35f0a3ee]{padding-top:var(--space-md);margin-top:14px}.sb-label[data-v-35f0a3ee]{padding:0 var(--space-sm) var(--space-sm);color:var(--ink-3);display:block}.sb-item[data-v-35f0a3ee]{align-items:center;gap:var(--space-sm);width:100%;height:30px;padding:0 var(--space-sm);border-radius:var(--radius-md);font:var(--type-secondary-strong);color:var(--ink-2);text-align:left;transition:background var(--transition-fast), color var(--transition-fast);display:flex}.sb-item svg[data-v-35f0a3ee]{color:var(--ink-3);flex-shrink:0}.sb-item[data-v-35f0a3ee]:hover{background:var(--paper-3);color:var(--ink)}.sb-item[data-v-35f0a3ee]:focus-visible{box-shadow:var(--focus-ring);outline:none}.sb-item--active[data-v-35f0a3ee]{background:var(--paper-3);color:var(--ink)}.sb-item--active svg[data-v-35f0a3ee]{color:var(--ink)}.sb-item-label[data-v-35f0a3ee]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sb-item--child[data-v-35f0a3ee]{padding-left:calc(var(--space-sm) + 16px + var(--space-sm))}.sb-caret[data-v-35f0a3ee]{transition:transform var(--transition-fast)}.sb-caret--open[data-v-35f0a3ee]{transform:rotate(90deg)}.sb-foot[data-v-35f0a3ee]{padding-top:var(--space-sm);border-top:1px solid var(--line)}.sb-iconbtn[data-v-35f0a3ee]{width:var(--control-h-sm);height:var(--control-h-sm);border-radius:var(--radius-md);color:var(--ink-2);place-items:center;display:grid}.sb-iconbtn[data-v-35f0a3ee]:hover{background:var(--paper-3);color:var(--ink)}.sb-close[data-v-35f0a3ee],.sb-mobilebar[data-v-35f0a3ee]{display:none}@media (width<=900px){.sb[data-v-35f0a3ee]{left:calc(-1 * var(--sidebar-w) - 1px);width:var(--sidebar-w);z-index:100;transition:left var(--transition-normal);position:fixed;top:0;bottom:0}.sb--open[data-v-35f0a3ee]{left:0}.sb-close[data-v-35f0a3ee]{display:grid}.sb-mobilebar[data-v-35f0a3ee]{align-items:center;gap:var(--space-md);height:56px;padding:0 var(--space-lg);background:var(--paper);border-bottom:1px solid var(--line);z-index:30;display:flex;position:fixed;inset:0 0 auto}.sb-overlay[data-v-35f0a3ee]{z-index:99;background:oklch(18% .01 260/.4);position:fixed;inset:0}}.sb-fade-enter-active[data-v-35f0a3ee],.sb-fade-leave-active[data-v-35f0a3ee]{transition:opacity var(--transition-normal)}.sb-fade-enter-from[data-v-35f0a3ee],.sb-fade-leave-to[data-v-35f0a3ee]{opacity:0}.li[data-v-9d2c0b5d]{align-items:center;gap:var(--space-xs);font:var(--type-caption);color:var(--ink-3);white-space:nowrap;display:inline-flex}.li-dot[data-v-9d2c0b5d]{border-radius:var(--radius-pill);background:var(--status-idle);width:6px;height:6px}.li--reconnecting .li-dot[data-v-9d2c0b5d]{background:var(--status-hold)}.tb[data-v-454607cc]{z-index:20;height:var(--topbar-h);align-items:center;gap:var(--space-lg);padding:0 var(--space-2xl);background:var(--paper);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.tb-crumbs[data-v-454607cc]{align-items:center;gap:var(--space-xs);min-width:0;font:var(--type-secondary);color:var(--ink-3);display:flex}.tb-crumb[data-v-454607cc]{white-space:nowrap;text-overflow:ellipsis;color:var(--ink-3);overflow:hidden}a.tb-crumb[data-v-454607cc]:hover{color:var(--ink)}.tb-crumb--current[data-v-454607cc]{font:var(--type-secondary-strong);color:var(--ink)}.tb-sep[data-v-454607cc]{color:var(--line-2)}.tb-right[data-v-454607cc]{align-items:center;gap:var(--space-sm);margin-left:auto;display:flex}@media (width<=900px){.tb[data-v-454607cc]{display:none}}.seg[data-v-f9fac27e]{height:var(--control-h);border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--paper-2);flex-shrink:0;align-items:stretch;display:inline-flex;overflow:hidden}.seg-opt[data-v-f9fac27e]{padding:0 var(--space-md);color:var(--ink-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex:1 0 auto;line-height:1}.seg--sm[data-v-f9fac27e]{height:var(--control-h-sm)}.seg--sm .seg-opt[data-v-f9fac27e]{padding:0 var(--space-sm);font-size:var(--text-xs)}.seg-opt+.seg-opt[data-v-f9fac27e]{border-left:1px solid var(--line-2)}.seg-opt.on[data-v-f9fac27e],.seg-opt.on+.seg-opt[data-v-f9fac27e]{border-left-color:#0000}.seg-opt[data-v-f9fac27e]:hover:not(.on){background:var(--paper-3);color:var(--ink)}.seg-opt.on[data-v-f9fac27e]{background:var(--ink);color:var(--paper)}.seg-opt[data-v-f9fac27e]:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.pm-desc[data-v-27381b70]{font:var(--type-secondary);color:var(--ink-3);margin-bottom:var(--space-lg)}.pm-row[data-v-27381b70]{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-md) 0;display:flex}.pm-row+.pm-row[data-v-27381b70]{border-top:1px solid var(--line)}.pm-label[data-v-27381b70]{font:var(--type-secondary-strong);color:var(--ink)}.sb[data-v-ef445443]{align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;line-height:1.4;display:inline-flex}.sb--sm[data-v-ef445443]{padding:0 var(--space-xs);font-size:var(--text-xs);line-height:1.35}.sb-dot[data-v-ef445443]{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.sb--ok[data-v-ef445443]{background:var(--status-ok-soft);color:var(--status-ok-ink)}.sb--pending[data-v-ef445443]{background:var(--status-pending-soft);color:var(--status-pending-ink)}.sb--active[data-v-ef445443]{background:var(--status-active-soft);color:var(--status-active-ink)}.sb--hold[data-v-ef445443]{background:var(--status-hold-soft);color:var(--status-hold-ink)}.sb--hold-ev[data-v-ef445443]{background:var(--status-hold-ev-soft);color:var(--status-hold-ev-ink)}.sb--closing[data-v-ef445443]{background:var(--status-closing-soft);color:var(--status-closing-ink)}.sb--reserved[data-v-ef445443]{background:var(--status-reserved-soft);color:var(--status-reserved-ink)}.sb--idle[data-v-ef445443]{background:var(--status-idle-soft);color:var(--status-idle-ink)}.sb--fault[data-v-ef445443]{background:var(--status-fault-soft);color:var(--status-fault-ink)}.sb--neutral[data-v-ef445443]{background:var(--paper-3);color:var(--ink-3)}.sb--pulse[data-v-ef445443]{animation:2s ease-in-out infinite sb-pulse-ef445443}@keyframes sb-pulse-ef445443{0%,to{filter:saturate()brightness()}40%,60%{filter:saturate(1.6) brightness(var(--pulse-peak-soft))}}@media (prefers-reduced-motion:reduce){.sb--pulse[data-v-ef445443]{animation:none}}.proposal[data-v-82a99d6f]{margin-top:var(--space-sm);padding:var(--space-md);border:1px solid var(--line-2);border-radius:var(--radius-md);background:var(--paper-2);gap:var(--space-sm);flex-direction:column;display:flex}.proposal.settled[data-v-82a99d6f]{border-color:var(--line)}.proposal-title[data-v-82a99d6f]{font:var(--type-body-strong);color:var(--ink);margin:0}.proposal-reason[data-v-82a99d6f]{font:var(--type-body);color:var(--ink-2);margin:0}.proposal-warning[data-v-82a99d6f]{gap:var(--space-sm);font:var(--type-caption);color:var(--ink-2);align-items:flex-start;margin:0;display:flex}.proposal-warning svg[data-v-82a99d6f]{color:var(--status-hold);flex-shrink:0;margin-top:2px}.proposal-actions[data-v-82a99d6f]{gap:var(--space-sm);display:flex}.proposal-outcome[data-v-82a99d6f]{gap:var(--space-sm);flex-wrap:wrap;align-items:center;display:flex}.proposal-detail[data-v-82a99d6f]{font:var(--type-caption);color:var(--ink-3)}.assistant-panel[data-v-5aef96f2]{background:var(--paper-2);border-left:1px solid var(--line);width:420px;max-width:100vw;height:100vh;box-shadow:var(--shadow-float);z-index:201;flex-direction:column;display:flex;position:fixed;top:0;right:0}.assistant-header[data-v-5aef96f2]{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;padding:.875rem 1rem;display:flex}.assistant-title[data-v-5aef96f2]{font-weight:600;font-size:var(--text-md);color:var(--ink);align-items:center;gap:.5rem;display:flex}.assistant-header-actions[data-v-5aef96f2]{gap:.25rem;display:flex}.assistant-messages[data-v-5aef96f2]{flex-direction:column;flex:1;gap:.75rem;padding:1rem;display:flex;overflow-y:auto}.assistant-empty[data-v-5aef96f2]{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}.assistant-empty-title[data-v-5aef96f2]{color:var(--ink);font-weight:600}.assistant-empty-subtitle[data-v-5aef96f2]{font-size:var(--text-sm);color:var(--ink-3)}.example-prompts[data-v-5aef96f2]{flex-direction:column;gap:.5rem;width:100%;margin-top:1rem;display:flex}.example-prompt[data-v-5aef96f2]{background:var(--paper-3);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--ink-3);text-align:left;cursor:pointer;transition:all var(--transition-fast);padding:.625rem .875rem}.example-prompt[data-v-5aef96f2]:hover{border-color:var(--ink);color:var(--ink);background:var(--paper-3)}.message[data-v-5aef96f2]{max-width:90%}.message.user[data-v-5aef96f2]{align-self:flex-end}.message.assistant[data-v-5aef96f2]{align-self:flex-start}.message.user .message-content[data-v-5aef96f2]{background:var(--ink);color:#fff;border-radius:var(--radius-md) var(--radius-md) var(--radius-sm) var(--radius-md);font-size:var(--text-md);padding:.625rem .875rem}.message.assistant .message-content[data-v-5aef96f2]{background:var(--paper-3);color:var(--ink);border-radius:var(--radius-md) var(--radius-md) var(--radius-md) var(--radius-sm);font-size:var(--text-md);padding:.625rem .875rem;line-height:1.6}.message.assistant .message-content[data-v-5aef96f2] code{border-radius:var(--radius-sm);font-size:var(--text-xs);font-family:var(--font-mono);background:#00000012;padding:.1rem .3rem}.message.assistant .message-content[data-v-5aef96f2] .md-h,.message.assistant .message-content[data-v-5aef96f2] .md-section-title{font-weight:600;font-size:var(--text-sm);color:var(--ink);margin:.625rem 0 .2rem;line-height:1.3}.message.assistant .message-content[data-v-5aef96f2] .md-p{margin:.25rem 0;line-height:1.6}.message.assistant .message-content[data-v-5aef96f2] .md-ul,.message.assistant .message-content[data-v-5aef96f2] .md-ol{margin:.25rem 0;padding-left:1.25rem}.message.assistant .message-content[data-v-5aef96f2] .md-ul li,.message.assistant .message-content[data-v-5aef96f2] .md-ol li{margin-bottom:.15rem;line-height:1.5}.message.assistant .message-content[data-v-5aef96f2] .md-hr{border:none;border-top:1px solid var(--line);margin:.5rem 0}.message.assistant .message-content[data-v-5aef96f2] .md-table-wrap{border-radius:var(--radius-md);border:1px solid var(--line);margin:.5rem 0;overflow-x:auto}.message.assistant .message-content[data-v-5aef96f2] .md-table{border-collapse:collapse;table-layout:fixed;width:100%}.message.assistant .message-content[data-v-5aef96f2] .md-table th{text-align:left;font:var(--type-secondary-strong);font-variant-numeric:normal;color:var(--ink-3);background:var(--paper-2);border-bottom:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;padding:.3rem .5rem;overflow:hidden}.message.assistant .message-content[data-v-5aef96f2] .md-table td{border-bottom:1px solid var(--line);font:var(--type-body);font-variant-numeric:normal;color:var(--ink);word-break:break-word;vertical-align:top;padding:.3rem .5rem}.message.assistant .message-content[data-v-5aef96f2] .md-table tr:last-child td{border-bottom:none}.message.assistant .message-content[data-v-5aef96f2] strong{font-weight:600}.message.assistant .message-content[data-v-5aef96f2] em{font-style:italic}.loading-dots[data-v-5aef96f2]{gap:4px;display:flex;padding:.75rem 1rem!important}.loading-dots span[data-v-5aef96f2]{background:var(--ink-3);border-radius:50%;width:8px;height:8px;animation:1.4s infinite both dot-bounce-5aef96f2}.loading-dots span[data-v-5aef96f2]:nth-child(2){animation-delay:.16s}.loading-dots span[data-v-5aef96f2]:nth-child(3){animation-delay:.32s}@keyframes dot-bounce-5aef96f2{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}.assistant-error[data-v-5aef96f2]{background:var(--err-soft);color:var(--err);font-size:var(--text-sm);flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.assistant-not-configured[data-v-5aef96f2]{text-align:center;color:var(--ink-3);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:2rem 1.5rem;display:flex}.assistant-not-configured p[data-v-5aef96f2]{font-size:var(--text-sm);color:var(--ink-2);margin:0}.assistant-not-configured .assistant-not-configured-sub[data-v-5aef96f2]{font:var(--type-caption);color:var(--ink-3);max-width:260px}.context-indicator[data-v-5aef96f2]{background:var(--paper-3);color:var(--ink);font-size:var(--text-xs);flex-shrink:0;justify-content:space-between;align-items:center;padding:.375rem 1rem;display:flex}.assistant-input[data-v-5aef96f2]{border-top:1px solid var(--line);flex-shrink:0;gap:.5rem;padding:.75rem 1rem;display:flex}.assistant-input[data-v-5aef96f2] .p-inputtext{flex:1}.slide-enter-active[data-v-5aef96f2],.slide-leave-active[data-v-5aef96f2]{transition:transform .25s}.slide-enter-from[data-v-5aef96f2],.slide-leave-to[data-v-5aef96f2]{transform:translate(100%)}@media (width<=900px){.assistant-panel[data-v-5aef96f2]{width:100vw}}.ui-search[data-v-fd9aaa28]{align-items:center;gap:var(--space-sm);width:var(--search-w);max-width:100%;height:var(--control-h);padding:0 var(--space-md);background:var(--paper-2);border:1px solid var(--line-strong);border-radius:var(--radius-md);color:var(--ink-3);display:flex}.ui-search--sm[data-v-fd9aaa28]{height:var(--control-h-sm);padding:0 var(--space-sm)}.ui-search[data-v-fd9aaa28]:focus-within{border-color:var(--ink-3);background:var(--paper);box-shadow:var(--focus-ring)}.ui-search-icon[data-v-fd9aaa28]{flex-shrink:0}.ui-search-input[data-v-fd9aaa28]{min-width:0;color:var(--ink);font:var(--type-body);background:0 0;border:none;outline:none;flex:1}.ui-search--sm .ui-search-input[data-v-fd9aaa28]{font:var(--type-secondary)}.ui-search-input[data-v-fd9aaa28]::placeholder{color:var(--ink-3)}.ui-search-clear[data-v-fd9aaa28]{padding:var(--space-2xs);border-radius:var(--radius-sm);color:var(--ink-3);cursor:pointer;background:0 0;border:none;flex-shrink:0;display:flex}.ui-search-clear[data-v-fd9aaa28]:hover{color:var(--ink);background:var(--paper-3)}@media (width<=640px){.ui-search[data-v-fd9aaa28]{width:100%}}.gs[data-v-2c34a7a3]{position:relative}.gs-kbd[data-v-2c34a7a3]{font:var(--type-caption);color:var(--ink-3);border:1px solid var(--line);border-radius:var(--radius-sm);padding:0 var(--space-xs);margin-right:var(--space-xs);white-space:nowrap}.gs-drop[data-v-2c34a7a3]{top:calc(100% + var(--space-xs));z-index:50;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);width:360px;max-height:360px;box-shadow:var(--shadow-float);padding:var(--space-xs);position:absolute;right:0;overflow-y:auto}.gs-row[data-v-2c34a7a3]{align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm);border-radius:calc(var(--radius-lg) - var(--space-xs));text-align:left;display:flex}.gs-row[data-v-2c34a7a3]:hover,.gs-row--active[data-v-2c34a7a3]{background:var(--paper-3)}.gs-row svg[data-v-2c34a7a3]{color:var(--ink-3);flex-shrink:0}.gs-label[data-v-2c34a7a3]{min-width:0;font:var(--type-secondary-strong);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.gs-sub[data-v-2c34a7a3]{max-width:140px;font:var(--type-caption);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-loading[data-v-e1c24be5]{background:var(--paper);justify-content:center;align-items:center;min-height:100vh;display:flex}.live-state-banner[data-v-617bcab5]{align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);border:1px solid var(--warn);border-radius:var(--radius-md);background:var(--warn-soft);color:var(--warn-ink);font-size:var(--text-sm);display:flex}.live-state-banner strong[data-v-617bcab5]{font-weight:600;display:block}.curve[data-v-39856456]{column-gap:var(--space-2xs);grid-template-rows:240px auto;grid-template-columns:3.5rem 1fr;display:grid}.y-axis[data-v-39856456]{grid-area:1/1;position:relative}.y-axis span[data-v-39856456]{position:absolute;right:0;transform:translateY(-50%)}.plot[data-v-39856456]{outline:none;grid-area:1/2;position:relative}.plot[data-v-39856456]:focus-visible{outline:1px solid var(--ink-3);outline-offset:2px;border-radius:var(--radius-sm)}.plot-svg[data-v-39856456]{width:100%;height:100%;display:block}.x-axis[data-v-39856456]{height:var(--space-md);grid-area:2/2;position:relative}.x-axis span[data-v-39856456]{top:var(--space-2xs);position:absolute}.y-axis span[data-v-39856456],.x-axis span[data-v-39856456],.peak-label[data-v-39856456]{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-3);white-space:nowrap;pointer-events:none}.grid-line[data-v-39856456]{stroke:var(--line);stroke-width:1px;vector-effect:non-scaling-stroke}.peak-rule[data-v-39856456]{stroke:var(--line-2);stroke-width:1px;vector-effect:non-scaling-stroke}.peak-label[data-v-39856456]{right:var(--space-2xs);position:absolute;transform:translateY(calc(-100% - 2px))}.curve-line[data-v-39856456]{fill:none;stroke:var(--chart-line);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.crosshair[data-v-39856456]{stroke:var(--ink-3);stroke-width:1px;vector-effect:non-scaling-stroke}.lone-dot[data-v-39856456],.hover-dot[data-v-39856456]{border-radius:var(--radius-pill);background:var(--chart-line);pointer-events:none;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute}.hover-dot[data-v-39856456]{width:10px;height:10px;box-shadow:var(--focus-ring);margin:-5px 0 0 -5px}.tip[data-v-39856456]{top:var(--space-md);padding:var(--space-xs) var(--space-sm);background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius-sm);box-shadow:var(--shadow-float);pointer-events:none;z-index:1;gap:2px;display:grid;position:absolute}.tip-time[data-v-39856456]{font-variant-numeric:tabular-nums;font-size:var(--text-xs);color:var(--ink-3)}.tip-kw[data-v-39856456]{font-size:var(--text-md);font-weight:var(--weight-medium);color:var(--ink)}.tip-sub[data-v-39856456]{font-size:var(--text-xs);color:var(--ink-3)}.power-head[data-v-ff149fcc]{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.power-controls[data-v-ff149fcc]{align-items:center;gap:var(--space-md);display:flex}.power-stat-sub[data-v-ff149fcc]{margin-top:var(--space-2xs);font-size:var(--text-xs);color:var(--ink-3);display:block}.power-table-wrap[data-v-ff149fcc]{max-height:260px;overflow:auto}.power-table thead th[data-v-ff149fcc]{text-align:right;padding:var(--space-2xs) var(--space-xs);position:sticky;top:0}.power-table tbody td[data-v-ff149fcc]{text-align:right;height:auto;padding:var(--space-2xs) var(--space-xs)}.power-table thead th[data-v-ff149fcc]:first-child,.power-table tbody td[data-v-ff149fcc]:first-child{text-align:left}.station-map[data-v-6eba1971]{border-radius:var(--radius-lg);border:1px solid var(--line);width:100%;overflow:hidden}.station-map[data-v-6eba1971] .station-marker{background:0 0!important;border:none!important}.map-panel[data-v-594f0c1b]{flex-direction:column;display:flex}.map-fill[data-v-594f0c1b]{flex:1;min-height:200px}.map-modal-body[data-v-594f0c1b]{border-radius:var(--radius-md);height:60vh;min-height:400px;overflow:hidden}.fleet-alerts[data-v-4d6f259f]{flex-direction:column;display:flex}.alerts-empty[data-v-4d6f259f]{color:var(--ink-3);font-size:var(--text-sm);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:28px 16px;display:flex}.count-critical[data-v-4d6f259f]{color:var(--err-ink);font-weight:600}.count-warning[data-v-4d6f259f]{color:var(--warn-ink);font-weight:600}.alerts-list[data-v-4d6f259f]{flex-direction:column;display:flex}.alert-row[data-v-4d6f259f]{border:none;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--ink);background:0 0;align-items:center;gap:10px;padding:10px 16px;transition:background .1s;display:flex}.alert-row[data-v-4d6f259f]:last-child{border-bottom:none}.alert-row[data-v-4d6f259f]:hover{background:var(--paper-3)}.alert-icon[data-v-4d6f259f]{border-radius:var(--radius-md);flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.alert-row.critical .alert-icon[data-v-4d6f259f]{color:var(--err-ink);background:var(--err-soft)}.alert-row.warning .alert-icon[data-v-4d6f259f]{color:var(--warn-ink);background:var(--warn-soft)}.alert-info[data-v-4d6f259f]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.alert-name[data-v-4d6f259f]{font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.alert-meta[data-v-4d6f259f]{font-size:var(--text-xs);color:var(--ink-3)}.alert-arrow[data-v-4d6f259f]{color:var(--ink-3);opacity:0;flex-shrink:0;transition:opacity .1s}.alert-row:hover .alert-arrow[data-v-4d6f259f]{opacity:1}.kpi-list--loading[data-v-d1769178]{opacity:.55;transition:opacity .12s}.kpi-skeleton[data-v-d1769178]{min-width:5ch;display:inline-block}.kpi-skeleton--sm[data-v-d1769178]{min-width:4ch;font-size:var(--text-xs)}.health-cell--skeleton[data-v-d1769178]{background:var(--paper-3);opacity:1}.kpi-error[data-v-d1769178]{border-radius:var(--radius-md);background:var(--err-soft);color:var(--err-ink);font-size:var(--text-xs);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:8px 10px;display:flex}.conn-blocks-wrap[data-v-6c0a4f32]{align-items:center;display:flex}.conn-block[data-v-6c0a4f32]{border-radius:calc(var(--radius-sm) - var(--space-2xs));background:var(--line-2);flex-shrink:0;width:14px;height:8px;margin-right:3px}.conn-count[data-v-6c0a4f32]{font-variant-numeric:tabular-nums;font-size:var(--text-xs);color:var(--ink-3);margin-left:var(--space-xs)}.cb--ok[data-v-6c0a4f32]{background:var(--status-ok)}.cb--pending[data-v-6c0a4f32]{background:var(--status-pending)}.cb--active[data-v-6c0a4f32]{background:var(--status-active)}.cb--hold[data-v-6c0a4f32]{background:var(--status-hold)}.cb--hold-ev[data-v-6c0a4f32]{background:var(--status-hold-ev)}.cb--closing[data-v-6c0a4f32]{background:var(--status-closing)}.cb--reserved[data-v-6c0a4f32]{background:var(--status-reserved)}.cb--idle[data-v-6c0a4f32]{background:var(--status-idle)}.cb--fault[data-v-6c0a4f32]{background:var(--status-fault)}.cb--neutral[data-v-6c0a4f32]{background:var(--line-2)}.conn-popup[data-v-6c0a4f32]{z-index:2000;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);min-width:190px;max-width:280px;box-shadow:var(--shadow-float);padding:var(--space-sm) var(--space-md);font-size:var(--text-xs);pointer-events:none;position:fixed}.conn-popup-title[data-v-6c0a4f32]{font-weight:var(--weight-bold);color:var(--ink);margin-bottom:var(--space-xs);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.conn-popup-row[data-v-6c0a4f32]{align-items:center;gap:7px;padding:3px 0;display:flex}.cpop-dot[data-v-6c0a4f32]{background:var(--line-2);border-radius:50%;flex-shrink:0;width:8px;height:8px}.cd--ok[data-v-6c0a4f32]{background:var(--status-ok)}.cd--pending[data-v-6c0a4f32]{background:var(--status-pending)}.cd--active[data-v-6c0a4f32]{background:var(--status-active)}.cd--hold[data-v-6c0a4f32]{background:var(--status-hold)}.cd--hold-ev[data-v-6c0a4f32]{background:var(--status-hold-ev)}.cd--closing[data-v-6c0a4f32]{background:var(--status-closing)}.cd--reserved[data-v-6c0a4f32]{background:var(--status-reserved)}.cd--idle[data-v-6c0a4f32]{background:var(--status-idle)}.cd--fault[data-v-6c0a4f32]{background:var(--status-fault)}.cd--neutral[data-v-6c0a4f32]{background:var(--line-2)}.cb--live[data-v-6c0a4f32]{animation:1.2s ease-in-out infinite charge-pulse-strong}.cd--live[data-v-6c0a4f32]{animation:2s ease-in-out infinite charge-pulse}@media (prefers-reduced-motion:reduce){.cb--live[data-v-6c0a4f32],.cd--live[data-v-6c0a4f32]{animation:none}}.cpop-label[data-v-6c0a4f32]{color:var(--ink-2);font-weight:var(--weight-medium);white-space:nowrap}.cpop-status[data-v-6c0a4f32]{color:var(--ink-3);white-space:nowrap;margin-left:auto}.dt-toolbar[data-v-102b7206]{align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.dt-toolbar-actions[data-v-102b7206]{gap:.5rem;margin-left:auto;display:flex}.dt-filters[data-v-102b7206]{margin-bottom:.75rem}.dt-table-card[data-v-102b7206]{padding:0;overflow:hidden}.dt-table-card[data-v-102b7206]:hover{box-shadow:none}.dt-table-scroll[data-v-102b7206]{-webkit-overflow-scrolling:touch;overflow-x:auto}.dt-table[data-v-102b7206]{border-collapse:collapse;width:100%}.dt-table th[data-v-102b7206]{text-align:left;font:var(--type-secondary-strong);font-variant-numeric:normal;color:var(--ink-3);background:var(--paper-2);border-bottom:1px solid var(--line);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:.625rem 1rem}.dt-sticky-header th[data-v-102b7206]{z-index:1;position:sticky;top:0}.dt-sortable[data-v-102b7206]{cursor:pointer;transition:color var(--transition-fast)}.dt-sortable[data-v-102b7206]:hover{color:var(--ink)}.dt-sorted[data-v-102b7206]{color:var(--ink)!important}.dt-th-content[data-v-102b7206]{align-items:center;gap:.375rem;display:inline-flex}.dt-sort-icon[data-v-102b7206]{font-size:var(--text-xs);color:var(--ink-3);transition:color var(--transition-fast)}.dt-sort-icon.active[data-v-102b7206]{color:var(--ink)}.dt-table td[data-v-102b7206]{height:var(--row-h);font:var(--type-body);font-variant-numeric:normal;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink);padding:0 1rem}.dt-table td.dt-primary[data-v-102b7206]{font:var(--type-body-strong);font-variant-numeric:normal}.dt-table td.dt-primary[data-v-102b7206] a:hover{text-decoration:underline}.dt-table td.dt-primary[data-v-102b7206] .cell-muted{font-weight:var(--weight-normal)}.dt-table td.dt-muted[data-v-102b7206]{color:var(--ink-3)}.dt-table td.dt-id[data-v-102b7206]{font:var(--type-mono);font-variant-numeric:normal}.dt-table td.dt-num[data-v-102b7206]{font-variant-numeric:tabular-nums;white-space:nowrap}.dt-table tr:last-child td[data-v-102b7206]{border-bottom:none}.dt-table tbody tr[data-v-102b7206]{transition:background var(--transition-fast)}.dt-table tbody tr[data-v-102b7206]:hover{background:var(--paper-3)}.dt-table .dt-expand-col[data-v-102b7206]{width:2.5rem;padding-right:0}.dt-row-expandable[data-v-102b7206]{cursor:pointer}.dt-table tbody tr[data-v-102b7206]:focus-visible{box-shadow:var(--focus-ring);outline:none}.dt-expand-btn[data-v-102b7206]{padding:var(--space-2xs);border-radius:var(--radius-sm);color:var(--ink-3);cursor:pointer;background:0 0;border:none;display:flex}.dt-expand-btn[data-v-102b7206]:hover{color:var(--ink)}.dt-expand-btn[data-v-102b7206]:focus-visible{box-shadow:var(--focus-ring);outline:none}.dt-table tr.dt-row-open td[data-v-102b7206]{border-bottom:none}.dt-table tbody tr.dt-detail-row[data-v-102b7206]:hover{background:0 0}.dt-table tr.dt-detail-row td[data-v-102b7206]{height:auto;padding:0 1rem var(--space-md) 3.5rem}.dt-table th.dt-align-center[data-v-102b7206],.dt-table td.dt-align-center[data-v-102b7206]{text-align:center}.dt-table th.dt-align-right[data-v-102b7206],.dt-table td.dt-align-right[data-v-102b7206]{text-align:right}.dt-table td.dt-align-right[data-v-102b7206]{font-variant-numeric:tabular-nums}.dt-footer[data-v-102b7206]{border-top:1px solid var(--line);background:var(--paper);font-size:var(--text-sm);justify-content:space-between;align-items:center;gap:1rem;min-height:48px;padding:.625rem 1rem;display:flex}.dt-footer-info[data-v-102b7206]{color:var(--ink-3);flex-shrink:0;align-items:center;gap:.5rem;display:flex}.dt-filter-note[data-v-102b7206]{color:var(--ink-3);font-size:var(--text-xs)}.dt-footer-controls[data-v-102b7206]{align-items:center;gap:1rem;display:flex}.dt-page-size[data-v-102b7206]{color:var(--ink-3);align-items:center;gap:.375rem;display:flex}.dt-page-size label[data-v-102b7206]{font-size:var(--text-sm);white-space:nowrap}.dt-pagination[data-v-102b7206]{align-items:center;gap:2px;display:flex}.dt-page-btn[data-v-102b7206]{min-width:var(--control-h-sm);height:var(--control-h-sm);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--ink-3);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-weight:500;display:inline-flex}.dt-page-btn[data-v-102b7206]:hover:not(:disabled){background:var(--paper-3);color:var(--ink);transform:none}.dt-page-btn[data-v-102b7206]:disabled{opacity:.35;cursor:not-allowed;transform:none}.dt-page-active[data-v-102b7206]{font-weight:600;background:var(--ink)!important;color:#fff!important}.dt-page-active[data-v-102b7206]:hover{background:var(--ink-2)!important}.dt-page-ellipsis[data-v-102b7206]{text-align:center;min-width:32px;color:var(--ink-3);font-size:var(--text-xs)}.dt-empty[data-v-102b7206]{text-align:center;color:var(--ink-3);padding:3rem 2rem}.dt-empty p[data-v-102b7206]{margin-bottom:.5rem}.dt-empty-hint[data-v-102b7206]{font-size:var(--text-md);color:var(--ink-3);margin-bottom:1.5rem}.dt-empty-actions[data-v-102b7206]{justify-content:center;gap:.5rem;margin-top:.5rem;display:flex}.dt-error[data-v-102b7206]{color:var(--err)}.dt-skeleton[data-v-102b7206]{padding:0;overflow:hidden}.dt-sk-row[data-v-102b7206]{border-bottom:1px solid var(--line);padding:12px 16px;display:flex}.dt-sk-row[data-v-102b7206]:last-child{border-bottom:none}.dt-sk-cell[data-v-102b7206]{flex:1;min-width:0;padding-right:12px}.dt-sk-cell[data-v-102b7206]:last-child{padding-right:0}.dt-sk-line[data-v-102b7206]{border-radius:var(--radius-md);background:var(--paper-3,#eee);height:14px;position:relative;overflow:hidden}.dt-sk-line[data-v-102b7206]:after{content:"";background:linear-gradient(90deg,#0000,oklch(100% 0 0/.55),#0000);animation:1.4s infinite dt-sk-shimmer-102b7206;position:absolute;inset:0;transform:translate(-100%)}[data-theme=ink] .dt-sk-line[data-v-102b7206]:after{background:linear-gradient(90deg,#0000,oklch(100% 0 0/.09),#0000)}@keyframes dt-sk-shimmer-102b7206{to{transform:translate(100%)}}@media (width<=900px){.dt-sk-cell[data-v-102b7206]:nth-child(n+4){display:none}.dt-toolbar[data-v-102b7206]{flex-direction:column;align-items:stretch}.dt-toolbar-actions[data-v-102b7206]{justify-content:flex-end;margin-left:0}.dt-table thead[data-v-102b7206]{display:none}.dt-table[data-v-102b7206],.dt-table tbody[data-v-102b7206],.dt-table tr[data-v-102b7206],.dt-table td[data-v-102b7206]{width:100%;display:block}.dt-table tbody tr[data-v-102b7206]{border-bottom:1px solid var(--line);padding:.75rem 1rem}.dt-table tbody tr[data-v-102b7206]:last-child{border-bottom:none}.dt-table td[data-v-102b7206]{font-size:var(--text-md);border-bottom:none;justify-content:space-between;align-items:center;gap:.75rem;min-height:0;padding:.3rem 0;display:flex}.dt-table td[data-v-102b7206]:before{content:attr(data-label);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--ink-3);flex-shrink:0;min-width:6rem}.dt-table tr.dt-detail-row td[data-v-102b7206]{padding:0 0 var(--space-sm);display:block}.dt-table tr.dt-detail-row td[data-v-102b7206]:before{content:none}.dt-table td[data-v-102b7206]:not([data-label]){border-top:1px solid var(--line);justify-content:flex-end;margin-top:.25rem;padding-top:.5rem}.dt-table td[data-v-102b7206]:not([data-label]):before{display:none}.dt-table td.dt-align-center[data-v-102b7206],.dt-table td.dt-align-right[data-v-102b7206]{text-align:right}.dt-footer[data-v-102b7206]{flex-direction:column;gap:.75rem;padding:.75rem}.dt-footer-controls[data-v-102b7206]{justify-content:space-between;width:100%}.dt-page-size[data-v-102b7206]{display:none}}.recent-head[data-v-b076f016]{border-bottom:none;margin-bottom:10px;padding-bottom:0}.station-place[data-v-b076f016]{display:block}@media (width<=900px){.hide-mobile[data-v-b076f016]{display:none}}.sparkline-skeleton[data-v-74bd0139]{border-radius:var(--radius-md);width:100%;height:140px}.sparkline-empty--error[data-v-74bd0139]{color:var(--err-ink);gap:10px}@font-face{font-family:Inter;font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/Inter-latin-ext-DpK-iCPk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/Inter-latin-BwkfbSeq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/assets/JetBrainsMono-latin-ext-DIC32ArD.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/assets/JetBrainsMono-latin-6fWv1k7M.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:General Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/GeneralSans-600-DFLbTJgb.woff2)format("woff2")}:root{--paper:oklch(97.2% .004 80);--paper-2:oklch(99.5% .002 80);--paper-3:oklch(95.5% .005 80);--ink:oklch(20% .012 260);--ink-2:oklch(38% .012 260);--ink-3:oklch(52% .01 260);--line:oklch(91.5% .005 80);--line-2:oklch(85% .006 80);--line-strong:oklch(65% .008 80);--pulse-peak:.6;--pulse-peak-soft:.78;--pulse-trough:1.16;--status-ok:oklch(65% .115 162);--status-pending:oklch(70% .1 210);--status-active:oklch(56% .15 264);--status-hold:oklch(72% .135 70);--status-hold-ev:oklch(80% .125 85);--status-closing:oklch(62% .1 185);--status-reserved:oklch(60% .145 295);--status-idle:oklch(58% .015 260);--status-fault:oklch(60% .19 27);--status-ok-soft:color-mix(in oklch, var(--status-ok) 16%, transparent);--status-ok-ink:color-mix(in oklab, var(--status-ok) 65%, var(--ink));--status-pending-soft:color-mix(in oklch, var(--status-pending) 16%, transparent);--status-pending-ink:color-mix(in oklab, var(--status-pending) 65%, var(--ink));--status-active-soft:color-mix(in oklch, var(--status-active) 16%, transparent);--status-active-ink:color-mix(in oklab, var(--status-active) 65%, var(--ink));--status-hold-soft:color-mix(in oklch, var(--status-hold) 16%, transparent);--status-hold-ink:color-mix(in oklab, var(--status-hold) 65%, var(--ink));--status-hold-ev-soft:color-mix(in oklch, var(--status-hold-ev) 16%, transparent);--status-hold-ev-ink:color-mix(in oklab, var(--status-hold-ev) 55%, var(--ink));--status-closing-soft:color-mix(in oklch, var(--status-closing) 16%, transparent);--status-closing-ink:color-mix(in oklab, var(--status-closing) 65%, var(--ink));--status-reserved-soft:color-mix(in oklch, var(--status-reserved) 16%, transparent);--status-reserved-ink:color-mix(in oklab, var(--status-reserved) 65%, var(--ink));--status-idle-soft:color-mix(in oklch, var(--status-idle) 16%, transparent);--status-idle-ink:color-mix(in oklab, var(--status-idle) 65%, var(--ink));--status-fault-soft:color-mix(in oklch, var(--status-fault) 16%, transparent);--status-fault-ink:color-mix(in oklab, var(--status-fault) 65%, var(--ink));--ocpp-available:var(--status-ok);--ocpp-preparing:var(--status-pending);--ocpp-charging:var(--status-active);--ocpp-suspendedevse:var(--status-hold);--ocpp-suspendedev:var(--status-hold-ev);--ocpp-finishing:var(--status-closing);--ocpp-reserved:var(--status-reserved);--ocpp-unavailable:var(--status-idle);--ocpp-faulted:var(--status-fault);--ocpp-available-soft:var(--status-ok-soft);--ocpp-available-ink:var(--status-ok-ink);--ocpp-preparing-soft:var(--status-pending-soft);--ocpp-preparing-ink:var(--status-pending-ink);--ocpp-charging-soft:var(--status-active-soft);--ocpp-charging-ink:var(--status-active-ink);--ocpp-suspendedevse-soft:var(--status-hold-soft);--ocpp-suspendedevse-ink:var(--status-hold-ink);--ocpp-suspendedev-soft:var(--status-hold-ev-soft);--ocpp-suspendedev-ink:var(--status-hold-ev-ink);--ocpp-finishing-soft:var(--status-closing-soft);--ocpp-finishing-ink:var(--status-closing-ink);--ocpp-reserved-soft:var(--status-reserved-soft);--ocpp-reserved-ink:var(--status-reserved-ink);--ocpp-unavailable-soft:var(--status-idle-soft);--ocpp-unavailable-ink:var(--status-idle-ink);--ocpp-faulted-soft:var(--status-fault-soft);--ocpp-faulted-ink:var(--status-fault-ink);--ok:var(--ocpp-available);--ok-strong:var(--ocpp-available);--ok-soft:var(--ocpp-available-soft);--ok-ink:var(--ocpp-available-ink);--warn:oklch(72% .15 75);--warn-soft:oklch(95% .045 75);--warn-ink:oklch(42% .12 75);--err:oklch(62% .22 25);--err-soft:oklch(95% .04 25);--err-ink:oklch(40% .18 25);--info:oklch(65% .14 250);--info-soft:oklch(95% .03 250);--info-ink:oklch(35% .15 250);--fin-soft:oklch(95% .03 220);--fin-ink:oklch(35% .14 220);--chart-line:oklch(56% .15 264);--chart-fill:oklch(56% .15 264/.12);--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-brand:"General Sans", var(--font-sans);--text-xs:12px;--text-sm:13px;--text-md:14px;--text-lg:16px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--weight-normal:400;--weight-medium:500;--weight-bold:600;--type-display:600 30px/36px var(--font-sans);--type-title:600 24px/32px var(--font-sans);--type-heading:600 16px/24px var(--font-sans);--type-subheading:600 14px/20px var(--font-sans);--type-body:400 14px/20px var(--font-sans);--type-body-strong:500 14px/20px var(--font-sans);--type-secondary:400 13px/18px var(--font-sans);--type-secondary-strong:500 13px/18px var(--font-sans);--type-caption:400 12px/16px var(--font-sans);--type-overline:600 12px/16px var(--font-sans);--tracking-caps:.05em;--tracking-brand:-.025em;--type-mono:400 13px/20px var(--font-mono);--type-mono-sm:400 12px/16px var(--font-mono);--phase-reading-gap:2ch;--sidebar-w:240px;--topbar-h:52px;--content-max:1440px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-pill:999px;--shadow-card:0 1px 2px oklch(20% .01 260/.04);--shadow-float:0 1px 2px oklch(20% .01 260/.06), 0 8px 24px oklch(20% .01 260/.1);--focus-ring:0 0 0 3px color-mix(in oklch, var(--ink) 18%, transparent);--control-h:36px;--control-h-sm:28px;--search-w:280px;--space-2xs:2px;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--pad-card:20px;--pad-section:28px;--gap:16px;--row-h:52px;--transition-fast:.15s ease;--transition-normal:.2s ease}:root[data-density=compact]{--control-h:32px;--control-h-sm:26px;--pad-card:14px;--pad-section:20px;--gap:12px;--row-h:44px;--space-2xs:2px;--space-xs:3px;--space-sm:6px;--space-md:10px;--space-lg:12px;--space-xl:18px;--space-2xl:24px}:root[data-theme=ink]{--paper:oklch(16% .01 260);--paper-2:oklch(19.5% .012 260);--paper-3:oklch(22.5% .012 260);--ink:oklch(96% .005 80);--ink-2:oklch(80% .006 80);--ink-3:oklch(64% .008 260);--line:oklch(27% .012 260);--line-2:oklch(36% .014 260);--line-strong:oklch(51% .014 260);--shadow-card:none;--shadow-float:0 0 0 1px oklch(32% .014 260), 0 12px 32px oklch(0% 0 0/.45);--pulse-peak:1.5;--pulse-peak-soft:1.22;--pulse-trough:.7;--chart-line:oklch(74% .13 264);--chart-fill:oklch(74% .13 264/.14);--warn-soft:oklch(30% .06 75);--warn-ink:oklch(85% .13 75);--err-soft:oklch(30% .08 25);--err-ink:oklch(82% .18 25);--info-soft:oklch(28% .06 250);--info-ink:oklch(85% .13 250);--fin-soft:oklch(28% .06 220);--fin-ink:oklch(85% .13 220)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--paper);color:var(--ink);font:var(--type-body);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}body{min-height:100vh}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}h1{font:var(--type-title);color:var(--ink)}h2{font:var(--type-heading);color:var(--ink)}h3{font:var(--type-subheading);color:var(--ink)}code,.mono{font:var(--type-mono)}.num{font-variant-numeric:tabular-nums}.cell-unit,.cell-muted{color:var(--ink-3)}.cell-unit{margin-left:.2em}.cell-ok{color:var(--status-ok-ink)}.cell-fault{color:var(--status-fault-ink)}.tbl{border-collapse:collapse;width:100%}.tbl thead th{text-align:left;padding:var(--space-md) var(--space-lg);font:var(--type-secondary-strong);font-variant-numeric:normal;color:var(--ink-3);border-bottom:1px solid var(--line);background:var(--paper-2);white-space:nowrap}.tbl tbody td{padding:0 var(--space-lg);height:var(--row-h);border-bottom:1px solid var(--line);font:var(--type-body);font-variant-numeric:normal;color:var(--ink);vertical-align:middle}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody td.dt-primary{font:var(--type-body-strong);font-variant-numeric:normal}.tbl tbody td.dt-primary .cell-muted{font-weight:var(--weight-normal)}.tbl tbody td.dt-muted{color:var(--ink-3)}.tbl tbody td.dt-id{font:var(--type-mono);font-variant-numeric:normal}.tbl tbody td.dt-num{font-variant-numeric:tabular-nums;white-space:nowrap}::selection{background:var(--paper-3);color:var(--ink)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:var(--radius-pill);border:2px solid var(--paper)}::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ui-spin{animation:.8s linear infinite ui-spin}@keyframes ui-spin{to{transform:rotate(360deg)}}.app-layout{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);min-height:100vh;display:grid}.main-wrapper{flex-direction:column;min-width:0;min-height:100vh;display:flex}.main-content{width:100%;max-width:calc(var(--content-max) + 2 * var(--space-2xl));padding:var(--pad-section) var(--space-2xl) 120px;gap:var(--pad-section);flex-direction:column;flex:1;display:flex}.main-content>*{min-width:0}@media (width<=900px){.app-layout{flex-direction:column;display:flex}.main-wrapper{padding-top:56px}.main-content{padding:var(--space-xl) var(--space-lg) 120px}}.skeleton{background:var(--paper-3);border-radius:var(--radius-md);-webkit-user-select:none;user-select:none;pointer-events:none;position:relative;overflow:hidden;color:#0000!important}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,oklch(100% 0 0/.5),#0000);animation:1.4s infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}[data-theme=ink] .skeleton:after{background:linear-gradient(90deg,#0000,oklch(100% 0 0/.08),#0000)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.panel,.card,.info-card{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--pad-card)}.panel-flush{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:auto hidden}.panel-head{justify-content:space-between;align-items:center;gap:var(--space-md);padding-bottom:var(--space-md);margin-bottom:var(--space-md);display:flex}.panel-head--noborder{padding-bottom:0}.panel-flush .panel-head{padding:var(--space-lg) var(--pad-card);border-bottom:1px solid var(--line);margin-bottom:0}.panel-title{align-items:baseline;gap:var(--space-sm);min-width:0;font:var(--type-subheading);color:var(--ink);display:flex}.panel-title>span:first-child{white-space:nowrap}.panel-title .num{font:var(--type-secondary);color:var(--ink-3);white-space:nowrap}.panel-actions{align-items:center;gap:var(--space-sm);font:var(--type-secondary);color:var(--ink-3);flex-shrink:0;display:flex}.panel-actions a{color:var(--ink-2);text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);text-underline-offset:3px}.panel-actions a:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.card-header-row{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:28px;margin-bottom:var(--space-md);display:flex}.info-grid{gap:var(--space-lg);margin-bottom:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.live-badge{align-items:center;gap:var(--space-xs);font:var(--type-secondary-strong);color:var(--status-ok-ink);white-space:nowrap;display:inline-flex}.live-dot{background:var(--status-ok);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:1.6s ease-in-out infinite live-pulse;display:inline-block}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.live-dot{animation:none}}.pill{align-items:center;gap:var(--space-xs);padding:1px var(--space-sm);border-radius:var(--radius-pill);border:1px solid var(--line-2);background:var(--paper-2);font:var(--type-caption);color:var(--ink-2);white-space:nowrap;display:inline-flex}.pill-accent{background:var(--paper-3);border-color:color-mix(in oklch, var(--ink) 30%, var(--line));color:var(--ink)}.pill-warn{background:var(--warn-soft);border-color:color-mix(in oklch, var(--warn) 30%, var(--line));color:var(--warn-ink)}.pill-err{background:var(--err-soft);border-color:color-mix(in oklch, var(--err) 30%, var(--line));color:var(--err-ink)}.pill-muted{color:var(--ink-3)}.pill-ink{background:var(--ink);color:var(--paper);border-color:var(--ink)}.req{color:var(--status-fault);margin-left:var(--space-2xs)}.required-mark{color:var(--status-fault-ink);margin-left:var(--space-2xs)}.form-error{font:var(--type-caption);color:var(--status-fault-ink);margin:0}.wordmark{font-family:var(--font-brand);font-weight:var(--weight-bold);font-size:var(--text-xl);letter-spacing:var(--tracking-brand);font-feature-settings:"ss01";color:var(--ink);line-height:1;position:relative;top:-.118em}.overline{font:var(--type-overline);letter-spacing:var(--tracking-caps);text-transform:uppercase}.hint{font:var(--type-caption);color:var(--ink-3);margin-top:var(--space-2xs);display:block}.empty-state{align-items:center;gap:var(--space-sm);padding:var(--space-2xl) var(--space-lg);text-align:center;font:var(--type-body);color:var(--ink-3);flex-direction:column;display:flex}.p-inputtext,.p-select,.p-datepicker,.p-multiselect,.p-password,.p-inputnumber,.p-togglebutton,.p-selectbutton .p-togglebutton{height:var(--control-h)}.p-textarea{height:auto;min-height:var(--control-h)}.p-inputtext-sm,.p-select-sm,.p-multiselect-sm,.p-datepicker-sm,.p-password-sm,.p-inputnumber-sm{height:var(--control-h-sm)}.p-datepicker.date-field{width:140px}.p-datepicker.date-field .p-datepicker-input{min-width:0}.p-select,.p-multiselect{align-items:center}.p-select-label,.p-multiselect-label{align-items:center;padding-block:0;display:flex}.filter-select{min-width:150px}.gateway-url-box{background:var(--paper-3);border:1px solid var(--line);border-radius:var(--radius-md);margin-top:8px;padding:10px 12px}.gateway-url-code{font:var(--type-mono-sm);color:var(--ink);background:var(--paper-3);border-radius:var(--radius-md);word-break:break-all;padding:6px 10px;line-height:1.5;display:block}.gateway-url-row{align-items:flex-start;gap:8px;display:flex}.gateway-url-row .gateway-url-code{flex:1;min-width:0}.endpoint-bar{background:var(--paper-3);border:1px solid var(--line);border-radius:var(--radius-md);align-items:center;gap:0;margin-top:8px;display:flex;overflow:hidden}.endpoint-bar-url{min-width:0;font:var(--type-mono-sm);color:var(--ink-2);word-break:break-all;background:0 0;flex:1;padding:7px 10px}.page-hero{justify-content:space-between;align-items:flex-end;gap:40px;padding-bottom:6px;display:flex}.page-hero h1{font:var(--type-display);text-wrap:balance;max-width:820px}.page-hero .meta{color:var(--ink-3);font:var(--type-secondary);text-align:right;flex-shrink:0}.page-hero .meta .mono{color:var(--ink-2)}.detail-title{font-family:var(--font-sans);font-size:var(--text-3xl);font-weight:var(--weight-medium);color:var(--ink);margin:0}.pulse-strip{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);grid-template-columns:repeat(5,1fr);display:grid;overflow:hidden}.pulse-cell{border-right:1px solid var(--line);flex-direction:column;gap:10px;padding:20px 22px;display:flex;position:relative}.pulse-cell:last-child{border-right:none}.pulse-label{font:var(--type-secondary-strong);color:var(--ink-3)}.pulse-val{font:var(--type-display);font-variant-numeric:tabular-nums;color:var(--ink);align-items:baseline;gap:8px;display:flex}.pulse-val .unit{font:var(--type-body);color:var(--ink-3)}.pulse-sub{font:var(--type-caption);color:var(--ink-3);font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:flex}.pulse-delta{border-radius:var(--radius-sm);font:var(--type-caption);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums;align-items:center;gap:3px;padding:1px 6px;display:inline-flex}.pulse-delta.up{background:var(--paper-3);color:var(--ink)}.pulse-delta.down{background:var(--err-soft);color:var(--err-ink)}.pulse-delta.flat{background:var(--paper-3);color:var(--ink-3)}.pulse-spark{flex-direction:column;gap:2px;margin-top:auto;display:flex;overflow:hidden}.pulse-spark svg{width:100%;height:34px}.pulse-spark-span{font:var(--type-caption);color:var(--ink-3)}.pulse-spark-hold{height:34px;display:block}.pulse-nospark{height:34px;font:var(--type-caption);color:var(--ink-3);align-items:flex-end;display:flex}.pulse-spark-loading{border-radius:var(--radius-sm);width:100%;height:18px;margin-top:16px;display:block}.hero-row{gap:var(--gap);grid-template-columns:1.55fr 1fr;display:grid}.hero-row--equal{grid-template-columns:1fr 1fr}.split-2{gap:var(--gap);grid-template-columns:1fr 1fr;display:grid}.split-main{grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}.power-panel{flex-direction:column;min-height:340px;padding:0;display:flex;overflow:hidden}.power-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:20px 24px 14px;display:flex}.power-head h2{font:var(--type-heading)}.power-head h2 em{color:inherit;font-style:normal;font-weight:inherit}.power-head .cap{font:var(--type-secondary-strong);color:var(--ink-3);margin-bottom:6px}.power-body{flex:1;grid-template-columns:1fr 280px;align-items:stretch;display:grid}.power-chart{min-height:220px;padding:0 24px 20px;position:relative}.power-nodata{height:220px;color:var(--ink-3);font-size:var(--text-sm);justify-content:center;align-items:center;display:flex}.power-loading{border-radius:var(--radius-md);height:220px}.power-stats{border-left:1px solid var(--line);flex-direction:column;gap:14px;padding:8px 24px 20px;display:flex}.power-stat{flex-direction:column;gap:2px;display:flex}.power-stat-label{align-items:center;gap:var(--space-xs);font:var(--type-secondary-strong);color:var(--ink-3);display:inline-flex}.power-stat-val{font:var(--type-heading);font-size:var(--text-xl);font-variant-numeric:tabular-nums;color:var(--ink)}.power-stat-val .unit{font:var(--type-secondary);color:var(--ink-3);margin-left:3px}.power-stat-hint{font:var(--type-caption);color:var(--ink-3)}.ring-panel{flex-direction:column;gap:16px;padding:20px 24px;display:flex}.ring-wrap{grid-template-columns:180px 1fr;align-items:center;gap:24px;display:grid}.ring-legend{flex-direction:column;gap:10px;display:flex}.legend-row{font:var(--type-secondary);border-bottom:1px solid var(--line);grid-template-columns:10px 1fr auto auto;align-items:center;gap:10px;padding:6px 0;display:grid}.legend-row:last-child{border-bottom:none}.legend-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.legend-label{color:var(--ink-2);font-weight:500}.legend-val{font:var(--type-secondary-strong);font-variant-numeric:tabular-nums;color:var(--ink)}.legend-pct{font:var(--type-caption);font-variant-numeric:tabular-nums;color:var(--ink-3)}.map-panel{min-height:300px;padding:0;position:relative;overflow:hidden}.map-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 20px 14px;display:flex}.map-canvas{background:repeating-linear-gradient(0deg, var(--line) 0 1px, transparent 1px 48px), repeating-linear-gradient(90deg, var(--line) 0 1px, transparent 1px 48px), var(--paper-3);height:320px;position:relative;overflow:hidden}.map-pin{cursor:pointer;border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%)}.map-pin:before{content:"";opacity:.18;background:currentColor;border-radius:50%;position:absolute;inset:-4px}.map-pin.available{background:var(--ocpp-available);color:var(--ocpp-available)}.map-pin.charging{background:var(--status-active);color:var(--status-active)}.map-pin.faulted{background:var(--warn);color:var(--warn)}.map-pin.offline{background:var(--ink-3);color:var(--ink-3)}.map-pin.charging:after{content:"";opacity:.4;border:1px solid;border-radius:50%;animation:2s ease-out infinite map-ripple;position:absolute;inset:-8px}@keyframes map-ripple{0%{opacity:.6;transform:scale(.5)}to{opacity:0;transform:scale(1.4)}}.map-legend{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--ink-2);gap:14px;padding:8px 12px;display:flex;position:absolute;bottom:14px;left:14px}.map-legend .leg{align-items:center;gap:6px;display:flex}.map-legend .dot{border-radius:50%;width:7px;height:7px}.map-panel .leaflet-container{background:var(--paper-3);height:320px}.chip{border-radius:var(--radius-pill);font:var(--type-caption);font-weight:var(--weight-medium);border:1px solid #0000;align-items:center;gap:5px;padding:2px 9px;display:inline-flex}.chip .d{background:currentColor;border-radius:50%;width:6px;height:6px}.chip.available{background:var(--ocpp-available-soft);color:var(--ocpp-available-ink)}.chip.charging{background:var(--ocpp-charging-soft);color:var(--ocpp-charging-ink);animation:2s ease-in-out infinite charge-pulse}.chip.preparing{background:var(--ocpp-preparing-soft);color:var(--ocpp-preparing-ink);animation:2s ease-in-out infinite charge-pulse}.chip.finishing{background:var(--ocpp-finishing-soft);color:var(--ocpp-finishing-ink);animation:2s ease-in-out infinite charge-pulse}.chip.suspendedevse{background:var(--ocpp-suspendedevse-soft);color:var(--ocpp-suspendedevse-ink);animation:2s ease-in-out infinite charge-pulse}.chip.suspendedev{background:var(--ocpp-suspendedev-soft);color:var(--ocpp-suspendedev-ink);animation:2s ease-in-out infinite charge-pulse}.chip.occupied{background:var(--paper-3);color:var(--ink-3);border-color:var(--line-2);animation:2s ease-in-out infinite charge-pulse}.chip.reserved{background:var(--ocpp-reserved-soft);color:var(--ocpp-reserved-ink)}.chip.unavailable{background:var(--ocpp-unavailable-soft);color:var(--ocpp-unavailable-ink)}.chip.unknown{background:var(--paper-3);color:var(--ink-3);border-color:var(--line-2)}.chip.faulted{background:var(--ocpp-faulted-soft);color:var(--ocpp-faulted-ink)}.chip.offline{background:var(--paper-3);color:var(--ink-3);border-color:var(--line-2)}.chip.connected{background:var(--ocpp-available-soft);color:var(--ocpp-available-ink)}.chip.disconnected{background:var(--paper-3);color:var(--ink-3);border-color:var(--line-2)}@keyframes charge-pulse{0%,to{filter:saturate()brightness()}40%,60%{filter:saturate(1.6) brightness(var(--pulse-peak-soft))}}@keyframes charge-pulse-strong{0%,to{filter:saturate(.7) brightness(var(--pulse-trough));opacity:.5}40%,60%{filter:saturate(2.4) brightness(var(--pulse-peak));opacity:1}}.conn-bar{align-items:center;gap:8px;display:flex}.conn-bar .tube{border-radius:var(--radius-pill);background:var(--line);width:72px;height:5px;position:relative;overflow:hidden}.conn-bar .tube-fill{background:var(--status-ok);border-radius:var(--radius-pill);position:absolute;top:0;bottom:0;left:0}.conn-bar .tube-fill.full{background:var(--status-active)}.conn-bar .tube-fill.warn{background:var(--status-hold)}.conn-bar .tube-fill.off{background:var(--ink-3)}.conn-bar .num{font:var(--type-caption);font-variant-numeric:tabular-nums;color:var(--ink-3)}.row-actions{opacity:0;gap:4px;transition:opacity .12s;display:flex}tr:hover .row-actions{opacity:1}.actions-cell{justify-content:flex-end;gap:2px;display:flex}.kpi-list{flex-direction:column;gap:14px;display:flex}.kpi-row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:16px;padding-bottom:14px;display:grid}.kpi-row:last-child{border-bottom:none;padding-bottom:0}.kpi-meta .name{font-size:var(--text-sm);color:var(--ink);font-weight:500}.kpi-meta .sub{font-size:var(--text-xs);color:var(--ink-3);margin-top:2px}.kpi-val{font:var(--type-body-strong);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right}.kpi-val .delta{font-size:var(--text-xs);color:var(--ink);margin-left:6px}.kpi-val .delta.neg{color:var(--warn-ink)}.health-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:4px;display:grid}.health-cell{border-radius:var(--radius-sm);background:var(--status-ok);height:22px}.health-cell.low{background:var(--status-hold-ev)}.health-cell.err{background:var(--status-hold)}.health-cell.idle{background:var(--ink-3)}.day-labels{font:var(--type-caption);color:var(--ink-3);text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:6px;display:grid}.stat-display-row{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.stat-display-val{font-family:var(--font-sans);font-size:var(--text-3xl);color:var(--ink);line-height:1}.stat-display-sub{color:var(--ink-3);font-size:var(--text-sm)}.kpi-section{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.sparkline-empty{height:140px;color:var(--ink-3);font-size:var(--text-sm);justify-content:center;align-items:center;display:flex}.spin{animation:.8s linear infinite spin-anim}@keyframes spin-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.filter-bar{flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0 16px;display:flex}.page-size-select{min-width:76px}.tabs{border-bottom:1px solid var(--line);gap:4px;margin:12px 0 22px;display:flex;overflow-x:auto}.tab{cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:10px 16px;font-weight:500;transition:color .12s;display:inline-flex}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--ink)}.tab.active .tab-count{background:var(--ink);color:var(--paper)}.empty{text-align:center;color:var(--ink-3);border:1px solid var(--line-2);border-radius:var(--radius-md);background:var(--paper-2);padding:60px 20px}.empty-title{font-family:var(--font-sans);font-size:var(--text-xl);color:var(--ink);margin:12px 0 6px}.empty-hint{font-size:var(--text-sm);max-width:440px;margin:0 auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.data-table thead th{text-align:left;font-weight:var(--weight-medium);font-size:var(--text-sm);color:var(--ink-3);border-bottom:1px solid var(--line);background:var(--paper-2);padding:12px 14px}.data-table tbody td{border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink-2);padding:13px 14px}.data-table tbody tr{transition:background .1s}.data-table tbody tr:hover{background:var(--paper-3)}.data-table tbody tr.clickable{cursor:pointer}.data-table .name{color:var(--ink);font-weight:500}.card-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.kard{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius-md);cursor:pointer;color:inherit;padding:18px;text-decoration:none;transition:border-color .15s;display:block}.kard:hover{border-color:var(--ink-3)}.kard-title{font-family:var(--font-sans);font-size:var(--text-xl);margin:0 0 4px}.kard-sub{font:var(--type-caption);color:var(--ink-3);margin-bottom:14px}.kard-stat{font:var(--type-secondary);border-top:1px solid var(--line);justify-content:space-between;padding:6px 0;display:flex}.kard-stat:first-of-type{border-top:none}.kard-stat-k{color:var(--ink-3)}.kard-stat-v{color:var(--ink);font-variant-numeric:tabular-nums}.detail-panel{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius-md);margin-bottom:16px;padding:22px}.detail-panel h3{font-size:var(--text-sm);color:var(--ink-3);font-weight:var(--weight-medium);margin:0 0 14px}.detail-row{border-top:1px solid var(--line);grid-template-columns:150px 1fr;align-items:center;gap:14px;padding:10px 0;display:grid}.detail-row:first-of-type{border-top:none}.detail-row .k{color:var(--ink-3);font-size:var(--text-sm);font-weight:var(--weight-medium)}.detail-row .v{color:var(--ink);font-size:var(--text-sm)}.detail-row .v.mono{font-family:var(--font-mono)}.conn-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.conn-tile{border:1px solid var(--line-2);border-radius:var(--radius-md);background:var(--paper-2);padding:14px}.conn-tile.charging{border-color:color-mix(in oklch, var(--ocpp-charging) 40%, var(--line));background:var(--ocpp-charging-soft)}.conn-tile.faulted{border-color:color-mix(in oklch, var(--err) 40%, var(--line));background:var(--err-soft)}.conn-num{font-family:var(--font-sans);font-size:var(--text-3xl);line-height:1}.conn-status{font-size:var(--text-sm);font-weight:var(--weight-medium)}.conn-tile .kw-tube{background:var(--line);border-radius:var(--radius-sm);height:6px;margin-top:10px;overflow:hidden}.conn-tile .kw-tube-fill{background:var(--status-active);border-radius:var(--radius-sm);height:100%}.conn-tile .session-meta{font:var(--type-caption);font-variant-numeric:tabular-nums;color:var(--ink-3);justify-content:space-between;margin-top:8px;display:flex}.config-table{width:100%;font-size:var(--text-sm);border-collapse:collapse}.config-table th{text-align:left;font-size:var(--text-sm);color:var(--ink-3);border-bottom:1px solid var(--line);font-weight:var(--weight-medium);padding:10px 12px}.config-table td{border-bottom:1px solid var(--line);font-family:var(--font-mono);color:var(--ink-2);padding:10px 12px}.config-table td.config-key{color:var(--ink)}.config-table td.ro{color:var(--ink-3)}.field{margin-bottom:14px;display:block}.field-label{font-size:var(--text-sm);color:var(--ink-3);font-weight:var(--weight-medium);margin-bottom:6px;display:block}.field-input,.field-select,.field-textarea{width:100%;height:var(--control-h);padding:0 var(--space-md);border:1px solid var(--line-2);background:var(--paper);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--ink);font-family:var(--font-sans);outline:none}.field-textarea{height:auto;min-height:var(--control-h);padding:var(--space-sm) var(--space-md)}.field-input:focus,.field-select:focus{border-color:var(--ink-3)}.field-help{font-size:var(--text-xs);color:var(--ink-3);margin-top:4px}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-group{margin-bottom:1rem}.form-group label{font-size:var(--text-md);color:var(--ink);margin-bottom:.375rem;font-weight:500;display:block}.form-group .hint,.form-group .help-text{font-size:var(--text-xs);color:var(--ink-3);margin-top:.25rem;display:block}.form-group input:not(.p-inputtext),.form-group select:not(.p-select),.form-group textarea:not(.p-textarea),.inline-edit input:not(.p-inputtext){height:var(--control-h);padding:0 var(--space-md);border:1px solid var(--line-2);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--paper-2);width:100%;color:var(--ink);transition:border-color var(--transition-fast);outline:none;line-height:1.5}.form-group textarea:not(.p-textarea){height:auto;min-height:var(--control-h);padding:var(--space-sm) var(--space-md)}.form-group input:not(.p-inputtext):focus,.form-group select:not(.p-select):focus,.form-group textarea:not(.p-textarea):focus,.inline-edit input:not(.p-inputtext):focus{border-color:var(--ink-3);box-shadow:var(--focus-ring)}.form-group input::placeholder,.inline-edit input::placeholder{color:var(--ink-3)}.p-dialog-footer .p-button{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm);border-radius:var(--radius-md)}.overlay{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:oklch(20% .012 260/.5);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--paper);border-radius:var(--radius-lg);width:620px;max-width:94vw;max-height:88vh;box-shadow:var(--shadow-float);border:1px solid var(--line-2);padding:28px;overflow:auto}.dialog h2{font-family:var(--font-sans);font-size:var(--text-2xl);margin:0 0 6px;font-weight:500}.dialog .dialog-sub{color:var(--ink-3);font-size:var(--text-sm);margin-bottom:20px}.p-dialog{max-width:94vw;max-height:92vh}.p-dialog-title,.modal-title{font-family:var(--font-sans);font-size:var(--text-xl);font-weight:var(--weight-medium);color:var(--ink)}.stepper{margin-bottom:22px;display:flex}.step-pill{border-bottom:2px solid var(--line);font-size:var(--text-sm);color:var(--ink-3);font-weight:var(--weight-medium);flex:1;padding:10px 12px}.step-pill.current,.step-pill.done{color:var(--ink);border-bottom-color:var(--ink)}.badge{align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;line-height:1.4;display:inline-flex}.badge-success{background:var(--status-ok-soft);color:var(--status-ok-ink)}.badge-warning{background:var(--status-hold-soft);color:var(--status-hold-ink)}.badge-error{background:var(--status-fault-soft);color:var(--status-fault-ink)}.badge-info{background:var(--status-active-soft);color:var(--status-active-ink)}.badge-neutral{background:var(--paper-3);color:var(--ink-3)}.badge-charging{background:var(--status-active-soft);color:var(--status-active-ink);animation:2s ease-in-out infinite charge-pulse}.badge-preparing{background:var(--status-pending-soft);color:var(--status-pending-ink);animation:2s ease-in-out infinite charge-pulse}.badge-finishing{background:var(--status-closing-soft);color:var(--status-closing-ink);animation:2s ease-in-out infinite charge-pulse}.badge-suspendedevse{background:var(--status-hold-soft);color:var(--status-hold-ink);animation:2s ease-in-out infinite charge-pulse}.badge-suspendedev{background:var(--status-hold-ev-soft);color:var(--status-hold-ev-ink);animation:2s ease-in-out infinite charge-pulse}.badge-reserved{background:var(--status-reserved-soft);color:var(--status-reserved-ink)}.badge-unavailable{background:var(--status-idle-soft);color:var(--status-idle-ink)}.badge-occupied{background:var(--paper-3);color:var(--ink-3);animation:2s ease-in-out infinite charge-pulse}.badge-green{background:var(--status-ok-soft);color:var(--status-ok-ink)}.badge-red{background:var(--status-fault-soft);color:var(--status-fault-ink)}.badge-amber{background:var(--status-hold-soft);color:var(--status-hold-ink)}.badge-orange{background:var(--status-hold-ev-soft);color:var(--status-hold-ev-ink)}.badge-mirror{background:var(--status-active-soft);color:var(--status-active-ink)}.badge-override{background:var(--status-reserved-soft);color:var(--status-reserved-ink)}.badge-primary{background:var(--paper-3);color:var(--ink-2)}.badge-secondary,.badge-feature{background:var(--paper-3);color:var(--ink-3)}.status-available{color:var(--ocpp-available)}.status-charging{color:var(--ocpp-charging)}.status-unavailable{color:var(--ocpp-unavailable)}.status-faulted{color:var(--ocpp-faulted)}.status-suspended{color:var(--ocpp-suspendedevse)}.connection-dot{background:var(--ink-3);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.connection-dot.connected{background:var(--ocpp-available)}.fab{border-radius:var(--radius-pill);background:var(--ink);width:52px;height:52px;color:var(--paper);box-shadow:var(--shadow-float);cursor:pointer;z-index:50;border:none;place-items:center;transition:transform .2s;display:grid;position:fixed;bottom:28px;right:28px}.fab:hover{transform:scale(1.05)}.fab svg{width:20px;height:20px}[data-theme=ink] .fab{background:var(--ink);color:var(--ink)}.info-card-title{font:var(--type-subheading);color:var(--ink);margin:0}.text-muted{color:var(--ink-3)}.not-set{color:var(--ink-3);font-style:italic}.code-text{font:var(--type-mono);color:var(--ink)}.text-mono{font:var(--type-mono-sm)}.empty-state p{margin-bottom:.5rem}.empty-state .hint{font-size:var(--text-md);margin-bottom:1.5rem}@media (width<=1280px){.pulse-strip{grid-template-columns:repeat(3,1fr)}.pulse-cell:nth-child(3){border-right:none}.hero-row,.split-2,.split-main,.power-body,.ring-wrap{grid-template-columns:1fr}}@media (width<=900px){.pulse-strip{grid-template-columns:1fr 1fr}.pulse-cell:nth-child(2n){border-right:none}.page-hero{flex-direction:column;align-items:flex-start;gap:12px}.page-hero h1{font-size:var(--text-2xl)}.page-hero .meta{text-align:left}}
