:root{--bg: #0b1020;--bg-2: #101729;--surface: #151d33;--surface-2: #1b2540;--surface-3: #223052;--line: #26314f;--line-soft: #1d2740;--text: #e8ecf7;--text-2: #a9b4d0;--text-3: #6f7c9e;--brand: #4f7cff;--brand-2: #7aa2ff;--brand-dim: #1c2b57;--ok: #2fbf71;--warn: #f0a92a;--danger: #f2545b;--info: #38b6d9;--purple: #9b6bff;--r-sm: 8px;--r: 12px;--r-lg: 18px;--shadow: 0 8px 28px rgba(0,0,0,.32);--shadow-lg: 0 20px 60px rgba(0,0,0,.45);--sidebar: 246px;--header: 60px;--font: "Vazirmatn", -apple-system, BlinkMacSystemFont, "Segoe UI", Tahoma, sans-serif}:root[data-theme=light]{--bg: #eef1f8;--bg-2: #f6f8fc;--surface: #ffffff;--surface-2: #f4f6fb;--surface-3: #e9edf7;--line: #d8dfee;--line-soft: #e6ebf5;--text: #131a2c;--text-2: #4d5a76;--text-3: #7b88a5;--brand-dim: #e2ebff;--shadow: 0 6px 22px rgba(24,38,80,.1);--shadow-lg: 0 18px 48px rgba(24,38,80,.16)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--line)}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.ltr{direction:ltr;text-align:left;unicode-bidi:isolate}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);flex:0 0 var(--sidebar);background:linear-gradient(180deg,var(--bg-2),var(--bg));border-inline-start:1px solid var(--line-soft);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;border-bottom:1px solid var(--line-soft)}.sidebar__logo{width:36px;height:36px;border-radius:10px;flex:0 0 36px;background:linear-gradient(135deg,var(--brand),var(--purple));display:grid;place-items:center;font-weight:800;color:#fff;font-size:15px;box-shadow:0 4px 14px #4f7cff66}.sidebar__title{font-weight:700;font-size:15px;letter-spacing:-.2px}.sidebar__sub{font-size:11px;color:var(--text-3)}.sidebar__nav{padding:10px 10px 20px;display:flex;flex-direction:column;gap:2px}.nav-group{margin-top:14px;padding:0 10px 6px;font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);font-weight:700}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-sm);color:var(--text-2);font-size:13.5px;font-weight:500;transition:background .15s,color .15s;cursor:pointer;border:none;background:none;width:100%;text-align:start}.nav-item:hover{background:var(--surface);color:var(--text)}.nav-item.active{background:var(--brand-dim);color:var(--brand-2);font-weight:600}.nav-item svg{width:17px;height:17px;flex:0 0 17px}.nav-item__badge{margin-inline-start:auto;font-size:11px;background:var(--surface-3);padding:1px 7px;border-radius:20px;color:var(--text-2)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--header);flex:0 0 var(--header);display:flex;align-items:center;gap:14px;padding:0 22px;border-bottom:1px solid var(--line-soft);background:var(--bg-2);position:sticky;top:0;z-index:30}.topbar__title{font-size:16px;font-weight:700}.topbar__spacer{flex:1}.content{padding:22px;flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r);box-shadow:var(--shadow)}.card__head{padding:14px 18px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:12px}.card__title{font-weight:650;font-size:14.5px}.card__sub{font-size:12px;color:var(--text-3)}.card__body{padding:18px}.card__foot{padding:12px 18px;border-top:1px solid var(--line-soft)}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:1200px){.g4,.g5,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:780px){.g2,.g3,.g4,.g5{grid-template-columns:1fr}}.row{display:flex;align-items:center;gap:10px}.row--wrap{flex-wrap:wrap}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:12px}.kpi{padding:16px 18px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}.kpi__label{font-size:12.5px;color:var(--text-3);font-weight:500}.kpi__value{font-size:26px;font-weight:750;letter-spacing:-.5px;line-height:1.2}.kpi__meta{font-size:11.5px;color:var(--text-3)}.kpi__spark{position:absolute;inset-block-end:0;inset-inline:0;height:34px;opacity:.5}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-weight:550;font-size:13px;cursor:pointer;transition:.15s;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--brand)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn--primary:hover:not(:disabled){background:var(--brand-2);border-color:var(--brand-2)}.btn--ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn--ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn--danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn--danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn--sm{padding:5px 10px;font-size:12px}.btn--lg{padding:11px 20px;font-size:14px}.btn svg{width:15px;height:15px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field__label{font-size:12.5px;color:var(--text-2);font-weight:550}.field__hint{font-size:11.5px;color:var(--text-3)}.input,.select,.textarea{background:var(--bg-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:8px 11px;outline:none;transition:.15s;width:100%}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-dim)}.input::placeholder{color:var(--text-3)}.textarea{min-height:78px;resize:vertical}.select{cursor:pointer}.checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.checkbox input{accent-color:var(--brand);width:15px;height:15px;cursor:pointer}.search{position:relative;display:flex;align-items:center}.search .input{padding-inline-start:34px}.search svg{position:absolute;inset-inline-start:11px;width:15px;height:15px;color:var(--text-3);pointer-events:none}.table-wrap{overflow-x:auto;border-radius:var(--r)}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:start;padding:10px 12px;font-weight:600;font-size:12px;color:var(--text-3);border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap;position:sticky;top:0;z-index:2}table.data th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}table.data th.sortable:hover{color:var(--text)}table.data td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}table.data tbody tr{transition:background .12s}table.data tbody tr:hover{background:var(--surface-2)}table.data tbody tr.clickable{cursor:pointer}.cell-strong{font-weight:600}.cell-muted{color:var(--text-3);font-size:12.5px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;background:var(--surface-3);color:var(--text-2);white-space:nowrap}.badge--ok{background:#2fbf7124;color:var(--ok)}.badge--warn{background:#f0a92a24;color:var(--warn)}.badge--danger{background:#f2545b24;color:var(--danger)}.badge--info{background:#38b6d924;color:var(--info)}.badge--brand{background:var(--brand-dim);color:var(--brand-2)}.badge--purple{background:#9b6bff26;color:var(--purple)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--surface-2);border:1px solid var(--line);border-radius:20px;font-size:12px}.chip__x{cursor:pointer;color:var(--text-3);font-weight:700;line-height:1}.chip__x:hover{color:var(--danger)}.meter{height:6px;border-radius:6px;background:var(--surface-3);overflow:hidden}.meter__fill{height:100%;border-radius:6px;background:var(--brand);transition:width .4s ease}.insight{display:flex;gap:11px;padding:12px 14px;border-radius:var(--r);background:var(--surface-2);border:1px solid var(--line-soft);border-inline-start:3px solid var(--info);font-size:13px;line-height:1.7}.insight--opportunity{border-inline-start-color:var(--ok)}.insight--warning{border-inline-start-color:var(--warn)}.insight--success{border-inline-start-color:var(--ok)}.insight--info{border-inline-start-color:var(--info)}.insight__icon{flex:0 0 auto;margin-top:2px}.empty{text-align:center;padding:46px 20px;color:var(--text-3)}.empty__title{font-size:15px;font-weight:600;color:var(--text-2);margin-bottom:5px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#040814b3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:100;padding:22px}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:100%;max-width:620px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.modal--wide{max-width:1000px}.modal__head{padding:16px 20px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:12px}.modal__body{padding:20px;overflow-y:auto}.modal__foot{padding:14px 20px;border-top:1px solid var(--line-soft);display:flex;gap:10px;justify-content:flex-end}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line-soft);margin-bottom:18px;overflow-x:auto}.tab{padding:9px 15px;border:none;background:none;color:var(--text-3);cursor:pointer;font-size:13.5px;font-weight:550;border-bottom:2px solid transparent;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--brand-2);border-bottom-color:var(--brand)}.steps{display:flex;align-items:center;gap:0;margin-bottom:22px;flex-wrap:wrap}.step{display:flex;align-items:center;gap:8px;padding:0 8px}.step__dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);color:var(--text-3);font-size:12px;font-weight:700;flex:0 0 26px}.step.done .step__dot{background:var(--ok);color:#fff}.step.active .step__dot{background:var(--brand);color:#fff;box-shadow:0 0 0 4px var(--brand-dim)}.step__label{font-size:12.5px;color:var(--text-3);white-space:nowrap}.step.active .step__label{color:var(--text);font-weight:600}.step.done .step__label{color:var(--text-2)}.step__line{width:22px;height:1px;background:var(--line)}.toasts{position:fixed;inset-block-end:20px;inset-inline-start:20px;z-index:200;display:flex;flex-direction:column;gap:10px}.toast{background:var(--surface);border:1px solid var(--line);border-inline-start:3px solid var(--brand);border-radius:var(--r);padding:12px 16px;box-shadow:var(--shadow-lg);min-width:260px;max-width:400px;font-size:13px;animation:slideIn .25s ease}.toast--ok{border-inline-start-color:var(--ok)}.toast--err{border-inline-start-color:var(--danger)}@keyframes slideIn{0%{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--r-sm)}@keyframes shimmer{to{background-position:-200% 0}}.spinner{width:17px;height:17px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1100px 600px at 70% -10%,#1b2a55 0%,transparent 60%),var(--bg)}.login-card{width:100%;max-width:396px}.chart{width:100%;display:block;overflow:visible}.chart text{font-family:var(--font);fill:var(--text-3);font-size:11px}.chart .grid-line{stroke:var(--line-soft);stroke-width:1}.chart .axis-line{stroke:var(--line);stroke-width:1}.legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:12px;font-size:12px}.legend__item{display:flex;align-items:center;gap:6px;color:var(--text-2)}.legend__dot{width:9px;height:9px;border-radius:3px;flex:0 0 9px}.bar-row{display:grid;grid-template-columns:minmax(90px,168px) 1fr auto;gap:12px;align-items:center;padding:5px 0;font-size:12.5px}.bar-row__label{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row__track{height:20px;background:var(--surface-2);border-radius:5px;overflow:hidden}.bar-row__fill{height:100%;border-radius:5px;transition:width .5s ease}.bar-row__value{color:var(--text-2);font-size:12px;min-width:82px;text-align:end}.map-row{display:grid;grid-template-columns:1fr 26px 1.15fr 120px;gap:12px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line-soft)}.map-row:last-child{border-bottom:none}.map-row__source{min-width:0}.map-row__header{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-row__samples{font-size:11.5px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-row__arrow{color:var(--text-3);text-align:center}.conf{display:flex;align-items:center;gap:7px;font-size:12px}.conf__bar{width:42px;height:5px;border-radius:4px;background:var(--surface-3);overflow:hidden}.conf__fill{height:100%;border-radius:4px}@media print{.sidebar,.topbar,.no-print{display:none!important}body{background:#fff;color:#111}.content{padding:0}.card{box-shadow:none;border:1px solid #ddd;break-inside:avoid;page-break-inside:avoid}.card__head{background:#f7f7f7}:root{--text: #111;--text-2: #444;--text-3: #666;--surface: #fff;--surface-2: #fafafa;--surface-3: #eee;--line: #ddd;--line-soft: #eee;--bg: #fff;--bg-2: #fff}.print-header{display:block!important}.grid{break-inside:avoid}}.print-header{display:none}.join-page{min-height:100vh;display:grid;place-items:start center;padding:clamp(16px,5vw,56px) 16px 48px;background:radial-gradient(900px 520px at 50% -12%,rgba(79,124,255,.2),transparent 62%),var(--bg)}.join-card{width:100%;max-width:456px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:clamp(22px,6vw,34px)}.join-card--center{text-align:center;display:grid;justify-items:center;gap:12px}.join-head{display:flex;align-items:center;gap:14px}.join-head__text{min-width:0}.join-mark{width:52px;height:52px;flex:0 0 52px;border-radius:15px;display:grid;place-items:center;font-size:22px;font-weight:750;color:#fff;background:linear-gradient(135deg,var(--brand),var(--purple));box-shadow:0 6px 20px #4f7cff5c}.join-mark--ok{background:linear-gradient(135deg,var(--ok),#1f9d5b);box-shadow:0 6px 20px #2fbf7157}.join-mark--muted{background:var(--surface-3);color:var(--text-3);box-shadow:none}.join-mark svg{width:26px;height:26px}.join-title{margin:0;font-size:clamp(18px,4.6vw,21px);font-weight:700;line-height:1.4;letter-spacing:-.2px}.join-sub{font-size:12.5px;color:var(--text-3);margin-top:2px}.join-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.join-tag{font-size:11.5px;color:var(--text-2);background:var(--surface-2);border:1px solid var(--line-soft);border-radius:999px;padding:3px 10px}.join-lede{margin:18px 0 0;font-size:13.5px;line-height:1.85;color:var(--text-2)}.join-event{margin-top:14px;padding:10px 13px;border:1px solid var(--brand-dim);background:color-mix(in srgb,var(--brand) 8%,transparent);border-radius:var(--r-sm);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.join-event__label{font-size:11.5px;color:var(--text-3)}.join-event__name{font-size:13px;font-weight:600}.join-form{display:flex;flex-direction:column;gap:16px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line-soft)}.join-field{display:flex;flex-direction:column;gap:6px}.join-field__label{font-size:12.5px;font-weight:600;color:var(--text-2)}.join-req{color:var(--brand-2);font-style:normal;margin-inline-start:3px}.join-field__hint{font-size:11.5px;color:var(--text-3)}.join-field__error{font-size:11.5px;color:var(--danger)}.join-field .input{font-size:16px;padding:11px 13px;border-radius:10px}.join-field .input.ltr{text-align:start}.join-alert{font-size:12.5px;color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:var(--r-sm);padding:9px 12px}.join-submit{width:100%;padding:13px;font-size:15px;border-radius:10px;margin-top:2px}.join-note{margin:18px 0 0;font-size:11.5px;line-height:1.8;color:var(--text-3);text-align:center}.join-about{margin:12px 0 0;font-size:13px;line-height:1.8;color:var(--text-2)}
