:root{--bg: #050d07;--panel: #0a1a0f;--raised: #0f2316;--border: #16361f;--text: #e8f0e9;--muted: #8aa392;--accent: #34c759;--accent-tint: rgba(52, 199, 89, .14);--active: #12301a;--button: #0f7a24;--red: #e5484d;--red-tint: rgba(229, 72, 77, .16);--blue: #4c8bf5;--blue-tint: rgba(76, 139, 245, .16);--amber: #f0a43a;--amber-tint: rgba(240, 164, 58, .16);--scrim: rgba(0, 0, 0, .62)}:root[data-theme=light]{--bg: #f2f7f2;--panel: #ffffff;--raised: #f2f7f2;--border: #d7e4d8;--text: #10231a;--muted: #5d7566;--accent: #17803a;--accent-tint: #dff0e1;--active: #dff0e1;--button: #17803a;--red: #c9302c;--red-tint: #fbe4e3;--blue: #2f6fe0;--blue-tint: #e1ebfc;--amber: #b9741a;--amber-tint: #fbefd9;--scrim: rgba(16, 35, 26, .45)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;font-size:13px;line-height:1.35}a{color:inherit;text-decoration:none}button{font-family:inherit}h1,h2,h3,p{margin:0}.shell{display:flex;height:100%}.side{width:232px;flex:none;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}.brand{display:flex;align-items:center;gap:8px;padding:20px 16px 6px;font-size:20px;font-weight:800}.brand b{color:var(--accent);font-weight:800}.nav-group{color:var(--muted);font-size:9.5px;font-weight:700;letter-spacing:1.2px;padding:14px 18px 6px;text-transform:uppercase}.nav{display:flex;align-items:center;gap:10px;margin:1px 10px;padding:9px 10px;border-radius:9px;font-weight:600;color:var(--text)}svg{stroke:currentColor}.nav.on{background:var(--active);color:var(--accent)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:16px;padding:0 28px;height:56px;border-bottom:1px solid var(--border);flex:none}.crumb{color:var(--muted);font-weight:500;flex:1}.avatar{width:30px;height:30px;border-radius:50%;background:var(--active);color:var(--accent);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.who{display:flex;flex-direction:column;font-size:12px;font-weight:700}.who span{color:var(--muted);font-size:10.5px;font-weight:500}.page{padding:22px 28px 40px;overflow-y:auto;flex:1}.head{display:flex;align-items:center;gap:10px;margin-bottom:16px}.head h1{font-size:24px;font-weight:800}.sub{color:var(--muted);font-weight:500;margin-top:2px}.grow{flex:1}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px 18px}.card h3{font-size:14px;font-weight:700}.card .hint{color:var(--muted);font-size:11.5px;margin-top:2px}.grid{display:grid;gap:14px}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g2{grid-template-columns:1fr 1fr}.g21{grid-template-columns:2fr 1fr}.stats{display:flex;background:var(--panel);border:1px solid var(--border);border-radius:14px;overflow:hidden}.stat{display:flex;align-items:center;gap:12px;flex:1;padding:16px 18px;border-right:1px solid var(--border)}.stat:last-child{border-right:0}.tile{width:38px;height:38px;border-radius:10px;background:var(--active);display:flex;align-items:center;justify-content:center;flex:none}.tile svg{stroke:var(--accent)}.label{color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.8px;text-transform:uppercase}.big{font-size:22px;font-weight:800}.note{color:var(--muted);font-size:11.5px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 16px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;background:var(--button);color:#fff;border:0}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn.danger{background:var(--red)}.btn:disabled{opacity:.5;cursor:default}.btn.lg{height:42px;width:100%}.field{display:flex;flex-direction:column;gap:5px}.field label{color:var(--muted);font-size:11.5px;font-weight:600}.input,.select,textarea.input{background:var(--raised);border:1px solid var(--border);border-radius:10px;padding:10px 13px;color:var(--text);font:inherit;font-weight:500;outline:none;width:100%}.input:focus,.select:focus{border-color:var(--accent)}textarea.input{resize:vertical;min-height:70px}.chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--accent);background:var(--accent-tint)}.chip.red{color:var(--red);background:var(--red-tint)}.chip.blue{color:var(--blue);background:var(--blue-tint)}.chip.amber{color:var(--amber);background:var(--amber-tint)}.chip.grey{color:var(--muted);background:var(--raised)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px}.tab{padding:10px 14px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer}.tab.on{color:var(--accent);border-color:var(--accent)}.seg{display:inline-flex;gap:4px;margin-bottom:14px}.seg button{background:transparent;border:1px solid var(--border);color:var(--muted);padding:7px 14px;border-radius:999px;font-weight:600;cursor:pointer}.seg button.on{background:var(--active);color:var(--accent);border-color:var(--accent)}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:11px;font-weight:600;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:11px 12px;border-bottom:1px solid var(--border);font-weight:500;vertical-align:middle}tr.link{cursor:pointer}tr.link:hover td{background:var(--raised)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.empty{text-align:center;color:var(--muted);padding:40px 0}.banner{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:12px;background:var(--amber-tint);color:var(--text);margin-bottom:14px}.error{color:var(--red);font-weight:600}.bars{display:flex;align-items:flex-end;gap:6px;height:150px;padding-top:10px}.bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}.bar i{display:block;width:100%;max-width:34px;background:var(--accent);border-radius:5px 5px 0 0;min-height:2px}.bar span{color:var(--muted);font-size:10.5px}.map{height:340px;border-radius:12px;overflow:hidden;border:1px solid var(--border)}.line{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}.line:last-child{border-bottom:0}.line.total{font-weight:800;font-size:14px}.timeline{display:flex;flex-direction:column}.tl{display:grid;grid-template-columns:90px 1fr auto;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}.tl:last-child{border-bottom:0}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:20}.modal{width:420px;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:14px}.login{display:flex;height:100%}.login .left{width:560px;background:#08210f;display:flex;flex-direction:column;justify-content:center;padding:0 64px;color:#fff}.login .left .logo{font-size:34px;font-weight:800}.login .left .logo b{color:#34c759}.login .right{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login form{display:flex;flex-direction:column;gap:14px;width:380px}.login h1{font-size:28px;font-weight:800}@media (max-width: 1100px){.g4{grid-template-columns:repeat(2,1fr)}.g21,.g3{grid-template-columns:1fr}.login .left{display:none}}@media (max-width: 800px){.side{display:none}.page{padding:16px}.stats{flex-direction:column}.stat{border-right:0;border-bottom:1px solid var(--border)}.g2,.g4{grid-template-columns:1fr}}:root{--gold: #d4a237}:root[data-theme=light]{--gold: #c48a12}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.page>*{animation:fade .2s ease both}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.page>*,.skeleton{animation:none}}.skeleton{border-radius:14px;background:linear-gradient(90deg,var(--panel) 25%,var(--raised) 50%,var(--panel) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border:1px solid var(--border)}@keyframes shimmer{to{background-position:-200% 0}}.side{width:250px;transition:width .18s ease;overflow:hidden}.side.collapsed{width:68px}.brand{height:66px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 18px;border-bottom:1px solid var(--border);flex:none}.brand .logo{font-size:24px;font-weight:800;letter-spacing:-.5px;color:var(--text);white-space:nowrap}.brand .logo i{font-style:italic;color:var(--accent)}.brand .logo sup{font-size:9px;font-weight:700;color:var(--accent);margin-left:2px;vertical-align:super;letter-spacing:0}.brand .role{color:var(--accent);font-size:12px;font-weight:600;white-space:nowrap}.menu{flex:1;overflow-y:auto;padding:4px 0 10px}.nav-group{padding:18px 22px 6px;font-size:10.5px;letter-spacing:1.2px}.nav{position:relative;display:flex;align-items:center;gap:12px;width:calc(100% - 20px);margin:2px 10px;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;font-size:14.5px;font-weight:500;cursor:pointer;text-align:left}.nav svg{stroke:var(--muted)}.nav span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav .chev{flex:none;display:inline-flex;flex-grow:0}.nav:hover{background:var(--raised)}.nav.on{background:var(--active);color:var(--accent);font-weight:600}.nav.on svg{stroke:var(--accent)}a.nav.on:not(.sub):before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.sub-nav{margin:2px 10px 4px 28px;padding-left:10px;border-left:1px solid var(--border);display:flex;flex-direction:column}.sub-nav .nav{width:100%;margin:1px 0;padding:9px 11px;font-size:14px}.nav.soon{opacity:.55;cursor:default}.nav.soon:hover{background:transparent}.collapse{display:flex;align-items:center;gap:10px;padding:16px 22px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:500;cursor:pointer;width:100%;flex:none}.collapse svg{stroke:currentColor}.collapse:hover{color:var(--text)}.side.collapsed .brand{justify-content:center;padding:0}.side.collapsed .brand .role{display:none}.side.collapsed .brand .logo{font-size:0}.side.collapsed .brand .logo:before{content:"9";font-size:22px;font-weight:800;color:var(--text)}.side.collapsed .nav-group{font-size:0;padding:10px 0 4px;border-top:1px solid var(--border);margin:6px 14px 0}.side.collapsed .nav-group:first-child{border-top:0}.side.collapsed .nav{justify-content:center;padding:11px 0}.side.collapsed .nav span,.side.collapsed .sub-nav,.side.collapsed .collapse span{display:none}.side.collapsed .collapse{justify-content:center;padding:16px 0}.top{height:66px;padding:0 28px;gap:14px}.crumbs{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;font-weight:500}.crumbs .sep{color:var(--border)}.crumbs .last{color:var(--text);font-weight:700}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer}.icon-btn:hover{background:var(--raised);color:var(--text)}.vr{width:1px;height:34px;background:var(--border)}.user{display:flex;align-items:center;gap:10px;padding:4px 8px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;cursor:pointer}.user:hover{background:var(--raised)}.user .who{display:flex;flex-direction:column;align-items:flex-start;font-size:13px;font-weight:700;line-height:1.25}.user .who span{color:var(--muted);font-size:11.5px;font-weight:500}.user svg{stroke:var(--muted)}.page{padding:26px 28px 40px}.tile.red{background:var(--red-tint)}.tile.red svg{stroke:var(--red)}.tile.blue{background:var(--blue-tint)}.tile.blue svg{stroke:var(--blue)}.tile.amber{background:var(--amber-tint)}.tile.amber svg{stroke:var(--amber)}.big.red{color:var(--red)}.big.blue{color:var(--blue)}.big.amber{color:var(--amber)}.big.green{color:var(--accent)}.big,.total{font-variant-numeric:tabular-nums}.alert{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--red);background:var(--panel);margin-top:14px}.alert.clear{border-color:var(--border)}.alert h3{font-size:14px;font-weight:700}.alert .hint{color:var(--muted);font-size:12px;margin-top:1px}.btn.outline-red{background:transparent;color:var(--red);border:1px solid var(--red)}.btn.outline-red:hover{background:var(--red-tint)}.cardhead{display:flex;align-items:flex-start;gap:10px}.cardhead>div:first-child{flex:1}.pill{display:inline-flex;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;color:var(--muted);background:color-mix(in srgb,var(--muted) 14%,transparent)}.pill.green{color:var(--accent);background:var(--accent-tint);border-color:transparent}.pill.amber{color:var(--amber);background:var(--amber-tint);border-color:transparent}.pill.red{color:var(--red);background:var(--red-tint);border-color:transparent}.pill.blue{color:var(--blue);background:var(--blue-tint);border-color:transparent}.total{font-size:26px;font-weight:800;margin:8px 0 0}.total.green{color:var(--accent)}.total.gold{color:var(--gold)}.legend{display:flex;gap:14px;margin-top:6px;color:var(--muted);font-size:11.5px}.legend i,.tip i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.chart{position:relative;margin-top:8px}.chart svg{width:100%;height:150px;display:block}.grid-line{stroke:var(--border);stroke-width:1;opacity:.7}.hover-line{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3;opacity:.6}.x-labels{display:flex;justify-content:space-between;margin-top:-20px;padding:0 2px;color:var(--muted);font-size:10.5px;font-weight:600;position:relative}.x-labels span.on{color:var(--text)}.tip{position:absolute;top:-6px;transform:translate(-50%);background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:11.5px;box-shadow:0 8px 24px #00000059;pointer-events:none;white-space:nowrap;z-index:2}.tip b{display:block;margin-bottom:3px}.bars{height:190px;gap:14px;align-items:flex-end;padding-top:24px}.bar{position:relative}.bar i{max-width:48px;border-radius:4px 4px 0 0;transition:opacity .12s}.bar em{position:absolute;top:-4px;font-style:normal;font-size:11px;font-weight:700;background:var(--raised);border:1px solid var(--border);border-radius:6px;padding:2px 6px;white-space:nowrap;z-index:2;transform:translateY(-100%)}.donut{display:flex;align-items:center;gap:22px;margin-top:12px}.pilltabs{display:flex;gap:8px;margin-bottom:14px}.pilltab{padding:7px 16px;border-radius:9px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text);font-size:13px;font-family:inherit}.pilltab.on{background:var(--button);border-color:var(--button);color:#fff}th{text-transform:uppercase;letter-spacing:.6px;font-size:10.5px}tbody tr:last-child td{border-bottom:0}td a{color:var(--accent);font-weight:600}.mini-table{border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-top:10px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px;border:2px solid transparent;background-clip:content-box}.date{color:var(--muted);font-weight:500}.chart svg{stroke:none}.legend{margin-top:12px}.side.collapsed .brand .logo sup{display:none}.toast{position:fixed;right:24px;bottom:24px;background:var(--panel);border:1px solid var(--accent);color:var(--text);padding:12px 16px;border-radius:12px;font-weight:600;z-index:30;box-shadow:0 8px 24px #00000059}.line.total{border-top:1px solid var(--border)}.top{position:relative}.menu-pop{position:absolute;right:28px;top:60px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:6px;min-width:190px;z-index:15;box-shadow:0 10px 28px #00000059}.menu-pop button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:8px;background:transparent;color:var(--text);font:inherit;font-weight:600;cursor:pointer;text-align:left}.menu-pop button:hover{background:var(--raised)}.menu-pop svg{stroke:var(--muted)}body{font-size:12.5px}.brand .logo{font-size:20px}.brand .role{font-size:11px}.nav-group{font-size:9.5px}.nav{font-size:13px;padding:8px 11px;gap:10px}.sub-nav .nav{font-size:12.5px;padding:7px 10px}.collapse{font-size:12.5px;padding:12px 20px}.crumbs{font-size:12.5px}.user .who{font-size:12px}.user .who span{font-size:10.5px}.head h1{font-size:20px}.head .sub{font-size:12px}.card h3,.alert h3{font-size:13px}.total{font-size:22px}.big{font-size:19px}.btn{font-size:12.5px;height:34px}th{font-size:10px}td{font-size:12.5px}.note,.hint,.chip,.pill{font-size:11px}.side{-webkit-font-smoothing:antialiased}.nav{font-weight:400;color:color-mix(in srgb,var(--text) 72%,var(--bg));letter-spacing:.1px}.nav svg{opacity:.8}.nav.on{font-weight:500;color:var(--accent)}.nav-group{opacity:.75;font-weight:600}.brand .role{opacity:.85}.nt-stack{position:fixed;top:74px;right:18px;z-index:80;display:flex;flex-direction:column;gap:10px;width:360px;max-width:calc(100vw - 36px);pointer-events:none}.nt-card{pointer-events:auto;background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:12px;padding:12px 14px;box-shadow:0 12px 32px #00000059;display:flex;flex-direction:column;gap:6px;animation:nt-in .18s ease-out}.nt-card.warning{border-left-color:#e0a100}.nt-card.critical{border-color:#d64545;border-left:5px solid #d64545;background:color-mix(in srgb,#d64545 14%,var(--panel));animation:nt-in .18s ease-out,nt-pulse 1.6s ease-in-out infinite}.nt-head{display:flex;align-items:center;gap:8px;font-size:13px}.nt-body{font-size:12.5px}.nt-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px}.nt-actions .btn{height:30px;font-size:12px;padding:0 12px}.nt-x{border:0;background:transparent;color:var(--muted);font-size:18px;cursor:pointer;line-height:1}.nt-dot{width:9px;height:9px;border-radius:50%;background:#d64545;box-shadow:0 0 #d64545b3;animation:nt-ping 1.4s infinite}.nt-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#d64545;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.nt-panel{position:absolute;right:0;top:42px;width:380px;max-width:calc(100vw - 24px);background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px #00000059;z-index:70}.nt-panel .nt-head{padding:12px 14px;border-bottom:1px solid var(--border)}.nt-row{display:flex;gap:10px;align-items:flex-start;width:100%;padding:10px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font:inherit;font-size:12.5px;cursor:pointer}.nt-row:hover{background:var(--raised)}.nt-pip{width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--accent);flex:none}.nt-pip.warning{background:#e0a100}.nt-pip.critical{background:#d64545}@keyframes nt-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes nt-pulse{50%{box-shadow:0 12px 32px #d645458c}}@keyframes nt-ping{70%{box-shadow:0 0 0 9px #d6454500}to{box-shadow:0 0 #d6454500}}.sos-ind{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--raised);color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}.sos-ind:hover{color:var(--text)}.sos-ind.live{background:#d64545;border-color:#d64545;color:#fff;animation:sos-pulse 2s ease-in-out infinite}.sos-ind b{font-weight:800}@keyframes sos-pulse{0%,to{box-shadow:0 0 #d6454580}50%{box-shadow:0 0 0 6px #d6454500}}@media (prefers-reduced-motion: reduce){.sos-ind.live{animation:none}}@media (max-width: 560px){.sos-ind .sos-t{font-size:12px}.sos-ind{padding:0 9px}}.spinner{width:38px;height:38px;border-radius:50%;border:4px solid var(--border);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
