@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Thin-DdUiS1cj.woff2) format("woff2");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-ExtraLight-DNfybfsL.woff2) format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Light-Byrs-DlH.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Regular-CtGL0YI-.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Medium-D86t5Axy.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-SemiBold-26ZP1ILp.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Bold-_OhAJEdh.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-ExtraBold-DCjt2qDm.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Black-DA1YqYMq.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--ink: #14171f;--ink-2: #4a5160;--ink-3: #5b6270;--line: #e3e5ea;--line-soft: #eef0f3;--ground: #f3f4f6;--surface: #ffffff;--surface-2: #f7f8fa;--brand: #0f766e;--brand-dark: #0b5550;--brand-tint: #e6f2f0;--nav: #14171f;--nav-2: #1d222d;--nav-hover: #232834;--nav-active: #2a3040;--nav-text: #c9cdd5;--p0: #a4161a;--p0-bg: #fdecea;--p1: #b43c07;--p1-bar: #c2410c;--p1-bg: #fff0e5;--p2: #7a4f00;--p2-bar: #d9a21b;--p2-bg: #fef6dc;--p3: #1e40af;--p3-bar: #3b6fe0;--p3-bg: #e8effe;--p4: #5b21b6;--p4-bar: #c9b8f2;--p4-bg: #f1eafe;--ok: #166534;--ok-bg: #e7f6ec;--neutral-bg: #eef0f3;--neutral: #3a404c;--radius: 12px;--radius-sm: 10px;--font: "Vazirmatn", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);color:var(--ink);background:var(--ground);font-size:14px;line-height:1.7}a{color:var(--brand)}a:hover{color:var(--brand-dark)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}h1,h2,h3{margin:0;line-height:1.4}h1{font-size:26px;font-weight:800}h2{font-size:16px;font-weight:800}p{margin:0}.mono{font-family:var(--mono);direction:ltr;unicode-bidi:isolate}.lbl{font-size:12px;color:var(--ink-3);font-weight:500}.muted{color:var(--ink-2)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.stack{display:flex;flex-direction:column;gap:var(--gap, 16px)}.row{display:flex;align-items:center;gap:var(--gap, 10px);flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--min, 200px),1fr));gap:var(--gap, 16px)}.split{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.split>.main{flex:999 1 560px;min-width:0}.split>.side{flex:1 1 340px;min-width:0}.shell{min-height:100vh;display:flex;flex-wrap:wrap}.nav{flex:1 1 240px;max-width:100%;background:var(--nav);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.nav a{display:flex;align-items:center;justify-content:space-between;min-height:40px;padding:0 12px;border-radius:8px;color:var(--nav-text);text-decoration:none;font-weight:500}.nav a:hover{background:var(--nav-hover);color:#fff}.nav a.active{background:var(--nav-active);color:#fff;font-weight:700}.nav .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;color:#fff;font-weight:800;font-size:17px}.nav .logo{width:32px;height:32px;border-radius:8px;background:var(--brand);display:grid;place-items:center}.nav .sep{height:1px;background:var(--nav-active);margin:10px 4px}.nav .project-box{margin:6px 4px;padding:10px 12px;border-radius:8px;background:var(--nav-2)}.nav .project-box select{width:100%;background:transparent;border:0;color:#fff;font-weight:700;padding:0}.nav .project-box option{color:var(--ink)}.nav .count{font-size:11px;background:var(--brand);color:#fff;border-radius:999px;padding:0 7px}.nav-links{display:flex;flex-direction:column;gap:4px;flex:1}.menu-toggle{display:none;margin-inline-start:auto;min-height:40px;padding:0 14px;border-radius:8px;border:1px solid var(--nav-active);background:var(--nav-2);color:#fff;font-weight:600;cursor:pointer}@media(max-width:899px){.nav{flex-basis:100%;padding:12px 14px;position:sticky;top:0;z-index:40;max-height:100vh;overflow-y:auto}.nav .brand{padding:0}.menu-toggle{display:inline-flex;align-items:center}.nav:not(.open) .nav-links{display:none}.nav.open .nav-links{padding-top:12px}}.content{flex:999 1 560px;min-width:0;padding:28px clamp(16px,3vw,40px);display:flex;flex-direction:column;gap:22px}.topbar{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:14px}.topbar .title{display:flex;flex-direction:column;gap:4px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;min-width:0}.card.flush{padding:0;overflow:hidden}.card.soft{background:#fbfbfc}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:12px}.tile{display:flex;flex-direction:column;gap:4px}.tile .value{font-size:24px;font-weight:800}.hatch{background:repeating-linear-gradient(-45deg,#eef0f3 0,#eef0f3 6px,#f7f8fa 6px,#f7f8fa 12px)}.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--radius-sm);border:1px solid;font-size:13px;line-height:1.9}.notice.warn{background:var(--p2-bg);border-color:#f1d98a;color:#4a3300}.notice.ok{background:var(--ok-bg);border-color:#b7e1c4;color:#14371f}.notice.err{background:var(--p0-bg);border-color:#f3c4be;color:#6b0d10}.notice.info{background:var(--surface-2);border-color:var(--line);color:var(--ink-2)}.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.b-p0{background:var(--p0-bg);color:var(--p0)}.b-p1{background:var(--p1-bg);color:var(--p1)}.b-p2{background:var(--p2-bg);color:var(--p2)}.b-p3{background:var(--p3-bg);color:var(--p3)}.b-p4{background:var(--p4-bg);color:var(--p4)}.b-ok{background:var(--ok-bg);color:var(--ok)}.b-warn{background:var(--p2-bg);color:var(--p2)}.b-err{background:var(--p0-bg);color:var(--p0)}.b-info{background:var(--p3-bg);color:var(--p3)}.b-neutral{background:var(--neutral-bg);color:var(--neutral)}.b-brand{background:var(--brand-tint);color:var(--brand-dark)}.b-dark{background:var(--ink);color:#fff}.b-outline{background:#fff;color:var(--ink-2);border:1px solid #d5d8de}.b-dashed{background:#fff;color:var(--ink-2);border:1px dashed #8a909c}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:var(--radius-sm);border:1px solid #d5d8de;background:#fff;color:var(--ink);font-weight:600;cursor:pointer;text-decoration:none}.btn:hover{border-color:#8a909c;color:var(--ink)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}.btn.primary:hover{background:var(--brand-dark);color:#fff}.btn.ghost{border-color:transparent;background:transparent;color:var(--brand)}.btn.danger{color:var(--p0);border-color:var(--p0)}.btn.sm{min-height:36px;padding:0 12px;font-size:13px}.btn[disabled]{opacity:.55;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.field>.flabel{font-size:13px;font-weight:600}.field .hint{font-size:12px;color:var(--ink-3)}.field .error{font-size:12px;color:var(--p0);font-weight:600}.input{min-height:44px;border-radius:var(--radius-sm);border:1px solid #d5d8de;padding:0 12px;background:#fff;width:100%}textarea.input{padding:10px 12px;min-height:96px;resize:vertical}.input.ltr{direction:ltr;text-align:left}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{min-height:36px;padding:0 14px;border-radius:999px;border:1px solid #d5d8de;background:#fff;font-weight:600;font-size:13px;cursor:pointer}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.segmented{display:inline-flex;gap:4px;background:#e7e9ed;border-radius:var(--radius-sm);padding:4px;flex-wrap:wrap;max-width:100%}.segmented button{min-height:36px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer}.segmented button[aria-selected=true],.segmented button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 2px #00000014}.switch{width:44px;height:26px;border-radius:999px;position:relative;border:0;cursor:pointer;background:#c9cdd5;flex:none}.switch[aria-checked=true]{background:var(--brand)}.switch:after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:inset-inline-start .15s;box-shadow:0 1px 2px #0003}.switch[aria-checked=true]:after{inset-inline-start:21px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:right;font-size:12px;color:var(--ink-3);font-weight:600;background:var(--surface-2);padding:10px 14px;white-space:nowrap}table.data td{padding:12px 14px;border-top:1px solid var(--line-soft);vertical-align:middle}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--surface-2)}table.data tr[aria-selected=true] td{background:var(--brand-tint)}.bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden}.bar>span{display:block;height:100%;border-radius:4px;background:var(--brand)}.stackbar{display:flex;height:14px;border-radius:4px;overflow:hidden;gap:2px}.dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;background:var(--surface-2);border-radius:var(--radius-sm);padding:14px}.dl>div{display:flex;flex-direction:column;gap:2px}.prose{font-size:13px;line-height:1.9;color:#2e3440;white-space:pre-line}.ck{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f1f2f4;font-size:13px}.dot{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none}.dot.PASS{background:var(--ok-bg);color:var(--ok)}.dot.WARN{background:var(--p2-bg);color:var(--p2)}.dot.FAIL{background:var(--p0-bg);color:var(--p0)}.dot.NA{background:var(--neutral-bg);color:var(--ink-3)}.kanban{display:grid;grid-template-columns:repeat(4,minmax(250px,1fr));gap:14px;min-width:1060px}.kanban .col{background:#e9ebef;border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:10px}.kcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;display:flex;flex-direction:column;gap:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14171f73;display:flex;justify-content:center;align-items:flex-start;padding:40px 16px;overflow-y:auto;z-index:50}.modal{width:100%;max-width:860px;background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column}.modal>header,.modal>footer{padding:18px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.modal>header{border-bottom:1px solid var(--line-soft)}.modal>footer{border-top:1px solid var(--line-soft)}.modal>.body{padding:22px 24px}.pick{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;cursor:pointer;text-align:right;width:100%;min-height:56px}.pick[aria-checked=true]{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);background:#f5faf9}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none;background:var(--brand-tint);color:var(--brand-dark)}.empty{padding:32px;text-align:center;color:var(--ink-2);display:flex;flex-direction:column;gap:10px;align-items:center}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}.switch:after{transition:none}}.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.auth .card{width:100%;max-width:420px;padding:32px}
