:root{
  --bg:#070b16; --bg2:#0c1226; --panel:#101830; --panel2:#141e3b; --line:#1e2b52; --line2:#27376a;
  --text:#e8eefc; --muted:#8a9bc4; --dim:#5d6e9a;
  --accent:#00e5ff; --accent2:#7c5cff; --good:#34e08a; --warn:#ffc857; --bad:#ff5d73; --orange:#ff9a3c;
  --radius:14px; --shadow:0 10px 30px rgba(0,0,0,.35);
  font-family:"Vazirmatn","Segoe UI",Tahoma,system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-size:14px}
body{background:
  radial-gradient(900px 500px at 85% -10%,rgba(124,92,255,.18),transparent 60%),
  radial-gradient(800px 500px at -10% 110%,rgba(0,229,255,.12),transparent 60%),var(--bg)}
a{color:var(--accent);text-decoration:none}
button,input,select{font:inherit;color:inherit}
::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line2);border-radius:9px}

/* layout */
.shell{display:flex;min-height:100vh}
.side{width:250px;flex:none;background:linear-gradient(180deg,rgba(16,24,48,.95),rgba(10,15,32,.95));border-inline-end:1px solid var(--line);
  padding:18px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 16px}
.brand .logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;font-weight:800;color:#04101f;box-shadow:0 6px 20px rgba(0,229,255,.3)}
.brand b{font-size:17px;letter-spacing:.5px}.brand small{display:block;color:var(--muted);font-size:11px}
.nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;color:var(--muted);cursor:pointer;transition:.15s;border:1px solid transparent}
.nav a:hover{background:rgba(255,255,255,.04);color:var(--text)}
.nav a.on{background:linear-gradient(90deg,rgba(124,92,255,.22),rgba(0,229,255,.12));color:#fff;border-color:var(--line2)}
.nav svg{width:19px;height:19px;flex:none}
.side .grow{flex:1}
.userbox{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:11px;display:flex;align-items:center;gap:10px}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent2),var(--accent));display:grid;place-items:center;font-weight:800;color:#04101f}
.userbox .nm{font-weight:700}.userbox .rk{color:var(--muted);font-size:12px}
.main{flex:1;min-width:0}
.top{display:flex;align-items:center;gap:12px;padding:16px 26px;border-bottom:1px solid var(--line);background:rgba(7,11,22,.7);backdrop-filter:blur(10px);position:sticky;top:0;z-index:5}
.top h1{font-size:19px;margin:0;flex:1}
.pill{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:99px;background:var(--panel);border:1px solid var(--line);font-size:12px;color:var(--muted)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--dim);box-shadow:0 0 0 0 currentColor}
.dot.good{background:var(--good);animation:pulse 2s infinite;color:var(--good)}.dot.warn{background:var(--warn);color:var(--warn)}.dot.bad{background:var(--bad);color:var(--bad)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(52,224,138,.5)}70%{box-shadow:0 0 0 7px rgba(52,224,138,0)}100%{box-shadow:0 0 0 0 rgba(52,224,138,0)}}
.content{padding:24px 26px 60px;max-width:1500px}

/* cards & grids */
.grid{display:grid;gap:16px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.g21{grid-template-columns:2fr 1fr}
.card{background:linear-gradient(180deg,var(--panel),var(--bg2));border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.card h3{margin:0 0 14px;font-size:14px;color:var(--muted);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:8px}
.kpi .v{font-size:30px;font-weight:800;letter-spacing:.5px}.kpi .l{color:var(--muted);font-size:12.5px;margin-top:2px}
.kpi .ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;float:left;background:rgba(0,229,255,.1);color:var(--accent)}
.kpi.warn .ic{background:rgba(255,200,87,.12);color:var(--warn)}.kpi.bad .ic{background:rgba(255,93,115,.12);color:var(--bad)}.kpi.vio .ic{background:rgba(124,92,255,.15);color:#a995ff}

/* tables */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}
table{width:100%;border-collapse:collapse;min-width:640px}
th{background:rgba(255,255,255,.03);color:var(--muted);font-weight:600;text-align:start;padding:10px 12px;font-size:12px;white-space:nowrap}
td{padding:10px 12px;border-top:1px solid var(--line);vertical-align:middle}
tbody tr{transition:.12s}tbody tr:hover{background:rgba(124,92,255,.07)}tr.click{cursor:pointer}
.mono{font-family:Consolas,Menlo,monospace;font-size:12px;color:var(--muted)}
.dim{color:var(--muted)}.right{text-align:end}.nowrap{white-space:nowrap}

/* controls */
.btn{background:var(--panel2);border:1px solid var(--line2);border-radius:10px;padding:8px 14px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:7px}
.btn:hover{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,229,255,.1)}
.btn.pri{background:linear-gradient(135deg,var(--accent2),#4d8bff);border-color:transparent;font-weight:700}
.btn.bad{border-color:rgba(255,93,115,.4);color:var(--bad)}.btn.sm{padding:5px 10px;font-size:12.5px}.btn[disabled]{opacity:.45;pointer-events:none}
.in{background:var(--bg2);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;outline:none;min-width:0}
.in:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,229,255,.12)}
.bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.bar .grow{flex:1}
.seg{display:inline-flex;background:var(--bg2);border:1px solid var(--line2);border-radius:11px;padding:3px;gap:3px}
.seg button{background:none;border:0;padding:7px 14px;border-radius:8px;cursor:pointer;color:var(--muted)}
.seg button.on{background:linear-gradient(135deg,var(--accent2),#4d8bff);color:#fff;font-weight:700}
.sw{position:relative;width:44px;height:24px;background:var(--line2);border-radius:99px;cursor:pointer;border:0;flex:none;transition:.2s}
.sw::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s}
.sw.on{background:var(--good)}.sw.on::after{inset-inline-start:23px}

/* badges */
.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11.5px;font-weight:600;border:1px solid transparent;white-space:nowrap}
.b-good{background:rgba(52,224,138,.12);color:var(--good)}.b-warn{background:rgba(255,200,87,.12);color:var(--warn)}
.b-bad{background:rgba(255,93,115,.13);color:var(--bad)}.b-info{background:rgba(0,229,255,.1);color:var(--accent)}
.b-vio{background:rgba(124,92,255,.16);color:#b3a3ff}.b-org{background:rgba(255,154,60,.13);color:var(--orange)}.b-gray{background:rgba(255,255,255,.06);color:var(--muted)}
.meter{height:7px;border-radius:9px;background:rgba(255,255,255,.07);overflow:hidden;min-width:70px}.meter i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--good),var(--warn),var(--bad))}

