@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap";.toasts[data-v-00780d79]{bottom:var(--space-5);right:var(--space-5);z-index:1000;gap:var(--space-2);flex-direction:column;max-width:380px;display:flex;position:fixed}.toast[data-v-00780d79]{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border-hi);box-shadow:var(--shadow-md);font-size:var(--text-sm);cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .15s,transform .15s;display:flex}.toast[data-v-00780d79]:hover{opacity:.92;transform:translate(-2px)}.toast-icon[data-v-00780d79]{font-size:var(--text-md);flex-shrink:0;font-weight:700;line-height:1.2}.toast-msg[data-v-00780d79]{color:var(--text);line-height:1.4}.toast-success[data-v-00780d79]{border-color:var(--enc);background:var(--enc-bg)}.toast-success .toast-icon[data-v-00780d79]{color:var(--enc)}.toast-error[data-v-00780d79]{border-color:var(--danger);background:var(--danger-bg)}.toast-error .toast-icon[data-v-00780d79]{color:var(--danger)}.toast-warning[data-v-00780d79]{border-color:var(--warn);background:var(--warn-bg)}.toast-warning .toast-icon[data-v-00780d79]{color:var(--warn)}.toast-info[data-v-00780d79]{border-color:var(--dec);background:var(--dec-bg)}.toast-info .toast-icon[data-v-00780d79]{color:var(--dec)}.toast-enter-from[data-v-00780d79]{opacity:0;transform:translate(40px)}.toast-enter-active[data-v-00780d79],.toast-leave-active[data-v-00780d79]{transition:opacity .25s,transform .25s}.toast-leave-to[data-v-00780d79]{opacity:0;transform:translate(40px)}.app[data-v-c0cd994b]{flex-direction:column;min-height:100vh;display:flex;position:relative;overflow-x:hidden}.bg-fx[data-v-c0cd994b]{pointer-events:none;z-index:0;opacity:.65;position:fixed;inset:0}.bg-canvas[data-v-c0cd994b]{width:100%;height:100%;display:block}.pulse[data-v-c0cd994b]{will-change:transform}.pulse1[data-v-c0cd994b]{animation:8s linear infinite pulseLeft-c0cd994b}.pulse2[data-v-c0cd994b]{animation:11s linear 1.5s infinite pulseRight-c0cd994b}.pulse3[data-v-c0cd994b]{animation:9s linear 3s infinite pulseLeft-c0cd994b}.pulse4[data-v-c0cd994b]{animation:13s linear .8s infinite pulseRight-c0cd994b}.pulse5[data-v-c0cd994b]{animation:10s linear 5s infinite pulseLeft-c0cd994b}.pulse6[data-v-c0cd994b]{animation:12s linear 2.3s infinite pulseRight-c0cd994b}@keyframes pulseLeft-c0cd994b{0%{transform:translate(0)}to{transform:translate(2220px)}}@keyframes pulseRight-c0cd994b{0%{transform:translate(2220px)scaleX(-1)}to{transform:translate(0)scaleX(-1)}}.topbar[data-v-c0cd994b]{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(#070b14eb 0%,#070b14d9 100%);border-bottom:1px solid #3ee79e1f;position:relative}.topbar-inner[data-v-c0cd994b]{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-6);max-width:1600px;margin:0 auto;display:flex}.brand[data-v-c0cd994b]{align-items:center;gap:var(--space-3);padding-right:var(--space-4);border-right:1px solid var(--border);margin-right:var(--space-1);display:flex}.brand-icon[data-v-c0cd994b]{color:var(--enc);filter:drop-shadow(0 0 8px #3ee79e99);font-size:26px;animation:3s ease-in-out infinite pulseBrand-c0cd994b}@keyframes pulseBrand-c0cd994b{0%,to{filter:drop-shadow(0 0 6px #3ee79e66)}50%{filter:drop-shadow(0 0 14px #3ee79ee6)}}.brand-text[data-v-c0cd994b]{flex-direction:column;line-height:1.1;display:flex}.brand-name[data-v-c0cd994b]{font-size:var(--text-md);color:var(--text);letter-spacing:.3px;font-weight:700}.brand-sub[data-v-c0cd994b]{font-family:var(--mono);color:var(--enc);opacity:.7;letter-spacing:1.5px;text-transform:uppercase;margin-top:1px;font-size:10px}.topbar-spacer[data-v-c0cd994b]{flex:1}.status-pill[data-v-c0cd994b]{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);color:var(--enc);font-family:var(--mono);font-size:var(--text-xs);cursor:pointer;background:#3ee79e14;border:1px solid #3ee79e4d;border-radius:999px;font-weight:600;transition:all .15s;display:flex}.status-pill.historic[data-v-c0cd994b]{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.status-pill[data-v-c0cd994b]:hover{transform:translateY(-1px)}.status-dot[data-v-c0cd994b]{background:var(--enc);width:8px;height:8px;box-shadow:0 0 8px var(--enc);border-radius:50%;animation:1.2s ease-in-out infinite blink-c0cd994b}@keyframes blink-c0cd994b{0%,to{opacity:1}50%{opacity:.35}}.topbar-btn[data-v-c0cd994b]{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border-hi);border-radius:var(--radius-md);color:var(--text-dim);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;background:#17203399;transition:all .15s;display:flex}.topbar-btn[data-v-c0cd994b]:hover{border-color:var(--text-muted);color:var(--text)}.topbar-btn.active[data-v-c0cd994b]{border-color:var(--enc);color:var(--enc);background:var(--enc-bg)}.icon-btn[data-v-c0cd994b]{padding:var(--space-2)}.icon-btn.logout[data-v-c0cd994b]:hover{border-color:var(--danger);color:var(--danger)}.gear[data-v-c0cd994b]{transition:transform .3s}.gear.spin[data-v-c0cd994b]{transform:rotate(60deg)}.admin-wrap[data-v-c0cd994b]{position:relative}.admin-dropdown[data-v-c0cd994b]{background:var(--bg-card);border:1px solid var(--border-hi);border-radius:var(--radius-lg);width:220px;box-shadow:var(--shadow-lg);z-index:99;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.admin-list[data-v-c0cd994b]{padding:var(--space-2);flex-direction:column;gap:2px;display:flex}.admin-item[data-v-c0cd994b]{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text-dim);font-size:var(--text-sm);cursor:pointer;text-align:left;background:0 0;border:none;transition:background .1s,color .1s;display:flex}.admin-item[data-v-c0cd994b]:hover{background:var(--bg-hover);color:var(--text)}.admin-item.active[data-v-c0cd994b]{background:var(--enc-bg);color:var(--enc)}.admin-icon[data-v-c0cd994b]{opacity:.85;color:currentColor;flex-shrink:0;width:18px;height:18px}.admin-divider[data-v-c0cd994b]{background:var(--border);height:1px;margin:var(--space-2) 0}.dropdown-user[data-v-c0cd994b]{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.dropdown-user-info[data-v-c0cd994b]{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.dropdown-username[data-v-c0cd994b]{font-family:var(--mono);font-size:var(--text-sm);color:var(--text);font-weight:600}.admin-item.logout-item[data-v-c0cd994b]{color:var(--text-muted)}.admin-item.logout-item[data-v-c0cd994b]:hover{background:var(--danger-bg);color:var(--danger)}.user-pill[data-v-c0cd994b]{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:#17203399;display:flex}.username[data-v-c0cd994b]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text)}.role-badge[data-v-c0cd994b]{font-family:var(--mono);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;font-size:10px;font-weight:700}.role-badge.admin[data-v-c0cd994b]{background:var(--enc-bg);color:var(--enc)}.role-badge.viewer[data-v-c0cd994b]{background:var(--dec-bg);color:var(--dec)}.backdrop[data-v-c0cd994b]{z-index:98;background:0 0;position:fixed;inset:0}.history-dropdown[data-v-c0cd994b]{top:calc(100% + 4px);right:var(--space-6);background:var(--bg-card);border:1px solid var(--border-hi);border-radius:var(--radius-lg);width:400px;box-shadow:var(--shadow-lg);z-index:99;flex-direction:column;display:flex;position:absolute;overflow:hidden}.dropdown-hdr[data-v-c0cd994b]{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.dropdown-title[data-v-c0cd994b]{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);font-weight:600;font-family:var(--mono)}.dropdown-close[data-v-c0cd994b]{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:14px}.dropdown-close[data-v-c0cd994b]:hover{background:var(--bg-hover);color:var(--text)}.dropdown-msg[data-v-c0cd994b]{padding:var(--space-5);text-align:center;color:var(--text-muted);font-size:var(--text-sm);font-style:italic}.picker-body[data-v-c0cd994b]{gap:var(--space-3);padding:var(--space-3) var(--space-4);flex-direction:column;max-height:500px;display:flex;overflow-y:auto}.live-btn[data-v-c0cd994b]{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-dim);font-size:var(--text-sm);cursor:pointer;text-align:left;display:flex}.live-btn[data-v-c0cd994b]:hover{background:var(--bg-hover);border-color:var(--enc)}.live-btn.selected[data-v-c0cd994b]{background:var(--enc-bg);border-color:var(--enc);color:var(--enc)}.live-dot[data-v-c0cd994b]{color:var(--enc);font-size:8px}.sep[data-v-c0cd994b]{background:var(--border);height:1px}.picker-step[data-v-c0cd994b]{gap:var(--space-2);flex-direction:column;display:flex}.step-label[data-v-c0cd994b]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);font-weight:600}.days-grid[data-v-c0cd994b]{gap:var(--space-1);grid-template-columns:repeat(3,1fr);display:grid}.day-btn[data-v-c0cd994b]{padding:var(--space-2) var(--space-1);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-dim);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;text-align:center}.day-btn[data-v-c0cd994b]:hover{background:var(--bg-hover);border-color:var(--warn);color:var(--warn)}.day-btn.active[data-v-c0cd994b]{background:var(--warn-bg);border-color:var(--warn);color:var(--warn);font-weight:600}.times-grid[data-v-c0cd994b]{gap:var(--space-1);grid-template-columns:repeat(6,1fr);display:grid}.time-btn[data-v-c0cd994b]{padding:var(--space-1) 0;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;text-align:center}.time-btn[data-v-c0cd994b]:hover{background:var(--bg-hover);border-color:var(--dec);color:var(--dec)}.time-btn.active[data-v-c0cd994b]{background:var(--dec-bg);border-color:var(--dec);color:var(--dec);font-weight:600}.hero[data-v-c0cd994b]{z-index:10;padding:var(--space-6) var(--space-6) var(--space-4);position:relative}.hero-inner[data-v-c0cd994b]{gap:var(--space-4);grid-template-columns:repeat(4,1fr);max-width:1600px;margin:0 auto;display:grid}.metric[data-v-c0cd994b]{border:1px solid var(--border-hi);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);gap:var(--space-1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(145deg,#172033d9,#202b45d9);flex-direction:column;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.metric[data-v-c0cd994b]:hover{border-color:var(--border-strong);transform:translateY(-2px)}.metric.metric-up[data-v-c0cd994b]{border-color:#3ee79e40}.metric.metric-up[data-v-c0cd994b]:hover{border-color:#3ee79e99;box-shadow:0 8px 24px #3ee79e1f}.metric.metric-dw[data-v-c0cd994b]{border-color:#7ab8ff40}.metric.metric-dw[data-v-c0cd994b]:hover{border-color:#7ab8ff99;box-shadow:0 8px 24px #7ab8ff1f}.metric.metric-up[data-v-c0cd994b]:before,.metric.metric-dw[data-v-c0cd994b]:before{content:"";opacity:.4;background:linear-gradient(90deg,#0000,currentColor,#0000);height:2px;position:absolute;top:0;left:0;right:0}.metric.metric-up[data-v-c0cd994b]:before{color:var(--enc)}.metric.metric-dw[data-v-c0cd994b]:before{color:var(--dec)}.metric-hdr[data-v-c0cd994b]{justify-content:space-between;align-items:center;display:flex}.metric-label[data-v-c0cd994b]{font-family:var(--mono);font-size:var(--text-xs);letter-spacing:1px;text-transform:uppercase;color:var(--text-muted);font-weight:600}.metric-icon[data-v-c0cd994b]{color:var(--text-faint);opacity:.7;font-size:14px}.metric-arrow[data-v-c0cd994b]{font-size:16px;font-weight:700}.metric.metric-up .metric-arrow[data-v-c0cd994b]{color:var(--enc)}.metric.metric-dw .metric-arrow[data-v-c0cd994b]{color:var(--dec)}.metric-value[data-v-c0cd994b]{font-family:var(--mono);margin-top:var(--space-1);font-size:36px;font-weight:700;line-height:1}.metric-value.enc[data-v-c0cd994b]{color:var(--enc);text-shadow:0 0 18px #3ee79e59}.metric-value.dec[data-v-c0cd994b]{color:var(--dec);text-shadow:0 0 18px #7ab8ff59}.metric-value.neutral[data-v-c0cd994b]{color:var(--text)}.metric-unit[data-v-c0cd994b]{font-size:var(--text-md);color:var(--text-dim);margin-left:4px;font-weight:500}.metric-sub[data-v-c0cd994b]{font-size:var(--text-xs);color:var(--text-faint);margin-top:2px}.metric-sub.ok[data-v-c0cd994b]{color:var(--enc)}.metric-sub.warn[data-v-c0cd994b]{color:var(--warn)}.tabs[data-v-c0cd994b]{z-index:9;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#070b1466;position:relative}.tabs-inner[data-v-c0cd994b]{gap:var(--space-1);padding:0 var(--space-6);max-width:1600px;margin:0 auto;display:flex;overflow-x:auto}.tab[data-v-c0cd994b]{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;border-bottom:2px solid #0000;font-weight:500;text-decoration:none;transition:color .12s,border-color .12s;position:relative}.tab[data-v-c0cd994b]:hover{color:var(--text);text-decoration:none}.tab.active[data-v-c0cd994b]{color:var(--enc);border-bottom-color:var(--enc)}.main[data-v-c0cd994b]{z-index:1;padding:var(--space-6);flex:1;width:100%;max-width:1600px;margin:0 auto;position:relative}@media (width<=1200px){.hero-inner[data-v-c0cd994b]{grid-template-columns:repeat(2,1fr)}}@media (width<=700px){.hero-inner[data-v-c0cd994b]{grid-template-columns:1fr}.topbar-inner[data-v-c0cd994b]{flex-wrap:wrap}.brand[data-v-c0cd994b]{border-right:none;margin-right:0;padding-right:0}}.overlay[data-v-074dbe0e]{z-index:300;padding:var(--space-4);background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal[data-v-074dbe0e]{background:var(--bg-card);border:1px solid var(--border-hi);border-radius:var(--radius-xl);width:92vw;max-width:92vw;box-shadow:var(--shadow-lg);flex-direction:column;height:auto;max-height:88vh;display:flex;overflow:hidden}.modal-hdr[data-v-074dbe0e]{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.modal-hdr-text[data-v-074dbe0e]{flex-direction:column;gap:2px;display:flex}.modal-title[data-v-074dbe0e]{font-size:var(--text-md);color:var(--text);font-weight:700}.modal-meta[data-v-074dbe0e]{font-size:var(--text-xs);color:var(--text-muted)}.close-btn[data-v-074dbe0e]{color:var(--text-muted);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);background:0 0;border:none;flex-shrink:0;font-size:18px;line-height:1}.close-btn[data-v-074dbe0e]:hover{background:var(--bg-hover);color:var(--text)}.modal-body[data-v-074dbe0e]{padding:var(--space-4) var(--space-5);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow:hidden}.ranges[data-v-074dbe0e]{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.range-lbl[data-v-074dbe0e]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-right:var(--space-1)}.range-btn[data-v-074dbe0e]{font-family:var(--mono);font-size:var(--text-xs);border:1px solid var(--border-hi);border-radius:var(--radius-md);color:var(--text-dim);cursor:pointer;background:0 0;padding:4px 12px;transition:border-color .12s,color .12s,background .12s}.range-btn[data-v-074dbe0e]:hover{border-color:var(--text-muted);color:var(--text)}.range-btn.active[data-v-074dbe0e]{border-color:var(--enc);color:var(--enc);background:var(--enc-bg)}.stats[data-v-074dbe0e]{gap:var(--space-2);grid-template-columns:repeat(6,1fr);display:grid}.stat[data-v-074dbe0e]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3)}.stat-lbl[data-v-074dbe0e]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:4px}.stat-val[data-v-074dbe0e]{font-family:var(--mono);font-size:var(--text-lg);font-weight:700}.stat-val.enc[data-v-074dbe0e]{color:var(--enc)}.stat-val.dec[data-v-074dbe0e]{color:var(--dec)}.chart-wrap[data-v-074dbe0e]{flex:1;height:100%;min-height:320px;position:relative}canvas[data-v-074dbe0e]{background:0 0;width:100%!important;height:100%!important;max-height:calc(88vh - 280px)!important}.chart-loading[data-v-074dbe0e],.chart-empty[data-v-074dbe0e]{color:var(--text-muted);font-size:var(--text-sm);justify-content:center;align-items:center;font-style:italic;display:flex;position:absolute;inset:0}.legend[data-v-074dbe0e]{gap:var(--space-5);justify-content:center;display:flex}.legend-item[data-v-074dbe0e]{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-dim);display:flex}.legend-dot[data-v-074dbe0e]{border-radius:2px;flex-shrink:0;width:18px;height:3px;display:inline-block}.mono[data-v-074dbe0e]{font-family:var(--mono)}@media (width<=560px){.stats[data-v-074dbe0e]{grid-template-columns:repeat(3,1fr)}.modal[data-v-074dbe0e]{max-width:100%}}.page[data-v-149e652a]{gap:var(--space-4);flex-direction:column;display:flex}.toolbar[data-v-149e652a]{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;display:flex}.toolbar-spacer[data-v-149e652a]{flex:1}.toolbar-group[data-v-149e652a]{align-items:center;gap:var(--space-2);display:flex}.toolbar-label[data-v-149e652a]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.toolbar-info[data-v-149e652a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-dim)}.btn-segment[data-v-149e652a]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;overflow:hidden}.seg-btn[data-v-149e652a]{color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;background:0 0;border:none}.seg-btn[data-v-149e652a]:hover{color:var(--text);background:var(--bg-hover)}.seg-btn.active[data-v-149e652a]{background:var(--bg-elevated);color:var(--enc)}.toggle-btn[data-v-149e652a]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);border-radius:var(--radius-md);cursor:pointer}.toggle-btn[data-v-149e652a]:hover{color:var(--text);border-color:var(--border-hi)}.toggle-btn.active[data-v-149e652a]{background:var(--enc-bg);color:var(--enc);border-color:var(--enc)}.search[data-v-149e652a]{padding:var(--space-1) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);outline:none;min-width:200px}.search[data-v-149e652a]:focus{border-color:var(--dec)}.refresh-btn[data-v-149e652a]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);border-radius:var(--radius-md);cursor:pointer;min-width:60px}.refresh-btn[data-v-149e652a]:hover{background:var(--bg-hover);color:var(--text)}.hint[data-v-149e652a]{text-align:center;padding:var(--space-8);color:var(--text-muted)}.table-wrap[data-v-149e652a]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.grouped-actions[data-v-149e652a]{padding:var(--space-2) var(--space-4);background:var(--bg-raised);border-bottom:1px solid var(--border);gap:var(--space-2);font-size:var(--text-xs);display:flex}.link-btn[data-v-149e652a]{color:var(--dec);cursor:pointer;font-size:var(--text-xs);background:0 0;border:none;padding:0}.link-btn[data-v-149e652a]:hover{text-decoration:underline}.table[data-v-149e652a]{border-collapse:collapse;table-layout:fixed;width:100%}.table col.col-heat[data-v-149e652a]{width:6px}.table col.col-name[data-v-149e652a]{width:200px}.table col.col-vlan[data-v-149e652a]{width:70px}.table col.col-desc[data-v-149e652a]{width:auto;min-width:200px}.table col.col-num[data-v-149e652a]{width:130px}.table col.col-time[data-v-149e652a]{width:100px}.table thead th[data-v-149e652a]{text-align:left;font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);padding:var(--space-3) var(--space-4);background:var(--bg-raised);border-bottom:1px solid var(--border);z-index:1;font-weight:600;position:sticky;top:0}.table thead th.num[data-v-149e652a]{text-align:right}.table tbody td[data-v-149e652a]{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);font-size:var(--text-sm);color:var(--text-dim);vertical-align:middle}.table-wrap.compact .table tbody td[data-v-149e652a]{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}.data-row[data-v-149e652a]:nth-child(2n){background:#202b4559}.data-row[data-v-149e652a]:hover{background:var(--bg-hover)}.heat-cell[data-v-149e652a]{width:6px;padding:0!important}.heat[data-v-149e652a]{background:var(--enc);border-radius:1px;width:4px;height:100%;min-height:28px;margin-left:2px;display:block}.mono[data-v-149e652a]{font-family:var(--mono)}.num[data-v-149e652a]{text-align:right;font-variant-numeric:tabular-nums}.muted[data-v-149e652a]{color:var(--text-muted)}.small[data-v-149e652a]{font-size:var(--text-xs)}.alias[data-v-149e652a]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--dec-bg);color:var(--dec);margin-left:var(--space-2);padding:1px 6px;font-weight:600;display:inline-block}.desc[data-v-149e652a]{text-overflow:ellipsis;white-space:nowrap;max-width:350px;overflow:hidden}.desc-text[data-v-149e652a]{color:var(--text-dim);font-style:italic}.desc-empty[data-v-149e652a]{color:var(--text-faint)}.bps-value[data-v-149e652a]{font-family:var(--mono);margin-right:4px;font-weight:500}.bps-value.enc[data-v-149e652a]{color:var(--enc)}.bps-value.dec[data-v-149e652a]{color:var(--dec)}.bps-unit[data-v-149e652a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted)}.group-header[data-v-149e652a]{background:var(--bg-raised);cursor:pointer;-webkit-user-select:none;user-select:none}.group-header[data-v-149e652a]:hover{background:var(--bg-hover)}.group-header td[data-v-149e652a]{border-bottom:1px solid var(--border-hi);padding:var(--space-2) var(--space-4)!important}.group-label[data-v-149e652a]{align-items:center;gap:var(--space-2);color:var(--text);display:flex}.caret[data-v-149e652a]{width:12px;font-size:var(--text-xs);color:var(--text-muted);display:inline-block}.group-count[data-v-149e652a]{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--mono)}.indent[data-v-149e652a]{color:var(--text-faint);margin-right:var(--space-2)}.empty[data-v-149e652a]{text-align:center;color:var(--text-muted);padding:var(--space-6);font-style:italic}.data-row.clickable[data-v-149e652a]{cursor:pointer}.modal-backdrop[data-v-bed42f46]{padding:var(--space-6) var(--space-4);z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#000000a6;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-container[data-v-bed42f46]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:1280px;max-height:calc(100vh - var(--space-6) * 2);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 20px 60px #00000080}.modal-header[data-v-bed42f46]{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);background:var(--bg-raised);display:flex}.modal-title[data-v-bed42f46]{align-items:center;gap:var(--space-2);display:flex}.title-name[data-v-bed42f46]{font-size:var(--text-lg);color:var(--text);font-weight:600}.modal-meta[data-v-bed42f46]{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);flex:1;display:flex}.modal-meta .mono[data-v-bed42f46]{color:var(--text-dim)}.refresh-btn[data-v-bed42f46]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);border-radius:var(--radius-md);cursor:pointer;min-width:60px}.refresh-btn[data-v-bed42f46]:hover{background:var(--bg-hover);color:var(--text)}.close-btn[data-v-bed42f46]{border:1px solid var(--border);color:var(--text-dim);border-radius:var(--radius-md);width:32px;height:32px;font-size:var(--text-lg);cursor:pointer;background:0 0;justify-content:center;align-items:center;line-height:1;display:flex}.close-btn[data-v-bed42f46]:hover{border-color:var(--danger);color:var(--danger)}.modal-body[data-v-bed42f46]{padding:var(--space-5);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.modal-loading[data-v-bed42f46],.modal-error[data-v-bed42f46]{padding:var(--space-8);text-align:center;color:var(--text-muted)}.modal-error p[data-v-bed42f46]{margin-bottom:var(--space-3);color:var(--danger)}.btn-ghost[data-v-bed42f46]{border:1px solid var(--border-hi);color:var(--text-dim);font-size:var(--text-xs);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;background:0 0}.btn-ghost[data-v-bed42f46]:hover{border-color:var(--text);color:var(--text)}.modal-stats[data-v-bed42f46]{gap:var(--space-3);grid-template-columns:repeat(4,1fr);display:grid}.stat-block[data-v-bed42f46]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);gap:var(--space-1);flex-direction:column;display:flex}.stat-label[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.stat-value[data-v-bed42f46]{font-size:var(--text-lg);color:var(--text);font-weight:600;font-family:var(--mono)}.stat-value.enc[data-v-bed42f46]{color:var(--enc)}.stat-value.dec[data-v-bed42f46]{color:var(--dec)}.modal-toolbar[data-v-bed42f46]{align-items:center;gap:var(--space-3);padding:var(--space-2);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.toolbar-spacer[data-v-bed42f46]{flex:1}.search[data-v-bed42f46]{padding:var(--space-1) var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);outline:none;min-width:200px}.search[data-v-bed42f46]:focus{border-color:var(--dec)}.toolbar-label[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.btn-segment[data-v-bed42f46]{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;overflow:hidden}.seg-btn[data-v-bed42f46]{color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;background:0 0;border:none}.seg-btn[data-v-bed42f46]:hover{color:var(--text);background:var(--bg-hover)}.seg-btn.active[data-v-bed42f46]{background:var(--bg-elevated);color:var(--enc)}.toggle-btn[data-v-bed42f46]{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);border-radius:var(--radius-md);cursor:pointer}.toggle-btn[data-v-bed42f46]:hover{color:var(--text);border-color:var(--border-hi)}.toggle-btn.active[data-v-bed42f46]{background:var(--enc-bg);color:var(--enc);border-color:var(--enc)}.links-grid[data-v-bed42f46]{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(420px,1fr));display:grid}.link-card[data-v-bed42f46]{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.link-header[data-v-bed42f46]{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);gap:var(--space-2);flex-direction:column;display:flex}.link-title-block[data-v-bed42f46]{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.link-name[data-v-bed42f46]{font-size:var(--text-sm);color:var(--text);font-weight:600}.alias-chip-small[data-v-bed42f46],.alias-chip[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--dec-bg);color:var(--dec);border:1px solid var(--dec);padding:1px 8px;font-weight:600}.link-vnis-count[data-v-bed42f46]{font-size:var(--text-xs);font-family:var(--mono);color:var(--text-muted);margin-left:auto}.link-meta[data-v-bed42f46]{align-items:center;gap:var(--space-3);font-size:var(--text-sm);display:flex}.link-meta .mono[data-v-bed42f46]{color:var(--text-dim)}.link-totals[data-v-bed42f46]{align-items:baseline;gap:var(--space-1);font-size:var(--text-sm);margin-left:auto;display:flex}.link-totals .enc[data-v-bed42f46],.link-totals .dec[data-v-bed42f46]{font-weight:500}.link-totals .bps-unit[data-v-bed42f46]{margin-right:var(--space-2)}.link-ifaces[data-v-bed42f46]{flex-wrap:wrap;gap:4px;display:flex}.interface-chip[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-dim);border:1px solid var(--border);padding:1px 6px}.vnis-table[data-v-bed42f46]{border-collapse:collapse;width:100%}.vnis-table thead th[data-v-bed42f46]{text-align:left;font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);padding:var(--space-2) var(--space-3);background:var(--bg-raised);border-bottom:1px solid var(--border);font-weight:600}.vnis-table thead th.num[data-v-bed42f46]{text-align:right}.vnis-table tbody td[data-v-bed42f46]{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);font-size:var(--text-xs);vertical-align:middle}.vnis-table tbody tr:last-child td[data-v-bed42f46]{border-bottom:none}.vnis-table tbody tr[data-v-bed42f46]:hover{background:var(--bg-hover)}.vnis-table .num[data-v-bed42f46]{text-align:right;font-variant-numeric:tabular-nums}.transito-badge[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--transit-bg);color:var(--transit);margin-left:var(--space-2);padding:1px 6px;font-weight:600}.empty[data-v-bed42f46]{padding:var(--space-6);text-align:center;color:var(--text-muted);font-style:italic}.muted[data-v-bed42f46]{color:var(--text-muted)}.mono[data-v-bed42f46]{font-family:var(--mono)}.enc[data-v-bed42f46]{color:var(--enc)}.dec[data-v-bed42f46]{color:var(--dec)}.bps-unit[data-v-bed42f46]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted);margin-left:4px}.page[data-v-04c9a936]{gap:var(--space-4);flex-direction:column;display:flex}.toolbar[data-v-04c9a936]{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;display:flex}.toolbar-spacer[data-v-04c9a936]{flex:1}.toolbar-group[data-v-04c9a936]{align-items:center;gap:var(--space-2);display:flex}.toolbar-label[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.toolbar-info[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-dim)}.btn-segment[data-v-04c9a936]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;overflow:hidden}.seg-btn[data-v-04c9a936]{color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;background:0 0;border:none}.seg-btn[data-v-04c9a936]:hover{color:var(--text);background:var(--bg-hover)}.seg-btn.active[data-v-04c9a936]{background:var(--bg-elevated);color:var(--enc)}.toggle-btn[data-v-04c9a936]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);border-radius:var(--radius-md);cursor:pointer}.toggle-btn[data-v-04c9a936]:hover{color:var(--text);border-color:var(--border-hi)}.toggle-btn.active[data-v-04c9a936]{background:var(--enc-bg);color:var(--enc);border-color:var(--enc)}.search[data-v-04c9a936]{padding:var(--space-1) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);outline:none;min-width:200px}.search[data-v-04c9a936]:focus{border-color:var(--dec)}.refresh-btn[data-v-04c9a936]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);border-radius:var(--radius-md);cursor:pointer;min-width:60px}.refresh-btn[data-v-04c9a936]:hover{background:var(--bg-hover);color:var(--text)}.hint[data-v-04c9a936]{text-align:center;padding:var(--space-8);color:var(--text-muted)}.cards-grid[data-v-04c9a936]{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(380px,1fr));align-items:start;display:grid}.card[data-v-04c9a936]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;transition:border-color .15s;display:flex;overflow:hidden}.card[data-v-04c9a936]:hover{border-color:var(--border-hi)}.card-offline[data-v-04c9a936]{opacity:.65}.card-collapsed .card-header[data-v-04c9a936]{cursor:pointer}.card-collapsed .card-header[data-v-04c9a936]:hover{background:var(--bg-hover)}.card-expanded[data-v-04c9a936]{border-color:var(--enc);box-shadow:0 4px 20px #3ee79e14}.card-expanded .vnis-list[data-v-04c9a936]{max-height:600px;overflow-y:auto}.card-expanded .card-header[data-v-04c9a936]{background:linear-gradient(180deg, var(--bg-card), #202b4580);cursor:pointer}.card-expanded .card-header[data-v-04c9a936]:hover{background:var(--bg-hover)}.card-toggle-btn[data-v-04c9a936]{background:var(--bg-raised);border:1px solid var(--border-hi);border-radius:var(--radius-md);color:var(--text-dim);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:background .15s,border-color .15s,color .15s;display:flex}.card-toggle-btn[data-v-04c9a936]:hover{background:var(--bg-hover);border-color:var(--enc);color:var(--enc)}.card-expanded .card-toggle-btn[data-v-04c9a936]{background:var(--enc-bg);border-color:var(--enc);color:var(--enc)}.chevron[data-v-04c9a936]{font-size:20px;font-weight:700;line-height:1;display:inline-block}.expand-controls[data-v-04c9a936]{gap:var(--space-1);display:flex}.card-header[data-v-04c9a936]{padding:var(--space-4);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-3);display:flex}.card-collapsed .card-header[data-v-04c9a936]{border-bottom:none}.card-header .card-title-block[data-v-04c9a936]{align-items:center;gap:var(--space-2);flex-wrap:nowrap;flex:auto;min-width:0;display:flex;overflow:hidden}.card-header .card-name-btn[data-v-04c9a936]{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.card-header .card-meta[data-v-04c9a936]{align-items:center;gap:var(--space-2);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;display:flex}.card-title-block[data-v-04c9a936]{align-items:center;gap:var(--space-2);margin-bottom:var(--space-1);display:flex}.card-status[data-v-04c9a936]{font-size:var(--text-md);line-height:1}.card-status.online[data-v-04c9a936]{color:var(--enc)}.card-status.offline[data-v-04c9a936]{color:var(--text-faint)}.card-name[data-v-04c9a936]{font-size:var(--text-md);color:var(--text);font-weight:600}.card-name-btn[data-v-04c9a936]{color:var(--text);font-size:var(--text-md);cursor:pointer;align-items:center;gap:var(--space-2);background:0 0;border:none;padding:0;font-family:inherit;font-weight:600;display:inline-flex}.card-name-btn[data-v-04c9a936]:hover{color:var(--enc)}.card-name-hint[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted);opacity:0;font-weight:400;transition:opacity .15s}.card-name-btn:hover .card-name-hint[data-v-04c9a936]{opacity:1}.alias-chip[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--dec-bg);color:var(--dec);border:1px solid var(--dec);padding:1px 8px;font-weight:600}.card-meta[data-v-04c9a936]{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);display:flex}.card-time[data-v-04c9a936]{font-family:var(--mono);margin-left:auto}.card-time.online[data-v-04c9a936]{color:var(--enc)}.card-time.offline[data-v-04c9a936]{color:var(--danger)}.card-summary[data-v-04c9a936]{padding:var(--space-3) var(--space-4);background:var(--bg-raised);border-bottom:1px solid var(--border);gap:var(--space-5);flex-wrap:wrap;display:flex}.summary-block[data-v-04c9a936]{flex-direction:column;gap:2px;display:flex}.summary-label[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);font-weight:600}.summary-value[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-sm);color:var(--text);font-weight:600}.summary-value.enc[data-v-04c9a936]{color:var(--enc)}.summary-value.dec[data-v-04c9a936]{color:var(--dec)}.summary-value.transit[data-v-04c9a936]{color:var(--transit)}.vnis-list[data-v-04c9a936]{padding:var(--space-2) 0;max-height:600px;overflow-y:auto}.vni-row[data-v-04c9a936]{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.vni-row[data-v-04c9a936]:last-child{border-bottom:none}.vni-row[data-v-04c9a936]:hover{background:var(--bg-hover)}.vni-header[data-v-04c9a936]{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-1);display:flex}.vni-id[data-v-04c9a936]{color:var(--text);font-weight:600}.vni-vlan[data-v-04c9a936]{font-size:var(--text-xs)}.vni-traffic[data-v-04c9a936]{align-items:baseline;gap:var(--space-1);font-size:var(--text-sm);margin-left:auto;display:flex}.vni-traffic .enc[data-v-04c9a936],.vni-traffic .dec[data-v-04c9a936]{font-weight:500}.vni-traffic .bps-unit[data-v-04c9a936]{margin-right:var(--space-2)}.vni-desc[data-v-04c9a936]{font-size:var(--text-xs);color:var(--text-dim);margin-bottom:var(--space-2);font-style:italic}.vni-path[data-v-04c9a936],.vni-interfaces[data-v-04c9a936]{align-items:center;gap:var(--space-2);margin-top:var(--space-1);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.path-label[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-muted);min-width:50px;font-weight:600}.path-ip[data-v-04c9a936]{color:var(--text-dim)}.path-aliases[data-v-04c9a936]{align-items:center;gap:var(--space-1);display:flex}.alias-step[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--enc-bg);color:var(--enc);padding:1px 6px;font-weight:600}.path-arrow[data-v-04c9a936]{color:var(--text-muted);font-size:var(--text-xs)}.interface-chip[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-dim);border:1px solid var(--border);padding:1px 6px}.vnis-empty[data-v-04c9a936]{padding:var(--space-5) var(--space-4);text-align:center;color:var(--text-muted);font-style:italic;font-size:var(--text-sm)}.transit-section-header.clickable[data-v-04c9a936]{cursor:pointer;-webkit-user-select:none;user-select:none}.transit-section-header.clickable[data-v-04c9a936]:hover{background:var(--bg-hover)}.chevron-sm[data-v-04c9a936]{color:var(--text-muted);min-width:14px;font-size:16px;font-weight:700;line-height:1;display:inline-block}.transit-section[data-v-04c9a936]{border-top:1px solid var(--border);background:var(--bg-raised)}.transit-section-header[data-v-04c9a936]{padding:var(--space-3) var(--space-4);align-items:center;gap:var(--space-2);font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.6px;color:var(--transit);border-bottom:1px solid var(--border);display:flex}.transit-icon[data-v-04c9a936]{font-size:var(--text-md)}.transit-title[data-v-04c9a936]{font-weight:600}.transit-count[data-v-04c9a936]{background:var(--transit-bg);color:var(--transit);border-radius:var(--radius-sm);padding:0 6px;font-weight:600}.transit-flows[data-v-04c9a936]{gap:var(--space-3);padding:var(--space-3) var(--space-4);flex-direction:column;display:flex}.transit-flow[data-v-04c9a936]{gap:var(--space-2);flex-direction:column;display:flex}.transit-flow-header[data-v-04c9a936]{align-items:center;gap:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.transit-alias[data-v-04c9a936]{background:var(--transit-bg);color:var(--transit)}.badge-asym[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);color:var(--warn);border:1px solid var(--warn);text-transform:uppercase;letter-spacing:.4px;background:#f5b8631f;padding:1px 6px;font-weight:600}.transit-sides[data-v-04c9a936]{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.transit-side[data-v-04c9a936]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);gap:var(--space-1);flex-direction:column;display:flex}.transit-side-name[data-v-04c9a936]{font-weight:600;font-size:var(--text-xs);color:var(--text)}.transit-side-ifaces[data-v-04c9a936]{flex-wrap:wrap;gap:2px;display:flex}.transit-side-traffic[data-v-04c9a936]{font-size:var(--text-xs);align-items:baseline;gap:2px;display:flex}.transit-side-traffic .enc[data-v-04c9a936],.transit-side-traffic .dec[data-v-04c9a936]{font-weight:500}.transit-asym[data-v-04c9a936]{gap:var(--space-2);flex-direction:column;display:flex}.transit-direction[data-v-04c9a936],.transit-unidir[data-v-04c9a936]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);gap:var(--space-1);flex-direction:column;display:flex}.transit-direction-header[data-v-04c9a936]{align-items:center;gap:var(--space-2);font-size:var(--text-xs);display:flex}.transit-direction-mbps[data-v-04c9a936]{align-items:baseline;gap:2px;margin-left:auto;display:flex}.transit-val[data-v-04c9a936]{color:var(--transit);font-weight:500}.transit-direction-ifaces[data-v-04c9a936]{font-size:var(--text-xs);flex-wrap:wrap;align-items:center;gap:4px;display:flex}.ifaces-label[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-muted);letter-spacing:.4px;font-weight:600}.val-missing[data-v-04c9a936]{font-style:italic;color:var(--text-muted)!important}.empty-grid[data-v-04c9a936]{text-align:center;padding:var(--space-8);color:var(--text-muted);grid-column:1/-1;font-style:italic}.muted[data-v-04c9a936]{color:var(--text-muted)}.mono[data-v-04c9a936]{font-family:var(--mono)}.enc[data-v-04c9a936]{color:var(--enc)}.dec[data-v-04c9a936]{color:var(--dec)}.bps-unit[data-v-04c9a936]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted)}.page[data-v-2eea9eb5]{gap:var(--space-4);flex-direction:column;display:flex}.toolbar[data-v-2eea9eb5]{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;display:flex}.toolbar-spacer[data-v-2eea9eb5]{flex:1}.toolbar-group[data-v-2eea9eb5]{align-items:center;gap:var(--space-2);display:flex}.toolbar-label[data-v-2eea9eb5]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.toolbar-info[data-v-2eea9eb5]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-dim)}.contrast-slider[data-v-2eea9eb5]{width:160px;accent-color:var(--enc);cursor:pointer}.contrast-value[data-v-2eea9eb5]{font-size:var(--text-xs);color:var(--text-dim);min-width:32px;font-weight:600}.btn-segment[data-v-2eea9eb5]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;overflow:hidden}.seg-btn[data-v-2eea9eb5]{color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);cursor:pointer;background:0 0;border:none}.seg-btn[data-v-2eea9eb5]:hover{color:var(--text);background:var(--bg-hover)}.seg-btn.active[data-v-2eea9eb5]{background:var(--bg-elevated);color:var(--enc)}.action-btn[data-v-2eea9eb5]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);border-radius:var(--radius-md);cursor:pointer}.action-btn[data-v-2eea9eb5]:hover{background:var(--bg-hover);color:var(--text);border-color:var(--border-hi)}.refresh-btn[data-v-2eea9eb5]{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-family:var(--mono);border-radius:var(--radius-md);cursor:pointer;min-width:60px}.refresh-btn[data-v-2eea9eb5]:hover{background:var(--bg-hover);color:var(--text)}.hint[data-v-2eea9eb5]{text-align:center;padding:var(--space-8);color:var(--text-muted)}.svg-wrap[data-v-2eea9eb5]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:600px;display:flex;position:relative;overflow:hidden}.map-svg[data-v-2eea9eb5]{cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:70vh;min-height:600px}.map-svg[data-v-2eea9eb5]:active{cursor:grabbing}.map-hint[data-v-2eea9eb5]{bottom:var(--space-3);font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);pointer-events:none;opacity:.7;position:absolute;left:50%;transform:translate(-50%)}.node-alias[data-v-2eea9eb5]{text-anchor:middle;font-family:var(--mono);fill:var(--text);font-size:13px;font-weight:700}.node-ip[data-v-2eea9eb5]{text-anchor:middle;font-family:var(--mono);fill:var(--text-muted);font-size:9px}.node-vnis-count[data-v-2eea9eb5]{text-anchor:middle;font-family:var(--mono);fill:var(--enc);font-size:10px;font-weight:600}.node-offline circle[data-v-2eea9eb5]{opacity:.5}.node-offline .node-alias[data-v-2eea9eb5]{fill:var(--text-muted)}.edge-label[data-v-2eea9eb5]{text-anchor:middle;font-family:var(--mono);font-size:10px;font-weight:600}.edge-label.lbl-enc[data-v-2eea9eb5]{fill:var(--enc)}.edge-label.lbl-dec[data-v-2eea9eb5]{fill:var(--dec)}.edge-label-group[data-v-2eea9eb5]{cursor:help}.edge-label-group .map-live-notice[data-v-2eea9eb5]{font-family:var(--mono);font-size:var(--text-xs);color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm)}.map-live-notice[data-v-2eea9eb5]{font-family:var(--mono);font-size:var(--text-xs);color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm)}.link-pill-bw[data-v-2eea9eb5]{font-family:var(--mono);fill:var(--text);font-size:11px;font-weight:700}.link-pill-util[data-v-2eea9eb5]{font-family:var(--mono);font-size:10px;font-weight:600}.page[data-v-6e8ec52a]{gap:var(--space-4);flex-direction:column;display:flex}.page-title[data-v-6e8ec52a]{font-size:var(--text-xl);color:var(--text);margin-bottom:var(--space-1);font-weight:600}.page-desc[data-v-6e8ec52a]{font-size:var(--text-sm);color:var(--text-muted)}.query-card[data-v-6e8ec52a]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.form-row[data-v-6e8ec52a]{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.field[data-v-6e8ec52a]{gap:var(--space-1);flex-direction:column;flex:1;min-width:220px;display:flex}.field-label[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.field-input[data-v-6e8ec52a]{padding:var(--space-2) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);outline:none}.field-input[data-v-6e8ec52a]:focus{border-color:var(--dec)}.field-input[data-v-6e8ec52a]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-6e8ec52a]{background:var(--enc);color:var(--bg);border:1px solid var(--enc);padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;height:38px;font-weight:600}.btn-primary[data-v-6e8ec52a]:hover:not(:disabled){filter:brightness(1.1)}.btn-primary[data-v-6e8ec52a]:disabled{opacity:.5;cursor:not-allowed}.cache-pill[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted);padding:var(--space-1) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);align-items:center;height:38px;display:flex}.quota[data-v-6e8ec52a]{gap:var(--space-1);flex-direction:column;display:flex}.quota-info[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);font-size:var(--text-xs);display:flex}.quota-label[data-v-6e8ec52a]{font-family:var(--mono);text-transform:uppercase;color:var(--text-muted);letter-spacing:.6px;font-weight:600}.quota-value[data-v-6e8ec52a]{color:var(--text-dim)}.quota-blocked[data-v-6e8ec52a]{font-family:var(--mono);color:var(--danger);margin-left:auto;font-weight:600}.quota-bar-wrap[data-v-6e8ec52a]{background:var(--bg-raised);border-radius:2px;width:100%;height:4px;overflow:hidden}.quota-bar[data-v-6e8ec52a]{background:var(--enc);border-radius:2px;height:100%;transition:width .3s,background .3s}.quota-bar-warn[data-v-6e8ec52a]{background:var(--warn)}.quota-bar-blocked[data-v-6e8ec52a]{background:var(--danger)}.error-banner[data-v-6e8ec52a]{background:var(--danger-bg);border:1px solid var(--danger);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);color:var(--danger);font-size:var(--text-sm);align-items:center;gap:var(--space-2);display:flex}.error-icon[data-v-6e8ec52a]{font-size:var(--text-md)}.result-card[data-v-6e8ec52a]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.result-header[data-v-6e8ec52a]{padding:var(--space-3) var(--space-4);background:var(--bg-raised);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.result-label[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-muted);font-weight:600}.result-switch[data-v-6e8ec52a]{color:var(--text);font-weight:600}.result-alias[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--dec-bg);color:var(--dec);margin-left:var(--space-1);padding:1px 6px;font-weight:600;display:inline-block}.result-sep[data-v-6e8ec52a]{color:var(--text-faint)}.path-groups[data-v-6e8ec52a]{flex-direction:column;display:flex}.path-group[data-v-6e8ec52a]{padding:var(--space-4);border-bottom:1px solid var(--border);gap:var(--space-3);flex-direction:column;display:flex}.path-group[data-v-6e8ec52a]:last-child{border-bottom:none}.path-group.is-best[data-v-6e8ec52a]{border-left:3px solid var(--enc)}.path-group-header[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.path-badge[data-v-6e8ec52a]{font-size:var(--text-md);font-weight:600}.path-badge-best[data-v-6e8ec52a]{color:var(--warn)}.path-label-text[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-muted);letter-spacing:.6px;font-weight:600}.path-display[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.hop-chip[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-md);padding:3px 10px;font-weight:600}.hop-arrow[data-v-6e8ec52a]{color:var(--text-muted);font-size:var(--text-sm)}.path-row[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.row-label[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-muted);letter-spacing:.6px;font-weight:600}.iface-chip[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-dim);border:1px solid var(--border);padding:2px 8px}.macs-section[data-v-6e8ec52a]{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.macs-header[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);display:flex}.macs-count[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--text-muted)}.macs-grid[data-v-6e8ec52a]{gap:var(--space-2);flex-wrap:wrap;display:flex}.mac-chip[data-v-6e8ec52a]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);background:var(--bg);color:var(--warn);border:1px solid var(--border);letter-spacing:.5px;padding:4px 10px}.empty[data-v-6e8ec52a]{text-align:center;padding:var(--space-8);color:var(--text-muted);font-style:italic}.muted[data-v-6e8ec52a]{color:var(--text-muted)}.mono[data-v-6e8ec52a]{font-family:var(--mono)}.local-ifaces-section[data-v-6e8ec52a]{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px dashed var(--border)}.local-ifaces-header[data-v-6e8ec52a]{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.local-ifaces-list[data-v-6e8ec52a]{gap:var(--space-1);flex-direction:column;display:flex}.local-iface-row[data-v-6e8ec52a]{align-items:baseline;gap:var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.iface-desc[data-v-6e8ec52a]{color:var(--text-dim);font-style:italic;font-size:var(--text-xs)}.page[data-v-29400c52]{gap:var(--space-5);flex-direction:column;max-width:700px;display:flex}.page-title[data-v-29400c52]{font-size:var(--text-xl);color:var(--text);margin-bottom:var(--space-1);font-weight:600}.page-desc[data-v-29400c52]{font-size:var(--text-sm);color:var(--text-muted)}.info-card[data-v-29400c52]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);gap:var(--space-8);flex-wrap:wrap;display:flex}.info-row[data-v-29400c52]{gap:var(--space-1);flex-direction:column;display:flex}.info-label[data-v-29400c52]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.info-value[data-v-29400c52]{font-size:var(--text-md);color:var(--text);font-weight:500}.mono[data-v-29400c52]{font-family:var(--mono)}.chip[data-v-29400c52]{font-family:var(--mono);font-size:var(--text-xs);border-radius:var(--radius-sm);text-transform:lowercase;align-self:flex-start;padding:2px 10px;font-weight:600;display:inline-block}.chip-admin[data-v-29400c52]{background:var(--enc-bg);color:var(--enc)}.chip-viewer[data-v-29400c52]{background:var(--dec-bg);color:var(--dec)}.form-card[data-v-29400c52]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6)}.form-title[data-v-29400c52]{font-size:var(--text-lg);color:var(--text);margin-bottom:var(--space-1);font-weight:600}.form-desc[data-v-29400c52]{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-5)}.form-grid[data-v-29400c52]{gap:var(--space-4);margin-bottom:var(--space-5);flex-direction:column;display:flex}.field[data-v-29400c52]{gap:var(--space-1);flex-direction:column;display:flex}.field-label[data-v-29400c52]{font-family:var(--mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600}.field-input[data-v-29400c52]{padding:var(--space-2) var(--space-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);outline:none;transition:border-color .15s}.field-input[data-v-29400c52]:focus{border-color:var(--dec)}.field-input.input-ok[data-v-29400c52]{border-color:var(--enc)}.field-input.input-warn[data-v-29400c52]{border-color:var(--warn)}.field-hint[data-v-29400c52]{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--mono);margin-top:2px}.field-hint.hint-ok[data-v-29400c52]{color:var(--enc)}.field-hint.hint-warn[data-v-29400c52]{color:var(--warn)}.form-actions[data-v-29400c52]{gap:var(--space-3);display:flex}.btn-primary[data-v-29400c52]{background:var(--enc);color:var(--bg);border:1px solid var(--enc);padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);cursor:pointer;font-weight:600}.btn-primary[data-v-29400c52]:hover:not(:disabled){filter:brightness(1.1)}.btn-primary[data-v-29400c52]:disabled{opacity:.5;cursor:not-allowed}:root{--bg:#070b14;--bg-card:#172033;--bg-raised:#202b45;--bg-hover:#2a375a;--bg-elevated:#34426a;--border:#34426a;--border-hi:#475791;--border-strong:#5d70b0;--text:#fff;--text-dim:#d4dceb;--text-muted:#95a3c2;--text-faint:#5d6b8a;--enc:#3ee79e;--enc-bg:#3ee79e1a;--enc-bg-strong:#3ee79e38;--dec:#7ab8ff;--dec-bg:#7ab8ff1a;--dec-bg-strong:#7ab8ff38;--warn:#fbbf24;--warn-bg:#fbbf2421;--danger:#fb7185;--danger-bg:#fb718521;--transit:#b48cfa;--transit-bg:#b48cfa1f;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "Cascadia Code", monospace;--shadow-md:0 4px 20px #0009;--shadow-lg:0 24px 60px #000c;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--text-xs:11px;--text-sm:12px;--text-md:14px;--text-lg:16px;--text-xl:20px;--text-2xl:28px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--sans);font-size:var(--text-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.5}#app{min-height:100vh}a{color:var(--dec);text-decoration:none}a:hover{text-decoration:underline}input,button,select,textarea{font:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:var(--radius-md)}::-webkit-scrollbar-thumb:hover{background:var(--border-hi)}::selection{background:var(--dec-bg-strong);color:var(--text)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}
