@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Inter_d8ebd1;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Inter_Fallback_d8ebd1;src:local("Arial");ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}.__className_d8ebd1{font-family:__Inter_d8ebd1,__Inter_Fallback_d8ebd1;font-style:normal}.__variable_d8ebd1{--font-inter:"__Inter_d8ebd1","__Inter_Fallback_d8ebd1"}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/886030b0b59bc5a7-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/0aa834ed78bf6d07-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/67957d42bae0796d-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/f911b923c6adde36-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/939c4f875ee75fbb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__JetBrains_Mono_4dc837;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/bb3ef058b751a6ad-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__JetBrains_Mono_Fallback_4dc837;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_4dc837{font-family:__JetBrains_Mono_4dc837,__JetBrains_Mono_Fallback_4dc837;font-style:normal}.__variable_4dc837{--font-mono:"__JetBrains_Mono_4dc837","__JetBrains_Mono_Fallback_4dc837"}:root{--bg:#f5f6fa;--surface:#fff;--surface-2:#f2f4f8;--surface-3:#e9edf4;--border:#e4e7ee;--border-2:#cfd6e2;--line:#edf0f5;--text:#0f172a;--text-2:#334155;--muted:#64748b;--faint:#94a3b8;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:rgba(79,70,229,.1);--accent-text:#4338ca;--green:#16a34a;--yellow:#b45309;--red:#dc2626;--blue:#2563eb;--sidebar:#0f1424;--radius:14px;--font:var(--font-inter),Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--mono:var(--font-mono),"JetBrains Mono",ui-monospace,Consolas,monospace;color-scheme:light}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}body.no-scroll{overflow:hidden}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,p{margin:0}h1{font-size:26px;letter-spacing:-.02em;display:flex;align-items:center;gap:10px;flex-wrap:wrap}h1,h2{font-weight:700}h2{font-size:18px}h3{font-size:15px;font-weight:650}h4{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.mono,code{font-family:var(--mono);font-size:.92em}button{font:inherit}svg{flex-shrink:0}.icon{vertical-align:-.15em}.row{display:flex;align-items:center;gap:8px;min-width:0}.wrap{flex-wrap:wrap}.gap-s{gap:5px}.grow{flex:1 1}.grow,.min0{min-width:0}.spacer{flex:1 1}.muted{color:var(--muted)}.text2{color:var(--text-2)}.strong{font-weight:600}.sm{font-size:13px}.xs{font-size:12px}.r{text-align:right}.block{display:block}.nowrap,.truncate{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;min-width:0}.ok-text{color:var(--green)}.warn-text{color:var(--yellow)}.danger-text{color:var(--red)}.link-plain{color:var(--text)}.pad-s{padding:12px 14px}.cnt{font-size:11.5px;font-weight:600;color:var(--muted);background:var(--surface-3);border-radius:99px;padding:1px 8px;letter-spacing:0;text-transform:none}.tag{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 6px}.boot{display:grid;place-items:center;min-height:100vh}.spinner{width:18px;height:18px;border:2px solid var(--border-2);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .8s linear infinite}.spinner-xs{width:10px;height:10px;border-color:transparent currentColor currentColor}@keyframes spin{to{transform:rotate(1turn)}}.loading{display:flex;align-items:center;gap:10px;color:var(--muted);padding:18px}.skeleton{border-radius:6px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.chart{width:100%;min-width:0}.chart svg{display:block}.chart-empty{display:grid;place-items:center;color:var(--muted);font-size:13px;background:repeating-linear-gradient(-45deg,#fafbfd,#fafbfd 8px,#f4f6fa 0,#f4f6fa 16px);border-radius:10px;text-align:center;padding:16px}.app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--sidebar);color:#c7cee0;padding:18px 14px;display:flex;flex-direction:column;gap:6px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{gap:11px;padding:0 6px 16px}.brand,.logo{display:flex;align-items:center}.logo{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#6366f1,#8b5cf6);justify-content:center;flex-shrink:0}.logo-lg{width:52px;height:52px;border-radius:14px}.brand-name{color:#fff;font-weight:700;font-size:15px}.brand-sub{color:#6f7a95;font-size:11.5px}.menu-btn{display:none!important;margin-left:auto;color:#c7cee0!important}.nav{display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;font-weight:500;color:#c7cee0}.nav-link:hover{background:hsla(0,0%,100%,.06);color:#fff;text-decoration:none}.nav-link.active{background:hsla(0,0%,100%,.08);color:#fff;box-shadow:inset 3px 0 0 #818cf8}.nav-link.active .icon{color:#a5b4fc}.nav-count{margin-left:auto;font-size:11px;font-weight:700;background:hsla(0,0%,100%,.1);padding:1px 7px;border-radius:99px;color:#e2e8f0}.n-warn{background:rgba(251,191,36,.18);color:#fbbf24}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#5d6884;padding:16px 11px 4px;font-weight:600}.nav-sub{padding:6px 11px;font-size:13px;color:#aab3c8}.sdot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.s-g{background:#4ade80}.s-y{background:#fbbf24}.s-r{background:#f87171}.side-foot{margin-top:auto;gap:10px;border-top:1px solid hsla(0,0%,100%,.07);padding-top:14px}.avatar,.side-foot{display:flex;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;justify-content:center;font-weight:700;flex-shrink:0}.u-meta{flex:1 1;min-width:0}.u-name{color:#fff;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-icon{color:#8b95ad!important}.side-icon:hover{background:hsla(0,0%,100%,.08)!important;color:#fff!important}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:64px;flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);gap:20px;padding:0 28px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.gsearch,.topbar{display:flex;align-items:center}.gsearch{flex:1 1;max-width:560px;gap:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:8px 12px;color:var(--faint);font-size:13px;cursor:text;text-align:left}.gsearch:hover{border-color:var(--border-2)}.kbd{margin-left:auto;font-size:11px;border:1px solid #d5dae4;background:#fff;border-radius:5px;padding:0 6px;color:var(--muted);font-family:var(--font)}.top-right{margin-left:auto;gap:12px}.live,.top-right{display:flex;align-items:center}.live{gap:7px;font-size:12.5px;color:var(--green);font-weight:600;background:rgba(22,163,74,.08);padding:4px 10px;border-radius:99px;white-space:nowrap}.live .pulse{animation:pulse 1.6s ease-in-out infinite}.live-bad{color:var(--red);background:rgba(220,38,38,.08)}.pulse{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}@keyframes pulse{50%{opacity:.3}}.icon-btn{position:relative;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;border:none;background:transparent;color:#475569;cursor:pointer}.icon-btn:hover{background:var(--surface-2)}.bell-wrap{position:relative}.bell-dot{position:absolute;top:6px;right:7px;width:8px;height:8px;border-radius:50%;background:var(--red);border:2px solid #fff}.dropdown{position:absolute;right:0;top:44px;width:360px;max-height:420px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 50px rgba(15,23,42,.18);padding:6px 14px 10px;z-index:40}.dropdown-head{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.attn-link{color:var(--text)}.attn-link:hover{text-decoration:none;background:var(--surface-2)}.content{padding:26px 28px 56px;min-width:0}.page{display:flex;flex-direction:column;gap:18px;max-width:1500px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-head-text{display:flex;flex-direction:column;gap:4px;min-width:0}.page-head-text h1:empty{display:none}.crumbs{display:flex;font-size:13px;color:var(--muted);flex-wrap:wrap}.crumbs,.crumbs span{align-items:center;gap:6px}.crumbs span{display:inline-flex}.crumbs a{color:var(--muted)}.sec-title{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2)}.section{gap:12px}.section,.stack{display:flex;flex-direction:column}.stack{gap:14px}.col{display:flex;flex-direction:column;gap:16px;min-width:0}.overlay-top{align-items:flex-start!important;padding-top:12vh!important}.palette{width:min(640px,100%);background:var(--surface);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden}.palette-input{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);color:var(--muted)}.palette-input input{border:none;box-shadow:none!important;padding:2px 0;font-size:15px}.palette-list{max-height:52vh;overflow:auto;padding:6px}.palette-item{display:flex;align-items:center;gap:12px;width:100%;border:none;background:transparent;padding:9px 10px;border-radius:9px;text-align:left;color:var(--text-2);cursor:pointer}.palette-item .grow{display:flex;flex-direction:column}.palette-item.on{background:var(--accent-soft);color:var(--accent-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;padding:8px 14px;font-weight:600;font-size:13.5px;color:var(--text);white-space:nowrap;cursor:pointer;transition:background .12s,border-color .12s;text-decoration:none}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible,.chip:focus-visible,.ibtn:focus-visible,.seg button:focus-visible,.tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-sm{padding:5px 10px;font-size:12.5px;gap:5px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px rgba(79,70,229,.3)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{color:var(--red)}.btn-danger:hover:not(:disabled){background:rgba(220,38,38,.06);border-color:var(--red)}.btn-danger-solid{background:var(--red);border-color:var(--red);color:#fff}.btn-danger-solid:hover:not(:disabled){background:#b91c1c}.btn-ghost{border-color:transparent}.btn-ghost,.btn-ghost-border{background:transparent}.btn-block{width:100%;padding:11px;font-size:14.5px}.ibtn{display:inline-flex;width:30px;height:30px;border-radius:8px;align-items:center;justify-content:center;color:var(--muted);border:1px solid var(--border);background:var(--surface);margin-left:6px;cursor:pointer;vertical-align:middle}.ibtn:hover:not(:disabled){color:var(--text);background:var(--surface-2);text-decoration:none}.ibtn-d{color:var(--red)}.ibtn-plain{border:none;background:transparent}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap;line-height:1.5}.badge .dot,.site .dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.b-green{color:#15803d;background:rgba(22,163,74,.1)}.b-red{color:var(--red);background:rgba(220,38,38,.09)}.b-yellow{color:var(--yellow);background:rgba(217,119,6,.12)}.b-blue{color:var(--blue);background:rgba(37,99,235,.1)}.b-gray{color:var(--muted);background:var(--surface-3)}.role{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 9px;border-radius:99px}.r-admin{color:#7c3aed;background:rgba(124,58,237,.1)}.r-employee{color:var(--blue);background:rgba(37,99,235,.1)}.r-viewer{color:var(--muted);background:var(--surface-3)}.sidebar .r-admin{color:#c4b5fd;background:rgba(167,139,250,.16)}.sidebar .r-employee{color:#93c5fd;background:rgba(96,165,250,.16)}.sidebar .r-viewer{color:#aab3c8;background:hsla(0,0%,100%,.08)}.chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface);border-radius:99px;padding:5px 13px;font-size:13px;font-weight:500;color:var(--text-2);white-space:nowrap;cursor:pointer}.chip:hover{border-color:var(--border-2)}.chip.active{border-color:var(--accent);background:rgba(79,70,229,.08);color:var(--accent-text)}.chip-red{color:var(--red)}.chip-red.active{border-color:var(--red);background:rgba(220,38,38,.08);color:var(--red)}.chip-y,.chip-y.active{color:var(--yellow)}.chip-y.active{border-color:#d97706;background:rgba(217,119,6,.1)}.divider{width:1px;height:22px;background:var(--border)}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filters select{width:auto}.search{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;padding:0 12px;color:var(--faint);min-width:240px}.search.wide{min-width:300px}.search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search input{border:none;padding:8px 0;box-shadow:none!important;background:transparent}.switch{align-items:center;gap:7px;font-size:13px;color:var(--text-2);font-weight:500;cursor:pointer;white-space:nowrap}.seg,.switch{display:inline-flex}.seg{background:var(--surface-3);border-radius:9px;padding:3px;gap:2px}.seg button{border:none;background:transparent;padding:4px 11px;border-radius:7px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer}.seg button.seg-on{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.08)}.tabs-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border)}.tabs{display:flex;gap:4px;overflow-x:auto;flex:1 1}.tab{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;color:var(--muted);font-weight:550;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--accent-text);border-bottom-color:var(--accent)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2);font-weight:500}.legend span{display:inline-flex;align-items:center;gap:6px}.dlegend i,.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}input,select,textarea{background:var(--surface);color:var(--text);border:1px solid var(--border-2);border-radius:8px;padding:9px 11px;font:inherit;width:100%;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox]{width:auto;accent-color:var(--accent)}textarea{resize:vertical;font-family:var(--mono);font-size:12.5px;line-height:1.6}.select-sm{padding:5px 8px;width:auto}.form{gap:14px}.flabel,.form{display:flex;flex-direction:column}.flabel{gap:6px;font-size:13px;font-weight:600;color:var(--text-2)}.hint{color:var(--muted);font-weight:400}.form-foot{display:flex;justify-content:flex-end;gap:8px}.form-section{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:4px}.narrow{max-width:460px}.grid-form{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.action-edit{border:1px solid var(--border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px;background:var(--surface-2)}.action-name{max-width:260px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(15,23,42,.05);min-width:0}.pad{padding:18px 20px;display:flex;flex-direction:column;gap:12px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.ccard{padding:18px 20px;display:flex;flex-direction:column;gap:14px}.ccard-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.big-num{font-size:22px;font-weight:700}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;gap:14px;align-items:center;min-width:0}.kpi-v2{flex-direction:column;align-items:stretch;gap:10px}.kpi-icon{width:42px;height:42px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.k-green .kpi-icon{background:rgba(22,163,74,.1);color:var(--green)}.k-red .kpi-icon{background:rgba(220,38,38,.09);color:var(--red)}.kpi-v{font-size:24px;font-weight:700;line-height:1.15}.kpi-l{color:var(--muted);font-size:12.5px}.kpi-h{font-size:12px;color:var(--faint)}.kpi-foot{justify-content:space-between;align-items:flex-end}.two{display:grid;grid-gap:20px;gap:20px;align-items:start}.two-map{grid-template-columns:minmax(0,1fr) 380px}.two-charts{grid-template-columns:minmax(0,1fr) 420px}.two-hist{grid-template-columns:minmax(0,1fr) 470px}.two-run{grid-template-columns:minmax(0,1fr) 460px}.two-ports{grid-template-columns:minmax(0,1fr) 520px}.two-project{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.two-users{grid-template-columns:minmax(0,1fr) 380px}.grid2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px}.grid2,.grid3{display:grid;gap:16px}.grid3{grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px}.map-card{background:radial-gradient(600px 300px at 50% 40%,rgba(99,102,241,.22),transparent 70%),#0f1424;border-color:#1c2338;padding:18px 20px 6px;display:flex;flex-direction:column;overflow:hidden}.map-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.map-head h3{color:#fff}.map-sub{color:#8b95ad}.map-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#c7cee0;background:hsla(0,0%,100%,.06);border:1px solid hsla(0,0%,100%,.08);border-radius:99px;padding:3px 10px}.iso-wrap{position:relative;width:100%}.iso-wrap svg{display:block}.iso-label{position:absolute;width:148px;background:rgba(15,20,36,.92);border:1px solid #2b3555;border-radius:10px;padding:6px 10px;color:#c7cee0;font-size:11px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;box-shadow:0 8px 20px rgba(0,0,0,.35);text-align:left}.iso-label strong{color:#fff;font-size:12.5px}.iso-label-btn{cursor:pointer;transition:border-color .15s,transform .15s}.iso-label-btn:hover{border-color:#818cf8;transform:translateY(-1px)}.lbl-warn{border-color:rgba(245,158,11,.6)}.lbl-bad{border-color:hsla(0,91%,71%,.7)}.hub-label{width:120px;align-items:center;text-align:center;border-color:rgba(129,140,248,.6);pointer-events:none}.iso-click{cursor:pointer}.iso-click:hover polygon{filter:brightness(1.15)}.iso-link{animation:dash 1.2s linear infinite}@keyframes dash{to{stroke-dashoffset:-22}}.led-blink{animation:pulse 1.2s ease-in-out infinite}.login-map .iso-wrap{max-width:720px}.donut-row{display:flex;align-items:center;gap:22px}.dlegend{display:flex;flex-direction:column;gap:10px;flex:1 1;min-width:0}.dlegend div{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}.dlegend span{flex:1 1}.dlegend strong{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.attn{display:flex;align-items:center;gap:11px;padding:9px 0;border-top:1px solid #f0f2f6}.adot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.a-red{background:var(--red);box-shadow:0 0 0 4px rgba(220,38,38,.12)}.a-yellow{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.14)}.smini{padding:16px 18px;display:flex;flex-direction:column;gap:12px;color:var(--text);transition:border-color .15s,transform .15s,box-shadow .15s}.smini:hover{text-decoration:none;border-color:var(--accent);transform:translateY(-1px);box-shadow:0 8px 24px rgba(15,23,42,.08)}.card-warn{border-top:3px solid #f59e0b}.card-bad{border-top:3px solid var(--red)}.title{font-weight:650;font-size:15.5px}.ser-key{width:10px;height:26px;border-radius:4px;flex-shrink:0}.rings{display:flex}.rings,.smini-foot{justify-content:space-between}.smini-foot{border-top:1px solid var(--line);padding-top:10px}.offline-msg{background:rgba(220,38,38,.08);color:var(--red);border-radius:8px;padding:10px 12px;font-size:12.5px}.server-hero{display:grid;grid-template-columns:290px minmax(0,1fr) auto;grid-gap:24px;gap:24px;align-items:center;padding:10px 26px 10px 10px}.hero-warn{background:linear-gradient(135deg,rgba(245,158,11,.07),transparent 45%),#fff}.hero-bad{background:linear-gradient(135deg,rgba(220,38,38,.07),transparent 45%),#fff}.hero-ok{background:linear-gradient(135deg,rgba(79,70,229,.06),transparent 45%),#fff}.hero-info{display:flex;flex-direction:column;gap:10px;min-width:0}.tag2{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:3px 9px}.hero-rings{display:flex;gap:18px}.hring{display:flex;flex-direction:column;align-items:center;gap:4px}.table-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:10px 18px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl th.r{text-align:right}.tbl td{padding:11px 18px;border-bottom:1px solid #f0f2f6;vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover td{background:#fafbfd}.tbl-click tbody tr{cursor:pointer}.tbl tr.flag td{background:rgba(220,38,38,.05)}.ghead{display:flex;align-items:center;gap:8px;padding:13px 18px;border-bottom:1px solid var(--line);background:#fafbfd;border-radius:var(--radius) var(--radius) 0 0;flex-wrap:wrap}.ports-cell{max-width:280px;word-break:break-word}.port{font-family:var(--mono);font-weight:700;font-size:14px}.pcard{display:flex;flex-direction:column}.pcard-head{display:flex;align-items:center;gap:12px;padding:16px 18px 10px}.cube-icon{width:44px;height:44px;display:flex;flex-shrink:0}.pcard-body{padding:0 18px 14px;display:flex;flex-direction:column;gap:10px;flex:1 1}.pcard-foot{display:flex;align-items:center;gap:6px;padding:12px 18px;border-top:1px solid var(--line);background:#fafbfd;border-radius:0 0 var(--radius) var(--radius);flex-wrap:wrap}.last-run{margin-left:auto}.pstats{display:grid;grid-template-columns:auto 1fr;grid-gap:16px;gap:16px;background:#fafbfd;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.pstat,.pstats{align-items:center}.pstat{display:flex;gap:10px}.pstat-bars{display:flex;flex-direction:column;gap:4px;min-width:0}.branch{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:12px;font-weight:600;background:rgba(79,70,229,.09);color:var(--accent-text);border-radius:6px;padding:2px 8px}.git-summary{display:flex;flex-direction:column;gap:7px;min-width:0}.site{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;max-width:100%;border:1px solid var(--border);border-radius:99px;padding:4px 12px;font-size:12.5px;color:var(--text-2);background:var(--surface)}.site:hover{text-decoration:none;border-color:var(--border-2)}.s-green .dot{color:var(--green)}.s-red .dot{color:var(--red)}.s-gray .dot{color:var(--faint)}.site.s-red{border-color:rgba(220,38,38,.35);background:rgba(220,38,38,.04)}.actions{display:flex;gap:6px}.actions,.hero-actions{flex-wrap:wrap;align-items:center}.hero-actions{flex-direction:row;justify-content:space-between;background:linear-gradient(135deg,var(--accent-soft),transparent 60%),var(--surface)}.action-view{display:flex;flex-direction:column;gap:6px}.facts{display:grid;grid-template-columns:130px minmax(0,1fr);grid-gap:10px 16px;gap:10px 16px;margin:6px 0 0;padding-top:14px;border-top:1px solid var(--line)}.facts dt{color:var(--muted);font-size:13px}.facts dd{margin:0;min-width:0;word-break:break-word}.overlay{position:fixed;inset:0;background:rgba(8,11,22,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px;animation:fade .12s ease-out}.modal{width:100%;max-height:calc(100vh - 32px);background:var(--surface);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.35);display:flex;flex-direction:column;animation:pop .14s ease-out}.modal-sm{max-width:480px}.modal-md{max-width:620px}.modal-lg{max-width:900px}.modal-xl{max-width:1140px}.modal-head{display:flex;align-items:flex-start;gap:14px;padding:20px 22px;border-bottom:1px solid var(--line)}.micon{width:42px;height:42px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-body{padding:20px 22px;display:flex;flex-direction:column;gap:16px;overflow:auto}.modal-foot{justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--line);background:#fafbfd;border-radius:0 0 18px 18px}.mblock,.modal-foot{display:flex;gap:8px}.mblock{flex-direction:column}.mlabel{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.commit{display:flex;align-items:center;gap:10px;font-size:13.5px;padding:8px 12px;border:1px solid var(--line);border-radius:9px}.chipmono{background:var(--surface-2);border-radius:5px;padding:1px 6px;font-size:12px}.steps{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden}.step{display:flex;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid var(--line);font-size:13px}.step:first-child{border-top:none}.snum{width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.snum-main{background:var(--accent);color:#fff}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:translateY(6px) scale(.98);opacity:0}}.alert{display:flex;align-items:center;gap:12px;border-radius:10px;padding:11px 16px;font-size:13.5px;border:1px solid transparent;word-break:break-word}.alert>div{flex:1 1;min-width:0}.a-error{background:rgba(220,38,38,.07);color:#b91c1c;border-color:rgba(220,38,38,.22)}.a-warn{background:rgba(217,119,6,.1);color:#92400e;border-color:rgba(217,119,6,.25)}.a-info{background:rgba(37,99,235,.07);color:var(--text-2);border-color:rgba(37,99,235,.15)}.a-info>.icon{color:var(--blue)}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:44px 20px;background:var(--surface);border:1px dashed var(--border-2);border-radius:var(--radius)}.card .empty{border:none}.empty-icon{width:48px;height:48px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin-bottom:4px}.empty p{max-width:460px}.run-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-radius:12px;padding:14px 18px}.banner-blue{background:rgba(37,99,235,.08);color:var(--blue)}.banner-green{background:rgba(22,163,74,.08);color:var(--green)}.banner-red{background:rgba(220,38,38,.08);color:var(--red)}.run-meta{display:flex;gap:16px;flex-wrap:wrap;margin-left:auto;color:var(--text-2);font-size:12.5px}.run-meta span{display:inline-flex;align-items:center;gap:5px}.eta{flex-direction:column;align-items:flex-end}.dur,.eta{display:flex}.dur{align-items:center;gap:10px}.dur-bar{width:90px;height:6px;border-radius:99px;background:#eef1f5;overflow:hidden;display:inline-block;flex-shrink:0}.dur-bar i{display:block;height:100%;border-radius:99px}.console{background:#070a12;border-radius:var(--radius);border:1px solid #1c2338;display:flex;flex-direction:column;overflow:hidden}.cbar{display:flex;gap:8px;padding:9px 12px;background:#0e1322;border-bottom:1px solid #1c2338;color:#94a3b8;font-size:12px;flex-wrap:wrap}.cbar,.cpill{align-items:center}.cpill{display:inline-flex;gap:7px;color:#4ade80;background:rgba(74,222,128,.12);border-radius:99px;padding:2px 10px;font-weight:600}.cpill .pulse{animation:pulse 1.4s ease-in-out infinite}.cpill-wait{color:#fbbf24;background:rgba(251,191,36,.12)}.cpill-ended{color:#94a3b8;background:rgba(148,163,184,.12)}.cpill-ended .pulse{animation:none}.cmuted,.csearch{color:#64748b}.csearch{display:flex;align-items:center;gap:6px;border:1px solid #232b42;border-radius:7px;padding:0 9px}.csearch input{border:none;color:#e2e8f0;padding:4px 0;font-size:12.5px;width:150px;box-shadow:none!important}.csearch input,.tool{background:transparent}.tool{display:inline-flex;align-items:center;gap:5px;border:1px solid #232b42;border-radius:7px;padding:4px 8px;color:#94a3b8;font-size:12px;cursor:pointer}.tool:hover{color:#e2e8f0;border-color:#3a4566}.tool.on{color:#a5b4fc;border-color:#3b3f8f;background:rgba(99,102,241,.12)}.tool.on-red{color:#fca5a5;border-color:#7f1d1d;background:rgba(220,38,38,.12)}.cbody{padding:10px 0;font:12.5px/1.7 var(--mono);color:#cbd5e1;overflow:auto}.cl{display:flex;white-space:pre}.cwrap .cl{white-space:pre-wrap;word-break:break-word}.cl:hover{background:hsla(0,0%,100%,.03)}.ln{color:#3d4766;min-width:52px;text-align:right;padding-right:14px;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lt{min-width:0}.cl.cmd{color:#a5b4fc;font-weight:700;margin-top:6px}.cl.ok{color:#86efac;font-weight:600}.cl.warn .lt{color:#fde047}.cl.err{font-weight:600}.cl.err,.cl.err-soft .lt{color:#fca5a5}.cursor{width:8px;height:15px;background:#a5b4fc;display:inline-block;animation:pulse 1s steps(2) infinite}.cempty{color:#64748b;padding:16px}.code-block{margin:0;background:#070a12;color:#cbd5e1;border-radius:8px;padding:10px 12px;font:12.5px/1.6 var(--mono);white-space:pre-wrap;word-break:break-all;max-height:280px;overflow:auto}.heat-wrap{display:flex;flex-direction:column;gap:10px}.heat-scroll{overflow-x:auto}.heat-legend{display:flex;align-items:center;gap:4px;justify-content:flex-end}.heat-legend i{width:14px;height:14px;border-radius:3px;display:inline-block}.pmatrix{width:100%;border-collapse:collapse;font-size:12.5px}.pmatrix th{font-weight:600;color:var(--muted);padding:6px 4px;font-size:11.5px}.pmatrix td{text-align:center;padding:7px 4px;border-top:1px solid #f0f2f6}.pmatrix td:first-child{text-align:left;white-space:nowrap}.pm{display:inline-flex;width:18px;height:18px;border-radius:5px;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:11px;vertical-align:middle}.pm-p{background:var(--blue)}.pm-l{background:var(--green)}.pm-x{background:var(--red)}.pm-none{color:#cbd5e1}.availability{display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px}.avail{font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:99px}.avail.used{color:var(--red);background:rgba(220,38,38,.09)}.avail.free{color:#15803d;background:rgba(22,163,74,.1)}.forecast{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#92400e;background:rgba(217,119,6,.08);border-radius:8px;padding:6px 10px;max-width:340px}.forecast-bad{color:#b91c1c;background:rgba(220,38,38,.08)}.reclaim{gap:8px;font-size:12.5px;color:#15803d;background:rgba(22,163,74,.08);border-radius:8px;padding:8px 10px}.disk-row,.reclaim{display:flex;align-items:center}.disk-row{gap:14px;padding:6px 0}.rcard{gap:9px}.ri{display:flex;gap:8px;font-size:13px}.av-sm,.ri{align-items:center;color:var(--text-2)}.av-sm{width:28px;height:28px;border-radius:50%;background:var(--surface-3);display:inline-flex;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}.toasts{position:fixed;right:20px;bottom:20px;flex-direction:column;z-index:100;max-width:min(400px,calc(100vw - 32px))}.toast,.toasts{display:flex;gap:10px}.toast{align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--blue);border-radius:10px;padding:11px 10px 11px 14px;box-shadow:0 20px 50px rgba(15,23,42,.18);font-size:13px;animation:pop .16s ease-out}.toast>div{flex:1 1;min-width:0;word-break:break-word}.toast-success{border-left-color:var(--green)}.toast-success>.icon{color:var(--green)}.toast-error{border-left-color:var(--red)}.toast-error>.icon{color:var(--red)}.login{display:flex;min-height:100vh}.login-left{flex:1 1;background:radial-gradient(800px 500px at 10% 0,rgba(99,102,241,.45),transparent 60%),radial-gradient(700px 500px at 100% 100%,rgba(139,92,246,.35),transparent 60%),#0b0f1e;color:#fff;padding:56px 64px;display:flex;flex-direction:column;gap:18px;overflow:hidden}.brand-xl{display:flex;align-items:center;gap:14px;font-size:20px;font-weight:700}.login-left h1{font-size:44px;line-height:1.1;display:block}.login-left p{color:#aab3c8;font-size:17px;max-width:460px}.login-right{width:560px;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{width:400px;max-width:100%;background:#fff;border:1px solid var(--border);border-radius:18px;padding:34px;display:flex;flex-direction:column;gap:16px;box-shadow:0 20px 50px rgba(15,23,42,.08)}.login-card h2{font-size:24px}.login-note{display:flex;align-items:center;gap:7px;justify-content:center;color:var(--muted);font-size:12.5px}@media (max-width:1280px){.two-charts,.two-hist,.two-map,.two-ports,.two-run,.two-users{grid-template-columns:minmax(0,1fr)}.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.server-hero{grid-template-columns:220px minmax(0,1fr)}.hero-rings{grid-column:1/-1;justify-content:center;padding-bottom:12px}}@media (max-width:1100px){.grid3,.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.two-project{grid-template-columns:minmax(0,1fr)}.login-right{width:480px}}@media (max-width:860px){.app{grid-template-columns:1fr}.sidebar{position:-webkit-sticky;position:sticky;top:0;z-index:30;height:auto;padding:10px 14px}.brand{padding-bottom:0}.menu-btn{display:inline-grid!important}.sidebar .nav,.sidebar .nav-section,.sidebar .side-foot{display:none}.sidebar.open .nav,.sidebar.open .side-foot{display:flex}.sidebar.open .nav-section{display:block}.sidebar.open{max-height:100vh;overflow-y:auto}.topbar{position:static;padding:0 16px}.gsearch span:not(.kbd){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gsearch .kbd{display:none}.content{padding:18px 16px 40px}.grid-form,.grid2,.grid3,.grid4,.kpis{grid-template-columns:minmax(0,1fr)}.server-hero{grid-template-columns:1fr;padding:10px 16px}.hero-model{display:flex;justify-content:center}.search,.search.wide{min-width:0;width:100%}.facts{grid-template-columns:1fr;gap:2px}.facts dd{margin-bottom:8px}.login{flex-direction:column}.login-left{padding:32px 24px}.login-left h1{font-size:32px}.login-right{width:100%}.donut-row{flex-wrap:wrap;justify-content:center}.live{display:none}.dropdown{width:min(360px,calc(100vw - 32px))}}