*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.\!visible{visibility:visible!important}.visible{visibility:visible}.m-0{margin:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-2{margin-left:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.w-fit{width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.self-center{align-self:center}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg:#f3f6fb;--panel:#fff;--line:#d7e1ef;--muted:#5b6b82;--ink:#0c1b33;--accent:#1d4ed8;--accent-dark:#163ea8;--danger:#b42318;--gold:#c9962c;--glass:#3ec8ff;--sidebar-bg:#071433;--sidebar-ink:#f4f8ff;--sidebar-muted:#9db0cc;--sidebar-line:#ffffff1a;--sidebar-active:#3ec8ff24}html[data-theme=dark]{--bg:#07111f;--panel:#0f1c2e;--line:#24364d;--muted:#8b9bb3;--ink:#e8eef8;--accent:#4ea2ff;--accent-dark:#7ec4ff;--danger:#f87171;--gold:#e0b34a;--glass:#5ed4ff;--sidebar-bg:#050d1c;--sidebar-ink:#f4f8ff;--sidebar-muted:#8aa0bd;--sidebar-line:#ffffff14;--sidebar-active:#4ea2ff29}html[data-theme=dark] .card,html[data-theme=dark] .session-card,html[data-theme=dark] .dashboard-user-card,html[data-theme=dark] .router-status-panel{background:var(--panel)}html[data-theme=dark] .session-card-facts,html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{color:var(--ink);border-color:var(--line);background:#0c1828}html[data-theme=dark] .btn{color:var(--ink);border-color:var(--line);background:#15263a}html[data-theme=dark] .icon-chip,html[data-theme=dark] .router-status-item,html[data-theme=dark] .schedule-template-item,html[data-theme=dark] .schedule-user-pick-item{background:#0c1828}body{background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;transition:background-color .16s,color .16s}.traffic-history-panel{padding:16px}.graph-router-tabs{scrollbar-width:thin;align-items:center;gap:6px;padding:2px 0 10px;display:flex;overflow-x:auto}.graph-router-tabs>span{color:var(--muted);text-transform:uppercase;flex:none;align-items:center;gap:5px;margin-right:4px;font-size:11px;font-weight:800;display:inline-flex}.graph-router-tabs button{border:1px solid var(--line);background:var(--panel);min-height:38px;color:var(--muted);cursor:pointer;border-radius:6px;flex:none;padding:0 14px;font-size:13px;font-weight:600}.graph-router-tabs button.is-active{border-color:var(--accent);background:var(--accent);color:#fff}.graph-overview{margin-bottom:16px}.graph-overview-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.graph-overview-tools>span{color:var(--muted);font-size:11px;font-weight:700}.graph-ops{background:var(--bg);border-bottom:1px solid var(--line);z-index:16;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:-8px 0 14px;padding:8px 0;display:flex;position:sticky;top:0}.graph-ops-title{letter-spacing:-.02em;margin:0;font-size:16px;font-weight:800}.graph-actions{flex-wrap:nowrap;align-items:center;gap:8px;margin-left:auto;display:flex}.graph-actions .btn{flex:none;justify-content:center;align-items:center;gap:6px;min-width:38px;height:38px;padding:0 12px}.graph-stack{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.graph-setup{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.graph-setup strong{font-size:13px;display:block}.graph-setup p{color:var(--muted);margin:3px 0 0;font-size:12px;line-height:1.45}.graph-filter{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:3px;display:flex}.graph-filter button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:30px;padding:0 10px;font-size:11px;font-weight:700}.graph-filter button.is-active{background:var(--panel);color:var(--ink);box-shadow:0 0 0 1px var(--line)}.graph-actions .spin{animation:.8s linear infinite topology-refresh-spin}@media (max-width:680px){.graph-overview-tools{justify-content:stretch}.graph-filter{flex:100%}.graph-setup{flex-direction:column;align-items:stretch}.graph-setup .btn{justify-content:center}.graph-ops .traffic-range{flex:100%}}.device-card-grid{gap:10px;display:grid}.device-card-grid.layout-auto{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr))}.device-card-grid.layout-2{grid-template-columns:repeat(2,minmax(0,1fr))}.device-card-grid.layout-3{grid-template-columns:repeat(3,minmax(0,1fr))}.device-card-grid.layout-4{grid-template-columns:repeat(4,minmax(0,1fr))}.device-overview-card{background:var(--panel);border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;border-radius:8px;gap:10px;min-width:0;padding:13px;display:grid}.device-overview-card:hover{border-color:#1d4ed880}.device-overview-card.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.device-card-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;display:grid}.device-card-icon{color:var(--accent);background:#1d4ed81a;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.device-card-identity{min-width:0;display:grid}.device-card-identity strong,.device-card-identity small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.device-card-identity strong{font-size:13px}.device-card-identity small{color:var(--muted);font-size:10px}.device-card-status{color:var(--muted);text-transform:uppercase;font-size:9px;font-weight:800}.device-card-status:before{content:"";background:#94a3b8;border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.device-card-status.is-online{color:#15803d}.device-card-status.is-online:before{background:#22c55e}.device-card-status.is-need-api{color:#a16207}.device-card-status.is-need-api:before{background:#f59e0b}.device-card-resources{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;display:grid}.device-card-resources>span{background:var(--bg);border:1px solid var(--line);color:var(--muted);border-radius:5px;align-items:center;gap:3px;min-width:0;padding:5px;font-size:9px;display:flex}.device-card-resources strong{color:var(--ink);margin-left:auto}.device-card-sparkline{background:var(--bg);border-radius:5px;width:100%;height:64px;display:block}.device-card-sparkline line{stroke:var(--line);stroke-width:1px}.device-card-sparkline path{fill:none;stroke-width:2px;vector-effect:non-scaling-stroke}.device-card-sparkline path.is-rx{stroke:#1d4ed8}.device-card-sparkline path.is-tx{stroke:#2563eb}.device-card-empty{background:var(--bg);color:var(--muted);border-radius:5px;justify-content:center;align-items:center;height:64px;font-size:10px;display:flex}.device-card-footer{align-items:center;gap:9px;min-width:0;display:flex}.device-card-footer>span{align-items:center;gap:3px;font-size:10px;font-weight:700;display:inline-flex}.device-card-footer>span:first-child{color:#1d4ed8}.device-card-footer>span:nth-child(2){color:#2563eb}.device-card-footer time{color:var(--muted);margin-left:auto;font-size:9px}@media (max-width:1100px){.device-card-grid.layout-3,.device-card-grid.layout-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.device-card-grid.layout-2,.device-card-grid.layout-3,.device-card-grid.layout-4{grid-template-columns:minmax(0,1fr)}.device-card-resources{display:none}.device-card-sparkline,.device-card-empty{height:48px}.device-overview-card{gap:8px;padding:11px}}.traffic-history-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.traffic-history-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.traffic-history-controls select,.traffic-interface-badge{background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:8px;min-height:38px;padding:7px 10px;font-size:12px;font-weight:700}.traffic-interface-badge{align-items:center;display:inline-flex}.traffic-history-head .router-status-title{align-items:center;gap:7px;display:flex}.traffic-range{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:3px;display:flex}.traffic-range button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:30px;padding:5px 9px;font-size:11px;font-weight:700}.traffic-range button.is-active{background:var(--panel);color:var(--accent);box-shadow:0 1px 3px #0f1f2a1f}.traffic-history-chart{width:100%;height:200px;display:block;overflow:visible}.traffic-history-plot{grid-template-columns:62px minmax(0,1fr);gap:10px;display:grid}.traffic-history-canvas,.resource-chart-canvas{min-width:0;position:relative}.graph-hover-line{background:var(--accent);opacity:.55;pointer-events:none;width:1px;position:absolute;top:0;bottom:22px}.graph-hover-tip{background:var(--panel);border:1px solid var(--line);pointer-events:none;white-space:nowrap;z-index:2;border-radius:8px;gap:2px;padding:8px 10px;font-size:11px;font-weight:700;display:grid;position:absolute;top:8px;box-shadow:0 10px 24px #0c1b331f}.graph-hover-tip b{color:var(--muted);font-size:10px}.graph-hover-tip span{font-variant-numeric:tabular-nums}.traffic-history-y-axis{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;flex-direction:column;justify-content:space-between;padding:13px 0 3px;font-size:10px;font-weight:700;display:flex}.traffic-history-x-axis{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;padding-top:5px;font-size:10px;font-weight:600;display:flex}.traffic-history-grid{stroke:var(--line);stroke-width:1px;vector-effect:non-scaling-stroke}.traffic-history-line{stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;vector-effect:non-scaling-stroke}.traffic-history-area{opacity:.08}.traffic-history-line.is-rx,.traffic-history-legend .is-rx{color:#1d4ed8;stroke:#1d4ed8}.traffic-history-line.is-tx,.traffic-history-legend .is-tx{color:#2563eb;stroke:#2563eb}.traffic-history-legend{flex-wrap:wrap;align-items:center;gap:14px;margin-top:8px;font-size:12px;font-weight:700;display:flex}.traffic-history-legend span{align-items:center;gap:4px;display:inline-flex}.traffic-history-peak{color:var(--muted);margin-left:auto}@media (max-width:640px){.traffic-history-head{flex-direction:column;align-items:stretch}.traffic-range{grid-template-columns:repeat(4,1fr);display:grid}.traffic-history-controls{align-items:stretch;display:grid}.traffic-history-chart{height:160px}.traffic-history-plot{grid-template-columns:52px minmax(0,1fr);gap:7px}.traffic-history-y-axis,.traffic-history-x-axis{font-size:9px}.traffic-history-peak{width:100%;margin-left:0}}.graph-settings-layout{gap:16px;display:grid}.graph-settings-section{padding:20px}.graph-settings-heading{align-items:center;gap:11px;margin-bottom:18px;display:flex}.graph-settings-heading h2{margin:1px 0 0;font-size:16px;font-weight:800}.graph-settings-icon{color:var(--accent);background:#1d4ed81a;border:1px solid #1d4ed82e;border-radius:8px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.graph-selected-count{background:var(--bg);border:1px solid var(--line);color:var(--muted);border-radius:999px;margin-left:auto;padding:5px 9px;font-size:11px;font-weight:700}.graph-interface-tools{grid-template-columns:minmax(180px,1fr) minmax(240px,.7fr);gap:8px;margin-bottom:12px;display:grid}.graph-router-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:18px;display:grid}.graph-router-card{background:var(--bg);border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:10px;min-width:0;padding:12px;transition:border-color .14s,box-shadow .14s;display:flex}.graph-router-card:hover{border-color:#1d4ed859}.graph-router-card.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.graph-router-card-icon{color:var(--accent);background:#1d4ed81a;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.graph-router-card-body{gap:1px;min-width:0;display:grid}.graph-router-card-body strong,.graph-router-card-body small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.graph-router-card-body strong{font-size:13px}.graph-router-card-body small{color:var(--muted);font-size:10.5px}.graph-router-card .status-dot{flex-shrink:0;margin-left:auto}.graph-router-card-add{color:var(--muted);border-style:dashed;justify-content:center;font-size:12px;font-weight:700}.graph-router-card-add:hover{color:var(--accent-dark)}.graph-detail{border-top:1px solid var(--line);grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:20px;padding-top:18px;display:grid}@media (max-width:900px){.graph-detail{grid-template-columns:minmax(0,1fr)}}.graph-detail-heading{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;margin:0 0 12px;font-size:11px;font-weight:800}.graph-detail-config{border-right:1px solid var(--line);min-width:0;padding-right:20px}@media (max-width:900px){.graph-detail-config{border-right:0;border-bottom:1px solid var(--line);padding-bottom:18px;padding-right:0}}.graph-detail-interfaces{min-width:0}.graph-source-fields{gap:10px;display:grid}.graph-source-fields label{gap:5px;min-width:0;font-size:11px;font-weight:700;display:grid}.graph-source-fields .graph-source-enabled{align-items:center;gap:7px;display:flex}.graph-source-error{color:var(--danger);background:#b4231814;border-radius:8px;margin-top:10px;padding:8px 10px;font-size:12px;font-weight:600}.graph-source-hint{color:var(--muted);margin:0 0 8px;font-size:12px;line-height:1.45}.graph-host-row{gap:8px;display:flex}.graph-host-row input{flex:1;min-width:0}.graph-host-row button{white-space:nowrap;flex-shrink:0}.graph-ping-result{border-radius:8px;margin:-4px 0 4px;padding:6px 10px;font-size:12px;font-weight:700}.graph-ping-result.is-ok{color:#15803d;background:#16a34a1a}.graph-ping-result.is-fail{color:var(--danger);background:#b4231814}.graph-source-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:10px;display:flex}.graph-remove-source{color:var(--danger);margin-right:auto}.resource-history-panel{padding:16px}.resource-current-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.resource-current-grid>div{background:var(--bg);border:1px solid var(--line);border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px;padding:10px 12px;display:grid}.resource-current-grid span{color:var(--muted);font-size:11px;font-weight:700}.resource-current-grid strong{font-size:14px}.resource-chart-wrap{grid-template-columns:48px minmax(0,1fr);gap:10px;display:grid}.resource-y-axis{color:var(--muted);text-align:right;flex-direction:column;justify-content:space-between;padding:12px 0 3px;font-size:10px;font-weight:700;display:flex}.resource-history-chart{width:100%;height:200px;display:block}.graph-manual-add{grid-template-columns:minmax(0,1fr) 40px;gap:6px;display:grid}.graph-interface-list{border:1px solid var(--line);border-radius:8px;max-height:380px;display:grid;overflow-y:auto}.graph-interface-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 10px 5px 5px;display:grid}.graph-interface-row:last-child{border-bottom:0}.graph-interface-row.is-selected{background:#1d4ed80d}.graph-interface-toggle{color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:7px;display:grid}.graph-check{border:1px solid var(--line);border-radius:5px;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}.is-selected .graph-check{background:var(--accent);border-color:var(--accent);color:#fff}.graph-interface-info{min-width:0;display:grid}.graph-interface-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.graph-interface-info small{color:var(--muted);font-size:11px}.graph-interface-state{color:var(--muted);font-size:10px;font-weight:700}.graph-interface-state.is-running{color:#15803d}.graph-primary-choice{color:var(--muted);white-space:nowrap;align-items:center;gap:5px;font-size:11px;font-weight:700;display:flex}.graph-preset-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.graph-preset{background:var(--bg);border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;border-radius:8px;grid-template-columns:auto minmax(0,1fr) 16px;align-items:center;gap:8px;min-height:48px;padding:8px 10px;font-size:12px;font-weight:700;display:grid}.graph-preset.is-active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px #1d4ed81f}.graph-preset-lines{gap:3px;width:24px;display:grid}.graph-preset-lines i{border-radius:999px;height:3px;display:block}.graph-style-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.graph-style-controls>label{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:12px;font-weight:700;display:flex}.graph-color-control{align-items:center;gap:7px;display:flex}.graph-color-control input{border:0;border-radius:6px;width:34px;height:28px;padding:0}.graph-color-control code{color:var(--muted);font-size:11px}.graph-style-controls .graph-slider{flex-direction:column;grid-column:1/-1;align-items:stretch;gap:8px}.graph-slider span{justify-content:space-between;display:flex}.graph-toggle-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.graph-layout-setting{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.graph-layout-label{margin-bottom:8px;font-size:12px;font-weight:800;display:block}.graph-layout-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.graph-layout-options button{background:var(--bg);border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;border-radius:8px;gap:2px;min-width:0;padding:11px 12px;display:grid}.graph-layout-options button.is-active{border-color:var(--accent);box-shadow:0 0 0 1px #1d4ed81f}.graph-layout-options strong{color:var(--ink);font-size:12px}.graph-layout-options small{color:var(--muted);overflow-wrap:anywhere;font-size:10px}.traffic-device-list{gap:16px;display:grid}.traffic-device-list.is-stacked{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}.traffic-device-list.is-stacked.layout-2{grid-template-columns:repeat(2,minmax(0,1fr))}.traffic-device-list.is-stacked.layout-3{grid-template-columns:repeat(3,minmax(0,1fr))}.traffic-device-list.is-stacked.layout-4{grid-template-columns:repeat(4,minmax(0,1fr))}.traffic-device-list.is-stacked .traffic-device-block{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:0;padding:14px}@media (max-width:1100px){.traffic-device-list.is-stacked.layout-3,.traffic-device-list.is-stacked.layout-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.traffic-device-list.is-stacked.layout-2,.traffic-device-list.is-stacked.layout-3,.traffic-device-list.is-stacked.layout-4{grid-template-columns:minmax(0,1fr)}}.traffic-device-title{align-items:center;gap:7px;min-width:0;margin-bottom:10px;display:flex}.traffic-device-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.graph-toggle-row label{background:var(--bg);cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}.graph-toggle-row span{display:grid}.graph-toggle-row strong{font-size:12px}.graph-toggle-row small{color:var(--muted);font-size:10px}.graph-preview{background:var(--bg);border:1px solid var(--line);border-radius:8px;margin-top:16px;position:relative;overflow:hidden}.graph-preview-grid{background:repeating-linear-gradient(to bottom, transparent 0, transparent 32%, var(--line) 33%, transparent 34%);position:absolute;inset:0}.graph-preview-line,.graph-preview-area{border-top:3px solid;height:45%;position:absolute;top:28%;left:-3%;right:-3%;transform:skewY(-4deg)}.graph-preview-line.is-tx{top:53%;transform:skewY(3deg)}.graph-preview-area{opacity:.05;background:currentColor;border-top-width:0}.graph-savebar{background:var(--panel);border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.graph-savebar>div,.graph-save-actions{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.graph-form-error{color:var(--danger)}.graph-form-success{color:var(--accent)}@media (max-width:720px){.graph-interface-tools,.graph-style-controls,.graph-toggle-row,.graph-layout-options,.graph-source-fields,.resource-current-grid{grid-template-columns:1fr}.graph-preset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.graph-savebar,.graph-save-actions{flex-direction:column;align-items:stretch}}.graph-settings-layout,.graph-settings-section,.graph-settings-section>*,.graph-settings-heading,.graph-settings-heading>div,.graph-interface-tools,.graph-manual-add,.graph-interface-list,.graph-interface-row,.graph-interface-toggle,.graph-preset-grid,.graph-preset,.graph-style-controls,.graph-toggle-row,.graph-savebar,.graph-savebar>div,.graph-save-actions{min-width:0;max-width:100%}.graph-settings-section{overflow:hidden}.graph-settings-heading>div,.graph-preset>span,.graph-style-controls>label>span,.graph-toggle-row label>span,.graph-savebar span{overflow-wrap:break-word;word-break:normal}.graph-selected-count,.graph-interface-state,.graph-primary-choice,.graph-savebar .btn{flex-shrink:0}.graph-savebar>div:first-child{flex:240px}.graph-save-actions{flex-wrap:wrap;flex:320px;justify-content:flex-end}.graph-form-error,.graph-form-success{text-align:left;flex:180px;max-width:100%}@media (max-width:460px){.graph-settings-section{padding:12px}.graph-settings-heading{align-items:flex-start}.graph-selected-count{white-space:nowrap}.graph-interface-row{grid-template-columns:minmax(0,1fr);align-items:stretch;padding:5px}.graph-primary-choice{border-top:1px solid var(--line);justify-content:flex-start;margin:0 7px;padding:7px 0 3px 34px}.graph-preset-grid{grid-template-columns:1fr}.graph-style-controls>label{flex-wrap:wrap;align-items:flex-start;gap:8px}.graph-savebar,.graph-savebar>div,.graph-save-actions{flex-direction:column;align-items:stretch;width:100%}.graph-savebar>div:first-child,.graph-save-actions,.graph-form-error,.graph-form-success{text-align:left;flex-basis:auto}.graph-savebar .btn{justify-content:center;width:100%}}.theme-toggle{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#1d4ed81a;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.theme-toggle:hover{border-color:#1d4ed859}.sidebar-footer-actions{border-top:1px solid var(--sidebar-line);gap:8px;margin-top:18px;padding-top:14px;display:grid}.sidebar-footer-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sidebar-footer-actions .theme-toggle{border-color:var(--sidebar-line);color:var(--sidebar-ink);background:#ffffff14;width:100%}.sidebar-footer-actions .notif-root{width:100%}.sidebar-footer-actions .notif-bell{border-color:var(--sidebar-line);color:var(--sidebar-ink);background:#ffffff14;border-radius:8px;width:100%}.sidebar-footer-actions .notif-popup{inset:auto auto calc(100% + 8px) 0}.dashboard-hero-status-row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.schedule-template-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.schedule-template-item{border:1px solid var(--line);background:#f7faf9;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:stretch;gap:8px;padding:10px 12px;display:flex}.schedule-template-item.is-selected{border-color:#1d4ed873;box-shadow:0 0 0 1px #1d4ed81f}.schedule-template-main{cursor:pointer;text-align:left;background:0 0;border:0;flex:1;gap:2px;min-width:0;padding:0;display:grid}.schedule-template-name{font-size:13px;font-weight:800}.schedule-template-meta{color:var(--muted);font-size:11px;font-weight:600}.schedule-template-desc{color:var(--muted);font-size:11px}.schedule-template-actions{flex-wrap:wrap;gap:6px;display:flex}.schedule-user-pick{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:240px;display:grid;overflow:auto}.schedule-user-pick-item{border:1px solid var(--line);cursor:pointer;background:#f7faf9;border-radius:10px;gap:6px;min-width:0;padding:8px 10px;font-size:12px;font-weight:600;display:grid}.schedule-user-pick-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.schedule-user-pick-item input[type=checkbox]{width:auto}.schedule-user-pick-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.schedule-user-pick-status{flex-shrink:0;align-items:center;line-height:0;display:inline-flex}.page-transition{gap:22px;min-width:0;display:grid}@keyframes stagger-rise{0%,to{opacity:1;filter:none;transform:none}}@keyframes page-fade{0%{opacity:0}to{opacity:1}}.page-transition-item,.page-transition-item-delay{min-width:0}.page-transition>.app-content-header{animation:.42s cubic-bezier(.22,1,.36,1) 20ms both stagger-rise}.page-transition .app-content-body>*,.page-transition .app-content-body>.grid>*,.page-transition .app-content-body>.sessions-layout>*{animation:.46s cubic-bezier(.22,1,.36,1) both stagger-rise}.page-transition .session-card-grid>*,.page-transition .dashboard-detail-grid>*,.page-transition .dashboard-hero-stats>*{animation:.48s cubic-bezier(.22,1,.36,1) both stagger-rise}.page-transition .settings-tabs{animation:.42s cubic-bezier(.22,1,.36,1) 60ms both stagger-rise}.page-transition .app-content-body>:first-child,.page-transition .app-content-body>.grid>:first-child,.page-transition .app-content-body>.sessions-layout>:first-child{animation-delay:60ms}.page-transition .app-content-body>:nth-child(2),.page-transition .app-content-body>.grid>:nth-child(2),.page-transition .app-content-body>.sessions-layout>:nth-child(2){animation-delay:.12s}.page-transition .app-content-body>:nth-child(3),.page-transition .app-content-body>.grid>:nth-child(3),.page-transition .app-content-body>.sessions-layout>:nth-child(3){animation-delay:.18s}.page-transition .app-content-body>:nth-child(4),.page-transition .app-content-body>.grid>:nth-child(4),.page-transition .app-content-body>.sessions-layout>:nth-child(4){animation-delay:.23s}.page-transition .app-content-body>:nth-child(5),.page-transition .app-content-body>.grid>:nth-child(5),.page-transition .app-content-body>.sessions-layout>:nth-child(5){animation-delay:.28s}.page-transition .app-content-body>:nth-child(6),.page-transition .app-content-body>.grid>:nth-child(6){animation-delay:.32s}.page-transition .session-card-grid>:first-child,.page-transition .dashboard-detail-grid>:first-child,.page-transition .dashboard-hero-stats>:first-child{animation-delay:.1s}.page-transition .session-card-grid>:nth-child(2),.page-transition .dashboard-detail-grid>:nth-child(2),.page-transition .dashboard-hero-stats>:nth-child(2){animation-delay:.15s}.page-transition .session-card-grid>:nth-child(3),.page-transition .dashboard-detail-grid>:nth-child(3),.page-transition .dashboard-hero-stats>:nth-child(3){animation-delay:.2s}.page-transition .session-card-grid>:nth-child(4),.page-transition .dashboard-detail-grid>:nth-child(4){animation-delay:.24s}.page-transition .session-card-grid>:nth-child(5),.page-transition .dashboard-detail-grid>:nth-child(5){animation-delay:.28s}.page-transition .session-card-grid>:nth-child(6),.page-transition .dashboard-detail-grid>:nth-child(6){animation-delay:.32s}.page-transition .session-card-grid>:nth-child(7),.page-transition .dashboard-detail-grid>:nth-child(7){animation-delay:.36s}.page-transition .session-card-grid>:nth-child(8),.page-transition .dashboard-detail-grid>:nth-child(8){animation-delay:.4s}.page-transition .session-card-grid>:nth-child(9),.page-transition .dashboard-detail-grid>:nth-child(9){animation-delay:.44s}.page-transition .session-card-grid>:nth-child(10),.page-transition .dashboard-detail-grid>:nth-child(10){animation-delay:.48s}.page-transition .session-card-grid>:nth-child(11),.page-transition .dashboard-detail-grid>:nth-child(11){animation-delay:.52s}.page-transition .session-card-grid>:nth-child(n+12),.page-transition .dashboard-detail-grid>:nth-child(n+12){animation-delay:.56s}.dashboard-detail-panel .dashboard-detail-grid>*{animation:.42s cubic-bezier(.22,1,.36,1) both stagger-rise}.dashboard-detail-panel .dashboard-detail-grid>:first-child{animation-delay:40ms}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(2){animation-delay:90ms}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(3){animation-delay:.13s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(4){animation-delay:.17s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(5){animation-delay:.21s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(6){animation-delay:.25s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(7){animation-delay:.29s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(8){animation-delay:.33s}.dashboard-detail-panel .dashboard-detail-grid>:nth-child(n+9){animation-delay:.36s}.page-login{color:#eef4ff;background:linear-gradient(#ffffff09 1px,#0000 1px) 0 0/28px 28px,linear-gradient(90deg,#ffffff09 1px,#0000 1px) 0 0/28px 28px,radial-gradient(760px 380px at 50% -18%,#2e7dff3d,#0000 58%),linear-gradient(160deg,#071433 0%,#10234a 52%,#142f5e 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:28px 16px;animation:.42s both page-fade;display:flex;position:relative;overflow:hidden}.page-login-atmosphere{pointer-events:none;position:absolute;inset:0}.page-login-grid{opacity:.65;background:linear-gradient(90deg,#0000,#facc1533,#0000);width:min(760px,82vw);height:1px;position:absolute;top:34%;left:50%;transform:translate(-50%)}.page-login-card{--ink:#0c1b33;--muted:#5b6b82;--line:#d7e1ef;--accent:#1d4ed8;--danger:#b42318;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--ink);z-index:1;background:#fffffff5;border:1px solid #e2e8f0e6;border-radius:8px;width:100%;max-width:400px;padding:24px 24px 18px;animation:.48s cubic-bezier(.22,1,.36,1) both stagger-rise;position:relative;box-shadow:0 22px 54px #04122b4d,0 0 0 1px #fff6}.page-login-brand{text-align:center;justify-items:center;gap:8px;margin-bottom:22px;display:grid}.page-login-kicker{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.page-login-subtitle{color:var(--muted);margin:0;font-size:13px}.page-login-card label{color:var(--ink)}.page-login-card input{background:#f4f7fc;border-color:#d7e1ef;border-radius:12px;min-height:44px}.page-login-card input:disabled{cursor:wait;opacity:.74}.page-login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 4px #1d4ed824}.page-login-card .btn-primary{background:linear-gradient(#2b63e8 0%,#1d4ed8 100%);border:0;border-radius:12px;gap:8px;min-height:44px;box-shadow:0 8px 18px #1d4ed847}.page-login-card .btn-primary:hover{background:linear-gradient(#1d4ed8 0%,#163ea8 100%)}.login-password-field{display:grid;position:relative}.login-password-field input{width:100%;padding-right:46px}.login-password-field button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex;position:absolute;top:5px;right:5px}.login-password-field button:hover{color:var(--ink);background:#0f172a12}.login-password-field button:disabled{cursor:wait;opacity:.55}.login-error{color:var(--danger);background:#b423181a;border:1px solid #b4231838;border-radius:12px;align-items:flex-start;gap:8px;margin:0;padding:10px 12px;font-size:13px;line-height:1.35;display:flex}.login-error svg{flex:none;margin-top:1px}.login-spinner{animation:.78s linear infinite neighbor-spin}.login-system-status{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;padding-top:12px;font-size:11px;font-weight:700;display:flex}.login-system-status span{align-items:center;gap:6px;display:inline-flex}.login-system-status span:before{content:"";background:#16a34a;border-radius:50%;width:6px;height:6px}.login-captcha{justify-items:center;display:grid}.login-turnstile{min-height:65px}.page-login-copyright{color:#e2e8f0d1;z-index:1;font-weight:700;position:relative}.page-login .app-loading-screen{z-index:1;min-height:auto;position:relative}.page-login .app-loading-text{color:#eef4ffd1}@media (prefers-reduced-motion:reduce){.login-spinner{animation:none}}html[data-theme=dark] .page-login-copyright{color:#facc15}@media (prefers-reduced-motion:reduce){.page-transition>.app-content-header,.page-transition .app-content-body>*,.page-transition .app-content-body>.grid>*,.page-transition .app-content-body>.sessions-layout>*,.page-transition .session-card-grid>*,.page-transition .dashboard-detail-grid>*,.page-transition .dashboard-hero-stats>*,.page-transition .settings-tabs,.dashboard-detail-panel .dashboard-detail-grid>*,.page-login,.page-login-card{filter:none!important;opacity:1!important;animation:none!important;transform:none!important}}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px}.modal-backdrop{padding:max(12px, env(safe-area-inset-top)) 1rem max(12px, env(safe-area-inset-bottom));opacity:1;-webkit-overflow-scrolling:touch;border:none;outline:none;margin:0;overflow-y:auto;inset:0!important;z-index:9990!important;width:100vw!important;min-height:100dvh!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;filter:none!important;background:0 0!important;justify-content:center!important;align-items:center!important;animation:none!important;display:flex!important;position:fixed!important;inset:0!important;transform:none!important}.modal-backdrop.modal-backdrop--top{z-index:9995!important}.modal-backdrop{pointer-events:none}.modal-backdrop>*{pointer-events:auto;-webkit-overflow-scrolling:touch;max-height:min(90vh,720px);margin:auto;overflow-y:auto;animation:none!important;transform:none!important}.add-user-modal{-webkit-overflow-scrolling:touch;max-height:min(90vh,720px);overflow-y:auto}.add-user-service-badge{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.add-user-service-pill{color:var(--accent-dark);letter-spacing:.03em;background:#1d4ed81f;border:1px solid #1d4ed833;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:800}.router-status-panel{background:#fbfcfc}.router-status-head{justify-content:space-between;align-items:center;gap:10px;min-width:0;margin-bottom:10px;display:flex}.router-status-kicker{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:11px;font-weight:800}.router-status-title{margin:2px 0 0;font-size:15px;font-weight:800}.router-status-board{color:var(--accent-dark);background:#1d4ed814;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:700}.router-status-empty{color:var(--muted);margin:0;font-size:13px}.router-status-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;min-width:0;margin:0;display:grid}.router-status-item{border-top:1px solid var(--line);min-width:0;padding:10px 8px 8px 0}.router-status-item:nth-child(2n){padding-left:10px;padding-right:0}.router-status-item:nth-child(-n+2){border-top:none;padding-top:2px}.router-status-item dt{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.router-status-item dd{text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:13px;font-weight:800;line-height:1.3;overflow:hidden}.router-status-item dd.is-soft{font-size:12px;font-weight:700}.router-status-mem{border-top:1px solid var(--line);color:var(--muted);margin:4px 0 0;padding-top:8px;font-size:11px;font-weight:600}.dashboard-widget-row{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;display:grid}.dashboard-widget-footer{align-items:center;gap:12px;margin-top:10px;display:flex}.dashboard-widget-rx,.dashboard-widget-tx{align-items:center;gap:4px;font-size:12px;font-weight:700;display:inline-flex}.dashboard-widget-rx{color:#1d4ed8}.dashboard-widget-tx{color:#2563eb}.dashboard-activity-list{gap:10px;max-height:260px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.dashboard-activity-list li{border-bottom:1px solid var(--line);gap:2px;padding-bottom:8px;display:grid}.dashboard-activity-list li:last-child{border-bottom:0;padding-bottom:0}.dashboard-activity-time{color:var(--muted);font-size:10px;font-weight:700}.dashboard-activity-body{font-size:12.5px}.dashboard-activity-body strong{font-weight:700}.dashboard-activity-body small{color:var(--muted);margin-top:1px;font-size:11px;display:block}@media (min-width:640px){.router-status-strip{-moz-column-gap:0;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;column-gap:0}.router-status-item{border-left:1px solid var(--line);border-top:none;padding:2px 12px}.router-status-item:first-child{border-left:none;padding-left:0}.router-status-item:nth-child(2n){padding-left:12px;padding-right:12px}.router-status-item:last-child{padding-right:0}.router-status-item:nth-child(-n+2){padding-top:2px}.router-status-item dd{white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:14px}.router-status-title{font-size:16px}}.report-user-card{cursor:pointer;text-align:left;width:100%}.report-user-card:hover{border-color:#1d4ed859}.report-detail-modal{grid-template-rows:auto 1fr;max-height:min(85vh,640px);display:grid;overflow:hidden}.report-timeline{gap:10px;max-height:min(55vh,420px);padding-right:4px;display:grid;overflow-y:auto}.report-timeline-item{border:1px solid var(--line);background:#f7faf9;border-radius:12px;align-items:flex-start;gap:12px;padding:12px;display:flex}.report-timeline-item.is-login{border-left:3px solid #16a34a}.report-timeline-item.is-logout{border-left:3px solid var(--muted)}.report-timeline-icon{border:1px solid var(--line);color:var(--accent-dark);background:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.report-timeline-item.is-logout .report-timeline-icon{color:var(--muted)}.report-timeline-body{min-width:0}.report-timeline-title{margin:0;font-size:13px;font-weight:700}.report-timeline-time{color:var(--ink);margin:4px 0 0;font-size:13px;font-weight:600}.report-timeline-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0 0;font-size:11px;font-weight:600;display:flex}.pm-steps{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.pm-steps li{border:1px solid var(--line);color:var(--ink);background:#1d4ed80f;border-radius:999px;align-items:center;gap:8px;padding:6px 10px 6px 6px;font-size:11px;font-weight:700;display:inline-flex}.pm-steps span{background:var(--panel);border:1px solid var(--line);border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;display:inline-flex}.pm-meta{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px;display:grid}.pm-meta label,.pm-notes{color:var(--muted);gap:5px;font-size:11px;font-weight:800;display:grid}.pm-meta input,.pm-meta select,.pm-notes textarea,.pm-check input{background:var(--panel);border:1px solid var(--line);color:var(--text);font:inherit;border-radius:8px;padding:9px}.pm-pick{grid-column:1/-1}.pm-pick small{color:var(--muted);font-size:11px;font-weight:600}.pm-roster{overflow:hidden;padding:0!important}.pm-roster-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.pm-roster-head strong{font-size:13px}.pm-roster-head span{color:var(--muted);font-size:12px;font-weight:700}.pm-roster-groups{gap:16px;padding:12px 14px 16px;display:grid}.pm-roster-group h3{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:6px;margin:0 0 8px;font-size:11px;font-weight:800;display:flex}.pm-roster-group h3 small{color:var(--accent);background:#1d4ed81a;border-radius:999px;padding:1px 7px;font-size:10px}.pm-roster-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;display:grid}.pm-roster-row{border:1px solid var(--line);color:inherit;cursor:pointer;text-align:left;background:#1d4ed80a;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-width:0;padding:10px 12px;display:flex}.pm-roster-row:hover{background:#1d4ed814;border-color:#1d4ed847}.pm-roster-name{gap:2px;min-width:0;display:grid}.pm-roster-name b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.pm-roster-name small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.pm-roster-status{white-space:nowrap;border-radius:999px;flex:none;padding:3px 8px;font-size:10px;font-weight:800}.pm-roster-status.is-new{color:var(--accent);background:#1d4ed81f}.pm-roster-status.is-draft{color:#a16207;background:#f59e0b29}.pm-roster-status.is-submitted{color:var(--accent);background:#1d4ed81f}.pm-roster-status.is-approved{color:#15803d;background:#16a34a24}.pm-print-host{display:none}.pm-preview-backdrop{isolation:isolate;z-index:10000;background:#08101cd6;width:100vw;height:100dvh;padding:20px 16px 48px;position:fixed;inset:0;overflow:auto}.pm-preview-toolbar{color:#fff;z-index:1;background:#08101cf0;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;max-width:min(210mm,100%);margin:0 auto 14px;padding:10px 12px;display:flex;position:sticky;top:8px}.pm-preview-toolbar p{margin:0;font-size:14px;font-weight:800}.pm-preview-toolbar small{color:#ffffffbf;font-size:12px;display:block}.pm-preview-toolbar span{gap:8px;display:flex}.pm-preview-paper{color:#111;background:#fff;max-width:min(210mm,100%);margin:0 auto;padding:12mm;box-shadow:0 18px 50px #00000059}.pm-print-sheet{color:#111;font-size:11px;line-height:1.35}.pm-print-head{border-bottom:2px solid #111;justify-content:space-between;gap:16px;margin-bottom:10px;padding-bottom:8px;display:flex}.pm-print-head p{letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:10px;font-weight:800}.pm-print-head h1{margin:4px 0 0;font-size:15px}.pm-print-head dl{text-align:right;gap:2px;margin:0;font-size:10px;display:grid}.pm-print-head dt{color:#555;font-weight:700}.pm-print-head dd{margin:0;font-weight:800}.pm-print-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin:0 0 10px;display:grid}.pm-print-meta div{gap:1px;display:grid}.pm-print-meta dt{color:#555;text-transform:uppercase;font-size:9px;font-weight:800}.pm-print-meta dd{border-bottom:1px solid #ccc;min-height:16px;margin:0;font-weight:700}.pm-print-sheet table{border-collapse:collapse;width:100%}.pm-print-sheet th,.pm-print-sheet td{text-align:left;vertical-align:top;border:1px solid #222;padding:5px 6px}.pm-print-sheet th{text-transform:uppercase;background:#f3f3f3;font-size:9px}.pm-print-sheet td:first-child,.pm-print-sheet td:nth-child(4){text-align:center;width:36px}.pm-print-notes{border:1px solid #222;min-height:48px;margin:10px 0;padding:8px}.pm-print-notes b{text-transform:uppercase;margin-bottom:4px;font-size:10px;display:block}.pm-print-sign{grid-template-columns:1fr 1fr;gap:16px;margin-top:14px;display:grid}.pm-print-sign div{border:1px solid #222;min-height:90px;padding:8px}.pm-print-sign p{margin:0 0 28px;font-size:10px;font-weight:800}.pm-print-sign b{display:block}.pm-print-sign span{color:#444;margin-top:6px;font-size:10px;display:block}@media (max-width:900px){.pm-roster-grid,.pm-print-meta,.pm-print-sign{grid-template-columns:1fr}.pm-print-head{flex-direction:column}.pm-print-head dl{text-align:left}}.topology-print-head,.topology-print-foot{display:none}@media print{@page{margin:10mm;size:auto}html,body{color:#111!important;background:#fff!important}body.pm-print-open .sidebar,body.pm-print-open .mobile-topbar,body.pm-print-open .bottom-nav,body.pm-print-open .app-content-header,body.pm-print-open .settings-tabs,body.pm-print-open .pm-no-print,body.pm-print-open .pm-preview-backdrop,body.pm-print-open .pm-layout>.card,body.pm-print-open .pm-form,body.pm-print-open .pm-roster{display:none!important}body.pm-print-open .app-shell,body.pm-print-open .app-content,body.pm-print-open .page-transition,body.pm-print-open .app-content-body,body.pm-print-open .pm-layout,body.pm-print-open .pm-print-host{box-shadow:none!important;background:#fff!important;width:100%!important;height:auto!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}body.pm-print-open .pm-print-host{display:block!important}.pm-print-sheet{font-size:10.5px}.pm-print-sheet th{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#eee!important}@page map{margin:8mm;size:A4 landscape}.topology-print-head{border-bottom:2px solid #163a6b;align-items:center;gap:12px;margin-bottom:10px;padding-bottom:8px}.topology-print-head img{-o-object-fit:contain;object-fit:contain;width:auto;height:34px}.topology-print-head strong{color:#111;font-size:16px;display:block}.topology-print-head small{color:#555;margin-top:2px;font-size:11px;display:block}.topology-print-foot{-moz-column-break-inside:avoid;break-inside:avoid;color:#555;border-top:1px solid #c5d0de;margin-top:10px;padding-top:8px;font-size:9.5px}.topology-print-counts{color:#111;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 4px;font-size:11px;display:flex}.topology-print-counts b{text-transform:uppercase;font-size:11px}.topology-print-status{margin:0 0 6px}body.topology-print-open{page:map;overflow:hidden!important}body.topology-print-open .sidebar,body.topology-print-open .mobile-topbar,body.topology-print-open .bottom-nav,body.topology-print-open .app-content-header,body.topology-print-open .topology-toolbar,body.topology-print-open .topology-connections,body.topology-print-open .topology-device-detail,body.topology-print-open .topology-hover-dock,body.topology-print-open .topology-align-guide,body.topology-print-open .topology-alerts,body.topology-print-open .topology-census,body.topology-print-open .topology-tools-pop,body.topology-print-open .topology-editor-pop,body.topology-print-open .topology-node-tooltip,body.topology-print-open .topology-link-info,body.topology-print-open .topology-cable-pulse{display:none!important}body.topology-print-open .topology-print-head{display:flex!important}body.topology-print-open .topology-print-foot{display:block!important}body.topology-print-open .app-shell,body.topology-print-open .app-content,body.topology-print-open .page-transition,body.topology-print-open .app-content-body,body.topology-print-open .topology-layout,body.topology-print-open .topology-workspace{box-shadow:none!important;background:#fff!important;width:auto!important;height:auto!important;max-height:none!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}body.topology-print-open .topology-workspace{border:0!important}body.topology-print-open .topology-canvas{-webkit-print-color-adjust:exact;print-color-adjust:exact;zoom:var(--print-scale,1);border:1px solid #c5d0de;height:var(--print-h,800px)!important;max-width:none!important;min-height:0!important;width:var(--print-w,1100px)!important;background:#fff!important;overflow:hidden!important}body.topology-print-open .topology-links{width:4200px!important;height:4200px!important;position:absolute!important}body.topology-print-open .topology-cable-tail,body.topology-print-open .vpn-card-cable path{stroke-dasharray:none!important;animation:none!important}body.topology-print-open .topology-node,body.topology-print-open .topology-node-icon,body.topology-print-open .vpn-group-card,body.topology-print-open .vpn-group-device{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;animation:none!important}body.topology-print-open .topology-node strong,body.topology-print-open .topology-node small,body.topology-print-open .vpn-group-card,body.topology-print-open .vpn-group-card header,body.topology-print-open .vpn-group-device{color:#111!important;filter:none!important;background:#fff!important}body.topology-print-open .vpn-group-card{border:1px solid #8aa0bd!important}body.topology-print-open .mikrotik-device-icon,body.topology-print-open .vendor-device-icon,body.topology-print-open .glyph-device-icon{filter:none!important}@supports not (zoom:1){body.topology-print-open .topology-canvas{margin-bottom:calc(var(--print-h,800px)*(var(--print-scale,1) - 1));transform:scale(var(--print-scale,1));transform-origin:0 0;zoom:normal}}}.pm-check-list{gap:8px;display:grid}.pm-check{border:1px solid var(--line);border-radius:12px;gap:8px;padding:10px 12px;display:grid}.pm-check.is-ok{border-color:#16a34a59}.pm-check.is-fail{border-color:#ef444466}.pm-check header{gap:2px;display:grid}.pm-check b{font-size:13px}.pm-check small{color:var(--muted);font-size:11px}.pm-check-actions{flex-wrap:wrap;gap:6px;display:flex}.pm-check-actions button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:4px;min-height:32px;padding:0 10px;font-size:11px;font-weight:700;display:inline-flex}.pm-check-actions button.is-ok.is-active{color:#15803d;background:#16a34a1f;border-color:#16a34a66}.pm-check-actions button.is-fail.is-active{color:#dc2626;background:#ef44441f;border-color:#ef444466}.pm-notes{margin-top:14px}.pm-sign{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:16px 0 0;display:grid}.pm-sign div{border:1px solid var(--line);background:#1d4ed80a;border-radius:12px;padding:10px 12px}.pm-sign dt{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:800}.pm-sign dd{margin:4px 0 0;font-size:13px;font-weight:700}.pm-sign small{color:var(--muted);font-size:11px}.pm-form-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}html[data-theme=dark] .pm-steps li,html[data-theme=dark] .pm-sign div{background:#4ea2ff14}@media (max-width:900px){.pm-meta{grid-template-columns:1fr}.pm-steps li{max-width:100%}.pm-layout .panel-header .btn{align-self:flex-start;width:auto}}.remote-ip-popup{animation:.32s cubic-bezier(.22,1,.36,1) both stagger-rise}.remote-ip-popup-icon{color:var(--danger);background:#b423181a;border-radius:999px;justify-content:center;align-items:center;width:48px;height:48px;margin:0 auto 12px;font-size:22px;font-weight:800;display:inline-flex}.vpn-created-info-popup{max-height:min(90vh,720px);animation:.32s cubic-bezier(.22,1,.36,1) both stagger-rise;overflow-y:auto}.vpn-created-info-icon{color:var(--accent-dark,#1d4ed8);background:#1d4ed81f;border-radius:999px;justify-content:center;align-items:center;width:48px;height:48px;margin:0 auto 12px;display:inline-flex}.vpn-created-info-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;display:grid}.vpn-created-info-grid>div{border:1px solid var(--line);background:#0f172a0a;border-radius:10px;gap:2px;padding:10px 12px;display:grid}.vpn-created-info-grid span{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:11px;font-weight:600}.vpn-created-info-grid strong{word-break:break-all;font-size:13px}.vpn-created-info-steps{color:var(--text);gap:8px;margin:0 0 12px;padding-left:1.25rem;font-size:13px;line-height:1.45;list-style:decimal;display:grid}.vpn-created-info-code{color:#e2e8f0;white-space:pre-wrap;word-break:break-all;background:#0f172a;border-radius:8px;margin-top:6px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;overflow-x:auto}.vpn-created-info-note{color:var(--accent-dark,#1d4ed8);background:#1d4ed814;border-radius:10px;margin:0;padding:10px 12px;font-size:12px;line-height:1.45}@media (max-width:520px){.vpn-created-info-grid{grid-template-columns:1fr}}.btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn:hover{border-color:var(--accent);background:#f7faf9}.btn:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #1d4ed829}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn-danger{color:var(--danger)}.btn-danger:hover{border-color:var(--danger);background:#b423180f}.icon-button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;transition:all .15s;display:inline-flex}.icon-button:hover{background:var(--panel-soft,#f7faf9);border-color:var(--line);color:var(--ink)}.icon-button:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #1d4ed829}.icon-button-danger:hover{color:var(--danger);background:#b4231814;border-color:#b4231847}input,select{border:1px solid var(--line);background:#fbfdfe;border-radius:8px;width:100%;padding:8px 12px;font-size:14px}input[type=checkbox],input[type=radio]{width:auto;min-width:16px;height:16px;accent-color:var(--accent);box-shadow:none;border-radius:4px;flex-shrink:0;margin:0;padding:0}input[type=color]{flex-shrink:0;width:34px;min-width:34px;height:28px;padding:0}input[type=range]{height:auto;box-shadow:none;padding:0}input:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #1d4ed824}.status-dot{border-radius:999px;flex-shrink:0;width:8px;height:8px;display:inline-block}.status-dot-live{animation:1.4s ease-in-out infinite status-pulse;box-shadow:0 0 #16a34a8c}.status-dot-warn{background:#f59e0b}@keyframes status-pulse{0%{opacity:1;transform:scale(1);box-shadow:0 0 #16a34a8c}50%{opacity:.55;transform:scale(1.15);box-shadow:0 0 0 6px #16a34a00}to{opacity:1;transform:scale(1);box-shadow:0 0 #16a34a00}}@media (prefers-reduced-motion:reduce){.status-dot-live{animation:none}}.mobile-only{display:none}.desktop-only{display:flex}.app-shell{--nav-w:264px;min-height:100dvh;padding-left:var(--nav-w);grid-template-columns:minmax(0,1fr);transition:padding-left .18s;display:grid}.app-shell:has(.sidebar.collapsed){--nav-w:82px}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-ink);width:var(--nav-w);z-index:40;flex-direction:column;gap:8px;padding:22px 16px;transition:padding .18s,width .18s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-collapse{border:1px solid var(--sidebar-line);color:var(--sidebar-muted);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:9px;margin:0 4px 6px;padding:8px;font-size:11px;font-weight:700;transition:background .16s,color .16s;display:flex}.sidebar-collapse:hover{color:var(--sidebar-ink);background:#ffffff0f}.sidebar.collapsed{align-items:stretch;padding-left:11px;padding-right:11px}.sidebar.collapsed .sidebar-brand{justify-content:center;padding-left:0;padding-right:0}.sidebar.collapsed .sidebar-brand-copy,.sidebar.collapsed .sidebar-collapse span,.sidebar.collapsed .sidebar-nav-link span,.sidebar.collapsed .sidebar-logout span,.sidebar.collapsed .sidebar-copyright{display:none}.sidebar.collapsed .sidebar-collapse,.sidebar.collapsed .sidebar-nav-link,.sidebar.collapsed .sidebar-logout{justify-content:center;padding-left:10px;padding-right:10px}.sidebar.collapsed .sidebar-nav-link.active:before{left:-5px}.sidebar.collapsed .sidebar-footer-row{justify-content:center;gap:7px;display:grid}.sidebar.collapsed .sidebar-footer-actions .theme-toggle,.sidebar.collapsed .sidebar-footer-actions .notif-bell{width:40px}.sidebar.collapsed .sidebar-footer-actions{padding-left:0;padding-right:0}.sidebar-account-card{border:1px solid var(--sidebar-line);background:#ffffff0a;border-radius:12px;gap:8px;padding:10px;display:grid}.sidebar-account-tools{grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:8px;display:grid}.sidebar-account-tools .sidebar-collapse,.sidebar-account-tools .theme-toggle,.sidebar-account-tools .notif-bell,.sidebar-account-logout{width:100%;min-width:0;height:38px;margin:0;padding:0}.sidebar-collapse,.sidebar-account-logout{border:1px solid var(--sidebar-line);color:var(--sidebar-ink);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:flex}.sidebar-collapse{color:var(--sidebar-muted)}.sidebar-collapse:hover,.sidebar-account-logout:hover{background:var(--sidebar-active);color:var(--sidebar-ink)}.sidebar-account-logout:hover{color:#fecaca;background:#b423181f;border-color:#f8717159}.sidebar.collapsed .sidebar-account-logout span{display:none}.sidebar.collapsed .sidebar-account-card{justify-items:center;padding:8px}.sidebar.collapsed .sidebar-account-tools{grid-template-columns:1fr;width:40px}.sidebar.collapsed .sidebar-account-tools .sidebar-collapse,.sidebar.collapsed .sidebar-account-tools .theme-toggle,.sidebar.collapsed .sidebar-account-tools .notif-bell,.sidebar.collapsed .sidebar-account-logout{width:100%}.sidebar-brand{align-items:center;gap:12px;padding:6px 10px 22px;display:flex}.sidebar-brand-mark{background:0 0;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.sidebar-brand-logo{-o-object-fit:contain;object-fit:contain;height:48px;transform:scale(var(--logo-scale,1));width:48px;display:block}.app-loading-screen{text-align:center;place-content:center;place-items:center;gap:18px;width:100%;min-height:min(50vh,420px);padding:48px 16px;display:grid}.app-loading-mark{place-items:center;width:clamp(56px,12vw,84px);height:clamp(56px,12vw,84px);display:grid;position:relative}.app-loading-logo{-o-object-fit:contain;object-fit:contain;border-radius:0;width:88%;height:88%;animation:1.8s ease-in-out infinite app-loading-pulse}.app-loading-ring{border:3px solid #1d4ed826;border-top-color:var(--accent);border-radius:999px;width:100%;height:100%;animation:1s linear infinite app-loading-ring-spin;position:absolute}.app-loading-text{color:var(--muted);margin:0;font-size:13px;font-weight:600}@keyframes app-loading-pulse{0%,to{opacity:1;transform:none}50%{opacity:.85;transform:none}}@keyframes app-loading-ring-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.app-loading-logo,.app-loading-ring{animation:none}}.sidebar-brand-kicker{color:var(--gold);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.sidebar-brand-title{margin:0;font-size:16px;font-weight:800;line-height:1.25}.sidebar-nav{flex:1;align-content:start;gap:3px;min-height:0;display:grid;overflow-y:auto}.sidebar-nav-link{color:var(--sidebar-muted);border-radius:8px;align-items:center;gap:11px;padding:10px 12px;font-size:14px;font-weight:600;text-decoration:none;transition:background .18s,color .18s,transform .18s,box-shadow .18s;display:flex}.sidebar-nav-link:active{transform:scale(.98)}.sidebar-nav-link svg,.sidebar-nav-link img{transition:transform .2s}.sidebar-nav-link:hover{color:var(--sidebar-ink);background:#ffffff0d}.sidebar-nav-link:hover svg,.sidebar-nav-link:hover img{transform:translateY(-1px)}.sidebar-nav-link.active{background:var(--sidebar-active);color:var(--sidebar-ink);position:relative}.sidebar-nav-link.active svg,.sidebar-nav-link.active img{transform:none}.sidebar-nav-link.active:before{background:linear-gradient(180deg, var(--glass), var(--gold));content:"";border-radius:999px;width:3px;height:18px;position:absolute;left:-6px}.sidebar-logout{border:1px solid var(--sidebar-line);color:var(--sidebar-muted);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:11px;padding:10px 12px;font-size:14px;font-weight:600;transition:all .14s;display:flex}.sidebar-logout:hover{color:#ff9c92;background:#b4231829;border-color:#ff8a7f4d}.sidebar-copyright{color:var(--sidebar-muted);text-align:center;margin:4px 0 0;font-size:10.5px;font-weight:600}.app-content{align-content:start;gap:0;min-width:0;max-width:100%;padding:32px 36px;display:grid;position:relative}.app-content>.page-transition{gap:22px}.app-content-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.app-content-title{letter-spacing:-.01em;margin:0;font-size:24px;font-weight:800}.app-content-subtitle{color:var(--muted);margin:4px 0 0;font-size:14px}.app-content-body{gap:22px;min-width:0;display:grid}.panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.icon-tile{color:var(--accent-dark);background:linear-gradient(160deg,#ffffff8c,#0000 55%),linear-gradient(145deg,#1d4ed82e,#1d4ed812);border:1px solid #1d4ed829;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;transition:transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s,border-color .22s;display:inline-flex;position:relative;box-shadow:inset 0 1px #ffffff8c,0 6px 14px #0f1f2a0d}.icon-tile svg{transition:transform .22s cubic-bezier(.22,1,.36,1)}.icon-tile-sm{border-radius:10px;width:28px;height:28px}.icon-tile-lg{border-radius:16px;width:52px;height:52px}.icon-tile-online{color:#15803d;background:linear-gradient(160deg,#ffffff80,#0000 55%),linear-gradient(145deg,#16a34a2e,#1d4ed814);border-color:#16a34a38}.icon-tile-offline{color:var(--danger);background:linear-gradient(160deg,#ffffff80,#0000 55%),linear-gradient(145deg,#b4231824,#b423180d);border-color:#b423182e}.icon-tile-soft{border-color:var(--line);color:var(--muted);background:linear-gradient(160deg,#ffffffb3,#0000 50%),#f3f8f7;box-shadow:inset 0 1px #fffc}.icon-tile-dot{border:2px solid var(--panel);border-radius:999px;width:11px;height:11px;position:absolute;bottom:-1px;right:-1px}.icon-tile-dot.is-live{background:#16a34a;animation:1.6s ease-in-out infinite icon-dot-pulse}.icon-tile-dot.is-off{background:var(--danger);animation:none}@keyframes icon-dot-pulse{0%,to{transform:scale(1);box-shadow:0 0 #16a34a73}50%{transform:scale(1.08);box-shadow:0 0 0 5px #16a34a00}}.icon-chip{border:1px solid var(--line);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;background:#fff;border-radius:999px;align-items:center;gap:6px;max-width:100%;padding:5px 9px 5px 5px;font-size:11px;font-weight:600;transition:border-color .16s,background .16s,color .16s;display:inline-flex;overflow:hidden}.icon-chip .icon-tile{box-shadow:none;border-radius:8px;width:22px;height:22px}.icon-chip:hover{color:var(--ink);border-color:#1d4ed847}.icon-chip:hover .icon-tile{transform:scale(1.05)}.dashboard-user-card:hover .icon-tile,.session-card:hover .icon-tile,.sessions-search-card:hover .icon-tile{transform:translateY(-1px);box-shadow:inset 0 1px #ffffffa6,0 8px 18px #0f1f2a14}.dashboard-user-card:hover .icon-tile svg,.session-card:hover .icon-tile svg{transform:scale(1.06)}@media (prefers-reduced-motion:reduce){.icon-tile,.icon-tile svg,.icon-chip .icon-tile{transition:none}.icon-tile-dot.is-live{animation:none}.dashboard-user-card:hover .icon-tile,.session-card:hover .icon-tile,.sessions-search-card:hover .icon-tile{transform:none}}.sessions-layout{gap:14px;display:grid}.sessions-search-title{align-items:center;gap:12px;min-width:0;display:flex}.sessions-search-field{align-items:center;gap:10px;display:flex;position:relative}.sessions-search-field>svg{color:var(--muted);pointer-events:none;position:absolute;left:12px}.sessions-search-field input{padding-left:38px}.sessions-empty-icon{color:var(--accent);background:#1d4ed814;border-radius:999px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto;display:inline-flex}.session-card-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.session-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;outline:none;gap:10px;min-width:0;padding:12px;transition:border-color .14s,box-shadow .14s,transform .14s;display:grid;position:relative}.session-card--compact{border-radius:11px;gap:8px;padding:10px 11px}.session-card:hover,.session-card:focus-within{z-index:2;border-color:#1d4ed866;transform:translateY(-1px);box-shadow:0 8px 20px #0f1f2a12}.session-card-head{align-items:center;gap:8px;min-width:0;display:flex}.session-card-top{justify-content:space-between;align-items:flex-start;gap:8px;min-width:0;display:flex}.session-card-user{align-items:center;gap:10px;min-width:0;display:flex}.session-online-icon{border-radius:9px;flex-shrink:0;width:28px;height:28px;animation:1.6s ease-in-out infinite session-online-pulse}.session-online-icon svg{width:14px;height:14px}@keyframes session-online-pulse{0%,to{transform:scale(1);box-shadow:inset 0 1px #ffffff8c,0 0 #16a34a73}50%{transform:scale(1.04);box-shadow:inset 0 1px #ffffff8c,0 0 0 6px #16a34a00}}@media (prefers-reduced-motion:reduce){.session-online-icon{animation:none}}.session-card-user-text{min-width:0}.session-card-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:13px;font-weight:700;line-height:1.25;overflow:hidden}.session-card--compact .session-card-name{font-size:12.5px}.session-card-facts{border-top:1px solid var(--line);gap:6px;margin:0;padding-top:8px;display:grid}.session-card-fact{gap:1px;min-width:0;display:grid}.session-card-fact dt{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:3px;margin:0;font-size:9px;font-weight:700;display:inline-flex}.session-card-fact dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:11.5px;font-weight:700;line-height:1.3;overflow:hidden}.session-card-service-inline{display:none}.session-card--clickable{cursor:pointer;transition:border-color .14s,box-shadow .14s,transform .14s}.session-card--clickable:hover{border-color:#1d4ed859;box-shadow:0 6px 18px #0f1f2a14}.session-card--clickable:active{transform:scale(.99)}.session-card-detail-hint{color:var(--accent-dark);margin-top:8px;font-size:10.5px;font-weight:700}.session-detail-head{align-items:center;gap:12px;min-width:0;margin-bottom:16px;display:flex}.session-detail-facts{border-top:1px solid var(--line);gap:10px;margin:0;padding-top:14px;display:grid}.session-detail-fact{justify-content:space-between;align-items:center;gap:12px;display:flex}.session-detail-fact dt{color:var(--muted);align-items:center;gap:4px;font-size:12px;font-weight:700;display:inline-flex}.session-detail-fact dd{margin:0;font-size:13px;font-weight:700}.session-detail-traffic{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.session-detail-traffic-label{color:var(--accent);letter-spacing:.03em;text-transform:uppercase;align-items:center;gap:4px;margin:0 0 8px;font-size:11px;font-weight:800;display:inline-flex}.traffic-sparkline{gap:4px;display:grid}.traffic-sparkline-svg{width:100%;height:44px;display:block}.traffic-sparkline-line{stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px}.traffic-sparkline-rx{stroke:#1d4ed8}.traffic-sparkline-tx{stroke:#ca8a04}.traffic-sparkline-legend{gap:10px;font-size:10px;font-weight:700;display:flex}.traffic-sparkline-legend-item{align-items:center;gap:3px;display:inline-flex}.traffic-sparkline-legend-item.traffic-sparkline-rx{color:#1d4ed8}.traffic-sparkline-legend-item.traffic-sparkline-tx{color:#ca8a04}.traffic-sparkline-error{color:var(--muted);margin:8px 0 0;font-size:10.5px;font-weight:600}html[data-theme=dark] .traffic-sparkline-rx{color:#2dd4bf;stroke:#2dd4bf}html[data-theme=dark] .traffic-sparkline-tx{color:#facc15;stroke:#facc15}.session-card-meta-row{flex-wrap:wrap;gap:6px;display:flex}.session-card-ips{border:1px solid var(--line);opacity:0;pointer-events:none;visibility:hidden;z-index:5;background:#fff;border-radius:12px;gap:10px;padding:12px;transition:opacity .14s,transform .14s;display:grid;position:absolute;top:calc(100% - 4px);left:8px;right:8px;transform:translateY(4px);box-shadow:0 12px 32px #0f1f2a1f}.session-card:hover .session-card-ips,.session-card:focus-within .session-card-ips{opacity:1;pointer-events:auto;visibility:visible;transform:translateY(0)}.session-card-row{color:var(--muted);align-items:flex-start;gap:10px;display:flex}.session-card-ip-icon{border:1px solid var(--line);color:var(--accent-dark);background:#f7faf9;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.session-card-label{letter-spacing:.03em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.session-card-value{color:var(--ink);overflow-wrap:anywhere;word-break:break-word;margin:1px 0 0;font-size:12px;font-weight:600}.session-presence-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.session-presence-pct{color:#15803d;font-size:10px;font-weight:700}.session-presence-chart{width:100%;height:48px}.session-presence-empty{color:var(--muted);margin:0;font-size:11px;font-weight:600}.notif-root{position:relative}.notif-bell{background:var(--panel);border:1px solid var(--line);color:var(--ink);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;transition:all .14s;display:inline-flex;position:relative}.notif-bell:hover{border-color:var(--accent);color:var(--accent-dark)}.notif-badge{background:var(--danger);border:2px solid var(--panel);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:10px;font-weight:800;display:inline-flex;position:absolute;top:-2px;right:-2px}.notif-popup{background:var(--panel);border:1px solid var(--line);z-index:60;border-radius:14px;width:min(340px,100vw - 24px);max-height:min(420px,70vh);display:grid;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 18px 48px #0f1f2a29}.notif-popup-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.notif-popup-title{margin:0;font-size:14px;font-weight:800}.notif-popup-sub{color:var(--muted);margin:2px 0 0;font-size:12px}.notif-text-btn{color:var(--accent-dark);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:4px 0;font-size:12px;font-weight:700;display:inline-flex}.notif-list{gap:0;max-height:340px;display:grid;overflow-y:auto}.notif-empty{color:var(--muted);text-align:center;margin:0;padding:22px 16px;font-size:13px}.notif-item{border-bottom:1px solid var(--line);align-items:flex-start;gap:8px;padding:12px 14px;display:flex}.notif-item:last-child{border-bottom:none}.notif-item-body{flex:1;min-width:0}.notif-item-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.notif-item-title{margin:0;font-size:13px;font-weight:700}.notif-item-time{color:var(--muted);flex-shrink:0;font-size:11px;font-weight:600}.notif-item-message{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.45}.notif-item-success .notif-item-title{color:#15803d}.notif-item-warning .notif-item-title{color:#b45309}.notif-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.notif-dismiss:hover{color:var(--ink);background:#0f1f2a0d}.mobile-topbar-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.mobile-topbar .notif-bell{border-color:var(--sidebar-line);color:var(--sidebar-ink);background:#ffffff0f}.mobile-topbar .notif-bell:hover{color:#fff;border-color:#ffffff47}.mobile-topbar .notif-badge{border-color:var(--sidebar-bg)}.mobile-topbar .notif-popup{right:0}.settings-page{gap:18px;min-width:0;display:grid}.settings-page .card{min-width:0;overflow:hidden}.settings-page label.grid{min-width:0}.settings-page table{border-collapse:collapse;width:100%}.settings-page table th,.settings-page table td{vertical-align:middle}.settings-page .overflow-x-auto{max-width:100%}.settings-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:6px;margin:0;padding:0 0 8px;display:flex}.settings-tab{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;min-height:36px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.settings-tab:hover{color:var(--ink);background:#1d4ed80f}.settings-tab.is-active{background:var(--panel);border-color:var(--line);box-shadow:0 1px 0 var(--panel);color:var(--ink);font-weight:800}html[data-theme=dark] .settings-tab:hover{background:#4ea2ff14}.dashboard-hero{color:#f4f8ff;background:radial-gradient(120% 140% at 100% 0,#3ec8ff47,#0000 55%),radial-gradient(80% 90% at 0 120%,#c9962c2e,#0000 46%),linear-gradient(145deg,#04122b 0%,#0a2a6a 48%,#1d4ed8 100%);border:1px solid #ffffff1a;border-radius:20px;padding:22px;position:relative;overflow:hidden}.dashboard-hero-glow{pointer-events:none;background:radial-gradient(circle at 18% 120%,#3ec8ff59,#0000 50%),radial-gradient(circle at 88% -10%,#c9962c33,#0000 42%);position:absolute;inset:0}.dashboard-hero-header{z-index:1;justify-content:space-between;align-items:flex-start;gap:12px 16px;display:flex;position:relative}.dashboard-hero-header--compact{margin-bottom:0}.dashboard-hero-top{flex-wrap:wrap;flex:1;justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;display:flex}.dashboard-hero-visual,.dashboard-hero-logo-wrap,.dashboard-hero-logo{display:none}.dashboard-hero-content{z-index:1;gap:12px;min-width:0;margin-top:12px;display:grid;position:relative}.dashboard-hero-badge{color:#e8f1ff;letter-spacing:.04em;text-transform:uppercase;background:#ffffff1a;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:7px;padding:5px 10px 5px 6px;font-size:12px;font-weight:700;display:inline-flex}.dashboard-hero-badge-logo{-o-object-fit:contain;object-fit:contain;width:18px;height:18px}.dashboard-hero-status{border-radius:999px;align-items:center;gap:7px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.dashboard-hero-status.is-online{color:#86efac;background:#16a34a2e}.dashboard-hero-status.is-offline{color:#fde68a;background:#fbbf2429}.dashboard-hero-status .status-dot{background:currentColor;box-shadow:0 0 0 3px #ffffff14}.dashboard-hero-greeting{color:#fff;margin:0;font-size:13px;font-weight:700}.dashboard-hero-greeting strong{color:#fff;font-weight:800}.dashboard-hero-title{letter-spacing:-.02em;margin:2px 0 0;font-size:clamp(22px,4vw,28px);font-weight:800;line-height:1.2}.dashboard-hero-desc{color:#edf7f7c7;max-width:52ch;margin:0;font-size:14px;line-height:1.5}.dashboard-hero-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:6px;display:grid}.dashboard-hero-stat{color:inherit;cursor:pointer;text-align:left;background:#ffffff14;border:1px solid #ffffff1a;border-radius:14px;gap:2px;width:100%;padding:12px 12px 10px;transition:background .14s,border-color .14s,transform .14s;display:grid}.dashboard-hero-stat:hover{background:#ffffff24;border-color:#ffffff38}.dashboard-hero-stat.is-active{background:#ffffff2e;border-color:#ffffff59;box-shadow:0 0 0 1px #ffffff1f}.dashboard-hero-stat-label{color:#edf7f7b3;letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.dashboard-hero-stat-value{letter-spacing:-.02em;margin:4px 0 0;font-size:24px;font-weight:800}.dashboard-hero-stat-hint{color:#edf7f79e;align-items:center;gap:4px;margin-top:4px;font-size:11px;font-weight:600;display:inline-flex}.dashboard-hero-stat-hint svg{transition:transform .14s}.dashboard-hero-stat-hint svg.is-open{transform:rotate(180deg)}.dashboard-detail-panel{animation:.22s cubic-bezier(.22,1,.36,1) dashboard-detail-in}@keyframes dashboard-detail-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.dashboard-detail-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.dashboard-detail-grid--dense{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}@media (max-width:560px){.dashboard-detail-grid--dense{grid-template-columns:1fr}}.dashboard-user-card{border:1px solid var(--line);background:#f7faf9;border-radius:14px;gap:12px;min-width:0;padding:14px;transition:border-color .15s,box-shadow .15s,transform .15s;display:grid}.dashboard-user-card.is-compact{gap:8px;padding:12px 14px}.dashboard-user-card.is-mini{border-radius:12px;gap:4px;padding:10px 12px}.dashboard-user-card.is-mini .dashboard-user-card-name{font-size:13px;font-weight:700}.dashboard-user-card.is-mini .dashboard-user-status-badge{padding:3px 7px;font-size:10px}.dashboard-user-card-meta{color:var(--muted);align-items:center;gap:4px;margin:0;font-size:11px;font-weight:600;display:inline-flex}.dashboard-user-card:hover{border-color:#1d4ed852;transform:translateY(-1px);box-shadow:0 10px 24px #0f1f2a0f}.dashboard-user-card.is-disabled{background:#faf7f7}.dashboard-user-card-top{align-items:flex-start;gap:10px;min-width:0;display:flex}.dashboard-user-card.is-compact .dashboard-user-card-top,.dashboard-user-card.is-mini .dashboard-user-card-top{align-items:center}.dashboard-user-card.is-mini .dashboard-user-card-name,.dashboard-user-card-text{flex:1;min-width:0}.dashboard-user-card-name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:14px;font-weight:700;overflow:hidden}.dashboard-user-card-sub{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;align-items:center;gap:6px;margin:4px 0 0;font-size:11px;font-weight:700;display:inline-flex}.dashboard-user-status-badge{white-space:nowrap;border-radius:999px;flex-shrink:0;padding:4px 8px;font-size:11px;font-weight:700}.dashboard-user-card-chips{flex-wrap:wrap;gap:6px;display:flex}.dashboard-user-card-ips{border-top:1px solid var(--line);gap:8px;padding-top:10px;display:grid}.dashboard-user-ip{color:var(--muted);align-items:flex-start;gap:8px;display:flex}.dashboard-user-ip-label{letter-spacing:.03em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.dashboard-user-ip-value{color:var(--ink);overflow-wrap:anywhere;word-break:break-word;margin:1px 0 0;font-size:12px;font-weight:600}@media (prefers-reduced-motion:reduce){.dashboard-detail-panel{animation:none}.dashboard-user-card:hover{transform:none}}@media (max-width:560px){.dashboard-detail-grid{grid-template-columns:1fr}}.dashboard-hero-cta{color:var(--accent-dark);background:#fff;border-radius:10px;justify-content:center;align-items:center;width:fit-content;margin-top:4px;padding:10px 14px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.dashboard-hero-cta:hover{background:#f0faf8}.mobile-topbar{background:var(--sidebar-bg);color:var(--sidebar-ink);padding:12px 14px;padding-top:max(12px, env(safe-area-inset-top));z-index:50;justify-content:space-between;align-items:center;gap:12px;position:sticky;top:0}.mobile-topbar-brand{align-items:center;gap:10px;min-width:0;display:flex}.mobile-topbar-logo{width:38px;height:38px}.mobile-topbar-kicker{color:var(--sidebar-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.mobile-topbar-title{margin:0;font-size:15px;font-weight:800;line-height:1.2}.mobile-logout{border:1px solid var(--sidebar-line);color:var(--sidebar-muted);cursor:pointer;background:#ffffff0f;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;min-height:40px;padding:8px 12px;font-size:13px;font-weight:700;transition:all .14s;display:inline-flex}.mobile-logout:hover,.mobile-logout:active{color:#ff9c92;background:#b423182e;border-color:#ff8a7f4d}.bottom-nav{padding:0 12px calc(10px + env(safe-area-inset-bottom));pointer-events:none;z-index:50;position:fixed;bottom:0;left:0;right:0}.bottom-nav-inner{pointer-events:auto;-webkit-backdrop-filter:blur(16px);background:#0e2a28f0;border:1px solid #ffffff1a;border-radius:20px;grid-template-columns:repeat(6,minmax(0,1fr));gap:2px;padding:8px;display:grid;box-shadow:0 12px 40px #08181659}.bottom-nav-link{color:var(--sidebar-muted);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:56px;padding:8px 4px;text-decoration:none;transition:background .2s,color .2s,transform .2s cubic-bezier(.22,1,.36,1);display:flex}.bottom-nav-link:active{transform:scale(.96)}.bottom-nav-link.active{color:#edf7f7;background:#ffffff1a}.bottom-nav-icon-wrap{border-radius:12px;justify-content:center;align-items:center;width:36px;height:28px;transition:background .2s,transform .2s cubic-bezier(.22,1,.36,1);display:flex}.bottom-nav-link.active .bottom-nav-icon-wrap{background:#1d4ed859}.bottom-nav-label{letter-spacing:.01em;font-size:11px;font-weight:700;line-height:1;transition:opacity .18s}@media (max-width:420px){.bottom-nav{padding-left:6px;padding-right:6px}.bottom-nav-inner{padding:6px 4px}.bottom-nav-link{min-height:54px;padding-left:1px;padding-right:1px}.bottom-nav-label{font-size:10px}}@media (max-width:900px){.desktop-only{display:none!important}.mobile-only{display:flex}.bottom-nav.mobile-only{display:block}.app-shell{--nav-w:0px;padding-bottom:calc(88px + env(safe-area-inset-bottom));grid-template-rows:auto 1fr;grid-template-columns:1fr;padding-left:0}.app-content{gap:14px;min-width:0;padding:14px 14px 8px;overflow-x:hidden}.app-content-header{flex-direction:column;align-items:flex-start;gap:10px}.app-content-title{font-size:20px}.app-content-body{gap:14px}.session-card-grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}.app-content-header{padding-right:0}.dashboard-hero{border-radius:16px;padding:16px}.dashboard-hero-header{align-items:center}.dashboard-hero-logo-wrap{width:clamp(96px,28vw,150px);padding:6px 10px}.dashboard-hero-content{margin-top:12px}.dashboard-hero-stat-value{font-size:22px}}@media (max-width:560px){.card{border-radius:12px}.session-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero-stats{gap:8px}.dashboard-hero-stat{padding:10px 8px 8px}.dashboard-hero-stat-value{font-size:20px}.dashboard-hero-logo-wrap{border-radius:10px;width:clamp(84px,30vw,120px);padding:5px 8px}.dashboard-hero-badge,.dashboard-hero-status{padding:5px 8px;font-size:11px}.icon-button{width:40px;height:40px}.btn{min-height:40px}.app-content{padding:10px 10px 4px}.card{border-radius:11px;padding:12px!important}.card.p-5,.card.p-4{padding:12px!important}.session-card--compact{gap:6px;padding:8px 9px}.session-card-fact dd{font-size:11px}.dashboard-user-card.is-mini{padding:8px 10px}.router-status-title{font-size:14px}.app-content-title{font-size:1.15rem}.panel-header{gap:8px}}html[data-theme=dark] .dashboard-hero-cta{color:var(--accent-dark);background:#1a2b32}html[data-theme=dark] .dashboard-user-card{background:#0f1a1f}html[data-theme=dark] .f7faf9,html[data-theme=dark] .session-card{background:var(--panel)}.vpn-status-legend{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:12px;display:flex}.vpn-status-legend-item{color:var(--muted);align-items:center;gap:5px;font-size:11px;font-weight:700;display:inline-flex}.vpn-users-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.vpn-user-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:10px;min-width:0;padding:12px 12px 10px;transition:border-color .14s,box-shadow .14s;display:grid}.vpn-user-card:hover{border-color:#1d4ed852;box-shadow:0 8px 18px #0f1f2a0d}.vpn-user-card.is-online{border-color:#16a34a47}.vpn-user-card-top{justify-content:space-between;align-items:flex-start;gap:10px;min-width:0;display:flex}.vpn-user-card-id{flex:1;min-width:0}.vpn-user-name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;font-weight:800;line-height:1.25;overflow:hidden}.vpn-user-secret-tag{color:var(--danger);background:#b423181a;border-radius:999px;margin-top:5px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-block}.vpn-user-ip{color:var(--muted);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:11px;font-weight:600;overflow:hidden}.vpn-user-card-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:4px;padding-top:8px;display:flex}.vpn-status-icons{flex-shrink:0;justify-content:flex-end;align-items:center;gap:6px;min-height:22px;display:flex}@media (max-width:420px){.vpn-users-grid{grid-template-columns:1fr}}.vpn-status-icon-wrap{align-items:center;line-height:0;display:inline-flex}.vpn-status-icon.is-online{color:#16a34a}.vpn-status-icon.is-active{color:#ca8a04}.vpn-status-icon.is-allowed{color:#1d4ed8}.vpn-status-icon.is-forbidden{color:var(--danger)}.vpn-status-spin{animation:1.2s linear infinite vpn-status-spin}@keyframes vpn-status-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.vpn-status-spin{animation:none}}.vpn-status-empty{color:var(--muted);font-weight:600}.vpn-user-row.is-disabled-secret{opacity:.72}html[data-theme=dark] .vpn-status-icon.is-online{color:#4ade80}html[data-theme=dark] .vpn-status-icon.is-active{color:#facc15}html[data-theme=dark] .vpn-status-icon.is-allowed{color:#2dd4bf}.topology-actions{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.topology-actions .btn{flex:0 0 38px;justify-content:center;align-items:center;width:38px;min-width:38px;height:38px;padding:0}.topology-actions .btn span{display:none}.topology-toolbar{background:var(--panel);z-index:8;flex-wrap:wrap;position:sticky;top:0}.topology-toolbar-menus{flex:auto;align-items:center;gap:8px;width:100%;min-width:0;display:flex}.topology-toolbar-end{flex:auto;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.topology-toolbar .btn[aria-label]{position:relative}.topology-toolbar .btn[aria-label]:after{background:var(--panel);border:1px solid var(--line);color:var(--ink);content:attr(aria-label);letter-spacing:0;opacity:0;pointer-events:none;white-space:nowrap;z-index:60;border-radius:8px;padding:6px 9px;font-weight:700;line-height:1.25;position:absolute;top:calc(100% + 6px);bottom:auto;left:50%;transform:translate(-50%);box-shadow:0 8px 18px #0f1f2a1a;font-size:11px!important}.topology-actions .btn[aria-label]:after{left:0;transform:none}.topology-toolbar-actions .btn[aria-label]:after{left:auto;right:0;transform:none}@media (hover:hover){.topology-toolbar .btn[aria-label]:hover:after,.topology-toolbar .btn[aria-label]:focus-visible:after{opacity:1}}.topology-actions,.topology-toolbar,.topology-link-list div{align-items:center;gap:8px;display:flex}.topology-layout{grid-template-columns:minmax(0,1fr) 280px;gap:14px;display:grid}.topology-workspace{min-width:0;overflow:hidden;padding:0!important}.topology-toolbar{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;padding:10px 12px;font-size:12px;font-weight:700}.topology-canvas{touch-action:none;background-color:#f7faf9;background-image:radial-gradient(circle,#1d4ed829 1px,#0000 1px);background-size:24px 24px;min-width:0;height:620px;position:relative;overflow:auto}.topology-links{pointer-events:none;z-index:4;width:4200px;height:4200px;position:absolute;top:0;left:0;overflow:visible}.topology-links .topology-cable{pointer-events:visiblePainted}.topology-cable-core{fill:none;stroke:#91a6a1;stroke-linecap:round;stroke-width:1px}.topology-cable-pulse{fill:#0f9f91}.topology-cable-tail{fill:none;opacity:.42;stroke:#0f9f91;stroke-linecap:round;stroke-width:1.5px}.topology-links text{fill:var(--muted);paint-order:stroke;stroke:var(--panel);stroke-width:5px;text-anchor:middle;font-size:11px;font-weight:800}.topology-node{background:var(--panel);cursor:grab;z-index:2;border:2px solid #86a49d;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:130px;height:84px;padding:8px;display:flex;position:absolute;box-shadow:0 8px 22px #0f1f2a17}.topology-node:active{cursor:grabbing}.topology-node strong,.topology-node small{text-overflow:ellipsis;white-space:nowrap;max-width:112px;overflow:hidden}.topology-node strong{font-size:12px}.topology-node small{color:var(--muted);font-size:10px}.topology-node-icon{color:#1d4ed8;line-height:0;position:relative}.topology-node-icon i{border:2px solid var(--panel);background:#94a3b8;border-radius:50%;width:10px;height:10px;position:absolute;top:-6px;right:-8px}.topology-node.status-warning .topology-node-icon i{background:#f59e0b}.topology-node.status-down .topology-node-icon i{background:#ef4444}.topology-node.color-blue{border-color:#60a5fa}.topology-node.color-violet{border-color:#a78bfa}.topology-node.color-amber{border-color:#fbbf24}.topology-node.color-rose{border-color:#fb7185}.topology-node.color-slate{border-color:#94a3b8}.topology-inspector{align-self:start;padding:16px!important}.topology-inspector h2{margin:0 0 14px;font-size:15px}.topology-form{gap:11px;display:grid}.topology-form label{color:var(--muted);gap:5px;font-size:11px;font-weight:800;display:grid}.topology-form input,.topology-form select{background:var(--panel);border:1px solid var(--line);color:var(--text);font:inherit;border-radius:8px;padding:9px}.topology-empty{color:var(--muted);font-size:12px;line-height:1.6}.topology-link-list{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.topology-link-list h3{margin:0 0 8px;font-size:12px}.topology-link-list div{border-bottom:1px solid var(--line);justify-content:space-between;padding:7px 0;font-size:10px}.topology-link-list button{color:var(--danger);cursor:pointer;background:0 0;border:0}.btn-small{font-size:11px;min-height:32px!important;padding:6px 9px!important}@keyframes topology-pulse{50%{box-shadow:0 0 0 7px #1d4ed81f}}html[data-theme=dark] .topology-cable-pulse,html[data-theme=dark] .topology-cable-plug{fill:#2dd4bf}html[data-theme=dark] .topology-cable-tail{stroke:#2dd4bf}@media (prefers-reduced-motion:reduce){.topology-cable-pulse{display:none}}.topology-icon-preview{color:#1d4ed8;background:#1d4ed814;border:1px solid #1d4ed82e;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:11px;font-weight:800;display:flex}html[data-theme=dark] .topology-icon-preview{color:#5eead4;background:#4ea2ff14}.topology-icon-picker{grid-template-columns:repeat(3,1fr);gap:5px;display:grid}.topology-icon-picker button{background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:54px;padding:5px 3px;font-size:8px;font-weight:700;display:flex}.topology-icon-picker button span{text-overflow:ellipsis;white-space:nowrap;max-width:72px;overflow:hidden}.topology-icon-picker button:hover{color:#1d4ed8;border-color:#5ca69d}.topology-icon-picker button.active{color:#1d4ed8;background:#1d4ed81a;border-color:#1d4ed8;box-shadow:0 0 0 2px #1d4ed81a}html[data-theme=dark] .topology-icon-picker button.active{color:#5eead4}.topology-link-list .topology-link-row{grid-template-columns:1fr auto;align-items:stretch;gap:5px;padding:8px 0;display:grid}.topology-link-row span{grid-column:1/-1}.topology-link-row input{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:6px;min-width:0;padding:6px 7px;font-size:10px}.topology-link-row button{padding:4px 5px}.topology-node-tooltip{color:#fff;opacity:0;pointer-events:none;text-align:left;visibility:hidden;z-index:80;background:#10211e;border:1px solid #ffffff1f;border-radius:10px;gap:7px;min-width:200px;max-width:min(280px,100vw - 48px);padding:11px 12px;transition:opacity .16s;display:grid;position:fixed;inset:12px auto auto 12px;transform:none;box-shadow:0 12px 28px #02120f40}.topology-node:hover .topology-node-tooltip,.topology-node:focus-visible .topology-node-tooltip{opacity:1;visibility:visible;transform:none}.topology-node-tooltip b{font-size:12px}.topology-node-tooltip>span{grid-template-columns:45px auto;align-items:center;gap:5px;font-size:10px;display:grid}.topology-node-tooltip em{color:#9fb7b1;font-style:normal}.topology-node-tooltip .tooltip-status{background:#94a3b8;border-radius:50%;width:7px;height:7px;margin-right:2px;display:inline-block}.topology-node-tooltip .tooltip-status.status-up{background:#22c55e}.topology-node-tooltip .tooltip-status.status-warning{background:#f59e0b}.topology-node-tooltip .tooltip-status.status-down{background:#ef4444}.tooltip-status-value{align-items:center;gap:5px;display:flex}.topology-census{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:var(--panel);border:1px solid var(--line);color:var(--ink);letter-spacing:.01em;pointer-events:none;white-space:nowrap;z-index:20;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:800;position:absolute;top:10px;left:10px;box-shadow:0 8px 20px #0f1f2a14}.topology-node.is-dimmed,.topology-chassis.is-dimmed{opacity:.28;transition:opacity .18s}.topology-cable.is-dimmed{opacity:.16;transition:opacity .18s}html[data-theme=dark] .topology-census,html[data-theme=dark] .topology-hover-dock{background:color-mix(in srgb,var(--panel) 82%,transparent);border-color:#4ea2ff38}.topology-hover-dock{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));color:var(--ink);pointer-events:none;z-index:21;border-radius:16px;gap:6px;width:220px;max-width:min(240px,100% - 24px);padding:11px 13px;display:grid;position:absolute;top:12px;bottom:auto;left:12px;box-shadow:0 14px 32px #0f1f2a1f}@media (max-width:900px){.topology-hover-dock{display:none!important}}.topology-hover-dock header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.topology-hover-dock b{letter-spacing:-.02em;font-size:13px;font-weight:800;line-height:1.25}.topology-hover-dock p{color:var(--muted);margin:0;font-size:11px;font-weight:700;line-height:1.3}.topology-hover-dock .tooltip-status-value{white-space:nowrap;background:#1d4ed814;border-radius:999px;flex:none;gap:5px;padding:3px 7px;font-size:10px}.topology-hover-dock .topology-hover-rate{color:var(--accent);font-variant-numeric:tabular-nums}html[data-theme=dark] .topology-hover-dock{background:color-mix(in srgb,var(--panel) 78%,transparent);border-color:#4ea2ff38;box-shadow:0 14px 32px #00000047}html[data-theme=dark] .topology-hover-dock .tooltip-status-value{background:#4ea2ff1f}@media (min-width:901px){.topology-node-tooltip,.topology-chassis-tip{display:none!important}.topology-device-detail{max-width:280px;top:12px;bottom:auto;left:12px}}@media (max-width:900px){.topology-layout{grid-template-columns:1fr}.topology-inspector{order:1}.topology-canvas{height:500px}.topology-actions{flex-wrap:nowrap;width:auto;min-width:0}.bottom-nav-inner{justify-content:flex-start;overflow-x:auto}.bottom-nav-link{min-width:70px}}.topology-layout{grid-template-columns:minmax(0,1fr)}.topology-inspector{order:-1;width:auto}.topology-form{grid-template-columns:repeat(4,minmax(120px,1fr));align-items:end}.topology-form>.topology-icon-picker{grid-column:1/-1}.topology-form>.topology-icon-preview{min-height:42px}.topology-form>.btn-danger{align-self:end}.topology-link-list{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px;display:grid}.topology-link-list>h3{grid-column:1/-1}@media (max-width:760px){.topology-form{grid-template-columns:1fr}.topology-form>.topology-icon-picker{grid-column:auto}.topology-icon-picker{grid-template-columns:repeat(3,1fr)}}.topology-inspector{background:linear-gradient(180deg,var(--panel),#f7faf9b8);border-color:#1d4ed824;overflow:hidden;padding:0!important}.topology-inspector-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.topology-inspector-head h2{margin:2px 0 0;font-size:15px}.topology-inspector-kicker{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:800}.topology-selected-status{color:var(--muted);background:#eef2f1;border-radius:999px;align-items:center;padding:5px 9px;font-size:10px;font-weight:800;display:inline-flex}.topology-selected-status.status-up{color:#15803d;background:#22c55e1f}.topology-selected-status.status-warning{color:#a16207;background:#f59e0b21}.topology-selected-status.status-down{color:#b42318;background:#ef44441f}.topology-form{grid-template-columns:1.35fr 1.1fr 1fr .9fr .8fr auto;align-items:end;gap:10px;padding:14px 16px;display:grid}.topology-form label{gap:6px;font-size:10px}.topology-form input,.topology-form select{border-radius:9px;min-height:38px;padding:8px 10px}.topology-form>.topology-icon-picker{scrollbar-width:thin;grid-column:1/-1;gap:6px;padding:2px 1px 5px;display:flex;overflow-x:auto}.topology-icon-picker button{flex:0 0 76px;min-height:50px}.topology-delete-device{color:var(--danger);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #b4231833;border-radius:9px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:8px 10px;font-size:10px;font-weight:800;display:flex}.topology-delete-device:hover{background:#b4231814}.topology-empty-state{color:var(--muted);align-items:center;gap:12px;padding:18px 16px;display:flex}.topology-empty-state strong{color:var(--text);font-size:12px}.topology-empty-state p{margin:3px 0 0;font-size:10px}.topology-link-list{border-top:1px solid var(--line);background:#1d4ed806;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px;margin:0;padding:12px 16px;display:grid}.topology-link-heading{grid-column:1/-1;border:0!important;justify-content:space-between!important;align-items:center!important;padding:0 0 3px!important;display:flex!important}.topology-link-heading h3{margin:0;font-size:11px}.topology-link-heading span{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:3px 7px;font-size:9px}.topology-link-list .topology-link-row{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px}.topology-icon-preview{display:none}html[data-theme=dark] .topology-inspector{background:linear-gradient(180deg,var(--panel),#071012e0)}@media (max-width:1050px){.topology-form{grid-template-columns:repeat(3,1fr)}.topology-delete-device{width:100%}}@media (max-width:760px){.topology-form{grid-template-columns:1fr}.topology-form>.topology-icon-picker{grid-column:1}.topology-inspector-head,.topology-form{padding:12px}.topology-link-list{padding:10px 12px}}.topology-layout{grid-template-columns:minmax(0,1fr);align-items:start}.topology-inspector{order:0;max-height:calc(100vh - 150px);position:sticky;top:18px;overflow-y:auto}.topology-inspector-head-actions{align-items:center;gap:8px;display:flex}.topology-inspector-toggle{border:1px solid var(--line);color:var(--accent);cursor:pointer;background:#1d4ed80f;border-radius:8px;justify-content:center;align-items:center;min-width:32px;height:32px;padding:0;display:flex}.topology-inspector-toggle:hover{background:#1d4ed81f;border-color:#1d4ed84d}.topology-inspector.collapsed{overflow:hidden}.topology-inspector.collapsed .topology-inspector-head{justify-content:center;padding:9px 7px}.topology-inspector.collapsed .topology-inspector-head>div:first-child,.topology-inspector.collapsed .topology-selected-status{display:none}.topology-inspector.collapsed .topology-inspector-head-actions{gap:0}.topology-form{grid-template-columns:1fr 1fr}.topology-inspector.collapsed .topology-inspector-head{border-bottom:0}.topology-inspector.collapsed .topology-link-list{display:none}.topology-form>label:first-child,.topology-form>label:nth-child(2),.topology-form>.topology-icon-picker{grid-column:1/-1}.topology-form>.topology-icon-picker{grid-template-columns:repeat(3,1fr);max-height:184px;padding:2px;display:grid;overflow-y:auto}.topology-icon-picker button{width:100%;min-width:0}.topology-delete-device{grid-column:1/-1;width:100%}.topology-link-list{grid-template-columns:1fr}@media (max-width:1100px){.topology-layout,.topology-layout.editor-collapsed{grid-template-columns:1fr}.topology-inspector{order:1;max-height:none;position:static}.topology-inspector.collapsed{justify-self:stretch;width:100%}.topology-form{grid-template-columns:repeat(3,1fr)}.topology-form>label:first-child,.topology-form>label:nth-child(2){grid-column:auto}.topology-form>.topology-icon-picker{grid-column:1/-1;max-height:none;display:flex;overflow:auto hidden}.topology-delete-device{grid-column:auto}}@media (max-width:760px){.topology-form{grid-template-columns:1fr}.topology-form>label:first-child,.topology-form>label:nth-child(2),.topology-form>.topology-icon-picker,.topology-delete-device{grid-column:1}.topology-form>.topology-icon-picker{grid-template-columns:repeat(3,1fr);max-height:184px;display:grid;overflow-y:auto}}.topology-device-detail{z-index:15;background:#fffffff5;border:1px solid #1d4ed82e;border-radius:13px;grid-template-columns:auto 1fr;align-items:center;gap:10px;min-width:300px;padding:12px 14px;display:grid;position:absolute;bottom:14px;left:14px;box-shadow:0 16px 38px #0f1f2a29}.topology-detail-close{background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:25px;height:25px;display:flex;position:absolute;top:8px;right:8px}.topology-detail-icon{color:var(--accent);background:#1d4ed817;border:1px solid #1d4ed829;border-radius:10px;justify-content:center;align-items:center;width:46px;height:46px;display:flex}.topology-detail-title{gap:2px;padding-right:24px;display:grid}.topology-detail-title span{color:var(--muted);text-transform:uppercase;font-size:9px;font-weight:800}.topology-detail-title strong{font-size:14px}.topology-detail-title small{color:var(--muted);font-size:11px;font-weight:700}.topology-detail-edit{display:none}.topology-device-detail dl{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.topology-device-detail dl div{background:#1d4ed809;border-radius:8px;padding:7px 8px}.topology-device-detail dt{color:var(--muted);text-transform:uppercase;font-size:8px;font-weight:800}.topology-device-detail dd{text-overflow:ellipsis;white-space:nowrap;max-width:130px;margin:3px 0 0;font-size:10px;font-weight:750;overflow:hidden}.detail-status{align-items:center;gap:5px;display:flex}.detail-status i{background:#94a3b8;border-radius:50%;width:7px;height:7px}.detail-status.status-up i{background:#22c55e}.detail-status.status-warning i{background:#f59e0b}.detail-status.status-down i{background:#ef4444}html[data-theme=dark] .topology-device-detail{background:#0f1a1ff5}@media (max-width:560px){.topology-device-detail{min-width:calc(100% - 16px);bottom:8px;left:8px}}.mikrotik-device-icon,.vendor-device-icon,.glyph-device-icon{-o-object-fit:contain;object-fit:contain;width:auto;max-width:100%;height:auto;display:block}.vendor-letter-icon{letter-spacing:-.06em;border:2px solid;border-radius:3px;justify-content:center;align-items:center;height:1.5em;padding:0 .18em;font-weight:900;line-height:1;display:flex}.topology-node-icon .vendor-device-icon,.topology-node-icon .glyph-device-icon{max-width:34px;max-height:28px}.topology-icon-picker .vendor-device-icon,.topology-icon-picker .glyph-device-icon{max-width:28px;max-height:22px}.topology-detail-icon .vendor-device-icon,.topology-detail-icon .glyph-device-icon{max-width:36px;max-height:30px}html[data-theme=dark] .mikrotik-device-icon,html[data-theme=dark] .vendor-device-icon,html[data-theme=dark] .glyph-device-icon,html[data-theme=dark] .topology-chassis-logo{filter:invert()hue-rotate(180deg)}.vendor-badge-icon{display:inline-flex;position:relative}.vendor-badge-mark{-o-object-fit:contain;object-fit:contain;background:#fff;border-radius:3px;width:52%;height:52%;padding:1.5px;position:absolute;bottom:-2px;right:-2px;box-shadow:0 0 0 1px #0f1f2a24}html[data-theme=dark] .vendor-badge-mark{background:#0f1d22;box-shadow:0 0 0 1px #5eead438}.topology-link-list:not(.open){max-height:54px;overflow:hidden}.topology-link-list:not(.open) .topology-link-row{display:none!important}.topology-link-heading{cursor:pointer;outline:none}.topology-link-heading:after{color:var(--muted);content:"▾";margin-left:4px;font-size:11px;transition:transform .18s}.topology-link-list.open .topology-link-heading:after{transform:rotate(180deg)}.topology-link-heading:focus-visible{border-radius:7px;box-shadow:inset 0 0 0 2px #1d4ed840}.topology-device-detail{display:none!important}@media (max-width:900px){.mobile-topbar{box-sizing:border-box;width:100%;min-width:0;max-width:100vw}.mobile-topbar-brand{flex:auto;gap:8px;overflow:hidden}.mobile-topbar-brand .sidebar-brand-mark{width:38px;height:38px}.mobile-topbar-copy{min-width:0}.mobile-topbar-kicker,.mobile-topbar-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-topbar-actions{flex:none;gap:6px}.mobile-topbar-actions .theme-toggle,.mobile-topbar-actions .notif-bell,.mobile-logout{width:38px;height:38px;min-height:38px}.mobile-topbar-actions .theme-toggle,.mobile-topbar-actions .notif-bell{padding:0}.mobile-logout{justify-content:center;padding:0}.mobile-logout span{display:none}.bottom-nav{overflow:hidden}.bottom-nav-inner{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:3px;padding:7px;display:flex;overflow-x:auto}.bottom-nav-inner::-webkit-scrollbar{display:none}.bottom-nav-link{flex:1 0 64px;min-width:64px;padding-left:3px;padding-right:3px}.app-content-action{max-width:100%;overflow-x:auto}.topology-actions{min-width:max-content}}@media (max-width:370px){.mobile-topbar{gap:6px;padding-left:8px;padding-right:8px}.mobile-topbar-brand{gap:6px}.mobile-topbar-brand .sidebar-brand-mark,.mobile-topbar-logo{width:36px;height:36px}.mobile-topbar-kicker{font-size:8px}.mobile-topbar-title{font-size:13px}.mobile-topbar-actions{gap:4px}.mobile-topbar-actions .theme-toggle,.mobile-topbar-actions .notif-bell,.mobile-logout{width:34px;height:34px;min-height:34px}.bottom-nav-link{flex-basis:60px;min-width:60px}}.neighbor-modal-backdrop{isolation:isolate!important;z-index:10000!important}.neighbor-modal{z-index:1;position:relative}.topology-node-tooltip{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--text);background:#ffffffd1;border-color:#1d4ed833;box-shadow:0 12px 28px #0f1f2a24}.topology-node-tooltip:after{display:none}.topology-node-tooltip em{color:var(--muted)}html[data-theme=dark] .topology-node-tooltip{color:var(--text);background:#0e1b20d1;border-color:#5eead433;box-shadow:0 12px 28px #0000003d}.topology-link-list{scrollbar-color:#1d4ed859 transparent;scrollbar-width:thin;align-content:start;gap:7px;max-height:270px;display:grid;overflow:hidden auto}.topology-link-list::-webkit-scrollbar{width:6px}.topology-link-list::-webkit-scrollbar-track{background:0 0}.topology-link-list::-webkit-scrollbar-thumb{background:#1d4ed847;border-radius:999px}.topology-link-heading{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:3;position:sticky;top:-12px;background:#f7faf9e6!important}.topology-link-list .topology-link-row{grid-template-columns:minmax(0,1fr) 28px;transition:border-color .16s,box-shadow .16s,transform .16s;box-shadow:0 3px 10px #0f1f2a0a;gap:6px!important;display:grid!important}.topology-link-list .topology-link-row:hover{border-color:#1d4ed847;transform:translateY(-1px);box-shadow:0 6px 15px #0f1f2a14}.topology-link-row>span{color:var(--text);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:10px;font-weight:750;overflow:hidden}.topology-link-row>input{border:1px solid var(--line);color:var(--text);background:#1d4ed809;border-radius:7px;width:100%;min-width:0;padding:6px 8px;font-size:9px}.topology-link-row>button{justify-content:center;align-items:center;display:flex;border:1px solid #b4231824!important;border-radius:7px!important}.topology-link-row>button:hover{background:#b4231814!important}html[data-theme=dark] .topology-link-heading{background:#0e1b20eb!important}html[data-theme=dark] .topology-link-list .topology-link-row{box-shadow:0 3px 12px #00000024}.neighbor-results{max-height:620px;overflow:auto}.neighbor-results h3{letter-spacing:.04em;text-transform:uppercase;margin:0;padding:13px 18px 0;font-size:10px}.neighbor-results .neighbor-list{max-height:none;padding-top:10px}.ethernet-section{border-bottom:1px solid var(--line)}.ethernet-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:7px;padding:10px 18px 15px;display:grid}.ethernet-port{border:1px solid var(--line);background:#1d4ed809;border-radius:9px;align-items:center;gap:8px;padding:8px;display:flex}.ethernet-port>i{background:#ef4444;border-radius:50%;width:8px;height:8px}.ethernet-port.is-up>i{background:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.ethernet-port div{gap:2px;display:grid}.ethernet-port strong{font-size:10px}.ethernet-port span{color:var(--muted);font-size:8px}.neighbor-modal-backdrop{z-index:100;background:#030d1194;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.neighbor-modal{width:100%;max-width:760px;max-height:min(720px,90vh);overflow:hidden;padding:0!important}.neighbor-modal header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.neighbor-modal header span{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:850}.neighbor-modal header h2{align-items:center;gap:7px;margin:3px 0 0;font-size:16px;display:flex}.neighbor-modal header>button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.neighbor-scan-bar{background:#1d4ed80a;justify-content:space-between;align-items:center;padding:10px 18px;display:flex}.neighbor-scan-bar p{color:var(--muted);margin:0;font-size:11px;font-weight:750}.neighbor-error{color:var(--danger);background:#b4231814;margin:12px 18px;padding:10px;font-size:11px}.neighbor-list{gap:8px;max-height:540px;padding:14px 18px 18px;display:grid;overflow:auto}.neighbor-list article{border:1px solid var(--line);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:11px 12px;display:flex}.neighbor-list article>div{gap:3px;min-width:0;display:grid}.neighbor-list strong{font-size:12px}.neighbor-list span{color:var(--text);font-size:10px}.neighbor-list small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.neighbor-empty{color:var(--muted);text-align:center;padding:28px;font-size:11px}.spin{animation:.9s linear infinite neighbor-spin}@keyframes neighbor-spin{to{transform:rotate(360deg)}}@media (max-width:600px){.neighbor-modal-backdrop{padding:8px}.neighbor-list article{flex-direction:column;align-items:stretch}.neighbor-list article button{width:100%}}.neighbor-modal-backdrop{pointer-events:none;background:0 0;justify-content:flex-end;align-items:flex-start;padding:72px 18px 18px}.neighbor-modal{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto;border-color:#1d4ed833;max-width:560px;max-height:calc(100vh - 90px);box-shadow:0 18px 45px #0f1f2a2e;background:#ffffffd1!important}.neighbor-modal header,.neighbor-scan-bar{background:#ffffff61}html[data-theme=dark] .neighbor-modal{border-color:#5eead433;box-shadow:0 18px 45px #00000047;background:#0e1b20d6!important}html[data-theme=dark] .neighbor-modal header,html[data-theme=dark] .neighbor-scan-bar{background:#0e1b2061}@media (max-width:600px){.neighbor-modal-backdrop{padding:64px 8px 8px}.neighbor-modal{max-width:calc(100vw - 16px);max-height:calc(100vh - 72px)}}.topology-node-icon .mikrotik-device-icon{-o-object-fit:contain;object-fit:contain;width:32px;max-width:32px;height:28px;max-height:28px}.topology-node-icon:has(.mikrotik-device-icon){justify-content:center;align-items:center;display:flex}.topology-icon-picker .mikrotik-device-icon{-o-object-fit:contain;object-fit:contain;width:26px;max-width:26px;height:20px}.topology-detail-icon .mikrotik-device-icon{-o-object-fit:contain;object-fit:contain;width:32px;max-width:32px;height:28px}.topology-node.status-up .topology-node-icon{color:#2563eb;border-color:#3b82f6;animation:1.8s ease-in-out infinite topology-online-blink}.topology-node.status-up .topology-node-icon i{background:#22c55e}@keyframes topology-online-blink{0%,to{box-shadow:0 0 #3b82f61f,0 7px 18px #0f1f2a1c}50%{box-shadow:0 0 0 7px #3b82f638,0 9px 25px #2563eb47}}@media (prefers-reduced-motion:reduce){.topology-node.status-up .topology-node-icon{animation:none;box-shadow:0 0 0 3px #3b82f62e,0 7px 18px #0f1f2a1c}}.topology-lock-device{border:1px solid var(--line);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:9px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:8px 10px;font-size:10px;font-weight:800;display:flex}.topology-lock-device:hover,.topology-lock-device.active{color:var(--accent);background:#1d4ed814;border-color:#1d4ed847}.topology-node.locked{cursor:default}.topology-node-lock{background:var(--panel);box-sizing:content-box;color:var(--accent);border-radius:50%;padding:3px;position:absolute;bottom:-4px;right:-7px}.topology-form>.topology-lock-device{grid-column:1/-1;width:100%}.topology-node{box-shadow:none;background:0 0;border:0;border-radius:0;gap:3px;padding:4px 6px}.topology-node:hover{box-shadow:none;background:0 0}.topology-node.selected{box-shadow:none}.topology-node-icon{background:#ffffffeb;border:1px solid #1d4ed829;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;transition:box-shadow .18s,transform .18s;display:flex;box-shadow:0 7px 18px #0f1f2a1c}@media (hover:hover){.topology-node:hover .topology-node-icon{box-shadow:0 9px 22px #0f1f2a29}}.topology-node.selected .topology-node-icon{box-shadow:0 0 0 3px #1d4ed838,0 9px 22px #0f1f2a26}.topology-node strong{color:var(--text);background:#f7faf9e6;border-radius:5px;max-width:126px;padding:0 5px;font-size:11px;line-height:16px}.topology-node small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;background:#f7faf9d1;border-radius:4px;max-width:126px;padding:0 5px;font-size:9px;font-weight:700;line-height:14px;display:block;overflow:hidden}.topology-node-icon i{top:0;right:-2px}.topology-node.link-source{animation:none}.topology-node.link-source .topology-node-icon{animation:1.2s infinite topology-pulse}.topology-node.color-blue,.topology-node.color-violet,.topology-node.color-amber,.topology-node.color-rose,.topology-node.color-slate{border-color:#0000}html[data-theme=dark] .topology-node strong{background:#071012db}html[data-theme=dark] .topology-node small{color:var(--muted);background:#071012cc}.neighbor-permission-actions,.neighbor-row-actions{align-items:center;gap:6px;display:flex}.neighbor-row-actions{flex:none}.neighbor-display-toggle{border:1px solid var(--line);color:var(--text);cursor:pointer;white-space:nowrap;background:#1d4ed80b;border-radius:8px;align-items:center;gap:6px;padding:7px 9px;font-size:9px;font-weight:750;display:flex}.neighbor-display-toggle input{accent-color:var(--accent);width:14px;height:14px}@media (max-width:700px){.neighbor-scan-bar{flex-direction:column;align-items:stretch;gap:8px}.neighbor-permission-actions{flex-wrap:wrap}.neighbor-row-actions{flex-direction:column;align-items:stretch}.neighbor-display-toggle{justify-content:center}}.topology-node.status-up .topology-node-icon>i{margin:-5px 0 0 -5px;animation:3.2s linear infinite topology-status-orbit;top:50%;left:50%;right:auto}@keyframes topology-status-orbit{0%{opacity:.55;transform:translateY(-27px)}12.5%{opacity:1;transform:translate(19px,-19px)}25%{opacity:.55;transform:translate(27px)}37.5%{opacity:1;transform:translate(19px,19px)}50%{opacity:.55;transform:translateY(27px)}62.5%{opacity:1;transform:translate(-19px,19px)}75%{opacity:.55;transform:translate(-27px)}87.5%{opacity:1;transform:translate(-19px,-19px)}to{opacity:.55;transform:translateY(-27px)}}.topology-canvas{background-color:#f7faf9;background-image:linear-gradient(#1d4ed813 1px,#0000 1px),linear-gradient(90deg,#1d4ed813 1px,#0000 1px),radial-gradient(circle,#1d4ed833 1px,#0000 1px);background-position:0 0,0 0,0 0;background-size:24px 24px,24px 24px,24px 24px}.topology-align-guide{pointer-events:none;z-index:12;background:#22c55e;display:block;position:absolute;box-shadow:0 0 0 1px #22c55e1f}.topology-align-guide.vertical{width:1px;height:1200px;top:0}.topology-align-guide.horizontal{width:2000px;height:1px;left:0}.topology-canvas.has-collision .topology-align-guide{background:#ef4444}.topology-canvas.has-collision .topology-node:active .topology-node-icon{border-color:#ef4444;box-shadow:0 0 0 5px #ef44442e}html[data-theme=dark] .topology-canvas{background-color:#0d171b;background-image:linear-gradient(#4ea2ff12 1px,#0000 1px),linear-gradient(90deg,#4ea2ff12 1px,#0000 1px),radial-gradient(circle,#4ea2ff29 1px,#0000 1px)}.vpn-group-link{fill:none;stroke:#1d4ed894;stroke-dasharray:5 5;stroke-width:2px}.vpn-card-cable path{fill:none;stroke:#0f9f91;stroke-dasharray:8 6;stroke-linecap:round;stroke-width:2px;animation:1.2s linear infinite vpn-cable-flow}.vpn-card-cable text{stroke-width:4px;font-size:9px}@keyframes vpn-cable-flow{to{stroke-dashoffset:-28px}}.vpn-group-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-sizing:border-box;z-index:6;background:#ffffffc2;border:1px solid #1d4ed838;border-radius:14px;width:370px;position:absolute;overflow:visible;box-shadow:0 12px 30px #0f1f2a1f}.vpn-group-card header{cursor:grab;background:#1d4ed80e;border-bottom:1px solid #1d4ed824;justify-content:space-between;align-items:center;height:42px;padding:0 10px;display:flex}.vpn-group-card.locked header{cursor:default}.vpn-group-card header span{color:var(--accent);text-transform:uppercase;align-items:center;gap:6px;font-size:10px;font-weight:850;display:flex}.vpn-group-card header small{color:var(--muted);font-size:8px}.vpn-group-card header button{border:1px solid var(--line);color:var(--accent);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;width:25px;height:25px;display:flex}.vpn-group-card header b{color:var(--accent);background:#1d4ed81f;border-radius:999px;padding:3px 7px;font-size:9px}.vpn-group-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px;display:grid;overflow:visible}.vpn-group-device{color:var(--text);cursor:pointer;text-align:left;background:#f7faf9a6;border:1px solid #1d4ed81f;border-radius:9px;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:2px;padding:7px;display:grid}.vpn-group-device:hover{background:#1d4ed814;border-color:#1d4ed847}.vpn-group-device>span{grid-row:1/4;justify-content:center;align-items:center;display:flex;position:relative}.vpn-group-device>span i{border:2px solid var(--panel);background:#22c55e;border-radius:50%;width:6px;height:6px;position:absolute;top:0;right:0}.vpn-group-device.status-down>span i{background:#ef4444}.vpn-group-device strong,.vpn-group-device small,.vpn-group-device em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vpn-group-device strong{font-size:9px}.vpn-group-device small{color:var(--muted);font-size:7px}.vpn-group-device em{color:var(--accent);font-size:7px;font-style:normal}html[data-theme=dark] .vpn-group-device{background:#0710128c}@media (max-width:700px){.vpn-group-card{width:290px}.vpn-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.vpn-card-cable path,.topology-node.status-up .topology-node-icon>i{animation:none}}.topology-cable{pointer-events:visiblePainted}.topology-cable-hit{fill:none;pointer-events:stroke;stroke:#0000;stroke-width:16px}.topology-cable-label{paint-order:stroke;stroke:#f7faf9eb;stroke-linejoin:round;stroke-width:4px}.topology-cable.link-down .topology-cable-core{stroke:#ef4444}.topology-link-info{opacity:0;pointer-events:none;transition:opacity .16s}.topology-cable:hover .topology-link-info{opacity:1}.topology-link-info rect{fill:#ffffffe6;stroke:#1d4ed847;stroke-width:1px}.topology-link-info text{fill:var(--text);font-size:9px;font-weight:650}.topology-link-info .info-title{fill:var(--accent);font-size:10px;font-weight:850}html[data-theme=dark] .topology-cable-label{stroke:#071012e6}html[data-theme=dark] .topology-link-info rect{fill:#0e1b20eb;stroke:#5eead44d}.topology-cable-rate{paint-order:stroke;font-weight:850;fill:var(--accent)!important;stroke:#f7faf9f0!important;stroke-width:4px!important;font-size:9px!important}.topology-cable.is-warning .topology-cable-core{stroke:#f59e0b}.topology-cable.is-warning .topology-cable-rate{fill:#d97706!important}html[data-theme=dark] .topology-cable-rate{stroke:#071012f0!important}.topology-link-monitor{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:5px!important;display:grid!important}.topology-link-monitor select,.topology-link-monitor input{border:1px solid var(--line);color:var(--text);background:#1d4ed809;border-radius:7px;width:100%;min-width:0;padding:6px 7px;font-size:9px}.topology-link-data-status{border-radius:7px;grid-column:1/-1;padding:6px 8px;font-size:8px;font-weight:800}.topology-link-data-status.status-live{color:#15803d;background:#22c55e1a}.topology-link-data-status.status-failover{color:#a16207;background:#f59e0b26}.topology-link-data-status.status-stale{color:#a16207;background:#f59e0b1f}.topology-link-data-status.status-offline{color:#b42318;background:#ef44441a}.topology-link-data-status.status-unconfigured{color:var(--muted);background:#64748b1a}.topology-link-row.is-warning,.topology-link-row.is-failover{border-color:#f59e0b!important;box-shadow:0 0 0 2px #f59e0b1f!important}.topology-link-monitor.dual-endpoint{grid-template-columns:1fr 1fr;align-items:start}.topology-endpoint-map{border:1px solid var(--line);border-radius:9px;gap:5px;min-width:0;margin:0;padding:7px;display:grid}.topology-endpoint-map legend{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:0 4px;font-size:8px;font-weight:850;overflow:hidden}.topology-endpoint-status{text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:5px 6px;font-size:7px;font-weight:800;overflow:hidden}.topology-endpoint-status.status-live{color:#15803d;background:#22c55e1a}.topology-endpoint-status.status-stale{color:#a16207;background:#f59e0b1f}.topology-endpoint-status.status-offline{color:#b42318;background:#ef44441a}.topology-endpoint-status.status-unconfigured{color:var(--muted);background:#64748b1a}@media (max-width:760px){.topology-link-monitor.dual-endpoint{grid-template-columns:1fr}}.topology-connections{grid-column:1/-1;min-width:0;overflow:hidden;padding:0!important}.topology-connections .topology-link-list{background:0 0;border-top:0;grid-template-columns:repeat(2,minmax(0,1fr));max-height:none;margin:0;padding:14px 16px 16px;overflow:visible}.topology-connections .topology-link-heading{position:static;top:auto;background:0 0!important}.topology-connections .topology-link-heading>div{padding:0;display:block}.topology-connections .topology-link-heading h3{margin:2px 0 0;font-size:14px}.topology-connections .topology-link-row{padding:12px}.topology-connections .topology-link-row>span{font-size:11px}.topology-connections .topology-link-monitor select,.topology-connections .topology-link-monitor input{min-height:34px;font-size:10px}.topology-connections .topology-endpoint-map{padding:10px}.topology-connections .topology-endpoint-map legend,.topology-connections .topology-endpoint-status,.topology-connections .topology-link-data-status{font-size:9px}.topology-layout.editor-collapsed{grid-template-columns:minmax(0,1fr) 58px}.topology-layout.editor-collapsed .topology-inspector{padding:0!important}.topology-layout.editor-collapsed .topology-inspector-head{justify-content:center;padding:12px 8px}.topology-layout.editor-collapsed .topology-inspector-head>div:first-child{display:none}@media (max-width:900px){.topology-layout.editor-collapsed{grid-template-columns:1fr}.topology-layout.editor-collapsed .topology-inspector{order:0}.topology-layout.editor-collapsed .topology-inspector-head{justify-content:flex-end}.topology-connections{order:2}.topology-connections .topology-link-list{grid-template-columns:1fr}}@media (max-width:600px){.topology-connections .topology-link-list,.topology-connections .topology-link-row{padding:10px}.topology-connections .topology-link-monitor.dual-endpoint{grid-template-columns:1fr}.topology-connections .topology-link-heading h3{font-size:13px}}.ops-health{margin-top:16px;padding:18px}.ops-health>header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.ops-health>header span{color:var(--accent);text-transform:uppercase;font-size:10px;font-weight:850}.ops-health>header h2{margin:2px 0 0;font-size:17px}.ops-health-summary{color:#15803d;background:#22c55e1a;border-radius:999px;align-items:center;gap:6px;padding:7px 10px;font-size:10px;font-weight:800;display:flex}.ops-health-summary.has-alert{color:#a16207;background:#f59e0b21}.ops-health-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.ops-health-card{color:#15803d;background:#22c55e0f;border:1px solid #22c55e2e;border-radius:10px;align-items:center;gap:10px;padding:12px;display:flex}.ops-health-card.is-warning{color:#a16207;background:#f59e0b14;border-color:#f59e0b38}.ops-health-card.is-critical{color:#b42318;background:#ef444414;border-color:#ef444433}.ops-health-card div{min-width:0;display:grid}.ops-health-card small{text-transform:uppercase;font-size:9px;font-weight:850}.ops-health-card strong{color:var(--text);font-size:17px;line-height:1.3}.ops-health-card span{color:var(--muted);font-size:9px}.ops-health>footer{color:var(--muted);justify-content:space-between;align-items:center;gap:14px;margin-top:12px;font-size:9px;font-weight:700;display:flex}.ops-health>footer span{align-items:center;gap:5px;display:flex}@media (max-width:760px){.ops-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-health>header,.ops-health>footer{flex-direction:column;align-items:flex-start}}.ops-health{background:linear-gradient(145deg,var(--panel),#1d4ed806);border-color:#1d4ed824;padding:20px;overflow:hidden}.ops-health-title{align-items:center;gap:11px;display:flex}.ops-health-server-icon{background:linear-gradient(145deg,#1d4ed8,#14b8a6);border-radius:11px;justify-content:center;width:38px;height:38px;display:flex;color:#fff!important;align-items:center!important}.ops-health-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.ops-health-card{background:linear-gradient(160deg,#22c55e11,#ffffffb8);border-radius:14px;flex-direction:column;align-items:stretch;gap:9px;min-width:0;padding:14px;display:flex;position:relative;box-shadow:0 8px 24px #0f1f2a0e}.ops-health-card.is-warning{background:linear-gradient(160deg,#f59e0b1a,#ffffffb8)}.ops-health-card.is-critical{background:linear-gradient(160deg,#ef444417,#ffffffb8)}.ops-health-card-head{justify-content:space-between;align-items:center;display:flex!important}.ops-health-card-head>span{color:var(--text);text-transform:uppercase;align-items:center;gap:6px;font-size:10px;font-weight:850;display:flex}.ops-health-card-head>b{color:#15803d;background:#22c55e1f;border-radius:999px;padding:4px 7px;font-size:8px}.ops-health-card.is-warning .ops-health-card-head>b{color:#a16207;background:#f59e0b24}.ops-health-card.is-critical .ops-health-card-head>b{color:#b42318;background:#ef44441f}.ops-health-gauge{--gauge-color:#22c55e;background:conic-gradient(var(--gauge-color) var(--gauge-value),#94a3b829 0);border-radius:50%;align-self:center;place-items:center;width:108px;height:108px;margin:2px 0;position:relative;display:grid!important}.ops-health-card.is-warning .ops-health-gauge{--gauge-color:#f59e0b}.ops-health-card.is-critical .ops-health-gauge{--gauge-color:#ef4444}.ops-health-gauge:before{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line);content:"";border-radius:50%;position:absolute;inset:10px}.ops-health-gauge>div{place-items:center;display:grid;position:relative}.ops-health-gauge strong{font-size:20px}.ops-health-gauge small{color:var(--muted);font-size:7px}.ops-health-meter{background:#94a3b826;border-radius:999px;height:5px;position:relative;overflow:visible;display:block!important}.ops-health-meter i{border-radius:inherit;background:#22c55e;height:100%;display:block}.ops-health-card.is-warning .ops-health-meter i{background:#f59e0b}.ops-health-card.is-critical .ops-health-meter i{background:#ef4444}.ops-health-meter em{background:var(--panel);border:1px solid;width:2px;height:9px;position:absolute;top:-2px}.ops-health-card>p{color:var(--text);text-align:center;margin:0;font-size:9px;font-weight:750}.ops-health-spark{width:100%;height:38px;margin-top:auto;overflow:visible}.ops-health-spark .spark-line{fill:none;stroke:#22c55e;stroke-linecap:round;stroke-width:2px}.ops-health-spark .spark-area{fill:#22c55e14;stroke:none}.ops-health-spark.tone-warning .spark-line{stroke:#f59e0b}.ops-health-spark.tone-critical .spark-line{stroke:#ef4444}.ops-health-spark-empty{color:var(--muted);justify-content:center;height:38px;font-size:8px;align-items:center!important;display:flex!important}.ops-health-backup>strong{text-align:center;margin-top:18px;font-size:24px}.ops-health-backup>p{line-height:1.5}.ops-health-runtime{color:var(--accent);background:#1d4ed80e;border-radius:10px;align-items:center;gap:9px;margin-top:auto;padding:11px;display:flex!important}.ops-health-runtime span{display:grid}.ops-health-runtime small{color:var(--muted);font-size:8px}.ops-health-runtime b{color:var(--text);font-size:11px}.ops-health>footer{border-top:1px solid var(--line);padding-top:13px}html[data-theme=dark] .ops-health-card{background:linear-gradient(160deg,#22c55e13,#071012c2)}html[data-theme=dark] .ops-health-card.is-warning{background:linear-gradient(160deg,#f59e0b1a,#071012c2)}html[data-theme=dark] .ops-health-card.is-critical{background:linear-gradient(160deg,#ef44441a,#071012c2)}@media (max-width:1050px){.ops-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.ops-health{padding:14px}.ops-health-grid{grid-template-columns:1fr}.ops-health-card{grid-template-rows:auto auto auto;grid-template-columns:110px minmax(0,1fr);min-height:150px;display:grid}.ops-health-card-head{grid-column:1/-1}.ops-health-gauge{grid-row:2/5;width:92px;height:92px}.ops-health-meter,.ops-health-card>p,.ops-health-spark,.ops-health-spark-empty{grid-column:2}.ops-health-backup{min-height:140px;display:flex}.ops-health-backup>strong{margin-top:10px}.ops-health>header{align-items:flex-start}.ops-health-summary{white-space:nowrap}}.topology-cable{cursor:pointer;pointer-events:visiblePainted;outline:none}.topology-cable-halo{fill:none;stroke:#0000;stroke-linecap:round;stroke-linejoin:round;stroke-width:8px;transition:stroke .18s}.topology-cable-core{fill:none;stroke:#647b77;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;transition:filter .18s,stroke .18s,stroke-width .18s}.topology-cable.link-up .topology-cable-core{stroke:#178f84}.topology-cable:hover .topology-cable-halo,.topology-cable:focus-visible .topology-cable-halo,.topology-cable.is-selected .topology-cable-halo{stroke:#14b8a629}.topology-cable:focus-visible .topology-traffic-badge rect,.topology-cable.is-selected .topology-traffic-badge rect{stroke:#14b8a6;stroke-width:2px}.topology-traffic-flow{fill:#2dd4bf;filter:drop-shadow(0 0 2px #4ea2ff99);pointer-events:none}.topology-traffic-flow.flow-tx{fill:#60a5fa}.topology-cable.link-warning .topology-traffic-flow{fill:#f59e0b}.topology-cable.link-down .topology-traffic-flow{display:none}.topology-cable-plug{fill:var(--panel);stroke:#0f9f91;stroke-width:2px}.topology-traffic-badge{pointer-events:none}.topology-traffic-badge rect{fill:#fffffff0;stroke:#1d4ed83d;stroke-width:1px;filter:drop-shadow(0 5px 8px #0f1f2a1f);transition:stroke .18s}.topology-traffic-badge text{paint-order:normal;stroke:none;text-anchor:start;font-size:8px;font-weight:850}.topology-traffic-badge .badge-rx{fill:#1d4ed8}.topology-traffic-badge .badge-tx{fill:#2563eb}.topology-traffic-badge .badge-label{fill:var(--muted);text-anchor:end;font-size:7px}.topology-link-info{opacity:0;transition:opacity .16s,transform .16s;transform:translateY(4px)}.topology-cable:hover .topology-link-info,.topology-cable:focus-visible .topology-link-info,.topology-cable.is-selected .topology-link-info{opacity:1;transform:translateY(0)}html[data-theme=dark] .topology-traffic-badge rect{fill:#0e1b20f2;stroke:#5eead447}@media (max-width:700px){.topology-traffic-badge{transform-box:fill-box;transform-origin:50%;transform:scale(.92)}.topology-cable-core{stroke-width:2px}}@media (prefers-reduced-motion:reduce){.topology-traffic-flow{display:none}.topology-cable-core,.topology-cable-halo,.topology-link-info,.topology-traffic-badge rect{transition:none}}.alert-settings{min-width:0;padding:20px}.alert-settings-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.alert-settings-head h2{margin:1px 0 0;font-size:16px;font-weight:800}.alert-settings-badge{border-radius:999px;flex-shrink:0;align-items:center;gap:7px;margin-left:auto;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.alert-settings-badge.is-on{color:#15803d;background:#16a34a1f}.alert-settings-badge.is-on .status-dot{background:#16a34a}.alert-settings-badge.is-off{color:var(--danger);background:#b423181f}.alert-settings-badge.is-off .status-dot{background:var(--danger)}.alert-settings-lead{color:var(--muted);margin:12px 0 16px;font-size:13px;line-height:1.5}.alert-settings-lead code{background:var(--bg);border-radius:5px;padding:1px 5px;font-size:12px}.alert-settings-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.alert-settings-card{background:var(--bg);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:14px;min-width:0;margin:0;padding:16px;display:flex;overflow:hidden}.alert-settings-toggle{align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.alert-settings-toggle input[type=checkbox]{flex:none;width:16px;max-width:16px;height:16px}.alert-settings-toggle span{overflow-wrap:break-word;flex:auto;min-width:0}.alert-settings-card.is-on{background:linear-gradient(180deg, #1d4ed80d, var(--bg) 42%);border-color:#1d4ed838}.alert-settings-card.is-disabled{opacity:.72}.alert-settings-card-head{grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.alert-settings-card-head h3{margin:0;font-size:14px;font-weight:800}.alert-settings-card-head p{color:var(--muted);margin:2px 0 0;font-size:12px;line-height:1.35}.alert-settings-brand{color:#fff;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.alert-settings-brand.is-telegram{background:linear-gradient(145deg,#2aabee,#229ed9)}.alert-settings-brand.is-whatsapp{background:linear-gradient(145deg,#25d366,#128c7e)}.alert-switch{cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:8px;display:inline-flex;position:relative}.alert-switch input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.alert-switch span{background:#cbd5e1;border-radius:999px;width:40px;height:22px;transition:background .16s;display:block;position:relative}.alert-switch span:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .16s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0f1f2a40}.alert-switch input:checked+span{background:var(--accent)}.alert-switch input:checked+span:after{transform:translate(18px)}.alert-switch input:focus-visible+span{box-shadow:0 0 0 3px #1d4ed82e}.alert-switch em{color:var(--muted);min-width:22px;font-size:11px;font-style:normal;font-weight:800}.alert-switch input:checked~em{color:var(--accent)}.alert-settings-fields{gap:12px;display:grid}.alert-settings-fields.is-muted{opacity:.48}.alert-field{gap:6px;min-width:0;display:grid}.alert-field>span{color:var(--ink);align-items:baseline;gap:6px;font-size:12px;font-weight:700;display:flex}.alert-field small{color:var(--muted);font-size:11px;font-weight:600}.alert-settings-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-height:34px;display:flex}.alert-chip{color:#15803d;background:#16a34a1f;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.alert-chip.is-empty{color:var(--muted);background:#94a3b829}.alert-hint{color:var(--muted);font-size:11px;line-height:1.4}.alert-clear{color:var(--danger)}.alert-settings-status,.alert-settings-actions{grid-column:1/-1}.alert-settings-status{border-radius:10px;margin:0;padding:10px 12px;font-size:13px;font-weight:600}.alert-settings-status.is-error{color:var(--danger);background:#b423181a}.alert-settings-status.is-ok{color:var(--accent-dark);background:#1d4ed814}.alert-settings-actions{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding-top:4px;display:flex}.alert-settings-note{color:var(--muted);font-size:12px}html[data-theme=dark] .alert-settings-card{background:#0f1a1f}html[data-theme=dark] .alert-settings-card.is-on{background:linear-gradient(#4ea2ff14,#0f1a1f 46%)}html[data-theme=dark] .alert-switch span{background:#334155}html[data-theme=dark] .alert-settings-badge.is-on{color:#86efac}@media (max-width:760px){.alert-settings{padding:16px}.alert-settings-grid{grid-template-columns:1fr}.alert-settings-badge{margin-left:0}.alert-settings-card-head{grid-template-columns:36px minmax(0,1fr)}.alert-switch{grid-column:1/-1;justify-content:space-between;padding-top:2px}}.ops-health>footer a{color:var(--accent);font-weight:800;text-decoration:none}.ops-health>footer a:hover{text-decoration:underline}.vpn-group-card header small{display:none}.vpn-group-device{grid-template-rows:auto auto;position:relative}.vpn-group-device>span{grid-row:1/3}.vpn-group-device .vpn-device-rate{color:#fff;letter-spacing:.01em;pointer-events:none;text-align:center;white-space:nowrap;z-index:2;background:#1d4ed8eb;border-radius:7px;padding:3px 5px;font-size:8px;font-style:normal;font-weight:800;display:none;position:absolute;bottom:5px;left:5px;right:5px}.vpn-group-device:hover .vpn-device-rate,.vpn-group-device:focus-visible .vpn-device-rate{display:block}.topology-cable-core{fill:none;stroke:#178f84;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;animation:none}.topology-cable.link-unknown .topology-cable-core{stroke:#7d938e}.topology-cable.link-warning .topology-cable-core{stroke:#d97706}.topology-cable.link-down .topology-cable-core{stroke:#dc2626;stroke-dasharray:none}.topology-cable:hover .topology-cable-core,.topology-cable:focus-visible .topology-cable-core,.topology-cable.is-selected .topology-cable-core{filter:none;stroke-width:2.4px}.topology-cable-plug{fill:#178f84}.topology-cable-plug.is-snap{cursor:grab;pointer-events:auto;stroke:#ecfdf8;stroke-width:1.4px}.vpn-card-cable .topology-cable-core{stroke:#0f9f91;stroke-dasharray:8 6;stroke-width:2px;animation:1.2s linear infinite vpn-cable-flow}html[data-theme=dark] .topology-cable-core{stroke:#2dd4bf}html[data-theme=dark] .topology-cable.link-unknown .topology-cable-core{stroke:#6b8380}html[data-theme=dark] .vpn-card-cable .topology-cable-core{stroke:#5eead4}@media (prefers-reduced-motion:reduce){.vpn-card-cable .topology-cable-core{animation:none}}.topology-node,.topology-device-detail{z-index:5}.topology-chassis{position:absolute}.topology-chassis-shell{z-index:3;position:relative}.topology-chassis-port.is-bound{z-index:6;box-shadow:0 0 0 2px #fbbf24}.topology-toolbar-actions{align-items:center;gap:8px;display:flex}.topology-toolbar-status{flex:0 auto;align-items:center;gap:8px;min-width:0;display:flex}.topology-toolbar-status>span{min-width:0}.topology-unsaved{color:#a16207;white-space:nowrap;background:#f59e0b29;border:1px solid #f59e0b47;border-radius:999px;flex:none;padding:4px 8px;font-size:10px;font-weight:800}html[data-theme=dark] .topology-unsaved{color:#fbbf24;background:#f59e0b2e}.topology-actions .btn-primary.is-pending{box-shadow:0 0 0 2px #f59e0b59}.topology-inspector.collapsed .topology-open-graph{display:none}.topology-detail-actions{gap:6px;display:none}.topology-open-graph{align-items:center;gap:5px;text-decoration:none;display:inline-flex}.topology-find-tools{flex:0 auto;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.topology-find{flex:0 0 38px;width:38px;min-width:38px;display:flex;position:relative}.topology-find.is-open{flex:0 220px;width:auto;min-width:180px}.topology-find input{width:100%;min-height:32px;padding:6px 8px;font-size:12px;display:none}.topology-find.is-open input{display:block}.topology-find.is-open>.btn{display:none}.topology-tools-wrap,.topology-editor-wrap{position:relative}.topology-tools-pop{background:var(--panel);border:1px solid var(--line);z-index:55;border-radius:12px;gap:2px;min-width:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 28px #0f1f2a24}html[data-theme=dark] .topology-tools-pop{box-shadow:0 12px 28px #0000004d}.topology-editor-pop{background:var(--panel);border:1px solid var(--line);z-index:55;border-radius:14px;width:min(360px,92vw);max-height:min(70vh,560px);padding:0;position:absolute;top:calc(100% + 6px);right:0;overflow:auto;box-shadow:0 16px 40px #0f1f2a29}.topology-editor-pop>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:12px 14px 10px;display:flex;position:relative}.topology-editor-pop>header strong{margin-top:2px;font-size:14px;display:block}.topology-editor-pop .topology-detail-close{position:static}.topology-editor-pop .topology-form{padding:12px 14px 14px}.topology-editor-pop>.topology-more-item{width:calc(100% - 16px);margin:4px 8px 0}.topology-editor-pop .topology-empty-state{padding:16px}html[data-theme=dark] .topology-editor-pop{box-shadow:0 16px 40px #00000052}.topology-more-item{color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;display:flex}.topology-more-item:hover,.topology-more-item[aria-pressed=true]{color:var(--accent);background:#1d4ed814}.topology-more-item:disabled{cursor:not-allowed;opacity:.42}.topology-find-list{background:var(--panel);border:1px solid var(--line);z-index:40;border-radius:8px;max-height:240px;display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 8px 20px #0f1f2a1f}.topology-find-list:not(:empty){display:grid}.topology-find-list button{border:0;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;background:0 0;gap:2px;padding:8px 10px;display:grid}.topology-find-list button:last-child{border-bottom:0}.topology-find-list b{color:var(--ink);font-size:12px}.topology-find-list small{color:var(--muted);font-size:10px}.topology-refresh,.topology-icon-btn{flex:0 0 38px;justify-content:center;align-items:center;gap:0;width:38px;min-width:38px;height:38px;display:inline-flex;min-height:38px!important;padding:0!important}.topology-refresh span,.topology-icon-btn span{display:none}.topology-refresh .spin{animation:.8s linear infinite topology-refresh-spin}@keyframes topology-refresh-spin{to{transform:rotate(360deg)}}.topology-cable-handle{cursor:grab;pointer-events:auto}.topology-cable-handle.is-horizontal{cursor:ns-resize}.topology-cable-handle.is-vertical{cursor:ew-resize}.topology-cable-handle-hit{fill:none;stroke:#0000;stroke-linecap:round;stroke-width:14px}.topology-cable-handle-knob{fill:#ecfdf8;stroke:#1d4ed8;stroke-width:1.4px}.topology-cable.is-selected .topology-cable-handle-knob{fill:#ccfbf1}html[data-theme=dark] .topology-cable-handle-knob{fill:#0b1c1c;stroke:#5eead4}.topology-chassis.is-compact .topology-chassis-shell{width:100%;max-width:none;padding:8px 8px 22px}.topology-chassis-shell{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));box-shadow:0 12px 28px #1d4ed81a,inset 0 1px 0 #ffffffd9,inset 3px 0 0 var(--accent);color:var(--ink);cursor:grab;text-align:left;background:linear-gradient(#fffffff5,#e8f2ffe6);border-radius:16px;align-items:center;gap:8px;width:100%;height:100%;padding:8px 12px 22px;display:flex}.topology-chassis.selected .topology-chassis-shell{box-shadow:0 0 0 3px #1d4ed838,0 12px 28px #1d4ed81f,inset 0 1px 0 #ffffffd9,inset 3px 0 0 var(--accent)}.topology-chassis.status-up .topology-chassis-shell{box-shadow:0 12px 28px #1d4ed81a,inset 0 1px #ffffffd9,inset 3px 0 #22c55e}.topology-chassis.status-down .topology-chassis-shell{box-shadow:0 12px 28px #b4231814,inset 0 1px #ffffffd9,inset 3px 0 #ef4444}.topology-chassis-logo{border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));-o-object-fit:contain;object-fit:contain;background:linear-gradient(#fff,#eef5ff);border-radius:9px;flex:none;width:28px;height:28px;padding:4px;box-shadow:0 2px 6px #0f1f2a0f}html[data-theme=dark] .topology-node-icon{background:#0c1828eb;border-color:#4ea2ff47}html[data-theme=dark] .topology-node strong{color:var(--ink);background:#0c1828e0}html[data-theme=dark] .topology-detail-icon{background:#4ea2ff29;border-color:#4ea2ff47}html[data-theme=dark] .vpn-group-card{background:#0e1b20d6;border-color:#4ea2ff38}html[data-theme=dark] .vpn-group-card header{background:#4ea2ff14;border-color:#4ea2ff29}.topology-chassis-shell>span{max-width:var(--chassis-name,168px);flex:0 auto;gap:1px;min-width:0;display:grid}.topology-chassis-shell small{color:var(--muted);letter-spacing:.02em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:8px;font-weight:800;overflow:hidden}.topology-chassis-shell strong{-webkit-line-clamp:2;color:var(--ink);white-space:normal;word-break:break-word;-webkit-box-orient:vertical;font-size:11px;line-height:1.25;display:-webkit-box;overflow:hidden}.topology-chassis-ports{pointer-events:none;z-index:6;position:absolute;inset:0}.topology-chassis-port{color:#3d5673;cursor:pointer;pointer-events:auto;z-index:6;background:linear-gradient(#f8fbff,#e4edf8);border:1px solid #c9d7ea;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:0;width:16px;height:16px;padding:0;font-size:7px;font-weight:800;line-height:1;display:flex;position:absolute;box-shadow:inset 0 1px 2px #0f1f2a14}.topology-chassis-port b{font-size:7px}.topology-chassis-port.is-up{color:#15803d;background:linear-gradient(#ecfdf3,#bbf7d0);border-color:#4ade80;box-shadow:0 0 0 2px #22c55e29}.topology-chassis-port.is-down{color:#64748b;background:linear-gradient(#f8fafc,#e2e8f0);border-color:#cbd5e1}.topology-chassis-port.is-bound{box-shadow:0 0 0 2px #fbbf24}.topology-chassis-tip{background:var(--panel);border:1px solid var(--line);color:var(--ink);z-index:8;border-radius:8px;min-width:130px;padding:6px 8px;font-size:9px;font-weight:700;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 8px 18px #0f1f2a1f}.topology-chassis-tip strong{margin-bottom:2px;font-size:10px;display:block}.topology-chassis-port:hover .topology-chassis-tip,.topology-chassis-port:focus-visible .topology-chassis-tip{display:block}.chassis-port-pickers{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.chassis-port-picker{gap:4px;min-width:0;display:grid}.chassis-port-picker span{color:var(--muted);text-transform:uppercase;font-size:9px;font-weight:800}.chassis-port-picker select{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:7px;width:100%;min-height:34px;padding:6px 8px;font-size:11px}.topology-link-row.is-selected{border-color:#1d4ed873!important}@media (max-width:760px){.chassis-port-pickers{grid-template-columns:1fr}}html[data-theme=dark] .topology-chassis-shell{box-shadow:0 12px 28px #00000047,inset 0 1px 0 #ffffff0f,inset 3px 0 0 var(--accent);background:linear-gradient(#162840f0,#0c1a2aeb);border-color:#4ea2ff47}html[data-theme=dark] .topology-chassis-logo{background:linear-gradient(#1a2c44,#122033);border-color:#4ea2ff47}html[data-theme=dark] .topology-chassis-port{color:var(--muted);background:linear-gradient(#1a3048,#12263a);border-color:#4ea2ff47}html[data-theme=dark] .topology-chassis-port.is-up{color:#86efac;background:linear-gradient(#22c55e47,#22c55e1f);border-color:#22c55e}html[data-theme=dark] .topology-chassis-port.is-down{color:#94a3b8;background:linear-gradient(#162433,#101c2a);border-color:#94a3b838}.chassis-mini-stats{pointer-events:none;z-index:6;align-items:center;gap:5px;display:flex;position:absolute;bottom:4px;left:8px}.chassis-mini-stat{background:color-mix(in srgb,var(--panel) 85%,transparent);border-radius:4px;align-items:baseline;gap:4px;padding:2px 5px;line-height:1;display:inline-flex}.chassis-mini-stat em{color:var(--muted);letter-spacing:.03em;text-transform:uppercase;font-size:7px;font-style:normal;font-weight:800}.chassis-mini-stat b{color:var(--ink);font-size:10px;font-weight:800}.chassis-mini-stat.is-healthy b{color:#15803d}.chassis-mini-stat.is-warning b{color:#b45309}.chassis-mini-stat.is-critical b{color:#dc2626}.chassis-mini-stat.is-idle b{color:#64748b}html[data-theme=dark] .chassis-mini-stat.is-healthy b{color:#86efac}html[data-theme=dark] .chassis-mini-stat.is-warning b{color:#fbbf24}html[data-theme=dark] .chassis-mini-stat.is-critical b{color:#f87171}html[data-theme=dark] .chassis-mini-stat.is-idle b{color:#94a3b8}.server-page{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;min-width:0;display:grid}.server-ringkas,.server-panel-apps{grid-column:1/-1}.server-panel-storage,.server-panel-ethernet{flex-direction:column;align-self:stretch;min-width:0;display:flex}:is(.server-page:not(:has(.server-panel-storage)) .server-panel-ethernet,.server-page:not(:has(.server-panel-ethernet)) .server-panel-storage){grid-column:1/-1}.server-panel-storage .server-disk-grid,.server-panel-ethernet .server-nic-list,.server-panel-ethernet .server-nic-list.is-split{flex:1;grid-template-columns:1fr}.server-ringkas{gap:12px;min-width:0;display:grid}.server-ops-bar{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;padding:10px 14px;display:flex}.server-ops-main{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;min-width:0;font-size:12px;display:flex}.server-ops-host{color:var(--ink);font-weight:800}.server-ops-sep{opacity:.45}.server-ops-overall{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:850}.server-ops-overall.is-healthy{color:#15803d;background:#22c55e24}.server-ops-overall.is-warning{color:#a16207;background:#f59e0b29}.server-ops-overall.is-critical{color:#b42318;background:#ef444424}.server-live{color:var(--muted);letter-spacing:.04em;align-items:center;gap:6px;font-size:11px;font-weight:800;display:flex}.server-live-dot{background:#22c55e;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #22c55e29}.server-metric-stack{background:var(--panel);border:1px solid var(--line);border-radius:16px;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;min-width:0;display:grid;overflow:hidden}.server-metric-row{background:0 0;border:0;border-radius:0;gap:8px;min-width:0;padding:14px 14px 12px;display:grid;position:relative}.server-metric-row+.server-metric-row{border-left:1px solid var(--line)}.server-metric-row.is-cpu{--m-accent:#fbbf24}.server-metric-row.is-ram{--m-accent:#34d399}.server-metric-row.is-disk{--m-accent:#60a5fa}.server-metric-row.is-net{--m-accent:#22d3ee}.server-metric-accent{background:var(--m-accent);opacity:.9;border-radius:0;width:auto;height:3px;position:absolute;top:0;left:0;right:0}.server-metric-main{grid-template-columns:1fr;align-items:stretch;gap:8px;display:grid}.server-metric-id{align-items:center;gap:10px;display:flex}.server-metric-ico{background:color-mix(in srgb,var(--m-accent) 16%,transparent);color:var(--m-accent);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.server-metric-name{font-size:13px;font-weight:800;display:block}.server-metric-health{border-radius:999px;margin-top:2px;padding:1px 6px;font-size:10px;font-weight:850;display:inline-block}.server-metric-health.is-healthy{color:#15803d;background:#22c55e1f}.server-metric-health.is-warning{color:#a16207;background:#f59e0b24}.server-metric-health.is-critical{color:#b42318;background:#ef44441f}.server-metric-spark{min-width:0}.server-spark.is-inline{height:36px;margin:0}.server-metric-row .server-spark{color:var(--m-accent)}.server-metric-row .server-spark-empty{margin:0}.server-metric-foot{gap:5px;display:grid}.server-metric-bar{background:#64748b24;border-radius:99px;height:5px;overflow:hidden}.server-metric-bar i{background:var(--m-accent);height:100%;display:block}.server-metric-row.is-warning .server-metric-bar i{background:#f59e0b}.server-metric-row.is-critical .server-metric-bar i{background:var(--danger)}.server-metric-foot p{color:var(--muted);margin:0;font-size:11px;line-height:1.35;overflow:hidden}.server-metric-net{flex-wrap:wrap;gap:6px;display:flex}.server-metric-net .is-rx{color:#1d4ed8}.server-metric-net .is-tx{color:#64748b}.server-side-chips{flex-wrap:wrap;gap:8px;display:flex}.server-side-chips span{background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}html[data-theme=dark] .server-ops-overall.is-healthy,html[data-theme=dark] .server-metric-health.is-healthy{color:#86efac}html[data-theme=dark] .server-metric-net .is-rx{color:#5eead4}html[data-theme=dark] .server-metric-net .is-tx{color:#94a3b8}@media (max-width:1100px){.server-metric-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.server-metric-row+.server-metric-row{border-left:0}.server-metric-row:nth-child(2n){border-left:1px solid var(--line)}.server-metric-row:nth-child(n+3){border-top:1px solid var(--line)}}@media (max-width:760px){.server-ops-bar{flex-direction:column;align-items:flex-start}}.server-hero{align-items:center;gap:14px;padding:18px 20px;display:flex}.server-hero h2{margin:2px 0 4px;font-size:18px;font-weight:800}.server-hero p{color:var(--muted);margin:0;font-size:13px;line-height:1.45}.server-cpu-model{font-size:12px!important}.server-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.server-stat-grid.is-six{grid-template-columns:repeat(3,minmax(0,1fr))}.server-stat{gap:6px;padding:16px;display:grid}.server-stat>span{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.server-stat strong{font-size:28px;line-height:1.1}.server-stat small{color:var(--muted);font-size:12px;line-height:1.4}.server-stat.is-warning strong{color:#a16207}.server-stat.is-critical strong{color:var(--danger)}.server-spark{width:100%;height:34px;margin-top:8px;display:block}.server-spark-line{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.35px}.server-spark-area{fill:currentColor;opacity:.1;stroke:none}.server-stat.is-healthy .server-spark,.server-spark-line.is-rx{color:#1d4ed8}.server-stat.is-warning .server-spark{color:#a16207}.server-stat.is-critical .server-spark{color:var(--danger)}.server-spark-line.is-tx{color:#64748b}.server-spark-area.is-rx{color:#1d4ed8}.server-spark-empty{color:var(--muted);margin-top:8px;font-size:11px;display:block}.server-nic-traffic{margin-top:8px}.server-nic-rates{color:var(--muted);gap:14px;margin:6px 0 0;font-size:11px;display:flex}.server-nic-rates .is-rx{color:#1d4ed8}.server-nic-rates .is-tx{color:#64748b}html[data-theme=dark] .server-stat.is-healthy .server-spark,html[data-theme=dark] .server-spark-line.is-rx,html[data-theme=dark] .server-spark-area.is-rx,html[data-theme=dark] .server-nic-rates .is-rx{color:#5eead4}html[data-theme=dark] .server-spark-line.is-tx,html[data-theme=dark] .server-nic-rates .is-tx{color:#94a3b8}.server-nics{padding:18px 20px}.server-nics header{align-items:center;gap:12px;margin-bottom:14px;display:flex}.server-nics h2{margin:2px 0 0;font-size:16px;font-weight:800}.server-empty{color:var(--muted);margin:0;font-size:13px}.server-nic-list{gap:12px;display:grid}.server-nic-list.is-split{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.server-nic{border:1px solid var(--line);border-radius:12px;gap:6px;min-width:0;padding:12px 14px;display:grid}.server-nic>div{gap:2px;display:grid}.server-nic strong{font-size:14px}.server-nic small{color:var(--muted);font-size:12px}.server-nic-apps{color:var(--ink);margin:4px 0 0;font-size:13px;line-height:1.45}.server-disk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.server-disk{border:1px solid var(--line);border-radius:12px;gap:3px;min-width:0;padding:12px 14px;display:grid}.server-disk strong{font-size:14px}.server-disk small,.server-disk p{color:var(--muted);margin:0;font-size:12px}.server-disk.is-warning strong{color:#a16207}.server-disk.is-critical strong{color:var(--danger)}.server-app-groups{gap:18px;display:grid}.server-app-group-head h3{margin:0;font-size:14px;font-weight:800}.server-app-group-head small{color:var(--muted);margin-top:2px;font-size:12px;display:block}.server-app-table-wrap{margin-top:10px;overflow:auto}.server-app-table{border-collapse:collapse;width:100%}.server-app-table th,.server-app-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:8px 10px}.server-app-table th{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:800}.server-app-table td{font-size:12px}.server-app-table td strong{font-size:13px;display:block}.server-app-table td small{color:var(--muted);font-size:11px;display:block}.server-app-table tr.is-warning td:first-child{box-shadow:inset 3px 0 #f59e0b}.server-app-table tr.is-critical td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.server-app-state{text-transform:uppercase;border-radius:999px;padding:2px 7px;font-size:10px;font-style:normal;font-weight:800}.server-app-state.is-running{color:#15803d;background:#22c55e1f}.server-app-state.is-restarting{color:#a16207;background:#f59e0b24}.server-app-state.is-exited,.server-app-state.is-dead,.server-app-state.is-created,.server-app-state.is-paused{color:#b42318;background:#ef44441a}@media (max-width:960px){.server-page{grid-template-columns:1fr}.server-ringkas,.server-panel-apps,.server-panel-storage,.server-panel-ethernet{grid-column:auto}.server-metric-stack{grid-template-columns:repeat(4,minmax(0,1fr))}.server-metric-row{gap:4px;padding:8px 6px 7px}.server-metric-row+.server-metric-row,.server-metric-row:nth-child(2n),.server-metric-row:nth-child(n+3){border-left:1px solid var(--line);border-top:0}.server-metric-spark,.server-metric-ico,.server-metric-health{display:none}.server-metric-id{gap:0}.server-metric-name{font-size:10px}.server-metric-foot p,.server-metric-net{text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.server-metric-net span:nth-child(n+3){display:none}}@media (max-width:760px){.server-stat-grid,.server-stat-grid.is-six,.server-nic-list.is-split,.server-disk-grid{grid-template-columns:1fr}.server-app-table th:nth-child(5),.server-app-table td:nth-child(5),.server-app-table th:nth-child(6),.server-app-table td:nth-child(6){display:none}}.topology-canvas.hide-rate-popups .topology-link-info,.topology-canvas.hide-rate-popups .topology-chassis-tip{display:none!important}.topology-chassis.is-compact .chassis-mini-stats{gap:4px;bottom:3px;left:7px}.topology-chassis.is-compact .chassis-mini-stat{padding:1px 4px}.topology-chassis.is-compact .chassis-mini-stat em{font-size:6px}.topology-chassis.is-compact .chassis-mini-stat b{font-size:9px}html,body{max-width:100%;overflow-x:hidden}@media (max-width:900px){.app-content-action{flex-wrap:wrap;gap:8px;width:100%;display:flex}.app-content-action .btn{flex:auto;justify-content:center;min-height:42px}.topology-actions .btn,.graph-actions .btn{flex:0 0 38px;width:38px;min-width:38px;height:38px;min-height:38px;padding:0}.graph-actions .btn span{display:none}.graph-ops{top:calc(env(safe-area-inset-top) + 62px);margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px}.graph-ops-title{display:none}.app-content-subtitle{font-size:13px;line-height:1.4}.card,.session-card,.dashboard-user-card{max-width:100%}.overflow-x-auto{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%}input,select,textarea{max-width:100%;font-size:16px!important}input[type=checkbox],input[type=radio]{width:auto;max-width:none;font-size:16px!important}.panel-header,.traffic-history-head,.traffic-history-controls,.graph-savebar{flex-direction:column;align-items:stretch}.traffic-history-controls,.graph-save-actions{justify-content:stretch}.traffic-history-controls select,.traffic-history-controls .btn,.graph-save-actions .btn{width:100%}.dashboard-hero-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.dashboard-hero-stat{min-width:0;padding:10px 8px 8px}.dashboard-hero-stat-label{font-size:9px}.dashboard-hero-stat-value{font-size:20px}.dashboard-hero-stat-hint{display:none}.dashboard-hero-desc{max-width:none}.dashboard-hero-header{flex-wrap:wrap;gap:10px}.sessions-search-title{flex-wrap:wrap}.sessions-search-field,.sessions-search-field input{width:100%}.settings-tabs{gap:6px;padding-bottom:8px}.login-turnstile{transform-origin:top;max-width:100%;overflow:hidden;transform:scale(.92)}.page-login{padding:16px 12px calc(16px + env(safe-area-inset-bottom))}.page-login-card{padding:20px 16px!important}.app-content:has(.topology-layout){padding:0 0 8px}:is(.app-content:has(.topology-layout)>.page-transition,.app-content:has(.topology-layout) .app-content-body){gap:0}.topology-workspace,.topology-canvas{border-radius:0;max-width:100%}.topology-canvas{touch-action:pan-x pan-y;height:min(64vh,500px)}.topology-toolbar{flex-flow:column;align-items:stretch;gap:6px;padding:6px 10px;display:flex;top:0}.topology-toolbar-menus{flex-wrap:wrap;align-items:center;gap:6px;width:100%;min-width:0;display:flex}.topology-toolbar-end{flex-wrap:wrap;flex:auto;justify-content:flex-end;gap:6px;min-width:0;margin-left:auto}.topology-toolbar-end:has(.topology-find.is-open){flex:100%;width:100%;margin-left:0}.topology-find-tools{order:0}.topology-find-tools:has(.is-open){flex:100%;order:-1;width:100%}.topology-find{flex:0 0 34px;order:0;width:34px;min-width:34px}.topology-find.is-open{flex:auto;width:auto;min-width:0;max-width:none}.topology-find input{min-height:36px;padding:7px 10px}.topology-editor-pop{width:min(100vw - 20px,360px);left:auto;right:0}.topology-actions,.topology-toolbar-actions{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;flex:0 auto;min-width:0;display:flex;overflow-x:auto}.topology-actions::-webkit-scrollbar{display:none}.topology-toolbar-actions::-webkit-scrollbar{display:none}.topology-toolbar-status{flex:none;margin-left:0}.topology-toolbar-status>span{display:none}.topology-toolbar-status>.topology-unsaved{display:inline-flex!important}.topology-refresh span{display:none}.topology-actions .btn,.topology-toolbar-actions .btn,.topology-refresh{flex:0 0 34px;gap:0;width:34px;min-width:34px;height:34px;min-height:34px;padding:0;font-size:0}.topology-toolbar-actions .btn:not(:has(svg)){width:auto;padding:0 8px;font-size:10px}.topology-census{max-width:calc(100vw - 32px);padding:6px 12px;font-size:11px}.topology-device-detail{max-width:min(280px,100% - 20px)}.topology-layout.editor-collapsed .topology-inspector{display:none}.topology-device-detail{z-index:21;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:auto;min-width:0;max-width:min(280px,100% - 20px);padding:10px 12px;top:10px;bottom:auto;left:10px;display:grid!important}.topology-device-detail dl{display:none}.topology-detail-edit,.topology-detail-actions{display:inline-flex}.topology-find-list{max-height:min(40vh,240px)}.topology-node-tooltip{display:none!important}.ui-cms-live{grid-template-columns:1fr}.topology-connections .topology-link-list{grid-template-columns:1fr;padding:12px}.topology-link-row{grid-template-columns:1fr!important}.vpn-group-card{max-width:min(370px,100vw - 24px)}.ops-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.ops-health>header{flex-direction:column;align-items:flex-start;gap:8px}.modal-backdrop,.neighbor-modal-backdrop{align-items:flex-end!important;padding:12px!important}.neighbor-modal,.modal{border-radius:16px 16px 0 0;width:100%;max-width:100%!important}.notif-popup{max-width:calc(100vw - 16px);right:8px;left:auto!important}}@media (max-width:560px){.ops-health-grid{grid-template-columns:1fr!important}.session-card-grid,.device-card-resources{grid-template-columns:1fr}.bottom-nav{padding-bottom:env(safe-area-inset-bottom)}.app-shell{padding-bottom:calc(76px + env(safe-area-inset-bottom))}.app-content:has(.topology-layout){padding:0 0 6px}.topology-canvas{height:min(62vh,440px)}.login-turnstile{transform:scale(.86)}}.app-content:has(.topology-layout){min-height:100dvh}:is(.app-content:has(.topology-layout)>.page-transition,.app-content:has(.topology-layout) .app-content-body){min-height:0}.topology-layout{align-items:stretch}.topology-workspace{flex-direction:column;min-width:0;height:auto;min-height:0;display:flex}.topology-toolbar{flex:none}.topology-canvas{flex:auto;height:620px;min-height:0}@media (max-width:1100px){.topology-workspace{height:auto;min-height:0}}@media (max-width:900px){.topology-workspace{height:auto;min-height:0}}@media (max-width:560px){.topology-workspace{height:auto;min-height:0}}.page-login-logo{-o-object-fit:contain;object-fit:contain;width:100%;max-width:300px;height:auto;margin:0 auto;display:block}.ui-cms-panel{gap:22px;display:grid}.ui-cms-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ui-cms-head h2{margin:2px 0 0;font-size:16px}.ui-cms-head-actions{flex-wrap:wrap;gap:8px;display:flex}.ui-cms-live{border:1px solid var(--line);background:#1d4ed80a;border-radius:14px;grid-template-columns:minmax(180px,220px) minmax(0,1fr);align-items:center;gap:12px;padding:12px;display:grid}.ui-cms-live-hero{color:#f4f8ff;border-radius:12px;grid-column:1/-1;gap:4px;padding:12px 14px;display:grid}.ui-cms-live-hero b{font-size:15px}.ui-cms-live-hero small{color:#f4f8ffc7;font-size:12px}.ui-cms-live-sidebar{border-radius:12px;align-items:center;gap:10px;min-height:64px;padding:10px 12px;display:flex}.ui-cms-live-sidebar img{-o-object-fit:contain;object-fit:contain;width:40px;height:40px}.ui-cms-live-sidebar small{letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:800;display:block}.ui-cms-live-sidebar b{font-size:14px;display:block}.ui-cms-live-wide{-o-object-fit:contain;object-fit:contain;justify-self:start;max-width:220px;height:40px}.ui-cms-live p{color:var(--muted);grid-column:1/-1;margin:0;font-size:11px}.ui-cms-flash{border-radius:8px;margin:0;padding:8px 10px;font-size:12px}.ui-cms-flash.is-ok{color:var(--accent);background:#1d4ed81a}.ui-cms-flash.is-err{color:var(--danger);background:#b423181a}.ui-cms-section{border-top:1px solid var(--line);gap:12px;padding-top:16px;display:grid}.ui-cms-section h3{margin:0;font-size:13px}.ui-cms-section h4{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:11px}.ui-cms-hint,.ui-cms-footnote{color:var(--muted);margin:0;font-size:11px}.ui-cms-assets{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.ui-cms-asset{border:1px solid var(--line);border-radius:12px;align-items:center;gap:12px;padding:10px;display:flex}.ui-cms-asset-preview{background:#1d4ed80f;border-radius:10px;justify-content:center;align-items:center;width:72px;height:64px;display:flex;overflow:hidden}.ui-cms-asset.is-wide .ui-cms-asset-preview{width:118px}.ui-cms-asset-preview img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:56px}.ui-cms-asset-copy{gap:4px;min-width:0;display:grid}.ui-cms-asset-copy strong{font-size:12px}.ui-cms-asset-copy span,.ui-cms-asset-copy em{color:var(--muted);font-size:11px;font-style:normal}.ui-cms-asset-copy em{color:var(--danger)}.ui-cms-asset-actions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.ui-cms-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.ui-cms-grid label,.ui-cms-font,.ui-cms-swatches label{gap:5px;font-size:11px;font-weight:700;display:grid}.ui-cms-grid .is-full{grid-column:1/-1}.ui-cms-themes{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.ui-cms-theme{border:1px solid var(--line);border-radius:12px;padding:12px}.ui-cms-swatches{gap:8px;display:grid}.ui-cms-swatches label>span{align-items:center;gap:8px;display:flex}.ui-cms-swatches input[type=color]{border:1px solid var(--line);background:0 0;border-radius:8px;width:42px;height:34px;padding:2px}.ui-cms-rows,.ui-cms-blocks{gap:8px;display:grid}.ui-cms-blocks{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.ui-cms-row{grid-template-columns:28px minmax(0,1fr) minmax(0,.7fr) auto;align-items:center;gap:8px;display:grid}.ui-cms-blocks .ui-cms-row,.ui-cms-icon-rows .ui-cms-row{grid-template-columns:28px minmax(0,1fr) auto}.ui-cms-model-rows .ui-cms-row{grid-template-columns:28px minmax(90px,.8fr) minmax(0,1fr) minmax(120px,.9fr) auto}.ui-cms-check{justify-content:center;align-items:center;display:flex}.ui-cms-move{gap:4px;display:flex}.ui-cms-move button{background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.ui-cms-move button:disabled{opacity:.35}.ui-cms-model-rows select{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:8px;min-height:34px;padding:4px 8px;font-size:12px}.ui-cms-section>.btn{margin-top:10px}.ui-cms-vpn-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;display:grid}.ui-cms-vpn-item{border:1px solid var(--line);cursor:pointer;background:#1d4ed809;border-radius:10px;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;display:grid}.ui-cms-vpn-item input{accent-color:var(--accent);width:14px;height:14px;margin:0}.ui-cms-vpn-item span{min-width:0;display:grid}.ui-cms-vpn-item strong,.ui-cms-vpn-item small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-cms-vpn-item strong{font-size:12px;font-weight:750}.ui-cms-vpn-item small{color:var(--muted);font-size:10px}.ui-cms-vpn-item:has(input:checked){background:#1d4ed814;border-color:#1d4ed847}.ui-cms-vpn-group{gap:8px;display:grid}.ui-cms-vpn-group h4{margin:4px 0 0}.ui-cms-vpn-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.ui-cms-section>.ui-cms-vpn-actions>.btn{margin-top:0}@media (max-width:560px){.ui-cms-vpn-grid{grid-template-columns:1fr}}.page-login-logo img,.ui-cms-asset-preview img{-o-object-fit:contain;object-fit:contain}@media (min-width:640px){.sm\:flex-row{flex-direction:row}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}}
