:root{--bg:#0f1521;--surface:#18202f;--surface-2:#212b3d;--surface-3:#2b374c;--border:#37435a;--border-strong:#4d5c78;--text:#f2f6fc;--text-2:#c3cddd;--text-3:#93a1b8;--ok:#34d399;--ok-bg:#06392c;--ok-border:#0f5d47;--warn:#fbbf24;--warn-bg:#422c04;--warn-border:#6b4708;--danger:#fb7185;--danger-bg:#4a1020;--danger-border:#7c1d32;--info:#60a5fa;--info-bg:#0e2a4d;--info-border:#1b4a80;--primary:#38bdf8;--primary-ink:#04222f;--primary-hover:#7dd3fc;--font:"Vazirmatn", "IRANSans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-num:"Vazirmatn", system-ui, sans-serif;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1.0625rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:2rem;--text-3xl:2.75rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-8:3rem;--radius:12px;--radius-lg:18px;--tap-min:56px;--tap-lg:72px;--tap-xl:88px;--shadow:0 4px 16px #00000059;--shadow-lg:0 12px 40px #00000080}:root[data-theme=light]{--bg:#eef2f7;--surface:#fff;--surface-2:#f4f7fb;--surface-3:#e6ecf4;--border:#cbd5e1;--border-strong:#94a3b8;--text:#0b1220;--text-2:#33415c;--text-3:#55637d;--ok:#047857;--ok-bg:#d1fae5;--ok-border:#6ee7b7;--warn:#92400e;--warn-bg:#fef3c7;--warn-border:#fcd34d;--danger:#b91c1c;--danger-bg:#fee2e2;--danger-border:#fca5a5;--info:#1d4ed8;--info-bg:#dbeafe;--info-border:#93c5fd;--primary:#0369a1;--primary-ink:#fff;--primary-hover:#075985}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box}html,body,#root{block-size:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--text-base);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation;line-height:1.65}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:0}:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:4px}.app{grid-template-rows:auto 1fr;min-block-size:100%;display:grid}.main{padding:var(--sp-5);inline-size:100%;max-inline-size:1400px;margin-inline:auto}@media (width<=640px){.main{padding:var(--sp-3)}}.topbar{align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--surface);border-block-end:1px solid var(--border);z-index:20;display:flex;position:sticky;inset-block-start:0}.topbar__brand{font-weight:800;font-size:var(--text-lg);letter-spacing:-.01em}.topbar__branch{color:var(--text-2);font-size:var(--text-sm)}.topbar__spacer{margin-inline-start:auto}.nav{gap:var(--sp-1);flex-wrap:wrap;display:flex}.nav a{min-block-size:var(--tap-min);padding-inline:var(--sp-4);border-radius:var(--radius);color:var(--text-2);white-space:nowrap;align-items:center;font-weight:600;text-decoration:none;display:flex}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a[aria-current=page]{background:var(--surface-3);color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5)}.card--flush{padding:0;overflow:hidden}.card__title{font-size:var(--text-lg);margin:0 0 var(--sp-4);font-weight:700}.grid{gap:var(--sp-4);display:grid}.grid--kpi{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.btn{justify-content:center;align-items:center;gap:var(--sp-2);min-block-size:var(--tap-min);padding-inline:var(--sp-5);border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;font-weight:700;transition:background .12s,transform 60ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn--primary:hover:not(:disabled){background:var(--primary-hover)}.btn--danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.btn--ghost{background:0 0}.btn--lg{min-block-size:var(--tap-lg);font-size:var(--text-lg);padding-inline:var(--sp-6)}.btn--commit{min-block-size:var(--tap-xl);font-size:var(--text-xl);inline-size:100%}.btn--block{inline-size:100%}.pill{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);font-size:var(--text-sm);white-space:nowrap;border:1px solid #0000;border-radius:999px;font-weight:700;display:inline-flex}.pill--ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.pill--warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-border)}.pill--danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.pill--info{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}.pill--muted{background:var(--surface-3);color:var(--text-2);border-color:var(--border)}.offline{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--danger-bg);color:var(--danger);border-block-end:3px solid var(--danger);font-weight:800;font-size:var(--text-lg);z-index:30;display:flex;position:sticky;inset-block-start:0}.offline__icon{font-size:var(--text-xl);flex-shrink:0}.offline__detail{font-weight:600;font-size:var(--text-sm);color:var(--text-2);text-align:end;margin-inline-start:auto}.alert{gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius);border:1px solid;align-items:flex-start;display:flex}.alert--danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.alert--warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.alert--info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.alert--ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.alert__title{margin:0 0 var(--sp-1);font-weight:800}.alert__body{color:var(--text);font-weight:500}.alert__action{color:var(--text);margin-block-start:var(--sp-2);font-weight:700}.field{gap:var(--sp-2);flex-direction:column;display:flex}.label{color:var(--text-2);font-weight:700;font-size:var(--text-sm)}.input{min-block-size:var(--tap-min);padding-inline:var(--sp-4);border-radius:var(--radius);border:2px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit;inline-size:100%}.input:focus{border-color:var(--primary);outline:none}.input--invalid{border-color:var(--danger)}.input--code{font-family:var(--font-num);font-size:var(--text-2xl);letter-spacing:.14em;text-align:center;min-block-size:var(--tap-lg);direction:ltr}.input--otp{font-family:var(--font-num);font-size:var(--text-3xl);letter-spacing:.4em;text-align:center;min-block-size:var(--tap-xl);direction:ltr}.hint{font-size:var(--text-sm);color:var(--text-3)}.error-text{font-size:var(--text-sm);color:var(--danger);font-weight:700}textarea.input{min-block-size:96px;padding-block:var(--sp-3);resize:vertical;line-height:1.7}select.input{cursor:pointer}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;inline-size:100%;min-inline-size:560px}.table th,.table td{padding:var(--sp-3) var(--sp-4);text-align:start;border-block-end:1px solid var(--border)}.table th{color:var(--text-2);font-size:var(--text-sm);background:var(--surface-2);font-weight:700;position:sticky;inset-block-start:0}.table tbody tr:hover{background:var(--surface-2)}.muted{color:var(--text-2)}.dim{color:var(--text-3)}.strong{font-weight:800}.center{text-align:center}.mono-code{font-family:var(--font-num);letter-spacing:.1em;direction:ltr;display:inline-block}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.spinner{border:3px solid var(--border-strong);border-block-start-color:var(--primary);border-radius:50%;block-size:20px;inline-size:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty{padding:var(--sp-8) var(--sp-4);text-align:center;color:var(--text-3)}
