*,: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}}.fixed{position:fixed}.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}.mb-6{margin-bottom:1.5rem}.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}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.min-h-screen{min-height:100vh}.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-center{justify-content:center}.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:#f1f6f5;--panel:#fff;--line:#d6e2df;--muted:#62737d;--ink:#0f1f2a;--accent:#0f766e;--accent-dark:#0b5f59;--danger:#b42318;--sidebar-bg:#0e2a28;--sidebar-ink:#edf7f7;--sidebar-muted:#9db7b2;--sidebar-line:#ffffff1a;--sidebar-active:#ffffff17}html[data-theme=dark]{--bg:#0b1418;--panel:#132026;--line:#24353d;--muted:#8fa3ad;--ink:#e8f1f4;--accent:#2dd4bf;--accent-dark:#5eead4;--danger:#f87171;--sidebar-bg:#071012;--sidebar-ink:#edf7f7;--sidebar-muted:#8aa8a3;--sidebar-line:#ffffff14;--sidebar-active:#2dd4bf1f}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:#0f1a1f}html[data-theme=dark] .btn{color:var(--ink);border-color:var(--line);background:#1a2b32}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:#0f1a1f}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-heading{justify-content:space-between;align-items:end;margin-bottom:10px;display:flex}.graph-overview-heading h2{margin:1px 0 0;font-size:17px;font-weight:800}.graph-overview-heading>span{color:var(--muted);font-size:11px;font-weight:700}.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:#0f766e80}.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:#0f766e1a;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:#0f766e}.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:#0f766e}.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)}}.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{min-width:0}.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:#0f766e;stroke:#0f766e}.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}}.rrd-settings-layout{gap:16px;display:grid}.rrd-settings-section{padding:20px}.rrd-settings-heading{align-items:center;gap:11px;margin-bottom:18px;display:flex}.rrd-settings-heading h2{margin:1px 0 0;font-size:16px;font-weight:800}.rrd-settings-icon{color:var(--accent);background:#0f766e1a;border:1px solid #0f766e2e;border-radius:8px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.rrd-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}.rrd-interface-tools{grid-template-columns:minmax(180px,1fr) minmax(240px,.7fr);gap:8px;margin-bottom:12px;display:grid}.rrd-router-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:18px;display:grid}.rrd-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}.rrd-router-card:hover{border-color:#0f766e59}.rrd-router-card.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.rrd-router-card-icon{color:var(--accent);background:#0f766e1a;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.rrd-router-card-body{gap:1px;min-width:0;display:grid}.rrd-router-card-body strong,.rrd-router-card-body small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rrd-router-card-body strong{font-size:13px}.rrd-router-card-body small{color:var(--muted);font-size:10.5px}.rrd-router-card .status-dot{flex-shrink:0;margin-left:auto}.rrd-router-card-add{color:var(--muted);border-style:dashed;justify-content:center;font-size:12px;font-weight:700}.rrd-router-card-add:hover{color:var(--accent-dark)}.rrd-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){.rrd-detail{grid-template-columns:minmax(0,1fr)}}.rrd-detail-heading{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;margin:0 0 12px;font-size:11px;font-weight:800}.rrd-detail-config{border-right:1px solid var(--line);min-width:0;padding-right:20px}@media (max-width:900px){.rrd-detail-config{border-right:0;border-bottom:1px solid var(--line);padding-bottom:18px;padding-right:0}}.rrd-detail-interfaces{min-width:0}.rrd-source-fields{gap:10px;display:grid}.rrd-source-fields label{gap:5px;min-width:0;font-size:11px;font-weight:700;display:grid}.rrd-source-fields .rrd-source-enabled{align-items:center;gap:7px;display:flex}.rrd-source-error{color:var(--danger);background:#b4231814;border-radius:8px;margin-top:10px;padding:8px 10px;font-size:12px;font-weight:600}.rrd-source-hint{color:var(--muted);margin:0 0 8px;font-size:12px;line-height:1.45}.rrd-host-row{gap:8px;display:flex}.rrd-host-row input{flex:1;min-width:0}.rrd-host-row button{white-space:nowrap;flex-shrink:0}.rrd-ping-result{border-radius:8px;margin:-4px 0 4px;padding:6px 10px;font-size:12px;font-weight:700}.rrd-ping-result.is-ok{color:#15803d;background:#16a34a1a}.rrd-ping-result.is-fail{color:var(--danger);background:#b4231814}.rrd-source-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:10px;display:flex}.rrd-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}.rrd-manual-add{grid-template-columns:minmax(0,1fr) 40px;gap:6px;display:grid}.rrd-interface-list{border:1px solid var(--line);border-radius:8px;max-height:380px;display:grid;overflow-y:auto}.rrd-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}.rrd-interface-row:last-child{border-bottom:0}.rrd-interface-row.is-selected{background:#0f766e0d}.rrd-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}.rrd-check{border:1px solid var(--line);border-radius:5px;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}.is-selected .rrd-check{background:var(--accent);border-color:var(--accent);color:#fff}.rrd-interface-info{min-width:0;display:grid}.rrd-interface-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.rrd-interface-info small{color:var(--muted);font-size:11px}.rrd-interface-state{color:var(--muted);font-size:10px;font-weight:700}.rrd-interface-state.is-running{color:#15803d}.rrd-primary-choice{color:var(--muted);white-space:nowrap;align-items:center;gap:5px;font-size:11px;font-weight:700;display:flex}.rrd-preset-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.rrd-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}.rrd-preset.is-active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px #0f766e1f}.rrd-preset-lines{gap:3px;width:24px;display:grid}.rrd-preset-lines i{border-radius:999px;height:3px;display:block}.rrd-style-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.rrd-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}.rrd-color-control{align-items:center;gap:7px;display:flex}.rrd-color-control input{border:0;border-radius:6px;width:34px;height:28px;padding:0}.rrd-color-control code{color:var(--muted);font-size:11px}.rrd-style-controls .rrd-slider{flex-direction:column;grid-column:1/-1;align-items:stretch;gap:8px}.rrd-slider span{justify-content:space-between;display:flex}.rrd-toggle-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.rrd-layout-setting{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.rrd-layout-label{margin-bottom:8px;font-size:12px;font-weight:800;display:block}.rrd-layout-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.rrd-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}.rrd-layout-options button.is-active{border-color:var(--accent);box-shadow:0 0 0 1px #0f766e1f}.rrd-layout-options strong{color:var(--ink);font-size:12px}.rrd-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}.rrd-toggle-row label{background:var(--bg);cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}.rrd-toggle-row span{display:grid}.rrd-toggle-row strong{font-size:12px}.rrd-toggle-row small{color:var(--muted);font-size:10px}.rrd-preview{background:var(--bg);border:1px solid var(--line);border-radius:8px;margin-top:16px;position:relative;overflow:hidden}.rrd-preview-grid{background:repeating-linear-gradient(to bottom, transparent 0, transparent 32%, var(--line) 33%, transparent 34%);position:absolute;inset:0}.rrd-preview-line,.rrd-preview-area{border-top:3px solid;height:45%;position:absolute;top:28%;left:-3%;right:-3%;transform:skewY(-4deg)}.rrd-preview-line.is-tx{top:53%;transform:skewY(3deg)}.rrd-preview-area{opacity:.05;background:currentColor;border-top-width:0}.rrd-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}.rrd-savebar>div,.rrd-save-actions{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.rrd-form-error{color:var(--danger)}.rrd-form-success{color:var(--accent)}@media (max-width:720px){.rrd-interface-tools,.rrd-style-controls,.rrd-toggle-row,.rrd-layout-options,.rrd-source-fields,.resource-current-grid{grid-template-columns:1fr}.rrd-preset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rrd-savebar,.rrd-save-actions{flex-direction:column;align-items:stretch}}.rrd-settings-layout,.rrd-settings-section,.rrd-settings-section>*,.rrd-settings-heading,.rrd-settings-heading>div,.rrd-interface-tools,.rrd-manual-add,.rrd-interface-list,.rrd-interface-row,.rrd-interface-toggle,.rrd-preset-grid,.rrd-preset,.rrd-style-controls,.rrd-toggle-row,.rrd-savebar,.rrd-savebar>div,.rrd-save-actions{min-width:0;max-width:100%}.rrd-settings-section{overflow:hidden}.rrd-settings-heading>div,.rrd-preset>span,.rrd-style-controls>label>span,.rrd-toggle-row label>span,.rrd-savebar span{overflow-wrap:break-word;word-break:normal}.rrd-selected-count,.rrd-interface-state,.rrd-primary-choice,.rrd-savebar .btn{flex-shrink:0}.rrd-savebar>div:first-child{flex:240px}.rrd-save-actions{flex-wrap:wrap;flex:320px;justify-content:flex-end}.rrd-form-error,.rrd-form-success{text-align:left;flex:180px;max-width:100%}@media (max-width:460px){.rrd-settings-section{padding:12px}.rrd-settings-heading{align-items:flex-start}.rrd-selected-count{white-space:nowrap}.rrd-interface-row{grid-template-columns:minmax(0,1fr);align-items:stretch;padding:5px}.rrd-primary-choice{border-top:1px solid var(--line);justify-content:flex-start;margin:0 7px;padding:7px 0 3px 34px}.rrd-preset-grid{grid-template-columns:1fr}.rrd-style-controls>label{flex-wrap:wrap;align-items:flex-start;gap:8px}.rrd-savebar,.rrd-savebar>div,.rrd-save-actions{flex-direction:column;align-items:stretch;width:100%}.rrd-savebar>div:first-child,.rrd-save-actions,.rrd-form-error,.rrd-form-success{text-align:left;flex-basis:auto}.rrd-savebar .btn{justify-content:center;width:100%}}.theme-toggle{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#0f766e1a;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.theme-toggle:hover{border-color:#0f766e59}.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:#0f766e73;box-shadow:0 0 0 1px #0f766e1f}.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%{opacity:0;filter:blur(2px);transform:translateY(14px)scale(.985)}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{animation:.42s both page-fade}.page-login-card{animation:.48s cubic-bezier(.22,1,.36,1) both stagger-rise}.login-captcha{justify-items:center;display:grid}.login-turnstile{min-height:65px}.page-login-copyright{color:#ca8a04;font-weight:700}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:#0f766e1f;border:1px solid #0f766e33;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:#0f766e14;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:#0f766e}.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:#0f766e59}.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}.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,#0f766e);background:#0f766e1f;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,#0f766e);background:#0f766e14;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 #0f766e29}.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 #0f766e29}.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 #0f766e24}.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{grid-template-columns:264px minmax(0,1fr);min-height:100dvh;display:grid}.app-shell:has(.sidebar.collapsed){grid-template-columns:82px minmax(0,1fr)}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-ink);flex-direction:column;gap:8px;height:100dvh;padding:22px 16px;transition:padding .18s,width .18s;display:flex;position:sticky;top: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-label{color:var(--sidebar-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:10px;font-weight:800}.sidebar-account-tools{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sidebar-account-tools .theme-toggle,.sidebar-account-tools .notif-bell{width:100%;height:38px}.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;gap:8px;padding:8px;font-size:12px;font-weight:700;display:flex}.sidebar-account-logout:hover{color:#fecaca;background:#b423181f;border-color:#f8717159}.sidebar.collapsed .sidebar-account-label,.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}.sidebar.collapsed .sidebar-account-tools .theme-toggle,.sidebar.collapsed .sidebar-account-tools .notif-bell,.sidebar.collapsed .sidebar-account-logout{width:40px}.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:40px;height:40px;display:flex}.sidebar-brand-logo{-o-object-fit:contain;object-fit:contain;transform-origin:50%;will-change:transform;width:40px;height:40px;animation:12s linear infinite logo-spin;display:block}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.sidebar-brand-logo{animation:none}}.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:999px;width:68%;height:68%;animation:1.8s ease-in-out infinite app-loading-pulse}.app-loading-ring{border:3px solid #0f766e26;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:scale(1)}50%{opacity:.75;transform:scale(.9)}}@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(--sidebar-muted);letter-spacing:.04em;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{gap:3px;display:grid}.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:hover{color:var(--sidebar-ink);background:#ffffff0d}.sidebar-nav-link.active{background:var(--sidebar-active);color:var(--sidebar-ink);position:relative}.sidebar-nav-link.active:before{background:var(--accent);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;padding:32px 36px;display:grid;position:relative}.app-content>.page-transition{gap:22px}.app-content-header{justify-content:space-between;align-items:center;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;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,#0f766e2e,#0f766e12);border:1px solid #0f766e29;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,#0f766e14);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:#0f766e47}.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:#0f766e14;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:#0f766e66;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:#0f766e59;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:#0f766e}.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:#0f766e}.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:#0f766e0f}.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:#2dd4bf14}.dashboard-hero{color:#edf7f7;background:radial-gradient(120% 140% at 100% 0,#2dd4bf38,#0000 55%),linear-gradient(145deg,#0b2f2c 0%,#0f4c47 48%,#0b5f59 100%);border:1px solid #ffffff14;border-radius:18px;padding:22px;position:relative;overflow:hidden}.dashboard-hero-glow{pointer-events:none;background:radial-gradient(circle at 20% 120%,#0f766e73,#0000 50%);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:#d7efeb;letter-spacing:.02em;background:#ffffff1a;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.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:#edf7f7a6;margin:0 0 2px;font-size:12.5px;font-weight:600}.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:#0f766e52;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:34px;height:34px}.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:#0f766e59;transform:translateY(-1px)}.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{padding-bottom:calc(88px + env(safe-area-inset-bottom));grid-template-rows:auto 1fr;grid-template-columns:1fr}.app-content{gap:14px;padding:14px 14px 8px}.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:#0f766e52;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:#0f766e}.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,.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,#0f766e29 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:2000px;height:1200px;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:#0f766e;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 #0f766e1f}}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:#0f766e;background:#0f766e14;border:1px solid #0f766e2e;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:#2dd4bf14}.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:#0f766e;border-color:#5ca69d}.topology-icon-picker button.active{color:#0f766e;background:#0f766e1a;border-color:#0f766e;box-shadow:0 0 0 2px #0f766e1a}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}@media (max-width:900px){.topology-layout{grid-template-columns:1fr}.topology-inspector{order:-1}.topology-canvas{height:500px}.topology-actions{width:100%}.topology-actions .btn{flex:1}.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:#0f766e24;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:#0f766e06;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) 330px;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:#0f766e0f;border-radius:8px;justify-content:center;align-items:center;min-width:32px;height:32px;padding:0;display:flex}.topology-inspector-toggle:hover{background:#0f766e1f;border-color:#0f766e4d}.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:end;width:48px}.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 #0f766e2e;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:#0f766e17;border:1px solid #0f766e29;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-device-detail dl{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.topology-device-detail dl div{background:#0f766e09;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{filter:invert()}.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 #0f766e40}.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:34px;height:34px}.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:30px;height:30px}.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:#0f766e33;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:#0f766e59 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:#0f766e47;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:#0f766e47;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:#0f766e09;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:#0f766e09;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:#0f766e0a;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:#0f766e33;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:#0f766e14;border-color:#0f766e47}.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 #0f766e29;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}.topology-node:hover .topology-node-icon{transform:translateY(-2px);box-shadow:0 9px 22px #0f1f2a29}.topology-node.selected .topology-node-icon{box-shadow:0 0 0 3px #0f766e38,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{display:none}.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-icon{background:#101d22f0;border-color:#5eead433}html[data-theme=dark] .topology-node strong{background:#071012db}.topology-node:hover .topology-node-icon{transform:none}.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:#0f766e0b;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(#0f766e13 1px,#0000 1px),linear-gradient(90deg,#0f766e13 1px,#0000 1px),radial-gradient(circle,#0f766e33 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(#2dd4bf12 1px,#0000 1px),linear-gradient(90deg,#2dd4bf12 1px,#0000 1px),radial-gradient(circle,#2dd4bf29 1px,#0000 1px)}.vpn-group-link{fill:none;stroke:#0f766e94;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 #0f766e38;border-radius:14px;width:370px;max-height:260px;position:absolute;overflow:hidden;box-shadow:0 12px 30px #0f1f2a1f}.vpn-group-card header{cursor:grab;background:#0f766e0e;border-bottom:1px solid #0f766e24;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:#0f766e1f;border-radius:999px;padding:3px 7px;font-size:9px}.vpn-group-grid{scrollbar-width:thin;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:216px;padding:10px;display:grid;overflow:auto}.vpn-group-device{color:var(--text);cursor:pointer;text-align:left;background:#f7faf9a6;border:1px solid #0f766e1f;border-radius:9px;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:2px;padding:7px;display:grid}.vpn-group-device:hover{background:#0f766e14;border-color:#0f766e47}.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-card{background:#0e1b20c7;border-color:#5eead438}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:#0f766e47;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:#0f766e09;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),#0f766e06);border-color:#0f766e24;padding:20px;overflow:hidden}.ops-health-title{align-items:center;gap:11px;display:flex}.ops-health-server-icon{background:linear-gradient(145deg,#0f766e,#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:#0f766e0e;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 #2dd4bf99);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:#0f766e3d;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:#0f766e}.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, #0f766e0d, var(--bg) 42%);border-color:#0f766e38}.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 #0f766e2e}.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:#0f766e14}.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(#2dd4bf14,#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:#0f766eeb;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{z-index:3;position:absolute}.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:1;align-items:center;gap:8px;min-width:0;display:flex}.topology-toolbar-status>span{min-width:0}.topology-refresh{flex: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:#0f766e;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 26px}.topology-chassis.is-compact .topology-chassis-shell>span{min-width:0;max-width:140px}.topology-chassis.is-compact .topology-chassis-shell strong{max-width:118px}.topology-chassis-shell{color:#d7e6e4;cursor:grab;text-align:left;background:linear-gradient(#1c2528 0%,#12191b 100%);border:1px solid #3d4d51;border-radius:10px;align-items:center;gap:8px;width:100%;height:100%;padding:8px 10px 26px;display:flex;box-shadow:0 10px 22px #0f1f2a2e}.topology-chassis.selected .topology-chassis-shell{box-shadow:0 0 0 3px #0f766e47,0 10px 22px #0f1f2a2e}.topology-chassis-logo{background:#fff;border-radius:4px;flex:none;padding:1px}.topology-chassis-shell span{min-width:0;display:grid}.topology-chassis-shell small{color:#8aa8a3;letter-spacing:.02em;text-transform:uppercase;font-size:8px;font-weight:800}.topology-chassis-shell strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.topology-chassis-ports{pointer-events:none;position:absolute;inset:0}.topology-chassis-port{color:#c5d5d2;cursor:pointer;pointer-events:auto;z-index:6;background:#2a3437;border:1px solid #5b6c70;border-radius:3px;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}.topology-chassis-port b{font-size:7px}.topology-chassis-port.is-up{color:#bbf7d0;background:#14332c;border-color:#22c55e}.topology-chassis-port.is-down{color:#94a3b8;background:#2a3437;border-color:#64748b}.topology-chassis-tip{color:#fff;z-index:8;background:#10211ef0;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%)}.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:#0f766e73!important}@media (max-width:760px){.chassis-port-pickers{grid-template-columns:1fr}}html[data-theme=dark] .topology-chassis-shell{background:linear-gradient(#152024 0%,#0b1418 100%);border-color:#2c3d43}.chassis-mini-stats{pointer-events:none;z-index:6;align-items:baseline;gap:6px;display:flex;position:absolute;bottom:5px;left:8px}.chassis-mini-stat{align-items:baseline;gap:3px;line-height:1;display:inline-flex}.chassis-mini-stat em{color:#7d9893;letter-spacing:.04em;text-transform:uppercase;font-size:6px;font-style:normal;font-weight:800}.chassis-mini-stat b{color:#d7e6e4;font-size:8px;font-weight:800}.chassis-mini-stat.is-healthy b{color:#86efac}.chassis-mini-stat.is-warning b{color:#fbbf24}.chassis-mini-stat.is-critical b{color:#f87171}.chassis-mini-stat.is-idle b{color:#94a3b8}.server-page{gap:16px;min-width:0;display:grid}.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{gap:10px;display:grid}.server-metric-row{background:var(--panel);border:1px solid var(--line);border-radius:16px;gap:8px;padding:12px 14px 11px;display:grid;position:relative;overflow:hidden}.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:.85;border-radius:99px;width:4px;height:100%;position:absolute;top:0;left:0}.server-metric-main{grid-template-columns:minmax(110px,160px) 1fr;align-items:center;gap:12px;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;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:12px}.server-metric-net{flex-wrap:wrap;gap:6px;display:flex}.server-metric-net .is-rx{color:#0f766e}.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:760px){.server-metric-main{grid-template-columns:1fr}.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:#0f766e}.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:#0f766e}.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:#0f766e}.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-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px;display:grid}.server-app{border:1px solid var(--line);border-radius:12px;gap:4px;min-width:0;padding:11px 12px;display:grid}.server-app-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.server-app strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.server-app small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.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}.server-app-metrics{color:var(--muted);flex-wrap:wrap;gap:4px 10px;margin:4px 0 0;font-size:11px;display:flex}.server-app.is-warning{border-color:#f59e0b59}.server-app.is-critical{border-color:#ef444447}@media (max-width:760px){.server-stat-grid,.server-stat-grid.is-six,.server-nic-list.is-split,.server-disk-grid,.server-app-grid{grid-template-columns:1fr}}.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:5px;bottom:4px;left:7px}.topology-chassis.is-compact .chassis-mini-stat em{font-size:5px}.topology-chassis.is-compact .chassis-mini-stat b{font-size:7px}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,.topology-actions .btn{flex:auto;justify-content:center;min-height:42px}.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,.rrd-savebar{flex-direction:column;align-items:stretch}.traffic-history-controls,.rrd-save-actions{justify-content:stretch}.traffic-history-controls select,.traffic-history-controls .btn,.rrd-save-actions .btn{width:100%}.dashboard-hero-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.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}.topology-workspace,.topology-canvas{max-width:100%}.topology-canvas{touch-action:pan-x pan-y;height:min(68vh,520px)}.topology-toolbar{flex-direction:column;align-items:stretch;gap:8px}.topology-toolbar-actions{flex-wrap:wrap;width:100%}.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}.graph-overview-heading{flex-direction:column;align-items:flex-start;gap:6px}}@media (max-width:560px){.dashboard-hero-stats{grid-template-columns:1fr}.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))}.topology-canvas{height:min(62vh,440px)}.login-turnstile{transform:scale(.86)}}@media (min-width:640px){.sm\:flex-row{flex-direction:row}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}}
