@font-face{font-family:Vazirmatn;src:url(/static/vendor/Vazirmatn.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{--bg:#0b0f17;--bg2:#111827;--card:#141b2a;--card2:#1a2335;--line:#243049;--txt:#e5e9f2;--mut:#8b97ad;
--pri:#6d8cff;--pri2:#4f6ef7;--grn:#22c55e;--red:#ef4444;--yel:#f5b83d;--cyan:#22d3ee;--rad:14px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font-family:Vazirmatn,Tahoma,sans-serif;font-size:14px}
body{background:radial-gradient(1200px 600px at 90% -10%,#1b2650 0%,transparent 60%),var(--bg)}
.hidden{display:none!important}
.muted{color:var(--mut)}.small{font-size:12px}.w100{width:100%}
.err{color:var(--red);min-height:1.2em;margin-top:8px}
.ok{color:var(--grn)}.bad{color:var(--red)}.warn{color:var(--yel)}
.ltr{direction:ltr;unicode-bidi:embed;display:inline-block}
h2{margin:6px 0 12px;font-size:18px}h3{margin:0 0 12px;font-size:15px;color:#cdd6ea;font-weight:600}h4{margin:12px 0 8px;color:var(--mut);font-weight:500}
.shell{display:flex;min-height:100vh}
.side{width:220px;background:linear-gradient(180deg,#0f1524,#0b101b);border-left:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{font-weight:800;font-size:20px;letter-spacing:.5px;margin:0 8px 22px;display:flex;align-items:center;gap:8px}
.brand small{color:var(--pri);font-size:12px}.brand.big{font-size:28px;justify-content:center}
.logo{color:var(--pri);text-shadow:0 0 18px #6d8cff88}
nav a{display:flex;gap:10px;align-items:center;padding:10px 12px;margin:2px 0;border-radius:10px;color:#b8c2d6;cursor:pointer;transition:.15s}
nav a i{font-style:normal;width:18px;text-align:center;color:var(--mut)}
nav a:hover{background:#18213a;color:#fff}
nav a.active{background:linear-gradient(90deg,#24346a,#1b2547);color:#fff;box-shadow:inset -3px 0 0 var(--pri)}
nav a.active i{color:var(--pri)}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}
main{flex:1;min-width:0;padding:16px 22px 40px}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.pills{display:flex;gap:8px;flex-wrap:wrap}
.pill{padding:6px 12px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-size:12.5px;display:flex;gap:6px;align-items:center}
.dot{width:8px;height:8px;border-radius:50%;background:var(--mut);display:inline-block}
.dot.g{background:var(--grn);box-shadow:0 0 8px var(--grn)}.dot.r{background:var(--red);box-shadow:0 0 8px var(--red)}.dot.y{background:var(--yel)}
.pill.paper{border-color:#2d5bd8;color:#9fb6ff}.pill.live{border-color:var(--red);color:#ffb4b4;background:#2a1215}
.top-actions{display:flex;gap:10px;align-items:center}
.grid{display:grid;gap:14px;margin-bottom:14px}
.grid.two{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}
.kpis{grid-template-columns:repeat(auto-fill,minmax(165px,1fr))}
.small-kpis{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));margin:12px 0}
.card{background:linear-gradient(180deg,var(--card),#121827);border:1px solid var(--line);border-radius:var(--rad);padding:16px;margin-bottom:14px;box-shadow:0 8px 24px #0005}
.grid>.card{margin-bottom:0}
.kpi{background:linear-gradient(160deg,#18213a,#131a2b);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.kpi .l{color:var(--mut);font-size:12px}.kpi .v{font-size:20px;font-weight:700;margin-top:4px;direction:ltr;text-align:right}
.kpi .s{font-size:11.5px;color:var(--mut);margin-top:2px}
.kv{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.kv div{display:flex;justify-content:space-between;border-bottom:1px dashed #243049;padding:5px 0}
.kv span:first-child{color:var(--mut)}.kv b{direction:ltr;font-weight:600}
.tag{padding:2px 8px;border-radius:6px;font-size:12px;background:#1f2a44}
.tag.long{background:#0f3b26;color:#6ee7a7}.tag.short{background:#3b1414;color:#fca5a5}
.tag.g{background:#0f3b26;color:#6ee7a7}.tag.r{background:#3b1414;color:#fca5a5}.tag.y{background:#3a2c0b;color:#fcd34d}.tag.b{background:#1b2b5a;color:#a5b8ff}
.chart{width:100%}.h260{height:260px}.h320{height:320px}.h560{height:560px}.h300{max-height:300px}
.legend{margin-top:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{color:var(--mut);font-weight:500;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);white-space:nowrap}
td{padding:7px 10px;border-bottom:1px solid #1d2638;white-space:nowrap}
td.n{direction:ltr;text-align:right;font-variant-numeric:tabular-nums}
tr:hover td{background:#18213650}
.tablewrap{overflow:auto;max-height:520px}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:6px}
label{display:flex;flex-direction:column;gap:5px;color:var(--mut);font-size:12.5px}
label.chk{flex-direction:row;align-items:center;gap:6px}
input,select{background:#0e1422;border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 10px;font-family:inherit;font-size:13.5px;min-width:0}
input:focus,select:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px #6d8cff33}
input.invalid{border-color:var(--red);box-shadow:0 0 0 3px #ef444433}
.btn{background:#1b2440;border:1px solid #2b3961;color:#dbe3f5;border-radius:10px;padding:8px 14px;cursor:pointer;font-family:inherit;font-size:13.5px;transition:.15s}
.btn:hover{background:#243058}
.btn.primary{background:linear-gradient(180deg,var(--pri),var(--pri2));border-color:#5b7bff;color:#fff}
.btn.danger{background:#3a1418;border-color:#7f1d1d;color:#fecaca}.btn.danger:hover{background:#561a20}
.btn.ghost{background:transparent}
.btn:disabled{opacity:.5;cursor:not-allowed}
.row{display:flex;align-items:center}.between{justify-content:space-between}.gap{gap:10px}
.formgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:10px 0 14px}
.fhelp{font-size:11px;color:#6b7891}.ferr{font-size:11.5px;color:var(--red)}
.group-title{display:flex;align-items:center;gap:8px}
.sticky-save{position:sticky;bottom:10px;z-index:5;border-color:#33447a;background:#141d33ee;backdrop-filter:blur(6px)}
.gates{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.logbox{background:#070a10;border:1px solid var(--line);border-radius:10px;padding:12px;max-height:620px;overflow:auto;font:12px/1.55 ui-monospace,Consolas,monospace;color:#c9d4e8;white-space:pre-wrap;text-align:left}
.logbox .e{color:#fca5a5}.logbox .w{color:#fcd34d}.logbox .ev{color:#93c5fd}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center}
.login-card{width:340px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px;display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 60px #0008;text-align:center}
.login-card label{text-align:right}
.modal{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:50}
.modal-card{width:min(520px,92vw);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}
.toast{position:fixed;bottom:22px;left:22px;background:#1b2440;border:1px solid #33447a;padding:12px 16px;border-radius:12px;z-index:60;max-width:420px;box-shadow:0 10px 30px #0008}
.toast.err{border-color:#7f1d1d;background:#2a1215;color:#fecaca}
.bar{height:8px;border-radius:6px;background:#1f2a44;overflow:hidden}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--pri),var(--cyan))}
.scorebox{display:flex;gap:10px;align-items:center}.scorebox .bar{flex:1}
@media (max-width:900px){.side{position:fixed;bottom:0;top:auto;height:auto;width:100%;flex-direction:row;padding:6px;z-index:20;border:0;border-top:1px solid var(--line)}
.side .brand,.side-foot{display:none}nav{display:flex;overflow:auto;width:100%}nav a{white-space:nowrap;padding:8px}main{padding:12px 10px 80px}.grid.two{grid-template-columns:1fr}}
.btn.small{padding:4px 10px;font-size:12px}
