:root{--font-sans:"Inter", "Noto Sans Arabic", "Noto Sans JP", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--space-1:4px;--space-2:6px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:24px;--space-7:32px;--radius-xs:3px;--radius-sm:7px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--control-h:40px;--control-h-sm:30px;--ease-out:cubic-bezier(.2, .7, .2, 1);--dur-fast:.15s;--dur-med:.25s;--c-bg:#f7f7f8;--c-surface:#fff;--c-card:#fff;--c-card-line:#00000012;--c-glass:#ffffff8c;--c-glass-line:#00000012;--c-glass-line-strong:#0000001f;--c-pressed-bg:#e8e8eb;--c-pressed-shadow:#00000038;--c-pressed-ring:#0000000d;--c-ring-1:#e4e4e7;--c-ring-2:#71717a;--c-sunk:#f4f4f5;--c-line:#e4e4e7;--c-line-strong:#d4d4d8;--c-ink:#0a0a0a;--c-muted:#52525b;--plus-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44'%3E%3Cpath d='M22 15.5v13M15.5 22h13' stroke='%23000' stroke-width='1.2'/%3E%3C/svg%3E");--c-plus:#52525b29;--c-scroll:#0000002e;--c-scroll-hover:#00000052;--c-invert-bg:#0a0a0a;--c-invert-fg:#fff;--c-code-bg:#fff;--c-code-fg:#27272a;--aura-s:90%;--aura-l:62%;--aura-a:.22;--c-code-line:#e4e4e7;--c-code-gutter:#a1a1aa;--c-code-gutter-on:#3f3f46;--c-code-active:#0000000b;--c-code-cursor:#0a0a0a;--c-code-cursor-glow:#0a0a0a40;--c-code-sel:#2563eb29;--c-code-tip-bg:#fff;--c-code-tip-fg:#27272a;--c-tok-kw:#1d4ed8;--c-tok-type:#a1530b;--c-tok-num:#15803d;--c-tok-str:#a16207;--c-tok-com:#8b8d96;--c-tok-fn:#7c3aed;--c-tok-op:#52525b;--c-draft-bg:#fef3c7;--c-draft-fg:#8a5a00;--c-ok-bg:#dcfce7;--c-ok-fg:#166534;--c-warn-bg:#fee2e2;--c-warn-fg:#991b1b;--c-caret:#0a0a0a;--c-caret-glow:#0a0a0a66;--shadow-pop:0 16px 40px #0000001f;--shadow-lift:0 14px 30px #00000024;--shadow-cover:0 8px 20px #00000024}:root[data-theme=dark]{--c-bg:#0b0b0c;--c-surface:#161618;--c-card:#1c1c20;--c-pressed-bg:#0d0d0f;--c-pressed-shadow:#000000bf;--c-pressed-ring:#ffffff14;--c-card-line:#ffffff14;--c-glass:#ffffff0a;--c-glass-line:#ffffff14;--c-glass-line-strong:#ffffff29;--c-sunk:#1f1f22;--c-line:#2e2e33;--c-line-strong:#3f3f46;--c-ink:#fafafa;--c-muted:#a1a1aa;--c-plus:#a1a1aa21;--c-scroll:#ffffff24;--c-scroll-hover:#ffffff42;--c-invert-bg:#fafafa;--c-invert-fg:#0a0a0a;--c-code-bg:#111113;--aura-s:85%;--aura-l:52%;--aura-a:.32;--c-code-line:#26262a;--c-code-gutter:#55575f;--c-code-gutter-on:#d8d9de;--c-code-active:#ffffff0d;--c-code-cursor:#fff;--c-code-cursor-glow:#ffffff8c;--c-code-sel:#8db4f540;--c-code-tip-bg:#18181b;--c-code-tip-fg:#e4e4e7;--c-tok-kw:#8db4f5;--c-tok-type:#e8b97a;--c-tok-num:#9dd3a8;--c-tok-str:#e6c384;--c-tok-com:#6b6e78;--c-tok-fn:#c7a6f0;--c-tok-op:#a9abb3;--c-code-fg:#c9cad1;--c-draft-bg:#3a2e12;--c-draft-fg:#f5c451;--c-ok-bg:#11301f;--c-ok-fg:#5edb95;--c-warn-bg:#3b1515;--c-warn-fg:#fca5a5;--c-caret:#fff;--c-caret-glow:#ffffff8c;--shadow-pop:0 16px 40px #00000080;--shadow-lift:0 14px 30px #00000080;--shadow-cover:0 8px 20px #00000073}:root[data-density=comfortable]{--control-h:44px;--space-6:32px}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-med:0s}}:root[data-motion=reduced]{--dur-fast:0s;--dur-med:0s}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--font-sans);color:var(--c-ink);background:var(--c-bg);-webkit-font-smoothing:antialiased;transition:background-color var(--dur-med) ease, color var(--dur-med) ease}.app-canvas{background-color:var(--c-bg);isolation:isolate;min-height:100vh;position:relative}.app-bg{z-index:-1;pointer-events:none;transition:opacity .6s;position:fixed;inset:0;overflow:hidden}.app-bg:before,.app-bg:after{content:"";position:absolute}:root[data-bg=plus] .app-bg:before{background-color:var(--c-plus);-webkit-mask:var(--plus-mask) 0 0 / 44px 44px repeat;-webkit-mask:var(--plus-mask) 0 0 / 44px 44px repeat;mask:var(--plus-mask) 0 0 / 44px 44px repeat;animation:5s linear infinite plus-drift;inset:-88px}@property --aura-h{syntax:"<number>";inherits:true;initial-value:210}:root[data-bg=aurora] .app-bg{animation:40s ease-in-out infinite alternate aura-hue}:root[data-bg=aurora] .app-bg:before,:root[data-bg=aurora] .app-bg:after{background:radial-gradient(closest-side, hsl(var(--aura-h) var(--aura-s) var(--aura-l) / var(--aura-a)), transparent);border-radius:50%;width:75vmax;height:75vmax;margin:-37.5vmax 0 0 -37.5vmax;top:0;left:0}:root[data-bg=aurora] .app-bg:before{animation:38s ease-in-out infinite aura-roam-a}:root[data-bg=aurora] .app-bg:after{opacity:.75;width:55vmax;height:55vmax;margin:-27.5vmax 0 0 -27.5vmax;animation:53s ease-in-out infinite aura-roam-b}.app-bg[data-off=true],:root[data-bg=plain] .app-bg{opacity:0}:root[data-motion=reduced] .app-bg,:root[data-motion=reduced] .app-bg:before,:root[data-motion=reduced] .app-bg:after{animation:none}@media (prefers-reduced-motion:reduce){.app-bg,.app-bg:before,.app-bg:after{animation:none}}:root[data-motion=reduced] .app-bg:before,:root[data-motion=reduced] .app-bg:after{translate:30vw 30vh}@keyframes plus-drift{to{transform:translate(44px,44px)}}@keyframes aura-hue{0%{--aura-h:195}35%{--aura-h:228}70%{--aura-h:262}to{--aura-h:285}}@keyframes aura-roam-a{0%,to{translate:15vw 20vh}17%{translate:70vw 12vh}33%{translate:88vw 62vh}52%{translate:40vw 88vh}70%{translate:8vw 65vh}86%{translate:50vw 40vh}}@keyframes aura-roam-b{0%,to{translate:85vw 80vh}21%{translate:30vw 95vh}40%{translate:5vw 30vh}58%{translate:55vw 5vh}79%{translate:95vw 35vh}}*{scrollbar-width:thin;scrollbar-color:var(--c-scroll) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--c-scroll) padding-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--c-scroll-hover) padding-box}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--c-ink);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@keyframes noto-caret{0%,40%{opacity:1}60%,to{opacity:.15}}.caret{vertical-align:-.25em;background:var(--c-caret);width:3px;height:1.25em;box-shadow:0 0 6px 1px var(--c-caret-glow), 0 0 16px 3px var(--c-caret-glow);animation:1.1s ease-in-out infinite noto-caret;display:inline-block}:root[data-motion=reduced] .caret{animation:none}@media (prefers-reduced-motion:reduce){.caret{animation:none}}.btn{height:var(--control-h);min-width:var(--control-h);padding:0 var(--space-4);justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--c-line);border-radius:var(--radius-md);background:var(--c-surface);color:var(--c-ink);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out), border-color var(--dur-fast) ease, background-color var(--dur-fast) ease;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--c-ink);transform:translateY(-1px)}.btn:active{transform:translateY(0)scale(.97)}.btn[aria-pressed=true],.btn[aria-expanded=true]{background:var(--c-invert-bg);color:var(--c-invert-fg);border-color:var(--c-invert-bg)}.btn--icon{width:var(--control-h);padding:0}.btn--sm{height:var(--control-h-sm);min-width:var(--control-h-sm);padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:12px}.btn--ghost{background:0 0;border-color:#0000}.badge{height:30px;padding:0 var(--space-3);align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);white-space:nowrap;font-size:12px;font-weight:600;display:inline-flex}.badge__dot{background:currentColor;border-radius:2px;width:7px;height:7px}.badge--draft{background:var(--c-draft-bg);color:var(--c-draft-fg)}.badge--ok{background:var(--c-ok-bg);color:var(--c-ok-fg)}.badge--warn{background:var(--c-warn-bg);color:var(--c-warn-fg)}.badge--neutral{background:var(--c-sunk);color:var(--c-muted)}.segmented{border-radius:var(--radius-md);background:var(--c-sunk);gap:2px;padding:2px;display:inline-flex}.segmented button{height:28px;padding:0 var(--space-3);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--dur-fast) ease;background:0 0;border:0;font-size:12px}.segmented button[aria-pressed=true]{background:var(--c-surface);font-weight:600;box-shadow:0 1px 2px #0000001f}.popover{z-index:20;top:calc(100% + var(--space-2));min-width:280px;padding:var(--space-4);border:1px solid var(--c-glass-line-strong);border-radius:var(--radius-lg);background:linear-gradient(180deg, color-mix(in srgb, var(--c-ink) 6%, transparent), transparent 45%), color-mix(in srgb, var(--c-surface) 58%, transparent);-webkit-backdrop-filter:blur(24px)saturate(1.7);backdrop-filter:blur(24px)saturate(1.7);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--c-ink) 10%, transparent), var(--shadow-pop);gap:var(--space-4);animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex;position:absolute;inset-inline-start:0}@keyframes noto-pop{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:none}}.field-row{justify-content:space-between;align-items:center;gap:var(--space-4);font-size:13px;display:flex}.popover__label{letter-spacing:.5px;text-transform:uppercase;color:var(--c-muted);padding-top:var(--space-2);border-top:1px solid var(--c-line);font-size:11px;font-weight:600}.field-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--c-ink)}.btn:disabled{opacity:.45;cursor:default;border-color:var(--c-line);transform:none}.swatch{border-radius:var(--radius-sm);cursor:pointer;width:26px;height:26px;transition:transform var(--dur-fast) var(--ease-out);border:1px solid #0000001a}.swatch:hover{transform:scale(1.12)}.swatch[aria-pressed=true]{outline:2px solid var(--c-ink);outline-offset:2px}.swatch--none{background:linear-gradient(135deg, transparent 45%, #dc2626 45% 55%, transparent 55%), var(--c-surface)}.menu__actions{padding-top:var(--space-2);border-top:1px solid var(--c-line);flex-direction:column;gap:2px;display:flex}.menu__actions button{height:34px;padding:0 var(--space-3);border-radius:var(--radius-sm);text-align:start;cursor:pointer;background:0 0;border:0;font-size:13px}.menu__actions button:hover{background:var(--c-sunk)}.menu{min-width:200px;padding:var(--space-2);gap:2px}.menu--end{inset-inline:auto 0}.menu__item{height:36px;padding:0 var(--space-3);border-radius:var(--radius-sm);align-items:center;gap:var(--space-3);text-align:start;cursor:pointer;background:0 0;border:0;font-size:13px;display:flex}.menu__item:hover{background:var(--c-sunk)}.menu__item--danger{color:var(--c-warn-fg)}.menu__confirm{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);flex-wrap:wrap;font-size:13px;display:flex}.btn--danger{background:var(--c-warn-bg);color:var(--c-warn-fg);border-color:#0000}.tabledlg{border:1px solid var(--c-glass-line-strong);border-radius:var(--radius-xl);background:color-mix(in srgb, var(--c-surface) 86%, transparent);-webkit-backdrop-filter:blur(24px)saturate(1.6);backdrop-filter:blur(24px)saturate(1.6);width:min(980px,100vw - 32px);height:min(720px,100vh - 64px);color:var(--c-ink);box-shadow:var(--shadow-pop);padding:0}.tabledlg[open]{animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex}.tabledlg::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006}.tabledlg__head{align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-4) var(--space-6);border-bottom:1px solid var(--c-line);display:flex}.tabledlg__head>div{flex:1;min-width:0}.tabledlg__title{margin:0;font-size:17px}.tabledlg__sub{color:var(--c-muted);margin:3px 0 0;font-size:12px}.tabledlg__search{width:220px;height:32px;padding:0 var(--space-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-ink);font:inherit;outline:none;font-size:13px}.tabledlg__search:focus{border-color:var(--c-line-strong)}.tabledlg__btn{min-width:32px;height:32px;padding:0 var(--space-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);color:var(--c-ink);cursor:pointer;background:0 0;font-size:12px;font-weight:600}.tabledlg__btn:hover{background:var(--c-sunk)}.tabledlg__btn--x{padding:0;font-size:18px}.tabledlg__scroll{flex:1;overflow:auto}.tabledlg table{border-collapse:collapse;width:100%;font-size:12.5px}.tabledlg th{z-index:1;padding:9px var(--space-4);background:var(--c-surface);border-bottom:1px solid var(--c-line);color:var(--c-muted);letter-spacing:.06em;text-transform:uppercase;text-align:start;white-space:nowrap;font-size:11px;font-weight:700;position:sticky;top:0}.tabledlg td{padding:7px var(--space-4);border-bottom:1px solid color-mix(in srgb, var(--c-line) 60%, transparent);vertical-align:top}.tabledlg td.is-mono{font-family:var(--font-mono);white-space:nowrap;font-size:12px}.tabledlg tbody tr:hover td{background:color-mix(in srgb, var(--c-ink) 4%, transparent)}.tabledlg__empty{padding:var(--space-6);text-align:center;color:var(--c-muted)}@media (width<=640px){.tabledlg__search{width:120px}}.popover.settings{min-width:340px;max-height:calc(100vh - 90px);padding:var(--space-3) var(--space-4);gap:0;overflow-y:auto}.settings__section{gap:var(--space-3);padding:var(--space-3) 0;flex-direction:column;display:flex}.settings__section+.settings__section{border-top:1px solid var(--c-line)}.settings__title{letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);margin:0;font-size:11px;font-weight:700}.settings__actions{gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(90px,1fr));display:grid}.settings__actions button{height:34px;padding:0 var(--space-2);border-radius:var(--radius-sm);background:var(--c-sunk);color:var(--c-ink);cursor:pointer;transition:background-color var(--dur-fast) ease;border:0;font-size:12px}.settings__actions button:hover:not(:disabled){background:var(--c-line)}.field-row input.switch{appearance:none;background:var(--c-line-strong);cursor:pointer;width:34px;height:20px;transition:background-color var(--dur-fast) ease;border-radius:10px;margin:0;position:relative}.field-row input.switch:after{content:"";top:3px;background:var(--c-surface);width:14px;height:14px;transition:transform var(--dur-fast) var(--ease-out);border-radius:50%;position:absolute;inset-inline-start:3px;box-shadow:0 1px 3px #0000004d}.field-row input.switch:checked{background:var(--c-ink)}.field-row input.switch:checked:after{transform:translate(14px)}:root[dir=rtl] .field-row input.switch:checked:after{transform:translate(-14px)}.field-row input.switch:focus-visible{outline:2px solid var(--c-ink);outline-offset:2px}.settings__actions .backup__status{grid-column:1/-1;margin:0;font-size:12px}.backup__status--ok{color:var(--c-ok-fg)}.backup__status--error{color:var(--c-warn-fg)}.nethome{gap:var(--space-5);flex-direction:column;display:flex}.nethome__title{margin:0;font-size:22px;font-weight:700}.netgrid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin:0;padding:0;list-style:none;display:grid}.netcard-wrap{position:relative}.netcard-wrap:hover .cardmenu__btn{opacity:1}.netcard{width:100%;min-height:150px;padding:var(--space-5);box-sizing:border-box;justify-content:flex-end;gap:var(--space-1);border:1px solid var(--c-card-line);border-radius:var(--radius-xl);background:radial-gradient(120% 80% at 85% 0%, color-mix(in srgb, var(--c-ink) 6%, transparent), transparent 60%), var(--c-card);color:inherit;text-align:start;font:inherit;cursor:pointer;transition:transform var(--dur-med) var(--ease-out), box-shadow var(--dur-med) ease;flex-direction:column;text-decoration:none;display:flex;position:relative;box-shadow:0 1px 2px #0000000d,0 8px 22px #00000012}.netcard:hover{transform:translateY(-3px);box-shadow:0 2px 4px #0000000f,0 16px 30px #0000001f}:root[data-theme=dark] .netcard{box-shadow:inset 0 1px #ffffff0d,0 10px 26px #00000080}.netcard--new{background:linear-gradient(180deg, color-mix(in srgb, var(--c-ink) 6%, transparent), transparent 50%), color-mix(in srgb, var(--c-surface) 45%, transparent);-webkit-backdrop-filter:blur(22px)saturate(1.7);backdrop-filter:blur(22px)saturate(1.7);justify-content:space-between;align-items:flex-start}.netcard--new .card__icon{background:var(--c-invert-bg);color:var(--c-invert-fg);border:0}.netcard__name{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.netcard__meta{color:var(--c-muted);font-size:12px}.netcard__graph{top:var(--space-5);width:84px;height:52px;position:absolute;inset-inline-end:var(--space-5)}.netcard__graph i{border:1.5px solid var(--c-muted);width:10px;height:10px;left:calc(37px + (var(--i) - 2.5) * 13px);top:calc(20px + sin(var(--i) * 97.4028deg) * 18px);border-radius:3px;position:absolute}.netnew{gap:var(--space-2);padding:var(--space-3)}.netname input{height:var(--control-h);padding:0 var(--space-3);border-radius:var(--radius-md);background:color-mix(in srgb, var(--c-ink) 8%, transparent);font:inherit;color:var(--c-ink);border:0;outline:none;font-size:15px;font-weight:700}.netname input:focus{background:color-mix(in srgb, var(--c-ink) 12%, transparent)}.netsplit{gap:var(--space-3);transition:grid-template-columns .32s var(--ease-out);grid-template-columns:minmax(0,1fr);display:grid}.netsplit--open{grid-template-columns:var(--pane-w,520px) 10px minmax(0, 1fr);gap:0}.netsplit--open .topo{margin-inline-start:2px}.netsplit__handle{cursor:col-resize;touch-action:none;position:relative}.netsplit__handle:before{content:"";background:var(--c-line-strong);width:3px;height:48px;transition:height var(--dur-fast) ease, background-color var(--dur-fast) ease;border-radius:2px;position:absolute;top:45%;left:3.5px}.netsplit__handle:hover:before,.netsplit__handle:focus-visible:before{background:var(--c-ink);outline:none;height:96px}@media (width<=900px){.netsplit--open{grid-template-columns:minmax(0,1fr)}}.netsum{gap:var(--space-4);flex-direction:column;font-size:13px;display:flex}.netsum__host{font-family:var(--font-mono);font-size:14px;font-weight:600}.netsum__stats{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.netsum__stat{padding:var(--space-3);border-radius:var(--radius-md);background:var(--c-sunk);flex-direction:column;gap:2px;display:flex}.netsum__stat strong{font-size:20px;line-height:1}.netsum__stat span{color:var(--c-muted);font-size:11px}.netsum__stat--ok{background:var(--c-ok-bg);color:var(--c-ok-fg)}.netsum__stat--warn{background:var(--c-warn-bg);color:var(--c-warn-fg)}.netsum__stat--ok span,.netsum__stat--warn span{color:inherit;opacity:.8}.netsum__ifaces{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.netsum__ifaces li{align-items:center;gap:var(--space-2);border-bottom:1px solid var(--c-line);grid-template-columns:10px 58px 1fr auto;min-height:32px;display:grid}.netsum__dot{background:var(--c-ok-fg);border-radius:2px;width:8px;height:8px}.netsum__dot--off{background:var(--c-warn-fg)}.netsum__mono{font-family:var(--font-mono);font-size:12px}.netsum__muted{color:var(--c-muted);font-size:11px}.netsum__role{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.netsum__group{gap:var(--space-2);flex-direction:column;display:flex}.netsum__label{letter-spacing:.5px;text-transform:uppercase;color:var(--c-muted);font-size:11px;font-weight:600}.netsum__label--row{justify-content:space-between;align-items:center;display:flex}.netsum__chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.netsum__chip{padding:3px var(--space-3);border-radius:var(--radius-sm);background:var(--c-sunk);font-family:var(--font-mono);font-size:11.5px}.netsum__chip--added{background:var(--c-ok-bg);color:var(--c-ok-fg)}.netsum__chip--removed{background:var(--c-warn-bg);color:var(--c-warn-fg)}.netsum__chip--changed{background:var(--c-draft-bg);color:var(--c-draft-fg)}.netsum__links{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--c-sunk);flex-direction:column;display:flex}.netsum__link{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.netsum__node{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--c-surface);border:1px solid var(--c-line);font-family:var(--font-mono);font-size:12px}.netsum__note{color:var(--c-muted);margin:0;font-size:11.5px;line-height:1.6}.netsum__warn{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--c-draft-bg);color:var(--c-draft-fg);margin:0;font-size:12.5px;line-height:1.5}.netsum__script{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--c-code-bg);color:var(--c-code-fg);font-family:var(--font-mono);margin:0;font-size:12px;line-height:1.7;overflow-x:auto}.diff{border:1px solid var(--c-code-line);border-radius:var(--radius-lg);background:var(--c-code-bg);color:var(--c-code-fg);font-family:var(--font-mono);font-size:12.5px;overflow:hidden}.diff__head,.diff__row{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.diff__head{font-family:var(--font-sans);color:var(--c-code-gutter);border-bottom:1px solid var(--c-code-line);font-size:11px;font-weight:600}.diff__head span{padding:var(--space-2) var(--space-4)}.diff__body{max-height:70vh;padding:var(--space-2) 0;overflow:auto}.diff__cell{white-space:pre;padding:0 var(--space-4) 0 0;text-overflow:ellipsis;border-left:1px solid var(--c-code-line);line-height:22px;overflow:hidden}.diff__cell--left{border-left:0}.diff__cell i{text-align:right;width:40px;color:var(--c-code-gutter);-webkit-user-select:none;user-select:none;padding-right:10px;font-style:normal;display:inline-block}.diff__row--removed .diff__cell--left{color:var(--c-warn-fg);background:#ef444424}.diff__row--added .diff__cell:not(.diff__cell--left){color:var(--c-ok-fg);background:#22c55e21}.cmdref{border:1px solid var(--c-line);border-radius:var(--radius-xl);background:var(--c-surface);width:min(860px,100vw - 32px);max-height:calc(100vh - 64px);color:var(--c-ink);box-shadow:var(--shadow-pop);padding:0}.cmdref[open]{animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex}.cmdref::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006}.cmdref__head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) var(--space-6) var(--space-4);border-bottom:1px solid var(--c-line);display:flex}.cmdref__title{margin:0;font-size:17px}.cmdref__sub{color:var(--c-muted);margin:4px 0 0;font-size:12px}.cmdref__close{border:1px solid var(--c-line);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--c-ink);cursor:pointer;background:0 0;font-size:18px}.cmdref__body{padding:var(--space-4) var(--space-6) var(--space-6);gap:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}.cmdref__card{padding:var(--space-4);border-radius:var(--radius-lg);background:var(--c-sunk);font-size:13px}.cmdref__card h3,.cmdref__mode h3{margin:0 0 var(--space-2);letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);font-size:11px;font-weight:700}.cmdref__card ul,.cmdref__card ol{flex-direction:column;gap:4px;margin:0;padding-inline-start:20px;display:flex}.cmdref__card a{color:var(--c-ink)}.cmdref__note{margin:var(--space-3) 0 0;color:var(--c-muted);font-size:12px;line-height:1.6}.cmdref__search input{width:100%;height:36px;padding:0 var(--space-3);border:1px solid var(--c-line);border-radius:var(--radius-md);background:var(--c-bg);color:var(--c-ink);box-sizing:border-box;font-size:13px}.cmdref__mode h3 span{background:var(--c-sunk);letter-spacing:0;border-radius:5px;margin-inline-start:6px;padding:1px 6px}.cmdref__mode table{border-collapse:collapse;width:100%}.cmdref__mode td{border-bottom:1px solid var(--c-line);padding:6px 0;font-size:12.5px}.cmdref__mode code{font-family:var(--font-mono);font-size:12px}.cmdref__src{text-align:end;width:40px;color:var(--c-muted);font-family:var(--font-mono);font-size:11px}.problems{flex-direction:column;gap:4px;display:flex}.problems__item{align-items:start;gap:var(--space-2);padding:7px var(--space-2);border-radius:var(--radius-sm);color:var(--c-ink);text-align:start;cursor:pointer;background:0 0;border:0;grid-template-columns:10px 40px 1fr;font-size:12.5px;display:grid}.problems__item:hover{background:var(--c-sunk)}.problems__sev{border-radius:50%;width:8px;height:8px;margin-top:5px}.problems__sev--error{background:#f87171}.problems__sev--warning{background:#fbbf24}.problems__line{font-family:var(--font-mono);color:var(--c-muted);font-size:11px}.problems__usage{font-family:var(--font-mono);color:var(--c-muted);margin-top:2px;font-size:11px;display:block}.problems__ok{color:var(--c-ok-fg);font-size:13px}.problems__ref{margin-top:var(--space-2);color:var(--c-muted);cursor:pointer;background:0 0;border:0;align-self:flex-start;font-size:12px;text-decoration:underline}.audit{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.audit__item{gap:var(--space-2);grid-template-columns:10px 1fr;font-size:12.5px;display:grid}.audit__dot{background:var(--c-muted);border-radius:50%;width:8px;height:8px;margin-top:5px}.audit__item--ok .audit__dot{background:#22c55e}.audit__item--warn .audit__dot{background:#f59e0b}.audit__item--bad .audit__dot{background:#ef4444}.audit__text{flex-direction:column;gap:2px;min-width:0;display:flex}.audit__text>span{color:var(--c-muted)}.audit__fix{align-items:flex-start;gap:6px;margin-top:2px;display:flex}.audit__fix code{background:var(--c-code-bg);min-width:0;color:var(--c-code-fg);font-family:var(--font-mono);white-space:pre-wrap;border-radius:6px;flex:1;padding:4px 8px;font-size:11px}.copybtn{border:1px solid var(--c-line);width:24px;height:24px;color:var(--c-muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.copybtn:hover{color:var(--c-ink);border-color:var(--c-line-strong)}.cmdref__mode td.cmdref__copy{text-align:end;width:32px}.tplmenu{position:relative}.tplmenu__pop{gap:var(--space-3);width:380px;max-height:70vh;inset-inline:auto 0;overflow-y:auto}.tplmenu__vars{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.tplmenu__field{color:var(--c-muted);text-transform:capitalize;flex-direction:column;gap:3px;font-size:11px;display:flex}.tplmenu__field input,.tplmenu__field select{border:1px solid var(--c-line);background:var(--c-bg);height:30px;color:var(--c-ink);font-family:var(--font-mono);text-transform:none;border-radius:7px;padding:0 8px;font-size:12px}.tplmenu__preview{padding:var(--space-3);border-radius:var(--radius-md);background:var(--c-code-bg);color:var(--c-code-fg);font:11.5px/1.6 var(--font-mono);white-space:pre;margin:0;overflow-x:auto}.tplmenu__actions{align-items:center;gap:var(--space-2);display:flex}.history__list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.history__row{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--c-sunk);grid-template-columns:1fr auto auto;font-size:12.5px;display:grid}.history__when{align-items:center;gap:var(--space-2);display:flex}.history__tag{background:var(--c-ok-bg);color:var(--c-ok-fg);border-radius:5px;padding:1px 6px;font-size:10.5px;font-weight:700}.history__meta{color:var(--c-muted);font-size:11.5px}.history__actions{gap:4px;display:flex}.netsum__virt{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.netsum__vtile{--v:#a1a1aa;padding:var(--space-2) var(--space-3);border:1px dashed color-mix(in srgb, var(--v) 55%, transparent);border-radius:var(--radius-md);background:color-mix(in srgb, var(--v) 9%, transparent);color:var(--c-ink);cursor:pointer;text-align:start;transition:background var(--dur-fast) ease, transform var(--dur-fast) ease;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.netsum__vtile:hover:not(:disabled){background:color-mix(in srgb, var(--v) 18%, transparent);transform:translateY(-1px)}.netsum__vtile:disabled{opacity:.4;cursor:default}.netsum__vtile strong{color:var(--v);font-size:17px}.netsum__vtile span{color:var(--c-muted);font-size:11px}.netsum__vtile--vrf{--v:#38bdf8}.netsum__vtile--bgp{--v:#f59e0b}.netsum__vtile--tunnel{--v:#ec4899}.netsum__vtile--l2vpn{--v:#14b8a6}.netsum__more,.netsum__all{color:var(--c-muted);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;font-size:12px;text-decoration:underline}.netsum__more:hover,.netsum__all:hover{color:var(--c-ink)}.netsum__all{text-transform:none;letter-spacing:0;margin-inline-start:var(--space-2);font-size:11px;font-weight:500}.netsum__more{align-self:flex-start}.library{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(168px,1fr));margin:0;padding:0;list-style:none;display:grid}.library__note{color:var(--c-muted);font-size:13px}.cardwrap{position:relative}.card{aspect-ratio:4/5;width:100%;color:inherit;cursor:pointer;border-radius:var(--radius-lg);transition:transform var(--dur-med) var(--ease-out);background:0 0;border:0;padding:0;text-decoration:none;display:block;position:relative}.card:hover{transform:translateY(-3px)}.card:active{transform:translateY(-1px)scale(.985)}.card__sheet{border-radius:var(--radius-lg);border:1px solid var(--c-card-line);background:var(--c-code-bg);justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:inset 0 1px #ffffff0a,0 10px 26px #00000047}.card__preview{padding:var(--space-4);font-family:var(--font-mono);white-space:pre;text-align:start;color:var(--c-code-fg);font-size:7.5px;line-height:1.7;position:absolute;inset:0;overflow:hidden}.card__title{padding:36px var(--space-3) var(--space-4);background:linear-gradient(to top, var(--c-code-bg) 45%, transparent);color:var(--c-ink);text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;position:absolute;inset:auto 0 0;overflow:hidden}.card__notes{top:var(--space-3);color:#d4d4d8;background:#ffffff1a;border-radius:5px;padding:1px 6px;font-size:9.5px;font-weight:600;position:absolute;inset-inline-end:var(--space-3)}.card__icon{border-radius:var(--radius-md);background:var(--c-invert-bg);width:44px;height:44px;color:var(--c-invert-fg);transition:transform var(--dur-med) var(--ease-out);justify-content:center;align-items:center;display:flex;box-shadow:0 6px 16px #0000002e}.card:hover .card__icon{transform:scale(1.06)}.card__under{font-size:13px;font-weight:600}.card__sheet--new{border:1px solid var(--c-glass-line-strong);background:radial-gradient(120% 70% at 25% 0%, color-mix(in srgb, var(--c-ink) 7%, transparent), transparent 60%), color-mix(in srgb, var(--c-surface) 45%, transparent);-webkit-backdrop-filter:blur(22px)saturate(1.7);backdrop-filter:blur(22px)saturate(1.7);color:var(--c-ink);box-shadow:inset 0 1px #ffffff1a,0 10px 28px #0000001f}.newcard{position:relative}.card__hint{color:var(--c-muted);font-size:11px}.card--new.is-over .card__sheet--new{border-style:dashed;border-color:color-mix(in srgb, var(--c-ink) 45%, transparent);background:color-mix(in srgb, var(--c-ink) 8%, transparent)}.card--new.is-over .card__icon{transform:scale(1.12)}.newcard__error{margin:var(--space-2) 0 0;color:var(--c-warn-fg);font-size:12px}.cardmenu{top:var(--space-2);z-index:5;position:absolute;inset-inline-start:var(--space-2)}.cardmenu__btn{border-radius:var(--radius-sm);background:var(--c-invert-bg);width:28px;height:28px;color:var(--c-invert-fg);cursor:pointer;opacity:0;transition:opacity var(--dur-fast) ease;border:0;justify-content:center;align-items:center;display:flex;box-shadow:0 3px 10px #00000040}.cardwrap:hover .cardmenu__btn,.netcard-wrap:hover .cardmenu__btn,.cardmenu__btn:focus-visible,.cardmenu__btn[aria-expanded=true]{opacity:1}@media (hover:none){.cardmenu__btn{opacity:1}}.cardmenu__pop{gap:var(--space-2);width:260px}.popover__label--first{border-top:0;padding-top:0}.cardmenu__rename{gap:var(--space-2);flex-direction:column;display:flex}.cardmenu__rename input,.cardmenu__select{height:34px;padding:0 var(--space-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-sunk);color:var(--c-ink);font-size:13px;font-weight:600}.cardmenu__rename input:focus{border-color:var(--c-line-strong);outline:none}.topo{--topo-node:var(--c-card);--topo-line:var(--c-card-line);--topo-wire:color-mix(in srgb, var(--c-ink) 30%, transparent);--topo-text:var(--c-ink);--topo-muted:var(--c-muted);--topo-tag:color-mix(in srgb, var(--c-bg) 92%, transparent);--up:#22c55e;--down:#ef4444;--flow:#38bdf8;border:1px solid var(--c-card-line);border-radius:var(--radius-xl);background:radial-gradient(circle, color-mix(in srgb, var(--c-ink) 10%, transparent) 1px, transparent 1.4px) 0 0 / 20px 20px, color-mix(in srgb, var(--c-bg) 82%, transparent);height:calc(100vh - 150px);min-height:420px;animation:noto-pop var(--dur-med) var(--ease-out) both;position:relative;overflow:hidden}.topo__svg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.topo__svg.is-panning,.topo__svg.is-dragging{cursor:grabbing}.topo__node{cursor:pointer;transition:opacity var(--dur-med) ease;animation:topo-in .38s var(--ease-out) both;animation-delay:var(--d);outline:none}.is-dragging .topo__node{transition:none}.topo__box{fill:var(--topo-node);stroke:var(--topo-line);stroke-width:1px;transition:stroke var(--dur-fast) ease, fill var(--dur-fast) ease}.topo__node:hover .topo__box,.topo__node:focus-visible .topo__box{stroke:color-mix(in srgb, var(--c-ink) 35%, transparent)}.topo__node.is-selected .topo__box{stroke:color-mix(in srgb, var(--c-ink) 70%, transparent)}.topo__node--unknown .topo__box{stroke-dasharray:5 4;fill:color-mix(in srgb, var(--topo-node) 60%, transparent)}.topo__box--group{fill:#38bdf80a;stroke:#38bdf84d;stroke-dasharray:4 4}.topo__group-title{fill:var(--topo-muted);font:600 8.5px var(--font-sans);letter-spacing:.06em}.topo__tile{fill:color-mix(in srgb, var(--role) 15%, transparent)}.topo__glyph path{fill:none;stroke:var(--role);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.topo__q{fill:var(--topo-muted);font:600 13px var(--font-sans)}.topo__label{fill:var(--topo-text);font:600 11.5px var(--font-sans)}.topo__detail{fill:var(--topo-muted);font:400 8.5px var(--font-mono)}.topo__pin{fill:var(--topo-muted)}.role--router{--role:#22c55e}.role--switch{--role:#a78bfa}.role--l3switch{--role:#22d3ee}.role--firewall{--role:#f59e0b}.role--unknown{--role:#a1a1aa}.role--lan{--role:#38bdf8}.is-dim{opacity:.38}.topo__link{cursor:pointer;transition:opacity var(--dur-med) ease}.topo__hit{fill:none;stroke:#0000;stroke-width:14px}.topo__wire{fill:none;stroke:var(--topo-wire);stroke-width:1.1px;stroke-linejoin:round;stroke-linecap:round;transition:stroke var(--dur-fast) ease}.topo__link.is-down .topo__wire{stroke:color-mix(in srgb, var(--down) 45%, transparent)}.topo__link--lan .topo__wire{stroke:#38bdf84d}.topo__link.is-strong .topo__wire{stroke:color-mix(in srgb, var(--c-ink) 55%, transparent)}.topo__flow{fill:none;stroke:var(--flow);stroke-width:1.1px;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:2 13;opacity:.85;pointer-events:none;animation:1.5s linear infinite topo-flow}.topo--still .topo__flow{display:none}.topo__tag rect{fill:var(--topo-tag);stroke:var(--topo-line)}.topo__tag text{fill:var(--topo-muted);font:400 8px var(--font-mono)}.topo__link.is-strong .topo__tag text{fill:var(--topo-text)}.topo__link.is-down .topo__tag text{fill:#fca5a5}.topo__iface{fill:var(--topo-text);font:500 8px var(--font-mono);paint-order:stroke;stroke:var(--c-bg);stroke-width:3px}.topo__led.is-up{fill:var(--up);filter:drop-shadow(0 0 2.5px var(--up)) drop-shadow(0 0 6px #22c55e73);animation:2s step-end infinite topo-led}.topo__led.is-down{fill:var(--down);filter:drop-shadow(0 0 2.5px var(--down)) drop-shadow(0 0 6px #ef444466)}.topo__led.is-unknown{fill:none;stroke:var(--topo-muted);stroke-width:1.2px}.topo--still-leds .topo__led.is-up{animation:none}.glass{background:color-mix(in srgb, var(--c-surface) 70%, transparent);border:1px solid var(--c-glass-line-strong);-webkit-backdrop-filter:blur(14px)saturate(1.5);backdrop-filter:blur(14px)saturate(1.5);box-shadow:0 10px 30px #0000002e}.topo__tools{top:var(--space-3);border-radius:var(--radius-md);align-items:center;gap:2px;padding:3px;display:flex;position:absolute;inset-inline-end:var(--space-3)}.topo__tools button{min-width:30px;height:30px;padding:0 var(--space-2);border-radius:var(--radius-sm);color:var(--c-ink);cursor:pointer;transition:background-color var(--dur-fast) ease;background:0 0;border:0;font-size:12.5px;font-weight:600}.topo__tools button:hover,.topo__tools button[aria-expanded=true]{background:var(--c-sunk)}.topo__tools .topo__info-btn{border:1.5px solid var(--c-line-strong);border-radius:50%;width:26px;min-width:26px;height:26px;margin:0 2px;font:italic 700 12px Georgia,serif}.topo__zoom{text-align:center;min-width:40px;font:500 11px var(--font-mono);color:var(--c-muted)}.topo__sep{background:var(--c-line);width:1px;height:18px;margin:0 3px}.topo__menu{position:relative}.topo__pop{top:calc(100% + 8px);z-index:5;min-width:220px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);gap:var(--space-2);animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex;position:absolute;inset-inline-end:0}.topo__pop-title{letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);font-size:10.5px;font-weight:700}.topo__check{align-items:center;gap:var(--space-2);cursor:pointer;font-size:12.5px;display:flex}.topo__check input{width:15px;height:15px;accent-color:var(--c-ink)}.topo__legend{min-width:260px}.topo__lg-row{align-items:center;gap:var(--space-3);font-size:12.5px;display:flex}.lg-wire{stroke:var(--topo-wire);stroke-width:1.3px}.lg-flow{stroke:var(--flow);stroke-width:1.3px;stroke-dasharray:2 7}.lg-down{stroke:color-mix(in srgb, var(--down) 55%, transparent);stroke-width:1.3px}.lg-up{fill:var(--up);filter:drop-shadow(0 0 3px var(--up))}.lg-off{fill:var(--down);filter:drop-shadow(0 0 3px var(--down))}.lg-unk{fill:none;stroke:var(--topo-muted);stroke-width:1.2px}.lg-pin{fill:var(--topo-muted)}.topo__skipped,.topo__draft{bottom:var(--space-3);padding:6px var(--space-3);border-radius:var(--radius-md);color:var(--c-muted);font-size:11.5px;position:absolute;inset-inline-start:var(--space-3)}.topo__draft{top:var(--space-3);color:var(--c-draft-fg);animation:noto-pop var(--dur-med) var(--ease-out) both;bottom:auto}.dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.dot--up{background:#22c55e;box-shadow:0 0 6px #22c55eb3}.dot--down{background:#ef4444;box-shadow:0 0 6px #ef4444b3}.dot--unknown{border:1.5px solid var(--c-muted)}.topo__info{bottom:var(--space-3);width:270px;padding:var(--space-4);border-radius:var(--radius-lg);align-items:flex-start;gap:var(--space-2);animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex;position:absolute;inset-inline-end:var(--space-3)}.topo__info-title{font-size:13.5px;font-weight:700}.topo__info-sub,.topo__info-line{font:500 11px var(--font-mono);color:var(--c-muted)}.topo__info-hint{color:var(--c-muted);font-size:12px}.topo__end{align-items:center;gap:var(--space-2);grid-template-columns:auto auto 1fr;width:100%;font-size:12px;display:grid}.topo__end>span{font-family:var(--font-mono);color:var(--c-muted);justify-self:end;font-size:11px}.topo--empty{justify-content:center;align-items:center;gap:var(--space-2);text-align:center;color:var(--c-muted);flex-direction:column;font-size:13px;display:flex}.topo--empty strong{color:var(--c-ink);font-size:15px}.topo__empty-icon{width:56px;height:56px;margin-bottom:var(--space-2);border-radius:var(--radius-lg);background:#22c55e24;justify-content:center;align-items:center;display:flex}.topo__empty-icon path{fill:none;stroke:#22c55e;stroke-width:2px;stroke-linecap:round}@keyframes topo-in{0%{opacity:0;translate:0 8px}}@keyframes topo-flow{to{stroke-dashoffset:-30px}}@keyframes topo-led{0%{opacity:1}9%{opacity:.55}13%{opacity:1}47%{opacity:.6}51%{opacity:1}78%{opacity:.65}81%{opacity:1}}:root[data-motion=reduced] .topo__flow,:root[data-motion=reduced] .topo__node,:root[data-motion=reduced] .topo__led{animation:none}@media (prefers-reduced-motion:reduce){.topo__flow,.topo__node,.topo__led{animation:none}}.topo__leds .is-dim{opacity:.38}.topo__warn{top:var(--space-3);padding:6px var(--space-3);border-radius:var(--radius-md);color:var(--c-draft-fg);white-space:nowrap;text-overflow:ellipsis;max-width:60%;font-size:11.5px;position:absolute;inset-inline-start:50%;overflow:hidden;translate:-50%}.topo__link--mpls .topo__wire{stroke:#a78bfa99}.topo__link--mpls .topo__flow{stroke:#c4b5fd}.lg-mpls{stroke:#a78bfab3;stroke-width:1.6px}.topo__prob circle,.lg-prob{fill:#ef4444;stroke:var(--c-bg);stroke-width:2px}.topo__prob text{fill:#fff;font:700 8.5px var(--font-sans)}.topo__link--external .topo__wire{stroke:color-mix(in srgb, var(--ext) 70%, transparent)}.topo__link--external .topo__tag text{fill:var(--ext)}.lg-ext{stroke:var(--ext);stroke-width:1.6px}.topo__pin,.lg-pin{fill:var(--topo-muted)}.topo{--ext:#fb923c}:root[data-theme=light] .topo{--topo-node:#fff;--topo-line:#d4d4d8;--topo-wire:#a1a1aa;--topo-text:#09090b;--topo-muted:#52525b;--topo-tag:#fff;--up:#16a34a;--down:#dc2626;--flow:#0ea5e9;--ext:#c2410c;background:radial-gradient(circle,#d4d4d8 1px,#0000 1.4px) 0 0/20px 20px,#fafafa}:root[data-theme=light] .topo__node:hover .topo__box,:root[data-theme=light] .topo__node.is-selected .topo__box{stroke:#52525b}:root[data-theme=light] .role--router{--role:#15803d}:root[data-theme=light] .role--switch{--role:#6d28d9}:root[data-theme=light] .role--l3switch{--role:#0e7490}:root[data-theme=light] .role--firewall{--role:#b45309}:root[data-theme=light] .role--unknown{--role:#52525b}:root[data-theme=light] .role--lan{--role:#0369a1}:root[data-theme=light] .topo__tile{fill:color-mix(in srgb, var(--role) 12%, #fff)}:root[data-theme=light] .topo__link--mpls .topo__wire{stroke:#7c3aed}:root[data-theme=light] .topo__link--mpls .topo__flow{stroke:#6d28d9}:root[data-theme=light] .topo__box--group{fill:#f0f9ff;stroke:#7dd3fc}:root[data-theme=light] .topo__led.is-up{filter:none}:root[data-theme=light] .topo__iface{stroke:#fafafa}.topo__checks{min-width:320px;max-width:380px;max-height:60vh;overflow-y:auto}.topo__check-item{gap:var(--space-2);text-align:start;grid-template-columns:10px 1fr;line-height:1.45;display:grid;padding:6px var(--space-2)!important;height:auto!important;font-size:12px!important;font-weight:500!important}.topo__ok{color:var(--c-ok-fg);font-size:12.5px}.topo__count{background:#f59e0b40;border-radius:5px;margin-inline-start:6px;padding:0 5px;font-size:10px}.topo__count--error{background:#ef444447}:root[data-theme=light] .topo__flow{stroke-width:2.2px;stroke-dasharray:3 12;opacity:1;filter:drop-shadow(0 0 2px #0ea5e98c)}:root[data-theme=light] .topo__link--external .topo__wire{stroke:#fb923c}:root[data-theme=light] .topo__iface{fill:#3f3f46;stroke:#fafafa}.topo__physical.is-ghost{opacity:.14;transition:opacity var(--dur-med) ease}.topo__ov{--ov:#f59e0b;cursor:pointer}.topo__ov--tunnel{--ov:#ec4899}.topo__ov--l2vpn{--ov:#14b8a6}.topo__ov-hit{fill:none;stroke:#0000;stroke-width:12px}.topo__ov-line{fill:none;stroke:color-mix(in srgb, var(--ov) 70%, transparent);stroke-width:1.5px;stroke-dasharray:6 5;filter:drop-shadow(0 0 3px color-mix(in srgb, var(--ov) 45%, transparent))}.topo__ov-flow{fill:none;stroke:var(--ov);stroke-width:2.4px;stroke-linecap:round;stroke-dasharray:1 22;pointer-events:none;animation:2.2s linear infinite topo-flow}.topo--still .topo__ov-flow{display:none}.topo__ov-tag rect{fill:color-mix(in srgb, var(--ov) 16%, var(--topo-tag));stroke:color-mix(in srgb, var(--ov) 60%, transparent)}.topo__ov-tag text{fill:var(--ov);font:600 8.5px var(--font-mono)}.topo__ov.is-dim{opacity:.15}.topo__ov.is-strong .topo__ov-line{stroke-width:2.4px;stroke:var(--ov)}:root[data-theme=light] .topo__ov{--ov:#d97706}:root[data-theme=light] .topo__ov--tunnel{--ov:#db2777}:root[data-theme=light] .topo__ov--l2vpn{--ov:#0d9488}.topo__more{fill:var(--c-muted);font-style:italic}.topo__node--lan{cursor:pointer}.topo__layers{background:color-mix(in srgb, var(--c-ink) 6%, transparent);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.topo__tools .topo__layer{height:24px;color:var(--c-muted);border-radius:6px;padding:0 8px;font-size:11.5px;font-weight:600}.topo__tools .topo__layer[aria-pressed=true]{background:var(--c-surface);color:var(--c-ink);box-shadow:0 1px 3px #00000040}.topo__layer--virtual[aria-pressed=true]{color:#f59e0b!important}.lg-ov{fill:none;stroke-width:1.6px;stroke-dasharray:4 3}.lg-ov--bgp{stroke:#f59e0b}.lg-ov--tunnel{stroke:#ec4899}.lg-ov--l2vpn{stroke:#14b8a6}.editor{gap:var(--space-3);flex-direction:column;display:flex}.editor__note{color:var(--c-muted);align-items:flex-start;gap:var(--space-3);flex-direction:column;font-size:13px;display:flex}.editor__body{gap:var(--space-3);flex-direction:column;display:flex}:root[dir=rtl] .editor__back{display:inline-flex;transform:scaleX(-1)}.titlechip,.extchip{height:var(--control-h);border-radius:var(--radius-md);font-family:var(--font-sans);color:var(--c-ink);transition:background-color var(--dur-fast) ease;border:0;align-items:center;font-size:15px;display:inline-flex}.titlechip{min-width:0;max-width:min(520px,42vw);padding:0 var(--space-3);background:color-mix(in srgb, var(--c-ink) 8%, transparent);cursor:text;flex-shrink:1;font-weight:700;overflow:hidden}.titlechip:hover,.extchip:hover,.extchip:focus-within{background:color-mix(in srgb, var(--c-ink) 12%, transparent)}.titlechip__text{white-space:nowrap;display:inline-block}.titlechip__text.is-marquee{animation:11s ease-in-out infinite title-marquee}.titlechip:has(.is-marquee){-webkit-mask:linear-gradient(90deg,#0000,#000 10px calc(100% - 14px),#0000);mask:linear-gradient(90deg,#0000,#000 10px calc(100% - 14px),#0000)}@keyframes title-marquee{0%,18%{transform:translate(0)}50%,68%{transform:translateX(var(--shift))}to{transform:translate(0)}}:root[data-motion=reduced] .titlechip__text.is-marquee{animation:none}.titlechip--editing input{height:var(--control-h);font:inherit;color:inherit;background:0 0;border:0;outline:none;padding:0}.extchip{padding:0 var(--space-3) 0 var(--space-2);background:color-mix(in srgb, var(--c-ink) 5%, transparent);color:var(--c-muted);flex-shrink:0;font-weight:500}.extchip input{width:auto;height:100%;font:inherit;color:inherit;background:0 0;border:0;outline:none;padding:0}.extchip input:focus{color:var(--c-ink)}.savebtn{gap:var(--space-2);font-weight:600}.savebtn:disabled{opacity:1;cursor:default}.savebtn__dot{background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.savebtn--draft .savebtn__dot{background:#f5b324;box-shadow:0 0 8px #f5b324}.savebtn--saved .savebtn__dot{background:#22c55e;box-shadow:0 0 8px #22c55ecc}.savebtn--saving .savebtn__dot{background:#3b82f6;animation:.9s ease-in-out infinite savebtn-pulse}@keyframes savebtn-pulse{50%{opacity:.3}}.fmtbar{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.tools__end{gap:2px;margin-inline-start:auto;display:flex}.fmt{min-width:32px;height:32px;padding:0 var(--space-2);border-radius:var(--radius-sm);color:var(--c-ink);justify-content:center;align-items:center;gap:var(--space-2);cursor:pointer;transition:background-color var(--dur-fast) ease, transform var(--dur-fast) var(--ease-out);background:0 0;border:0;font-size:14px;display:inline-flex;position:relative}.fmt:hover:not(:disabled){background:var(--c-sunk)}.fmt:active:not(:disabled){transform:scale(.94)}.fmt[aria-expanded=true]{background:var(--c-sunk)}.fmt[aria-pressed=true]{color:var(--c-ink);background:var(--c-pressed-bg);box-shadow:inset 0 2px 6px var(--c-pressed-shadow), inset 0 0 0 1px var(--c-pressed-ring)}.fmt:disabled{opacity:.35;cursor:default}.fmt--text,.fmt--wide{font-size:12px;font-weight:600}.fmt__sep{width:1px;height:18px;margin:0 var(--space-2);background:var(--c-line)}.select select{height:32px;padding:0 var(--space-6) 0 var(--space-3);border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-surface);cursor:pointer;font-size:12px;font-weight:600}.editor__restore,.editor__error{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);flex-wrap:wrap;margin:0;font-size:13px;display:flex}.editor__restore{background:var(--c-draft-bg);color:var(--c-draft-fg)}.editor__error{background:var(--c-warn-bg);color:var(--c-warn-fg)}.code-editor{border-radius:var(--radius-lg);border:1px solid var(--c-code-line);min-height:65vh;overflow:hidden}.code-editor .cm-editor{min-height:65vh}.codelayout{--panel-w:380px;align-items:flex-start;gap:0;display:flex}.codelayout__main{flex:auto;min-width:0}.codelayout__main--split{gap:var(--space-3);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.compare__side{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.compare__label{color:var(--c-muted);font-size:12px;font-weight:600}.panelresizer{cursor:col-resize;touch-action:none;flex:0 0 16px;justify-content:center;align-self:stretch;max-height:calc(100vh - 140px);display:flex;position:sticky;top:120px}.panelresizer:before{content:"";background:var(--c-line-strong);width:3px;height:48px;transition:background-color var(--dur-fast) ease, height var(--dur-fast) ease;border-radius:2px;margin-top:40vh}.panelresizer:hover:before,.panelresizer:focus-visible:before,.panelresizer:active:before{background:var(--c-ink);height:96px}.panelresizer:focus-visible{outline:none}.codepanel{flex:0 0 var(--panel-w);gap:var(--space-2);min-width:0;height:calc(100vh - 140px);padding:var(--space-2);box-sizing:border-box;border:1px solid var(--c-glass-line-strong);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--c-surface) 72%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);backdrop-filter:blur(16px)saturate(1.4);flex-direction:column;display:flex;position:sticky;top:120px;overflow:hidden}.codepanel__chips{flex-shrink:0;gap:4px;display:flex}.codepanel__chip{flex:1}.codepanel__empty{padding:var(--space-4)}.codepanel__section{border-radius:var(--radius-md);background:color-mix(in srgb, var(--c-bg) 55%, transparent);border:1px solid var(--c-line);min-height:120px;animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;flex:1 1 0;display:flex;overflow:hidden}.codepanel__body{padding:var(--space-3) var(--space-4);flex:1;overflow-y:auto}.dropzone{min-height:110px;padding:var(--space-4);border:1.5px dashed var(--c-line-strong);border-radius:var(--radius-md);justify-content:center;align-items:center;gap:var(--space-1);text-align:center;color:var(--c-muted);cursor:pointer;transition:border-color var(--dur-fast) ease, background-color var(--dur-fast) ease;flex-direction:column;font-size:12.5px;display:flex}.dropzone strong{color:var(--c-ink);font-size:13px}.dropzone.is-over,.dropzone:focus-visible{border-color:var(--c-ink);background:color-mix(in srgb, var(--c-ink) 5%, transparent);outline:none}.codewrap{align-items:flex-start;gap:6px;display:flex}.codewrap .code-editor{flex:1;min-width:0}.codewrap .minimap{flex:0 0 64px;height:calc(100vh - 140px);min-height:200px;padding:8px 6px;position:sticky;top:120px}.notespane{height:calc(100vh - 140px);gap:var(--space-2);padding:var(--space-3);box-sizing:border-box;border:1px solid var(--c-glass-line-strong);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--c-surface) 72%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);backdrop-filter:blur(16px)saturate(1.4);animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;flex:0 0 300px;margin-inline-start:var(--space-3);display:flex;position:sticky;top:120px}.notespane__head{align-items:center;gap:var(--space-2);min-height:26px;display:flex}.notespane__title{letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);font-size:11px;font-weight:700}.notespane__state{color:var(--c-muted);align-items:center;gap:5px;font-size:11px;display:inline-flex}.notespane__state:before{content:"";width:6px;height:6px;transition:background var(--dur-med) ease;background:#22c55e;border-radius:50%}.notespane__state--saving:before{background:#f5b324}.notespane__state--error{color:var(--c-warn-fg)}.notespane__state--error:before{background:#ef4444}.notespane__grow{flex:1}.notespane__btn{width:24px;height:24px;color:var(--c-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;font-size:16px;line-height:1;display:inline-grid}.notespane__btn:hover{background:var(--c-sunk);color:var(--c-ink)}.notespane textarea{resize:none;padding:2px var(--space-3);border:1px solid var(--c-glass-line);border-radius:var(--radius-md);background:linear-gradient(to bottom, transparent calc(100% - 1px), color-mix(in srgb, var(--c-ink) 7%, transparent) 0) 0 2px / 100% 1.6em repeat local, color-mix(in srgb, var(--c-bg) 55%, transparent);color:var(--c-ink);font:13.5px/1.6 var(--font-sans);transition:border-color var(--dur-fast) ease;outline:none;flex:1}.notespane textarea:focus{border-color:var(--c-line-strong)}.notespane textarea::placeholder{color:var(--c-muted);opacity:.7}.notespane__foot{color:var(--c-muted);text-align:end;font-variant-numeric:tabular-nums;font-size:11px}.codebar{flex:1;gap:4px}.codebar__grow{flex:1}.minimap{border-radius:var(--radius-md);background:var(--c-code-bg);padding:var(--space-3);cursor:pointer;touch-action:none;position:relative;overflow:hidden}.minimap__lines{align-items:center;height:100%;display:grid}.minimap__line{background:var(--c-tok-kw);opacity:.55;border-radius:1px;height:max(1px,60%);max-height:3px;display:block}.minimap__line--comment{background:var(--c-tok-com)}.minimap__frame{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--c-ink) 8%, transparent);border:1.5px solid color-mix(in srgb, var(--c-ink) 55%, transparent);pointer-events:none;min-height:14px;transition:top var(--dur-fast) ease;position:absolute;left:4px;right:4px}@media (width<=900px){.codelayout{gap:var(--space-4);flex-wrap:wrap}.codelayout__main,.codepanel{flex:100%}.codepanel,.notespane{height:auto;min-height:320px;position:static}.notespane{flex:100%;margin:0}.codewrap .minimap,.panelresizer{display:none}.codelayout__main--split{grid-template-columns:minmax(0,1fr)}}.codepanel__count{min-width:16px;height:16px;color:var(--c-draft-fg);background:#fbbf2438;border-radius:5px;justify-content:center;align-items:center;margin-inline-start:6px;padding:0 4px;font-size:10px;font-weight:700;display:inline-flex}.codepanel__count--error{color:var(--c-warn-fg);background:#f8717138}.devpane{gap:var(--space-2);border:1px solid var(--c-card-line);border-radius:var(--radius-xl);background:var(--c-card);min-width:0;height:calc(100vh - 150px);padding:var(--space-3);box-sizing:border-box;animation:devpane-in .32s var(--ease-out) both;flex-direction:column;display:flex}.devpane__head{align-items:center;gap:var(--space-2);min-height:34px;display:flex}.devpane__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-inline-start:var(--space-1);font-size:14px;font-weight:700;overflow:hidden}.devpane__lang{background:color-mix(in srgb, var(--c-ink) 7%, transparent);color:var(--c-muted);border-radius:6px;flex-shrink:0;padding:2px 8px;font-size:11px}.devpane__grow{flex:1}.devpane__code{border-radius:var(--radius-lg);flex:1;min-height:0;overflow:auto}.devpane__code .cm-editor{min-height:100%}.devpane__note{color:var(--c-muted);font-size:13px}@keyframes devpane-in{0%{opacity:0;translate:-24px}}:root[dir=rtl] .devpane{animation-name:devpane-in-rtl}@keyframes devpane-in-rtl{0%{opacity:0;translate:24px}}:root[data-motion=reduced] .devpane{animation:none}.appbar{z-index:30;border-bottom:1px solid var(--c-glass-line);position:sticky;top:0}.appbar:before{content:"";z-index:-1;background:color-mix(in srgb, var(--c-bg) 42%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.6);backdrop-filter:blur(18px)saturate(1.6);position:absolute;inset:0}.appbar__row,.appbar__tools{max-width:1400px;padding:0 var(--space-5);gap:var(--space-2);margin:0 auto}.appbar__row{grid-template-columns:minmax(max-content,1fr) minmax(0,max-content) minmax(max-content,1fr);align-items:center;min-height:58px;display:grid}.appbar__tools{border-top:1px solid var(--c-glass-line);min-height:46px;animation:noto-pop var(--dur-med) var(--ease-out) both;flex-wrap:wrap;align-items:center;display:flex}.appbar__tools:empty{display:none}.appbar__start,.appbar__end,.appbar__slot{align-items:center;gap:var(--space-2);display:flex}.appbar__main{justify-content:center;align-items:center;gap:var(--space-2);min-width:0;display:flex}.appbar__end{justify-content:flex-end}.appbar__slot:empty{display:none}.appbar__slot--start:before{content:"";background:var(--c-glass-line-strong);width:1px;height:22px;margin:0 var(--space-1)}.appbar__divider{background:var(--c-glass-line-strong);width:1px;height:22px;margin:0 var(--space-1)}.appbar .btn{background:var(--c-glass);border-color:var(--c-glass-line-strong)}.appbar .btn:hover:not(:disabled){border-color:var(--c-ink)}.appbar .btn[aria-pressed=true],.appbar .btn[aria-expanded=true]{background:var(--c-invert-bg);border-color:var(--c-invert-bg)}.appbar__account{border-radius:50%!important}.appbar{--control-h:34px;--control-h-sm:34px}.logo{height:var(--control-h);align-items:center;padding-inline-end:var(--space-2);display:flex}.logo__img{width:auto;height:20px}.logo__img--night,:root[data-theme=dark] .logo__img--day{display:none}:root[data-theme=dark] .logo__img--night{display:block}.shell{max-width:1400px;padding:var(--space-6) var(--space-5) var(--space-7);margin:0 auto}@media (width<=720px){.appbar__row{padding-block:var(--space-2);row-gap:var(--space-2);grid-template-columns:max-content 1fr}.appbar__main{grid-area:2/1/auto/-1;justify-content:flex-start;overflow-x:auto}.appbar__install{display:none}.shell{padding:var(--space-4)}}.about{width:min(420px,100vw - 32px);padding:var(--space-6);border:1px solid var(--c-line);border-radius:var(--radius-xl);background:var(--c-surface);color:var(--c-ink);box-shadow:var(--shadow-pop)}.about[open]{gap:var(--space-4);animation:noto-pop var(--dur-med) var(--ease-out) both;flex-direction:column;display:flex}.about::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000059}.about__head{align-items:center;gap:var(--space-3);display:flex}.about__logo{width:auto;height:26px}.about__version{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--c-invert-bg);color:var(--c-invert-fg);font-family:var(--font-mono);font-size:11px}.about__tagline{color:var(--c-muted);margin:0;font-size:14px}.about__card{align-items:center;gap:var(--space-4);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--c-sunk);font-size:13px;display:flex}.about__card a{color:var(--c-ink)}.about__avatar{border-radius:var(--radius-md);background:var(--c-invert-bg);width:44px;height:44px;color:var(--c-invert-fg);justify-content:center;align-items:center;font-weight:700;display:flex}.about__name{font-size:15px;font-weight:600}.about__muted{color:var(--c-muted);margin:0;font-size:12px}.palette{width:min(640px,100vw - 32px);color:var(--c-ink);background:0 0;border:0;margin-top:12vh;padding:0}.palette::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000059}.palette__box{border:1px solid var(--c-glass-line-strong);border-radius:var(--radius-xl);background:color-mix(in srgb, var(--c-surface) 82%, transparent);-webkit-backdrop-filter:blur(22px)saturate(1.5);backdrop-filter:blur(22px)saturate(1.5);box-shadow:var(--shadow-pop);animation:noto-pop var(--dur-med) var(--ease-out) both;overflow:hidden}.palette__input{align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--c-line);color:var(--c-muted);display:flex}.palette__input input{height:52px;color:var(--c-ink);background:0 0;border:0;outline:none;flex:1;font-size:15px}.palette__input kbd{border:1px solid var(--c-line);font:10.5px var(--font-mono);border-radius:5px;padding:2px 6px}.palette__list{padding:var(--space-2);max-height:50vh;margin:0;list-style:none;overflow-y:auto}.palette__list button{gap:2px var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--c-ink);text-align:start;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 1fr;display:grid}.palette__list [aria-selected=true] button{background:var(--c-pressed-bg);box-shadow:inset 0 0 0 1px var(--c-pressed-ring)}.palette__name{font-size:13.5px;font-weight:600}.palette__net{color:var(--c-muted);justify-self:end;font-size:11.5px}.palette__line{font:11.5px var(--font-mono);color:var(--c-muted);white-space:nowrap;text-overflow:ellipsis;grid-column:1/-1;overflow:hidden}.palette__line b{color:var(--c-ink);font-weight:600}.palette__empty{padding:var(--space-4);color:var(--c-muted);font-size:13px}.appbar__kbd{font:10px var(--font-mono);color:var(--c-muted)}
