:root{color-scheme:light;--bg: #f6f6fb;--surface: #ffffff;--surface-2: #fbfaff;--surface-sunken: #eeedf7;--border: #e8e8f2;--border-strong: #d6d5e8;--text: #16132a;--text-muted: #5c5772;--text-faint: #8d89a3;--violet: #7c3aed;--violet-2: #6366f1;--violet-soft: color-mix(in srgb, var(--violet) 12%, transparent);--violet-soft-strong: color-mix(in srgb, var(--violet) 20%, transparent);--fuchsia: #d946ef;--fuchsia-soft: color-mix(in srgb, var(--fuchsia) 14%, transparent);--cyan: #06b6d4;--cyan-soft: color-mix(in srgb, var(--cyan) 14%, transparent);--accent: var(--violet);--accent-hover: #6d28d9;--accent-active: #5b21b6;--accent-fg: #ffffff;--accent-soft: var(--violet-soft);--accent-soft-strong: var(--violet-soft-strong);--accent-border: color-mix(in srgb, var(--violet) 35%, transparent);--accent-2: var(--cyan);--accent-2-hover: #0891b2;--accent-2-soft: var(--cyan-soft);--accent-ring: color-mix(in srgb, var(--cyan) 60%, transparent);--gradient-primary: linear-gradient(135deg, var(--violet-2), var(--violet));--gradient-primary-hover: linear-gradient(135deg, #565af0, #6d28d9);--gradient-primary-active: linear-gradient(135deg, #4a4de0, #5b21b6);--gradient-brand: linear-gradient(135deg, var(--cyan), var(--violet));--glow-accent: 0 6px 20px -6px rgba(124, 58, 237, .5);--glow-accent-strong: 0 10px 28px -8px rgba(124, 58, 237, .62);--glow-cyan: 0 6px 18px -6px rgba(6, 182, 212, .4);--success: #059669;--success-soft: color-mix(in srgb, var(--success) 14%, transparent);--warning: #d97706;--warning-soft: color-mix(in srgb, var(--warning) 16%, transparent);--danger: #f43f5e;--danger-hover: #e11d48;--danger-active: #be123c;--danger-fg: #ffffff;--danger-soft: color-mix(in srgb, var(--danger) 12%, transparent);--radius-lg: 18px;--radius: 14px;--radius-sm: 11px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(22, 19, 42, .05);--shadow: 0 1px 2px rgba(22, 19, 42, .04), 0 8px 20px rgba(22, 19, 42, .07);--shadow-lg: 0 2px 6px rgba(22, 19, 42, .06), 0 20px 42px rgba(22, 19, 42, .12);--glass-bg: color-mix(in srgb, var(--surface-2) 72%, transparent);--glass-border: color-mix(in srgb, var(--border) 80%, transparent);--glass-blur: 14px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--sidebar-width: 252px;--topbar-height: 64px;--transition-fast: .14s ease;--transition-base: .18s ease}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0b0b16;--surface: #15152a;--surface-2: #1b1b34;--surface-sunken: #12111f;--border: rgba(167, 139, 250, .16);--border-strong: rgba(167, 139, 250, .3);--text: #f1f0fa;--text-muted: #a8a2c4;--text-faint: #726c8f;--violet: #a78bfa;--violet-2: #818cf8;--violet-soft: color-mix(in srgb, var(--violet) 18%, transparent);--violet-soft-strong: color-mix(in srgb, var(--violet) 28%, transparent);--fuchsia: #e879f9;--fuchsia-soft: color-mix(in srgb, var(--fuchsia) 18%, transparent);--cyan: #22d3ee;--cyan-soft: color-mix(in srgb, var(--cyan) 18%, transparent);--accent: var(--violet);--accent-hover: #bda6fb;--accent-active: #c9b6fc;--accent-fg: #1b1033;--accent-soft: var(--violet-soft);--accent-soft-strong: var(--violet-soft-strong);--accent-border: color-mix(in srgb, var(--violet) 45%, transparent);--accent-2: var(--cyan);--accent-2-hover: #67e3f5;--accent-2-soft: var(--cyan-soft);--accent-ring: color-mix(in srgb, var(--cyan) 65%, transparent);--gradient-primary: linear-gradient(135deg, var(--violet-2), var(--violet));--gradient-primary-hover: linear-gradient(135deg, #969af9, #b79cfb);--gradient-primary-active: linear-gradient(135deg, #7f84f7, #a78bfa);--gradient-brand: linear-gradient(135deg, var(--cyan), var(--violet));--glow-accent: 0 8px 26px -6px rgba(167, 139, 250, .45);--glow-accent-strong: 0 10px 32px -6px rgba(167, 139, 250, .6);--glow-cyan: 0 8px 22px -6px rgba(34, 211, 238, .4);--success: #34d399;--success-soft: color-mix(in srgb, var(--success) 18%, transparent);--warning: #fbbf24;--warning-soft: color-mix(in srgb, var(--warning) 18%, transparent);--danger: #fb7185;--danger-hover: #fda4af;--danger-active: #fecdd3;--danger-fg: #1f0a11;--danger-soft: color-mix(in srgb, var(--danger) 18%, transparent);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .45);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 22px rgba(0, 0, 0, .45);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 24px 48px rgba(0, 0, 0, .55);--glass-bg: color-mix(in srgb, var(--surface-2) 62%, transparent);--glass-border: color-mix(in srgb, var(--border) 90%, transparent)}}:root[data-theme=light]{color-scheme:light;--bg: #f6f6fb;--surface: #ffffff;--surface-2: #fbfaff;--surface-sunken: #eeedf7;--border: #e8e8f2;--border-strong: #d6d5e8;--text: #16132a;--text-muted: #5c5772;--text-faint: #8d89a3;--violet: #7c3aed;--violet-2: #6366f1;--violet-soft: color-mix(in srgb, var(--violet) 12%, transparent);--violet-soft-strong: color-mix(in srgb, var(--violet) 20%, transparent);--fuchsia: #d946ef;--fuchsia-soft: color-mix(in srgb, var(--fuchsia) 14%, transparent);--cyan: #06b6d4;--cyan-soft: color-mix(in srgb, var(--cyan) 14%, transparent);--accent: var(--violet);--accent-hover: #6d28d9;--accent-active: #5b21b6;--accent-fg: #ffffff;--accent-soft: var(--violet-soft);--accent-soft-strong: var(--violet-soft-strong);--accent-border: color-mix(in srgb, var(--violet) 35%, transparent);--accent-2: var(--cyan);--accent-2-hover: #0891b2;--accent-2-soft: var(--cyan-soft);--accent-ring: color-mix(in srgb, var(--cyan) 60%, transparent);--gradient-primary: linear-gradient(135deg, var(--violet-2), var(--violet));--gradient-primary-hover: linear-gradient(135deg, #565af0, #6d28d9);--gradient-primary-active: linear-gradient(135deg, #4a4de0, #5b21b6);--gradient-brand: linear-gradient(135deg, var(--cyan), var(--violet));--glow-accent: 0 6px 20px -6px rgba(124, 58, 237, .5);--glow-accent-strong: 0 10px 28px -8px rgba(124, 58, 237, .62);--glow-cyan: 0 6px 18px -6px rgba(6, 182, 212, .4);--success: #059669;--success-soft: color-mix(in srgb, var(--success) 14%, transparent);--warning: #d97706;--warning-soft: color-mix(in srgb, var(--warning) 16%, transparent);--danger: #f43f5e;--danger-hover: #e11d48;--danger-active: #be123c;--danger-fg: #ffffff;--danger-soft: color-mix(in srgb, var(--danger) 12%, transparent);--shadow-xs: 0 1px 2px rgba(22, 19, 42, .05);--shadow: 0 1px 2px rgba(22, 19, 42, .04), 0 8px 20px rgba(22, 19, 42, .07);--shadow-lg: 0 2px 6px rgba(22, 19, 42, .06), 0 20px 42px rgba(22, 19, 42, .12);--glass-bg: color-mix(in srgb, var(--surface-2) 72%, transparent);--glass-border: color-mix(in srgb, var(--border) 80%, transparent)}:root[data-theme=dark]{color-scheme:dark;--bg: #0b0b16;--surface: #15152a;--surface-2: #1b1b34;--surface-sunken: #12111f;--border: rgba(167, 139, 250, .16);--border-strong: rgba(167, 139, 250, .3);--text: #f1f0fa;--text-muted: #a8a2c4;--text-faint: #726c8f;--violet: #a78bfa;--violet-2: #818cf8;--violet-soft: color-mix(in srgb, var(--violet) 18%, transparent);--violet-soft-strong: color-mix(in srgb, var(--violet) 28%, transparent);--fuchsia: #e879f9;--fuchsia-soft: color-mix(in srgb, var(--fuchsia) 18%, transparent);--cyan: #22d3ee;--cyan-soft: color-mix(in srgb, var(--cyan) 18%, transparent);--accent: var(--violet);--accent-hover: #bda6fb;--accent-active: #c9b6fc;--accent-fg: #1b1033;--accent-soft: var(--violet-soft);--accent-soft-strong: var(--violet-soft-strong);--accent-border: color-mix(in srgb, var(--violet) 45%, transparent);--accent-2: var(--cyan);--accent-2-hover: #67e3f5;--accent-2-soft: var(--cyan-soft);--accent-ring: color-mix(in srgb, var(--cyan) 65%, transparent);--gradient-primary: linear-gradient(135deg, var(--violet-2), var(--violet));--gradient-primary-hover: linear-gradient(135deg, #969af9, #b79cfb);--gradient-primary-active: linear-gradient(135deg, #7f84f7, #a78bfa);--gradient-brand: linear-gradient(135deg, var(--cyan), var(--violet));--glow-accent: 0 8px 26px -6px rgba(167, 139, 250, .45);--glow-accent-strong: 0 10px 32px -6px rgba(167, 139, 250, .6);--glow-cyan: 0 8px 22px -6px rgba(34, 211, 238, .4);--success: #34d399;--success-soft: color-mix(in srgb, var(--success) 18%, transparent);--warning: #fbbf24;--warning-soft: color-mix(in srgb, var(--warning) 18%, transparent);--danger: #fb7185;--danger-hover: #fda4af;--danger-active: #fecdd3;--danger-fg: #1f0a11;--danger-soft: color-mix(in srgb, var(--danger) 18%, transparent);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .45);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 22px rgba(0, 0, 0, .45);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 24px 48px rgba(0, 0, 0, .55);--glass-bg: color-mix(in srgb, var(--surface-2) 62%, transparent);--glass-border: color-mix(in srgb, var(--border) 90%, transparent)}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{min-height:100vh}a{color:var(--accent-2);text-decoration-color:color-mix(in srgb,var(--accent-2) 40%,transparent)}a:hover{color:var(--accent-2-hover)}a:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent-ring);border-radius:2px}h1,h2,h3{margin:0 0 var(--space-3) 0;letter-spacing:-.015em}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}}.app-shell{display:flex;min-height:100vh;width:100%;background:var(--bg)}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--surface-2);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:var(--space-4);gap:var(--space-2)}.sidebar-brand{display:flex;align-items:center;gap:var(--space-2);font-weight:800;font-size:17px;letter-spacing:-.015em;padding:var(--space-2) var(--space-2) var(--space-5);color:var(--text)}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-1)}.sidebar-section{padding:var(--space-2) var(--space-3);margin-top:var(--space-2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint, var(--text-muted))}.sidebar-link{position:relative;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text-muted);text-decoration:none;font-weight:500;font-size:13.5px;transition:background-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.sidebar-link svg{width:18px;height:18px;flex-shrink:0;color:var(--text-faint, var(--text-muted));transition:color var(--transition-fast)}.sidebar-link:hover{background:var(--surface-sunken);color:var(--text)}.sidebar-link:hover svg{color:var(--text)}.sidebar-link.active{background:linear-gradient(90deg,var(--accent-soft-strong),color-mix(in srgb,var(--accent-2) 10%,transparent));color:var(--accent);font-weight:700;box-shadow:inset 3px 0 0 0 var(--accent)}.sidebar-link.active svg{color:var(--accent)}.sidebar-link:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-ring)}.sidebar-backdrop{display:none}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg)}.topbar{height:var(--topbar-height);flex-shrink:0;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-5);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border-bottom:1px solid var(--glass-border);position:sticky;top:0;z-index:10}.topbar-spacer{flex:1}.topbar-user{display:flex;align-items:center;gap:var(--space-3)}.topbar-email{color:var(--text-muted);font-size:13px}.sidebar-toggle{display:none}.theme-toggle svg{display:block}.theme-toggle:hover:not(:disabled){color:var(--accent-2);border-color:var(--accent-2)}.app-content{flex:1;display:flex;flex-direction:column;overflow-x:hidden;min-width:0;min-height:0}.app-content-page{flex:1;padding:var(--space-5);min-width:0}.app-content-page[hidden]{display:none}.app-content-dock{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.app-content-dock[hidden]{display:none}.page{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-4);width:100%}.page-title{font-size:25px;font-weight:800;letter-spacing:-.02em}.page-subtitle{color:var(--text-muted);margin-top:calc(var(--space-3) * -1)}.page-loading{color:var(--text-muted);padding:var(--space-4) 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--space-5)}.card-title{font-size:16px;font-weight:700;letter-spacing:-.008em}.form-card{display:flex;flex-direction:column;gap:var(--space-3)}.table-card{padding:0;overflow-x:auto;border-radius:var(--radius-lg)}.form{display:flex;flex-direction:column;gap:var(--space-3)}.form-row{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3)}.form-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:160px}.form-field-grow{flex:1}.form-label{font-size:11.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em}.input{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);color:var(--text);font-size:14px;font-family:inherit;min-height:38px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}.input::placeholder{color:var(--text-faint)}.input:hover:not(:disabled){border-color:var(--border-strong)}.input:focus-visible,.input:focus{outline:none;border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-ring);background:var(--surface)}.input:disabled{opacity:.6;cursor:not-allowed}.select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-sm);border:1px solid transparent;padding:var(--space-2) var(--space-4);font-size:13.5px;font-weight:700;font-family:inherit;cursor:pointer;min-height:38px;white-space:nowrap;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent-ring)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--gradient-primary);color:var(--accent-fg);border-color:transparent;box-shadow:var(--glow-accent)}.btn-primary:hover:not(:disabled){background:var(--gradient-primary-hover);box-shadow:var(--glow-accent-strong)}.btn-primary:active:not(:disabled){background:var(--gradient-primary-active);box-shadow:var(--glow-accent)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border-strong)}.btn-danger{background:var(--danger);color:var(--danger-fg);box-shadow:0 6px 18px -6px color-mix(in srgb,var(--danger) 55%,transparent)}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-danger:active:not(:disabled){background:var(--danger-active)}.table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.table th,.table td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);font-size:13.5px}.table th{color:var(--text-muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.07em;background:var(--surface-sunken)}.table tbody tr{transition:background-color var(--transition-fast)}.table tbody tr:hover{background:linear-gradient(90deg,var(--accent-soft),color-mix(in srgb,var(--accent-2) 6%,transparent))}.table tbody tr:last-child td{border-bottom:none}.table-empty{text-align:center;color:var(--text-faint);padding:var(--space-6) var(--space-4);font-size:13.5px}.table-actions{display:flex;gap:var(--space-2);justify-content:flex-end}.badge{display:inline-flex;align-items:center;padding:3px var(--space-2);border-radius:var(--radius-pill);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border);line-height:1.4}.badge-role-admin{background:var(--fuchsia-soft);color:var(--fuchsia);border-color:transparent}.badge-role-operator{background:var(--accent-soft);color:var(--accent);border-color:transparent}.badge-role-viewer{background:var(--accent-2-soft);color:var(--accent-2);border-color:transparent}.badge-protocol-rdp{background:var(--accent-soft);color:var(--accent);border-color:transparent}.badge-protocol-vnc{background:color-mix(in srgb,var(--violet-2) 14%,transparent);color:var(--violet-2);border-color:transparent}.badge-protocol-ssh{background:var(--accent-2-soft);color:var(--accent-2);border-color:transparent}.badge-protocol-rustdesk{background:var(--fuchsia-soft);color:var(--fuchsia);border-color:transparent}.badge-status-connecting{background:var(--warning-soft);color:var(--warning);border-color:transparent}.badge-status-connected{background:var(--success-soft);color:var(--success);border-color:transparent}.badge-status-disconnected{background:var(--surface-sunken);color:var(--text-muted);border-color:var(--border)}.badge-status-error{background:var(--danger-soft);color:var(--danger);border-color:transparent}.toast{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:13.5px;border:1px solid transparent}.toast-error{background:color-mix(in srgb,var(--danger) 12%,var(--surface));color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.toast-success{background:color-mix(in srgb,var(--success) 12%,var(--surface));color:var(--success);border-color:color-mix(in srgb,var(--success) 30%,transparent)}.toast-info{background:var(--surface);color:var(--text);border-color:var(--border)}.callout{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:13px;line-height:1.55}.callout-info{background:var(--accent-2-soft);color:var(--text-muted);border:1px solid color-mix(in srgb,var(--accent-2) 30%,transparent)}.toast-dismiss{background:none;border:none;color:inherit;font-size:18px;line-height:1;cursor:pointer;padding:0;border-radius:4px}.toast-dismiss:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-ring)}.auth-page{min-height:100vh;display:flex;position:relative;overflow:hidden;background:var(--bg)}.brand-logo{display:inline-flex;align-items:center;gap:10px}.brand-logo-word{font-size:18px;font-weight:800;letter-spacing:-.02em}.brand-logo-accent{background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.auth-hero{flex:1.05 1 0;position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-6);padding:clamp(2rem,4vw,4.25rem);color:#e9e8f6;background:radial-gradient(125% 120% at 0% 0%,#211d42,#100d24 52%,#07060f)}.auth-hero:before,.auth-hero:after{content:"";position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none;z-index:-1}.auth-hero:before{width:34vw;max-width:460px;aspect-ratio:1;top:-12%;left:-8%;background:color-mix(in srgb,var(--violet) 55%,transparent)}.auth-hero:after{width:30vw;max-width:420px;aspect-ratio:1;bottom:-14%;left:22%;background:color-mix(in srgb,var(--cyan) 42%,transparent)}.auth-hero-top .brand-logo-word{color:#fff}.auth-hero-headline{font-size:clamp(1.9rem,3.2vw,2.9rem);line-height:1.08;font-weight:800;letter-spacing:-.03em;text-wrap:balance;margin:0 0 var(--space-4);max-width:15ch}.auth-hero-lead{color:color-mix(in srgb,#e9e8f6 72%,transparent);font-size:1.02rem;line-height:1.6;max-width:46ch;margin:0 0 var(--space-6)}.auth-features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-4);max-width:44ch}.auth-feature{display:flex;gap:var(--space-3);align-items:flex-start}.auth-feature-icon{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:11px;color:#fff;background:color-mix(in srgb,var(--violet) 30%,transparent);border:1px solid color-mix(in srgb,#ffffff 16%,transparent)}.auth-feature-icon svg{width:20px;height:20px}.auth-feature-copy{display:flex;flex-direction:column;gap:2px}.auth-feature-title{font-weight:700;font-size:.95rem;color:#fff}.auth-feature-text{font-size:.85rem;line-height:1.5;color:color-mix(in srgb,#e9e8f6 62%,transparent)}.auth-hero-foot{font-size:.8rem;color:color-mix(in srgb,#e9e8f6 50%,transparent);margin:0}.auth-panel{flex:1 1 0;display:flex;align-items:center;justify-content:center;padding:var(--space-5);position:relative;overflow:hidden}.auth-panel:before{content:"";position:absolute;width:60vw;max-width:520px;aspect-ratio:1;border-radius:50%;filter:blur(80px);background:color-mix(in srgb,var(--violet) 16%,transparent);top:-20%;right:-12%;pointer-events:none;z-index:0}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-4);position:relative;overflow:hidden;z-index:1;box-shadow:var(--shadow-lg)}.auth-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-brand)}.auth-card-brand{display:flex;align-items:center;gap:10px}.auth-card-brandword{font-size:22px;font-weight:800;letter-spacing:-.02em;color:var(--text)}.auth-subtitle{color:var(--text-muted);margin:calc(var(--space-3) * -1) 0 0}.auth-submit{width:100%;margin-top:var(--space-1)}@media (max-width: 900px){.auth-hero{display:none}.auth-panel{flex:1}}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-4)}.stat-card{display:flex;flex-direction:column;gap:var(--space-2);position:relative;overflow:hidden;transition:transform var(--transition-base),box-shadow var(--transition-base)}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;opacity:.9}.stat-card:hover{transform:translateY(-3px)}.stat-grid .stat-card:nth-of-type(3n+1):before{background:linear-gradient(90deg,var(--violet),transparent)}.stat-grid .stat-card:nth-of-type(3n+1):hover{box-shadow:var(--shadow-lg),var(--glow-accent)}.stat-grid .stat-card:nth-of-type(3n+2):before{background:linear-gradient(90deg,var(--cyan),transparent)}.stat-grid .stat-card:nth-of-type(3n+2):hover{box-shadow:var(--shadow-lg),var(--glow-cyan)}.stat-grid .stat-card:nth-of-type(3n+3):before{background:linear-gradient(90deg,var(--violet-2),transparent)}.stat-grid .stat-card:nth-of-type(3n+3):hover{box-shadow:var(--shadow-lg),var(--glow-accent)}.stat-label{color:var(--text-muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.stat-value{font-size:36px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}.meter{display:flex;flex-direction:column;gap:var(--space-1)}.meter-track{width:100%;height:8px;border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border);overflow:hidden}.meter-fill{height:100%;border-radius:var(--radius-pill);background:var(--gradient-primary);transition:width var(--transition-base)}.meter-fill-warning{background:var(--warning)}.meter-fill-danger{background:var(--danger)}.meter-fill-success{background:var(--success)}.gauge-ring svg{display:block;overflow:visible}.gauge-track{fill:none;stroke:var(--border);stroke-width:10;stroke-linecap:round}.gauge-value{fill:none;stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset var(--transition-base),stroke var(--transition-base)}.dash-gauges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.dash-gauge-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding-top:var(--space-4);padding-bottom:var(--space-4)}.dash-gauge-title{font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--text-muted)}.dash-gauge-ring{position:relative;width:120px;height:120px}.dash-gauge-readout{font-size:20px;font-weight:800;letter-spacing:-.01em;color:var(--text);font-variant-numeric:tabular-nums;text-align:center}.dash-info-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--space-4);align-items:stretch}.dash-section-title{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--space-3)}.dash-info-card{display:flex;flex-direction:column}.dash-info-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0}.dash-info-row{display:flex;gap:var(--space-3);align-items:baseline;font-size:14px}.dash-info-row dt{color:var(--text-muted);flex-shrink:0}.dash-info-row dd{margin:0;color:var(--text);font-weight:600;word-break:break-word}.dash-net-stack{display:flex;flex-direction:column;gap:var(--space-4)}.dash-net-card{display:flex;flex-direction:column;gap:var(--space-3);flex:1}.dash-net-bar{width:100%;height:14px;border-radius:var(--radius-sm);background:var(--surface-sunken);border:1px solid var(--border);overflow:hidden}.dash-net-fill{height:100%;border-radius:var(--radius-sm);transition:width var(--transition-base)}.dash-net-fill-download{background:linear-gradient(90deg,var(--accent-2),var(--success))}.dash-net-fill-upload{background:linear-gradient(90deg,var(--accent-2),var(--accent))}.dash-net-foot{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.dash-net-total{color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums}.dash-net-speed{color:var(--text);font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}@media (max-width: 860px){.dash-gauges,.dash-info-grid{grid-template-columns:1fr}}.session-tabs{display:flex;align-items:flex-end;gap:3px;padding:0 var(--space-4);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border-bottom:1px solid var(--glass-border);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.session-tab{position:relative;top:1px;display:flex;align-items:center;gap:var(--space-2);max-width:220px;min-width:96px;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);margin-top:var(--space-2);border:1px solid var(--border);border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--surface-sunken);color:var(--text-muted);font-size:13px;font-weight:500;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.session-tab:hover{background:var(--surface);color:var(--text)}.session-tab:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-ring)}.session-tab-active{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 10%,var(--surface)),var(--surface));color:var(--text);font-weight:700;border-color:var(--border);box-shadow:inset 0 2px 0 0 var(--accent),0 -6px 16px -10px var(--accent)}.session-tab-active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--surface)}.session-tab-dot{flex-shrink:0;width:7px;height:7px;border-radius:50%;background:var(--text-faint)}.session-tab-dot-connecting{background:var(--warning);box-shadow:0 0 0 3px var(--warning-soft)}.session-tab-dot-connected{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.session-tab-dot-disconnected{background:var(--text-faint)}.session-tab-dot-error{background:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.session-tab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-tab-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:50%;background:transparent;color:inherit;font-size:15px;line-height:1;cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.session-tab-close:hover{background:var(--danger-soft);color:var(--danger)}.session-tab-close:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-ring)}.session-dock{flex:1;display:flex;flex-direction:column;min-height:0;gap:var(--space-3);padding:var(--space-4) var(--space-5) var(--space-5)}.session-dock-toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.session-dock-name{font-size:13.5px;font-weight:700;color:var(--text)}.session-dock-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.session-dock-quality{display:inline-flex;align-items:center;gap:var(--space-2);font-size:12px;font-weight:600;color:var(--text-muted)}.session-dock-quality select{height:auto;padding:6px 10px;font-size:13px;min-width:0}.session-dock-viewport{position:relative;flex:1;min-height:0;overflow:hidden;background:#000;border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.session-dock-viewport:fullscreen{border-radius:0;border:none}.session-dock-pane{position:absolute;top:0;right:0;bottom:0;left:0}.session-dock-pane[hidden]{display:none}.remote-viewer{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0b0d12}.remote-viewer-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;background:#0b0d12d1;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.remote-viewer-overlay-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-6);text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.remote-viewer-overlay-title{font-size:16px;font-weight:700;color:var(--text)}.remote-viewer-overlay-text{font-size:13px;color:var(--text-muted)}.remote-viewer-connecting,.remote-viewer-disconnected,.remote-viewer-error{background:#0b0d12}.remote-viewer-connected{background:#000}.remote-viewer-surface{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}@media (max-width: 768px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:30;transform:translate(-100%);transition:transform var(--transition-base);box-shadow:var(--shadow-lg)}.sidebar-open{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#08061080;z-index:20}.sidebar-toggle{display:inline-flex}.app-content-page{padding:var(--space-4)}.session-dock{padding:var(--space-3) var(--space-4) var(--space-4)}.form-row{flex-direction:column;align-items:stretch}.form-field{min-width:0}}.kv{display:flex;flex-direction:column;gap:var(--space-3);margin:0}.kv-row{display:flex;flex-direction:column;gap:var(--space-1)}.kv-row dt{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:700}.kv-row dd{margin:0;display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.kv-row dd code{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-size:13px;font-variant-numeric:tabular-nums;word-break:break-all;color:var(--text)}.kv-key{max-width:100%}.page-wide{max-width:1360px}.connections-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:var(--space-4);align-items:start;width:100%}@media (max-width: 960px){.connections-layout{grid-template-columns:1fr}}.connections-rail,.connections-main{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.connections-tree-card{display:flex;flex-direction:column;gap:var(--space-3)}.connections-tree{display:flex;flex-direction:column;gap:var(--space-1);max-height:620px;overflow-y:auto}.tree-empty{color:var(--text-faint);font-size:13px;padding:var(--space-3) 0}.tree-group{display:flex;flex-direction:column}.tree-group-header{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;padding:var(--space-2);font:inherit;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);text-align:left}.tree-group-header:hover{background:var(--surface-sunken)}.tree-group-caret{font-size:10px;color:var(--text-faint);width:10px}.tree-group-name{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.tree-group-items{display:flex;flex-direction:column;gap:2px}.tree-row{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-5);font:inherit;font-size:13.5px;color:var(--text);cursor:pointer;border-radius:var(--radius-sm);text-align:left}.tree-row:hover{background:var(--surface-sunken)}.tree-row-active{background:var(--accent-soft);color:var(--accent);font-weight:700}.tree-row-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-dot{display:inline-block;width:8px;height:8px;min-width:8px;border-radius:50%}.status-dot-online{background:var(--success);box-shadow:0 0 0 2px var(--success-soft)}.status-dot-offline{background:var(--danger);box-shadow:0 0 0 2px var(--danger-soft)}.status-dot-unknown{background:var(--text-faint)}.status-pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:4px var(--space-3);border-radius:var(--radius-pill);font-size:12px;font-weight:700;background:var(--surface-sunken);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap}.status-pill-online{color:var(--success);border-color:color-mix(in srgb,var(--success) 30%,transparent);background:var(--success-soft)}.status-pill-offline{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent);background:var(--danger-soft)}.connection-detail{display:flex;flex-direction:column;gap:var(--space-4)}.connection-detail-empty{display:flex;align-items:center;justify-content:center;min-height:120px}.connection-detail-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3)}.connection-detail-title{display:flex;align-items:center;gap:var(--space-3)}.connection-detail-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.form-card-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer}.activity-card{display:flex;flex-direction:column;gap:var(--space-3)}.activity-empty{color:var(--text-faint);font-size:13px;padding:var(--space-2) 0}.activity-list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.activity-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm)}.activity-row:hover{background:var(--surface-sunken)}.activity-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.activity-row-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-row-time{font-size:11.5px;color:var(--text-faint)}.totp-qr{width:180px;height:180px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;padding:var(--space-2)}.guard-tip{position:relative;display:inline-flex;cursor:not-allowed}.guard-tip>button{pointer-events:none}.guard-tip:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px);z-index:60;white-space:nowrap;padding:6px 10px;font-size:12px;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease}.guard-tip:before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%);z-index:61;border:5px solid transparent;border-top-color:var(--border);opacity:0;transition:opacity .15s ease}.guard-tip:hover:after{opacity:1;transform:translate(-50%) translateY(0)}.guard-tip:hover:before{opacity:1}@media (prefers-reduced-motion: reduce){.guard-tip:after{transition:none}}.fieldset-contents{display:contents;min-width:0;margin:0;padding:0;border:0}.audit-chip{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent}.audit-chip-user{color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 14%,var(--surface));border-color:color-mix(in srgb,var(--accent-2) 30%,transparent)}.audit-chip-auth{color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,var(--surface));border-color:color-mix(in srgb,var(--warning) 30%,transparent)}.audit-chip-host{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.audit-chip-connection{color:var(--success);background:color-mix(in srgb,var(--success) 14%,var(--surface));border-color:color-mix(in srgb,var(--success) 30%,transparent)}.audit-chip-email_config,.audit-chip-disconnect{color:var(--text-muted);background:var(--surface-sunken);border-color:var(--border)}.audit-target-type{display:inline-block;margin-right:var(--space-2);padding:1px 6px;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.audit-details{color:var(--text-muted);font-size:13px}.audit-ip{color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums}.settings-form{display:flex;flex-direction:column;gap:var(--space-4)}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.settings-col-2{grid-column:1 / -1}.settings-check{display:flex;align-items:center;gap:var(--space-2);font-size:14px;font-weight:600;color:var(--text);cursor:pointer}.settings-check input{width:16px;height:16px;accent-color:var(--accent-2);cursor:pointer}.settings-actions{display:flex;gap:var(--space-2);padding-top:var(--space-1)}.settings-test{display:flex;align-items:flex-end;gap:var(--space-3)}.settings-test .form-field{flex:1}@media (max-width: 640px){.settings-grid{grid-template-columns:1fr}.settings-test{flex-direction:column;align-items:stretch}}.access-select{display:flex;flex-direction:column;gap:var(--space-2);flex-basis:100%;width:100%}.access-select-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.access-select-toggle{border:0;background:none;color:var(--accent-2);font-size:12px;font-weight:600;cursor:pointer;padding:0}.access-select-toggle:hover{text-decoration:underline}.access-select-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.access-select-empty{color:var(--text-muted);font-size:13px}.access-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 10px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-sunken);font-size:13px;cursor:pointer;transition:border-color var(--transition-base),background var(--transition-base)}.access-chip.is-on{border-color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 12%,var(--surface))}.access-chip input{accent-color:var(--accent-2);cursor:pointer}fieldset:disabled .access-chip{cursor:not-allowed;opacity:.6}.rd-guide-intro{margin:0 0 var(--space-4);color:var(--text-muted);font-size:14px;line-height:1.6}.rd-guide-intro strong{color:var(--text)}.rd-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.rd-step{display:flex;align-items:flex-start;gap:var(--space-3)}.rd-step-num{flex-shrink:0;width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 2px 6px color-mix(in srgb,var(--accent) 35%,transparent)}.rd-step-body{display:flex;flex-direction:column;gap:2px;padding-top:2px}.rd-step-title{font-size:14px;font-weight:600;color:var(--text)}.rd-step-text{font-size:13px;line-height:1.5;color:var(--text-muted)}.rd-guide-tip{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:13px;color:var(--text);background:color-mix(in srgb,var(--accent-2) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--accent-2) 25%,transparent)}.rd-guide-tip strong{color:var(--text)}.rd-guide-tip-icon{color:var(--accent-2);font-weight:800;font-size:15px}.form-hint{margin:var(--space-2) 0 0;font-size:12.5px;color:var(--text-muted);line-height:1.5}.vpn-config-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.vpn-config-body{display:flex;flex-wrap:wrap;gap:var(--space-5);align-items:flex-start;margin-top:var(--space-3)}.vpn-qr{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.vpn-qr canvas{border-radius:var(--radius-sm);background:#fff;padding:var(--space-2);border:1px solid var(--border)}.vpn-config-detail{flex:1 1 320px;min-width:260px;display:flex;flex-direction:column;gap:var(--space-3)}.vpn-config-text{margin:0;padding:var(--space-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-all;overflow-x:auto}.vpn-config-actions{display:flex;gap:var(--space-2)}.vpn-accent-dl{color:#8b5cf6}.vpn-accent-ul{color:#22d3ee}.vpn-muted{color:var(--text-muted)}.vpn-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.vpn-stat{display:flex;flex-direction:column;gap:2px;padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.vpn-stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.vpn-stat-value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.vpn-stat-sub{font-size:12px;color:var(--text-muted)}.vpn-live-dot{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--success)}.vpn-live-pulse{width:8px;height:8px;border-radius:50%;background:var(--success);animation:vpn-pulse 1.6s ease-in-out infinite}@keyframes vpn-pulse{0%,to{opacity:1;box-shadow:0 0 color-mix(in srgb,var(--success) 60%,transparent)}50%{opacity:.5;box-shadow:0 0 0 5px transparent}}.vpn-map-card{padding-bottom:var(--space-4)}.vpn-map{position:relative;margin-top:var(--space-3);border-radius:var(--radius);overflow:hidden;background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--accent) 10%,var(--surface-sunken)),var(--surface-sunken));border:1px solid var(--border)}.vpn-map svg{display:block;width:100%;height:auto}.vpn-map-grid line{stroke:color-mix(in srgb,var(--text-muted) 22%,transparent);stroke-width:.2}.vpn-map-land path{fill:color-mix(in srgb,var(--text-muted) 26%,transparent);stroke:color-mix(in srgb,var(--text-muted) 45%,transparent);stroke-width:.4}.vpn-marker-dot{fill:var(--text-muted);stroke:var(--surface);stroke-width:.4}.vpn-marker-online .vpn-marker-dot{fill:var(--success)}.vpn-marker-online .vpn-marker-pulse{fill:color-mix(in srgb,var(--success) 45%,transparent);transform-origin:center;animation:vpn-marker-ping 1.8s ease-out infinite}@keyframes vpn-marker-ping{0%{opacity:.7;transform:scale(.4)}to{opacity:0;transform:scale(1.6)}}.vpn-map-empty{position:absolute;left:50%;bottom:var(--space-3);transform:translate(-50%);font-size:12px;color:var(--text-muted);background:color-mix(in srgb,var(--surface) 80%,transparent);padding:4px 10px;border-radius:var(--radius-pill);border:1px solid var(--border);text-align:center}.vpn-nums{font-variant-numeric:tabular-nums}.vpn-nums span{display:block;font-size:12.5px;line-height:1.5}.vpn-chart{margin-top:var(--space-3)}.vpn-chart-legend{display:flex;gap:var(--space-4);font-size:12px;margin-bottom:var(--space-2)}.vpn-chart-key strong{font-weight:700}.vpn-chart-canvas{width:100%;height:160px;display:block}
