/* ═══════════════════════════════════════════════════════════
   سیستم طراحی — همه‌ی رنگ‌ها فقط از این متغیرها خوانده می‌شوند.
   برای ساخت نسخه‌ی روشن فقط یک بلوک [data-theme="light"] اضافه می‌شود،
   بدون تغییر یک خط HTML. هیچ رنگ hard-code شده در CSS ننویس.
   ═══════════════════════════════════════════════════════════ */
:root{
  /* پس‌زمینه — نیلیِ عمیق (آبی‌گرا، نه بنفشِ خالص) */
  --bg:#080B1A;

  /* شیشه — کمی مرئی‌تر تا کارت‌ها «شناور» و زنده به‌نظر برسند */
  --glass:rgba(255,255,255,.05);
  --glass-2:rgba(255,255,255,.08);
  --glass-hover:rgba(110,140,250,.10);
  --stroke:rgba(255,255,255,.10);
  --stroke-soft:rgba(255,255,255,.055);
  --blur:18px;
  /* پُرکننده‌های سطحیِ نیمه‌شفاف (منبعِ واحد — به‌جای هر rgba(255,255,255,.0x) پراکنده).
     در تمِ روشن فقط همین‌ها به مشکیِ نیمه‌شفاف برمی‌گردند و کلِ سایت درست می‌شود. */
  --fill:rgba(255,255,255,.04);          /* پس‌زمینهٔ ورودی/دکمه/چیپِ محو */
  --fill-strong:rgba(255,255,255,.08);   /* پُرترِ نوار/شمارنده/دکمهٔ کوچک */
  --row-alt:rgba(255,255,255,.02);        /* راه‌راهِ زوجِ جدول‌ها + هاورِ خیلی محو */
  --scrollbar:rgba(255,255,255,.12);      /* اسکرول‌بار */
  /* پس‌زمینهٔ صفحه (هاله‌های رنگی) — در تمِ روشن یک‌جا override می‌شود */
  --body-bg:
    radial-gradient(1100px 640px at 86% -15%,rgba(64,110,240,.28),transparent 60%),
    radial-gradient(820px 560px at -4% 6%,rgba(110,105,235,.15),transparent 58%),
    radial-gradient(760px 640px at 14% 112%,rgba(56,120,235,.12),transparent 60%),
    var(--bg);

  /* رنگ اصلی — آبیِ ایندیگویی (ترکیبِ آبی‌بنفش، متمایل به آبی) */
  --primary:#4F76F6;
  --primary-700:#2F4FBF;
  --primary-600: #2a4dcf;
  --primary-400:#7C9CFA;
  --primary-soft:rgba(79,118,246,.15);
  --primary-ring:rgba(79,118,246,.40);
  /* رنگِ متن روی پس‌زمینهٔ نیمه‌شفافِ ایندیگویی (منو/چیپِ فعال) — در تمِ روشن تیره می‌شود */
  --on-soft:#DCE6FF;
  /* رنگِ متنِ حالت‌ها روی تینتِ نیمه‌شفاف (تگ/عدد/چیپ) — در تمِ روشن تیره می‌شوند تا
     خوانا بمانند (سبز/قرمز/آبی/زردِ روشن روی پس‌زمینهٔ سفید دیده نمی‌شدند). */
  --ok-fg:var(--ok-fg); --bad-fg:var(--bad-fg); --info-fg:var(--info-fg); --amber-fg:var(--amber-fg);
  /* گرادیانِ لهجه‌ایِ سراسری (آبی→ایندیگو) — برند/دکمه/حالتِ فعال */
  --accent-grad:linear-gradient(135deg,var(--primary),#6E8BFA);
  /* رنگِ تقریبیِ سطحِ کارت — برای ماسکِ هاله‌های اسکرول (scroll-shadows) */
  --card-solid:#0F1426;

  /* وضعیت */
  --success:#2DD4A7;
  --warning:#FBBF24;
  --orange:#F97316;
  --danger:#FB5773;
  --info:#38BDF8;
  --violet:#A78BFA;
  --pink:#F472B6;
  --slate:#8FA0B8;

  /* متن */
  --text:#E9EEF9;
  --text-dim: #b7c2d6;
  --text-faint:#5F6B80;

  /* فرم و شعاع */
  --r-sm:8px;
  --r:14px;
  --r-lg:20px;
  --r-full:999px;
  --shadow:0 8px 32px rgba(0,0,0,.45);
  --shadow-lg:0 24px 64px rgba(0,0,0,.55);
  --glow:0 0 0 1px var(--primary-ring),0 10px 34px rgba(65,131,242,.30);
  --ease:160ms cubic-bezier(.4,0,.2,1);
}

/* ═══ تمِ روشن — فقط همین متغیرها override می‌شوند، هیچ قاعدهٔ کامپوننتیِ جدا نیست.
   چون همهٔ رنگ‌ها از متغیر می‌آیند، هر کامپوننتِ جدید خودکار در هر دو تم درست کار می‌کند
   (هیچ‌وقت لازم نیست دو نسخه را جدا نگه داری). با data-theme="light" روی <html> فعال می‌شود. */
:root[data-theme="light"]{
  --bg:#EEF1F8;
  --glass: rgba(255,255,255);
  --glass-2:rgba(255,255,255,.9);
  --glass-hover:rgba(79,118,246,.08);
  --stroke:rgba(20,28,54,.13);
  --stroke-soft:rgba(20,28,54,.07);
  --fill:rgba(20,28,54,.04);
  --fill-strong:rgba(20,28,54,.08);
  --row-alt:rgba(20,28,54,.025);
  --scrollbar:rgba(20,28,54,.22);
  --primary-soft:rgba(79,118,246,.12);
  --primary-ring:rgba(79,118,246,.34);
  --on-soft:#2F4FBF;
  --ok-fg:#0E9F78; --bad-fg:#D64560; --info-fg:#1E88C7; --amber-fg:#B7791F; --warn-fg:#C2591B;
  --card-solid:#FFFFFF;
  --text:#1B2233;
  --text-dim: #2e3542;
  --text-faint: #58637e;
  --shadow:0 8px 30px rgba(23,33,66,.10);
  --shadow-lg:0 22px 60px rgba(23,33,66,.15);
  --glow:0 0 0 1px var(--primary-ring),0 10px 30px rgba(79,118,246,.22);
  --body-bg:
    radial-gradient(1100px 640px at 86% -15%,rgba(79,118,246,.10),transparent 60%),
    radial-gradient(820px 560px at -4% 6%,rgba(139,110,246,.07),transparent 58%),
    radial-gradient(760px 640px at 14% 112%,rgba(56,120,235,.06),transparent 60%),
    var(--bg);
}

*{box-sizing:border-box;margin:0;padding:0}
/* کنترل‌های فرم فونت را ارث نمی‌برند (پیش‌فرضِ مرورگر) — همه‌جا Vazirmatn شود،
   وگرنه بعضی دکمه‌ها/اینپوت‌ها فونتِ سیستم می‌گیرند (باگِ «وزیر لود نمی‌شود») */
button,input,select,textarea{font-family:inherit}
html{-webkit-font-smoothing:antialiased}
body{
  font-family:Vazirmatn,system-ui,sans-serif;
  /* هاله‌های رنگیِ زنده — منبعِ واحد `--body-bg` (در تمِ روشن override می‌شود) */
  background:var(--body-bg);
  background-attachment:fixed;
  color:var(--text);
  font-size:14px; line-height:1.75;
  min-height:100vh;
}
a{color:inherit;text-decoration:none}
::selection{background:var(--primary-soft)}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:var(--scrollbar);filter:brightness(1.4)}
::-webkit-scrollbar-track{background:transparent}

/* ── شیشه ── */
.glass{
  background:var(--glass);
  backdrop-filter:blur(var(--blur)) saturate(140%);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(140%);
  border:1px solid var(--stroke);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  position:relative;
}
.glass::before{
  content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:inherit;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);
}

/* ── چیدمان ── */
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}

/* ── سایدبار ── */
.side{
  padding:18px 14px;border-left:1px solid var(--stroke-soft);
  background:var(--row-alt);
  backdrop-filter:blur(var(--blur));
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 22px}
.brand-mark{
  width:34px;height:34px;border-radius:10px;flex:none;
  background:linear-gradient(135deg,var(--primary),var(--violet));
  display:grid;place-items:center;font-weight:700;font-size:15px;color:#fff;
  box-shadow:0 6px 18px rgba(65,131,242,.35);
}
.brand b{font-size:15px;font-weight:700;display:block;line-height:1.3}
.brand span{font-size:11px;color:var(--text-faint)}
.nav-label{font-size:10px;color:var(--text-faint);padding:14px 10px 6px;letter-spacing:.04em}
.nav a,.nav-logout-form button{
  display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;
  color:var(--text-dim);text-decoration:none;font-size:13.5px;
  transition:var(--ease);position:relative;margin-bottom:2px;
  width:100%;text-align:right;background:transparent;border:0;font-family:inherit;cursor:pointer;
}
.nav a:hover,.nav-logout-form button:hover{background:var(--glass);color:var(--text)}
.nav-logout-form{margin:0}
.nav a.on{background:var(--primary-soft);color:var(--on-soft);font-weight:500}
.nav a.on::after{
  content:"";position:absolute;right:-14px;top:50%;transform:translateY(-50%);
  width:3px;height:18px;border-radius:0 3px 3px 0;background:var(--primary);
}
.nav .ico{width:17px;text-align:center;opacity:.85;font-size:15px}
.nav .tail{margin-inline-start:auto;font-size:10.5px;background:rgba(251,87,115,.18);color:#FFB3C0;
  padding:1px 7px;border-radius:99px;font-weight:500}

/* ── هدر ── */
.main{padding:16px 22px 40px;min-width:0}
.topbar{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 14px;
  margin-bottom:18px;
  /* نوارِ بالا دیگر چسبان نیست (با اسکرول می‌رود)؛ به‌جایش هدرِ جدول‌ها چسبان می‌ماند */
  position:relative;
  z-index: 31;
}
.search{
  flex:1;
  max-width:340px;
  display:flex;
  align-items:center;
  gap:8px;
  background:var(--fill);
  border:1px solid var(--stroke-soft);
  border-radius:var(--r-full);
  padding-right: 10px;
  color:var(--text-faint);
  font-size: 25px;
  transition:var(--ease);
  cursor:text;
  line-height: 1;
}
.search:hover{border-color:var(--stroke);color:var(--text-dim)}
.kbd{margin-inline-start:auto;font-size:10px;border:1px solid var(--stroke-soft);
  border-radius:5px;padding:1px 6px;color:var(--text-faint)}

.range{display:flex;gap:3px;background:var(--fill);
  border:1px solid var(--stroke-soft);border-radius:var(--r-full);padding:3px}
.range button, .range a{
  border:0;background:none;color:var(--text-dim);font-family:inherit;font-size:12.5px;
  padding:5px 13px;border-radius:var(--r-full);cursor:pointer;transition:var(--ease);
  text-decoration:none;display:inline-flex;align-items:center;
}
.range button:hover, .range a:hover{color:var(--text);background:var(--glass)}
.range button.on, .range a.on{
  background:linear-gradient(135deg,var(--primary),var(--primary-600));
  color:#fff;font-weight:500;box-shadow:0 4px 14px rgba(65,131,242,.35);
}
.range-note{font-size:11.5px;color:var(--text-faint);white-space:nowrap}
/* نوارِ بازه‌ی واحد (بالای هر جدول/بخش، نه در ناو) — components/_daterange_bar.html */
/* z-index بالاتر از .filters(30) تا پاپ‌آورِ «دلخواه» روی ردیفِ فیلترِ زیرش بیفتد نه پشتش */
.range-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px;position:relative;z-index:50}
.range-bar .range{flex-wrap:wrap}

/* ── دکمه ── */
.btn{
  border:1px solid var(--stroke);
  background:var(--glass);
  color:var(--text);
  font-family:inherit;
  font-size:13px;
  padding:7px 15px;
  border-radius:var(--r-full);
  cursor:pointer;
  transition:var(--ease);
  display:inline-flex;
  align-items:center;
  gap:6px;
  text-decoration:none;
}
.btn:hover{background:var(--glass-hover);border-color:var(--stroke)}
.btn-p{
  background:linear-gradient(135deg,var(--primary),var(--primary-600));
  border-color:transparent;color:#fff;font-weight:500;
}
.btn-p:hover{box-shadow:var(--glow);background:linear-gradient(135deg,var(--primary-400),var(--primary))}
.btn-sm{padding:4px 11px;font-size:12px}
.avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;
  border:1px solid var(--stroke);flex:none;display:grid;place-items:center;
  background:var(--glass-2);color:var(--text-dim);font-size:13px}

/* ── اینپوت ── */
.input, input[type=text], input[type=password], input[type=email],
input[type=number], input[type=url], textarea, select{
  width:100%;font-family:inherit;font-size:13.5px;color:var(--text);
  background:var(--fill);border:1px solid var(--stroke-soft);
  border-radius:var(--r-sm);padding:9px 12px;transition:var(--ease);
}
.input:focus, input:focus, textarea:focus, select:focus{
  outline:0;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring);
}
/* رفع متن نامرئی دراپ‌داون‌ها: پس‌زمینه‌ی تیره برای گزینه‌ها */
select option, select optgroup{background:var(--card-solid);color:var(--text)}
select{color:var(--text)}
/* رنگ‌بندی وضعیت (دراپ‌داون ردیف تسک) */
.row-status{border-radius:var(--r-full);border:1px solid var(--stroke-soft);font-weight:500}
.row-status.st-done{color:var(--ok-fg);border-color:rgba(45,212,167,.4);background:rgba(45,212,167,.08)}
.row-status.st-doing{color:#FDBA8C;border-color:rgba(249,115,22,.4);background:rgba(249,115,22,.08)}
.row-status.st-todo{color:var(--text-dim)}
.row-status.st-cancelled{color:var(--bad-fg);border-color:rgba(251,87,115,.4);background:rgba(251,87,115,.08)}
label{font-size:12px;color:var(--text-dim);display:block;margin-bottom:6px}
.field{margin-bottom:14px}

/* ── کارت آمار ── */
.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px}
.stat{padding:15px 16px;min-width:0}
.stat .num{overflow:hidden;text-overflow:ellipsis}
.stat .lab{font-size:12px;color:var(--text-dim);display:flex;align-items:center;gap:6px;margin-bottom:9px}
.stat .dot{width:7px;height:7px;border-radius:50%;flex:none}
.stat .num{font-size:29px;font-weight:700;line-height:1.15;letter-spacing:-.01em}
.stat .sub{font-size:11.5px;color:var(--text-faint);margin-top:3px}
.up{color:var(--success)} .down{color:var(--danger)}

