:root{--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-xs:4px;--radius-sm:6px;--radius-md:8px;--radius:10px;--radius-lg:14px;--radius-pill:999px;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-base:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:28px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:650;--lh-tight:1.2;--lh-base:1.5;--tracking-caps:.05em;--dur-fast:.12s;--dur:.18s;--ease:cubic-bezier(.2, 0, 0, 1);--z-header:10;--z-sidebar:20;--z-popover:50;--z-modal:60;--sidebar-w:232px;--sidebar-narrow-w:64px;--header-h:56px;--content-max:1440px;--bg:#0d1117;--surface:#151b23;--surface-2:#1b222c;--surface-3:#232b37;--border:#262f3b;--border-strong:#364252;--text:#e6edf3;--muted:#8d99a8;--subtle:#677384;--accent:#2bb3a6;--accent-hover:#3cc7ba;--accent-text:#06201d;--accent-soft:#2bb3a624;--accent-border:#2bb3a673;--hover:#94a3b812;--selected:#2bb3a61f;--focus-ring:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--backdrop:#03060a9e;--up:#4ade80;--up-bg:#4ade801f;--up-border:#4ade8059;--down:#f87171;--down-bg:#f871711f;--down-border:#f8717173;--warn:#fbbf24;--warn-bg:#fbbf241f;--warn-border:#fbbf2473;--info:#60a5fa;--info-bg:#60a5fa1f;--unknown:#facc15;--unknown-bg:#facc151f;--neutral-bg:#94a3b81f;--shadow:none;--shadow-pop:0 12px 32px #00000073, 0 0 0 1px var(--border);--shadow-modal:0 24px 64px #0000008c;--skeleton:#1f2731;--skeleton-shine:#283241;--sidebar-bg:#0a0e13;--sidebar-border:#1a212b;--sidebar-text:#c3ccd8;--sidebar-muted:#7c8799;--sidebar-hover:#141a22;--sidebar-active:#18202a;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--series-7:#9085e9;--series-8:#e66767;--chart-in:var(--series-1);--chart-out:var(--series-2);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--bg:#f5f7fa;--surface:#fff;--surface-2:#f1f4f8;--surface-3:#e7ecf2;--border:#e1e6ed;--border-strong:#cbd3de;--text:#151a21;--muted:#5f6b7a;--subtle:#8a95a3;--accent:#0f766e;--accent-hover:#0d5f59;--accent-text:#fff;--accent-soft:#0f766e1a;--accent-border:#0f766e66;--hover:#0f172a0a;--selected:#0f766e17;--backdrop:#0f172a73;--up:#15803d;--up-bg:#e7f6ec;--up-border:#a6dcb8;--down:#c2261d;--down-bg:#fdecea;--down-border:#f2b3ad;--warn:#b45309;--warn-bg:#fdf3dc;--warn-border:#efcf8a;--info:#1d4ed8;--info-bg:#e8effd;--unknown:#8a6d00;--unknown-bg:#fdf6d8;--neutral-bg:#eef1f5;--shadow:0 1px 2px #1018280d, 0 1px 3px #1018280f;--shadow-pop:0 12px 32px #10182824, 0 0 0 1px var(--border);--shadow-modal:0 24px 64px #10182838;--skeleton:#e9edf2;--skeleton-shine:#f4f6f9;--sidebar-bg:#111827;--sidebar-border:#1f2937;--sidebar-text:#cbd5e1;--sidebar-hover:#1a2332;--sidebar-active:#1f2937;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--series-5:#e87ba4;--series-6:#008300;--series-7:#4a3aa7;--series-8:#e34948;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01";margin:0}h1,h2,h3,h4{font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:-.005em;margin:0}h1,h2{font-size:var(--fs-lg)}h3{font-size:var(--fs-base)}h4{font-size:var(--fs-sm)}p{margin:0}a{color:var(--accent);border-radius:var(--radius-xs);text-decoration:none}a:hover{text-underline-offset:2px;text-decoration:underline}:focus-visible{box-shadow:var(--focus-ring);outline:none}code{font-family:var(--mono);font-size:var(--fs-xs);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-xs);padding:1px 5px}::selection{background:var(--accent-soft)}label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text);flex-direction:column;gap:6px;display:flex}label.inline{align-items:center;gap:var(--space-2);flex-direction:row}input,select,textarea{font:inherit;font-size:var(--fs-base);font-weight:var(--fw-regular);border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface-2);width:100%;min-height:36px;color:var(--text);transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);padding:7px 11px}input::placeholder,textarea::placeholder{color:var(--subtle)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--muted)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input:disabled,select:disabled,textarea:disabled{background:var(--surface);color:var(--subtle);cursor:not-allowed}input[type=checkbox],input[type=radio]{width:16px;height:16px;min-height:0;accent-color:var(--accent);flex:none;padding:0}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%238d99a8' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:32px}input[type=datetime-local]{color-scheme:inherit}fieldset{border:none;min-width:0;margin:0;padding:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mono{font-family:var(--mono);font-size:var(--fs-sm)}.muted{color:var(--muted)}.subtle{color:var(--subtle)}.small{font-size:var(--fs-xs)}.spacer{flex:1}.pad{padding:var(--space-4)}.pad-x{padding:0 var(--space-4)}.pre{white-space:pre-wrap;word-break:break-word}.nowrap{white-space:nowrap}.num-left{font-variant-numeric:tabular-nums}.text-up{color:var(--up)}.text-down{color:var(--down)}.text-warn{color:var(--warn)}.error-text{color:var(--down)}.warn-text{color:var(--warn);font-weight:var(--fw-semibold)}.hint{font-weight:var(--fw-regular);font-size:var(--fs-xs);color:var(--muted)}.narrow{max-width:680px}.dot-lg{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot-green{background:var(--up);box-shadow:0 0 0 3px var(--up-bg)}.dot-red{background:var(--down);box-shadow:0 0 0 3px var(--down-bg)}.dot-warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-bg)}.dot-yellow{background:var(--unknown)}.dot-gray{background:var(--subtle)}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.grid-2,.grid-3{gap:var(--space-3);display:grid}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.span-2{grid-column:span 2}.grid-2 .span-2{grid-column:1/-1}.grid-cards{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.page{gap:var(--space-5);flex-direction:column;display:flex}.page-header{align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-header-text{gap:var(--space-1);flex-direction:column;flex:320px;min-width:0;display:flex}.page-header-title{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.page-title{font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:-.01em;margin:0}.page-description{color:var(--muted);font-size:var(--fs-sm);max-width:80ch}.page-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;overflow:hidden}.card.pad{padding:var(--space-4) var(--space-5)}.card-head{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-wrap:wrap;min-height:52px;display:flex}.card-head.flush{padding:0 0 var(--space-3);border-bottom:none;min-height:0}.card-head-text{flex-direction:column;gap:2px;min-width:0;display:flex}.card-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);margin:0}.card.pad>.card-title{margin-bottom:var(--space-2)}.card-subtitle{color:var(--muted);font-size:var(--fs-xs)}.card-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.card-body{padding:var(--space-4)}.card-body>:first-child{margin-top:0}.card-foot{padding:var(--space-2) var(--space-4) var(--space-3);color:var(--muted);font-size:var(--fs-xs);border-top:1px solid var(--border)}.metric-grid{gap:var(--space-3);grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.metric-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{--metric-accent:transparent;gap:var(--space-1);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);min-width:0;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), transform var(--dur) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.metric:before{content:"";background:var(--metric-accent);width:3px;position:absolute;inset:0 auto 0 0}.metric-head{align-items:flex-start;gap:var(--space-2);min-height:18px;display:flex}.metric-label{color:var(--muted);font-size:var(--fs-2xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-caps);line-height:1.35}.metric-icon{width:14px;height:14px;color:var(--subtle);flex:0 0 14px;margin-top:1px}.metric-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:auto;line-height:1.1}.metric-value.sm{font-size:var(--fs-xl)}.metric-value.nodata{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--muted);letter-spacing:0;padding:9px 0}.metric-sub{color:var(--muted);font-size:var(--fs-xs);min-height:18px}.metric-go{color:var(--subtle);opacity:0;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);margin-left:auto;transform:translate(-4px)}a.metric{cursor:pointer;text-decoration:none}a.metric:hover{border-color:var(--border-strong);background:var(--surface-2);text-decoration:none}a.metric:hover .metric-go,a.metric:focus-visible .metric-go{opacity:1;transform:none}a.metric:active{transform:translateY(1px)}.metric.tone-critical{--metric-accent:var(--down);border-color:var(--down-border);background:linear-gradient(0deg, var(--down-bg), var(--down-bg)), var(--surface)}.metric.tone-critical .metric-value,.metric.tone-critical .metric-label{color:var(--down)}.metric.tone-warning{--metric-accent:var(--warn);border-color:var(--warn-border);background:linear-gradient(0deg, var(--warn-bg), var(--warn-bg)), var(--surface)}.metric.tone-warning .metric-value,.metric.tone-warning .metric-label{color:var(--warn)}a.metric.tone-critical:hover{border-color:var(--down);background:linear-gradient(0deg, var(--down-bg), var(--down-bg)), var(--surface-2)}a.metric.tone-warning:hover{border-color:var(--warn);background:linear-gradient(0deg, var(--warn-bg), var(--warn-bg)), var(--surface-2)}.metric.tone-in .metric-label:before,.metric.tone-out .metric-label:before{content:"";vertical-align:0;border-radius:2px;width:8px;height:8px;margin-right:6px;display:inline-block}.metric.tone-in .metric-label:before{background:var(--chart-in)}.metric.tone-out .metric-label:before{background:var(--chart-out)}.badge{border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap;border:1px solid #0000;align-items:center;gap:6px;padding:2px 9px;line-height:18px;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.badge-up{color:var(--up);background:var(--up-bg)}.badge-down{color:var(--down);background:var(--down-bg)}.badge-warn{color:var(--warn);background:var(--warn-bg)}.badge-unknown{color:var(--unknown);background:var(--unknown-bg)}.badge-info{color:var(--info);background:var(--info-bg)}.badge-accent{color:var(--accent);background:var(--accent-soft)}.badge-disabled,.badge-neutral{color:var(--muted);background:var(--neutral-bg)}.badge-outline{border-color:var(--border-strong);color:var(--muted);background:0 0}.pill{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill-up{color:var(--up);background:var(--up-bg)}.pill-down{color:var(--down);background:var(--down-bg)}.pill-warn{color:var(--warn);background:var(--warn-bg)}.tag{border-radius:var(--radius-xs);font-size:var(--fs-2xs);background:var(--surface-2);color:var(--muted);border:1px solid var(--border);margin-left:6px;padding:0 6px;display:inline-block}.role-tag{font-size:var(--fs-2xs);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);background:var(--neutral-bg);color:var(--muted);padding:1px 8px}.button{font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface-2);min-height:34px;color:var(--text);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.button:hover:not(:disabled){background:var(--surface-3);border-color:var(--muted)}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.button-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.button-danger{background:var(--down);border-color:var(--down);color:#fff}.button-danger:hover:not(:disabled){background:var(--down);border-color:var(--down);filter:brightness(1.1)}.button-ghost{background:0 0;border-color:#0000}.button-ghost:hover:not(:disabled){background:var(--hover);border-color:#0000}.button:disabled{opacity:.5;cursor:not-allowed}.button-small{min-height:28px;font-size:var(--fs-xs);padding:3px 10px}.link-button{font:inherit;color:var(--accent);cursor:pointer;border-radius:var(--radius-xs);background:0 0;border:none;padding:2px 6px}.link-button:hover:not(:disabled){text-underline-offset:2px;text-decoration:underline}.link-button.danger{color:var(--down)}.link-button:disabled{color:var(--subtle);cursor:default}.icon-button{border-radius:var(--radius-md);width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;place-items:center;font-size:20px;line-height:1;display:inline-grid}.icon-button:hover{background:var(--hover);color:var(--text)}.chip-button{font:inherit;font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:4px;padding:3px 9px;display:inline-flex}.chip-button:hover:not(:disabled),.chip-button[aria-expanded=true]{background:var(--surface-3);border-color:var(--muted)}.chip-button.danger{color:var(--down)}.chip-button:disabled{color:var(--subtle);cursor:default}.segmented{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);align-self:flex-start;gap:2px;padding:2px;display:inline-flex}.segmented button{font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;border:none;padding:5px 14px}.segmented button:hover:not(.active){color:var(--text);background:var(--hover)}.segmented button.active,.segmented button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-border);font-weight:var(--fw-bold)}.segmented-sm button{font-size:var(--fs-xs);padding:2px 9px}.table-wrap{overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm)}.table th{z-index:1;text-align:left;font-size:var(--fs-2xs);font-weight:var(--fw-semibold);color:var(--muted);text-transform:uppercase;letter-spacing:var(--tracking-caps);padding:9px var(--space-4);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0}.table td{padding:10px var(--space-4);border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background var(--dur-fast) var(--ease)}.table tbody tr:hover td{background:var(--hover)}.table.compact td,.table.compact th{padding:7px var(--space-3)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table td.wrap{white-space:normal;min-width:240px}.table th.sortable button{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:inline-flex}.table th.sortable button:hover,.table th[aria-sort] button{color:var(--text)}.table th.num.sortable button{flex-direction:row-reverse}.sort-icon{opacity:.8;font-size:9px}.clickable{cursor:pointer}tr.selected td{background:var(--selected)}tr.inactive td{opacity:.55}.device-name{font-weight:var(--fw-semibold)}a.device-name{color:var(--text)}a.device-name:hover{color:var(--accent)}.sub{font-size:var(--fs-xs);color:var(--muted);text-overflow:ellipsis;max-width:380px;overflow:hidden}.error-cell{color:var(--down);font-size:var(--fs-xs);white-space:normal!important}.actions{text-align:right}.actions .link-button:disabled{color:var(--subtle);cursor:default}.table-toolbar{align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7' fill='none' stroke='%23677384' stroke-width='2'/%3E%3Cpath d='m20 20-3.5-3.5' stroke='%23677384' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-position:11px;background-repeat:no-repeat;max-width:300px;min-height:34px;padding:6px 11px 6px 32px}.filter-select{width:auto;max-width:240px;min-height:34px;font-size:var(--fs-sm);padding-top:6px;padding-bottom:6px}.wrap-toolbar{flex-wrap:wrap}.result-count{color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.pagination{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--muted);display:flex}.tabs{gap:var(--space-1);border-bottom:1px solid var(--border);scrollbar-width:none;display:flex;overflow-x:auto}.tabs a{padding:9px var(--space-3);color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;text-decoration:none;display:inline-flex}.tabs a:hover{color:var(--text);background:var(--hover);text-decoration:none}.tabs a.active{color:var(--text);border-bottom-color:var(--accent)}.tab-badge{font-size:var(--fs-2xs);border-radius:var(--radius-pill);background:var(--neutral-bg);color:var(--muted);padding:0 7px;line-height:17px}.tabs a.active .tab-badge{background:var(--accent-soft);color:var(--accent)}.modal-backdrop{background:var(--backdrop);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:8vh var(--space-4);z-index:var(--z-modal);animation:fade-in var(--dur) var(--ease);justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:100%;max-width:620px;box-shadow:var(--shadow-modal);animation:pop-in var(--dur) var(--ease)}.modal-wide{max-width:860px}.modal-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);display:flex}.modal-header h2{font-size:var(--fs-lg)}.modal-body{padding:var(--space-5)}.confirm-body p{margin:0 0 10px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.99)}}.menu{z-index:var(--z-popover);background:var(--surface);border-radius:var(--radius-md);min-width:180px;box-shadow:var(--shadow-pop);padding:var(--space-1);animation:pop-in var(--dur-fast) var(--ease);flex-direction:column;display:flex;position:fixed}.menu-header{padding:var(--space-2) 10px;border-bottom:1px solid var(--border);margin-bottom:var(--space-1)}.menu-item{align-items:center;gap:var(--space-2);width:100%;font:inherit;font-size:var(--fs-sm);text-align:left;color:var(--text);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:7px 10px;display:flex}.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--hover);box-shadow:none;outline:none}.menu-item:focus-visible{background:var(--surface-3)}.menu-item.danger{color:var(--down)}.menu-item:disabled{color:var(--subtle);cursor:default}.menu-sep{background:var(--border);height:1px;margin:var(--space-1) 0}.empty-state{padding:var(--space-10) var(--space-6);text-align:center;gap:var(--space-2);color:var(--text);flex-direction:column;align-items:center;display:flex}.empty-icon{background:var(--surface-2);border:1px solid var(--border);width:40px;height:40px;color:var(--muted);margin-bottom:var(--space-1);border-radius:50%;place-items:center;display:grid}.empty-icon svg{width:18px;height:18px}.empty-state strong{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.empty-state .empty-text{color:var(--muted);font-size:var(--fs-sm);max-width:56ch}.empty-state .empty-action{margin-top:var(--space-2)}.empty-planned .empty-icon{border-style:dashed}.card .empty-state{padding:var(--space-8) var(--space-6)}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--skeleton) 25%, var(--skeleton-shine) 37%, var(--skeleton) 63%);background-size:400% 100%;animation:1.4s infinite shimmer;display:block}.skeleton-lines{padding:var(--space-4);flex-direction:column;gap:10px;display:flex}.skeleton-line{height:12px}.skeleton-table{width:100%}.skeleton-table td{padding:12px var(--space-4);border-bottom:1px solid var(--border)}.skeleton-chart{border-radius:var(--radius-md);height:220px}.skeleton-metric .skeleton+.skeleton{margin-top:8px}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}.graph-card .card-body{padding:var(--space-3) var(--space-4) var(--space-4)}.graph-meta{align-items:center;gap:var(--space-3);color:var(--muted);font-size:var(--fs-xs);flex-wrap:wrap;display:flex}.notice{align-items:center;gap:var(--space-2);padding:10px var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border);border-left:3px solid var(--info);background:var(--surface);font-size:var(--fs-sm);flex-wrap:wrap;display:flex}.result{border-radius:var(--radius-md);padding:10px var(--space-4);margin-top:var(--space-3);font-size:var(--fs-sm);border:1px solid}.result p{white-space:pre-wrap;margin:4px 0 0}.result p:first-child{margin-top:0}.result-ok{border-color:var(--up-border);background:var(--up-bg)}.result-fail{border-color:var(--down-border);background:var(--down-bg);color:var(--text)}.page>.result,.page>.notice{margin:0}.result.inset{margin:var(--space-3) var(--space-4)}.warning-list{margin:0 0 var(--space-3);padding:var(--space-3) var(--space-4) var(--space-3) 34px;background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--text);border-radius:var(--radius-md)}.warning-list li+li{margin-top:4px}.kv{gap:var(--space-2) var(--space-4);margin:var(--space-3) 0 0;font-size:var(--fs-sm);grid-template-columns:minmax(110px,150px) 1fr;display:grid}.kv dt{color:var(--muted)}.kv dd{word-break:break-word;margin:0}.device-form fieldset{gap:var(--space-4);flex-direction:column;display:flex}.form-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-5);display:flex}.field-label{font-size:var(--fs-sm);font-weight:var(--fw-medium)}.section-title{font-weight:var(--fw-semibold);padding-top:var(--space-2);border-top:1px solid var(--border);margin-top:var(--space-1);justify-content:space-between;align-items:center;display:flex}.switch{width:34px;height:20px;display:inline-block;position:relative}.switch input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;margin:0;position:absolute}.switch span{border-radius:var(--radius-pill);background:var(--border-strong);transition:background var(--dur-fast) var(--ease);position:absolute;inset:0}.switch span:after{content:"";width:14px;height:14px;transition:transform var(--dur-fast) var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(14px)}.switch input:focus-visible+span{box-shadow:var(--focus-ring)}.switch input:disabled+span{opacity:.5}@media (width<=1200px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=900px){.grid-cards{grid-template-columns:1fr}.metric-grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2,.grid-3{grid-template-columns:1fr}.span-2{grid-column:auto}.metric-value{font-size:var(--fs-xl)}.search{max-width:none}}.shell{--sb:var(--sidebar-w);min-height:100vh;display:flex}.shell.sidebar-narrow,.shell.sidebar-auto{--sb:var(--sidebar-narrow-w)}@media (width>=901px){.shell{background:linear-gradient(to right, var(--sidebar-bg) var(--sb), transparent var(--sb))}}.sidebar{width:var(--sb);flex:0 0 var(--sb);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);color:var(--sidebar-text);height:100vh;z-index:var(--z-sidebar);transition:width var(--dur) var(--ease), flex-basis var(--dur) var(--ease), box-shadow var(--dur) var(--ease);flex-direction:column;display:flex;position:sticky;top:0;overflow:hidden auto}.shell.sidebar-auto .sidebar{width:var(--sidebar-narrow-w);position:fixed;top:0;left:0}.shell.sidebar-auto.sidebar-wide .sidebar{width:var(--sidebar-w);box-shadow:12px 0 32px #0006}.shell.sidebar-auto .main{margin-left:var(--sidebar-narrow-w)}.sidebar .brand{height:var(--header-h);padding:0 var(--space-5);font-weight:var(--fw-bold);color:#fff;border-bottom:1px solid var(--sidebar-border);letter-spacing:-.01em;align-items:center;gap:10px;font-size:15px;text-decoration:none;display:flex}.sidebar nav{padding:var(--space-3) var(--space-2);flex-direction:column;flex:1;gap:2px;display:flex}.nav-section{padding:var(--space-3) var(--space-3) var(--space-1);color:var(--sidebar-muted);font-size:var(--fs-2xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.nav-item{padding:7px var(--space-3);border-radius:var(--radius-md);color:var(--sidebar-text);font-size:var(--fs-sm);font-weight:var(--fw-medium);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);align-items:center;gap:10px;text-decoration:none;display:flex;position:relative}.nav-item:hover{background:var(--sidebar-hover);color:#fff;text-decoration:none}.nav-item.active{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 var(--accent)}.nav-item.active .nav-icon{color:var(--accent);opacity:1}.nav-icon{opacity:.8;flex:0 0 18px;width:18px;height:18px}.nav-count{font-size:var(--fs-2xs);font-weight:var(--fw-bold);border-radius:var(--radius-pill);margin-left:auto;padding:0 7px;line-height:18px}.nav-count.critical{background:var(--down);color:#fff}.nav-count.warning{background:var(--warn);color:#1a1300}.nav-sub{padding:5px var(--space-3) 5px 40px;border-radius:var(--radius-md);color:var(--sidebar-muted);font-size:var(--fs-sm);text-decoration:none;display:block}.nav-sub:hover{color:#fff;background:var(--sidebar-hover);text-decoration:none}.nav-sub.active{color:#fff;font-weight:var(--fw-semibold)}.sidebar-foot{gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);border-top:1px solid var(--sidebar-border);font-size:var(--fs-xs);flex-direction:column;display:flex}.sidebar-toggle{margin-left:calc(-1 * var(--space-2));padding:6px var(--space-2);font:inherit;font-size:var(--fs-xs);color:var(--sidebar-muted);border-radius:var(--radius-md);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;display:flex;position:relative}.sidebar-toggle:hover{background:var(--sidebar-hover);color:#fff}.sidebar-toggle .nav-icon{flex-basis:16px;width:16px;height:16px}.nav-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-narrow .sidebar{overflow:visible}.sidebar-narrow .nav-label{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sidebar-narrow .sidebar .brand{justify-content:center;padding:0}.sidebar-narrow .sidebar nav{padding:var(--space-3) var(--space-2)}.sidebar-narrow .nav-item{justify-content:center;padding:9px 0}.sidebar-narrow .nav-count{text-align:center;min-width:16px;box-shadow:0 0 0 2px var(--sidebar-bg);padding:0 4px;font-size:10px;line-height:16px;position:absolute;top:2px;right:6px}.sidebar-narrow .sidebar-foot{padding:var(--space-3) 0;align-items:center}.sidebar-narrow .health-line{justify-content:center}.sidebar-narrow .sidebar-toggle{margin-left:0;padding:7px}.sidebar-narrow [data-tooltip]:hover:after,.sidebar-narrow [data-tooltip]:focus-visible:after{content:attr(data-tooltip);z-index:var(--z-popover);border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text);border:1px solid var(--border-strong);box-shadow:var(--shadow-pop);font-size:var(--fs-xs);font-weight:var(--fw-medium);white-space:nowrap;pointer-events:none;padding:5px 9px;position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%)}.sidebar-narrow .health-line[data-tooltip],.sidebar-narrow .brand[data-tooltip]{position:relative}.health-line{align-items:center;gap:var(--space-2);color:var(--sidebar-muted);text-decoration:none;display:flex}a.health-line:hover{color:#fff;text-decoration:none}.main{flex-direction:column;flex:1;min-width:0;display:flex}.header{align-items:center;gap:var(--space-3);padding:0 var(--space-6);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(140%)blur(8px);backdrop-filter:saturate(140%)blur(8px);border-bottom:1px solid var(--border);z-index:var(--z-header);height:var(--header-h);display:flex;position:sticky;top:0}.breadcrumb{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.breadcrumb a{color:var(--muted)}.breadcrumb a:hover{color:var(--text)}.crumb-sep{color:var(--subtle);margin:0 7px}.breadcrumb [aria-current=page]{color:var(--text);font-weight:var(--fw-semibold)}.menu-button{display:none}.main>.content{max-width:var(--content-max);width:100%;padding:var(--space-6) var(--space-6) var(--space-10)}.sidebar-backdrop{display:none}.user-button{align-items:center;gap:var(--space-2);display:inline-flex}.avatar{background:var(--accent-soft);width:24px;height:24px;color:var(--accent);font-size:var(--fs-2xs);font-weight:var(--fw-bold);text-transform:uppercase;border-radius:50%;place-items:center;display:inline-grid}@media (width<=900px){.sidebar{visibility:hidden;transition:transform var(--dur) var(--ease), visibility 0s linear var(--dur);position:fixed;top:0;left:0;transform:translate(-100%)}.menu-open .sidebar{visibility:visible;transition:transform var(--dur) var(--ease);transform:none}.menu-open .sidebar-backdrop{background:var(--backdrop);z-index:15;display:block;position:fixed;inset:0}.menu-button{display:inline-grid}.header{padding:0 var(--space-4)}.main>.content{padding:var(--space-4)}.header .pill,.user-button .user-name,.user-button .role-tag{display:none}.breadcrumb{flex:1;min-width:0}}.login-shell{min-height:100vh;padding:var(--space-4);background:radial-gradient(1000px 500px at 50% -10%, var(--accent-soft), transparent 70%), var(--bg);place-items:center;display:grid}.login-card{gap:var(--space-4);flex-direction:column;width:min(400px,100%);display:flex;padding:var(--space-6)!important}.login-card h2{font-size:var(--fs-lg);margin:0}.login-brand{color:var(--accent);margin-bottom:var(--space-1);align-items:center;gap:10px;display:flex}.login-brand h1{font-size:var(--fs-xl);color:var(--text);margin:0}.login-submit{width:100%;margin-top:var(--space-1);min-height:38px}.chart{width:100%;position:relative;overflow:hidden}.chart svg{display:block}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-label{fill:var(--muted);font-size:var(--fs-2xs)}.chart-in-area{fill:var(--chart-in);opacity:.18}.chart-in-line{fill:none;stroke:var(--chart-in);stroke-width:2px}circle.chart-in-line{fill:var(--chart-in)}.chart-out-line{fill:none;stroke:var(--chart-out);stroke-width:2px}circle.chart-out-line{fill:var(--chart-out)}.chart-cursor{stroke:var(--muted);stroke-dasharray:3 3}.chart-tooltip{pointer-events:none;background:var(--surface);border-radius:var(--radius-md);padding:var(--space-2) 10px;box-shadow:var(--shadow-pop);font-size:var(--fs-xs);z-index:2;min-width:170px;position:absolute}.chart-empty{gap:var(--space-1);text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-md);height:220px;color:var(--muted);font-size:var(--fs-sm);padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.chart-empty strong{color:var(--text)}.swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;display:inline-block}.swatch-in{background:var(--chart-in)}.swatch-out{background:var(--chart-out)}.series-stroke-1{stroke:var(--series-1)}.series-fill-1{fill:var(--series-1)}.series-bg-1{background:var(--series-1)}.series-stroke-2{stroke:var(--series-2)}.series-fill-2{fill:var(--series-2)}.series-bg-2{background:var(--series-2)}.series-stroke-3{stroke:var(--series-3)}.series-fill-3{fill:var(--series-3)}.series-bg-3{background:var(--series-3)}.series-stroke-4{stroke:var(--series-4)}.series-fill-4{fill:var(--series-4)}.series-bg-4{background:var(--series-4)}.series-stroke-5{stroke:var(--series-5)}.series-fill-5{fill:var(--series-5)}.series-bg-5{background:var(--series-5)}.series-stroke-6{stroke:var(--series-6)}.series-fill-6{fill:var(--series-6)}.series-bg-6{background:var(--series-6)}.series-stroke-7{stroke:var(--series-7)}.series-fill-7{fill:var(--series-7)}.series-bg-7{background:var(--series-7)}.series-stroke-8{stroke:var(--series-8)}.series-fill-8{fill:var(--series-8)}.series-bg-8{background:var(--series-8)}.ts-chart{flex-direction:column;gap:6px;display:flex}.ts-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.ts-band{fill-opacity:.16;stroke:none;pointer-events:none}.ts-marker{stroke:var(--surface);stroke-width:2px}.ts-legend{flex-wrap:wrap;gap:4px 14px;display:flex}.ts-legend-item{font:inherit;font-size:var(--fs-xs);color:var(--text);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:2px 4px;display:inline-flex}.ts-legend-item:hover{background:var(--hover)}.ts-legend-item.off{opacity:.4;text-decoration:line-through}.tooltip-time{font-size:var(--fs-xs);margin-bottom:2px}.tooltip-title{font-weight:var(--fw-semibold);margin:2px 0 4px}.tooltip-row{align-items:center;gap:6px;display:flex}.tooltip-row strong,.tooltip-row>span:last-child{padding-left:var(--space-3);font-variant-numeric:tabular-nums;margin-left:auto}.tooltip-range{font-size:var(--fs-2xs);color:var(--muted);font-variant-numeric:tabular-nums;padding-left:16px}.devices-table .sub{max-width:240px}.desc-cell{max-width:260px;white-space:normal!important}.desc-cell .sub{max-width:260px}.alias{font-size:var(--fs-xs);color:var(--muted);font-style:italic}.util{align-items:center;gap:var(--space-2);justify-content:flex-end;display:inline-flex}.util-bar{border-radius:var(--radius-pill);background:var(--surface-3);width:48px;height:6px;overflow:hidden}.util-fill{border-radius:inherit;height:100%;display:block}.util-up{background:var(--up)}.util-unknown{background:var(--warn)}.util-down{background:var(--down)}.alerts-table tr.alert-critical td:first-child{box-shadow:inset 3px 0 0 var(--down)}.alerts-table tr.alert-warning td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.ack-tag{font-size:var(--fs-2xs);color:var(--muted)}.timeline{margin-bottom:var(--space-3);gap:2px;display:flex}.tick{border-radius:2px;flex:1;max-width:12px;height:26px}.tick-up{background:var(--up)}.tick-down{background:var(--down)}.action-row{gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.widget{flex-direction:column;min-width:0;display:flex}.widget-head{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;min-height:52px;display:flex}.widget-titles{min-width:0}.widget-title a{color:var(--text)}.widget-title a:hover{color:var(--accent)}.widget-body{padding:var(--space-3) var(--space-4);flex:1;min-width:0}:is(.widget-body:has(>.table-wrap),.widget-body:has(>.simple-list),.widget-body:has(>.empty-state),.widget-body:has(>.skeleton-lines)){padding:0}.widget-foot{padding:var(--space-2) var(--space-4) var(--space-3)}.widget-grid{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense;align-items:stretch;display:grid}.widget-cell{min-width:0;display:flex}.widget-cell>.widget{flex:1}.widget-cell.span-full{grid-column:1/-1}.widget-grid.editing .widget-cell>.widget{outline:1px dashed var(--accent-border);outline-offset:3px}.widget-cell.dragging{opacity:.4}.widget-toolbar{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);align-items:center;gap:2px;padding:2px;display:inline-flex}.widget-toolbar .tool{font:inherit;font-size:var(--fs-xs);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:3px 7px}.widget-toolbar .tool:hover:not(:disabled){background:var(--surface-3)}.widget-toolbar .tool:disabled{color:var(--subtle);cursor:default}.widget-toolbar .tool.danger{color:var(--down)}.drag-handle{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none;padding:0 6px}.widget-picker{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.widget-choice{font:inherit;text-align:left;padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);flex-direction:column;align-items:flex-start;gap:4px;display:flex}.widget-choice:hover{border-color:var(--accent-border);background:var(--selected)}.top-name{flex-direction:column;flex:1;min-width:0;line-height:1.35;display:flex}.top-name>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.top-name .muted,.top-name .small{font-size:var(--fs-xs)}.top-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:var(--fw-semibold)}.simple-list{padding:var(--space-1) 0 6px;margin:0;list-style:none}.list-link{padding:var(--space-2) var(--space-4);color:var(--text);font-size:var(--fs-sm);align-items:center;gap:10px;display:flex}.list-link:hover{background:var(--hover);text-decoration:none}.check-list{max-height:220px;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 12px;margin-top:6px;display:grid;overflow-y:auto}.dashboard-foot{color:var(--muted);font-size:var(--fs-xs)}.choice-inline{gap:var(--space-5);flex-wrap:wrap;display:flex}.choice-list{gap:var(--space-2);flex-direction:column;display:flex}.choice{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);cursor:pointer;font-weight:var(--fw-regular);transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);flex-direction:row}.choice:hover{border-color:var(--border-strong)}.choice.selected{border-color:var(--accent-border);background:var(--selected)}.choice input{margin-top:3px}.choice-text{flex-direction:column;gap:2px;display:flex}.layout-bar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.layout-source{color:var(--muted);font-size:var(--fs-xs);align-items:center;gap:6px;display:inline-flex}.layout-source:before{content:"";background:var(--subtle);border-radius:50%;width:7px;height:7px}.layout-source.personal:before{background:var(--accent)}@media (width<=1000px){.widget-grid{grid-template-columns:1fr}}.role-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.role-grid .card-title{margin-bottom:6px}.header-row{gap:var(--space-2);grid-template-columns:1fr 1.4fr auto;align-items:center;margin:6px 0;display:grid}.check-col{padding-top:var(--space-5);flex-direction:column;gap:6px;display:flex}.date-range{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.date-range input{width:auto;min-height:34px;font-size:var(--fs-sm);flex:none;padding:5px 8px}.topo-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr) 320px;align-items:start;display:grid}.topo-map-card{overflow:hidden}.topo-map{background-image:radial-gradient(var(--border) 1px, transparent 1px);touch-action:none;-webkit-user-select:none;user-select:none;background-size:20px 20px;width:100%;height:auto;display:block}.topo-node{cursor:grab}.topo-node:active{cursor:grabbing}.topo-node circle:not(.glyph-dot),.topo-node rect,.topo-node path:not(.glyph){fill:var(--surface);stroke-width:3px}.topo-node.status-up circle:not(.glyph-dot),.topo-node.status-up rect,.topo-node.status-up path:not(.glyph){stroke:var(--up)}.topo-node.status-down circle:not(.glyph-dot),.topo-node.status-down rect,.topo-node.status-down path:not(.glyph){stroke:var(--down)}.topo-node.status-unknown circle:not(.glyph-dot),.topo-node.status-unknown rect,.topo-node.status-unknown path:not(.glyph){stroke:var(--muted)}.topo-node.status-external circle:not(.glyph-dot),.topo-node.status-external rect,.topo-node.status-external path:not(.glyph){stroke:var(--muted);stroke-dasharray:4 3;stroke-width:2px}.topo-node .glyph{fill:none;stroke:var(--text);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.topo-node .glyph-dot,.topo-node .glyph-text{fill:var(--text)}.topo-node.selected circle:not(.glyph-dot),.topo-node.selected rect,.topo-node.selected path:not(.glyph){filter:drop-shadow(0 0 6px var(--accent))}.node-label{fill:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.node-sub{fill:var(--muted);font-size:var(--fs-2xs)}.topo-edge{cursor:pointer}.topo-edge.external{cursor:default}.edge-hit{stroke:#0000;stroke-width:14px}.edge-line{stroke-width:2.5px;stroke:var(--muted)}.topo-edge.tone-up .edge-line{stroke:var(--up)}.topo-edge.tone-down .edge-line{stroke:var(--down)}.topo-edge.external .edge-line{stroke-dasharray:5 4;stroke-width:1.5px}.topo-edge.manual .edge-line{stroke-dasharray:10 4}.topo-edge.selected .edge-line{stroke-width:4.5px}.edge-port,.edge-traffic{font-size:var(--fs-2xs);paint-order:stroke;stroke:var(--surface);stroke-width:3px}.edge-port{fill:var(--muted)}.edge-traffic{fill:var(--text)}.topo-legend{gap:6px var(--space-4);padding:10px var(--space-4);border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;align-items:center;display:flex}.legend-dot{vertical-align:-1px;border:2px solid;border-radius:50%;width:10px;height:10px;display:inline-block}.legend-dot.up{border-color:var(--up)}.legend-dot.down{border-color:var(--down)}.legend-dot.unknown{border-color:var(--muted)}.legend-dash,.legend-manual{border-top:2px dashed var(--muted);vertical-align:3px;width:22px;display:inline-block}.legend-manual{border-top-style:solid;border-image:repeating-linear-gradient(90deg, var(--muted) 0 8px, transparent 8px 11px) 1}.topo-panel{top:calc(var(--header-h) + var(--space-4));position:sticky}.panel-sub{font-size:var(--fs-sm);margin:14px 0 6px}.panel-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}@media (width<=1100px){.topo-layout{grid-template-columns:1fr}.topo-panel{position:static}}.traffic-heading{flex-direction:column;gap:1px;margin-top:2px;display:flex}.traffic-device{color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.traffic-iface{color:var(--muted);font-size:var(--fs-xs)}.traffic-iface-link{color:var(--accent);align-self:flex-start}.traffic-iface-link:hover{color:var(--accent-hover);text-underline-offset:2px;text-decoration:underline}.traffic-now{align-items:baseline;gap:var(--space-2) var(--space-5);padding-bottom:var(--space-3);margin-bottom:var(--space-2);border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.traffic-value{font-size:var(--fs-lg);font-weight:var(--fw-semibold);letter-spacing:-.01em;white-space:nowrap}.traffic-arrow{font-weight:var(--fw-bold);margin-right:4px}.traffic-arrow.in{color:var(--chart-in)}.traffic-arrow.out{color:var(--chart-out)}.traffic-util{font-size:var(--fs-sm);white-space:nowrap;margin-left:auto}@media (width<=720px){.traffic-util{margin-left:0}}.popover{z-index:var(--z-popover);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-pop);animation:pop-in var(--dur-fast) var(--ease);position:fixed;overflow:hidden}.popover:focus{outline:none}.popover-head{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);display:flex}.popover-foot{padding:var(--space-2) var(--space-4);border-top:1px solid var(--border);font-size:var(--fs-sm)}.popover-pad{padding:var(--space-4)}.health-control{gap:var(--space-2);font-weight:var(--fw-semibold);border:1px solid var(--border)}.health-control.tone-ok{color:var(--text)}.health-control.tone-warning{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-border)}.health-control.tone-down{color:var(--down);background:var(--down-bg);border-color:var(--down-border)}.health-reasons{padding:var(--space-3) var(--space-4) var(--space-3) 32px;background:var(--warn-bg);border-bottom:1px solid var(--border);font-size:var(--fs-sm);margin:0}.health-reasons li+li{margin-top:4px}.health-rows{padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border)}.health-row{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);grid-template-columns:14px 80px 70px 1fr;padding:5px 0;display:grid}.health-name{font-weight:var(--fw-medium)}.health-state{font-weight:var(--fw-semibold)}.health-state.state-ok{color:var(--up)}.health-state.state-warning{color:var(--warn)}.health-state.state-down{color:var(--down)}.health-state.state-unknown{color:var(--muted)}.health-detail{color:var(--muted);font-size:var(--fs-xs);text-align:right}.health-stats{gap:6px var(--space-4);padding:var(--space-3) var(--space-4);font-size:var(--fs-sm);grid-template-columns:auto 1fr;margin:0;display:grid}.health-stats dt{color:var(--muted)}.health-stats dd{text-align:right;margin:0}.health-stats p{grid-column:1/-1;margin:0}.alert-bell{position:relative}.bell-count{border-radius:var(--radius-pill);min-width:17px;height:17px;font-size:10px;font-weight:var(--fw-bold);text-align:center;box-shadow:0 0 0 2px var(--surface);padding:0 4px;line-height:17px;position:absolute;top:1px;right:0}.bell-count.critical{background:var(--down);color:#fff}.bell-count.warning{background:var(--warn);color:#1a1300}.bell-list{padding:var(--space-1) 0;max-height:360px;margin:0;list-style:none;overflow-y:auto}.bell-list a{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);color:var(--text);text-decoration:none;display:flex}.bell-list a:hover{background:var(--hover)}.bell-sev{background:var(--muted);border-radius:50%;flex:0 0 8px;width:8px;height:8px}.bell-sev.critical{background:var(--down)}.bell-sev.warning{background:var(--warn)}.bell-text{min-width:0;font-size:var(--fs-sm);flex-direction:column;flex:1;display:flex}.bell-text>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=900px){.health-control .health-label{display:none}.health-control{padding:6px 10px}}.time-range{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:2px;display:inline-flex}.time-step{width:26px;height:26px;font-size:18px}.time-step:disabled{opacity:.35;cursor:default}.time-range .segmented{flex-wrap:nowrap}.time-range-label{text-align:right;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--accent);font-variant-numeric:tabular-nums;flex-basis:100%;margin-top:2px}.range-form{gap:var(--space-3);padding:var(--space-4);flex-direction:column;display:flex}.range-shortcuts{flex-wrap:wrap;gap:6px;display:flex}.range-fields{gap:var(--space-2);grid-template-columns:56px 1fr 120px;align-items:center;display:grid}.range-fields legend{float:left;width:56px;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--muted);padding:0}.range-fields input{min-height:34px}.range-form .form-actions{margin-top:0}@media (width<=480px){.range-fields{grid-template-columns:1fr 1fr}.range-fields legend{float:none;grid-column:1/-1;width:auto}}.retention-card{margin-top:var(--space-4)}.retention-card .kv{margin:var(--space-3) 0}.retention-card .notice{margin:0 var(--space-4) var(--space-3)}.tz-current{margin:0 0 var(--space-2)}.tz-list{margin:var(--space-2) 0 0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);max-height:280px;padding:0;list-style:none;overflow-y:auto}.tz-list button{justify-content:space-between;gap:var(--space-3);width:100%;padding:7px var(--space-3);color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.tz-list button:hover{background:var(--hover)}.tz-list button.selected{background:var(--selected);color:var(--accent);font-weight:var(--fw-medium)}.tz-list button:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);outline:none}.backups-card{margin-top:var(--space-4)}.backups-card .kv{margin:var(--space-3) 0}.backups-card .notice{margin:0 var(--space-4) var(--space-3)}.backups-card .mono{font-family:var(--mono)}.backup-config h4{margin:var(--space-4) 0 var(--space-2);font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--muted)}.backup-config h4:first-child{margin-top:0}.button-row{align-items:center;gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.plain-list{margin:var(--space-1) 0 0;padding-left:var(--space-4)}.plain-list li{margin:2px 0}.spinner{vertical-align:-1px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:12px;height:12px;margin-right:6px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}