/* pager */
.pager{display:flex;gap:6px;align-items:center;justify-content:center;margin-top:14px;flex-wrap:wrap}

/* option cards */
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.opt{background:var(--bg2);border:1px solid var(--line2);border-radius:13px;padding:14px;cursor:pointer;transition:.15s;text-align:start}
.opt:hover{border-color:var(--accent)}.opt.on{border-color:var(--accent);background:linear-gradient(180deg,rgba(0,229,255,.08),var(--bg2));box-shadow:0 0 0 3px rgba(0,229,255,.1)}
.opt b{display:block;margin-bottom:5px}.opt span{color:var(--muted);font-size:12.5px}
.row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:11px 0;border-top:1px solid var(--line)}.row:first-child{border-top:0}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field label{color:var(--muted);font-size:12px}

/* charts */
.chart text{fill:var(--dim);font-size:10px}
.legend{display:flex;flex-direction:column;gap:7px;font-size:12.5px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-inline-end:8px}

/* modal */
.modal-root{position:fixed;inset:0;background:rgba(3,6,14,.72);backdrop-filter:blur(6px);display:grid;place-items:center;z-index:50;padding:20px}
.modal-root[hidden]{display:none}
.modal{background:var(--panel);border:1px solid var(--line2);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.6);width:min(1100px,100%);max-height:94vh;overflow:auto;padding:20px}
.modal.sm{width:min(520px,100%)}
.modal h2{margin:0 0 14px;font-size:17px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.x{background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer}
.toasts{position:fixed;bottom:20px;inset-inline-start:20px;display:flex;flex-direction:column;gap:9px;z-index:99}
.toast{background:var(--panel2);border:1px solid var(--line2);border-inline-start:4px solid var(--accent);padding:11px 16px;border-radius:11px;box-shadow:var(--shadow);animation:in .25s}
.toast.err{border-inline-start-color:var(--bad)}.toast.ok{border-inline-start-color:var(--good)}
@keyframes in{from{opacity:0;transform:translateY(10px)}to{opacity:1}}

/* replay */
.rp canvas{width:100%;height:440px;border-radius:12px;background:#060a14;border:1px solid var(--line);display:block}
.rp .hud{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0;font-size:12.5px}
.rp .hud .chip{background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:5px 10px;color:var(--muted)}.rp .hud .chip b{color:var(--text)}
.rp .ctl{display:flex;gap:10px;align-items:center}.rp input[type=range]{flex:1;accent-color:var(--accent)}
.shotimg{width:100%;border-radius:12px;border:1px solid var(--line)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 12px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-all}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .box{width:min(440px,100%);padding:30px}
.login h2{margin:14px 0 4px}.login p{color:var(--muted);margin:0 0 20px;line-height:1.9}
.code{letter-spacing:6px;text-align:center;font-size:20px;font-weight:700;text-transform:uppercase}
.empty{padding:40px;text-align:center;color:var(--muted)}
.matrix th,.matrix td{text-align:center}.matrix td:first-child,.matrix th:first-child{text-align:start}
.matrix input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent2)}

@media(max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}.g21,.g3,.g2{grid-template-columns:1fr}}
@media(max-width:820px){
  .shell{flex-direction:column}.side{width:100%;height:auto;position:static;flex-direction:row;overflow:auto;padding:10px;border-inline-end:0;border-bottom:1px solid var(--line)}
  .brand small,.userbox,.side .grow{display:none}.nav{display:flex;gap:4px}.nav a{white-space:nowrap}
  .content{padding:16px}.g4{grid-template-columns:1fr 1fr}
}