/* ── نوار هشدار ── */
.alerts{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.alert{
  display:flex;align-items:center;gap:9px;padding:9px 15px;border-radius:var(--r-full);
  font-size:12.5px;cursor:pointer;transition:var(--ease);border:1px solid;text-decoration:none;
}
.alert:hover{transform:translateY(-1px)}
.alert b{font-weight:700}
.alert .arw{opacity:.5;font-size:11px}
.a-red{background:rgba(251,87,115,.10);border-color:rgba(251,87,115,.28);color:#FFC2CC}
.a-org{background:rgba(249,115,22,.10);border-color:rgba(249,115,22,.28);color:#FDBA8C}
.a-yel{background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.26);color:var(--amber-fg)}
.a-blu{background:rgba(56,189,248,.10);border-color:rgba(56,189,248,.26);color:#A5E2FC}

/* ── کارت ── */
.card{padding:0;overflow:hidden}
/* لهجهٔ رنگیِ کارتِ آمار: هالهٔ ملایمِ ایندیگو در گوشه تا کارت‌ها زنده‌تر به‌نظر برسند */
.stat{background-image:radial-gradient(120% 120% at 100% 0,rgba(79,118,246,.10),transparent 55%)}
.stat:hover{transform:translateY(-2px);transition:transform var(--ease)}
.card-h{display:flex;align-items:center;gap:10px;padding:14px 17px;border-bottom:1px solid var(--stroke-soft)}
.card-h h3{font-size:14.5px;font-weight:500}
.card-h .side-c{margin-inline-start:auto;display:flex;gap:6px;align-items:center}
.chip{font-size:11px;color:var(--text-dim);background:var(--glass);border:1px solid var(--stroke-soft);
  padding:3px 10px;border-radius:var(--r-full);cursor:pointer;transition:var(--ease)}
.chip:hover{background:var(--glass-hover);color:var(--text)}
.chip.on{background:var(--primary-soft);border-color:var(--primary-ring);color:var(--on-soft)}

/* ── نوار فیلترها (لیست تسک‌ها و مشابه) ── */
/* position:relative + z-index تا نوارِ فیلتر (که به‌خاطرِ backdrop-filter یک stacking
   context جدا می‌سازد) بالای جدولِ بعدی بنشیند و دراپ‌داونِ بابت رویِ جدول باز شود */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;position:relative;z-index:30}
.filters select{
  width:auto;
  min-width:130px;
  flex:none;
  padding: 6px 10px;
  font-size:12.5px;
  border-radius:var(--r-sm);
  background:var(--fill);
  border:1px solid var(--stroke-soft);
  color:var(--text)
  }
.filters select:hover{border-color:var(--stroke)}
.sep{width:1px;align-self:stretch;min-height:20px;background:var(--stroke-soft);flex:none}

/* دراپ‌داونِ چندانتخابیِ قابلِ‌جستجو (بابت) — استفاده در فیلترِ تراکنش/گزارش */
.ms{position:relative;flex:none}
.ms-btn{white-space:nowrap}
.ms-drop{display:none;position:absolute;top:calc(100% + 5px);inset-inline-start:0;z-index:80;
  min-width:240px;max-height:340px;overflow-y:auto;padding:8px;border-radius:var(--r-sm);
  background:var(--card-solid);border:1px solid var(--stroke);box-shadow:var(--shadow)}
.ms-drop.open{display:block}
.ms-search{width:100%;margin-bottom:8px;padding:7px 9px;font-size:12px}
.ms-opts{display:flex;flex-direction:column;gap:1px}
.ms-opt{display:flex;align-items:center;gap:8px;padding:6px 7px;margin:0;cursor:pointer;font-size:12.5px;border-radius:6px}
.ms-opt:hover{background:var(--glass-hover)}
.ms-opt input{width:auto;flex:none}
.ms-foot{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--stroke-soft)}

/* ── جدول ── */
table{width:100%;border-collapse:collapse}
thead th{
  font-size:11px;font-weight:400;color:var(--text-faint);text-align:right;
  padding:9px 14px;border-bottom:1px solid var(--stroke-soft);white-space:nowrap;
}
tbody td{padding:11px 14px;border-bottom:1px solid var(--stroke-soft);font-size:13px}
tbody tr{transition:var(--ease)}
tbody tr:hover{background:var(--glass-hover)}
tbody tr:last-child td{border-bottom:0}
.num-c{font-variant-numeric:tabular-nums;font-weight:500}

.proj{display:flex;align-items:center;gap:9px}
.pdot{width:9px;height:9px;border-radius:3px;flex:none}
/* رَپِرِ نام+دامنه: ستونِ RTL (نامِ فارسی راست‌چین). فقط دامنه LTR ولی باز هم از راست. */
.proj>span{display:flex;flex-direction:column;min-width:0}
.proj b{font-weight:600;font-size:13px;line-height:1.4;color:var(--text)}
.proj>span>span{font-size:11px;color:var(--text-faint);direction:ltr;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.bar{height:6px;border-radius:99px;background:var(--fill-strong);overflow:hidden;min-width:74px}
.bar i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--primary),var(--primary-400))}
.bar.ok i{background:linear-gradient(90deg,var(--success),#6EE7C4)}
.bar.bad i{background:linear-gradient(90deg,var(--danger),#FF8AA0)}

/* ── بج و تگ ── */
.tag{font-size:11px;padding:2px 9px;border-radius:var(--r-full);font-weight:500;
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.t-ok{background: rgba(45, 212, 167, .14);color: #23a683;}
.t-warn{background:rgba(249,115,22,.14);color: #dc8549;}
/* «در انتظار بازبینی» (تسکِ تکمیل‌شده، هنوز تاییدِ مدیر نشده) — آلارمِ زرد + عنوانِ خط‌خورده */
.t-rev{background:rgba(251,191,36,.16);color:var(--warning);padding:2px 7px}
.ttl-txt.is-review{text-decoration:line-through;color:var(--text-dim)}
.tcell .ttl-in.is-review{text-decoration:line-through;color:var(--text-dim)}
.t-bad{background:rgba(251,87,115,.14);color: #df6379;}
.t-info{background:rgba(56,189,248,.14);color:var(--info-fg)}
.t-mute{background:rgba(143,160,184,.13);color:var(--text-dim)}
.zero{color:var(--text-faint)}
.red-n{color:#FF9AAB;font-weight:700}

/* ── دو ستون ── */
.duo{display:grid;grid-template-columns:1.15fr 1fr;gap:14px;margin-top:14px}

/* ── حالت خالی ── */
.empty{padding:48px 20px;text-align:center;color:var(--text-faint)}
.empty .ico{font-size:34px;opacity:.5;margin-bottom:10px}
.empty h4{font-size:15px;color:var(--text-dim);font-weight:500;margin-bottom:6px}

/* ── مودال ── */
.modal-backdrop{
  position:fixed;inset:0;z-index:100;display:none;
  background:rgba(3,7,18,.72);backdrop-filter:blur(6px);
  align-items:center;justify-content:center;padding:20px;
}
.modal-backdrop.open{display:flex}
.modal{
  width:100%;max-width:560px;max-height:88vh;
  display:flex;flex-direction:column;
  animation:modal-in 180ms cubic-bezier(.4,0,.2,1);
}
.modal.modal-wide{max-width:920px}
@keyframes modal-in{from{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}
.modal-h{display:flex;align-items:center;padding:16px 18px;border-bottom:1px solid var(--stroke-soft);flex:none}
.modal-h h3{font-size:15px;font-weight:500}
.modal-h .x{
  margin-inline-start:auto;
  background:none;
  border:0;
  color:var(--text-dim);
  cursor:pointer;
  font-size: 35px;
  line-height: 0;
  transition:var(--ease)
  }
.modal-h .x:hover{color:var(--text)}
/* فقط بدنه اسکرول می‌شود؛ هدر/فوتر (دکمه‌های ذخیره/انصراف) همیشه دیده‌اند، بدونِ نیازِ اسکرول تا پایین */
.modal-b{padding:18px;overflow-y:auto;flex:1;min-height:0}
.modal-f{padding:14px 18px;border-top:1px solid var(--stroke-soft);
  display:flex;gap:8px;justify-content:flex-start;flex:none}

/* ── توست ── */
.toast-wrap{position:fixed;bottom:20px;inset-inline-start:20px;z-index:200;
  display:flex;flex-direction:column;gap:10px}
.toast{
  min-width:240px;max-width:360px;padding:12px 15px;padding-inline-end:16px;
  display:flex;align-items:center;gap:10px;font-size:13px;
  border-inline-end:3px solid var(--primary);
  animation:toast-in 200ms cubic-bezier(.4,0,.2,1);
}
.toast.ok{border-inline-end-color:var(--success)}
.toast.err{border-inline-end-color:var(--danger)}
.toast.warn{border-inline-end-color:var(--amber-fg)}
@keyframes toast-in{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ── ورود ── */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.auth-card{width:100%;max-width:380px;padding:30px 28px}
.auth-card .brand{justify-content:center;padding-bottom:18px}
.auth-card h2{font-size:18px;font-weight:700;text-align:center;margin-bottom:4px}
.auth-card p.sub{font-size:12.5px;color:var(--text-faint);text-align:center;margin-bottom:22px}
.auth-err{background:rgba(251,87,115,.10);border:1px solid rgba(251,87,115,.28);
  color:#FFC2CC;font-size:12.5px;padding:9px 13px;border-radius:var(--r-sm);margin-bottom:14px}
.auth-card.wide{max-width:460px}

/* ── دعوت‌نامه‌ها ── */
.invite-list{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}
.invite-item{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--stroke);
  border-radius:var(--r-sm);background:var(--glass-hover)}
.invite-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.invite-info b{font-size:13.5px;font-weight:600}
.invite-actions{display:flex;gap:6px;flex:none}

/* ── بنرِ دعوت‌نامه‌ی در انتظار (کاربرِ عضوِ سازمان که دعوتِ دیگری هم دارد) ── */
.invite-banner{display:flex;align-items:center;gap:12px;padding:11px 16px;margin-bottom:14px;
  border:1px solid var(--warning);border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--warning) 12%,transparent);font-size:13px}
.invite-banner .side-c{margin-inline-start:auto;display:flex;gap:8px}

.page-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.page-h h1{font-size:20px;font-weight:700}
.page-h .side-c{margin-inline-start:auto;display:flex;gap:8px;align-items:center}

/* ── شبکه‌ی کارت‌ها (همکاران/پروژه‌ها) ── */
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.colleague-card{
  display:flex;align-items:center;gap:12px;padding:15px 16px;text-decoration:none;
  color:var(--text);transition:var(--ease);position:relative;
}
.colleague-card:hover{background:var(--glass-hover);transform:translateY(-1px)}
.colleague-card.is-off{opacity:.5;filter:grayscale(.4)}
.ca-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none;
  border:1px solid var(--stroke);display:grid;place-items:center}
.ca-fallback{background:color-mix(in srgb,var(--c,#4183F2) 22%,transparent);
  color:var(--c,#4183F2);font-weight:700;font-size:15px}
.ca-body{min-width:0;flex:1}
.ca-body b{display:block;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-roles{display:block;font-size:11.5px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-badge{position:absolute;top:10px;inset-inline-start:10px}

/* ── صفحه‌بندی ── */
.pager{display:flex;align-items:center;gap:12px;justify-content:center;margin-top:18px}
.pager-info{font-size:12px;color:var(--text-faint)}

/* ── کارت پروژه ── */
.project-card{display:flex;flex-direction:column;gap:8px;padding:15px 16px;text-decoration:none;color:var(--text);transition:var(--ease)}
.project-card:hover{background:var(--glass-hover);transform:translateY(-1px)}
.project-card.is-off{opacity:.5;filter:grayscale(.4)}
.pc-head{display:flex;align-items:center;gap:9px}
.pc-head .pdot{width:10px;height:10px;border-radius:3px;flex:none}
.pc-head b{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-domain{font-size:11.5px;color:var(--text-faint);direction:ltr}
.pc-tags{display:flex;flex-wrap:wrap;gap:6px}
.pc-muted{font-size:11px;color:var(--text-faint)}

/* ── تب‌ها ── */
.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid var(--stroke-soft);padding-bottom:0}
.tab{
  border:0;
  background:none;
  color:var(--text-dim);
  font-family:inherit;
  font-size:13px;
  padding:9px 14px;
  cursor:pointer;
  transition:var(--ease);
  border-bottom:2px solid transparent;
  margin-bottom:-1px;
  white-space: nowrap;
  }
.tab:hover{color:var(--text)}
.tab.on{color:var(--text);border-bottom-color:var(--primary)}
.tab-panel{display:none}
.tab-panel.on{display:block}

/* ═══ حسابداری + تنظیمات (نوارِ تبِ سنجاقی) ═══ */
.fin-nav,.settings-nav{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:16px;background:var(--fill);
  border:1px solid var(--stroke-soft);border-radius:var(--r-full);padding:4px;width:fit-content}
.fin-nav a,.settings-nav a{padding:7px 16px;border-radius:var(--r-full);font-size:13px;color:var(--text-dim);transition:var(--ease)}
.fin-nav a:hover,.settings-nav a:hover{background:var(--glass);color:var(--text)}
.fin-nav a.on,.settings-nav a.on{background:linear-gradient(135deg,var(--primary),var(--primary-600));color:#fff;font-weight:500}
.sect{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--stroke-soft)}
.sect:last-child{border-bottom:0}
.sect .name{font-size:13px;font-weight:500}
.sect .tris{display:flex;gap:16px;font-size:12px}
.sect .tris span{display:flex;flex-direction:column}
.sect .tris b{font-size:14px;font-variant-numeric:tabular-nums}
/* فیلترهای گزارشِ حسابداری: نوارِ بازه + توگلِ منبعِ درآمد کنارِ هم */
.fin-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.fin-filters .range-bar{margin-bottom:0}
/* توگلِ سراسریِ «منبعِ درآمد» (segmented؛ پیش‌فرض فاکتور) */
.inc-toggle{display:inline-flex;align-items:center;gap:4px;background:var(--fill);border:1px solid var(--stroke-soft);
  border-radius:var(--r-full);padding:3px}
.inc-toggle .inc-lbl{font-size:11.5px;color:var(--text-faint);padding-inline:8px 2px}
.inc-toggle button{font-family:inherit;font-size:12px;color:var(--text-dim);background:transparent;border:0;cursor:pointer;
  padding:4px 13px;border-radius:var(--r-full);transition:var(--ease)}
.inc-toggle button:hover{color:var(--text)}
.inc-toggle button.on{background:var(--primary);color:#fff;font-weight:600}
/* ستونِ فعالِ درآمد در جدولِ گزارش پررنگ */
.inc-on{background:color-mix(in srgb,var(--primary) 7%,transparent)}
th.inc-on{color:var(--primary-400)}
/* ردیفِ بابت کلیک‌پذیر → گزارشِ همان بابت */
.cat-row:hover{background:var(--row-alt)}
.mini-bar{height:5px;border-radius:99px;background:var(--fill-strong);overflow:hidden;margin-top:5px}
.mini-bar i{display:block;height:100%;border-radius:99px}
.bank-card{padding:16px 18px;position:relative;overflow:hidden}
.bank-card .bname{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:500;margin-bottom:10px}
.bank-card .blogo{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:15px;flex:none;color:#fff}
.bank-card .bnum{font-size:11px;color:var(--text-faint);direction:ltr;letter-spacing:1px}
.bank-card .bbal{font-size:22px;font-weight:700;margin-top:8px;font-variant-numeric:tabular-nums}
.bank-card .bbal small{font-size:13px;font-weight:400;color:var(--text-dim)}
.dep{color:var(--ok-fg)} .wd{color:var(--bad-fg)}
.sheet-wrap{overflow-x:auto;border:1px solid var(--stroke-soft);border-radius:var(--r)}
table.sheet{border-collapse:collapse;width:100%;font-size:12.5px;min-width:960px}
table.sheet th{background:var(--fill);position:sticky;top:0;z-index:5;padding:9px 10px;
  border:1px solid var(--stroke-soft);font-weight:500;color:var(--text-dim);white-space:nowrap;text-align:center}
table.sheet td{padding:8px 10px;border:1px solid var(--stroke-soft);text-align:center;height:36px}
table.sheet td.num{font-variant-numeric:tabular-nums;text-align:left;direction:ltr}
table.sheet td.edit{background:rgba(65,131,242,.04)}
table.sheet td.edit select,table.sheet td.edit input{padding:4px 6px;font-size:12px;background:transparent;border:0;
color:var(--text);font-family:inherit}
table.sheet td.edit select:focus,table.sheet td.edit input:focus{background:var(--bg)}
table.sheet tr:hover td{background:var(--row-alt)}
.chk-col{width:34px}
.stepper{display:flex;gap:0;margin-bottom:20px;max-width:560px}
.stepper .st{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}
.stepper .st .dot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:13px;
  background:var(--glass);border:1px solid var(--stroke);color:var(--text-dim);z-index:2}
.stepper .st.on .dot{background:linear-gradient(135deg,var(--primary),var(--primary-600));color:#fff;border-color:transparent}
.stepper .st.done .dot{background:rgba(45,212,167,.2);color:var(--ok-fg);border-color:transparent}
.stepper .st span{font-size:11.5px;color:var(--text-dim)}
.stepper .st::after{content:"";position:absolute;top:15px;inset-inline-end:50%;width:100%;height:1px;background:var(--stroke-soft);z-index:1}
.stepper .st:first-child::after{display:none}
.dup-row td{opacity:.45}
.dup-badge{font-size:9.5px;background:rgba(251,87,115,.18);color:var(--bad-fg);padding:1px 6px;border-radius:99px}
.pay-comp{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.pay-comp .c{font-size:11px;padding:3px 10px;border-radius:var(--r-full);background:var(--glass);border:1px solid var(--stroke-soft)}

/* ── آپلود و گالری فایل ── */
.drop{border:2px dashed var(--stroke);border-radius:var(--r);padding:34px 20px;text-align:center;
  color:var(--text-dim);transition:var(--ease);cursor:pointer}
.drop:hover,.drop.over{border-color:var(--primary-ring);background:var(--primary-soft)}
.drop .ico{font-size:32px;opacity:.6;margin-bottom:8px}
.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.file-card{border:1px solid var(--stroke-soft);border-radius:var(--r-sm);overflow:hidden;background:var(--glass);position:relative}
.file-card .thumb{height:100px;display:grid;place-items:center;background:var(--fill);font-size:30px;color:var(--text-faint)}
.file-card .thumb img{width:100%;height:100%;object-fit:cover}
.file-card .meta{padding:8px 10px}
.file-card .meta b{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.file-card .meta span{font-size:10.5px;color:var(--text-faint)}
.file-card .del{position:absolute;top:6px;inset-inline-start:6px;width:22px;height:22px;border-radius:50%;border:0;
  background:rgba(3,7,18,.7);color:var(--bad-fg);cursor:pointer;opacity:0;transition:var(--ease)}
.file-card:hover .del{opacity:1}

/* ── همکار در جدول ── */
.who{display:flex;align-items:center;gap:9px}
.who img,.who .fb{width:29px;height:29px;border-radius:50%;object-fit:cover;border:1px solid var(--stroke);
  display:grid;place-items:center;font-size:12px;font-weight:700;flex:none}
.who b{font-weight:500;font-size:13px;display:block;line-height:1.4}
.who span{font-size:10.5px;color: var(--text);}
/* direction:ltr → قدیمی‌ترین روز چپ، امروز راست (کنوانسیونِ نمودارِ روند + هماهنگ با tooltip).
   بدونِ این، در صفحهٔ RTL بارها برعکس می‌شوند و «امروز» جای روزِ ۱۴روزِ پیش می‌افتد. */
.spark{display:flex;direction:ltr;align-items:flex-end;gap:2px;height:22px}
.spark i{width:4px;border-radius:2px;background:var(--primary);opacity:.75}
/* اسپارک‌لاینِ درون‌جدولِ پروژه‌ها (روند ۱۴روزِ انجام‌شده‌ها؛ هاور = تعداد) */
.spark-cell{height:26px;gap:2px;min-width:80px}
.spark-cell i{flex:1;min-width:3px;min-height:2px;cursor:default}
.spark-cell i:hover{opacity:1}
/* ستونِ «وضعیت» (آخرین گزارش + پرداخت) */
.stcol{display:flex;flex-direction:column;gap:2px;font-size:11px;white-space:nowrap;text-align:right}
.stcol-r b{color:var(--text-faint);font-weight:400;font-size:10px}
/* هدرِ ثابتِ جدولِ پروژه‌ها هنگام اسکرول.
   روی دسکتاپ (≥۱۱۰۱) جدول کامل جا می‌شود، پس رَپِ اسکرول را visible می‌کنیم تا
   اسکرولِ عمودیِ صفحه مرجعِ sticky شود؛ روی موبایل اسکرولِ افقی می‌ماند (هدرِ چسبان قربانی). */
/* backdrop-filterِ .glass یک containing-block می‌سازد و sticky را از viewport جدا می‌کند؛
   روی کارتِ پروژه‌ها خنثی‌اش می‌کنیم تا هدر نسبت به اسکرولِ صفحه بچسبد (فقط دسکتاپ). */
@media(min-width:1101px){
  .proj-card,.tscroll.proj-scroll{overflow:visible}
  .proj-card{backdrop-filter:none;-webkit-backdrop-filter:none}
}
#proj-table thead th{position:sticky;top:0;z-index:6;background:var(--card-solid);box-shadow:0 1px 0 var(--stroke-soft)}
/* هایلایتِ لحظه‌ایِ سکشنِ ماه بعد از اسکرول از صفحهٔ لیست */
@keyframes secflash{0%{background:var(--primary-soft)}100%{background:transparent}}
.seo-section.sec-flash{animation:secflash 1.6s ease-out}

/* ── فید بازبینی ── */
.feed{padding:8px}
.item{padding:11px 12px;border-radius:11px;transition:var(--ease);border:1px solid transparent}
.item:hover{background:var(--glass);border-color:var(--stroke-soft)}
.item+.item{margin-top:2px}
.item-t{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.item-t b{font-weight:400;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-m{display:flex;align-items:center;gap:11px;font-size:11px;color:var(--text-faint)}
.item-m .grow{margin-inline-start:auto;display:flex;gap:5px}
.ttype{font-size:10.5px;padding:1.5px 8px;border-radius:var(--r-full);font-weight:500;flex:none;display:inline-flex;align-items:center}
.mini.go:hover{border-color:var(--primary-ring);color:#BBD4FF;background:var(--primary-soft)}
.mini.ok:hover{border-color:rgba(45,212,167,.4);color:var(--ok-fg);background:rgba(45,212,167,.12)}

/* ── نمودار ── */
.chart-wrap{padding:16px}
.donut-legend{display:flex;flex-direction:column;gap:7px;font-size:12px}
.donut-legend .row{display:flex;align-items:center;gap:8px}
.donut-legend .row i{width:9px;height:9px;border-radius:3px}
.donut-legend .row .v{margin-inline-start:auto;color:var(--text-dim);font-variant-numeric:tabular-nums}

/* ── تقویم (گوگل‌کلندری) ── */
.cal{margin-top:0}
/* ── تقویمِ واحد (calx) — ماژولِ مشترکِ صفحهٔ تقویم + شخصی ── */
.calx{display:flex;flex-direction:column}
/* نوار بالا = یک ردیفِ واحد: ناو (RTL راست) + همهٔ فیلترها و دکمهٔ «بدون تاریخ» (RTL چپ).
   روی دسکتاپ تک‌ردیف می‌ماند (nowrap) و فیلترها در صورتِ تنگی جمع می‌شوند؛ زیرِ ۸۶۰px
   کلِ فیلترها تمیز به ردیفِ دومِ تمام‌عرض می‌روند (نه نیم‌ونصفه). */
.calx-top{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;padding:12px 16px;border-bottom:1px solid var(--stroke-soft)}
.calx-nav{display:flex;align-items:center;gap:7px;flex:none}
.calx-nav .calx-month,.calx-nav .calx-year{width:auto;padding:6px 9px;font-size:12.5px}
.calx-filters{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;margin-inline-start:auto;min-width:0}
.calx-fsel{height:34px;font-size:12.5px}
.calx-filters .rs{flex:0 1 150px;min-width:108px}
.calx-type{flex:0 1 130px;min-width:92px;padding:6px 9px}
@media(max-width:860px){
  .calx-top{flex-wrap:wrap}
  .calx-filters{margin-inline-start:0;width:100%;flex-wrap:wrap}
  .calx-filters .rs{flex:1 1 140px}
  .calx-type{flex:1 1 120px}
}
.calx-undated-btn{display:inline-flex;align-items:center;gap:6px;height:34px;white-space:nowrap;flex:none}
.calx-undated-btn.on{background:linear-gradient(135deg,var(--primary),var(--primary-600));color:#fff;border-color:transparent}
.calx-ubadge{background:var(--fill-strong);color:var(--text-dim);border-radius:99px;padding:0 7px;font-size:11px;font-weight:700}
.calx-undated-btn.on .calx-ubadge{background:rgba(255,255,255,.25);color:#fff}
/* بدنه: پنلِ بدون‌تاریخ کنارِ گرید */
.calx-body{display:flex;align-items:stretch;gap:0}
.calx-grid-wrap{flex:1;min-width:0}
.calx-undated{flex:none;width:250px;border-inline-start:1px solid var(--stroke-soft);display:flex;flex-direction:column;background:var(--fill)}
/* وقتی توگلِ «بدون تاریخ» خاموش است، کلِ پنل مخفی شود (display:flex وگرنه [hidden] را خنثی می‌کند) */
.calx-undated[hidden]{display:none}
.calx-undated-h{padding:11px 14px;font-size:12.5px;font-weight:600;color:var(--text-dim);border-bottom:1px solid var(--stroke-soft)}
.calx-qadd{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid var(--stroke-soft)}
.calx-qadd .input{flex:1;min-width:0;font-size:12.5px;padding:7px 9px}
.calx-qadd .btn{flex:none;padding:0 11px}
.calx-undated-list{flex:1;overflow-y:auto;max-height:620px;padding:8px}
.calx-undated-empty{color:var(--text-faint);font-size:12px;text-align:center;padding:24px 10px}
.calx-uitem{display:flex;align-items:center;gap:7px;padding:7px 8px;margin-bottom:6px;border-radius:var(--r-sm);
  background:var(--card-solid);border:1px solid var(--stroke-soft);cursor:grab;font-size:12px}
.calx-uitem:hover{border-color:var(--stroke);background:var(--glass-hover)}
.calx-uitem:active{cursor:grabbing}
.calx-uitem .tk-av{width:18px;height:18px;font-size:9px;flex:none}
.calx-uitem-tx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.calx-uitem-pj{flex:none;font-size:10px;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:860px){
  .calx-body{flex-direction:column}
  .calx-undated{width:auto;border-inline-start:0;border-top:1px solid var(--stroke-soft)}
  .calx-undated-list{max-height:260px}
  /* گریدِ تقویم افقی اسکرول می‌شود و سلول‌ها حداقل‌عرض می‌گیرند تا تسک‌ها خوانا بمانند */
  .calx-grid-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .calx-grid-wrap .calx-dow,.calx-grid-wrap .calx-grid{grid-template-columns:repeat(7,minmax(104px,1fr));min-width:728px}
  .calx-grid-wrap .cell{min-height:104px}
}
.cal-bar{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid var(--stroke-soft);flex-wrap:wrap}
.cal-bar h3{font-size:15px;font-weight:500;min-width:110px;text-align:center}
.nav-b{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;
  border-radius:8px;border:1px solid var(--stroke-soft);background:transparent;text-decoration:none;
  color:var(--text-dim);cursor:pointer;transition:var(--ease);font-size:14px}
.nav-b:hover{background:var(--glass-hover);color:var(--text)}
.grid7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.grid2{grid-template-columns:1fr}}
.dow{padding:9px 4px;text-align:center;font-size:11.5px;color:var(--text-dim);border-bottom:1px solid var(--stroke-soft)}
.dow.off{color:#FF9AAB;background:rgba(251,87,115,.045)}
.cell{min-height:120px;min-width:0;padding:5px;border-inline-start:1px solid var(--stroke-soft);border-bottom:1px solid var(--stroke-soft);
  position:relative;transition:var(--ease);display:flex;flex-direction:column;gap:3px}
.cell:nth-child(7n){border-inline-start:0}
.cell:hover{background:var(--row-alt)}
.cell.off{background:rgba(251,87,115,.045)}
.cell.dim{opacity:.35}
.cell.today{box-shadow:inset 0 0 0 1.5px var(--primary);border-radius:9px}
.cell.drop-hover{background:var(--primary-soft);box-shadow:inset 0 0 0 1.5px var(--primary-ring)}
.cell-h{display:flex;align-items:center;gap:5px;padding:1px 3px 2px;min-width:0}
.dnum{font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums}
.cell.off .dnum{color:#FF9AAB} .cell.today .dnum{color:#fff;font-weight:700}
.hol{font-size:9.5px;color:#FF9AAB;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.cnt{margin-inline-start:auto;font-size:9.5px;min-width:16px;height:16px;border-radius:99px;background:var(--fill-strong);
  color:var(--text-dim);display:grid;place-items:center;padding:0 4px;flex:none}
.cell-add{position:absolute;top:5px;inset-inline-start:5px;width:20px;height:20px;border-radius:50%;border:0;
  background:var(--primary);color:#fff;cursor:pointer;font-size:13px;line-height:1;opacity:0;transition:var(--ease);z-index:4;display:grid;place-items:center}
.cell:hover .cell-add{opacity:1}
.cell-add:hover{background:var(--primary-400)}
.tk{border-radius:6px;padding:3px 6px;font-size:11px;line-height:1.4;cursor:pointer;transition:var(--ease);color:var(--text);
  display:flex;align-items:center;gap:5px;overflow:hidden;min-width:0;width:100%;flex:none}
/* «+N مورد دیگر»: تا کلیک‌نکردن فقط ۵ تسکِ اول؛ با کلیک، سلول باز و همه دیده می‌شوند */
.cell:not(.expanded) .tk-extra{display:none}
.more{border:0;background:transparent;font-family:inherit}
.cell.expanded{background:var(--row-alt)}
.tk:hover{transform:translateX(-2px)}
.tk-av{width:15px;height:15px;border-radius:50%;flex:none;object-fit:cover;display:grid;place-items:center;font-size:8px;color:#fff;font-weight:700;border:1px solid rgba(255,255,255,.25)}
.tk-tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.tk-t{font-size:9px;opacity:.75;flex:none}
/* نوارِ «جمعِ زمانِ هر فرد» بالای سلولِ روز (آواتار + ساعت) */
.cell-people{display:flex;flex-wrap:wrap;gap:3px 6px;margin:2px 0 4px;padding-bottom:3px;border-bottom:1px dashed var(--stroke-soft)}
.cp{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--text-dim);cursor:default}
.cp-av{width:16px;height:16px;border-radius:50%;flex:none;object-fit:cover;display:grid;place-items:center;font-size:8px;color:#fff;font-weight:700;border:1px solid rgba(255,255,255,.25)}
.cp-h{font-variant-numeric:tabular-nums;color:var(--text);font-weight:700;direction:ltr}
.tk.done{background:rgba(143,160,184,.12);color:var(--text-faint);border-right:3px solid var(--slate);text-decoration:line-through}
.tk.done .tk-av{filter:grayscale(1);opacity:.7}
.more{font-size:10.5px;color:var(--text-faint);padding:1px 6px;cursor:pointer}
.more:hover{color:var(--primary-400)}
.legend{display:flex;gap:13px;flex-wrap:wrap;padding:11px 16px;font-size:11.5px;color:var(--text-dim)}
.legend i{width:8px;height:8px;border-radius:2.5px;display:inline-block;margin-inline-end:5px}

/* ── دیت‌پیکر شمسی ── */
.dp-pop{position:absolute;z-index:300;width:250px;padding:10px;border-radius:var(--r);
  background:var(--card-solid);border:1px solid var(--stroke);box-shadow:var(--shadow-lg)}
/* پیش‌نمایشِ سلولِ روز کنارِ دیت‌پیکر (روی هاورِ یک روز) */
.dp-preview{position:absolute;z-index:301;width:230px;max-height:320px;overflow-y:auto;padding:9px;
  border-radius:var(--r);background:var(--card-solid);border:1px solid var(--stroke);box-shadow:var(--shadow-lg)}
.dp-preview .dpp-h{font-size:11.5px;font-weight:700;color:var(--text-dim);margin-bottom:7px;
  padding-bottom:5px;border-bottom:1px solid var(--stroke-soft);font-variant-numeric:tabular-nums}
.dpp-tk{display:flex;align-items:center;gap:5px;padding:4px 6px;margin-bottom:3px;border-radius:6px;
  background:var(--fill);font-size:11px;color:var(--text)}
.dpp-tk.done{opacity:.55;text-decoration:line-through}
.dpp-av{width:15px;height:15px;border-radius:50%;flex:none;object-fit:cover;display:grid;place-items:center;
  font-size:8px;color:#fff;font-weight:700;border:1px solid rgba(255,255,255,.25)}
.dpp-tx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dpp-t{flex:none;font-size:9px;color:var(--text-faint);font-variant-numeric:tabular-nums;direction:ltr}
.dpp-more{font-size:10px;color:var(--text-faint);text-align:center;margin-top:2px}
.dpp-empty{font-size:11px;color:var(--text-faint);text-align:center;padding:6px}
.dp-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.dp-head h4{flex:1;text-align:center;font-size:13px;font-weight:500}
.dp-nav{width:24px;height:24px;border-radius:6px;border:1px solid var(--stroke-soft);background:transparent;color:var(--text-dim);cursor:pointer}
.dp-nav:hover{background:var(--glass-hover);color:var(--text)}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dp-dow{text-align:center;font-size:9.5px;color:var(--text-faint);padding:3px 0}
.dp-day{text-align:center;font-size:11.5px;padding:6px 0;border-radius:6px;cursor:pointer;transition:var(--ease);color:var(--text)}
.dp-day:hover{background:var(--primary-soft)}
.dp-day.dim{opacity:.3}
.dp-day.today{box-shadow:inset 0 0 0 1px var(--primary)}
.dp-day.hol{color:#FF9AAB;background:rgba(251,87,115,.08)}
.dp-day.sel{background:var(--primary);color:#fff}
.dp-foot{margin-top:8px;padding-top:8px;border-top:1px solid var(--stroke-soft);text-align:center}
.dp-today{border:1px solid var(--primary-ring);background:var(--primary-soft);color:var(--on-soft);
  border-radius:8px;padding:5px 14px;font-family:inherit;font-size:12px;cursor:pointer;width:100%}
.dp-today:hover{background:var(--primary);color:#fff}

/* ── پسورد و دکمه‌های ریز ── */
.pw{font-family:monospace;direction:ltr;display:inline-block;letter-spacing:1px}
.mini{border:1px solid var(--stroke-soft);background:transparent;color:var(--text-dim);
  font-family:inherit;font-size:11px;padding:2.5px 9px;border-radius:var(--r-full);
  cursor:pointer;transition:var(--ease);margin-inline-start:4px}
.mini:hover{background:var(--glass-hover);color:var(--text)}
/* دکمه‌های بالا/پایینِ ترتیبِ فیلدِ نوعِ تسک */
.f-move{display:inline-flex;flex-direction:column;gap:2px}
.f-move .mini{margin:0;padding:0 6px;line-height:1.4;font-size:9px}

/* ══ پرداختِ مدرن (اسکرول‌بار، دکمه‌ی گرادیانی، تیترِ گرادیانی، شاینِ کارت) ══ */
/* اسکرول‌بارِ نازک و هم‌رنگِ تم */
*{scrollbar-width:thin;scrollbar-color:var(--stroke) transparent}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:var(--stroke);border-radius:99px;border:2px solid transparent;background-clip:padding-box}
*::-webkit-scrollbar-thumb:hover{background:var(--stroke-soft)}
*::-webkit-scrollbar-track{background:transparent}
/* دکمه‌ی اصلی: گرادیان + هایلایتِ لبه + شاینِ عبوری هنگام هاور */
.btn-p{
  background: linear-gradient(135deg, var(--primary-400), var(--primary-600));
  border: none;
  box-shadow:0 6px 18px rgba(65,131,242,.30),inset 0 1px 0 rgba(255,255,255,.22);
  position:relative;
  overflow:hidden
  }
.btn-p:hover{box-shadow:0 10px 26px rgba(65,131,242,.42),inset 0 1px 0 rgba(255,255,255,.28)}
.btn-p::after{content:"";position:absolute;top:0;bottom:0;width:40%;inset-inline-start:-60%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);transition:inset-inline-start .55s ease}
.btn-p:hover::after{inset-inline-start:130%}
/* تیترِ صفحه با متنِ گرادیانی ظریف */
.page-h h1{background:linear-gradient(92deg,var(--text),var(--primary-400));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
/* درخششِ لبه‌ی کارت‌های تعاملی هنگام هاور */
.project-card,.ca-card,.month-card,.stat{position:relative}
.stat::before,.project-card::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  padding:1px;
  background:linear-gradient(135deg,var(--primary-ring),transparent 45%);
  opacity:0;
  transition:opacity var(--ease);
  pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude
  }
.stat:hover::before,.project-card:hover::before{opacity:.9}

/* ══ ریسپانسیو + انیمیشن‌ها (سبک، حرفه‌ای) ══════════════════════════════ */
html{scroll-behavior:smooth}

/* تقویم در موبایل: اسکرولِ افقی، سل‌ها کوچک نشوند (آخرِ هفته توی اسکرول) */
.cal-scroll{overflow:visible}
@media(max-width:820px){
  .cal-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .cal-scroll .grid7{min-width:820px}   /* ۷ × ~۱۱۷px */
  .cell{min-height:104px}
}

/* همبرگر و پس‌زمینه‌ی کشوی موبایل */
.nav-toggle{display:none;flex:none;width:38px;height:38px;border-radius:var(--r-sm);
  border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text);
  font-size:17px;line-height:1;cursor:pointer;align-items:center;justify-content:center;transition:var(--ease)}
.nav-toggle:hover{background:var(--glass-hover)}
.nav-backdrop{position:fixed;inset:0;z-index:110;background:rgba(3,7,18,.55);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
body.nav-open{overflow:hidden}
body.nav-open .nav-backdrop{opacity:1;visibility:visible}

/* ورودِ نرمِ محتوا (استگرِ ظریف روی هر بارگذاری صفحه) */
@keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.main>*{animation:rise .38s cubic-bezier(.22,1,.36,1) both}
.main>*:nth-child(2){animation-delay:.05s}
.main>*:nth-child(3){animation-delay:.10s}
.main>*:nth-child(4){animation-delay:.15s}
.main>*:nth-child(n+5){animation-delay:.19s}

/* ریزتعامل‌ها — فشارِ دکمه، بالاآمدنِ کارت‌ها، لغزشِ ناوبری */
.btn:active,.mini:active,.chip:active,.tab:active{transform:translateY(1px) scale(.985)}
.stat{transition:transform var(--ease),box-shadow var(--ease),border-color var(--ease);}
.stat:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,0,0,.30);border-color:var(--stroke);}
.project-card:hover,.ca-card:hover,.month-card:hover{transform:translateY(-3px)}
.nav a:not(.on):hover{transform:translateX(-3px)}
.brand-mark{transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow var(--ease)}
.side:hover .brand-mark{transform:rotate(-5deg) scale(1.06)}
.avatar,.mini-av img,.mini-logo img{transition:transform var(--ease)}
.avatar:hover,.mini-av:hover img{transform:scale(1.08)}
/* درخششِ نوارِ فعالِ سایدبار */
.nav a.on::after{box-shadow:0 0 10px 1px var(--primary-ring)}

@media(max-width:1100px){
  .shell{grid-template-columns:1fr}
  .nav-toggle{display:inline-flex}
  /* سایدبار → کشوی کنارِ راست (RTL) — پس‌زمینهٔ **مات** (وگرنه در تمِ روشن محو/ناخواناست) */
  .side{position:fixed;top:0;bottom:0;right:0;width:min(280px,84vw);height:100vh;z-index:120;
    background:var(--card-solid);backdrop-filter:none;
    transform:translateX(100%);transition:transform .3s cubic-bezier(.22,1,.36,1);
    box-shadow:-14px 0 44px rgba(0,0,0,.45)}
  body.nav-open .side{transform:translateX(0)}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .duo{grid-template-columns:1fr}
  .topbar{flex-wrap:wrap}
}
@media(max-width:640px){
  .main{padding:12px 12px 40px}
  .topbar{padding:8px;gap:8px}
  .search{max-width:none;order:5;flex-basis:100%}
  .stats{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
  .stat .num{font-size:18px}
  .page-h{flex-wrap:wrap;gap:8px}
  .page-h h1{font-size:17px}
  .page-h .side-c{margin-inline-start:0;width:100%;flex-wrap:wrap}
  .duo{grid-template-columns:1fr}
  .filters{gap:6px;padding:10px}
  .fin-nav,.settings-nav,.tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  /* مودالِ تمام‌عرض که از پایین بالا می‌آید (شیتِ موبایل) */
  .modal-backdrop{align-items:flex-end}
  .modal{max-width:100%;max-height:92vh;border-radius:18px 18px 0 0;animation:sheet-up .26s cubic-bezier(.22,1,.36,1)}
  .side-att{max-height:220px}
}
@keyframes sheet-up{from{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* عکس‌های محتوای غنی (توضیحات تسک/گزارش/بازبینی) هرگز از عرض جعبه بیرون نزنند */
.rich img,#r-desc img,[data-item-desc] img,[contenteditable] img{max-width:100%;height:auto;border-radius:6px}

/* جعبه‌ی «موارد نیاز به اصلاح» بالای مودال تسک + تاریخچه */
.fixnote-box{background:rgba(249,115,22,.08);border:1px solid rgba(249,115,22,.35);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:14px}
.fixnote-h{color:#FDBA8C;font-weight:700;font-size:13px;margin-bottom:6px}
.fixnote-item{padding:7px 0;border-top:1px dashed var(--stroke-soft)}
.fixnote-item[data-fix-item]:first-of-type{border-top:0}
.fixnote-meta{font-size:11px;color:var(--text-faint);margin-bottom:3px}

/* بخش «گزارش» ته مودال تسک */
/* چک‌لیستِ عمومیِ مودالِ تسک */
.ck-wrap{margin-bottom:14px}
.ck-wrap>label{display:block;margin-bottom:6px}
.ck-list{display:flex;flex-direction:column;gap:6px}
.report-sec{margin-top:16px;border-top:1px solid var(--stroke-soft);padding-top:12px}
.report-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.report-item{background:var(--fill);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);padding:8px 10px}
.report-meta{font-size:11px;color:var(--text-faint);margin-bottom:4px;display:flex;align-items:center;gap:6px}
.report-tools{margin-inline-start:auto;display:flex;gap:9px}
.report-tools i{cursor:pointer;font-style:normal;opacity:.65;font-size:12.5px}
.report-tools i:hover{opacity:1}
.report-body{font-size:13px;line-height:1.8}
.report-empty{color:var(--text-faint);font-size:12px;padding:6px 0}

/* درختِ تیم‌ها در صفحه‌ی افراد و دسترسی‌ها */
.team-node{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--stroke-soft)}
.team-node .team-name{font-size:13px}
.team-node .team-count{font-size:11px;color:var(--text-faint)}
.team-tools{margin-inline-start:auto;display:flex;gap:8px}
.team-tools i{cursor:pointer;font-style:normal;opacity:.6;font-size:12.5px}
.team-tools i:hover{opacity:1}

/* بازه‌ی دلخواه (دو فیلد شروع/پایان) */
.range-custom{position:absolute;top:calc(100% + 6px);inset-inline-end:0;z-index:40;display:flex;gap:8px;align-items:flex-end;padding:10px 12px;border-radius:var(--r-sm)}
.range-custom .field label{font-size:10px;color:var(--text-faint)}
.range-custom .input{max-width:120px;padding:6px 8px;font-size:12px}

/* جدول تسک‌ها: اسکرول افقی تمیز + ویرایشِ زندهٔ سلول‌ها + آیکن باز کردن مودال */
.tsheet-wrap{overflow-x:auto;overflow-y:visible}
/* اسکرول‌بارِ .tsheet-wrap از بلوکِ یکپارچهٔ «نشانگرِ اسکرولِ افقی» می‌آید */
.tsheet{min-width:940px;border-collapse:collapse}
/* نمای گوگل‌شیت برای جدولِ تسک‌ها: خط‌کشیِ سلولی + هدرِ چسبان + راه‌راهِ ملایم */
.tsheet thead th{background:var(--fill);position:sticky;top:0;z-index:4;
  border:1px solid var(--stroke-soft);padding:8px 10px}
.tsheet tbody td{border:1px solid var(--stroke-soft);height:38px}
/* راه‌راهِ even/odd برداشته شد — همهٔ ردیف‌ها یک‌رنگ (لایت: کاملاً سفید) — خواستِ کاربر */
.tsheet tbody tr td{background:transparent}
.tsheet tbody tr:hover td{background:var(--glass-hover)}
.tcell{display:flex;align-items:center;gap:6px}
.tx-inline{max-width:100%;background:transparent;border:1px solid transparent;border-radius:6px;color:inherit;font:inherit;font-size:12.5px;padding:4px 6px}
.tcell .tx-inline{flex:1;min-width:120px}
.tx-inline:hover{border-color:var(--stroke-soft)}
.tx-inline:focus{border-color:var(--primary-ring);background:var(--fill);outline:none}
select.tx-inline{cursor:pointer;max-width:150px}
.row-open{cursor:pointer;opacity:.5;font-style:normal;font-size:14px}
.row-open:hover{opacity:1;color:var(--primary-400)}

/* دکمهٔ در حال بارگذاری (جلوگیری از دوبار کلیک) */
.btn:disabled,.btn.loading{opacity:.55;cursor:not-allowed;pointer-events:none}
.btn.loading{position:relative;color:transparent!important}
.btn.loading::after{content:"";position:absolute;inset:0;margin:auto;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:btnspin .6s linear infinite}
@keyframes btnspin{to{transform:rotate(360deg)}}

/* چیپِ «به‌روزرسانیِ زنده» (لیستِ تسک/بازبینی — وقتی چیزی بدونِ رفرش عوض شد) */
.live-refresh{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:70;
  border:1px solid var(--primary-ring);background:var(--card-solid);color:var(--primary-400);
  padding:7px 14px;border-radius:999px;font-size:12.5px;cursor:pointer;box-shadow:var(--shadow);
  backdrop-filter:blur(8px);animation:lrpop .2s ease}
.live-refresh:hover{background:var(--fill-strong)}
@keyframes lrpop{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}

/* ویجت سراسریِ «در حال انجام» (چسبیده به پایین-چپِ صفحه، با فلشِ باز/بسته) */
.timer-widget{position:fixed;bottom:0;inset-inline-start:16px;z-index:60;display:none;flex-direction:column;gap:5px;
  min-width:220px;max-width:290px;padding:8px 12px 10px;border-radius:var(--r-sm) var(--r-sm) 0 0;
  background:var(--card-solid);border:1px solid var(--stroke);border-bottom:0;backdrop-filter:blur(8px);box-shadow:var(--shadow)}
.timer-widget.on{display:flex}
.timer-widget .tw-head{display:flex;align-items:center;gap:6px;cursor:default}
.timer-widget .tw-head-t{flex:1;font-size:11px;color:var(--text-faint);display:flex;align-items:center;gap:5px}
.timer-widget .tw-count{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:var(--fill-strong);color:var(--text);font-size:10px;font-variant-numeric:tabular-nums}
.timer-widget .tw-toggle{border:0;background:var(--fill);color:var(--text-faint);width:22px;height:22px;border-radius:6px;
  cursor:pointer;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform .15s}
.timer-widget .tw-toggle:hover{background:var(--fill-strong);color:var(--text)}
.timer-widget.collapsed .tw-toggle{transform:rotate(180deg)}
.timer-widget .tw-body{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.timer-widget.collapsed{padding-bottom:8px}
.timer-widget.collapsed .tw-body{display:none}
.timer-widget .tw-h{font-size:11px;color:var(--text-faint);margin-bottom:2px}
.tw-row{display:flex;align-items:center;gap:7px;font-size:12.5px}
.tw-dot{width:8px;height:8px;border-radius:50%;background:#2DD4A7;flex:none;box-shadow:0 0 0 0 rgba(45,212,167,.6);animation:twpulse 1.6s infinite}
@keyframes twpulse{0%{box-shadow:0 0 0 0 rgba(45,212,167,.5)}70%{box-shadow:0 0 0 6px rgba(45,212,167,0)}100%{box-shadow:0 0 0 0 rgba(45,212,167,0)}}
.tw-tt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tw-time{font-variant-numeric:tabular-nums;color:var(--ok-fg)}
.tw-stop{border:0;background:var(--fill-strong);color:var(--text);width:20px;height:20px;border-radius:5px;cursor:pointer;font-size:9px;line-height:1}
.tw-stop:hover{background:var(--danger);color:#fff}

/* تایمر تسک (ستون زمان) */
.timer-cell{white-space:nowrap;display:flex;align-items:center;justify-content:flex-start;gap:6px;min-height:22px;min-width:96px}
.timer-cell .tbtn{border:0;background:var(--primary-soft);color:var(--primary-400);width:22px;height:22px;border-radius:50%;cursor:pointer;font-size:10px;line-height:1;display:grid;place-items:center;flex:none;padding:0}
.timer-cell .tbtn:hover{background:var(--primary-ring);color:#fff}
.timer-cell.running .tbtn{background:var(--danger);color:#fff}
.timer-cell .tval{font-variant-numeric:tabular-nums;font-size:12px;color:var(--text);min-width:28px}
.timer-cell.running .tval{color:var(--ok-fg)}
/* تخمینِ زمان کنارِ صرف‌شده (کم‌رنگ‌تر، برای تمایز: صرف‌شده / تخمین) */
.t-est{font-variant-numeric:tabular-nums;font-size:11px;color:var(--text-faint)}
.t-est.est-edit{cursor:pointer;border-radius:4px}
.t-est.est-edit:hover{color:var(--primary-400);background:var(--fill)}
/* «تکمیل — امروز/دیروز» کنارِ وضعیت */
.done-when{font-size:10.5px;color:var(--text-faint)}
/* آیکنِ ویرایشِ زمان فقط با هاور روی سلولِ زمان دیده می‌شود (نه همیشه) */
.timer-cell .tedit{cursor:pointer;opacity:0;font-size:11px;transition:opacity .12s}
.timer-cell:hover .tedit{opacity:.75}
.timer-cell .tedit:hover{opacity:1}

/* آواتارِ کوچکِ مسئول در جدولِ تسک‌ها و دراپ‌داون‌ها */
.mini-av{width:22px;height:22px;border-radius:50%;flex:none;display:inline-grid;place-items:center;overflow:hidden;vertical-align:middle}
.mini-av img{width:100%;height:100%;object-fit:cover}
.mini-av .fb{width:100%;height:100%;display:grid;place-items:center;font-size:9.5px;font-weight:700;border-radius:50%}
.assignee-cell{display:flex;align-items:center;gap:7px}
.assignee-cell select,.assignee-cell span{min-width:0}

/* دراپ‌داونِ غنی (لوگو/آواتار + رنگ) — richselect.js */
.rs{position:relative;display:inline-block;min-width:150px;vertical-align:middle}
.rs .rs-native{display:none}
.rs-btn{display:flex;align-items:center;gap:7px;width:100%;font-family:inherit;font-size:12.5px;color:var(--text);
  background:var(--fill);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);padding:6px 10px;cursor:pointer;text-align:start}
.rs-btn:hover{border-color:var(--stroke)}
.rs-btn .rs-lb{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-btn .rs-caret{opacity:.5;font-size:10px;flex:none}
.rs-av{width:20px;height:20px;border-radius:50%;flex:none;display:grid;place-items:center;overflow:hidden;font-size:9px;font-weight:700}
.rs-av img{width:100%;height:100%;object-fit:cover}
.rs-av.rs-empty{background:var(--glass-2)}
.rs-menu{display:none;position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:80;min-width:200px;max-width:280px;
  background:var(--card-solid);border:1px solid var(--stroke);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:6px}
.rs-menu.open{display:block}
.rs-search{width:100%;margin-bottom:6px;padding:6px 9px;font-size:12px}
.rs-items{max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:1px}
.rs-item{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:6px;cursor:pointer;font-size:12.5px}
.rs-item:hover{background:var(--glass-hover)}
.rs-item.on{background:var(--primary-soft)}
.rs-item .rs-lb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* نسخهٔ فشرده در جدولِ تسک‌ها (ویرایشِ inline) */
.tsheet .rs{min-width:120px;width:100%}
.tsheet .rs-btn{padding:4px 7px;background:transparent;border-color:transparent}
.tsheet .rs-btn:hover{border-color:var(--stroke-soft);background:var(--fill)}
.tsheet .rs-av{width:18px;height:18px;font-size:8.5px}

/* تاریخچهٔ تسک در مودال */
.hist-box{margin-top:14px;border-top:1px solid var(--stroke-soft);padding-top:10px}
.hist-toggle{background:0;border:0;color:var(--text-dim);font-family:inherit;font-size:12.5px;cursor:pointer;padding:4px 0}
.hist-toggle:hover{color:var(--text)}
.hist-list{margin-top:8px;display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
.hist-item{background:var(--glass);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);padding:8px 10px}
.hist-meta{font-size:11.5px;color:var(--text-faint);margin-bottom:3px}
.hist-badge{display:inline-block;padding:1px 7px;border-radius:99px;font-size:10.5px;font-weight:700}
.hist-created{background:rgba(45,212,167,.16);color:var(--ok-fg)}
.hist-updated{background:rgba(56,189,248,.16);color:#7CC7F5}
.hist-deleted{background:rgba(251,87,115,.16);color:var(--bad-fg)}
.hist-restored{background:rgba(251,191,36,.16);color:var(--amber-fg)}
.hist-ch{font-size:12px;color:var(--text-dim);padding:1px 0}
.hist-old{color:var(--text-faint);text-decoration:line-through}
.hist-new{color:var(--text)}

/* ── حضورغیاب (worktracker): تایم‌لاینِ روزانه، مثلِ طرحِ آن‌طرف ── */
.wt-day{padding:8px 0}
.wt-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.wt-sum{display:flex;gap:6px;align-items:center}
.wt-chip{font-size:11px;background:var(--primary-soft);color:#BBD4FF;border:1px solid var(--primary-ring);padding:2px 9px;border-radius:99px;white-space:nowrap}
.wt-chip.wt-in{background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.26);color:var(--amber-fg)}
.wt-startend{font-size:11.5px;color:var(--text-dim);direction:ltr}
.wt-timeline{position:relative;height:14px;border-radius:99px;background:var(--fill);overflow:hidden;border:1px solid var(--stroke-soft)}
.wt-seg{position:absolute;top:0;bottom:0;background:var(--primary);border-radius:99px;min-width:2px}
.wt-seg.wt-inact{background:repeating-linear-gradient(45deg,rgba(251,87,115,.85),rgba(251,87,115,.85) 3px,rgba(251,87,115,.5) 3px,rgba(251,87,115,.5) 6px);z-index:2}
.wt-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:10.5px;color:var(--text-faint)}
.wt-words{font-size:12px;color:var(--text-dim);margin-top:7px}
.wt-apps{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.wt-app{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-dim);background:var(--glass);border:1px solid var(--stroke-soft);padding:2px 8px;border-radius:99px;direction:ltr}
.wt-app img{width:15px;height:15px;object-fit:contain;border-radius:3px}
.wt-app b{font-variant-numeric:tabular-nums;font-weight:600}
/* آواتار با نشانگرِ آنلاین (لیستِ همکاران/سایدبار) */
.wt-avwrap{position:relative;flex:none}
.wt-avwrap .wt-dot{position:absolute;top:-1px;inset-inline-end:-1px;width:9px;height:9px;border-radius:50%;background:var(--text-faint);border:2px solid var(--bg)}
.wt-avwrap.online .wt-dot{background:var(--success)}
.wt-notcfg{font-size:12px;color:var(--text-faint);padding:14px}
/* بخشِ «همکاران» در سایدبار (خیلی جزئی) */
.side-att{display:flex;flex-direction:column;gap:2px;max-height:280px;overflow:auto;padding:2px 0}
.satt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r-sm);text-decoration:none;color:var(--text-dim)}
.satt:hover{background:var(--glass-hover);color:var(--text)}
.satt .wt-avwrap{width:26px;height:26px;border-radius:50%;overflow:hidden;display:grid;place-items:center}
.satt .wt-avwrap img{width:100%;height:100%;object-fit:cover}
.satt .wt-avwrap .fb{width:100%;height:100%;display:grid;place-items:center;font-size:10px;font-weight:700;border-radius:50%}
.satt-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.satt-main b{font-size:12px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.satt-task{font-size:10.5px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.satt-tl{position:relative;height:5px;border-radius:99px;background:var(--fill-strong);overflow:hidden;margin-top:1px}
.satt-tl .s{position:absolute;top:0;bottom:0;background:var(--primary);border-radius:99px;min-width:1px}
.satt-tl .s.in{background:rgba(251,87,115,.8);z-index:2}
.satt-sum{font-size:10.5px;color:var(--text-dim);font-variant-numeric:tabular-nums;flex:none;direction:ltr}

/* کارت‌های تفکیکِ ماهِ گزارش در سینگلِ پروژه */
.month-card{display:block;min-width:130px;padding:11px 14px;border-radius:var(--r-sm);background:var(--glass);border:1px solid var(--stroke-soft);text-decoration:none;transition:var(--ease)}
.month-card:hover{border-color:var(--primary-ring);background:var(--glass-hover);transform:translateY(-1px)}
.month-card .mc-name{font-weight:700;color:var(--text);font-size:13px;margin-bottom:4px}
.month-card .mc-stat{font-size:11.5px;color:var(--text-dim)}
.month-card .mc-stat b{color:var(--success)}

/* ردیف‌های ماهِ گزارش زیرِ هر پروژه (شخصی‌سازیِ سئو) */
#proj-table:not(.rm-on) .rmonth-row{display:none}
.rmonth-row{cursor:pointer;background:var(--row-alt)}
.rmonth-row:hover td{background:rgba(65,131,242,.06)}
.rmonth-row td{font-size:12px;color:var(--text-dim);border-top:0}
.rm-label{padding-inline-start:22px;color:var(--text-dim)}
.rm-tag{font-size:9.5px;background:var(--glass-2);color:var(--text-faint);padding:1px 6px;border-radius:99px;margin-inline-start:4px}
/* جدولِ پروژه‌ها کمی شارپ‌تر (مشخص‌تر، بدونِ شلوغی): هدرِ پررنگ‌تر + هاورِ واضح +
   خط‌کشیِ ردیف‌های اصلی. اعداد کمی پررنگ‌تر تا کم‌رنگ به‌نظر نرسند. */
#proj-table thead th{background:var(--fill);color:var(--text-dim);font-weight:600;font-size:12px;text-align:start}
#proj-table .proj-row td{border-top:1px solid var(--stroke-soft)}
#proj-table .proj-row:hover td{background:var(--glass-hover)}
#proj-table td.num,#proj-table .proj-row td{color:var(--text)}

/* لوگوی کوچکِ پروژه (جدولِ پروژه‌ها و دراپ‌داون‌ها) */
.mini-logo{width:24px;height:24px;border-radius:7px;flex:none;display:inline-grid;place-items:center;overflow:hidden;vertical-align:middle}
.mini-logo img{width:100%;height:100%;object-fit:cover}
.mini-logo .fb{width:100%;height:100%;display:grid;place-items:center;font-size:11px;font-weight:700;border-radius:7px;text-transform:uppercase}
/* لوگوی بزرگِ بالای صفحهٔ تک‌پروژه */
.proj-logo-lg{width:52px;height:52px;border-radius:12px;flex:none;display:inline-grid;place-items:center;overflow:hidden;border:1px solid var(--stroke-soft);background:var(--fill)}
.proj-logo-lg img{width:100%;height:100%;object-fit:cover}
.proj-logo-lg .fb{width:100%;height:100%;display:grid;place-items:center;font-size:22px;font-weight:800;text-transform:uppercase}

/* سوییچرِ سازمان در هدر */
.org-switch{max-width:170px;padding:6px 10px;font-size:12.5px;border-radius:var(--r-sm);
  background:var(--fill);border:1px solid var(--stroke-soft);color:var(--text)}

/* فیلدِ چندتایی (کلمه + Enter) — کلماتِ کلیدی/LSI/هدف در مودالِ تسک */
.tagbox{background:transparent;border:0;border-radius:var(--r-sm);padding:0}
.tagbox-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}
.tagbox-chips:empty{display:none}
.tagbox-chip{gap:4px;padding:2px 6px 2px 8px;font-size:11px}
.tagbox-x{cursor:pointer;font-style:normal;opacity:.6;font-size:12px;line-height:1}
.tagbox-x:hover{opacity:1;color:var(--danger)}
/* اینپوتِ کلمه با دکمهٔ ＋ داخلِ خودش (مثلِ چک‌لیست) */
.tagbox-field{display:flex;align-items:center;background:var(--fill);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);overflow:hidden}
.tagbox-field .tagbox-input{flex:1;border:0;background:transparent;color:var(--text);padding:6px 9px;font-family:inherit;font-size:12.5px;outline:none;min-width:0}
.tagbox-field .tagbox-add{flex:none;border:0;background:transparent;color:var(--text-dim);cursor:pointer;font-size:15px;line-height:1;padding:0 9px}
.tagbox-field .tagbox-add:hover{color:var(--success)}

/* KPIها (مدیریت نوع تسک + مودال/بازبینی) */
.kpi-item{border:1px solid var(--stroke-soft);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:8px;background:var(--row-alt)}
.kpi-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kpi-tools{margin-inline-start:auto;display:flex;gap:8px}
.kpi-tools i,.ci-del{cursor:pointer;font-style:normal;opacity:.65;font-size:12.5px}
.kpi-tools i:hover,.ci-del:hover{opacity:1}
.kpi-items{margin-top:8px;padding-inline-start:6px;display:flex;flex-direction:column;gap:5px}
.kpi-ci{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--text-dim)}
/* آیتمِ چک‌لیستِ KPI که خودِ مسئول می‌تواند تیک بزند (خوداظهاری، در مودالِ تسک) */
.kpi-ci-check{justify-content:flex-start;gap:8px;cursor:pointer;margin:0}
.kpi-ci-check input{flex:none;cursor:pointer}
.kpi-self-tag{font-variant-numeric:tabular-nums}
.kpi-info{font-style:normal}
.kpi-score-row{display:flex;align-items:center;gap:8px;margin:6px 0}
.kpi-score-row input[type=number]{max-width:80px}

/* تبِ «کلمات کلیدی» پروژه — ردیابیِ رتبه */
.subtabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--stroke-soft)}
.subtab{border:0;background:none;color:var(--text-dim);font-family:inherit;font-size:12.5px;
  padding:7px 12px;cursor:pointer;border-bottom:2px solid transparent;transition:var(--ease)}
.subtab:hover{color:var(--text)}
.subtab.on{color:var(--text);border-bottom-color:var(--primary)}
.subtab-panel{display:none}
/* فیلترِ نوعِ بردِ سئو = دکمه‌های چیپی (به‌جای دراپ‌داون) برای جابه‌جاییِ سریع بینِ انواع */
.seo-typefilter{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.seo-tf{font-size:12px;padding:5px 12px;border-radius:999px;border:1px solid var(--stroke);
  color:var(--text-dim);background:var(--fill);cursor:pointer;white-space:nowrap;transition:var(--ease)}
.seo-tf:hover{color:var(--text);background:var(--fill-strong)}
.seo-tf.on{color:#fff;background:var(--primary);border-color:var(--primary)}
.subtab-panel.on{display:block}
.rk-spark{display:block;width:90px;height:24px}
.star{cursor:pointer;font-style:normal;font-size:14px;color:var(--text-faint);opacity:.6}
.star:hover{opacity:1}
.star.on{color:#FBBF24;opacity:1}
.chg{font-size:12px;font-weight:600}
.chg.up{color:var(--ok-fg)}
.chg.down{color:#FF9AAB}
.rk-url{color:var(--text-faint);font-size:11px}
.kw-hist{display:flex;flex-direction:column;gap:5px;max-height:220px;overflow-y:auto;margin:10px 0}
.kw-hist-row{display:flex;align-items:center;gap:8px;font-size:12.5px}
.kw-hist-row input[type=number]{max-width:80px}
.kw-add-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}

/* سفارشی‌سازیِ ستون‌ها — /settings/columns/ */
.col-list{display:flex;flex-direction:column;gap:2px;padding:10px 14px}
.col-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:var(--r-sm);border:1px solid transparent}
.col-row:hover{background:var(--fill);border-color:var(--stroke-soft)}
.col-row label{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;cursor:pointer;flex:1}
.col-row input[type=checkbox]{width:auto}
.col-row.off{opacity:.5}
.col-arrows{display:flex;gap:4px}
.col-arrows i{cursor:pointer;font-style:normal;opacity:.55;font-size:11px;width:20px;height:20px;display:grid;place-items:center;border-radius:5px}
.col-arrows i:hover{opacity:1;background:var(--fill-strong)}

/* پیش‌نمای تسک تکرارشونده در تقویم (کم‌رنگ/خط‌چین) */
.tk.placeholder{opacity:.5;border:1px dashed var(--stroke)!important;background:transparent!important;filter:grayscale(.3)}
/* رخدادِ مجازیِ تکرار: کم‌رنگ ولی کلیک‌پذیر (باز کردن نمایندهٔ سری) */
.tk.virtual{opacity:.42;cursor:pointer}
.tk.placeholder .tk-t{display:none}
/* «تکمیل — در انتظار بازبینی»: کارش انجام شده (خط‌خورده) ولی آلارمِ زرد که هنوز بازبینی نشده */
.tk.review{background:rgba(251,191,36,.14);color:var(--text-dim);text-decoration:line-through}
.tk-warn{width:12px;height:12px;flex:none;color:var(--warning);margin-inline-end:1px}
.tk-dl{width:12px;height:12px;flex:none;color:var(--danger);margin-inline-end:1px}
.tk.dl-passed{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--danger) 55%,transparent)}
.dl-alarm{margin-inline-start:4px}

/* ── چک‌باکسِ چندحالتهٔ وضعیت (ردیفِ جدول + مودال) ──
   todo=طوسیِ توخالی، doing=آبیِ توخالی، pending=زردِ پُر، done=سبزِ پُر */
.st-check{width:20px;height:20px;border-radius:6px;border:2px solid var(--slate);background:transparent;
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;flex:none;
  vertical-align:middle;transition:var(--ease);color:#fff;box-sizing:border-box}
.st-check .st-chk-ic{width:11px;height:11px;opacity:0;transition:var(--ease)}
.st-check:not(.st-ro):hover{filter:brightness(1.08);transform:scale(1.06)}
.st-check.st-ro{cursor:default;pointer-events:none;opacity:.85}
/* حالت‌های توخالی (todo/doing): تیکِ خیلی محو تا معلوم شود چک‌باکس است (خواستِ کاربر) */
.st-check.st-todo{border-color:var(--slate);color:var(--slate)}
.st-check.st-doing{border-color:var(--primary);color:var(--primary)}
.st-check.st-todo .st-chk-ic,.st-check.st-doing .st-chk-ic{opacity:.3}
.st-check.st-pending{border-color:var(--warning);background:var(--warning);color:#6b5200}
.st-check.st-pending .st-chk-ic{opacity:1}
.st-check.st-done{border-color:var(--success);background:var(--success);color:#073b2e}
.st-check.st-done .st-chk-ic{opacity:1}
td.st-col,th.st-col{width:1%;text-align:center;padding-inline:6px}
/* مودال: چک‌باکسِ وضعیت کنارِ اینپوتِ عنوان (سمتِ راست) — مربعِ هم‌ارتفاعِ اینپوت، گوشه‌گرد مثلِ اینپوت.
   لیبلِ «عنوان» بالای خودِ اینپوت است (در ستونِ .tm-title-col)، نه بالای چک‌باکس؛ چک‌باکس هم‌ترازِ اینپوت. */
.tm-title-row{display:flex;align-items:flex-end;gap:8px}
.tm-title-col{flex:1;min-width:0;display:flex;flex-direction:column}
.st-check.st-lg{width:34px;height:34px;border-radius:var(--r-sm)}
.st-check.st-lg .st-chk-ic{width:16px;height:16px}
/* آیکنِ ⏰ تعیینِ مهلت کنارِ لیبلِ «تاریخ برنامه» (فیلدِ مهلت با کلیک باز می‌شود) */
.dl-toggle{background:transparent;border:0;cursor:pointer;color:var(--text-faint);padding:0;margin-inline-start:3px;line-height:0;vertical-align:middle}
.dl-toggle .topt-ic{width:13px;height:13px;display:block}
.dl-toggle:hover{color:var(--primary-400)}
.dl-toggle.on{color:var(--danger)}
/* تقویم: چک‌باکسِ وضعیت که با هاورِ چیپِ تسک از سمتِ راست (inline-start) با انیمیشن ظاهر می‌شود */
.tk{position:relative}
.tk-stcheck{position:absolute;inset-inline-start:4px;top:50%;width:16px;height:16px;
  transform:translateY(-50%) scale(.55);opacity:0;pointer-events:none;z-index:3;transition:var(--ease)}
.tk:hover .tk-stcheck{opacity:1;transform:translateY(-50%) scale(1);pointer-events:auto}
.tk:hover{transform:translateX(-2px);padding-inline-start:24px}
/* بخشِ تکرار در مودال تسک */
.rec-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px;font-size:12.5px}
.rec-opt{padding:5px 10px;border-radius:99px;border:1px solid var(--stroke-soft);cursor:pointer;background:var(--fill)}
.rec-opt.on{background:var(--primary-soft);border-color:var(--primary-ring);color:var(--primary-400)}

/* ── بازبینیِ تسک (صفحه‌ی کارت‌ها) ── */
.rev-card{padding:16px 18px;margin-bottom:12px;transition:var(--ease),opacity var(--ease);outline:2px solid transparent;outline-offset:2px}
.rev-card.rev-focus{outline-color:var(--primary)}
.rev-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.rev-top h3{font-size:14.5px;font-weight:500;flex:1;min-width:160px}
.rev-status{margin-inline-start:auto}
.rev-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--text-dim);margin-bottom:10px}
.rev-meta b{color:var(--text);font-weight:500}
.rev-why{margin-inline-start:auto;font-size:11px;color:var(--text-faint)}
.rev-desc{font-size:12.5px;color:var(--text-dim);line-height:1.8;padding:10px 12px;margin-bottom:10px;
  background:var(--row-alt);border:1px solid var(--stroke-soft);border-radius:var(--r-sm)}
.rev-desc p{margin:0}
.rev-kw{margin-bottom:10px}
.rev-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:10px;border-top:1px solid var(--stroke-soft)}
.rev-sep{display:flex;align-items:center;gap:10px;margin:18px 0 10px;font-size:11.5px;color:var(--text-faint)}
.rev-sep::before,.rev-sep::after{content:"";flex:1;height:1px;background:var(--stroke-soft)}

/* ── صفحه‌ی ادیتِ گزارش — فاصله‌ی یکدست بینِ بخش‌ها ── */
[data-report] > section{margin-bottom:14px}
/* نوارِ فشردهٔ «هزینهٔ تولید محتوا» زیرِ فاکتور */
.cc-box{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin-top:12px;padding:8px 12px;
  border:1px dashed var(--stroke-soft);border-radius:var(--r-sm);background:var(--fill);
  font-size:11.5px;color:var(--text-faint)}
.cc-box b{color:var(--text-dim)}
.cc-box .cc-lab{font-weight:600;color:var(--text-dim)}
.cc-box .cc-total{margin-inline-start:auto}
.cc-box .cc-total b{color:#6FE3C4}
/* دستگیرهٔ درگِ ردیف‌های گزارش (کلمات کلیدی + ردیف‌های تسک) */
.rep-grip{display:inline-block;cursor:grab;color:var(--text-faint);margin-inline-end:6px;
  user-select:none;font-size:13px;vertical-align:middle}
.rep-grip:active{cursor:grabbing}
tr.dragging{opacity:.45}
tr.dragging td{background:var(--fill)}
/* ردیف‌های «ایمپورت تسک» — گرید تا نوع/عنوان/مسئول در ستون‌های هم‌راستا بیایند */
[data-report] .pull-all{display:flex;align-items:center;gap:8px;padding:8px 8px;margin-bottom:6px;
  cursor:pointer;border-radius:var(--r-sm);background:var(--fill);font-size:12.5px}
[data-report] .pull-group{margin-bottom:12px}
[data-report] .pull-glabel{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);margin:0 0 5px 2px}
[data-report] .pull-row{display:grid;grid-template-columns:20px 92px 1fr auto auto;align-items:center;gap:10px;
  padding:6px 8px;margin:0;cursor:pointer;border-radius:var(--r-sm);transition:var(--ease)}
[data-report] .pull-row:hover{background:var(--glass-hover)}
[data-report] .pull-row .ttype{justify-self:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:92px}
[data-report] .pull-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
[data-report] .pull-meta{color:var(--text-faint);font-size:11px;white-space:nowrap}
[data-report] .pull-not-done{font-size:10.5px;color:var(--amber-fg);background:color-mix(in srgb,var(--warning) 14%,transparent);padding:1px 8px;border-radius:var(--r-full);flex:none;white-space:nowrap}

/* صفحه‌بندیِ شماره‌دار (۱ ۲ ۳ … ۲۰) — finance/_pagination.html */
.pagi{display:flex;gap:6px;align-items:center;justify-content:center;margin:16px 0;flex-wrap:wrap}
.pagi .pg{min-width:34px;height:34px;padding:0 9px;display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;border-radius:var(--r-sm);border:1px solid var(--stroke-soft);background:var(--glass);
  color:var(--text-dim);text-decoration:none;transition:var(--ease)}
.pagi a.pg:hover{background:var(--glass-hover);color:var(--text);border-color:var(--stroke)}
.pagi .pg.is-on{background:var(--primary-soft);border-color:var(--primary-ring);color:#BBD4FF;font-weight:700}
.pagi .pg.is-dots{border-color:transparent;background:transparent;color:var(--text-faint);pointer-events:none}
.pagi .pg.is-off{opacity:.4;pointer-events:none}

/* دکمه‌ی درحالِ ارسال (جلوگیری از دابل‌کلیک) — app.js کلاسِ is-loading می‌گذارد */
.btn.is-loading, button.is-loading{color:transparent!important;pointer-events:none;position:relative}
.btn.is-loading::after, button.is-loading::after{content:"";position:absolute;top:50%;left:50%;width:15px;height:15px;margin:-8px 0 0 -8px;
  border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:btnspin .6s linear infinite}
button:disabled, .btn:disabled{opacity:.6;cursor:not-allowed}
@keyframes btnspin{to{transform:rotate(360deg)}}

/* دراپ‌داونِ غنیِ باز باید بالای سکشن/کارت‌های بعدی بیفتد (z-index در stacking contextِ .glass) */
.rs.rs-open{z-index:90}
.card:has(.rs-open), section:has(.rs-open){position:relative;z-index:50}
/* نوارِ اکشنِ چسبانِ پایین (ذخیره/ذخیره‌وجدید) */
.form-actions{position:sticky;bottom:0;display:flex;gap:8px;justify-content:flex-end;align-items:center;
  padding:12px 14px;margin-top:14px;border-radius:var(--r-sm);background:var(--glass);border:1px solid var(--stroke-soft);backdrop-filter:blur(8px);z-index:45}

/* دراپ‌داونِ غنی در نوارِ ویرایشِ گروهیِ تراکنش‌ها (چسبانِ پایین) → به‌جای پایین، بالا باز شود */
#bulkbar{z-index:60}
#bulkbar .rs-menu{top:auto;bottom:calc(100% + 6px)}

/* ستونِ «شرح سند» — همیشه تک‌خطی، دکمهٔ تفکیک (⑂) کنارِ متن می‌ماند نه خطِ دوم */
table.sheet td.tx-desc{text-align:right;white-space:nowrap;max-width:240px}
.tx-desc-tx{display:inline-block;max-width:180px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:middle}
/* روی مانیتورهای بزرگ شرح سند تا جای بیشتری باز شود */
@media(min-width:1400px){table.sheet td.tx-desc{max-width:380px}.tx-desc-tx{max-width:320px}}
@media(min-width:1700px){table.sheet td.tx-desc{max-width:560px}.tx-desc-tx{max-width:500px}}
.tx-split-btn{margin-inline-start:5px;vertical-align:middle;flex:none}
/* بابتِ چندانتخابیِ درون‌جدولِ تراکنش‌ها — تک‌خطیِ فشرده، ستونِ باریک‌تر (خواستِ کاربر) */
table.sheet td.txcat-cell{max-width:150px}
.txcat-wrap{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;min-width:96px;max-width:100%;overflow:hidden}
.txcat-chip{flex:none;max-width:104px;white-space:nowrap;
  font-size:10.5px;padding:2px 8px;gap:4px;display:inline-flex;align-items:center;line-height:1.5;border-radius:var(--r-full)}
/* نامِ بابت کوتاه (…) می‌شود ولی × همیشه داخلِ چیپ دیده می‌شود (بیرون نمی‌زند) */
.txcat-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.txcat-x{cursor:pointer;opacity:.5;font-style:normal;font-size:11px;flex:none}
.txcat-x:hover{opacity:1;color:var(--danger)}
.txcat-add{flex:1;min-width:30px;width:auto;border:0;background:transparent;color:var(--text-faint);
  font-size:11px;outline:none;font-family:inherit;padding:2px 0}
.txcat-add::placeholder{color:var(--text-faint);opacity:.7}

/* ═══ فاز ۱ (جزئی): جدولِ متراکم‌تر شبیه گوگل‌شیت + اسکرولِ واضح‌تر ═══ */
/* جدول‌های معمولی: پدینگِ کمتر */
tbody td{padding:7px 12px}
thead th{padding:8px 12px}
/* جدولِ شیت: اینپوت تمام‌عرضِ سلول (پدینگ داخلِ اینپوت، نه سلول) */
table.sheet td.edit{padding:0}
table.sheet td.edit select,table.sheet td.edit input,table.sheet td.edit .rs,table.sheet td.edit .txcat-wrap{width:100%;height:100%}
table.sheet td.edit select,table.sheet td.edit input{padding:7px 9px;font-size:12.5px}
table.sheet td:not(.edit){padding:6px 9px}
/* نشانگرِ اسکرولِ افقی: اسکرول‌بارِ همیشه‌دیده با ترَکِ مشخص (نه محوشدگیِ لبه که
   قبلاً روی محتوا می‌افتاد — چون position:absolute داخلِ خودِ کانتینرِ اسکرولی بود
   و با اسکرول جابه‌جا می‌شد). ترَکِ روشن یعنی «این‌جا اسکرول می‌شود». */
.sheet-wrap,.tscroll,.tsheet-wrap{scrollbar-width:thin;scrollbar-color:var(--stroke) transparent}
.sheet-wrap::-webkit-scrollbar,.tscroll::-webkit-scrollbar,.tsheet-wrap::-webkit-scrollbar{height:12px}
.sheet-wrap::-webkit-scrollbar-track,.tscroll::-webkit-scrollbar-track,.tsheet-wrap::-webkit-scrollbar-track{
  background:var(--fill);border-radius:99px;margin:0 2px}
.sheet-wrap::-webkit-scrollbar-thumb,.tscroll::-webkit-scrollbar-thumb,.tsheet-wrap::-webkit-scrollbar-thumb{
  background:var(--stroke);border-radius:99px;border:3px solid transparent;background-clip:padding-box;min-width:44px}
.sheet-wrap::-webkit-scrollbar-thumb:hover,.tscroll::-webkit-scrollbar-thumb:hover,.tsheet-wrap::-webkit-scrollbar-thumb:hover{
  background:var(--primary)}
/* هاله‌های لبه‌ای «بیشتر هست، اسکرول کن» — به لبهٔ دیدهٔ کانتینر می‌چسبند (لایه‌های
   scroll)، نه وسطِ جدول، و با ماسکِ هم‌رنگِ کارت (لایه‌های local) در دو انتهای مسیر
   محو می‌شوند. جایگزینِ فِیدِ باگ‌دارِ قبلی که position:absolute داشت و با اسکرول
   روی محتوا می‌افتاد. */
.sheet-wrap,.tscroll,.tsheet-wrap{
  background:
    linear-gradient(to right,var(--card-solid),transparent) 0 0/34px 100% no-repeat local,
    linear-gradient(to left,var(--card-solid),transparent) 100% 0/34px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%,rgba(79,118,246,.35),transparent) 0 0/20px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%,rgba(79,118,246,.35),transparent) 100% 0/20px 100% no-repeat scroll;
}
/* نوارِ تب/حسابداری: همیشه اسکرولِ افقی، هیچ‌وقت شکستِ صفحه */
.fin-nav,.settings-nav{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:thin}
.fin-nav a,.settings-nav a{white-space:nowrap;flex:none}
.fin-nav::-webkit-scrollbar,.settings-nav::-webkit-scrollbar{height:0}

/* ═══ فاز ۲ (بازطراحی): منوی ثابتِ باریک شبیهِ کلیک‌اپ — آیکن + برچسبِ کوچکِ زیرش،
   بدونِ هاور/بازشدن. سایدبار در فلوِ گرید می‌ماند (sticky)، نه fixed. ═══ */
@media(min-width:1101px){
  .shell{grid-template-columns:82px 1fr}
  .side{width:82px;padding:12px 6px}
  .brand{justify-content:center;padding:2px 0 12px}
  .brand>div{display:none}                       /* فقط نشانِ برند، بدونِ متن */
  /* آیتم‌ها: آیکن بالا، برچسبِ ریزِ وسط‌چینِ زیرش */
  .side .nav a,.side .nav-logout-form button{
    flex-direction:column;
    gap:5px;
    padding: 9px 2px;
    font-size:9.5px;
    line-height:1.15;
    border-radius:12px;
    margin-bottom: 8px;
    position:relative;
  }
  .side .nav .ico{font-size: 28px;width:auto;}
  /* بجِ شمارش (بازبینی) مثلِ نوتیفیکیشن روی گوشهٔ آیکن می‌نشیند، نه زیرِ متن */
  .side .nav a .nav-badge{position:absolute;top:4px;left:50%;transform:translateX(7px);margin:0;
    min-width:16px;height:16px;padding:0 3px;font-size:9px;box-shadow:0 0 0 2px var(--bg)}
  .side .nav a.on{background:var(--primary-soft)}
  .side .nav a.on .ico{opacity:1}
  .side .nav a.on::after{display:none}           /* نوارِ کنارهٔ حالتِ فعال حذف */
  /* برچسبِ بخش‌ها → جداکنندهٔ نازک (بدونِ متن) */
  .side .nav-label{font-size:0;height:1px;margin:8px 12px;padding:0;background:var(--stroke-soft)}
  /* همکاران: فقط آواتار + وضعیتِ آنلاین */
  .side .side-att{gap:8px;padding:6px 0;align-items:center;max-height:none;overflow:visible}
  .side .satt{justify-content:center;padding:2px 0;gap:0}
  .side .satt-main,.side .satt-sum,.side .satt-task,.side .satt-tl{display:none!important}
  .side .satt .wt-avwrap{width:32px;height:32px}
}

/* ═══ فاز ۳: نمای گوگل‌شیتِ سراسری + ریسپانسیوِ جدول‌ها ═══ */
/* هر جدولِ سادهٔ داخلِ کارت (نه .sheet/.tsheet که خودشان خط‌کشی دارند) خط‌کشیِ
   عمودیِ ملایمِ سلولی می‌گیرد تا کلِ سایت یکدست شبیهِ صفحه‌گسترده شود. */
.card.glass table:not(.sheet):not(.tsheet) thead th,
.card.glass table:not(.sheet):not(.tsheet) tbody td{border-inline:1px solid var(--stroke-soft)}
.card.glass table:not(.sheet):not(.tsheet) tr>*:first-child{border-inline-start:0}
.card.glass table:not(.sheet):not(.tsheet) tr>*:last-child{border-inline-end:0}
.card.glass table:not(.sheet):not(.tsheet) tbody td{vertical-align:middle}
.card.glass td.num-c,.card.glass td.num{font-variant-numeric:tabular-nums}
/* ── جدولِ ویرایشِ گزارش (.rep-edit): سلول = فیلد (۱۰۰٪ عرض، بدونِ پدینگِ سلول)،
      هم‌راستا با هدر — مثلِ جدولِ ویرایشیِ تسک‌ها (خواستِ کاربر، #18). ── */
.rep-edit{width:100%;border-collapse:collapse}
.rep-edit thead th{padding:8px 10px;font-size:12px;color:var(--text-dim);text-align:start}
.rep-edit thead th.ri-c{text-align:center}
.rep-edit tbody td{padding:0;vertical-align:middle}
.rep-edit td.ri-title{padding:2px 8px}
.rep-edit td.ri-act{padding:4px 8px;white-space:nowrap;text-align:center}
.rep-edit .ri-ttl{outline:none;display:inline-block;min-width:60px;vertical-align:middle;line-height:1.5}
.rep-edit .ri-in{width:100%;max-width:none;box-sizing:border-box;background:transparent;border:1px solid transparent;border-radius:0;color:inherit;font:inherit;font-size:12.5px;padding:9px 10px}
.rep-edit .ri-in:hover{border-color:var(--stroke-soft)}
.rep-edit .ri-in:focus{border-color:var(--primary-ring);background:var(--fill);outline:none;position:relative;z-index:1}
.rep-edit td.ri-c .ri-in{text-align:center}
.rep-edit select.ri-in{cursor:pointer}
/* لینکِ ردیفِ دستی: اینپوتِ کوچکِ درون‌خطیِ سلولِ عنوان (نه تمام‌سلول) */
.rep-edit .ri-url{width:auto;max-width:200px;display:inline-block;margin-inline-start:6px;padding:4px 8px;border:1px solid var(--stroke-soft);border-radius:6px;vertical-align:middle;font-size:12px}
/* wrapperِ اسکرولِ افقیِ داخلِ کارت — چون .card خودش overflow:hidden است، جدولِ
   عریض روی موبایل بریده می‌شد و صفحه افقی می‌شد؛ این wrapper اسکرول را داخلِ خودش
   نگه می‌دارد (قاعدهٔ طلایی: بدنهٔ صفحه هیچ‌وقت افقی اسکرول نشود). */
.tscroll{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}
/* اسکرول‌بارِ .tscroll از بلوکِ یکپارچهٔ بالا می‌آید (ترَکِ دیده‌شونده) */
/* فیلترها/نوارها روی صفحهٔ کوچک بشکنند، نه سرریز کنند */
.filters{flex-wrap:wrap}
/* زیرتب‌های سینگلِ پروژه (جدول‌های رتبهٔ کلمه/لینک) خودشان اسکرولِ افقی بگیرند */
.subtab-panel{overflow-x:auto;scrollbar-width:thin}
@media(max-width:640px){
  .card.glass table:not(.sheet):not(.tsheet){min-width:640px}  /* اسکرول به‌جای فشرده‌شدنِ ناخوانا */
  .stats{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}

/* ═══ بردِ سئوِ پروژه (سکشن‌های ماهِ گزارش، حالتِ شیت) ═══ */
.seo-sheet{min-width:640px}
.seo-drag{cursor:grab;color:var(--text-faint);text-align:center;user-select:none}
.seo-drag:active{cursor:grabbing}
.seo-row[draggable=true]:hover .seo-drag{color:var(--primary-400)}
/* اینپوتِ «افزودن ایده/تسک» — بردِ سئو حالا `.tsheet` است نه `.seo-sheet`؛ اگر فقط
   `.seo-sheet` اسکوپ بماند اینپوت استایل نمی‌گیرد و سفید/بهم‌ریخته می‌شود (باگِ رفع‌شده) */
.tsheet .seo-newtask,.seo-sheet .seo-newtask{width:100%;background:transparent;border:0;color:var(--text);font-family:inherit;font-size:12.5px;padding:7px 9px;outline:none}
.tsheet .seo-newtask::placeholder,.seo-sheet .seo-newtask::placeholder{color:var(--text-faint)}
.seo-addrow td{background:rgba(79,118,246,.04)}
.seo-addrow:hover td{background:rgba(79,118,246,.07)}
.tsheet td.edit .jdate,.seo-sheet td.edit .jdate{cursor:pointer}

/* ═══ ستون‌های جدولِ تسک: عرضِ هوشمند + نوعِ ویرایشی + ویرایشِ inlineِ سفارشی ═══ */
/* عنوان تمامِ فضای اضافی را می‌گیرد؛ بقیهٔ ستون‌ها فقط به‌اندازهٔ محتوا (نه بیشتر) */
.tsheet .th-title{min-width:200px}
.tsheet .nowrap-c,.tsheet th.nowrap-c{white-space:nowrap}
/* دراپ‌داونِ نوع: فشرده، فقط به‌اندازهٔ محتوا (زیاد جا نگیرد) */
.ttype-sel{max-width:74px;font-size:10px;font-weight:600;padding:2px 3px;border:1px solid var(--stroke-soft);
  border-radius:var(--r-full);background:var(--fill);cursor:pointer;flex:none}
.ttype-sel:hover{border-color:var(--stroke)}
.tcell{display:flex;align-items:center;gap:6px;min-width:220px}
/* اینپوتِ عنوان فضای باقی‌ماندهٔ سلول را می‌گیرد (نه عرضِ ثابت) */
.tcell .ttl-in{flex:1;min-width:80px;text-overflow:ellipsis}
.row-open{cursor:pointer;flex:none;opacity:.55;font-size:12px;transition:opacity .12s}
.row-open:hover{opacity:1}
/* متنِ عنوان در حالتِ فقط‌خواندنی: کوتاه‌شونده با ... */
.ttl-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
/* آیکنِ لینکِ صفحه/انتشار در انتهای عنوان (به‌جای ستونِ جدا) */
.lnk-icon{flex:none;text-decoration:none;font-size:12px;opacity:.7;transition:opacity .12s}
.lnk-icon:hover{opacity:1}
/* وضعیت: دراپ‌داون + «— امروز» همیشه یک‌خطی و کاملاً خوانا (بدونِ بریدنِ «در انتظار») */
.status-wrap{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.tsheet .row-status{min-width:104px}
.done-when{white-space:nowrap}
/* همهٔ سلول‌های جدولِ تسک وسط‌چینِ عمودی — تا عنوان/زمان با فیلدهای بلندتر هم‌ارتفاع دیده شوند */
.tsheet tbody td{vertical-align:middle}
/* سلولِ فیلدِ سفارشیِ ویرایشی (وقتی نوع انتخاب شده) */
.dcell{min-width:130px;max-width:240px}
.dcell .cf-inline{width:100%;min-width:80px}
/* «تعداد کلمه» و اعدادِ سفارشی: باریک، نه تمام‌عرضِ سلول */
.dcell input.cf-inline[type=number]{max-width:96px}
.dcell:has(input.cf-inline[type=number]){min-width:0;max-width:110px}
/* نوعِ تسک فشرده‌تر تا ستونِ عنوان بی‌جهت عریض نشود */
.ttype-sel{max-width:64px}
.dcell input.cf-inline[type=checkbox]{width:auto;min-width:0}
/* توضیحاتِ inline + هر فیلدِ textareaِ سفارشی: ارتفاعِ ~۳ خط، قابلِ کشیدن */
.cf-desc,.cf-ta{width:100%;min-width:170px;min-height:58px;max-height:200px;resize:vertical;
  background:transparent;border:1px solid transparent;border-radius:6px;color:inherit;
  font:inherit;font-size:12px;padding:4px 6px;line-height:1.6;white-space:pre-wrap}
.cf-desc:hover,.cf-ta:hover{border-color:var(--stroke-soft)}
.cf-desc:focus,.cf-ta:focus{border-color:var(--primary-ring);background:var(--fill);outline:none}
/* سلولِ فیلدِ سفارشیِ textarea کمی عریض‌تر تا ۳ خط جا شود */
.dcell:has(.cf-ta){min-width:210px}
/* شماره‌گذاریِ خودکارِ خطوط (۱-۲-۳) کنارِ textareaهای «هر مورد در یک خط» */
.ta-wrap{position:relative;width:100%}
.ta-wrap .cf-ta{padding-inline-start:26px}
.ta-gut{position:absolute;top:0;inset-inline-start:0;width:22px;height:100%;overflow:hidden;
  box-sizing:border-box;padding:4px 3px;font:inherit;font-size:12px;line-height:1.6;
  text-align:center;color:var(--text-faint);background:var(--fill);
  border-inline-end:1px solid var(--stroke-soft);white-space:pre;pointer-events:none;
  direction:ltr;border-radius:6px 0 0 6px;user-select:none}
/* textareaهای مودال (توضیح/انکر/لینک و مشابه) بوردرِ دائمی بگیرند تا از پس‌زمینه جدا شوند */
.tmodal .cf-ta{border-color:var(--stroke-soft);background:var(--fill)}
.tmodal .ta-wrap{border:1px solid var(--stroke-soft);background:var(--fill);border-radius:6px;overflow:hidden}
.tmodal .ta-wrap .cf-ta{border-color:transparent;background:transparent}
/* اخطارِ نرمِ «فیلدهای الزامیِ خالی» — قرمز، هاور=جزئیات (ذخیره را بلاک نمی‌کند) */
.miss-req{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger);
  cursor:help;white-space:nowrap;margin-inline-start:4px}
/* فیلدِ کلمهٔ کلیدی/مترادف — تک‌فیلد، جدا با «-»، جداکنندهٔ رنگی (مودال + اینلاین) */
.kwfield{min-height:36px;background:var(--fill);border:1px solid var(--stroke-soft);border-radius:8px;
  padding:7px 10px;color:var(--text);font:inherit;font-size:13px;line-height:2;
  white-space:pre-wrap;word-break:break-word;outline:none;cursor:text;width:100%}
.kwfield:focus{border-color:var(--primary-ring);background:var(--fill-strong)}
.kwfield:empty:before{content:attr(data-ph);color:var(--text-faint);pointer-events:none}
/* جداکنندهٔ «-» رنگی + فاصلهٔ دو طرف تا کلمه‌ها موقعِ تایپ واضح جدا دیده شوند */
.kw-sep{color:var(--primary-400);font-weight:800;padding:0 8px;user-select:none}
/* نسخهٔ فشردهٔ درون‌جدولیِ کلمهٔ کلیدی */
.cf-kw{min-height:30px;padding:4px 7px;font-size:12px;line-height:1.9;min-width:170px;
  background:transparent;border-color:transparent}
.cf-kw:hover{border-color:var(--stroke-soft)}
.cf-kw:focus{border-color:var(--primary-ring);background:var(--fill)}

/* ── تگ‌باکسِ درون‌جدولی (کلمات کلیدی/مترادف) — تک‌خطی، ارتفاعِ ردیف را زیاد نمی‌کند ── */
.cf-tags{display:flex;align-items:center;gap:4px;position:relative;max-width:100%}
.cf-tags .ctag-list{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow-x:auto;
  min-width:0;scrollbar-width:none}
.cf-tags .ctag-list::-webkit-scrollbar{height:0;width:0}
.cf-tags .ctag{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;padding:1px 4px 1px 6px;
  border-radius:var(--r-full);background:var(--primary-soft);color:var(--primary-400);white-space:nowrap;flex:none}
.cf-tags .ctag-x{cursor:pointer;opacity:.65;font-style:normal;font-size:12px;line-height:1}
.cf-tags .ctag-x:hover{opacity:1;color:var(--danger)}
.cf-tags .ctag-add{border:1px dashed var(--stroke-soft);background:transparent;color:var(--text-dim);
  width:18px;height:18px;border-radius:50%;cursor:pointer;font-size:11px;line-height:1;display:grid;place-items:center;flex:none}
.cf-tags .ctag-add:hover{border-color:var(--primary-ring);color:var(--primary-400)}
/* دراپ‌داونِ کوچکِ افزودن (کمی پایین‌تر، روی محتوا، بدونِ به‌هم‌ریختنِ جدول) */
.ctag-pop{position:absolute;top:100%;right:0;margin-top:4px;z-index:40;display:flex;gap:5px;
  background:var(--card-solid);border:1px solid var(--stroke);border-radius:var(--r-sm);
  padding:6px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.ctag-pop input{width:130px;font-size:12px;padding:4px 7px}
.ctag-pop button{border:0;background:var(--primary);color:#fff;border-radius:var(--r-sm);padding:0 10px;cursor:pointer;font-size:12px}

/* ═══ تاریخِ نسبی در جدولِ تسک (امروز/فردا/۳ روز بعد) ═══ */
.reldate-cell{position:relative;min-width:98px}
.reldate-label{display:block;padding:6px 9px;cursor:pointer;white-space:nowrap;color:var(--text);transition:opacity .1s}
/* اینپوتِ تاریخ روی برچسب می‌آید؛ پس‌زمینه‌ی توپُر می‌گیرد تا متنِ برچسب از زیرش دیده نشود
   (باگِ «تاریخ و برچسب روی هم می‌افتند») + برچسب موقعِ هاور محو می‌شود */
.reldate-cell .reldate-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;background:var(--card-solid);padding:6px 9px}
.reldate-cell:hover .reldate-input,.reldate-cell:focus-within .reldate-input{opacity:1;z-index:2}
.reldate-cell:hover .reldate-label,.reldate-cell:focus-within .reldate-label{opacity:0}
.reldate-ro{white-space:nowrap}
.reldate-ro [title]{cursor:default}
/* برچسبِ نسبیِ کنارِ تاریخ در مودال */
.rel-hint{font-size:11px;color:var(--primary-400);margin-inline-start:8px}

/* ── جداکنندهٔ روز در جدولِ تسک (چند پیکسل فاصله بینِ روزهای مختلف) ── */
/* فاصلهٔ بینِ روزهای تسک: ۱۰px، هم‌رنگِ بکگراندِ کلِ سایت (لایت و دارک هر دو از --bg) */
.tsheet tr.day-gap>td{height:10px!important;padding:0!important;border:0!important;background:var(--bg)!important}

/* ── ردیف‌های فرزند (اجزای حقوق در گزارش / اسپلیتِ تراکنش) ── */
.split-child td{background:color-mix(in srgb,var(--primary) 4%,transparent);font-size:12px}
.split-child .split-mark{color:var(--text-faint);margin-inline-end:2px}

/* ── تفکیکِ روزانه: تیترِ نسبیِ بزرگ + تاریخِ خامِ کوچک (داشبورد + /tasks/?group=day) ── */
.day-group{margin-top:14px}
.day-group:first-child{margin-top:2px}
.day-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;font-size:12.5px}
.day-head b{color:var(--text);font-size:14px}
.day-head .day-date{color:var(--text-faint);font-size:11px}

/* ═══ مودالِ تسک: تک‌ستونه و خلوت (الهام از گوگل‌کلندر؛ بخش‌های اختیاری با تولبار باز می‌شوند) ═══ */
.modal:has(.tmodal){max-width:720px;width:94vw;height:auto;max-height:92vh}
.tmodal-col{display:flex;flex-direction:column}
.tmodal .tm-title{font-size:15px;font-weight:600;padding:8px 10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media(max-width:560px){.grid3{grid-template-columns:1fr}}
.tm-review{display:flex;align-items:center;gap:8px;margin:2px 0 6px;cursor:pointer;font-size:12.5px;color:var(--text-dim)}
.tm-review input{flex:none}
/* تولبارِ بخش‌های اختیاری */
.topt-bar{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 2px;padding-top:12px;border-top:1px solid var(--stroke-soft)}
.topt{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:99px;border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text-dim);cursor:pointer;font-size:12.5px;font-family:inherit;line-height:1}
.topt:hover{border-color:var(--stroke);color:var(--text)}
.topt.on{background:var(--primary-soft);border-color:var(--primary-ring);color:var(--primary-400)}
.topt-ic{width:14px;height:14px;flex:none;display:block}
.topt-count{background:var(--fill-strong);color:var(--text-dim);border-radius:99px;padding:0 6px;font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums}
.topt.on .topt-count{background:rgba(99,102,241,.22);color:var(--primary-400)}
.topt-sec{margin-top:10px}

/* جمعِ ساعتِ کاریِ سلولِ تقویم (کنارِ تعدادِ تسک) */
.cnt-h{font-size:9.5px;color:var(--primary-400);background:var(--primary-soft);border-radius:99px;padding:1px 6px;margin-inline-start:3px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ═══ فضای شخصی (/personal/) — فقط سوپریوزر ═══ */
.pers{display:flex;flex-direction:column;gap:16px}
.pers-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:900px){.pers-grid2{grid-template-columns:1fr}}
.pers-box{padding:16px}
.pers-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.pers-head h3{margin:0;font-size:15px}
.pers-week{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}
.pers-week-lab{white-space:nowrap}
.pers-list{display:flex;flex-direction:column;gap:4px;min-height:40px}
.pers-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:var(--r-sm);background:var(--fill);border:1px solid var(--stroke-soft)}
.pers-row:hover{background:var(--fill-strong)}
.pers-row .pt-done{width:auto;flex:none}
.pt-title{flex:1;cursor:pointer;font-size:13px}
.pt-title.is-done{text-decoration:line-through;color:var(--text-dim)}
.pt-plan{font-size:11px;color:var(--text-dim)}
.pt-x{flex:none;border:0;background:transparent;color:var(--text-dim);cursor:pointer;font-size:17px;line-height:1}
.pt-x:hover{color:var(--danger)}
.pt-grip{cursor:grab;color:var(--text-faint);font-size:12px}
.pt-play{flex:none;border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text);border-radius:var(--r-full);width:24px;height:24px;cursor:pointer;font-size:11px}
.pt-play.on{background:var(--success);color:#052; border-color:transparent}
.pers-drag.dragging{opacity:.5}
.pers-sys{cursor:pointer;opacity:.9}
.pt-sysdot{width:8px;height:8px;border-radius:50%;flex:none}
.pt-proj{font-size:11px;color:var(--text-dim)}
.pers-add{display:flex;gap:8px;margin-top:10px}
.pers-add .input{flex:1}
.pers-plan-input{max-width:120px;flex:none}
/* هبیت */
.habit-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 4px;border-bottom:1px solid var(--stroke-soft);flex-wrap:wrap}
.habit-row:last-child{border-bottom:0}
.habit-info{display:flex;align-items:center;gap:8px;min-width:180px}
.habit-dot{width:10px;height:10px;border-radius:50%;flex:none}
.habit-dot.good{background:var(--success)}
.habit-dot.bad{background:var(--danger)}
.habit-title{cursor:pointer;font-size:13px}
.habit-pct{font-size:12px;color:var(--text-dim);margin-inline-start:4px}
.habit-days{display:flex;gap:5px}
.habit-cell{width:34px;height:40px;border-radius:var(--r-sm);border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text-dim);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;font-size:10px}
.habit-cell.off{opacity:.35;background:transparent}
.habit-cell.active{color:var(--text)}
.habit-cell.done{background:var(--success);color:#052;border-color:transparent}
.habit-cell.today{outline:2px solid var(--primary);outline-offset:1px}
.habit-cell.future{opacity:.3;cursor:default}
.habit-cell .hc-mark{font-size:12px;font-weight:700}
/* اهداف */
.goal-row{padding:10px 0;border-bottom:1px solid var(--stroke-soft)}
.goal-row:last-child{border-bottom:0}
.goal-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.goal-title{cursor:pointer;font-size:13px}
.goal-meta{font-size:11px;color:var(--text-dim)}
.goal-desc{font-size:12px;color:var(--text-dim);margin:4px 0 6px}
.goal-bar{height:8px;border-radius:var(--r-full);background:var(--fill-strong);overflow:hidden;margin-top:6px}
.goal-bar i{display:block;height:100%;background:var(--accent-grad)}
.goal-dates{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim);margin-top:4px}
/* عمر */
.pers-life .life-main{text-align:center;padding:6px 0}
.life-num{font-size:26px;font-weight:800}
.life-sub{font-size:12px;color:var(--text-dim);margin-bottom:12px}
.life-bar{height:12px;border-radius:var(--r-full);background:var(--fill-strong);overflow:hidden}
.life-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--success),var(--warning),var(--danger))}
.life-row{display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);margin-top:6px}
.life-tick{font-family:monospace;font-size:15px;margin-top:10px;color:var(--amber-fg)}
.life-motto{font-size:12px;color:var(--text-dim);margin-top:12px;line-height:1.7}
/* چیپ‌های مودالِ عادت */
.wd-row,.pol-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.wd-chip,.pol-opt{padding:6px 12px;border-radius:var(--r-full);border:1px solid var(--stroke-soft);background:var(--fill);cursor:pointer;font-size:12px}
.wd-chip.on{background:var(--primary);color:#fff;border-color:transparent}
.pol-opt.good.on{background:var(--success);color:#052;border-color:transparent}
.pol-opt.bad.on{background:var(--danger);color:#fff;border-color:transparent}

/* فضای شخصی — افزوده‌های نسخهٔ ۲ (درصد، ردیفِ کم‌رنگ، تاریخِ inline، عمر) */
.pers-prog{position:relative;height:20px;border-radius:var(--r-full);background:var(--fill-strong);overflow:hidden;margin-bottom:12px}
.pers-prog>i{position:absolute;inset-inline-start:0;top:0;bottom:0;background:var(--accent-grad);transition:width .3s}
.pers-prog>b{position:relative;z-index:1;display:block;text-align:center;font-size:11px;line-height:20px;font-weight:700}
.pers-row.dim{opacity:.5}
.pers-row .pt-date{flex:none;max-width:120px;font-size:11px;padding:4px 6px;background:transparent;border:1px dashed var(--stroke-soft);color:var(--text-dim);cursor:pointer}
.pers-row .pt-date:hover{border-style:solid}
/* دکمه‌های ناوبریِ هفته/روز در فضای شخصی: چون <a>اند (نه <button>)، باید صریح
   inline-flex شوند وگرنه width/height بی‌اثر و آیکن از کادر بیرون می‌زند. */
.pers-week .nav-b{display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;flex:none;text-decoration:none;padding:0}
.pers-week{flex-wrap:wrap}
.life-count{font-size:18px;font-weight:800;line-height:1.9;direction:rtl}

.side-c {
    display: flex;
    gap: 10px;
}
.nav svg {
    width: 20px;
    margin-bottom: 3px;
}

/* فضای شخصی — نسخهٔ ۳: نمودارِ روزانه + انتقال‌به‌فردا + تخمین + کپی‌پیستِ موبایل */
.pchart{margin-bottom:12px;background:var(--fill);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);padding:10px}
.pchart-nav{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px;font-size:12px;color:var(--text-dim)}
.pchart-bars{display:flex;gap:4px;align-items:flex-end}
.pchart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;border-radius:6px;padding:4px 2px}
.pchart-col.sel{background:var(--fill-strong)}
.pchart-col.future{opacity:.4}
.pchart-val{font-size:10px;color:var(--text-dim);direction:ltr}
.pchart-track{position:relative;width:16px;height:64px;background:var(--fill-strong);border-radius:var(--r-full);overflow:hidden}
.pchart-track>i{position:absolute;inset-inline:0;bottom:0;background:var(--accent-grad);border-radius:var(--r-full)}
.pchart-col.today .pchart-track{outline:2px solid var(--primary);outline-offset:1px}
.pchart-hr{font-size:9px;color:var(--text-faint)}
.pchart-dname{font-size:11px;font-weight:700}
.pchart-col.today .pchart-dname{color:var(--primary-400)}
.pt-move{flex:none;border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text-dim);border-radius:var(--r-full);
  font-size:10px;padding:2px 7px;cursor:pointer;white-space:nowrap}
.pt-move:hover{background:var(--fill-strong);color:var(--text)}
.pt-est{flex:none;font-size:10px;color:var(--amber-fg);white-space:nowrap}
/* موبایل: انتخاب/کپی/پیستِ متن در ادیتورها و متن‌های نمایشی */
.rich-editor,.rich,.report-body,.goal-desc,[contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.modal input,.modal textarea{-webkit-user-select:text;user-select:text}

/* فضای شخصی — دکمهٔ بازگشت به اینباکس + هایلایتِ مقصدِ درگ */
.pt-unplan{flex:none;border:1px solid var(--stroke-soft);background:var(--fill);color:var(--text-dim);
  border-radius:var(--r-full);width:24px;height:24px;cursor:pointer;font-size:12px;line-height:1}
.pt-unplan:hover{background:var(--fill-strong);color:var(--text)}
.pers-list.drop-hi{outline:2px dashed var(--primary);outline-offset:2px;border-radius:var(--r-sm)}
.pt-time{flex:none;font-size:11px;color:var(--text-dim);white-space:nowrap;font-variant-numeric:tabular-nums}
.pt-est{flex:none;font-size:10px;color:var(--amber-fg);white-space:nowrap}

/* چک‌باکسِ سفارشیِ سراسری — قشنگ‌تر و هماهنگ با تم (accent + اندازه + گردی) */
input[type=checkbox]{
  appearance:none;-webkit-appearance:none;flex:none;
  width:18px;height:18px;border:1.5px solid var(--stroke);border-radius:5px;
  background:var(--fill);cursor:pointer;position:relative;vertical-align:middle;
  transition:background .12s,border-color .12s}
input[type=checkbox]:hover{border-color:var(--primary-400)}
input[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}
input[type=checkbox]:checked::after{
  content:'';position:absolute;inset-inline-start:5px;top:1px;width:5px;height:9px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
input[type=checkbox]:disabled{opacity:.5;cursor:default}

/* سلولِ آواتارِ مسئول + لوگوی پروژه (جدولِ فقط‌خواندنی، بدونِ نام) */
.idcell{white-space:nowrap}
.idcell img,.idcell .fb,.idcell .avatar,.idcell .logo,.idcell>span{vertical-align:middle;display:inline-flex}
.idcell>*+*{margin-inline-start:5px}

/* مودالِ تسک: ردیفِ ۴ستونه + چک‌لیستِ بازطراحی‌شده */
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media(max-width:1100px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.grid4{grid-template-columns:1fr}}
.ck-field{display:flex;align-items:center;flex:1;background:var(--fill);border:1px solid var(--stroke-soft);border-radius:var(--r-sm);overflow:hidden}
.ck-field .ck-text{flex:1;border:0;background:transparent;color:var(--text);padding:7px 9px;font-family:inherit;font-size:13px;outline:none;min-width:0}
.ck-field .ck-plus,.ck-field .ck-x{flex:none;border:0;background:transparent;cursor:pointer;font-size:14px;line-height:1;padding:0 8px;color:var(--text-dim)}
.ck-field .ck-plus:hover{color:var(--success)}
.ck-field .ck-x:hover{color:var(--danger)}
.ck-row{display:flex;align-items:center;gap:8px}

/* اهداف: انتخابگرِ ردیف + آیکن‌ها + مودالِ جزئیات */
/* انتخابگرِ هدف: آیکنِ SVGِ رنگی + selectِ نامرئیِ روی آن (بدونِ فلشِ دراپ‌داون) */
.pt-goal-wrap{position:relative;width:22px;height:22px;flex:none;display:inline-flex}
.pt-goal-ic{width:22px;height:22px;color:var(--gc,var(--text-faint));pointer-events:none}
.pt-goal{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none;border:0;padding:0}
.goal-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-inline-end:6px;vertical-align:middle;flex:none}
.g-color{padding:2px;height:34px;cursor:pointer}
.gd-meta{font-size:12px;color:var(--text-dim);margin-bottom:8px}
.gd-desc{font-size:13px;margin-bottom:6px}
.gt-list{display:flex;flex-direction:column;gap:5px}
.gt-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:var(--r-sm);background:var(--fill);border:1px solid var(--stroke-soft)}
.gt-row.dragging{opacity:.5}
.gt-grip{cursor:grab;color:var(--text-faint);font-size:12px}
.gt-title{flex:1;font-size:13px}
.gt-title.is-done{text-decoration:line-through;color:var(--text-dim)}
.gt-x{flex:none;border:0;background:transparent;color:var(--text-dim);cursor:pointer;font-size:16px;line-height:1}
.gt-x:hover{color:var(--danger)}
.goal-row{cursor:pointer}

/* مودالِ تسک: فشرده و مینیمال (تک‌ستونه) بدونِ سرریزِ دراپ‌داون */
.modal:has(.tmodal){max-width:720px}
.tmodal .field{margin-bottom:9px;min-width:0}
.tmodal .field>label{font-size:11px;color:var(--text-dim);margin-bottom:3px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tmodal .input,.tmodal select,.tmodal textarea{font-size:12.5px;padding:6px 8px;min-width:0;max-width:100%;width:100%}
.tmodal .grid4,.tmodal .grid3,.tmodal .grid2{gap:8px}
.tmodal .grid4>.field,.tmodal .grid3>.field,.tmodal .grid2>.field{min-width:0}
.tmodal .rs{min-width:0;max-width:100%;width:100%}
.tmodal .rs-btn{width:100%;min-width:0;max-width:100%;font-size:12.5px;padding:5px 8px;overflow:hidden}
.tmodal .rs-btn>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tmodal .field label{font-size:11px}
/* چک‌لیستِ مودال: چک‌باکسِ اندازه‌درست کنارِ اینپوت */
.ck-row .ck-done{flex:none}
#custom-fields{grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;align-items:start}
#custom-fields .field{margin-bottom:0}

/* هدرِ چسبانِ شناورِ جدول‌ها (sticky-thead.js) */
.thead-float{position:fixed;top:0;overflow:hidden;z-index:30;pointer-events:none;box-shadow:0 6px 16px rgba(0,0,0,.22)}
.thead-float table{border-collapse:collapse;background:var(--card-solid)}
.thead-float thead th{position:static;background:var(--card-solid)}

/* هم‌ارتفاع کردنِ فیلدهای مودال: native select و rich-select و input یک قد */
.tmodal select,.tmodal .rs-btn,.tmodal .input{height:34px;box-sizing:border-box}
.tmodal .rs-btn{display:flex;align-items:center}
.tmodal .rs-btn img,.tmodal .rs-btn .fb{width:18px;height:18px;border-radius:50%;flex:none}
.tmodal textarea{height:auto}

/* TinyMCE: آیکن‌های کوچک‌تر + نوارِ ابزار در تمِ روشن، روشن */
.tox .tox-editor-header{padding:2px 4px !important}
.tox .tox-toolbar__primary{padding:0 !important}
.tox .tox-tbtn{height:28px !important;width:30px !important;margin:0 1px !important}
.tox .tox-tbtn svg{transform:scale(.82)}
:root[data-theme="light"] .tox.tox-tinymce{border-color:#dfe3ee !important}
:root[data-theme="light"] .tox .tox-editor-header,
:root[data-theme="light"] .tox .tox-toolbar,
:root[data-theme="light"] .tox .tox-toolbar__primary,
:root[data-theme="light"] .tox .tox-toolbar__group{background:#f3f5fa !important;border-color:#e2e6f0 !important}
:root[data-theme="light"] .tox .tox-tbtn{color:#2b2f3a !important}
:root[data-theme="light"] .tox .tox-tbtn svg{fill:#2b2f3a !important}
:root[data-theme="light"] .tox .tox-tbtn:hover{background:#e4e8f2 !important}

/* ── زنگولهٔ اعلان‌ها (هدر) ── */
.notif-wrap{position:relative}
.notif-btn{position:relative;background:0;border:0;cursor:pointer;font-size:18px;line-height:1;padding:4px;border-radius:8px;transition:var(--ease)}
.notif-btn:hover{background:var(--glass-hover)}
.notif-badge{position:absolute;top:-2px;inset-inline-end:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;
  background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;line-height:1}
.notif-drop{position:absolute;top:calc(100% + 8px);inset-inline-end:0;z-index:200;width:320px;max-width:88vw;
  border:1px solid var(--stroke);border-radius:var(--r);box-shadow:var(--shadow-lg);padding:6px;display:none;background:var(--card-solid)}
.notif-drop.open{display:block}
.notif-h{font-size:12px;color:var(--text-faint);padding:6px 8px 8px}
.notif-list{max-height:60vh;overflow:auto;display:flex;flex-direction:column;gap:1px}
.notif-item{display:flex;align-items:flex-start;gap:8px;padding:9px 9px;border-radius:8px;color:var(--text);
  text-decoration:none;font-size:12.5px;line-height:1.5;transition:var(--ease)}
.notif-item:hover{background:var(--glass-hover)}
.notif-item.unread{background:var(--primary-soft)}
.notif-ico{flex:none;font-size:14px}
.notif-txt{min-width:0}
.notif-empty{padding:18px;text-align:center;color:var(--text-faint);font-size:12px}
/* بَجِ کوچکِ کنارِ لینکِ منو (بازبینی) */
.nav-badge{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;margin-inline-start:6px;
  border-radius:99px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;line-height:1}

/* ── برنامهٔ هفته (فضای شخصی): فهرستِ عمودیِ ۷ روز، درگ‌ودراپ بینِ روزها ──
   طراحیِ تمیز: روزهای غیرِفوکوس بی‌بوردر و کم‌رنگ (فقط جداکنندهٔ نازک)، فقط روزِ
   فوکوس بوردرِ primary می‌گیرد؛ اینپوتِ «＋کار» فقط روی روزِ فوکوس/هاور دیده می‌شود
   تا ۷ اینپوتِ خالی صفحه را شلوغ نکنند. */
.week-vgrid{display:flex;flex-direction:column}
.wday{display:flex;align-items:stretch;gap:10px;border-radius:8px;padding:6px 8px;opacity:.9;
  border:1px solid transparent;border-bottom-color:var(--stroke-soft);
  transition:opacity .15s,border-color .15s,background .15s}
.wday:last-child{border-bottom-color:transparent}
.wday.today{opacity:1}
.wday.sel{opacity:1;background:var(--fill);border-color:var(--primary-ring)}   /* روزِ فوکوس */
.wday.future{opacity:.75}
.wday.drop-hi{opacity:1;background:var(--glass-hover);border-color:var(--primary)}
.wday-head{flex:none;width:92px;display:flex;flex-direction:column;gap:1px;justify-content:center;
  text-decoration:none;color:var(--text);padding-inline-end:9px;border-inline-end:1px solid var(--stroke-soft)}
.wday-head b{font-size:12px}
.wday.today .wday-head b{color:var(--primary-400)}
.wday-num{font-size:10.5px;color:var(--text-faint);font-variant-numeric:tabular-nums}
.wday-today{font-size:9px;background:var(--primary-soft);color:var(--on-soft);padding:1px 6px;border-radius:99px;width:fit-content}
.wday-count{font-size:9.5px;color:var(--text-faint);font-variant-numeric:tabular-nums}
.wday-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;justify-content:center}
.wday-list{display:flex;flex-direction:column;gap:3px;min-height:26px}   /* روزِ خالی هم مقصدِ درگ باشد */
.wtask{display:flex;align-items:center;gap:7px;padding:5px 9px;min-height:32px;border-radius:7px;background:var(--card-solid);
  border:1px solid var(--stroke-soft);font-size:12.5px}
.wtask.dragging{opacity:.45}
.wtask.done{opacity:.6}
.wtask.sys{border-style:dashed;background:var(--fill)}
.wtask .pt-grip{cursor:grab;color:transparent;font-size:12px;flex:none;user-select:none;transition:color .12s}
.wday:hover .wtask .pt-grip,.wtask:hover .pt-grip{color:var(--text-faint)}
.wtask .pt-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;color:var(--text)}
.wtask .pt-title.is-done{text-decoration:line-through;color:var(--text-faint)}
.wtask .pt-done{flex:none}
.wtask .pt-unplan{border:0;background:transparent;color:var(--text-faint);cursor:pointer;font-size:13px;flex:none;padding:2px;opacity:0;transition:opacity .12s}
.wtask:hover .pt-unplan{opacity:1}
.wtask .pt-unplan:hover{color:var(--primary-400)}
/* شمارهٔ اولویتِ ریز کنارِ هر تسک */
.wtask-pri{flex:none;min-width:13px;font-size:10px;color:var(--text-faint);font-variant-numeric:tabular-nums;text-align:center}
/* تایمر/تخمین = همان ماژولِ .timer-cell سراسری، فشرده‌شده برای شبکهٔ هفته */
.wtask .timer-cell{flex:none;min-width:0;gap:5px}
.wtask .timer-cell .tbtn{width:20px;height:20px}
.wtask .timer-cell .tval{font-size:11px;min-width:0}
.wtask .timer-cell .t-est{font-size:11px;color:var(--text-faint);cursor:pointer}
.wtask .timer-cell .t-est:hover{color:var(--primary-400)}
/* بَجِ پروژهٔ تسکِ سیستمی (اسایمن‌شده از پروژهٔ دیگر) */
.wtask-proj{flex:none;font-size:10px;color:var(--text-dim);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  padding:2px 8px;border-radius:99px;background:var(--fill-strong);text-decoration:none}
.wtask-proj:hover{color:var(--primary-400)}
/* اینپوتِ «＋کار» فقط روی روزِ فوکوس یا هاور — تا روزهای دیگر خالی و تمیز بمانند */
.wgrid-newtask{width:100%;border:0;background:transparent;color:var(--text);font-family:inherit;font-size:11px;padding:2px 4px;outline:none;display:none}
.wday.sel .wgrid-newtask,.wday:hover .wgrid-newtask{display:block}
.wgrid-newtask::placeholder{color:var(--text-faint)}
.wgrid-sys{margin-top:12px;border-top:1px dashed var(--stroke-soft);padding-top:8px}
.wgrid-sys-h{font-size:11px;color:var(--text-faint);margin-bottom:5px}
.pt-nextweek{border:1px solid var(--stroke-soft);background:transparent;color:var(--text-dim);font-family:inherit;
  font-size:10.5px;padding:2px 7px;border-radius:99px;cursor:pointer;flex:none}
.pt-nextweek:hover{border-color:var(--primary-ring);color:var(--primary-400)}

/* ═══ گزارشِ مالیِ پروژه (ویجتِ گردشِ حساب مشترک) — finance_ledger.js ═══ */
.pledger{display:flex;flex-direction:column;gap:12px}
.pl-ctl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pl-ctl .pl-lbl{color:var(--text-faint);font-size:12px}
.pl-ctl .input{max-width:130px}
.pl-range{font-size:12px}
.pl-panel{border-top:1px solid var(--stroke-soft);padding-top:12px}
.pledger .pl-date{white-space:nowrap;font-size:12px;color:var(--text-dim)}
.pledger .pl-cat{font-size:12px;color:var(--text-dim)}
.pledger .pl-caret{color:var(--text-faint);font-size:11px}
.pledger .pl-bal{font-weight:700}
.pledger tfoot td{border-top:2px solid var(--stroke);background:var(--fill)}
.pl-line{display:grid;grid-template-columns:1fr 2fr auto;gap:12px;padding:5px 10px;font-size:12px;
  color:var(--text-dim);border-bottom:1px solid var(--stroke-soft)}
.pl-line:last-child{border-bottom:0}
.pl-sub td{background:var(--fill);padding:2px 8px}
