@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&family=DM+Mono:wght@400;500&display=swap');
:root{--bg:#0f1117;--sur:#1a1d2e;--sur2:#222638;--bor:#2e3250;--acc:#4f6ef7;--acc2:#7c3aed;--grn:#22c55e;--red:#ef4444;--yel:#f59e0b;--txt:#e2e8f0;--tx2:#94a3b8;--tx3:#64748b;--rad:12px;}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--txt);}
#sidebar{position:fixed;left:0;top:0;bottom:0;width:222px;background:var(--sur);border-right:1px solid var(--bor);display:flex;flex-direction:column;z-index:100;overflow-y:auto;}
.logo{padding:16px 18px 12px;border-bottom:1px solid var(--bor);}
.logo h1{font-size:15px;font-weight:700;color:var(--acc);}
.logo p{font-size:10px;color:var(--tx3);margin-top:2px;}
nav{padding:8px 0;}
.ns{padding:8px 16px 3px;font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:1px;}
.ni{display:flex;align-items:center;gap:9px;padding:8px 16px;cursor:pointer;font-size:13px;font-weight:500;color:var(--tx2);border-left:3px solid transparent;transition:all .12s;}
.ni:hover{background:var(--sur2);color:var(--txt);}
.ni.active{background:rgba(79,110,247,.1);color:var(--acc);border-left-color:var(--acc);}
.ni-ico{font-size:14px;width:18px;text-align:center;}
#main{margin-left:222px;padding:26px;min-height:100vh;}
.pg{display:none;}.pg.active{display:block;}
.ph{margin-bottom:20px;}.ph h2{font-size:21px;font-weight:700;}.ph p{font-size:12px;color:var(--tx3);margin-top:3px;}
.kgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:12px;margin-bottom:20px;}
.kpi{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rad);padding:16px;}
.kl{font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.7px;}
.kv{font-size:22px;font-weight:700;margin:6px 0 2px;font-family:'DM Mono',monospace;}
.ks{font-size:11px;color:var(--tx3);}
.kpi.acc .kv{color:var(--acc);}.kpi.grn .kv{color:var(--grn);}.kpi.red .kv{color:var(--red);}.kpi.yel .kv{color:var(--yel);}
.flt{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:16px;background:var(--sur);border:1px solid var(--bor);padding:12px;border-radius:var(--rad);align-items:flex-end;}
.fg{display:flex;flex-direction:column;gap:3px;min-width:130px;}
.fl{font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px;}
.fg input,.fg select{background:var(--sur2);border:1px solid var(--bor);color:var(--txt);border-radius:7px;padding:6px 9px;font-family:'DM Sans',sans-serif;font-size:12px;outline:none;}
.fg input:focus,.fg select:focus{border-color:var(--acc);}
.fchk{display:flex;align-items:center;gap:5px;cursor:pointer;font-size:12px;color:var(--tx2);padding:6px 9px;background:var(--sur2);border:1px solid var(--bor);border-radius:7px;transition:all .12s;}
.fchk:hover{border-color:var(--acc);}
.fchk input[type=checkbox]{accent-color:var(--acc);width:13px;height:13px;}
.btn{padding:6px 14px;border-radius:7px;border:none;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;}
.bp{background:var(--acc);color:#fff;}.bs{background:var(--sur2);color:var(--tx2);border:1px solid var(--bor);}
.card{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rad);overflow:hidden;margin-bottom:16px;}
.ch{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-bottom:1px solid var(--bor);}
.ct{font-size:13px;font-weight:600;}.cb{font-size:10px;font-weight:600;padding:3px 9px;border-radius:20px;background:rgba(79,110,247,.15);color:var(--acc);}
.tw{overflow-x:auto;max-height:520px;overflow-y:auto;}
table{width:100%;border-collapse:collapse;font-size:12px;}
thead{position:sticky;top:0;z-index:2;}
thead th{background:var(--sur2);padding:8px 12px;text-align:left;font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px;cursor:pointer;user-select:none;white-space:nowrap;}
thead th:hover{color:var(--txt);}
tbody tr{border-top:1px solid var(--bor);}
tbody tr:hover{background:rgba(255,255,255,.03);}
td{padding:7px 12px;color:var(--tx2);white-space:nowrap;}
td.nm{color:var(--txt);font-weight:500;max-width:260px;overflow:hidden;text-overflow:ellipsis;}
td.nr{font-family:'DM Mono',monospace;text-align:right;}
td.grn{color:var(--grn);font-weight:600;}td.red{color:var(--red);font-weight:600;}td.yel{color:var(--yel);font-weight:600;}
.pag{display:flex;align-items:center;gap:7px;padding:10px 16px;border-top:1px solid var(--bor);}
.pb{background:var(--sur2);border:1px solid var(--bor);color:var(--tx2);padding:4px 11px;border-radius:5px;cursor:pointer;font-size:11px;}
.pb:hover{color:var(--txt);border-color:var(--acc);}.pb:disabled{opacity:.4;cursor:default;}
.pi{font-size:11px;color:var(--tx3);margin:0 7px;}
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(390px,1fr));gap:16px;margin-bottom:16px;}
.cc{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rad);padding:16px;}
.cct{font-size:12px;font-weight:600;color:var(--tx2);margin-bottom:12px;}
canvas{max-height:250px;}
.tcol{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.sp{display:inline-block;padding:2px 7px;border-radius:20px;font-size:11px;font-weight:600;font-family:'DM Mono',monospace;}
.sok{background:rgba(34,197,94,.15);color:var(--grn);}.slow{background:rgba(245,158,11,.15);color:var(--yel);}.szr{background:rgba(239,68,68,.15);color:var(--red);}
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:10px;font-weight:600;}
.tb{background:rgba(79,110,247,.15);color:var(--acc);}.tg{background:rgba(34,197,94,.15);color:var(--grn);}.tr2{background:rgba(239,68,68,.15);color:var(--red);}.ty{background:rgba(245,158,11,.15);color:var(--yel);}.tp{background:rgba(124,58,237,.15);color:#a78bfa;}.tgr{background:rgba(100,116,139,.15);color:var(--tx3);}
.sw{position:relative;}.sw input{padding-left:28px!important;}
.si{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--tx3);font-size:12px;pointer-events:none;}
#loading{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:1000;flex-direction:column;gap:12px;}
.spin{width:34px;height:34px;border:3px solid var(--bor);border-top-color:var(--acc);border-radius:50%;animation:sp .8s linear infinite;}
@keyframes sp{to{transform:rotate(360deg);}}
.cph{display:flex;align-items:center;gap:16px;padding:18px 20px;background:var(--sur);border:1px solid var(--bor);border-radius:var(--rad);margin-bottom:16px;}
.cav{width:50px;height:50px;border-radius:50%;background:linear-gradient(135deg,var(--acc),var(--acc2));display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;}
.cpi h3{font-size:17px;font-weight:700;}.cpi p{font-size:12px;color:var(--tx3);margin-top:2px;}
.cptags{display:flex;gap:5px;margin-top:5px;flex-wrap:wrap;}
.bk{display:flex;align-items:center;gap:5px;background:var(--sur2);border:1px solid var(--bor);color:var(--tx2);padding:6px 12px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:500;margin-bottom:14px;width:fit-content;}
.bk:hover{color:var(--txt);border-color:var(--acc);}
.db{display:inline-block;padding:1px 5px;border-radius:3px;font-size:9px;font-weight:700;background:rgba(79,110,247,.2);color:var(--acc);margin:1px;}
.ctag{display:inline-block;padding:2px 6px;border-radius:10px;font-size:10px;font-weight:600;white-space:nowrap;}
.clk{cursor:pointer;}.clk:hover td{color:var(--txt)!important;}
.pdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--yel);margin-left:4px;cursor:help;}
.tbar-wrap{background:var(--sur2);border-radius:6px;height:8px;overflow:hidden;margin-top:4px;}
.tbar-fill{height:100%;border-radius:6px;}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:500;display:none;align-items:center;justify-content:center;}
.modal-bg.open{display:flex;}
.modal{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rad);padding:24px;min-width:420px;max-width:600px;width:90%;}
.modal h3{font-size:16px;font-weight:700;margin-bottom:14px;}
.mc{float:right;background:var(--sur2);border:1px solid var(--bor);color:var(--tx2);padding:3px 9px;border-radius:5px;cursor:pointer;font-size:12px;}
.mt{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.mtog{padding:5px 12px;border-radius:6px;border:2px solid var(--bor);cursor:pointer;font-size:12px;font-weight:600;color:var(--tx2);}
.mtog.on{border-color:var(--acc);color:var(--acc);background:rgba(79,110,247,.1);}
.sb2{background:var(--grn);color:#fff;padding:7px 18px;border-radius:7px;border:none;cursor:pointer;font-size:13px;font-weight:600;margin-top:12px;}
.ekw{background:var(--sur2);border:1px solid var(--bor);color:var(--txt);border-radius:6px;padding:5px 9px;font-size:12px;width:100%;outline:none;font-family:'DM Sans',sans-serif;margin-top:4px;}
.ekw:focus{border-color:var(--acc);}
.crow{display:flex;align-items:flex-start;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--bor);}
