/* =====================================================================
   سامانه سال‌مد — Design System مرکزی (تم روشن سازمانی)
   فونت Self-hosted (Vazirmatn، WOFF2)؛ بدون CDN و بدون فریم‌ورک.
   ===================================================================== */

@font-face {
    font-family: "Vazirmatn";
    src: url("../fonts/Vazirmatn-Regular.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Vazirmatn";
    src: url("../fonts/Vazirmatn-Medium.woff2") format("woff2");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Vazirmatn";
    src: url("../fonts/Vazirmatn-Bold.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

:root {
    /* ── هویت بصری «Atelier v2» (امرالد-محور) — رنگ‌ها به پالت جدید ری‌اسکین شد،
       نامِ متغیرها بدون تغییر تا هیچ کامپوننتی نشکند. زمینه پُرسِلینِ سرد، ساختار
       جوهر صنوبری، لهجهٔ اصلی امرالد، و لهجهٔ گرمِ برنجی فقط برای جزئیاتِ صنعتگری. */
    /* رنگ‌های پایه */
    --bg: #edf1ee;
    --surface: #ffffff;
    --surface-2: #f1f6f2;
    --border: #e2e8e3;
    --border-strong: #d0dbd3;

    /* متن */
    --text: #15231f;
    --text-muted: #5c6b64;
    --text-soft: #8a978f;

    /* برند و لهجه — brand=جوهر صنوبری، accent=امرالد */
    --brand: #123128;
    --brand-700: #0d251e;
    --accent: #1d7a58;
    --accent-700: #16603f;
    --accent-soft: #e3f3ec;

    /* لهجهٔ گرمِ صنعتگری (برنجی) — فقط برای جزئیات؛ جدا از accent */
    --brass: #b08639;  --brass-700: #936e25;
    --brass-soft: #f5efe0;  --brass-line: #e7d9b4;

    /* وضعیت‌ها */
    --success: #1f8f5f;  --success-soft: #e4f3eb;
    --warning: #c9871c;  --warning-soft: #f8efdb;
    --danger:  #cb4636;  --danger-soft:  #fae7e4;
    --info:    #3f6f9c;  --info-soft:    #e6eef5;

    /* شکل */
    --radius-sm: 9px;
    --radius: 14px;
    --radius-lg: 18px;
    --shadow-sm: 0 1px 2px rgba(18, 48, 41, .06);
    --shadow: 0 8px 24px rgba(18, 48, 41, .08);

    /* اندازه‌ها */
    --control-h: 46px;
    /* منوی دو‌سطحی سبک وردپرس: نوار آیتم‌ها (آیکون + متن + فلش در یک ردیف) + فلای‌اوت کنار آیتم
       (رفتارِ اصلی/قبلی — طبقِ بازخوردِ کاربر برگردانده شد؛ فقط رنگ‌بندی تیره/سبزِ جدید ماند). */
    --nav-rail-w: 214px;
    --nav-panel-w: 240px;
    --sidebar-w: calc(var(--nav-rail-w) + var(--nav-panel-w)); /* مرجع؛ محتوا فقط به‌اندازهٔ rail فاصله می‌گیرد */
    --header-h: 64px;

    --fs-xs: .79rem;
    --fs-sm: .88rem;
    --fs-base: .97rem;
    --fs-lg: 1.15rem;
    --fs-xl: 1.45rem;

    /* ── سایدبار تیرهٔ دائمی (بازطراحی سراسری) ──────────────────────────────
       سایدبار مستقل از تمِ صفحه همیشه تیره می‌ماند (مثل نمونهٔ مرجع)؛ این توکن‌ها
       فقط داخل .sidebar/.nav__* مصرف می‌شوند و روی بقیهٔ سامانه اثر ندارند. */
    --sb-bg: #12141a;
    --sb-bg-2: #1a1d24;
    --sb-bg-3: #21252d;
    --sb-border: rgba(255, 255, 255, .07);
    --sb-text: #b7bcc6;
    --sb-text-soft: #7d838f;
    --sb-text-active: #ffffff;
    --sb-accent: #22c55e;
    --sb-accent-700: #16a34a;
    --sb-accent-ink: #ffffff;
}

/* ── حالتِ تیرهٔ محتوای اصلی (زیرساختِ جدید — قبلاً وجود نداشت) ──────────────
   سایدبار مستقل از این تم است (همیشه تیره)؛ این بلوک فقط رنگ‌های محتوای صفحه را
   عوض می‌کند. فعال‌سازی: کلاس/اتریبیوت data-theme روی <html> (توسط theme-toggle.js
   + localStorage) یا ترجیح سیستم‌عامل وقتی کاربر هنوز انتخابی نکرده. */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { color-scheme: dark; }
    :root:not([data-theme="light"]) {
        --bg: #0e1013;
        --surface: #171a20;
        --surface-2: #1d2129;
        --border: #2a2f38;
        --border-strong: #363c47;
        --text: #e7e9ec;
        --text-muted: #a3a9b3;
        --text-soft: #767c87;
        --accent-soft: #12291f;
        --success-soft: #12291f;
        --warning-soft: #2e2410;
        --danger-soft: #2e1614;
        --info-soft: #14212e;
    }
}
:root[data-theme="dark"] {
    color-scheme: dark;
    --bg: #0e1013;
    --surface: #171a20;
    --surface-2: #1d2129;
    --border: #2a2f38;
    --border-strong: #363c47;
    --text: #e7e9ec;
    --text-muted: #a3a9b3;
    --text-soft: #767c87;
    --accent-soft: #12291f;
    --success-soft: #12291f;
    --warning-soft: #2e2410;
    --danger-soft: #2e1614;
    --info-soft: #14212e;
}

*, *::before, *::after { box-sizing: border-box; }

/* قانون سراسری: خاصیت hidden همیشه واقعاً پنهان کند — حتی وقتی سلکتورهای خاص‌ترِ جدولِ
   ریسپانسیو (`.table.responsive tbody tr{display:block}`) با تخصیص بالاتر بر [hidden] غلبه
   می‌کنند. مبنای درست‌کارکردنِ همهٔ فیلترهای جستجوی زندهٔ کلاینت‌ساید (به‌ویژه روی موبایل). */
[hidden] { display: none !important; }

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
/* حالت اپلیکیشنی ثابت: pan-x pan-y اسکرول را نگه می‌دارد ولی pinch/double-tap zoom را می‌بندد.
   overscroll-behavior فقط روی html: body به‌خاطر overflow-x:hidden خودش یک scroll container
   غیرقابل‌اسکرول است و اگر contain روی آن باشد، زنجیرهٔ اسکرولِ چرخ موس همان‌جا قطع می‌شود
   و هیچ صفحه‌ای با Wheel اسکرول نمی‌شود (کیبورد/تاچ کار می‌کرد و باگ پنهان می‌ماند). */
html, body { margin: 0; padding: 0; overflow-x: hidden; max-width: 100%; touch-action: pan-x pan-y; }
html { overscroll-behavior-y: contain; }

img, svg { max-width: 100%; }
input, select, textarea, button { max-width: 100%; }

body {
    font-family: "Vazirmatn", Tahoma, "Segoe UI", sans-serif;
    background: var(--bg);
    color: var(--text);
    font-size: var(--fs-base);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-700); }
code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .85em; direction: ltr; unicode-bidi: embed; }
h1, h2, h3 { margin: 0; font-weight: 700; }

/* ================= چیدمان کلی ================= */
.layout {
    min-height: 100vh;
}

.main { display: flex; flex-direction: column; min-width: 0; }
.content { padding: 1.25rem 1.5rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; width: 100%; max-width: 100%; }

/* ================= منوی دو‌سطحی سبک وردپرس (Rail + Item-Aligned Flyout) ================= */
/* دسکتاپ: نوار ثابت سمت راست با آیتم‌های «آیکون + عنوان در یک ردیف» (مثل پیشخوان وردپرس)
   + فلای‌اوت زیرمنو که با hover هم‌تراز با همان آیتم کنار نوار باز می‌شود (top با app.js).
   سایدبار fixed است. پنل با position:fixed رندر می‌شود تا از overflow نوار بریده نشود.
   موبایل در media query به آکاردئون کشویی برمی‌گردد. */
.sidebar {
    position: fixed;
    top: 0;
    right: 0;
    width: var(--nav-rail-w);
    height: 100vh;
    z-index: 40; /* بالای محتوا و هدر(۲۰)، ولی زیر مودال(۵۰) */
    /* رنگِ اصلیِ پروژه (روشن/off-white) — طبقِ بازخوردِ کاربر برگردانده شد؛
       سایدبار دیگر تیرهٔ مستقل نیست، از همان توکن‌های عمومیِ صفحه پیروی می‌کند
       (اگر تمِ تیرهٔ محتوا فعال شود، سایدبار هم هماهنگ می‌شود — نه رنگِ ثابتِ جدا). */
    background: var(--surface);
    color: var(--text);
    border-inline-start: 1px solid var(--border-strong);
    box-shadow: -1px 0 0 rgba(22, 52, 95, .02), -10px 0 30px rgba(16, 24, 40, .04);
    /* رنگِ پیش‌فرضِ خنثی برای عناصر بدون گروه (مثل footer) */
    --gc: #5c6a82; --gc-soft: var(--surface-2); --gc-700: var(--text-muted);
}

/* نوار برچسب‌دار (rail): brand بالا (ثابت) · آیتم‌ها میانه (اسکرول) · footer پایین (ثابت) */
.sidebar__rail {
    height: 100%;
    display: flex;
    flex-direction: column;
}

.sidebar__brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .28rem;
    padding: 0;
    min-height: var(--header-h);
    border-bottom: 1px solid var(--border);
    color: var(--text);
    flex: 0 0 auto;
}
.sidebar__logo {
    width: 38px; height: 38px; border-radius: 11px;
    background: var(--accent); display: grid; place-items: center; color: #fff;
    font-weight: 700; font-size: 1.1rem; flex: 0 0 auto;
    box-shadow: 0 4px 12px rgba(29, 122, 88, .28);
}
/* رِیلِ آیکون‌محور (رفتارِ اصلی) — عنوان فقط در موبایل نمایان می‌شود (رجوع به @media زیر). */
.sidebar__titles { display: none; flex-direction: column; min-width: 0; line-height: 1.35; }
.sidebar__title { font-weight: 700; font-size: .98rem; color: var(--text); white-space: nowrap; }
.sidebar__subtitle { font-size: var(--fs-xs); color: var(--text-muted); }
.sidebar__brand-cap { font-size: .62rem; font-weight: 700; color: var(--text-soft); letter-spacing: .02em; }

/* ناحیهٔ اسکرولِ مستقلِ منو (الگوی YouTube) — min-height:0 برای فعال‌شدن اسکرول.
   • منو fixed می‌ماند؛ این ناحیه اسکرولِ داخلیِ مستقلِ خودش را دارد (بالا تا پایینِ کامل، شامل footer).
   • overscroll-behavior: contain → موس روی منو ⇒ فقط منو اسکرول می‌شود و به صفحه زنجیر نمی‌شود؛
     موس روی محتوا ⇒ خودِ صفحه (body) اسکرول می‌شود.
   • اسکرول‌بارِ بومیِ سیستم‌عامل (با فلش‌های بالا/پایین) حفظ می‌شود — نه اسکرول‌بارِ سفارشیِ بدون‌فلش.
     در RTL اسکرول‌بار خودبه‌خود سمتِ چپِ منو می‌افتد، جدا و متمایز از اسکرول‌بارِ صفحه.
   • scrollbar-gutter: stable → جای اسکرول همیشه رزرو تا محتوا نلرزد و هیچ اسکرول افقی ایجاد نشود. */
.sidebar__scroll {
    flex: 1 1 auto; min-height: 0;
    overflow-y: auto; overflow-x: hidden;
    overscroll-behavior: contain;
    padding: .4rem .3rem;
    /* scrollbar-gutter فقط دسکتاپ (پایین)، تا در درایورِ موبایل فضای اضافه رزرو نشود. */
}

/* ابرگروه: روی دسکتاپ فقط جداکنندهٔ ظریف بین دسته‌ها (برچسب پنهان) */
.nav__section { padding: .1rem 0; }
.nav__section + .nav__section { margin-top: .3rem; padding-top: .4rem; border-top: 1px solid var(--border); }
.nav__section-label { display: none; }

/* ── Design System رنگی منو ─────────────────────────────────────────────────
   هر گروه اصلی یک رنگ اختصاصی دارد که با سه متغیر تعریف می‌شود و در آیکن، Hover،
   Active و فلای‌اوت به‌صورت یکپارچه به‌کار می‌رود (رفتارِ اصلی — طبقِ بازخوردِ کاربر
   برگردانده شد؛ دسکتاپ چون رنگ‌بندیِ مستقلِ خودش را در @media زیر دارد اثر نمی‌گیرد،
   این پالت فقط روی منوی موبایل/همبرگری دیده می‌شود):
     --gc      رنگ اصلی (چیپِ فعال، نوار کناری، بوردر آیتم فعالِ زیرمنو)
     --gc-soft پس‌زمینهٔ ملایم (چیپ پیش‌فرض، پیلِ hover/active)
     --gc-700  متن/آیکن پررنگ
   پالت زنده اما سازمانی؛ رنگ هر بخش با ماهیت آن هماهنگ است. */
.nav__group, .nav__head {
    --gc: var(--accent); --gc-soft: var(--accent-soft); --gc-700: var(--accent-700);
}
.nav__group--blue   { --gc:#2f6fed; --gc-soft:#e8f0fe; --gc-700:#1f57c8; }
.nav__group--indigo { --gc:#5457d6; --gc-soft:#ecedfb; --gc-700:#3d40b5; }
.nav__group--cyan   { --gc:#0e97b5; --gc-soft:#e0f4f9; --gc-700:#0a7891; }
.nav__group--teal   { --gc:#0f9a86; --gc-soft:#e1f5f1; --gc-700:#0b7a6a; }
.nav__group--green  { --gc:#1f9a5b; --gc-soft:#e6f6ec; --gc-700:#167a47; }
.nav__group--amber  { --gc:#d38a10; --gc-soft:#fbf1dd; --gc-700:#a5690a; }
.nav__group--orange { --gc:#e5731b; --gc-soft:#fdeee0; --gc-700:#b85a12; }
.nav__group--red    { --gc:#e04a3f; --gc-soft:#fdeae8; --gc-700:#b83329; }
.nav__group--rose   { --gc:#dc3f77; --gc-soft:#fce9f0; --gc-700:#b32e60; }
.nav__group--purple { --gc:#7c53e0; --gc-soft:#f0eafc; --gc-700:#5f39c0; }
.nav__group--violet { --gc:#a63fb3; --gc-soft:#f7eafa; --gc-700:#842f8f; }
.nav__group--petrol { --gc:#20718c; --gc-soft:#e3f0f4; --gc-700:#16556a; }
.nav__group--slate  { --gc:#5c6a82; --gc-soft:#eef1f6; --gc-700:#414e64; }

/* آیتم منو سبک وردپرس: آیکون رنگی (چیپ کوچک) و عنوان در «یک ردیف» */
.nav__group { border-radius: 0; }
.nav__head {
    width: 100%; display: flex; flex-direction: row; align-items: center; gap: .5rem;
    padding: .5rem .55rem; border: 0; background: none; cursor: pointer; position: relative;
    color: var(--text-muted); font-family: inherit; font-weight: 500;
    text-align: start; border-radius: 10px;
    transition: background .16s, color .16s;
}
a.nav__head { text-decoration: none; }
/* آیکن به‌صورت پیش‌فرض هم‌رنگِ ماهیت بخش: چیپ ملایم + آیکن پررنگ */
.nav__ic {
    position: relative; display: grid; place-items: center; flex: 0 0 auto;
    width: 36px; height: 32px; border-radius: 9px;
    background: var(--gc-soft); color: var(--gc-700);
    transition: background .16s, color .16s, box-shadow .16s;
}
.nav__icon { width: 20px; height: 20px; flex: 0 0 auto; color: inherit; }
/* عنوان: یک خط با ellipsis (مثل منوی وردپرس) */
.nav__text {
    display: block; flex: 1 1 auto; min-width: 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    font-size: .85rem; line-height: 1.5; font-weight: 500; color: inherit;
}
/* فلش کوچک جلوی عنوان‌های دارای زیرمنو (مثل وردپرس) — در RTL رو به چپ، سمتِ بازشدن فلای‌اوت */
.nav__chev {
    display: block; width: 14px; height: 14px; flex: 0 0 auto;
    color: var(--text-soft); opacity: .5;
    transform: rotate(90deg);
    transition: transform .18s ease, color .16s, opacity .16s;
}
.nav__head:hover .nav__chev,
.nav__group.is-open > .nav__head .nav__chev,
.nav__group.is-current > .nav__head .nav__chev { color: var(--gc-700); opacity: .9; }
.nav__group.is-open > .nav__head .nav__chev { transform: translateX(-2px) rotate(90deg); }

/* Hover — پیل ملایمِ هم‌رنگ گروه + حلقهٔ ظریف دور چیپ */
.nav__head:hover { background: var(--gc-soft); color: var(--gc-700); }
.nav__head:hover .nav__ic { box-shadow: inset 0 0 0 1px var(--gc); }

/* گروهِ باز (در حال مرور با hover) — مثل hover اما پایدار تا بستن پنل */
.nav__group.is-open > .nav__head { background: var(--gc-soft); color: var(--gc-700); }
.nav__group.is-open > .nav__head .nav__ic { box-shadow: inset 0 0 0 1px var(--gc); }

/* گروهِ صفحهٔ جاری (You are here) — پررنگ: چیپِ توپرِ هم‌رنگ + آیکن سفید + پیل + نوار کناری.
   .nav__head.is-active برای آیتم‌های مستقیمِ احتمالیِ بدون زیرمنو است. */
.nav__group.is-current > .nav__head,
.nav__head.is-active { background: var(--gc-soft); color: var(--gc-700); font-weight: 700; }
.nav__group.is-current > .nav__head .nav__ic,
.nav__head.is-active .nav__ic { background: var(--gc); color: #fff; box-shadow: 0 3px 9px rgba(16, 24, 40, .20); }
.nav__group.is-current > .nav__head::before,
.nav__head.is-active::before {
    content: ""; position: absolute; inset-inline-end: 0; top: 50%; transform: translateY(-50%);
    width: 3px; height: 62%; border-radius: 0 3px 3px 0; background: var(--gc);
}

/* دسترس‌پذیری: نمایش واضح فوکوسِ صفحه‌کلید (هم‌رنگ گروه؛ بدون تأثیر روی کلیک موس) */
.nav__head:focus-visible, .nav__sublink:focus-visible, .nav__foot-link:focus-visible {
    outline: 2px solid var(--gc); outline-offset: -2px;
}

/* پنل شناور (flyout) سبک وردپرس = کارتِ هم‌ترازِ همان آیتم (نه ستون تمام‌ارتفاع).
   لبه دقیقاً به نوار می‌چسبد (right = عرض نوار؛ بدون Gap) تا حرکت موس از آیتم به پنل،
   Hover را از دست ندهد؛ top را app.js هم‌تراز با آیتم تنظیم و در لبه‌های صفحه clamp می‌کند.
   بسته‌شدن فقط با خروج کاملِ موس از کل منو (JS در سطح #appNav). */
.nav__panel {
    position: fixed;
    top: 0; /* مقدار دقیق توسط app.js هنگام بازشدن ست می‌شود */
    right: var(--nav-rail-w);
    width: var(--nav-panel-w);
    max-height: calc(100vh - 16px);
    background: var(--surface);
    border: 1px solid var(--border-strong);
    border-inline-end: 0;
    border-radius: 12px 0 0 12px;
    box-shadow: -8px 10px 28px rgba(16, 24, 40, .16);
    display: flex; flex-direction: column; overflow: hidden;
    z-index: 3;
    visibility: hidden; opacity: 0; transform: translateX(8px); pointer-events: none;
    transition: opacity .14s ease, transform .16s ease, visibility .14s;
}
.nav__group.is-open > .nav__panel {
    visibility: visible; opacity: 1; transform: none; pointer-events: auto;
}

/* سرِ پنل: نوار رنگیِ گروه (مثل هایلایت والد در فلای‌اوت وردپرس) — آیکون + عنوان روی
   گرادیان ملایمِ رنگ همان گروه؛ به پنل هویت و روح می‌دهد بدون جیغ‌شدن. */
.nav__panel-head {
    flex: 0 0 auto; display: flex; align-items: center; gap: .55rem;
    padding: .66rem .9rem; box-sizing: border-box;
    background: linear-gradient(135deg, var(--gc), var(--gc-700));
}
.nav__panel-ic {
    display: grid; place-items: center; flex: 0 0 auto;
    width: 27px; height: 27px; border-radius: 8px;
    background: rgba(255, 255, 255, .18); color: #fff;
}
.nav__panel-ic .nav__icon { width: 16px; height: 16px; }
.nav__panel-title { font-size: .92rem; font-weight: 700; color: #fff; line-height: 1.4; }

/* فهرست زیرمنو در بالای پنل؛ فضای خالیِ زیرِ آن سفید و بخشی از پنل می‌ماند. اگر فهرست از
   ارتفاع پنل بلندتر شد، فقط همین بخش اسکرول داخلی می‌گیرد (flex-shrink مجاز، بدون رشد). */
.nav__panel-inner {
    flex: 0 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden;
    overscroll-behavior: contain;   /* اسکرولِ مستقلِ فلای‌اوت + اسکرول‌بارِ بومی با فلش (فلای‌اوت فقط دسکتاپ) */
    display: flex; flex-direction: column; gap: 2px; padding: .55rem .6rem .7rem;
}

.nav__sublink {
    display: flex; align-items: center; gap: .55rem;
    padding: .48rem .7rem; border-radius: 9px;
    color: var(--text-muted); font-size: var(--fs-sm); text-decoration: none;
    border-inline-start: 2px solid transparent;
    transition: background .14s, color .14s, padding-inline-start .14s;
}
/* نشانگر رنگی هر گزینه (نقطهٔ هم‌رنگ گروه) — کم‌رنگ در حالت عادی، پررنگ در hover/فعال */
.nav__sublink::before {
    content: ""; width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto;
    background: var(--gc); opacity: .3;
    transition: opacity .14s, transform .14s;
}
.nav__sublink:hover { background: var(--gc-soft); color: var(--gc-700); padding-inline-start: .9rem; }
.nav__sublink:hover::before { opacity: 1; transform: scale(1.2); }
.nav__sublink.is-active {
    background: var(--gc-soft);
    color: var(--gc-700); font-weight: 600;
    border-inline-start-color: var(--gc);
}
.nav__sublink.is-active::before { opacity: 1; }
.nav__sublink.is-soon::before { opacity: .15; }

/* وضعیت «در حال توسعه» — بدون لینک، کم‌رنگ، با نشان */
.nav__head.is-soon, .nav__sublink.is-soon, .nav__foot-link.is-soon {
    cursor: default; color: var(--text-soft);
}
.nav__head.is-soon:hover .nav__ic, .nav__sublink.is-soon:hover { background: none; }
.nav__soon {
    margin-inline-start: auto; flex: 0 0 auto;
    font-size: .66rem; font-weight: 600; color: var(--text-soft);
    background: rgba(22, 52, 95, .06); border-radius: 6px;
    padding: .08rem .4rem; white-space: nowrap;
}

/* عنوانِ جداکنندهٔ زیرگروهِ تودرتو داخلِ پنل (مثل «حسابداری پیشرفته») — غیرقابل‌کلیک،
   فقط برچسبِ بصری برای گروه‌بندیِ فرزندانش که بلافاصله بعدش می‌آیند (بدون آکاردئونِ جدید). */
.nav__subhead {
    display: block; margin: .5rem 0 .1rem; padding: 0 .7rem;
    font-size: .68rem; font-weight: 700; color: var(--gc-700);
    opacity: .75; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.nav__subhead:first-child { margin-top: 0; }

/* Badge شمارنده — روی دسکتاپ نقطهٔ کوچک روی آیکن؛ در زیرمنو inline در انتهای ردیف */
.nav__badge {
    position: absolute; top: -4px; inset-inline-end: -4px;
    min-width: 16px; height: 16px; padding: 0 4px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .62rem; font-weight: 700; line-height: 1;
    color: #fff; background: var(--danger); border-radius: 9px;
    border: 1.5px solid var(--surface);
}
.nav__sublink .nav__badge { position: static; inset-inline-end: auto; top: auto; margin-inline-start: auto; border: 0; }

/* آیتم‌های پایین (footer) — دیگر Fixed نیستند؛ در انتهای همان لیست و داخل تنها اسکرول سایدبار */
.sidebar__foot { margin-top: .35rem; border-top: 1px solid var(--border); padding: .4rem .3rem .3rem; }
.nav__section--foot { margin-top: 0; padding: 0; display: flex; flex-direction: column; align-items: stretch; gap: 1px; }
.nav__logout-form { margin: 0; width: 100%; }
.nav__foot-link {
    width: 100%; display: flex; flex-direction: row; align-items: center; gap: .55rem;
    padding: .42rem .55rem; border: 0; background: none; cursor: pointer; position: relative;
    color: var(--text-muted); font-family: inherit; text-align: start;
    border-radius: 9px; transition: background .16s, color .16s;
}
.nav__foot-link .nav__ic { width: 30px; height: 26px; }
.nav__foot-link .nav__text { font-size: .78rem; }
.nav__foot-link .nav__soon { display: none; }
.nav__foot-link .nav__icon { color: inherit; }
.nav__foot-link:hover { color: var(--text); }
.nav__foot-link:hover .nav__ic { background: var(--surface-2); }
.nav__foot-link--logout:hover { color: var(--danger); }
.nav__foot-link--logout:hover .nav__ic { background: var(--danger-soft); }
.sidebar__version { display: none; }

/* فیلد تاریخ شمسی (jpicker) — باکس استاندارد سراسری با آیکون تقویم؛ در همهٔ نوار ابزارها یکسان */
.inp-date {
    min-width: 138px; max-width: 158px;
    padding: .48rem 2.15rem .48rem .7rem; /* جای آیکون سمت راستِ باکس (متن ltr) */
    border: 1px solid var(--border-strong, #d4deec); border-radius: var(--radius-sm);
    background: var(--surface)
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23586882' stroke-width='2' stroke-linecap='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E")
        no-repeat right .6rem center / 16px 16px;
    font: inherit; font-size: .88rem; font-weight: 600; font-variant-numeric: tabular-nums;
    color: var(--text); cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.inp-date:hover { border-color: var(--accent); }
.inp-date:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }

/* ================= Header ================= */
.header {
    height: var(--header-h);
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    display: flex; align-items: center; justify-content: space-between;
    gap: 1rem; padding: 0 1.5rem; position: sticky; top: 0; z-index: 20;
}
.header__titles { min-width: 0; }
.header__title { font-size: var(--fs-lg); font-weight: 700; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.header__user { min-width: 0; }
.header__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 130px; }
.breadcrumb { display: flex; gap: .35rem; align-items: center; color: var(--text-soft); font-size: var(--fs-xs); }
.breadcrumb a { color: var(--text-muted); }
.breadcrumb .sep { color: var(--border-strong); }
.header__user { display: flex; align-items: center; gap: .8rem; }
.header__id { text-align: left; line-height: 1.3; }
.header__name { font-weight: 600; font-size: var(--fs-sm); }
.header__role { font-size: var(--fs-xs); color: var(--text-soft); }
.avatar {
    width: 38px; height: 38px; border-radius: 50%;
    background: var(--accent-soft); color: var(--accent);
    display: grid; place-items: center; font-weight: 700; flex: 0 0 auto;
}
.hamburger { display: none; background: none; border: none; cursor: pointer; padding: .4rem; color: var(--text); }

/* ── سایدبارِ جمع‌شده در ماژول مالی (فضای کاریِ تمام‌عرضِ حسابدار) ─────────────
   فقط یک حالتِ نمایشی است: سایدبار حذف نمی‌شود، از دید خارج می‌شود و محتوا کلِ
   عرض را می‌گیرد. دکمهٔ همبرگر روی دسکتاپ هم ظاهر می‌شود تا کاربر بتواند دوباره
   بازش کند (انتخابش تا پایان Session در app.js حفظ می‌شود). */
body.rail-off { --nav-rail-w: 0px; }
body.rail-off .sidebar { transform: translateX(100%); visibility: hidden; }
body.rail-off .hamburger { display: inline-flex; align-items: center; }
.hamburger svg { width: 24px; height: 24px; }
.header__start { display: flex; align-items: center; gap: .4rem; }

/* جستجوی سراسری (پوستهٔ UI) — بینِ عنوان و اطلاعاتِ کاربر، فقط دسکتاپ */
.header__search {
    display: none; align-items: center; gap: .5rem;
    flex: 1 1 auto; max-width: 420px; min-width: 0;
    height: 40px; padding: 0 .9rem; margin-inline: .5rem;
    background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px;
    color: var(--text-soft);
}
.header__search input {
    flex: 1 1 auto; min-width: 0; border: 0; background: none; outline: none;
    font: inherit; font-size: var(--fs-sm); color: var(--text);
}
.header__search input::placeholder { color: var(--text-soft); }
.header__search input:disabled { cursor: default; }

/* دکمهٔ آیکنیِ هدر (زنگ اعلان، تیره/روشن) */
.header__icbtn {
    position: relative; display: grid; place-items: center; flex: 0 0 auto;
    width: 38px; height: 38px; border-radius: 50%;
    background: none; border: 0; color: var(--text-muted); cursor: pointer;
    transition: background .14s, color .14s;
}
.header__icbtn:hover { background: var(--surface-2); color: var(--text); }
.header__icbtn-badge {
    position: absolute; top: 2px; inset-inline-end: 2px;
    min-width: 15px; height: 15px; padding: 0 3px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .6rem; font-weight: 700; line-height: 1;
    color: #fff; background: var(--danger); border-radius: 8px;
    border: 1.5px solid var(--surface);
}
#themeToggle svg[data-icon="sun"] { display: none; }
:root[data-theme="dark"] #themeToggle svg[data-icon="moon"] { display: none; }
:root[data-theme="dark"] #themeToggle svg[data-icon="sun"] { display: block; }

@media (min-width: 881px) { .header__search { display: flex; } }

/* دکمه بازگشت — خارج از Header، ابتدای محتوا */
/* رفعِ باگِ «دکمهٔ بازگشت کار نمی‌کند»: .hrd-head با margin-top منفی + z-index:1 روی همین ردیف
   کشیده می‌شود و ناحیهٔ خالیِ تمام‌عرضش کلیکِ دکمهٔ بازگشت را می‌بلعید. راه‌حل: هر دو نوار
   pointer-events:none می‌گیرند و فقط عناصر واقعیِ داخلشان auto — پس ناحیهٔ خالی کلیک را رد می‌کند
   و هم دکمهٔ بازگشت (راست) و هم گروه تاریخ (چپ) مستقل کلیک‌پذیر می‌مانند. */
.page-back { display: flex; align-items: center; justify-content: space-between; gap: .6rem; position: relative; z-index: 2; pointer-events: none; }
.page-back > * { pointer-events: auto; }

/* ================= Card ================= */
.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    min-width: 0;
    overflow: hidden;
}
.card__head {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: 1rem; padding: 1.1rem 1.25rem; border-bottom: 1px solid var(--border);
}
.card__head .titlebox { min-width: 0; }
.card__title { font-size: var(--fs-lg); }
.card__desc { color: var(--text-muted); font-size: var(--fs-sm); margin-top: .2rem; }
.card__body { padding: 1.25rem; }
.card--narrow { width: 100%; max-width: 560px; margin-inline: auto; }

/* ================= دکمه‌ها ================= */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
    height: var(--control-h); padding: 0 1.1rem;
    border: 1px solid transparent; border-radius: 9px;
    font: inherit; font-weight: 600; font-size: var(--fs-sm);
    cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s;
}
.btn svg { width: 17px; height: 17px; }
.btn--primary { background: var(--accent); color: #fff; }
.btn--primary:hover { background: var(--accent-700); color: #fff; }
.btn--secondary { background: var(--surface); color: var(--text); border-color: var(--border-strong); }
.btn--secondary:hover { background: var(--surface-2); }
.btn--danger { background: var(--danger-soft); color: var(--danger); border-color: #f3c9c9; }
.btn--danger:hover { background: #fbdcdc; }
.btn--back { background: var(--accent-soft); color: var(--accent-700); border-color: #c7dbfb; font-weight: 500; }
.btn--back:hover { background: #d6e6fd; color: var(--accent-700); }
.btn--ghost { background: transparent; color: var(--text-muted); }
.btn--ghost:hover { background: var(--surface-2); color: var(--text); }
.btn--sm { height: 34px; padding: 0 .7rem; font-size: var(--fs-xs); }
.btn--block { width: 100%; }
.btn[disabled] { opacity: .55; cursor: not-allowed; }

/* ================= فرم ================= */
.form-section { border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 1rem; overflow: hidden; }
.form-section__head { background: var(--surface-2); padding: .8rem 1.1rem; border-bottom: 1px solid var(--border); }
.form-section__title { font-size: var(--fs-base); font-weight: 700; }
.form-section__desc { font-size: var(--fs-xs); color: var(--text-soft); }
.form-section__body { padding: 1.1rem; }
.form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
.field { display: flex; flex-direction: column; gap: .35rem; }
.field--full { grid-column: 1 / -1; }
.field > label, .field__label { font-size: var(--fs-sm); font-weight: 600; color: var(--text); }
.field input, .field select, .field textarea {
    height: var(--control-h);
    padding: 0 .8rem;
    background: var(--surface);
    border: 1px solid var(--border-strong);
    border-radius: 9px;
    color: var(--text); font: inherit; font-size: var(--fs-sm);
    width: 100%; transition: border-color .15s, box-shadow .15s;
}
.field textarea { height: auto; padding: .6rem .8rem; min-height: 90px; }
.field input:focus, .field select:focus, .field textarea:focus {
    outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft);
}
.field input:disabled, .field select:disabled { background: var(--surface-2); color: var(--text-soft); }
.field__help { font-size: var(--fs-xs); color: var(--text-soft); }
.field__error { font-size: var(--fs-xs); color: var(--danger); }
.checks { display: flex; flex-direction: column; gap: .5rem; }
.check { display: flex; align-items: center; gap: .55rem; font-size: var(--fs-sm); cursor: pointer; }
.check input { width: 18px; height: 18px; accent-color: var(--accent); }

/* ورودی فقط‌خواندنی = ظاهر استاتیک (به‌جز فیلدهای تقویم شمسی که تعاملی‌اند) */
input[readonly]:not([data-jpicker]) { background: var(--surface-2); cursor: default; }

/* نوار اطلاعات حساب (پروندهٔ پرسنلی): آیتم‌های جمع‌وجور هم‌ارتفاع در هر عرض صفحه */
.acc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .6rem; }
.acc-item {
    display: flex; flex-direction: column; gap: .3rem; min-width: 0;
    padding: .6rem .85rem; background: var(--surface-2);
    border: 1px solid var(--border); border-radius: var(--radius-sm);
}
.acc-item__label { font-size: var(--fs-xs); color: var(--text-muted); font-weight: 600; }
.acc-item__value { font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acc-item__value.ltr { font-variant-numeric: tabular-nums; }

/* درخت کدینگ حسابداری: ردیف گروه برجسته + تورفتگی سطح کل/معین (CSP-safe، بدون style اینلاین) */
.acctree-row--l1 td { background: var(--surface-2); font-weight: 700; }
.acctree-row--l2 .acctree-title { display: inline-block; padding-right: 1.1rem; }
.acctree-row--l3 .acctree-title { display: inline-block; padding-right: 2.2rem; }

/* ═══════════ حسابداری فاز A2: داشبورد مالی، اسناد و دفتر روزنامه ═══════════ */

/* ── خلاصهٔ اجرایی مالی (فاز۲ بازطراحی — بالای داشبورد مالی، دادهٔ واقعی) ── */
.fx-section { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 1.4rem; }
.fx-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .8rem; }
.fx-kpi {
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: var(--shadow-sm); padding: 1.05rem 1.2rem;
}
.fx-kpi__label { font-size: var(--fs-sm); color: var(--text-muted); }
.fx-kpi__value { font-size: 1.55rem; font-weight: 700; color: var(--text); margin-top: .3rem; }
.fx-kpi__row { display: flex; align-items: center; gap: .5rem; margin-top: .35rem; }
.fx-kpi__delta { display: inline-flex; align-items: center; gap: .2rem; font-size: var(--fs-xs); font-weight: 700; border-radius: 999px; padding: .12rem .5rem; }
.fx-kpi__delta--up { color: var(--success); background: var(--success-soft); }
.fx-kpi__delta--down { color: var(--danger); background: var(--danger-soft); }
.fx-kpi__cap { font-size: var(--fs-xs); color: var(--text-soft); }

.fx-grid-2 { display: grid; grid-template-columns: 1.1fr .9fr; gap: 1rem; align-items: start; }
@media (max-width: 880px) { .fx-grid-2 { grid-template-columns: 1fr; } }

/* تفکیک هزینه‌ها — نوار افقی، بدون دادهٔ ساختگی (خالی → پیام) */
.fx-bars { display: flex; flex-direction: column; gap: .55rem; }
.fx-bar { display: grid; grid-template-columns: 8.5rem 1fr auto; align-items: center; gap: .6rem; }
.fx-bar__l { font-size: var(--fs-sm); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fx-bar__track { height: 9px; border-radius: 99px; background: var(--surface-2); overflow: hidden; }
.fx-bar__fill { display: block; height: 100%; border-radius: 99px; background: var(--accent); }
.fx-bar__v { font-size: var(--fs-sm); font-weight: 700; color: var(--text); }

/* سلامت مالی — حلقهٔ ترکیبی + ۴ زیرنمره */
.fx-health { display: flex; align-items: center; gap: 1.1rem; }
.fx-ring { position: relative; width: 108px; height: 108px; flex: 0 0 auto; }
.fx-ring svg { width: 100%; height: 100%; }
.fx-ring__t { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.fx-ring__n { font-size: 1.3rem; font-weight: 700; color: var(--text); line-height: 1; }
.fx-ring__l { font-size: var(--fs-xs); color: var(--success); font-weight: 600; margin-top: .15rem; }
.fx-health__legend { flex: 1 1 auto; display: grid; grid-template-columns: 1fr 1fr; gap: .5rem .8rem; }
.fx-health__item { display: flex; align-items: center; gap: .4rem; font-size: var(--fs-xs); color: var(--text-muted); }
.fx-health__dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }

/* دستیار مالی — کارت تیرهٔ ثابت (مثل نمونه)، مستقل از تمِ صفحه */
.fx-assistant { background: #14151a; border-radius: var(--radius); padding: 1.1rem 1.2rem; color: #e7e9ec; }
.fx-assistant__title { font-weight: 700; margin-bottom: .7rem; display: flex; align-items: center; gap: .4rem; }
.fx-assistant__row { display: flex; align-items: center; gap: .6rem; padding: .55rem 0; border-top: 1px solid rgba(255,255,255,.08); font-size: var(--fs-sm); }
.fx-assistant__row:first-of-type { border-top: 0; }
.fx-assistant__ic { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: .85rem; }
.fx-assistant__ic--up { background: rgba(34,197,94,.18); color: #4ade80; }
.fx-assistant__ic--down { background: rgba(203,70,54,.2); color: #f87171; }
.fx-assistant__ic--ok { background: rgba(34,197,94,.18); color: #4ade80; }
.fx-assistant__ic--warn { background: rgba(201,135,28,.22); color: #fbbf24; }
.fx-assistant__ic--flag { background: rgba(63,111,156,.24); color: #7dd3fc; }

/* روند ۶ ماهِ اخیر — میله‌های مقایسه‌ای ساده (نه ادعای پیش‌بینی) */
.fx-trend { display: flex; align-items: flex-end; gap: .6rem; height: 130px; padding-top: .5rem; }
.fx-trend__col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: .3rem; height: 100%; justify-content: flex-end; }
.fx-trend__bars { display: flex; align-items: flex-end; gap: 3px; height: 100%; }
.fx-trend__bar { width: 9px; border-radius: 3px 3px 0 0; }
.fx-trend__bar--rev { background: var(--accent); }
.fx-trend__bar--exp { background: var(--text-soft); opacity: .55; }
.fx-trend__m { font-size: var(--fs-xs); color: var(--text-soft); }

/* ── کارت‌های وضعیت داشبورد مالی (بازطراحی 0.197.0 — رنگ زنده = مفهوم وضعیت) ──
   هر رنگ سه متغیر دارد: accent (متن/آیکون/عدد، کنتراست بالا) · soft (پس‌زمینه‌ی chip
   آیکون و Badge) · bg/border (بدنه‌ی کارت). کارت کامل کلیک‌پذیر با hover/active نرم. */
.fin-cta { display: flex; gap: .6rem; flex-wrap: wrap; margin-bottom: 1rem; }
.fin-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(235px, 1fr));
    gap: .8rem; margin: .5rem 0 1.2rem;
}
/* بخش جمع‌شونده‌ی «جزئیات فنی» داشبورد مالی — کارت‌های کم‌کاربرد بدون حذف اطلاعات */
.fin-collapse { margin: .4rem 0 1.2rem; }
.fin-collapse > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: .45rem; }
.fin-collapse > summary::-webkit-details-marker { display: none; }
.fin-collapse > summary::before { content: "◂"; font-size: .8em; color: var(--text-soft); transition: transform .15s; }
.fin-collapse[open] > summary::before { transform: rotate(-90deg); }
.fincard {
    position: relative; display: flex; flex-direction: column; gap: .35rem; min-width: 0;
    padding: 1rem 1.05rem .85rem; border-radius: 14px;
    border: 1px solid var(--fc-border);
    background: linear-gradient(165deg, #ffffff 0%, var(--fc-bg) 78%);
    color: var(--text); text-decoration: none;
    border-right: 5px solid var(--fc-accent);
    box-shadow: 0 1px 3px rgba(18, 38, 32, .06);
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.fincard:hover {
    box-shadow: 0 10px 26px rgba(18, 38, 32, .14);
    transform: translateY(-2px);
    border-color: var(--fc-accent);
}
.fincard:active { transform: translateY(0); box-shadow: 0 3px 10px rgba(18, 38, 32, .12); }
.fincard__top { display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.fincard__icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; border-radius: 12px; flex: 0 0 auto;
    color: var(--fc-accent); background: var(--fc-soft);
}
.fincard__icon svg { width: 24px; height: 24px; }
.fincard__badge {
    font-size: var(--fs-xs); font-weight: 800; color: var(--fc-accent);
    background: var(--fc-soft); border: 1px solid var(--fc-border);
    border-radius: 999px; padding: .14rem .6rem;
    /* Badge بلند در کارت‌های باریک موبایل نباید کارت را سرریز کند */
    min-width: 0; white-space: normal; text-align: center; line-height: 1.5;
}
.fincard__badge--urgent {
    color: #fff; background: var(--fc-accent); border-color: var(--fc-accent);
    box-shadow: 0 2px 8px rgba(18, 38, 32, .18);
}
.fincard__value {
    font-size: 2rem; font-weight: 800; line-height: 1.12;
    color: var(--fc-accent); font-variant-numeric: tabular-nums;
}
.fincard__title { font-weight: 800; font-size: .98rem; }
.fincard__desc { font-size: var(--fs-xs); color: var(--text-muted); line-height: 1.8; }
.fincard__action {
    margin-top: auto; padding-top: .45rem; font-size: var(--fs-xs); font-weight: 800;
    color: var(--fc-accent); transition: transform .18s ease;
}
.fincard:hover .fincard__action { transform: translateX(-3px); }
.fincard--zero { opacity: .58; border-right-width: 3px; box-shadow: none; }
.fincard--zero .fincard__value { font-size: 1.45rem; }
.fincard--zero .fincard__icon { width: 34px; height: 34px; }
.fincard--zero:hover { opacity: .85; }

/* پالت زنده‌ی مالی — کنتراست متن AA روی پس‌زمینه‌ی روشن */
.fincard--green   { --fc-accent: #0e8a4d; --fc-soft: #d7f5e4; --fc-bg: #effcf4; --fc-border: #b9e9cd; }
.fincard--dgreen  { --fc-accent: #0b6b3f; --fc-soft: #cdeeda; --fc-bg: #eaf8f0; --fc-border: #abdec2; }
.fincard--blue    { --fc-accent: #1565c9; --fc-soft: #d9e9fb; --fc-bg: #f0f7fe; --fc-border: #bcd8f5; }
.fincard--lblue   { --fc-accent: #3a6ea8; --fc-soft: #dfeaf5; --fc-bg: #f3f8fc; --fc-border: #c8dbec; }
.fincard--purple  { --fc-accent: #7a3fc0; --fc-soft: #ecdffa; --fc-bg: #f9f4fe; --fc-border: #d9c3f0; }
.fincard--teal    { --fc-accent: #0d8b93; --fc-soft: #d3f2f4; --fc-bg: #eefafb; --fc-border: #b4e4e8; }
.fincard--gray    { --fc-accent: #5a6675; --fc-soft: #e8ebef; --fc-bg: #f6f7f9; --fc-border: #d7dce2; }
.fincard--orange  { --fc-accent: #d96c00; --fc-soft: #ffe8cf; --fc-bg: #fff8f0; --fc-border: #f6d5ab; }
.fincard--red     { --fc-accent: #d3352b; --fc-soft: #fcdedb; --fc-bg: #fef3f2; --fc-border: #f4c1bd; }
.fincard--crimson { --fc-accent: #b02352; --fc-soft: #f9d9e4; --fc-bg: #fdf1f5; --fc-border: #efbccd; }
.fincard--yellow  { --fc-accent: #a17c00; --fc-soft: #fdf0c2; --fc-bg: #fffbec; --fc-border: #eedd9a; }

/* ── نشان وضعیت سند (vst) ── */
.vst {
    display: inline-block; font-size: var(--fs-xs); font-weight: 700;
    border-radius: 999px; padding: .12rem .6rem; border: 1px solid transparent; white-space: nowrap;
}
.vst--draft     { color: #4a5563; background: #f1f3f6; border-color: #d9dee5; }
.vst--pending   { color: #a34d00; background: #fff3e4; border-color: #f2d9b8; }
.vst--approved  { color: #1f5fa8; background: #ecf4fc; border-color: #cfe1f2; }
.vst--posted    { color: #0f5c38; background: #e9f6ee; border-color: #c4e2d1; }
.vst--rejected  { color: #b3261e; background: #fdeeed; border-color: #f2cfcd; }
.vst--needs_fix { color: #8a6d00; background: #fff8dd; border-color: #efe3ae; }

/* ── فرم سند: جدول ردیف‌ها، کمبو و نوار جمع چسبان ── */
.acc-errlist { margin: .4rem 1.2rem 0 0; padding: 0; }
.acc-tabs { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: .8rem; }
.acc-pager { display: flex; gap: .3rem; flex-wrap: wrap; margin-top: .8rem; }
.acc-lines-table th, .acc-lines-table td { vertical-align: top; }
.acc-lines-table input[type="text"] { width: 100%; min-width: 7rem; }
.acc-col-no { width: 2.2rem; }
.acc-col-account { min-width: 15rem; }
.acc-col-detail { min-width: 11rem; }
.acc-col-amount { width: 9.5rem; }
.acc-col-amount input { text-align: left; font-variant-numeric: tabular-nums; }
.acc-col-ops { width: 10rem; white-space: nowrap; }
.acc-line-extra > td { background: var(--surface-2); }
.acc-extra-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: .5rem; padding: .35rem 0;
}

.acc-combo { position: relative; }
.acc-combo__inp { width: 100%; }
.acc-combo__panel {
    position: absolute; top: calc(100% + 2px); right: 0; left: 0; z-index: 40;
    max-height: 260px; overflow-y: auto; background: var(--surface, #fff);
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    box-shadow: 0 8px 22px rgba(15, 30, 25, .14);
}
.acc-combo__opt { padding: .4rem .6rem; cursor: pointer; font-size: var(--fs-xs); }
.acc-combo__opt:hover { background: var(--surface-2); }
/* گزینهٔ فعالِ کیبورد در Grid سند — باید واضح‌تر از hover باشد چون هنگام کار با
   کیبورد هیچ اشاره‌گری موقعیت را نشان نمی‌دهد. */
.acc-combo__opt.is-active { background: var(--accent-soft, #e6f0ff); color: var(--accent-700, #14549b); font-weight: 600; box-shadow: inset 3px 0 0 var(--accent, #2f6fd0); }
.acc-combo__opt--empty { color: var(--text-muted); cursor: default; }
.acc-combo__sub { color: var(--text-muted); font-size: .72rem; margin-top: .1rem; }
.acc-combo__path { font-size: .72rem; margin-top: .2rem; min-height: .9rem; }

.acc-totals {
    position: sticky; bottom: 0; z-index: 30;
    display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap;
    background: var(--surface, #fff); border: 1px solid var(--border);
    border-radius: var(--radius-sm); padding: .65rem 1rem; margin-top: .8rem;
    box-shadow: 0 -4px 16px rgba(15, 30, 25, .08);
}
.acc-totals__item { display: flex; align-items: center; gap: .45rem; }
.acc-totals__label { font-size: var(--fs-xs); color: var(--text-muted); font-weight: 700; }
.acc-totals__value { font-weight: 800; font-variant-numeric: tabular-nums; }
.acc-totals__actions { margin-right: auto; display: flex; gap: .5rem; flex-wrap: wrap; }

.acc-actions { display: flex; gap: .6rem; flex-wrap: wrap; align-items: flex-start; }
.acc-actions__withnote { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }

/* ── پرونده‌ی مالی پرسنل — بازطراحی فاز P1.6 ───────────────────────────────── */
/* باکس مستقل هر فیلد اطلاعات پرسنلی — عنوان همیشه دقیقاً بالای مقدار خودش،
   با مرز و پس‌زمینه‌ی مجزا تا در هیچ عرضی مقدار زیر عنوانِ فیلدِ دیگر دیده نشود. */
.payff-hr-grid {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    align-items: stretch;
}
.payff-box {
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--surface-2); padding: .55rem .75rem;
}
.payff-box .field__label { margin-bottom: .15rem; }
.payff-box .field__static { padding-top: 0; word-break: break-word; }
/* زیر ۸۸۰px قانون سراسری .form-grid (تک‌ستونه) اعمال می‌شود — نیازی به override اضافه نیست. */
.payff-status-card { border-inline-start: 4px solid var(--border); }
.payff-status--complete, .payff-status--approved { border-inline-start-color: var(--success, #2e8b57); }
.payff-status--ready { border-inline-start-color: var(--info, #2f6fd1); }
.payff-status--incomplete { border-inline-start-color: var(--warning, #d68a1c); }
.payff-status--discrepancy { border-inline-start-color: var(--danger, #c0392b); }
.payff-status--not_started { border-inline-start-color: var(--text-muted, #9aa5b1); }
.payff-status--submitted, .payff-status--rejected { border-inline-start-color: var(--info, #2f6fd1); }
.payff-status--rejected { border-inline-start-color: var(--danger, #c0392b); }

/* چک‌لیست نواقص کلیک‌پذیر — هر نقص با کلیک به بخش مربوطه اسکرول می‌کند (لنگر واقعی، بدون JS) */
.payff-deficiency-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.payff-deficiency-list a.badge { text-decoration: none; cursor: pointer; }
.payff-deficiency-list a.badge:hover { filter: brightness(0.92); }

/* مزایای قانونی — کارت‌های مستقل به‌جای جدول فشرده */
.payff-legal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: .7rem; }
.payff-legal-item__head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .3rem; }
.payff-legal-item__amount { font-size: 1.05rem; font-weight: 700; }
.payff-legal-item__source { color: var(--text-soft); font-size: var(--fs-xs); margin-top: .2rem; }
.payff-legal-item__override { margin-top: .5rem; }
.payff-legal-item__override summary { color: var(--info, #2f6fd1); font-size: var(--fs-xs); cursor: pointer; }

/* خلاصه‌ی بالای کارت بدهی‌ها و کسورات */
.payff-debt-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: .6rem; margin-bottom: .9rem; }
.payff-debt-summary .payff-box { text-align: center; }
.payff-debt-summary .payff-box strong { display: block; font-size: 1.05rem; margin-top: .2rem; }

.payff-item-form .form-grid { align-items: end; }

/* انتخاب ماه/سال پیش‌نمایش حقوق — راست=ماه، چپ=سال، بدون دکمهٔ نمایش (auto-submit) */
.payff-preview-period { display: flex; gap: .5rem; align-items: center; }
.payff-preview-period select { min-width: 6.5rem; }

.field__hint { display: block; margin-top: .25rem; font-size: var(--fs-xs); color: var(--text-soft); }

.payff-bank-actions { margin-top: 1rem; padding-top: .8rem; border-top: 1px dashed var(--border); }

.payff-timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .7rem; }
.payff-timeline__item {
    display: grid; grid-template-columns: 6.5rem 1fr; gap: .8rem;
    padding-inline-start: .8rem; border-inline-start: 2px solid var(--border);
}
.payff-timeline__date { font-weight: 700; color: var(--text-soft); font-size: var(--fs-xs); padding-top: .1rem; }
.payff-timeline__title { font-weight: 600; }
.payff-timeline__reason { color: var(--text-soft); font-size: var(--fs-xs); margin-top: .15rem; }
.payff-timeline__meta { color: var(--text-muted); font-size: .72rem; margin-top: .25rem; }

.payff-actionbar {
    position: sticky; bottom: 0; z-index: 30;
    display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
    background: var(--surface, #fff); border: 1px solid var(--border);
    border-radius: var(--radius-sm); padding: .7rem 1.1rem; margin: .8rem 0 1.2rem;
    box-shadow: 0 -4px 16px rgba(15, 30, 25, .1);
}
.payff-actionbar__actions { display: flex; gap: .5rem; flex-wrap: wrap; }

/* پیش‌نمایش حقوق — ردیف دسته و جمع‌های پایانی */
.payff-preview-cat td { background: var(--surface-2); font-weight: 700; padding-block: .4rem; }
.payff-preview-total td { font-weight: 700; border-top: 1px solid var(--border); }
.payff-preview-net td { font-weight: 800; font-size: 1.05em; color: var(--brand-700, var(--accent)); border-top: 2px solid var(--border); }

@media (max-width: 640px) {
    .payff-timeline__item { grid-template-columns: 1fr; }
    .payff-timeline__date { padding-top: 0; }
    .payff-actionbar { flex-direction: column; align-items: stretch; }
    .payff-actionbar__actions { justify-content: stretch; }
    .payff-actionbar__actions .btn { flex: 1; }
}
.acc-actions__withnote input[type="text"] { min-width: 13rem; }
.acc-journal-total td { font-weight: 800; background: var(--surface-2); }

/* موبایل: کارت‌ها تک/دوستونه، فرم سند بدون بریدگی */
@media (max-width: 880px) {
    .fin-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: .55rem; }
    .fincard__value { font-size: 1.4rem; }
    .acc-totals { gap: .6rem; padding: .55rem .7rem; }
    .acc-totals__actions { width: 100%; margin-right: 0; }
    .acc-totals__actions .btn { flex: 1 1 auto; }
}

/* یوتیلیتی‌های کوچک CSP-safe — به‌جای style اینلاین (CSP style-src 'self' آن را بلاک می‌کند
   و چیدمان صفحات را روی سرور می‌شکست). فقط همین چند مورد پرتکرار. */
.m-0 { margin: 0; }
.mt-05 { margin-top: .5rem; }
.mt-075 { margin-top: .75rem; }
.d-block { display: block; }
.is-hidden { display: none; }
.flex-row { display: flex; gap: .5rem; flex-wrap: wrap; }
.frm-inline { display: inline; }
.frm-row { display: inline-flex; gap: .4rem; align-items: center; flex-wrap: wrap; }
.grow-min { flex: 1 1 200px; min-width: 0; }
.w-pin { width: 150px; }
.field__static { padding-top: .35rem; }
.switch-row { display: flex; align-items: center; gap: .75rem; padding: .4rem 0; cursor: pointer; user-select: none; }
.switch { position: relative; display: inline-flex; width: 44px; height: 24px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; position: absolute; }
.switch__thumb { position: absolute; inset: 0; background: var(--border); border-radius: 24px; transition: background .2s; }
.switch__thumb::after { content: ''; position: absolute; width: 18px; height: 18px; border-radius: 50%; background: #fff; top: 3px; right: 3px; transition: right .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.switch input:checked + .switch__thumb { background: var(--accent); }
.switch input:checked + .switch__thumb::after { right: calc(100% - 21px); }
.form-section--accent { border-right: 3px solid var(--accent); }
.mt-1 { margin-top: .85rem; }
.form-actions { display: flex; gap: .7rem; margin-top: 1.1rem; }

/* ================= جدول ================= */
.table-wrap { overflow-x: auto; max-width: 100%; }
.toolbar > * { max-width: 100%; }
.table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.table th, .table td { text-align: right; padding: .8rem .9rem; }
.table thead th {
    background: var(--surface-2); color: var(--text-muted); font-weight: 600;
    border-bottom: 1px solid var(--border); white-space: nowrap;
}
.table tbody td { border-bottom: 1px solid var(--border); }
.table tbody tr:hover { background: var(--surface-2); }
/* ردیف قابل کلیک (data-href): نشانگر + hover واضح‌تر؛ ردیف‌های بدون لینک دست‌نخورده */
tr[data-href] { cursor: pointer; }
tr[data-href] > td { transition: background .12s; }
.table tbody tr[data-href]:hover { background: var(--accent-soft); box-shadow: inset -3px 0 0 var(--accent); /* نوار سمت راست (RTL) */ }
.table .cell-actions { display: flex; gap: .4rem; align-items: center; justify-content: flex-start; }
.table .cell-actions form { margin: 0; }
.table .muted { color: var(--text-soft); }

/* ---------- هدرِ چسبانِ جدول‌ها (قانون سراسری؛ منطق در app.js) ----------
   app.js هنگام اسکرول thead را با translateY زیرِ هدرِ صفحه نگه می‌دارد؛ این‌جا فقط
   ظاهرِ حالتِ چسبیده: پس‌زمینهٔ مات، سایهٔ بسیار ملایم و لایه‌بندی تا روی ردیف‌ها
   (حتی ستون‌های چسبانِ z-index:3) دیده شود ولی زیرِ هدرِ صفحه (z-index:20) بماند. */
thead.is-stuck { position: relative; z-index: 5; overflow-anchor: none; /* جابه‌جایی transform نباید لنگرِ اسکرول شود */ }
thead.is-stuck th { position: relative; background: var(--surface-2, #eef2f7);
    box-shadow: 0 2px 5px rgba(16, 24, 40, .09); }

/* ================= Badge ================= */
.badge {
    display: inline-flex; align-items: center; gap: .3rem;
    padding: .2rem .55rem; border-radius: 999px;
    font-size: var(--fs-xs); font-weight: 600; line-height: 1.6;
}
.badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.badge--success { background: var(--success-soft); color: var(--success); }
.badge--danger  { background: var(--danger-soft);  color: var(--danger); }
.badge--warning { background: var(--warning-soft); color: var(--warning); }
.badge--info    { background: var(--info-soft);    color: var(--info); }
.badge--muted   { background: #eef1f5; color: var(--text-muted); }
.badge--shift   { background: #e1f5f1; color: #0b7a6a; } /* شیفت شناور — فیروزه‌ای ملایم */
.badge--plain::before { display: none; }

/* ================= Alert ================= */
.alert { display: flex; gap: .6rem; padding: .8rem 1rem; border-radius: var(--radius-sm); font-size: var(--fs-sm); border: 1px solid; margin-bottom: 1rem; }
.alert--ok      { background: var(--success-soft); border-color: #b9e3c6; color: #14622f; }
.alert--error   { background: var(--danger-soft);  border-color: #f3c9c9; color: #9b1c1c; }
.alert--info    { background: var(--info-soft);     border-color: #c7dbfb; color: #1e40af; }
.alert--warn    { background: var(--warning-soft);  border-color: #f2d08a; color: #92600a; }

/* ================= Toolbar / فیلتر ================= */
.toolbar { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: 1rem; }
.toolbar .field { flex-direction: row; align-items: center; gap: .4rem; }
.toolbar input, .toolbar select {
    height: 40px; padding: 0 .7rem;
    border: 1px solid var(--border-strong); border-radius: 9px;
    background: var(--surface); color: var(--text); font: inherit; font-size: var(--fs-sm);
}
.toolbar .grow { flex: 1 1 220px; min-width: 0; }
.toolbar select { min-width: 130px; }
/* کادر جستجو با آیکن داخلی */
.search-wrap {
    position: relative; display: flex; align-items: center;
}
.search-wrap input[type="search"] {
    width: 100%; padding-right: 2.3rem; padding-left: 2.1rem;
}
.search-icon {
    position: absolute; right: .7rem; top: 50%; transform: translateY(-50%);
    color: var(--text-soft); pointer-events: none;
}
.search-clear {
    position: absolute; left: .5rem; top: 50%; transform: translateY(-50%);
    display: grid; place-items: center; width: 22px; height: 22px;
    border-radius: 50%; background: var(--border); color: var(--text-muted);
    text-decoration: none;
}
.search-clear:hover { background: var(--border-strong); }

/* ================= کارت‌های آماری ================= */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)); gap: .9rem; }
.stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.1rem 1.2rem; box-shadow: var(--shadow-sm); display: flex; align-items: center; gap: .9rem; color: var(--text); }
.stat-card:hover { border-color: var(--border-strong); box-shadow: var(--shadow); color: var(--text); }
.stat-card__icon { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; flex: 0 0 auto; }
.stat-card__icon svg { width: 22px; height: 22px; }
.stat-card__value { display: block; font-size: 1.6rem; font-weight: 700; line-height: 1; }
.stat-card__label { display: block; color: var(--text-muted); font-size: var(--fs-sm); margin-top: .25rem; }
.i-blue   { background: var(--accent-soft); color: var(--accent); }
.i-green  { background: var(--success-soft); color: var(--success); }
.i-red    { background: var(--danger-soft); color: var(--danger); }
.i-amber  { background: var(--warning-soft); color: var(--warning); }
.i-navy   { background: #e7ecf3; color: var(--brand); }
.i-teal   { background: #d8f1ec; color: #0d9488; }
.i-purple { background: #ece7fb; color: #7c3aed; }

/* عنوان بخش‌های داشبورد */
.section-title { font-size: var(--fs-base); font-weight: 700; color: var(--text); margin: .4rem 0 .1rem; }
.section-title span { color: var(--text-soft); font-weight: 400; font-size: var(--fs-xs); margin-inline-start: .4rem; }

/* کاشی‌های بخش‌ها */
.tile-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .7rem; }
.tile {
    display: flex; align-items: center; justify-content: space-between; gap: .5rem;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
    padding: .85rem 1rem; color: var(--text); text-decoration: none; box-shadow: var(--shadow-sm);
}
.tile:hover { border-color: var(--border-strong); color: var(--text); }

/* رنگ‌های آیکونی اضافی */
.i-pink   { background: #fce7f0; color: #db2777; }
.i-indigo { background: #e7e9fb; color: #4f46e5; }

/* کاشی‌های رنگیِ بخش‌ها با آیکون */
.sec-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .85rem; }
.sec-tile {
    display: flex; align-items: center; gap: .8rem;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
    padding: .9rem; box-shadow: var(--shadow-sm); color: var(--text); text-decoration: none;
    transition: transform .12s, box-shadow .12s, border-color .12s;
}
.sec-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--border-strong); color: var(--text); }
.sec-tile__icon { width: 46px; height: 46px; border-radius: 13px; display: grid; place-items: center; flex: 0 0 auto; }
.sec-tile__icon svg { width: 23px; height: 23px; }
.sec-tile__body { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.sec-tile__name { font-weight: 600; font-size: var(--fs-sm); line-height: 1.4; }

/* فهرست هشدارها */
.alert-list { display: flex; flex-direction: column; }
.alert-row { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .7rem 0; border-bottom: 1px solid var(--border); }
.alert-row:last-child { border-bottom: none; }
.alert-row__main { display: flex; align-items: center; gap: .6rem; font-size: var(--fs-sm); }
.alert-row__dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }

/* لیست فعالیت اخیر */
.feed { display: flex; flex-direction: column; }
.feed__item { display: flex; gap: .7rem; padding: .7rem 0; border-bottom: 1px solid var(--border); font-size: var(--fs-sm); }
.feed__item:last-child { border-bottom: none; }
.feed__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--accent); margin-top: .55rem; flex: 0 0 auto; }
.feed__main { min-width: 0; }
.feed__meta { color: var(--text-soft); font-size: var(--fs-xs); }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }

/* شبکهٔ کلید/مقدار برای صفحاتِ جزئیاتِ یک رکورد (مشترک، نه مخصوصِ یک ماژول) */
.detail-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .9rem 1.4rem; }
.detail-row { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.detail-row--full { grid-column: 1 / -1; }
.detail-row__k { font-size: var(--fs-xs); color: var(--text-soft); }
.detail-row__v { font-size: var(--fs-sm); font-weight: 600; color: var(--text); overflow-wrap: break-word; }

/* فرمِ کوتاهِ درون‌خطی (فیلتر/تغییرِ‌سریعِ‌وضعیت) — چند فیلد+دکمه در یک ردیف، wrap در موبایل */
.form-inline { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
/* چند فرمِ اقدام (مثلِ اقداماتِ چک) کنارِ هم، هرکدام خودش form-inline است */
.cheque-actions { display: flex; flex-wrap: wrap; gap: .8rem; align-items: flex-start; }
.cheque-actions form { align-items: center; }

/* ================= Empty State ================= */
.empty { text-align: center; padding: 2.5rem 1rem; color: var(--text-soft); }
.empty svg { width: 46px; height: 46px; opacity: .5; margin-bottom: .6rem; }
.empty__title { font-weight: 600; color: var(--text-muted); }

/* ================= Pagination ================= */
.pager { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: 1.1rem; }
.pager a {
    min-width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--border-strong); border-radius: 9px; color: var(--text); font-size: var(--fs-sm);
}
.pager a:hover { background: var(--surface-2); }
.pager a.is-active { background: var(--accent); color: #fff; border-color: var(--accent); }
/* حالت پیمایشِ قبلی/بعدی + شمارهٔ صفحه (بدون استایل inline) */
.pager--nav { align-items: center; justify-content: center; gap: .6rem; }
.pager--nav a { min-width: auto; padding: 0 .9rem; }
.pager__info { color: var(--text-muted); font-size: var(--fs-sm); }
/* نوار جستجوی صفحهٔ نیازمند اقدام */
.hrd-action-toolbar { flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.hrd-action-search { flex: 1 1 220px; min-width: 0; }

/* ================= Tabs ================= */
.tabs { display: flex; gap: .3rem; border-bottom: 1px solid var(--border); margin-bottom: 1.1rem; }
.tabs a { padding: .6rem .9rem; font-size: var(--fs-sm); color: var(--text-muted); border-bottom: 2px solid transparent; }
.tabs a.is-active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }

/* ================= Modal ================= */
.modal { position: fixed; inset: 0; background: rgba(16, 24, 40, .45); display: none; align-items: center; justify-content: center; z-index: 50; padding: 1rem; }
.modal.is-open { display: flex; }
.modal__dialog { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow); width: 100%; max-width: 420px; overflow: hidden; }
.modal__body { padding: 1.4rem; text-align: center; }
.modal__icon { width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; margin: 0 auto .8rem; background: var(--danger-soft); color: var(--danger); }
.modal__title { font-size: var(--fs-lg); margin-bottom: .4rem; }
.modal__text { color: var(--text-muted); font-size: var(--fs-sm); }
.modal__foot { display: flex; gap: .6rem; padding: 1rem 1.4rem; background: var(--surface-2); border-top: 1px solid var(--border); }
.modal__foot .btn { flex: 1; }

/* ===================================================================
   ویجتِ تقویمِ مشترکِ داشبوردها (.cal-w) — یک پیاده‌سازیِ واحد، استفاده در
   داشبوردِ مدیرکل و منابع انسانی (و آینده). عمداً در app.css (سراسری)،
   نه در CSSِ یک صفحهٔ خاص. کارتِ میزبان (.card/.cc-card) پس‌زمینه/padding
   می‌دهد؛ اینجا فقط محتوا. اندازهٔ کارت: .cal-w-card (max-width هر صفحه).
   =================================================================== */
.cal-w-card { min-width: 0; }
/* روی دسکتاپ هم‌اندازهٔ بقیهٔ کارت‌های داشبورد (نه عریضِ تمامِ‌صفحه)، حتی اگر تنها
   موردِ ردیفِ خودش در یک گریدِ auto-fit باشد. */
@media (min-width: 701px) { .cal-w-card { max-width: 320px; } }
.cal-w { position: relative; }
.cal-w.is-loading { opacity: .55; pointer-events: none; }

/* برچسبِ کوچکِ «تقویم» بالای کارت — طبقِ تصویرِ مرجع، جدا از ردیفِ ناوبری/عنوانِ تاریخ. */
.cal-w__label { font-size: .72rem; font-weight: 700; color: var(--text-soft); margin-bottom: .55rem; }

/* ردیفِ ناوبری: فلشِ قبل، عنوانِ کاملِ تاریخِ انتخاب‌شده (نه ماهِ در حالِ مرور) وسط، فلشِ بعد. */
.cal-w__head { display: flex; align-items: center; justify-content: space-between; gap: .3rem; margin-bottom: .85rem; }
.cal-w__title {
    flex: 1 1 auto; min-width: 0; text-align: center; font-size: .92rem; font-weight: 700;
    color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cal-w__nav {
    flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; border: 0;
    background: none; color: var(--text-soft); cursor: pointer; display: grid; place-items: center;
    transition: background .14s ease, color .14s ease;
}
.cal-w__nav svg { width: 16px; height: 16px; }
.cal-w__nav:hover { background: var(--surface-2); color: var(--text); }
.cal-w__nav:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

.cal-w__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-w__dow {
    text-align: center; font-size: .58rem; color: var(--text); font-weight: 700;
    padding-bottom: .5rem; white-space: nowrap; overflow: hidden; text-overflow: clip;
}
.cal-w__dow--friday { color: var(--danger); }
.cal-w__cell {
    position: relative; aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
    border-radius: 50%; font-size: .78rem; font-weight: 600; color: var(--text);
    border: 2px solid transparent; background: none; font-family: inherit; cursor: pointer; padding: 0;
    font-variant-numeric: tabular-nums; transition: background .14s ease, color .14s ease, transform .1s ease, border-color .14s ease;
}
.cal-w__cell:hover:not(.cal-w__cell--adjacent) { background: var(--surface-2); }
.cal-w__cell:active:not(.cal-w__cell--adjacent) { transform: scale(.92); }
.cal-w__cell:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
/* روزهای ماهِ قبل/بعد: فقط نمایشی (span، نه button) — کم‌رنگ، بدونِ cursor/hover. */
.cal-w__cell--adjacent { color: var(--text-soft); opacity: .55; cursor: default; }
.cal-w__cell--friday { color: var(--danger); }
/* امروز = فقط حلقه (توپُر نه)؛ مستقل از انتخاب‌شده — حتی وقتی روزِ دیگری انتخاب است باید امروز پیدا باشد. */
.cal-w__cell--today { border-color: var(--brand); font-weight: 800; }
/* انتخاب‌شده = دایرهٔ توپُر؛ اگر هم‌زمان امروز هم باشد، حلقهٔ امروز به‌صورتِ سایهٔ بیرونی حفظ می‌شود. */
.cal-w__cell--selected { background: var(--brand); color: #fff; font-weight: 800; border-color: var(--brand); }
.cal-w__cell--selected:hover { background: var(--brand); color: #fff; }
.cal-w__cell--selected.cal-w__cell--today { box-shadow: 0 0 0 2px var(--surface, #fff), 0 0 0 4px var(--brand); }
.cal-w__dot { position: absolute; bottom: 2px; width: 4px; height: 4px; border-radius: 50%; background: var(--warning); }
.cal-w__cell--selected .cal-w__dot { background: #fff; }

.cal-w__foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-top: .7rem; flex-wrap: wrap; }
.cal-w__today-btn {
    font-size: .68rem; font-weight: 700; color: var(--accent); background: var(--accent-soft);
    border: 0; border-radius: 999px; padding: .25rem .7rem; cursor: pointer; transition: background .14s ease;
}
.cal-w__today-btn:hover { background: var(--accent); color: #fff; }
.cal-w__legend { display: flex; align-items: center; gap: .4rem; font-size: .64rem; color: var(--text-soft); }
.cal-w__legend .cal-w__dot { position: static; }

/* موبایل: نامِ کاملِ روزهای هفته کمی تنگ می‌شود؛ فونتِ کمی کوچک‌تر برای جلوگیری از شکستنِ خط. */
@media (max-width: 420px) {
    .cal-w__dow { font-size: .52rem; }
    .cal-w__title { font-size: .86rem; }
}

/* ── مودالِ جزئیاتِ روزِ ویجتِ تقویم (موقعیت/پس‌زمینه/باز-بسته‌شدن از .modal سراسری) ── */
.cal-day-modal__dialog { position: relative; max-height: 82vh; overflow-y: auto; padding: 1.3rem 1.3rem 1.1rem; }
.cal-day-modal__close {
    position: absolute; top: .8rem; inset-inline-start: .8rem; width: 30px; height: 30px;
    border-radius: 50%; border: 0; background: var(--surface-2); color: var(--text-muted); cursor: pointer;
    display: grid; place-items: center;
}
.cal-day-modal__close:hover { background: var(--border); color: var(--text); }
.cal-day-modal__head { font-size: var(--fs-lg); font-weight: 700; color: var(--text); margin-bottom: .9rem; padding-inline-start: 2rem; }
.cal-day-modal__loading, .cal-day-modal__empty { text-align: center; color: var(--text-soft); padding: 1.5rem 0; font-size: var(--fs-sm); }
.cal-day-sec { margin-bottom: 1rem; }
.cal-day-sec:last-child { margin-bottom: 0; }
.cal-day-sec__title { font-size: var(--fs-xs); font-weight: 700; color: var(--text-muted); margin-bottom: .45rem; display: flex; align-items: center; gap: .35rem; }
.cal-day-sec__title svg { width: 15px; height: 15px; color: var(--accent); }
.cal-day-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .4rem 0; border-bottom: 1px dashed var(--border); font-size: var(--fs-sm); }
.cal-day-row:last-child { border-bottom: none; }
.cal-day-row__name { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-day-row__link { text-decoration: none; }
.cal-day-row__link:hover { color: var(--accent); text-decoration: underline; }
.cal-day-row__meta { flex: 0 0 auto; font-size: .7rem; color: var(--text-soft); }
.cal-day-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; }
.cal-day-stat { text-align: center; background: var(--surface-2); border-radius: 9px; padding: .5rem .3rem; }
.cal-day-stat__v { display: block; font-size: 1rem; font-weight: 800; color: var(--text); }
.cal-day-stat__l { display: block; font-size: .64rem; color: var(--text-soft); margin-top: .1rem; }

/* ===== مودال اجباری پیام‌های خوانده‌نشدهٔ کارتابل (Blocking) ===== */
.force-lock { overflow: hidden !important; }
.force-msg { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center;
    padding: 1rem; background: rgba(16, 24, 40, .58); backdrop-filter: blur(2px); }
.force-msg__dialog { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow);
    width: 100%; max-width: 560px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
.force-msg__head { display: flex; align-items: flex-start; gap: .75rem; padding: 1.2rem 1.4rem 1rem;
    border-bottom: 1px solid var(--border); }
.force-msg__badge { flex: 0 0 auto; min-width: 34px; height: 34px; padding: 0 .5rem; border-radius: 10px;
    display: inline-flex; align-items: center; justify-content: center; font-weight: 800;
    background: var(--brand); color: #fff; }
.force-msg__title { font-size: var(--fs-lg); color: var(--brand); margin: 0; }
.force-msg__sub { color: var(--text-muted); font-size: var(--fs-sm); margin: .25rem 0 0; line-height: 1.8; }
.force-msg__list { overflow-y: auto; padding: 1rem 1.4rem; display: flex; flex-direction: column; gap: .8rem; }
.force-msg__item { border: 1px solid var(--border); border-inline-start: 4px solid var(--border-strong, #d4deec);
    border-radius: var(--radius); background: var(--surface-2); padding: .85rem 1rem; }
.force-msg__item--important { border-inline-start-color: #e0912f; }
.force-msg__item--urgent { border-inline-start-color: #d9646a; }
.force-msg__meta { display: flex; align-items: center; gap: .5rem; margin-bottom: .4rem; }
.force-msg__prio { font-size: .72rem; font-weight: 700; padding: .1rem .5rem; border-radius: 999px; }
.force-msg__prio--important { background: #fdf5ea; color: #b06a10; }
.force-msg__prio--urgent { background: #fdf1f1; color: #b3363d; }
.force-msg__item-title { font-size: 1rem; margin: 0 0 .35rem; color: var(--text); }
.force-msg__body { color: var(--text-muted); font-size: var(--fs-sm); line-height: 1.9; word-break: break-word; }
.force-msg__foot { display: flex; gap: .6rem; padding: 1rem 1.4rem; background: var(--surface-2);
    border-top: 1px solid var(--border); }
.force-msg__foot .btn { flex: 1; }
@media (max-width: 600px) {
    .force-msg { padding: 0; }
    .force-msg__dialog { max-width: none; max-height: 100vh; height: 100dvh; border-radius: 0; }
    .force-msg__foot { flex-direction: column-reverse; }
}

/* ── اعلانِ غیرمسدودکنندهٔ تأخیر: نوارِ هشدارِ ماندگار (سطح ج) ── */
.late-bar { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
    background: #fdf5ea; border: 1px solid #f0d3a0; border-inline-start: 4px solid #e0912f;
    color: #8a5a12; border-radius: var(--radius); padding: .7rem .9rem; margin-bottom: .9rem; }
.late-bar__icon { flex: 0 0 auto; width: 20px; height: 20px; color: #cf8420; }
.late-bar__text { flex: 1 1 220px; font-size: var(--fs-sm); line-height: 1.7; }
.late-bar__btn { flex: 0 0 auto; }

/* پنجرهٔ خلاصهٔ تأییدِ مشاهده — غیرمسدودکننده (بدون قفلِ اسکرول) */
.late-modal { position: fixed; inset: 0; z-index: 190; display: flex; align-items: center; justify-content: center;
    padding: 1rem; background: rgba(16, 24, 40, .5); }
.late-modal[hidden] { display: none; }
.late-modal__dialog { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow);
    width: 100%; max-width: 560px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
.late-modal__head { padding: 1.1rem 1.4rem .9rem; border-bottom: 1px solid var(--border); }
.late-modal__title { font-size: var(--fs-lg); color: #b06a10; margin: 0; }
.late-modal__sub { color: var(--text-muted); font-size: var(--fs-sm); margin: .3rem 0 0; line-height: 1.8; }
.late-modal__list { overflow-y: auto; padding: 1rem 1.4rem; display: flex; flex-direction: column; gap: .8rem; }
.late-item { border: 1px solid var(--border); border-inline-start: 4px solid #e0912f; border-radius: var(--radius);
    background: var(--surface-2); padding: .85rem 1rem; }
.late-item__title { font-size: 1rem; margin: 0 0 .35rem; color: var(--text); }
.late-item__body { color: var(--text); font-size: var(--fs-sm); line-height: 1.9; word-break: break-word; }
.late-item__foot { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .7rem; }
.late-modal__foot { display: flex; justify-content: flex-start; padding: .9rem 1.4rem; background: var(--surface-2);
    border-top: 1px solid var(--border); }

/* toastِ پس از ثبتِ ورودِ با تأخیر (گوشهٔ پایین؛ غیرمسدودکننده) */
.att-late-toast { position: fixed; inset-block-end: 16px; inset-inline: 16px; z-index: 180; margin-inline: auto;
    max-width: 440px; background: var(--surface); border: 1px solid #f0d3a0; border-inline-start: 4px solid #e0912f;
    border-radius: var(--radius); box-shadow: var(--shadow); padding: .9rem 1rem; }
.att-late-toast--ack { border-inline-start-color: #d9646a; }
.att-late-toast__text { color: var(--text); font-size: var(--fs-sm); line-height: 1.9; margin-bottom: .7rem; }
.att-late-toast__row { display: flex; gap: .5rem; flex-wrap: wrap; }

/* وضعیتِ «نیازمند تأیید مشاهده» و «تأییدشده» در صندوقِ پیامِ پرسنل */
.msg-item__ack { display: inline-flex; align-items: center; gap: .4rem; margin: 0; }
.msg-item__ackmark { color: var(--success); font-size: var(--fs-sm); font-weight: 600; }

/* ── «خروجِ ناقصِ روز قبل»: نوارِ هشدارِ غیرمسدودکننده + مودالِ مسدودکننده ── */
.oe-bar { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
    background: #fdf1f1; border: 1px solid #f0bcbc; border-inline-start: 4px solid #d9646a;
    color: #9a2f36; border-radius: var(--radius); padding: .7rem .9rem; margin-bottom: .9rem; }
.oe-bar__icon { flex: 0 0 auto; width: 20px; height: 20px; color: #cf4b52; }
.oe-bar__text { flex: 1 1 220px; font-size: var(--fs-sm); line-height: 1.7; }

.oe-modal { position: fixed; inset: 0; z-index: 210; display: flex; align-items: center; justify-content: center;
    padding: 1rem; background: rgba(16, 24, 40, .62); backdrop-filter: blur(2px); }
.oe-modal__dialog { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow);
    width: 100%; max-width: 500px; display: flex; flex-direction: column; overflow: hidden; }
.oe-modal__head { padding: 1.1rem 1.4rem .6rem; }
.oe-modal__title { font-size: var(--fs-lg); color: #b3363d; margin: 0; }
.oe-modal__body { padding: 0 1.4rem 1rem; color: var(--text); font-size: var(--fs-sm); line-height: 1.95; }
.oe-modal__foot { display: flex; gap: .6rem; padding: 1rem 1.4rem; background: var(--surface-2);
    border-top: 1px solid var(--border); }
.oe-modal__foot .btn { flex: 1; }
@media (max-width: 600px) {
    .oe-modal { padding: 0; }
    .oe-modal__dialog { max-width: none; max-height: 100dvh; height: 100dvh; border-radius: 0; justify-content: center; }
    .oe-modal__foot { flex-direction: column-reverse; }
}

/* ================= صفحه ورود / حالت بدون پنل ================= */
.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 1.25rem; }
.auth-card { width: 100%; max-width: 400px; }
.auth-brand { text-align: center; margin-bottom: 1.3rem; }
.auth-brand .logo { width: 52px; height: 52px; border-radius: 14px; background: var(--brand); color: #fff; display: grid; place-items: center; margin: 0 auto .7rem; font-weight: 700; font-size: 1.3rem; }
.auth-brand h1 { font-size: var(--fs-lg); color: var(--brand); }
.auth-brand p { color: var(--text-soft); font-size: var(--fs-sm); margin: .2rem 0 0; }

/* اعداد LTR کنترل‌شده در متن فارسی در صورت نیاز */
.ltr { direction: ltr; unicode-bidi: embed; display: inline-block; }
/* .ltr روی سلول جدول نباید display را عوض کند — inline-block سلول را از چیدمان جدول خارج
   و ستون‌ها را با سرستون‌ها جابه‌جا می‌کرد (باگ هم‌ترازی جدول کارکرد). */
td.ltr, th.ltr { display: table-cell; }
.text-muted { color: var(--text-muted); }
.mt-1 { margin-top: 1rem; }

/* ================= دسکتاپ (≥881px) ================= */
@media (min-width: 881px) {
    /* header__start فقط همبرگر دارد — روی دسکتاپ مخفی چون hamburger هم hidden است */
    .header__start { display: none; }

    /* ═══ مدلِ اسکرول مثل YouTube (فقط دسکتاپ/لپ‌تاپ؛ RTL) ═══════════════════════════════
       منو سمتِ راست ثابت است؛ محتوای اصلی (.main) کانتینرِ اسکرولِ مستقلِ خودش می‌شود تا در
       RTL اسکرول‌بارِ اصلی سمتِ چپِ صفحه بیفتد — دور و جدا از منو (نه چسبیده و کنارِ آن).
       بدنه دیگر اسکرول نمی‌کند تا دو اسکرول‌بارِ عمودی هم‌زمان کنار هم دیده نشوند. */
    html, body { height: 100%; overflow: hidden; }
    .layout { height: 100vh; min-height: 0; }
    .main {
        height: 100vh;
        overflow-y: auto; overflow-x: hidden;
        overscroll-behavior: contain;
        scrollbar-gutter: stable;
        /* اسکرول‌بارِ اصلی: نازک و مدرن (سمتِ چپ در RTL) — نه ضخیمِ ویندوزیِ قدیمی */
        scrollbar-width: thin;
        scrollbar-color: rgba(22, 52, 95, .22) transparent;
    }
    html.force-lock .main { overflow: hidden !important; } /* هنگام پیام اجباری، main هم قفل شود */

    /* اسکرول منو و فلای‌اوت: نازک، مدرن، و فقط روی hoverِ منو واضح (مثل YouTube). بدون فلشِ
       ضخیم؛ در حالت عادی شفاف و غیرمزاحم، با ورود موس به منو نمایان می‌شود. */
    .sidebar__scroll, .nav__panel-inner {
        scrollbar-gutter: stable;
        scrollbar-width: thin;
        scrollbar-color: transparent transparent;
    }
    .sidebar:hover .sidebar__scroll { scrollbar-color: rgba(22, 52, 95, .30) transparent; }
    .nav__panel:hover .nav__panel-inner { scrollbar-color: rgba(22, 52, 95, .30) transparent; }

    /* عنوان و breadcrumb از طرف راست (RTL flex-start) */
    .header { justify-content: space-between; }
    /* نوار fixed سمت راست از جریان خارج است؛ محتوا به‌اندازهٔ نوار از راست فاصله بگیرد. */
    .main { margin-right: var(--nav-rail-w); }

    /* ── منوی دسکتاپ: رِیلِ آیکونی + فلای‌اوتِ شناور با hover (رفتارِ اصلی، برگردانده‌شده
       طبقِ بازخوردِ کاربر) — فقط رنگ‌بندی تیره/سبزِ جدید ماند؛ تعاملِ hover-flyout مثلِ قبل.
       چون `.nav__head`/`.nav__panel-*`/`.nav__sublink` از توکن‌های عمومی (--text/--surface/
       --accent/...) استفاده می‌کنند و این توکن‌ها رویِ `.sidebar` به پالتِ تیره/سبز بازتعریف
       شده‌اند، همین رنگ‌بندیِ جدید خودکار اعمال می‌شود. `.nav__group--*` (رنگ‌های موبایل)
       این‌جا خنثی می‌مانند (یک اکسنتِ واحد). */
    .nav__group { margin-bottom: 2px; overflow: visible; }
    .nav__head {
        background: transparent; border-radius: 9px;
        transition: background .14s ease, color .14s ease;
    }
    .nav__ic { background: transparent; box-shadow: none; }
    .nav__icon { color: var(--text-muted); stroke-width: 2; width: 22px; height: 22px; }
    .nav__text { color: var(--text); font-weight: 500; font-size: .875rem; }
    .nav__chev { color: var(--text-soft); opacity: .85; stroke-width: 2; }

    /* Hover — پس‌زمینهٔ ملایم؛ آیکن کمی پررنگ‌تر */
    .nav__head:hover { background: var(--surface-2); }
    .nav__head:hover .nav__icon { color: var(--text); }

    /* گروهِ باز (زیرمنویش نمایان است) — همان هایلایتِ ملایم */
    .nav__group.is-open > .nav__head { background: var(--surface-2); }
    .nav__group.is-open > .nav__head .nav__icon { color: var(--text); }

    /* Active (صفحهٔ جاری) — تنها اکسنتِ رنگی: پس‌زمینهٔ سبزِ بسیار ملایم + نوار کناری +
       آیکن/عنوانِ سبزِ برند + وزنِ بیشتر. */
    .nav__group.is-current > .nav__head,
    .nav__head.is-active {
        background: var(--accent-soft);
        box-shadow: inset 3px 0 0 var(--accent);
    }
    .nav__group.is-current > .nav__head .nav__text,
    .nav__head.is-active .nav__text { color: var(--accent-700); font-weight: 600; }
    .nav__group.is-current > .nav__head .nav__icon,
    .nav__head.is-active .nav__icon { color: var(--accent-700); }
    .nav__group.is-current > .nav__head::before,
    .nav__head.is-active::before { display: none; }

    /* فلای‌اوت (زیرمنو) هماهنگ با پالتِ خنثی/سبز: سرِ تیره با عنوانِ روشن + آیکنِ اکسنتِ سبز؛
       گزینه‌ها خنثی، فعال با اکسنتِ سبز. */
    .nav__panel-head { background: var(--surface); border-bottom: 1px solid var(--border); }
    .nav__panel-ic { background: var(--accent-soft); color: var(--accent-700); }
    .nav__panel-title { color: var(--text); }
    .nav__sublink::before { background: var(--accent); }
    .nav__sublink:hover { background: var(--surface-2); color: var(--text); }
    .nav__sublink.is-active { background: var(--accent-soft); color: var(--accent-700); border-inline-start-color: var(--accent); }

    /* ── تضمینِ Flyoutِ شناور (نه آکاردئونِ داخل ستون) ──────────────────────────
       زیرمنو باید به‌صورت پنلِ شناورِ fixed کنارِ ستون باز شود؛ هرگز داخل ستون رشد نکند
       و ارتفاعِ ردیف‌های ستون اصلی را تغییر ندهد. */
    .nav__panel {
        position: fixed; right: var(--nav-rail-w); left: auto; width: var(--nav-panel-w);
        height: auto; max-height: calc(100vh - 16px);
        display: flex; flex-direction: column;
    }
    .nav__group.is-open > .nav__panel { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
    .nav__group:not(.is-open) > .nav__panel { visibility: hidden; opacity: 0; pointer-events: none; }
}

/* ================= واکنش‌گرا / موبایل ================= */
.modal-backdrop-mobile { display: none; }

@media (max-width: 880px) {
    .layout { grid-template-columns: 1fr; }
    .hamburger { display: inline-flex; }
    .sidebar {
        position: fixed; inset: 0 0 0 auto; right: 0;
        width: min(84%, 360px); z-index: 60; background: var(--surface);
        transform: translateX(100%); transition: transform .25s ease;
        box-shadow: -8px 0 24px rgba(16,24,40,.18);
    }
    body.nav-open .sidebar { transform: translateX(0); }
    body.nav-open .scrim { display: block; }
    /* قفل اسکرول پس‌زمینه هنگام بازبودن منو؛ خود منو اسکرول مستقل دارد.
       قفل باید روی html باشد (scroller اصلی viewport)؛ کلاس را app.js روی هر دو می‌گذارد. */
    html.nav-open, body.nav-open { overflow: hidden; }
    .scrim { display: none; position: fixed; inset: 0; background: rgba(16,24,40,.4); z-index: 55; }

    /* ── ساختار دو‌سطحی (rail + flyout) → آکاردئون کشویی تمام‌عرض در موبایل ── */
    .sidebar__rail {
        position: static; width: 100%; height: 100%;
        border-inline-start: 0; background: var(--surface);
        display: flex; flex-direction: column;
    }
    .sidebar__brand { flex-direction: row; justify-content: flex-start; padding: 0 1.05rem; gap: .65rem; }
    .sidebar__titles { display: flex; }
    .sidebar__brand-cap { display: none; }
    .sidebar__scroll { padding: .5rem .55rem 1rem; }

    .nav__section { padding: 0; }
    .nav__section:first-child { margin-top: .35rem; }
    .nav__section + .nav__section { margin-top: .55rem; padding-top: .55rem; }
    .nav__section-label {
        display: block; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .02em;
        color: var(--text-muted); padding: .5rem .8rem .35rem;
    }
    .nav__head {
        flex-direction: row; justify-content: flex-start; align-items: center; gap: .7rem;
        padding: .72rem .8rem; color: var(--text); text-align: start; border-radius: 11px;
    }
    /* آیکن‌ها روی موبایل بدون چیپ ولی هم‌رنگِ ماهیت بخش؛ عرض ثابت برای هم‌ترازیِ متن‌ها */
    .nav__ic { width: 26px; height: 22px; border-radius: 0; background: none !important; box-shadow: none !important; color: var(--gc-700); }
    .nav__icon { width: 21px; height: 21px; }
    /* Hover ملایمِ خنثی */
    .nav__head:hover { background: var(--surface-2); color: var(--text); }
    /* صفحهٔ جاری: پیلِ ملایمِ هم‌رنگ + نوار کوچک کناری (Highlight ساده، بدون بازکردن خودکار) */
    .nav__group.is-current > .nav__head,
    .nav__head.is-active { background: var(--gc-soft); color: var(--gc-700); font-weight: 700; }
    /* گروهِ بازشده (توسط کاربر): تأکیدِ خنثیِ ملایم تا با «صفحهٔ جاری» اشتباه نشود */
    .nav__group.is-open:not(.is-current) > .nav__head { background: var(--surface-2); color: var(--text); font-weight: 600; }
    .nav__group.is-open > .nav__head .nav__ic,
    .nav__group.is-current > .nav__head .nav__ic,
    .nav__head.is-active .nav__ic { color: var(--gc-700); }
    .nav__group.is-current > .nav__head::before,
    .nav__head.is-active::before {
        display: block; content: ""; position: absolute; inset-inline-start: 0; top: 50%;
        transform: translateY(-50%); width: 3px; height: 56%; border-radius: 0 3px 3px 0; background: var(--gc);
    }
    .nav__group.is-open:not(.is-current) > .nav__head::before { display: none; }
    .nav__text {
        display: block; -webkit-line-clamp: initial; flex: 1 1 auto; min-width: 0;
        font-size: var(--fs-sm); line-height: 1.5; color: inherit;
        overflow: hidden; text-overflow: ellipsis; white-space: nowrap; word-break: normal;
    }
    .nav__chev {
        display: block; width: 16px; height: 16px; flex: 0 0 auto; color: var(--text-soft);
        transform: rotate(0); /* بازنشانی چرخش ۹۰درجهٔ دسکتاپ؛ آکاردئون رو به پایین است */
        opacity: .6; transition: transform .22s ease, opacity .22s ease;
    }
    .nav__group.is-open > .nav__head .nav__chev { transform: rotate(180deg); opacity: .9; }

    /* پنل شناور → آکاردئون درون‌خطی (position:static + انیمیشن max-height) */
    .nav__panel {
        position: static; width: auto; height: auto;
        background: none; border: 0; box-shadow: none;
        display: block; max-height: 0; overflow: hidden;
        visibility: visible; opacity: 1; transform: none; pointer-events: auto;
        transition: max-height .28s ease;
    }
    .nav__group.is-open > .nav__panel { display: block; max-height: 1600px; }
    .nav__panel-head { display: none; }
    /* کارت زیرمنو سبک و تمیز: بدون بوردر سنگین، گوشهٔ نرم، تورفتگیِ خوانا */
    .nav__panel-inner {
        margin: .2rem .55rem .5rem 1.15rem; padding: .3rem .35rem; gap: 1px;
        background: var(--surface-2); border: 0; border-radius: 12px;
        overflow: visible; min-height: 0;
    }
    /* گزینه‌های زیرمنو: کنتراست بهتر + هدف لمسیِ بزرگ‌تر */
    .nav__panel-inner .nav__sublink { color: var(--text); padding: .56rem .7rem; border-radius: 9px; }
    .nav__panel-inner .nav__sublink .nav__soon { color: var(--text-soft); }

    /* footer تمام‌عرض با متن کامل */
    .sidebar__foot { padding: .4rem .55rem .55rem; }
    .nav__section--foot { gap: 0; }
    .nav__foot-link {
        flex-direction: row; justify-content: flex-start; align-items: center; gap: .55rem;
        padding: .55rem .65rem; color: var(--text); text-align: start; border-radius: 9px;
    }
    .nav__foot-link .nav__ic { width: auto; height: auto; }
    .nav__foot-link .nav__text { font-size: var(--fs-sm); }
    .nav__foot-link .nav__soon { display: inline-block; }
    .nav__foot-link .nav__icon { color: var(--text-muted); }
    .sidebar__version { display: block; padding: .45rem .65rem .15rem; font-size: var(--fs-xs); color: var(--text-soft); }

    .form-grid { grid-template-columns: 1fr; }
    .grid-2 { grid-template-columns: 1fr; }
    .stat-grid { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
    .stat-card { padding: .8rem; gap: .6rem; }
    .stat-card__value { font-size: 1.35rem; }
    .content { padding: .75rem 1rem 1rem; gap: .75rem; max-width: 100%; }
    .page-back { margin-bottom: -.1rem; }
    .toolbar { flex-direction: column; align-items: stretch; }
    .toolbar input, .toolbar select, .toolbar .grow { width: 100%; flex: 0 0 auto; }
    .header__id { display: none; }
    /* جلوگیری از زوم خودکار iOS هنگام فوکوس روی فیلدها */
    input, select, textarea { font-size: 16px; }
    .form-actions { flex-direction: column; }
    .form-actions .btn { width: 100%; }
    .card__head { flex-direction: column; align-items: stretch; gap: .6rem; }
    .card__head .btn { width: 100%; }
    .header { padding: 0 1rem; }

    /* جدول‌ها در موبایل به کارت تبدیل می‌شوند */
    .table.responsive thead { display: none; }
    .table.responsive tbody tr {
        display: block; background: var(--surface); border: 1px solid var(--border);
        border-radius: var(--radius); margin-bottom: .8rem; padding: .4rem .9rem;
    }
    .table.responsive tbody td {
        display: flex; justify-content: space-between; gap: 1rem; align-items: center;
        border-bottom: 1px dashed var(--border); padding: .55rem 0;
    }
    .table.responsive tbody tr td:last-child { border-bottom: none; }
    .table.responsive tbody td::before {
        content: attr(data-label); color: var(--text-soft); font-size: var(--fs-xs); font-weight: 600;
    }
    .table.responsive .cell-actions { justify-content: flex-end; }
    .table.responsive .cell-actions::before { content: ""; }
}

@media (max-width: 420px) {
    .stat-card { padding: .9rem; }
    .header__id { display: none; }
}

/* ================= داشبورد منابع انسانی — کارت‌های رنگی ================= */
.hrd-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: .85rem;
}
.hrd-card {
    display: flex; align-items: center; gap: .75rem;
    border-radius: var(--radius); padding: .9rem 1rem;
    text-decoration: none; border: 1px solid transparent;
    transition: transform .12s, box-shadow .12s;
    box-shadow: 0 2px 8px rgba(22,52,95,.10);
    min-height: 82px;
    /* المان تزئینی دایره‌ای */
    position: relative; overflow: hidden; isolation: isolate;
}
/* دایره بزرگ — گوشه چپ-پایین */
.hrd-card::before {
    content: ""; position: absolute; pointer-events: none; z-index: 0;
    border-radius: 50%;
    width: 160px; height: 160px;
    left: -80px; bottom: -60px;
    background: rgba(255,255,255,.13);
}
/* دایره کوچک‌تر — روی دایره بزرگ */
.hrd-card::after {
    content: ""; position: absolute; pointer-events: none; z-index: 0;
    border-radius: 50%;
    width: 90px; height: 90px;
    left: -38px; bottom: -28px;
    background: rgba(255,255,255,.10);
}
.hrd-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(22,52,95,.16); }
.hrd-card__icon {
    width: 42px; height: 42px; border-radius: 10px; flex: 0 0 auto;
    display: grid; place-items: center;
    background: rgba(255,255,255,.25);
    position: relative; z-index: 1;
}
.hrd-card__icon svg { width: 20px; height: 20px; }
.hrd-card__body { display: flex; flex-direction: column; gap: .1rem; min-width: 0; flex: 1; position: relative; z-index: 1; }
.hrd-card__value { font-size: 1.6rem; font-weight: 700; line-height: 1.1; }
.hrd-card__label { font-size: .75rem; font-weight: 500; opacity: .82; line-height: 1.3; }

/* ── هدر داشبورد HR: نوار ناوبری روز روی همان ردیفِ دکمهٔ «بازگشت» (حذف ردیف و ارتفاع خالیِ بالا) ──
   دکمهٔ «بازگشت» سمت راست (page-back) و نوار تاریخ سمت چپ؛ با margin منفی به یک ردیف می‌آیند.
   روی موبایل ریست می‌شود تا تداخل نکند. */
.hrd-head { display: flex; justify-content: flex-end; align-items: center; gap: 1rem; flex-wrap: wrap;
    margin: -2.9rem 0 0; position: relative; z-index: 1; pointer-events: none; }
/* فقط عناصر واقعیِ داخل نوار کلیک بگیرند؛ ناحیهٔ خالیِ نوار کلیک را به دکمهٔ بازگشتِ پشتِ آن رد کند. */
.hrd-head > * { pointer-events: auto; }
@media (max-width: 880px) { .hrd-head { margin-top: 0; } }

/* ── قانون ثابت محل تاریخ: نوار ابزارِ صفحه؛ گروه تاریخ همیشه سمت چپِ فیزیکی (حتی در RTL) ──
   کامپوننت مشترک: partials/date-nav.php (کلاس .page-date-nav). ابزارهای دیگر در همان ردیف؛
   در عرضِ کم به‌صورت کنترل‌شده wrap می‌شود. صفحهٔ جدیدِ تاریخ‌دار باید از همین الگو استفاده کند. */
.page-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.page-toolbar .page-date-nav { margin-inline-start: auto; } /* margin-inline-start:auto در RTL → پینِ گروه تاریخ به چپِ فیزیکی */
/* در ردیف‌های space-between (مثل هدر «وضعیت حضور امروز»): گروه تاریخ آخرین آیتم ⇒ در RTL چپ‌ترین. */
.att-head__row .page-date-nav { order: 99; }

/* ── ناوبری روزِ داشبورد (قابل‌انتخاب) — نوار تمیز، تک‌آیکن، تاریخ کامل ── */
.hrd-datenav { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.hrd-datenav__cap { font-size: .82rem; font-weight: 600; color: var(--text-soft); margin-inline-end: .15rem; }
.hrd-datenav__nav {
    width: 36px; height: 36px; flex: 0 0 auto; border-radius: 10px;
    display: grid; place-items: center;
    background: var(--surface, #fff); border: 1px solid var(--border, #d9dee6); color: var(--text, #25314a);
    transition: border-color .12s, background .12s, box-shadow .12s;
}
.hrd-datenav__nav:hover { border-color: var(--brand-700); background: var(--surface-2); box-shadow: 0 2px 8px rgba(18, 48, 41, .1); }
.hrd-datenav__nav svg { width: 18px; height: 18px; }
.hrd-datenav__nav.is-disabled { opacity: .35; pointer-events: none; }
/* فیلد تاریخ: آیکن تقویم از قاعدهٔ سراسری [data-jpicker] می‌آید (تک‌آیکن)؛ عرض کافی برای «۱۴۰۵/۰۴/۱۴». */
.hrd-datenav__date {
    box-sizing: border-box; height: 36px; width: 9.5rem;
    border: 1px solid var(--border, #d9dee6); background: var(--surface, #fff); border-radius: 10px;
    font-size: .95rem; font-weight: 700; color: var(--text, #25314a); cursor: pointer; outline: none;
    text-align: center; transition: border-color .12s, box-shadow .12s;
}
.hrd-datenav__date:hover, .hrd-datenav__date:focus { border-color: var(--brand-700); box-shadow: 0 2px 8px rgba(22, 52, 95, .1); }
.hrd-datenav__today { margin-inline-start: .3rem; }

/* ── کارت‌های شاخص عددی (فقط آمار) — رنگ ملایم با نوار و آیکون رنگی ── */
/* گروه‌بندی موضوعی: هر گروه یک گرید مستقل با فاصلهٔ پایین برای جداییِ بصری تمیز */
.hrd-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: .8rem; margin-bottom: 1.35rem; }
/* سرتیتر گروه‌های شاخص در داشبورد HR — کمی برجسته‌تر با نوار رنگی کوتاه */
.section-title.section-title--hr { display: flex; align-items: center; gap: .5rem; margin-top: .2rem; }
.section-title.section-title--hr::before { content: ""; width: 4px; height: 1.05em; border-radius: 3px; background: var(--sec-bar, var(--brand-700)); }
/* آیکون کوچک دستهٔ «مرکز اقدام و پیگیری» کنار سرتیتر */
.section-title--hr .ac-cat-ic { display: inline-flex; }
.section-title--hr .ac-cat-ic svg { width: 1.05em; height: 1.05em; color: var(--text-soft); }
/* لینکِ کوچکِ Debugِ «تطبیق آمار حضور» کنارِ سرتیترِ «حضور امروز» — فقط مدیرکل. */
.hrd-section__debug-link { margin-inline-start: .4rem; font-size: .78rem; font-weight: 600; white-space: nowrap; color: var(--accent); }

/* ── سکشن‌های دسته‌بندیِ داشبورد HR: هر دسته یک پنل پس‌زمینهٔ ملایم و مرزدار ──
   هدف: نظم بصری ERP بدون کارت تو در تو؛ کارت‌های رنگی داخل هر پنل دست‌نخورده می‌مانند. */
.hrd-section {
    background: var(--sec-bg, #f4f7fb);
    border: 1px solid var(--sec-bd, #e3e9f2);
    border-radius: var(--radius-lg);
    padding: .9rem 1.05rem 1rem;
    margin-bottom: .2rem; /* فاصلهٔ اصلی بین سکشن‌ها از gap کانتینر می‌آید؛ margin فقط بافر کوچک */
}
.hrd-section > .section-title { margin-top: 0; margin-bottom: .7rem; }
.hrd-section .hrd-stats { margin-bottom: 0; }
/* زیربخش داخل یک پنل (مثل «نیازمند اقدام» درون «مرکز اقدام») — بدون باکس تو در تو */
.hrd-subsection + .hrd-subsection { margin-top: 1rem; }
.hrd-subsection > .section-title { margin-top: 0; margin-bottom: .6rem; }

/* تم رنگیِ ملایمِ هر دسته — هماهنگ با ماهیت بخش؛ نوار سرتیتر با --sec-bar */
/* تینت‌های پنلِ بخش — هم‌خانوادهٔ زمینهٔ Atelier (سبزِ خنثیٰ) با تمایزِ ظریف */
.hrd-section--people  { --sec-bg: #edf2ef; --sec-bd: #dce6e0; --sec-bar: var(--brand); }
.hrd-section--today   { --sec-bg: #e9f4ee; --sec-bd: #d3e7db; --sec-bar: var(--accent); }
.hrd-section--recruit { --sec-bg: #f1eefb; --sec-bd: #e1dbf4; --sec-bar: #6b5aa8; }
.hrd-section--action  { --sec-bg: #f0f2ee; --sec-bd: #e0e4dc; --sec-bar: #4a5f56; }
.hrd-section--done    { --sec-bg: #ebf5ee; --sec-bd: #d5e9dc; --sec-bar: var(--success); }
/* نوار سرتیترِ زیربخش‌ها داخل «مرکز اقدام» با رنگ ماهیت خودشان */
.section-title--todo::before     { background: #ea8a4d; }
.section-title--followup::before { background: #3f78c4; }
.section-title--alert::before    { background: #e0574a; }
.section-title--done::before     { background: #2d7a5a; }
/* موبایل: پدینگ جمع‌وجورتر پنل‌ها + امکان دو ستونه‌شدنِ کارت‌ها در فضای تنگ */
@media (max-width: 600px) {
    .hrd-section { padding: .8rem .7rem .85rem; }
    .hrd-section .hrd-stats { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .55rem; }
}
/* کارت آمار — رنگ‌بندیِ اصلیِ اشباع و متنوع (به‌خواست کاربر حفظ شد)؛ فقط سایه/فاصله/هاور مدرن. */
.hrd-stat {
    position: relative; overflow: hidden; isolation: isolate;
    display: flex; align-items: center; gap: .65rem;
    background: var(--c-bg, var(--brand-700)); color: var(--c-fg, #fff);
    border: 1px solid var(--c-bd, transparent);
    border-radius: var(--radius); padding: .75rem .85rem; min-height: 78px;
    text-decoration: none; box-shadow: 0 1px 4px rgba(22, 52, 95, .08);
    transition: transform .12s, box-shadow .12s;
}
a.hrd-stat:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(22, 52, 95, .16); }
/* یک دایرهٔ تزئینیِ ملایم و کم‌رنگ گوشهٔ پایین (تمیزتر و بدون شلوغی) */
.hrd-stat::before { content: ""; position: absolute; z-index: 0; pointer-events: none; border-radius: 50%;
    width: 96px; height: 96px; inset-inline-start: -44px; bottom: -40px; background: var(--c-circle, rgba(255, 255, 255, .10)); }
.hrd-stat__icon {
    position: relative; z-index: 1;
    width: 38px; height: 38px; border-radius: 10px; flex: 0 0 auto;
    display: grid; place-items: center;
    background: var(--c-iconbg, rgba(255, 255, 255, .2)); color: var(--c-fg, #fff);
}
.hrd-stat__icon svg { width: 19px; height: 19px; }
.hrd-stat__body { position: relative; z-index: 1; display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.hrd-stat__value { font-size: 1.5rem; font-weight: 800; line-height: 1.15; font-variant-numeric: tabular-nums; }
.hrd-stat__label { font-size: .82rem; font-weight: 700; line-height: 1.3; }
.hrd-stat__desc { font-size: .7rem; line-height: 1.4; opacity: .8; }

/* حالت بدون داده — خنثی و کم‌رنگ (مقدار «—») */
.hrd-stat.is-na {
    --c-bg: var(--surface-2, #eef1f5); --c-fg: var(--text-soft, #8a98ad); --c-bd: var(--border, #d9dee6);
    --c-circle: rgba(0, 0, 0, .03); --c-circle2: rgba(0, 0, 0, .02); --c-iconbg: rgba(0, 0, 0, .05);
}

/* پالت رنگیِ اشباع و معنایی — کارت‌های تیره متن سفید، کارت‌های روشن متن تیره */
.hrd-stat--navy   { --c-bg: #102845; --c-fg: #fff; --c-bd: #173163; } /* سرمه‌ایِ اصلیِ قبلی (literal، مستقل از توکنِ برند جدید) */
.hrd-stat--green  { --c-bg: #2d7a5a; --c-fg: #fff; --c-bd: #236048; }
.hrd-stat--blue   { --c-bg: #3f78c4; --c-fg: #fff; --c-bd: #3266ac; }
.hrd-stat--teal   { --c-bg: #1e8a9e; --c-fg: #fff; --c-bd: #177282; }
.hrd-stat--red    { --c-bg: #e0574a; --c-fg: #fff; --c-bd: #cf4235; }
.hrd-stat--orange { --c-bg: #ea8a4d; --c-fg: #fff; --c-bd: #dc7838; }
.hrd-stat--indigo { --c-bg: #6a5bc4; --c-fg: #fff; --c-bd: #584bb0; }
.hrd-stat--slate  { --c-bg: #64748b; --c-fg: #fff; --c-bd: #54607a; }
/* کارت‌های روشن — متن تیره؛ دایره و آیکون‌بج با تینت مناسب */
.hrd-stat--softgreen, .hrd-stat--yellow, .hrd-stat--purple, .hrd-stat--amber {
    --c-circle: rgba(0, 0, 0, .055); --c-circle2: rgba(0, 0, 0, .04); --c-iconbg: rgba(255, 255, 255, .5);
}
.hrd-stat--softgreen { --c-bg: #bce8cd; --c-fg: #145228; --c-bd: #98d8ae; }
.hrd-stat--yellow    { --c-bg: #ecd873; --c-fg: #5a4600; --c-bd: #ddc74f; }
.hrd-stat--purple    { --c-bg: #d6c9f1; --c-fg: #3a1a80; --c-bd: #bfaee8; }
.hrd-stat--amber     { --c-bg: #f2d98f; --c-fg: #6f4a08; --c-bd: #e6c76a; }

/* ── کاشی‌های میانبر (فقط Navigation) ── */
.hrd-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); gap: .8rem; }
.hrd-tile {
    display: flex; align-items: center; gap: .7rem;
    background: var(--surface, #fff); color: var(--text, #25314a);
    border: 1px solid var(--border, #d9dee6); border-radius: var(--radius);
    padding: .85rem .95rem; text-decoration: none;
    transition: border-color .12s, box-shadow .12s, transform .12s;
}
.hrd-tile:hover { border-color: var(--brand-700); box-shadow: 0 4px 14px rgba(22, 52, 95, .1); transform: translateY(-1px); }
.hrd-tile__icon {
    width: 40px; height: 40px; border-radius: 10px; flex: 0 0 auto;
    display: grid; place-items: center; background: #eaf0fa; color: var(--brand-700);
}
.hrd-tile__icon svg { width: 20px; height: 20px; }
.hrd-tile__body { display: flex; flex-direction: column; gap: .1rem; min-width: 0; flex: 1; }
.hrd-tile__title { font-size: .9rem; }
.hrd-tile__desc { font-size: .74rem; color: var(--text-soft); line-height: 1.4; }
.hrd-tile__arrow { color: var(--text-soft); font-size: 1.1rem; flex: 0 0 auto; }
.hrd-tile.is-soon { opacity: .65; pointer-events: none; }
.hrd-tile.is-soon .hrd-tile__desc::after { content: " — در مرحلهٔ بعد فعال می‌شود"; color: #8a6d0b; }

/* ── ردیف‌های feed داشبورد (بدون استایل inline — CSP) ── */
.hrd-feed-main { width: 100%; }
.hrd-feed-row { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; }
.feed__dot--warning { background: var(--warning); }
.feed__dot--danger { background: var(--danger); }

/* نمودار */
.hrd-chart-legend {
    display: flex; gap: 1.2rem; align-items: center;
    font-size: var(--fs-xs); color: var(--text-muted);
    margin-bottom: .8rem; flex-wrap: wrap;
}
.hrd-legend-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; margin-left: .3rem; }
.hrd-legend-dot--present { background: var(--accent); }
.hrd-legend-dot--absent { background: var(--danger); }
.hrd-legend-dot--late { background: var(--warning); }
.hrd-legend-dot--leave { background: var(--violet, #6b5aa8); }
.hrd-chart-canvas { width: 100%; max-width: 100%; display: block; }

/* ── Breakpoints — sidebar=252px، content = viewport - 252px ──
   1400px+  → 5 ستون  (content≥1148px)
   1100–1399px → 4 ستون (content≈848–1147px)
   881–1099px  → 3 ستون (content≈629–847px)
   ≤880px   → موبایل (sidebar پنهان)
*/
@media (max-width: 1399px) {
    .hrd-grid { grid-template-columns: repeat(4, 1fr); gap: .75rem; }
    .hrd-card__value { font-size: 1.5rem; }
}
@media (max-width: 1099px) {
    .hrd-grid { grid-template-columns: repeat(3, 1fr); gap: .65rem; }
    .hrd-card { padding: .8rem .85rem; min-height: 78px; }
    .hrd-card__value { font-size: 1.4rem; }
}
/* موبایل — sidebar پنهان، content تمام عرض */
@media (max-width: 880px) {
    .hrd-grid { grid-template-columns: repeat(2, 1fr); gap: .55rem; }
    .hrd-card { padding: .75rem .8rem; gap: .6rem; min-height: 70px; }
    .hrd-card::before { width: 110px; height: 110px; left: -55px; bottom: -42px; }
    .hrd-card::after  { width: 65px;  height: 65px;  left: -28px; bottom: -20px; }
    .hrd-card__value { font-size: 1.35rem; }
    .hrd-card__icon { width: 36px; height: 36px; }
    .hrd-card__icon svg { width: 18px; height: 18px; }
}
@media (max-width: 380px) {
    .hrd-grid { grid-template-columns: 1fr; }
}

/* ================= بخش‌های کاری — محتوای کارت (Grid/Card از hrd reuse می‌شود) ================= */

/* نام بخش داخل hrd-card__body */
.sc-card__name {
    font-weight: 700; font-size: var(--fs-sm); line-height: 1.3;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden;
}
/* badge اداری / عملیاتی */
.sc-card__badge {
    display: inline-block; padding: .1rem .45rem; align-self: flex-start;
    border-radius: 999px; font-size: .65rem; font-weight: 600;
}
.sc-card__badge--ops   { background: rgba(255,255,255,.30); color: inherit; }
.sc-card__badge--admin { background: rgba(255,255,255,.22); color: inherit; }

/* ۱۹ رنگ اختصاصی بخش‌ها — روی hrd-card اعمال می‌شوند */
.sc-c1  { background: var(--brand-700); color: #fff; border-color: #163066; }
.sc-c2  { background: #2d7a5a; color: #fff; border-color: #236048; }
.sc-c3  { background: #d5c8f0; color: #3a1a80; border-color: #b8a8e0; }
.sc-c4  { background: #4a8ed4; color: #fff; border-color: #3070b8; }
.sc-c5  { background: #f5c4c4; color: #8a1a1a; border-color: #e8a4a4; }
.sc-c6  { background: #e8d88c; color: #4a3800; border-color: #d4c060; }
.sc-c7  { background: #b5e8c8; color: #145228; border-color: #8fd4a8; }
.sc-c8  { background: #f8c8a8; color: #7a3a0a; border-color: #f0ac84; }
.sc-c9  { background: #c8d8f5; color: #1a3060; border-color: #a8c0e8; }
.sc-c10 { background: #e87060; color: #fff; border-color: #d45848; }
.sc-c11 { background: #b8a8e0; color: #2a0868; border-color: #9888c8; }
.sc-c12 { background: #a8d8c8; color: #0d4030; border-color: #80c0a8; }
.sc-c13 { background: #f5d8a8; color: #7a4008; border-color: #e8c080; }
.sc-c14 { background: #a8d898; color: #1a4810; border-color: #80c070; }
.sc-c15 { background: #2a5298; color: #fff; border-color: #1e3c78; }
.sc-c16 { background: #5b9bd5; color: #fff; border-color: #4080b8; }
.sc-c17 { background: #80c0b8; color: #003830; border-color: #60a898; }
.sc-c18 { background: #e8a060; color: #4a1800; border-color: #d07840; }
.sc-c19 { background: #48a870; color: #fff; border-color: #308050; }

/* ── Header موبایل: راست=همبرگر | وسط=عنوان | چپ=کاربر ── */
@media (max-width: 880px) {
    .header {
        position: relative; height: 54px;
        padding: 0 .65rem; overflow: visible;
    }
    .header__start {
        position: absolute; right: .65rem; top: 50%; transform: translateY(-50%);
        z-index: 2;
    }
    .header__titles {
        position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%);
        text-align: center; pointer-events: none; padding: 0 90px;
    }
    .header__title {
        font-size: var(--fs-sm); white-space: nowrap;
        overflow: hidden; text-overflow: ellipsis;
    }
    .header .breadcrumb { display: none; }
    .header__user {
        position: absolute; left: .65rem; top: 50%; transform: translateY(-50%);
        gap: .35rem; z-index: 2;
    }
    .header__user .header__id { display: none; }
    .header__user .btn--ghost .btn-label { display: none; }
    .header__user .btn--ghost { padding: 0 .4rem; height: 32px; min-width: 32px; }
    .avatar { width: 32px; height: 32px; font-size: .8rem; }
}

/* ── Toggle switch ── */
.toggle { display: inline-flex; align-items: center; cursor: pointer; gap: .4rem; }
.toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.toggle__track {
    position: relative; width: 44px; height: 24px; border-radius: 12px;
    background: var(--border); transition: background .2s;
    flex-shrink: 0;
}
.toggle__track::after {
    content: ''; position: absolute; top: 3px; right: 3px;
    width: 18px; height: 18px; border-radius: 50%;
    background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25);
    transition: transform .2s;
}
.toggle input:checked ~ .toggle__track { background: var(--primary); }
.toggle input:checked ~ .toggle__track::after { transform: translateX(-20px); }
.toggle input:focus-visible ~ .toggle__track { outline: 2px solid var(--primary); outline-offset: 2px; }

/* ── Helper ── */
.mt-1 { margin-top: .75rem; }
.grow { flex: 1 1 0; }

/* ══════════════════════════════════════════════════════════
   تقویم شمسی — jalali-picker
   ══════════════════════════════════════════════════════════ */

/* فیلد خطا */
.field__err { display: block; color: var(--danger); font-size: .78rem; margin-top: .25rem; }
.field--err input,
.field--err .field__inp,
.field--err select,
.field--err textarea { border-color: var(--danger) !important; box-shadow: 0 0 0 2px var(--danger-soft) !important; }
.field__label.req::after { content: ' *'; color: var(--danger); }

/* تقویم */
.jpicker {
    position: absolute;
    z-index: 10000;
    background: var(--surface);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    width: 280px;
    padding: .5rem;
    display: none;
    direction: rtl;
    font-size: .85rem;
}
.jpicker__nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .35rem;
    direction: rtl; /* راست‌چین: «ماه قبل» (›) سمت راست، «ماه بعد» (‹) سمت چپ */
}
.jpicker__btn {
    background: none;
    border: none;
    cursor: pointer;
    padding: .25rem .5rem;
    border-radius: var(--radius-sm);
    color: var(--text);
    font-family: inherit;
    font-size: .9rem;
    transition: background .15s;
}
.jpicker__btn:hover { background: var(--accent-soft); }
.jpicker__lbl { flex: 1; text-align: center; font-weight: 600; color: var(--brand); font-size: .875rem; }
.jpicker__prev,.jpicker__next { font-size: 1.3rem; line-height: 1; color: var(--text-muted); }
.jpicker__weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    color: var(--text-soft);
    font-size: .75rem;
    margin-bottom: .2rem;
    padding-bottom: .2rem;
    border-bottom: 1px solid var(--border);
}
.jpicker__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}
.jpicker__grid--months,
.jpicker__grid--years {
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
}
.jpicker__cell--month,
.jpicker__cell--year { padding: .55rem 0; font-size: .85rem; }
.jpicker__cell {
    background: none;
    border: none;
    padding: .3rem 0;
    border-radius: 6px;
    cursor: pointer;
    text-align: center;
    font-family: inherit;
    font-size: .825rem;
    color: var(--text);
    transition: background .12s, color .12s;
}
.jpicker__cell:hover { background: var(--accent-soft); color: var(--accent); }
.jpicker__cell--empty { cursor: default; }
.jpicker__cell--disabled { color: var(--text-soft); opacity: .35; cursor: not-allowed; pointer-events: none; }
.jpicker__cell--today { color: var(--accent); font-weight: 600; }
.jpicker__cell--sel { background: var(--accent) !important; color: #fff !important; font-weight: 700; }
.jpicker__foot {
    display: flex;
    gap: .5rem;
    margin-top: .4rem;
    padding-top: .4rem;
    border-top: 1px solid var(--border);
}
/* «امروز» = اقدامِ اصلیِ تقویم: رنگِ لهجه + وزنِ بالا + حالت‌های Hover/Active/Focus واضح */
.jpicker__today { flex: 1; font-size: .78rem; color: var(--accent); font-weight: 700; border: 1px solid var(--accent-soft); }
.jpicker__today:hover { background: var(--accent-soft); border-color: var(--accent); }
.jpicker__clear { flex: 1; font-size: .78rem; color: var(--danger); }
.jpicker__clear:hover { background: var(--danger-soft); }
.jpicker__btn:active { transform: translateY(1px); }
.jpicker__btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

/* فیلد تاریخ — نشانگر تقویم */
[data-jpicker] { cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a98ad' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: left .75rem center; padding-left: 2.2rem; }

/* نسخه‌ی مستقل ماژول — فوتر کوچک و غیرمزاحم پایین هر صفحه‌ی ماژول */
.module-version {
    margin-top: 1.25rem;
    padding-top: .6rem;
    border-top: 1px dashed var(--border-strong, #d4deec);
    color: var(--text-soft, #8a98ad);
    font-size: .74rem;
    text-align: center;
}
.module-version .ltr { direction: ltr; unicode-bidi: embed; }

/* ── Combobox جستجوپذیر (combo.js) — اینجا چون CSP تزریق <style> را بلاک می‌کند ── */
.combo{position:relative}
.combo .combo-search{width:100%}
.combo-panel{position:absolute;z-index:60;top:calc(100% + 2px);inset-inline-start:0;inset-inline-end:0;max-height:300px;overflow:auto;background:var(--surface,#fff);border:1px solid var(--border,#d9dee6);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:.25rem}
.combo-opt{padding:.45rem .6rem;border-radius:6px;cursor:pointer;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-opt:hover{background:var(--surface-2,#eef2f7)}
/* گزینهٔ فعالِ کیبورد باید واضح‌تر از hover باشد: هنگام کار با کیبورد هیچ اشاره‌گری
   وجود ندارد که موقعیت را نشان دهد، پس نشانهٔ رنگی + نوارِ کناری لازم است. */
.combo-opt.is-active{background:var(--accent-soft,#e6f0ff);color:var(--accent-700,#14549b);font-weight:600;box-shadow:inset 3px 0 0 var(--accent,#2f6fd0)}
.combo-empty{padding:.5rem .6rem;color:var(--muted,#8a94a6);font-size:.85rem}
.combo.is-disabled .combo-search{background:var(--surface-2,#eef2f7);cursor:not-allowed;color:var(--muted,#8a94a6)}
/* کارت فرمِ حاویِ combo: overflow آزاد تا پنل آبشاری در کارت‌های کوتاه بریده نشود
   (پیش‌فرض .card دارای overflow:hidden برای گوشه‌های گرد است). پنل با z-index 60
   روی کارت/جدولِ بعدی می‌افتد. عرض پنل = عرض فیلد (inset-inline 0). */
.card--combo{overflow:visible}

/* ── راهنما و پشتیبانی — آکاردئون بومی <details> (بدون JS، سازگار با CSP) ── */
.help-acc details{border:1px solid var(--border,#d9dee6);border-radius:10px;margin-bottom:.55rem;background:var(--surface,#fff);overflow:hidden}
.help-acc details:last-child{margin-bottom:0}
.help-acc summary{cursor:pointer;padding:.7rem .9rem;font-weight:600;font-size:.93rem;list-style:none;position:relative;user-select:none}
.help-acc summary::-webkit-details-marker{display:none}
.help-acc summary::after{content:'‹';position:absolute;inset-inline-end:.9rem;top:50%;transform:translateY(-50%) rotate(-90deg);color:var(--text-soft,#8a98ad);transition:transform .15s}
.help-acc details[open] summary::after{transform:translateY(-50%) rotate(90deg)}
.help-acc details[open] summary{border-bottom:1px solid var(--border,#e7edf6);background:var(--surface-2,#f5f8fc)}
.help-acc details p{margin:0;padding:.7rem .9rem;font-size:.9rem;line-height:1.9;color:var(--text,#25314a)}

/* (کاشی‌های میزکار HR به .hrd-tile منتقل شد — hrd-card فقط برای صفحهٔ بخش‌ها) */

/* ── صفحهٔ ورود در موبایل با کیبورد باز (ارتفاع کم): فشرده تا دکمهٔ ورود در دید بماند ── */
@media (max-height: 640px) {
    .auth-shell { align-items: flex-start; padding-top: .9rem; }
    .auth-brand { margin-bottom: .8rem; }
    .auth-brand .logo { width: 42px; height: 42px; font-size: 1.1rem; margin-bottom: .45rem; }
    .auth-brand p { display: none; }
}
/* ورودی‌های صفحهٔ ورود: حداقل 16px تا Safari موبایل هنگام فوکوس زوم نکند */
.auth-card input { font-size: 16px; }

/* ── پروفایل من: نمایش فقط‌خواندنی واقعی (label/value)، نه input قابل‌ویرایش ── */
.pinfo{display:grid;grid-template-columns:repeat(2,1fr);column-gap:1.6rem}
.pinfo__row{display:flex;justify-content:space-between;align-items:center;gap:.9rem;padding:.6rem .1rem;border-bottom:1px dashed var(--border,#e3e9f2);min-width:0}
.pinfo__label{color:var(--text-soft,#8a98ad);font-size:.85rem;flex:0 0 auto}
.pinfo__value{font-weight:600;color:var(--text,#25314a);text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pinfo__value.ltr{direction:ltr;unicode-bidi:embed}
@media (max-width: 880px){ .pinfo{grid-template-columns:1fr} }

/* ── تمیزکاری سبک منوی موبایل: تنفس بهتر هدر برند، تفکیک ملایم بخش‌ها و فوتر ── */
@media (max-width: 880px) {
    .sidebar__brand { padding: .85rem 1.05rem; min-height: 0; }
    .sidebar__scroll { padding: .55rem .7rem 1rem; }
    .nav__section + .nav__section { border-top: 1px solid var(--border, #edf1f7); margin-top: .65rem; padding-top: .5rem; }
    .sidebar__foot { padding: .5rem .7rem .7rem; margin-top: .5rem; }
    .nav__foot-link { padding: .62rem .7rem; gap: .6rem; }
    .sidebar__version { padding: .55rem .7rem .2rem; }
}

/* ── پیام‌ها و اعلان‌های من (صندوق فقط‌خواندنی پرسنل) ── */
.msg-list{display:flex;flex-direction:column;gap:.65rem}
.msg-item{border:1px solid var(--border,#dfe6f0);border-radius:12px;padding:.8rem .95rem;background:var(--surface,#fff)}
.msg-item--unread{border-inline-start:4px solid var(--accent);background:var(--accent-soft)}
.msg-item__head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.4rem}
.msg-item__title{font-weight:700;font-size:.95rem;flex:1 1 auto;min-width:0}
.msg-item__body{font-size:.9rem;line-height:1.9;color:var(--text,#25314a);word-break:break-word}
.msg-item__foot{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.55rem}
.msg-item__date{font-size:.78rem;color:var(--text-soft,#8a98ad)}
.msg-item__readmark{font-size:.8rem;color:var(--success,#1a9c4e);font-weight:600}
.empty__desc{font-size:.85rem;color:var(--text-soft,#8a98ad);margin-top:.25rem}

/* ── فرم مدیریتی پیام‌های پرسنل: انتخاب مخاطب (هماهنگ با فرم‌های استاندارد سامانه) ── */
.aud { display: flex; flex-direction: column; gap: .7rem; }
/* هر گزینه یک ردیف رادیو تمیز؛ گزینهٔ دارای کنترل، کنترلش تو رفته و کامل زیرش می‌آید */
.aud-choice { display: flex; align-items: center; gap: .55rem; font-size: var(--fs-sm); font-weight: 700;
    color: var(--text, #25314a); cursor: pointer; padding: .1rem 0; }
.aud-choice input[type=radio] { width: 18px; height: 18px; flex: 0 0 auto; accent-color: var(--brand-700); cursor: pointer; }
.aud-choice-block { display: flex; flex-direction: column; gap: .5rem; }
.aud-panel { padding-inline-start: 1.75rem; display: flex; flex-direction: column; gap: .6rem; }

/* کنترل‌ها دقیقاً مثل فیلدهای استاندارد فرم (ارتفاع/بردر/شعاع/فونت یکسان) */
.aud-select, .aud-search__inp, .aud-search__sec {
    height: var(--control-h); padding: 0 .8rem; box-sizing: border-box;
    background: var(--surface); border: 1px solid var(--border-strong); border-radius: 9px;
    color: var(--text); font: inherit; font-size: var(--fs-sm);
    transition: border-color .15s, box-shadow .15s;
}
.aud-select:focus, .aud-search__inp:focus, .aud-search__sec:focus {
    outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft);
}
.aud-select { max-width: 360px; width: 100%; }

/* نوار جستجوی پرسنل — input بزرگ و خوانا + فیلتر بخش کنارش */
.aud-search { display: flex; gap: .6rem; flex-wrap: wrap; }
.aud-search__inp { flex: 1 1 280px; min-width: 0; }
.aud-search__sec { flex: 0 0 auto; min-width: 170px; max-width: 220px; }
.aud-count { font-size: var(--fs-xs); color: var(--text-soft, #8a98ad); }

/* گرید پرسنل — قابل اسکرول، مرتب، با فاصلهٔ استاندارد */
.aud-people { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .35rem;
    max-height: 320px; overflow-y: auto; border: 1px solid var(--border-strong, #d4deec); border-radius: 9px;
    padding: .55rem; background: var(--surface-2, #f7f9fc); }
.aud-person { display: flex; align-items: center; gap: .5rem; font-size: var(--fs-sm); min-width: 0;
    padding: .5rem .6rem; border-radius: 8px; border: 1px solid transparent; cursor: pointer;
    transition: background .12s, border-color .12s; }
/* مخفی‌سازی aud-person اکنون با قانون سراسری [hidden]{display:none!important} تأمین می‌شود. */
.aud-person:hover { background: #fff; border-color: var(--border, #dfe6f0); }
.aud-person input[type=checkbox] { width: 17px; height: 17px; flex: 0 0 auto; accent-color: var(--brand-700); cursor: pointer; }
.aud-person__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.aud-person__sec { color: var(--text-soft, #8a98ad); flex: 0 0 auto; margin-inline-start: auto; font-size: var(--fs-xs); }
/* حالت انتخاب‌شده — واضح (آبی ملایم) */
.aud-person.is-selected { background: #e8f0fb; border-color: #b9d0ef; }
.aud-person.is-selected .aud-person__name { font-weight: 700; color: var(--brand-700); }
.aud-empty { padding: .8rem .5rem; color: var(--text-soft, #8a98ad); font-size: var(--fs-sm); text-align: center; }

.msg-item--urgent{border-color:#e23b35;border-inline-start:4px solid #e23b35}
.msg-item--urgent.msg-item--unread{background:#fff6f5}

/* ── پرونده مهارتی و عملکردی: گرید معیارهای ارزیابی با راهنمای کوتاه ── */
.crit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.7rem}
.crit{border:1px solid var(--border,#dfe6f0);border-radius:12px;padding:.7rem .85rem;background:var(--surface,#fff)}
.crit__head{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.crit__label{font-weight:700;font-size:.9rem}
.crit__score{max-width:84px;text-align:center}
.crit__value{font-weight:700;font-size:.95rem;color:var(--text,#25314a)}
.crit__value--good{color:#1a9c4e}
.crit__value--low{color:#e23b35}
.crit__hint{font-size:.78rem;color:var(--text-soft,#8a98ad);margin-top:.35rem;line-height:1.7}

/* ── سطح‌بندی مهارتی داخلی: باکس پیشنهاد سیستم با دلایل شفاف ── */
.lvl-suggest{border:1px dashed var(--border-strong,#c9d5e6);border-radius:12px;padding:.8rem .95rem;background:var(--surface-2,#f7f9fc)}
.lvl-suggest__head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-weight:700;font-size:.92rem}
.lvl-suggest__reasons{margin:.55rem 1.2rem 0 0;padding:0;font-size:.84rem;color:var(--text-muted,#586882);line-height:1.9}
.lvl-suggest__reasons li{margin-bottom:.1rem}

/* ── مسیر رشد من: نمای شخصی مثبت پرسنل (سبک، بدون رنگ تند/هشدار) ── */
.grow{max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:.9rem}
.grow-hero{display:flex;align-items:center;gap:.8rem;background:linear-gradient(135deg,#eef4ff,#f3fbf5);border:1px solid #dbe7f7;border-radius:16px;padding:1.1rem 1.15rem}
.grow-hero__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:#fff;color:var(--accent);flex:0 0 auto;box-shadow:0 2px 8px rgba(29,122,88,.12)}
.grow-hero__msg{font-weight:700;font-size:1.02rem;line-height:1.9;color:#1e3a5f}
.grow-card{background:var(--surface,#fff);border:1px solid var(--border,#e3e9f2);border-radius:16px;padding:1rem 1.1rem}
.grow-card__title{font-weight:700;font-size:.95rem;margin-bottom:.7rem;color:var(--text,#25314a)}
.grow-item{border:1px solid var(--border,#e9eef6);border-radius:12px;padding:.7rem .85rem;margin-bottom:.55rem;background:var(--surface-2,#f8fafd)}
.grow-item:last-child{margin-bottom:0}
.grow-item--active{border-inline-start:4px solid var(--accent)}
.grow-item--suggested{border-inline-start:4px solid #9aa9c4}
.grow-item--done{border-inline-start:4px solid #1a9c4e}
.grow-item__head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}
.grow-item__name{font-weight:700;font-size:.92rem}
.grow-item__meta{font-size:.8rem;color:var(--text-soft,#8a98ad);margin-top:.25rem}
.grow-item__note{font-size:.82rem;color:var(--text-muted,#586882);margin-top:.35rem;line-height:1.8}
.grow-skills{display:flex;flex-direction:column;gap:.45rem}
.grow-skill{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.55rem .7rem;border:1px solid var(--border,#e9eef6);border-radius:10px}
.grow-skill__name{font-weight:600;font-size:.9rem;flex:1 1 auto;min-width:0}
.grow-skill__cat{font-size:.78rem;color:var(--text-soft,#8a98ad)}
@media (max-width:880px){ .grow{max-width:none} }

/* ── ستاره‌های عملکرد (نمایشی — معرفی قابلیت آینده) در ردیف دکمهٔ بازگشت ──
   سبک سازمانی مینیمال: چیپ بی‌قاب و کم‌ارتفاع، ستاره‌های خنثی (slate) با ته‌رنگ
   طلاییِ بسیار ملایم فقط در hover/باز بودن؛ هم‌تراز با دکمهٔ بازگشت؛ Popover کوچک. */
.perf-wrap{position:relative;display:inline-flex;flex:0 0 auto;align-self:center}
.perf-stars{display:inline-flex;align-items:center;gap:3px;padding:.3rem .35rem;border:0;border-radius:8px;background:transparent;cursor:pointer;line-height:0;transition:background .15s,color .15s}
.perf-stars:hover,.perf-stars[aria-expanded="true"]{background:var(--surface-2,#eef2f7)}
.perf-star{width:14px;height:14px;color:#b6c0cf;fill:none}
.perf-stars:hover .perf-star,.perf-stars[aria-expanded="true"] .perf-star{color:#c4ad74}
.perf-pop{position:absolute;top:calc(100% + 7px);inset-inline-end:0;z-index:70;width:min(280px,76vw);background:var(--surface,#fff);border:1px solid var(--border,#e3e9f2);border-radius:10px;box-shadow:0 6px 18px rgba(16,24,40,.12);padding:.55rem .75rem;font-size:.78rem;line-height:1.85;color:var(--text-muted,#586882);text-align:start}
@media (max-width:880px){ .perf-star{width:13px;height:13px} .perf-pop{width:min(260px,74vw)} }

/* ===== مدیریت واحدهای سازمانی (sections/index + unit-form) ===== */
.card__head-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.seg { display: inline-flex; border: 1px solid var(--border, #e3e9f2); border-radius: var(--radius-sm, 8px); overflow: hidden; }
.seg__btn { padding: .4rem .95rem; font-size: var(--fs-sm, .85rem); color: var(--text-muted, #586882); text-decoration: none; background: var(--surface, #fff); border-inline-start: 1px solid var(--border, #e3e9f2); }
.seg__btn:first-child { border-inline-start: 0; }
.seg__btn.is-active { background: var(--brand, #1e3a5f); color: #fff; }
.inline-form { display: inline; }
.org-ops { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }

/* ═══════════════════════ مدارک هویتیِ پرسنل (personnel-documents.js) ═══════════════════════ */
.pdoc__x { display: none; }
.pdoc .pdoc-subtitle { font-size: var(--fs-sm); font-weight: 700; color: var(--text); margin: .2rem 0 .6rem; }
.pdoc .pdoc-subtitle--mt { margin-top: 1.4rem; padding-top: 1rem; border-top: 1px dashed var(--border-strong); }
.pdoc-flash { padding: .55rem .8rem; border-radius: var(--radius-sm); font-size: var(--fs-sm); margin-bottom: .8rem;
    background: var(--surface-2); color: var(--text-muted); border: 1px solid var(--border); }
.pdoc-flash--ok { background: var(--success-soft); color: var(--success); border-color: #bfe6d2; }
.pdoc-flash--error { background: var(--danger-soft); color: var(--danger); border-color: #f3c9c9; }

/* دکمه‌های کوچکِ اختصاصیِ این بخش */
.pdoc .btn--xs { height: 28px; padding: 0 .55rem; font-size: .72rem; border-radius: 7px; }
.pdoc .btn--danger-ghost { background: transparent; color: var(--danger); border-color: transparent; }
.pdoc .btn--danger-ghost:hover { background: var(--danger-soft); }

/* کارت ملی — دو جایگاه */
.pdoc-slots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.pdoc-slot { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2); padding: .8rem;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.pdoc-slot:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); }
/* جایگاهِ دارای تصویرِ ثبت‌شده: قاب برجسته‌ترِ سبز-ملایم تا «کامل بودن» در یک نگاه دیده شود */
.pdoc-slot:has(.pdoc-slot__img) { border-color: #bfe6d2; box-shadow: inset 0 0 0 1px #d6efe0; }
.pdoc-slot__label { font-size: var(--fs-sm); font-weight: 700; margin-bottom: .5rem; color: var(--text); display: flex; align-items: center; gap: .35rem; }
.pdoc-slot__frame { position: relative; aspect-ratio: 1.585 / 1;
    background: repeating-conic-gradient(var(--surface-2) 0% 25%, var(--surface) 0% 50%) 0 / 22px 22px;
    border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); overflow: hidden;
    display: grid; place-items: center; }
/* قابِ بارگذاری‌شده: خطِ ممتد و سایهٔ داخلی به‌جای خط‌چین */
.pdoc-slot__frame:has(.pdoc-slot__img) { border-style: solid; border-color: var(--border);
    box-shadow: inset 0 1px 3px rgba(11, 18, 32, .12); background: var(--surface); }
/* cover: تصویرِ کارت تمامِ قاب را پر می‌کند و حاشیهٔ سفیدِ اسکن بریده می‌شود (نسبتِ قاب = نسبتِ کارت ملی). */
.pdoc-slot__img { width: 100%; height: 100%; object-fit: cover; object-position: center; background: transparent; }
.pdoc-slot__empty { display: flex; flex-direction: column; align-items: center; gap: .3rem; color: var(--text-soft); font-size: var(--fs-xs); }
.pdoc-slot__icon { font-size: 1.7rem; }
/* پابرگِ کارت: وضعیت (راست) و عملیات (چپ) در یک ردیفِ تمیز با جداکنندهٔ لطیف */
.pdoc-slot__status { margin: .6rem 0 .5rem; padding-top: .55rem; border-top: 1px solid var(--border); }
.pdoc-slot__actions { display: flex; flex-wrap: wrap; gap: .3rem; }
.pdoc-badge { display: inline-block; padding: .12rem .5rem; border-radius: 999px; font-size: .7rem; font-weight: 700; }
.pdoc-badge--ok { background: var(--success-soft); color: var(--success); }
.pdoc-badge--muted { background: var(--surface-2); color: var(--text-soft); border: 1px solid var(--border); }
.pdoc-badge--busy { background: var(--warning-soft); color: var(--warning); }
.pdoc-badge--fail { background: var(--danger-soft); color: var(--danger); }
/* گردش‌کارِ بررسیِ مدیرکل: در انتظار / تأیید / رد / نیاز به اصلاح (متن + رنگ؛ رنگ به‌تنهایی معیار نیست) */
.pdoc-badge--review { background: var(--accent-soft, #e8f0fe); color: var(--accent); }
.pdoc-badge--warn { background: var(--warning-soft); color: var(--warning); }
.pdoc-badge--danger { background: var(--danger-soft); color: var(--danger); }
.pdoc-badge--progress { background: var(--surface-2); color: var(--text); border: 1px solid var(--border); }
.pdoc-badge--incomplete { background: var(--surface-2); color: var(--text-soft); border: 1px solid var(--border); }
.pdoc-review-note { margin-top: .35rem; font-size: var(--fs-xs); color: var(--danger); line-height: 1.6; }
.pdoc-page__review { margin: .3rem 0; }

/* ── صفحهٔ «بررسی مدارک» مدیرکل (admin/document-reviews) ── */
.docrev-headtools { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.docrev-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.docrev-doc { border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .8rem; background: var(--surface); display: flex; flex-direction: column; gap: .5rem; }
.docrev-doc__head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.docrev-doc__label { font-weight: 700; font-size: var(--fs-sm); }
.docrev-doc__frame { border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; background: var(--surface-2); display: grid; place-items: center; min-height: 150px; }
.docrev-doc__img { width: 100%; max-height: 240px; object-fit: contain; cursor: zoom-in; background: #fff; }
.docrev-doc__pdf { display: flex; flex-direction: column; align-items: center; gap: .3rem; padding: 1.4rem; color: var(--text-soft); text-decoration: none; }
.docrev-doc__pdf span:first-child { font-size: 2rem; }
.docrev-doc__note { font-size: var(--fs-xs); color: var(--danger); line-height: 1.6; }
.docrev-doc__meta { font-size: var(--fs-xs); color: var(--text-soft); }
.docrev-doc__actions { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: auto; padding-top: .5rem; border-top: 1px solid var(--border); }

/* مودالِ دلیل (رد / نیاز به اصلاح) */
.docrev-modal { position: fixed; inset: 0; z-index: 1250; background: rgba(11, 18, 32, .6); display: grid; place-items: center; padding: 1rem; }
.docrev-modal[hidden] { display: none; }
.docrev-modal__box { background: var(--surface); border-radius: var(--radius-lg); width: min(460px, 94vw); padding: 1rem 1.1rem; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: .6rem; }
.docrev-modal__title { font-weight: 700; font-size: var(--fs-sm); }
.docrev-modal__hint { font-size: var(--fs-xs); color: var(--text-muted); margin: 0; }
.docrev-modal__text { width: 100%; border: 1px solid var(--border-strong); border-radius: var(--radius-sm); padding: .55rem .7rem; font: inherit; font-size: var(--fs-sm); resize: vertical; background: var(--surface); color: var(--text); }
.docrev-modal__err { font-size: var(--fs-xs); color: var(--danger); }
.docrev-modal__btns { display: flex; justify-content: flex-start; gap: .4rem; }

@media (max-width: 640px) {
    .docrev-grid { grid-template-columns: 1fr; }
}

/* شناسنامه — صفحات */
.pdoc-birth__toolbar { margin-bottom: .6rem; }
.pdoc-birth__hint, .pdoc-add__hint { font-size: var(--fs-xs); color: var(--text-soft); }
.pdoc-birth__empty { font-size: var(--fs-sm); color: var(--text-soft); padding: .4rem 0; }
.pdoc-pages { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .8rem; }
.pdoc-page { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2);
    padding: .55rem; display: flex; flex-direction: column; gap: .4rem;
    transition: border-color .15s ease, box-shadow .15s ease; }
.pdoc-page:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); }
.pdoc-page[draggable="true"] { cursor: grab; }
.pdoc-page.is-dragging { opacity: .5; outline: 2px dashed var(--accent); }
.pdoc-page__num { font-size: var(--fs-xs); font-weight: 700; color: var(--text-muted); }
.pdoc-page__thumb { aspect-ratio: 3 / 4; background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius-sm); overflow: hidden; display: grid; place-items: center; cursor: zoom-in; }
.pdoc-page__img { width: 100%; height: 100%; object-fit: cover; }
.pdoc-page__pdf { display: flex; flex-direction: column; align-items: center; gap: .25rem; color: var(--text-soft); font-size: var(--fs-xs); }
.pdoc-page__pdf span:first-child { font-size: 2rem; }
.pdoc-page__actions { display: flex; flex-wrap: wrap; gap: .25rem; }
.pdoc-page--add { border-style: dashed; align-items: center; justify-content: center; text-align: center; }
.pdoc-add { display: flex; flex-direction: column; gap: .4rem; align-items: center; }

/* ویرایشگرِ اسکن (مودال) */
.pdoc-editor, .pdoc-viewer { position: fixed; inset: 0; z-index: 1200; background: rgba(11, 18, 32, .72);
    display: grid; place-items: center; padding: 1rem; }
.pdoc-editor[hidden], .pdoc-viewer[hidden] { display: none; }
.pdoc-editor__box { background: var(--surface); border-radius: var(--radius-lg); width: min(820px, 96vw);
    max-height: 94vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: var(--shadow); }
.pdoc-editor__head { display: flex; align-items: center; justify-content: space-between;
    padding: .8rem 1rem; border-bottom: 1px solid var(--border); }
.pdoc-editor__title { font-weight: 700; font-size: var(--fs-sm); }
.pdoc-editor__close, .pdoc-viewer__close { background: transparent; border: 0; font-size: 1.1rem; cursor: pointer; color: var(--text-muted); }
.pdoc-editor__stage { padding: 1rem; overflow: auto; display: flex; flex-direction: column; align-items: center; gap: .6rem; }
.pdoc-editor__video { max-width: 100%; max-height: 52vh; border-radius: var(--radius-sm); background: #000; }
.pdoc-editor__canvaswrap { position: relative; line-height: 0; }
/* پس‌زمینهٔ روشن (کاغذمانند): گوشه‌های نمایانِ ناشی از صاف‌سازیِ کجی به‌جای مشکی، سفید دیده می‌شوند
   (فقط نمایشی؛ خروجیِ نهایی به کادرِ مدرک بریده می‌شود). تشخیصِ خودکار بومِ تحلیلِ جدا دارد و متأثر نیست. */
.pdoc-editor__canvas { max-width: 100%; border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); background: #f1f5f9; }
.pdoc-editor__crop { position: absolute; inset: 0; border: 2px solid var(--accent); background: rgba(47, 111, 237, .12); }
.pdoc-h { position: absolute; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%;
    background: #fff; border: 3px solid var(--accent); cursor: grab; touch-action: none; box-shadow: 0 1px 4px rgba(0,0,0,.4); }
.pdoc-editor__hint { font-size: var(--fs-xs); color: var(--text-muted); text-align: center; min-height: 1.1em; }
.pdoc-editor__tools { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; justify-content: center;
    padding: .6rem 1rem; border-top: 1px solid var(--border); background: var(--surface-2); }
.pdoc-editor__slider { display: inline-flex; align-items: center; gap: .4rem; font-size: var(--fs-xs); color: var(--text-muted); }
.pdoc-editor__foot { padding: .7rem 1rem; border-top: 1px solid var(--border); }
.pdoc-editor__progress { height: 8px; background: var(--surface-2); border-radius: 999px; overflow: hidden; margin-bottom: .6rem; }
.pdoc-editor__bar { height: 100%; width: 0; background: var(--accent); transition: width .15s ease; }
.pdoc-editor__foot-btns { display: flex; gap: .5rem; justify-content: flex-end; }

/* نمایشِ بزرگ — تقریباً تمام‌صفحه با بزرگ‌نمایی/چرخش/جابه‌جایی */
.pdoc-viewer__body { width: 96vw; height: 90vh; display: grid; place-items: center; overflow: hidden; touch-action: none; }
.pdoc-viewer__img { max-width: 96vw; max-height: 90vh; object-fit: contain; border-radius: var(--radius-sm);
    transform-origin: center center; transition: transform .08s ease-out; will-change: transform;
    user-select: none; -webkit-user-drag: none; }
.pdoc-viewer__frame { width: 92vw; height: 90vh; border: 0; background: #fff; border-radius: var(--radius-sm); }
.pdoc-viewer__tools { position: fixed; top: .9rem; inset-inline-start: 50%; transform: translateX(50%);
    display: flex; gap: .3rem; background: rgba(17, 26, 44, .82); padding: .35rem; border-radius: 999px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .35); z-index: 2; }
.pdoc-viewer__tools[hidden] { display: none; }
.pdoc-viewer__btn { min-width: 38px; height: 38px; padding: 0 .5rem; border: 0; border-radius: 999px;
    background: transparent; color: #fff; font-size: 1rem; font-weight: 700; cursor: pointer; line-height: 1;
    display: inline-flex; align-items: center; justify-content: center; transition: background .15s ease; }
.pdoc-viewer__btn:hover { background: rgba(255, 255, 255, .16); }
.pdoc-viewer__close { position: fixed; top: 1rem; inset-inline-end: 1rem; color: #fff; font-size: 1.6rem;
    background: rgba(17, 26, 44, .82); width: 40px; height: 40px; border-radius: 999px; z-index: 2; }
.pdoc-viewer:fullscreen { background: rgba(11, 18, 32, .96); }
.pdoc-viewer:fullscreen .pdoc-viewer__body { width: 100vw; height: 100vh; }
.pdoc-viewer:fullscreen .pdoc-viewer__img { max-width: 100vw; max-height: 100vh; }

@media (max-width: 640px) {
    .pdoc-viewer__tools { top: auto; bottom: 1rem; }
    .pdoc-viewer__btn { min-width: 42px; height: 42px; }
}

@media (max-width: 640px) {
    .pdoc-slots { grid-template-columns: 1fr; }
    .pdoc-pages { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
}

/* ── «اسکن با دستگاه» در ویرایشگرِ مدارک هویتی (هستهٔ مشترکِ اسکنر) ── */
.pdoc-scan { width: 100%; max-width: 560px; margin: 0 auto; display: flex; flex-direction: column; gap: .8rem;
    padding: 1rem; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); }
.pdoc-scan__settings { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; }
.pdoc-scan__f { display: flex; flex-direction: column; gap: .25rem; font-size: var(--fs-xs); color: var(--text-muted); font-weight: 600; }
.pdoc-scan__f select { height: 34px; border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
    background: var(--surface); color: var(--text); font: inherit; padding: 0 .4rem; }
.pdoc-scan__bar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
/* scan-pill: هم‌سبک با اسکنرِ بخش تعیین تکلیف غیبت (attendance.css) — این‌جا برای صفحهٔ پرسنل (app.css) تکرارِ کمینه. */
.scan-pill { display: inline-flex; align-items: center; gap: .35rem; padding: .28rem .7rem; border-radius: 999px;
    font-size: var(--fs-xs); font-weight: 700; border: 1px solid transparent; }
.scan-pill::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: currentColor; opacity: .8; }
.scan-pill--wait  { background: var(--surface-2); color: var(--text-muted); border-color: var(--border); }
.scan-pill--scan  { background: var(--warning-soft); color: var(--warning); border-color: #f2d9ab; }
.scan-pill--ok    { background: var(--success-soft); color: var(--success); border-color: #bfe6d2; }
.scan-pill--send  { background: var(--accent-soft); color: var(--accent-700); border-color: #c7dbfb; }
.scan-pill--error { background: var(--danger-soft); color: var(--danger); border-color: #f3c9c9; }
@media (max-width: 560px) { .pdoc-scan__settings { grid-template-columns: 1fr; } }

/* ═══════════════════════ Design System: Status Badge (متن + آیکون؛ رنگ به‌تنهایی معیار نیست) ═══════════════════════ */
.status-badge { display: inline-flex; align-items: center; gap: .3rem; padding: .18rem .6rem; border-radius: 999px;
    font-size: var(--fs-xs); font-weight: 700; line-height: 1.6; border: 1px solid transparent; white-space: nowrap;
    text-decoration: none; }
a.status-badge:hover { filter: brightness(.97); }
.status-badge__ic { font-weight: 900; font-size: .82em; line-height: 1; }
.status-badge--lg { font-size: var(--fs-sm); padding: .34rem .9rem; }
.status-badge--ok         { background: var(--success-soft); color: var(--success); border-color: #bfe6d2; }
.status-badge--review     { background: var(--accent-soft);  color: var(--accent-700); border-color: #c7dbfb; }
.status-badge--progress   { background: #eef2f7;             color: #4a5b74; border-color: var(--border-strong); }
.status-badge--warn       { background: var(--warning-soft); color: var(--warning); border-color: #f2d9ab; }
.status-badge--danger     { background: var(--danger-soft);  color: var(--danger); border-color: #f3c9c9; }
.status-badge--incomplete { background: #fbf3e6;             color: #9a6a12; border-color: #ecd9b2; }
.status-badge--muted      { background: var(--surface-2);    color: var(--text-soft); border-color: var(--border); }

/* ═══════════════════════ هدرِ سازمانیِ پرونده پرسنلی ═══════════════════════ */
.pfhead { padding: 0; overflow: hidden; }
.pfhead__main { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.2rem; }
.pfhead__avatar { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center;
    background: linear-gradient(135deg, var(--accent), var(--accent-700)); color: #fff; font-size: 1.5rem; font-weight: 700; }
.pfhead__id { flex: 1 1 auto; min-width: 0; }
.pfhead__name { font-size: var(--fs-lg); font-weight: 700; margin: 0; line-height: 1.35; }
.pfhead__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin-top: .3rem;
    font-size: var(--fs-xs); color: var(--text-muted); }
.pfhead__dot { color: var(--text-soft); }
.pfhead__actions { flex: 0 0 auto; }
.pfhead__status { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem;
    padding: .7rem 1.2rem; background: var(--surface-2); border-top: 1px solid var(--border); }
.pfhead__ok-note { font-size: var(--fs-xs); color: var(--success); }
.pfhead__issues { font-size: var(--fs-xs); }
.pfhead__issues > summary { cursor: pointer; color: var(--accent-700); font-weight: 600; list-style: none; user-select: none; }
.pfhead__issues > summary::-webkit-details-marker { display: none; }
.pfhead__issues > summary::before { content: '◂ '; font-size: .8em; }
.pfhead__issues[open] > summary::before { content: '▾ '; }
.pfhead__issue-list { list-style: none; margin: .6rem 0 .2rem; padding: .6rem .8rem; display: grid; gap: .35rem;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm); }
.pfhead__issue { display: flex; align-items: center; gap: .45rem; font-size: var(--fs-xs); color: var(--text); }
.pfhead__issue > span { width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; font-weight: 900; font-size: .7rem; flex: 0 0 auto; }
.pfhead__issue--danger  > span { background: var(--danger-soft);  color: var(--danger); }
.pfhead__issue--missing > span { background: #fbf3e6;             color: #9a6a12; }
.pfhead__issue--pending > span { background: var(--accent-soft);  color: var(--accent-700); }
.pfhead__gotodocs { display: inline-block; margin-top: .5rem; font-size: var(--fs-xs); font-weight: 600; }

/* ── PIN input یکدست (کد ۴ رقمی) — مونو، فاصله‌دار، هم‌ارتفاع با سایر فیلدها ── */
input.w-pin { max-width: 170px; font-family: 'Vazirmatn', ui-monospace, monospace; letter-spacing: .28em;
    text-align: center; font-weight: 700; }

@media (max-width: 620px) {
    .pfhead__main { flex-wrap: wrap; }
    .pfhead__actions { width: 100%; }
}

/* ── مدارک هویتی: حالتِ «بایگانی‌شده» (پس از تأیید مدیرکل) + بازگشایی ── */
.pdoc-archived { display: flex; align-items: center; gap: .9rem; padding: 1rem 1.2rem;
    background: var(--success-soft); border: 1px solid #bfe6d2; border-radius: var(--radius); }
.pdoc-archived__icon { font-size: 1.6rem; flex: 0 0 auto; }
.pdoc-archived__note { font-weight: 700; color: var(--success); font-size: var(--fs-sm); }
.pdoc-archived__list { color: var(--text-muted); font-size: var(--fs-xs); margin-top: .25rem; }
.pdoc-reopen { margin-top: 1rem; padding: .8rem 1rem; background: var(--surface-2);
    border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); display: flex;
    flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem; }
.pdoc-reopen__note { font-size: var(--fs-xs); color: var(--text-muted); flex: 1 1 260px; }

/* ── نمایشگرِ داخلیِ PDF: حالتِ بارگذاری/خطا (fetch→blob→iframe) ── */
.pdoc-viewer__loading, .pdoc-viewer__error { color: #fff; font-size: var(--fs-sm); padding: 1rem 1.4rem;
    background: rgba(0,0,0,.35); border-radius: var(--radius-sm); text-align: center; }
.pdoc-viewer__error { color: #ffd7d7; }

/* دکمهٔ جایگزینِ «بازکردنِ PDF در تبِ جدید» — اگر مرورگر نتواند PDF را در iframe نشان دهد. */
.pdoc-viewer__pdf-fallback { position: fixed; bottom: 1.2rem; left: 50%; transform: translateX(-50%);
    z-index: 2; box-shadow: 0 4px 14px rgba(0,0,0,.35); }

/* ══════════════════════════════════════════════════════════════════════
   قوانین حقوق و دستمزد سالانه — کارت‌های گروهی + مودال + ویزارد (v0.205.0)
   ══════════════════════════════════════════════════════════════════════ */
.pr-group--blue   { --pr-bar: #3f6fb5; }
.pr-group--green  { --pr-bar: #1f8f5f; }
.pr-group--teal   { --pr-bar: #1e8a9e; }
.pr-group--purple { --pr-bar: #6b5aa8; }
.pr-group--orange { --pr-bar: #c9871c; }
.pr-group--brass  { --pr-bar: var(--brass-700); }
.pr-group { border-top: 3px solid var(--pr-bar, var(--border-strong)); }
.pr-group__title { display: flex; align-items: center; gap: .55rem; }
.pr-group__icon { display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: 50%; flex: 0 0 auto; }
.pr-group__icon svg { width: 17px; height: 17px; }
.pr-group__icon--blue   { background: #dce8fa; color: #3f6fb5; }
.pr-group__icon--green  { background: #d9f0e2; color: #1f8f5f; }
.pr-group__icon--teal   { background: #d7eef0; color: #1e8a9e; }
.pr-group__icon--purple { background: #e5dff8; color: #6b5aa8; }
.pr-group__icon--orange { background: #f7e6cd; color: #c9871c; }
.pr-group__icon--brass  { background: var(--brass-soft); color: var(--brass-700); }
.pr-group__body { display: flex; flex-direction: column; gap: .55rem; }

/* ردیفِ یک قانون — کلِ ردیف کلیک‌پذیر */
.pr-rule { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
    padding: .75rem .9rem; border: 1px solid var(--border); border-radius: var(--radius);
    background: var(--surface-2); cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.pr-rule:hover, .pr-rule:focus-visible { border-color: var(--pr-bar, var(--accent)); box-shadow: 0 2px 10px rgba(18,48,41,.08); outline: none; }
.pr-rule--view { cursor: default; }
.pr-rule--view:hover { border-color: var(--border); box-shadow: none; }
.pr-rule__main { flex: 1 1 220px; min-width: 0; }
.pr-rule__title { font-weight: 700; font-size: var(--fs-sm); }
.pr-rule__desc { color: var(--text-muted); font-size: var(--fs-xs); margin-top: .15rem; line-height: 1.5; }
.pr-rule__value { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; flex: 0 0 auto; }
.pr-rule__amount { font-weight: 700; font-size: var(--fs-base); }
.pr-rule__date { color: var(--text-soft); font-size: var(--fs-xs); }
.pr-rule__btn { flex: 0 0 auto; }

/* کارتِ راه‌اندازیِ سریعِ سال */
.pr-setup__body { display: flex; align-items: center; flex-wrap: wrap; gap: 1.1rem; }
.pr-setup__stat { display: flex; flex-direction: column; align-items: center; min-width: 70px; }
.pr-setup__num { font-size: 1.5rem; font-weight: 800; color: var(--brand-700); }
.pr-setup__lbl { font-size: var(--fs-xs); color: var(--text-muted); }
.pr-setup__progress-wrap { flex: 1 1 200px; display: flex; align-items: center; gap: .6rem; min-width: 160px; }
.pr-setup__progress { flex: 1; height: 10px; border-radius: 6px; background: var(--surface-2); border: 1px solid var(--border); overflow: hidden; }
.pr-setup__bar { height: 100%; background: linear-gradient(90deg, var(--accent), var(--brand)); border-radius: 6px 0 0 6px; transition: width .3s; }
.pr-setup__pct { font-size: var(--fs-sm); font-weight: 700; color: var(--text-muted); white-space: nowrap; }

/* مودال‌های این صفحه — عریض‌تر از مودالِ تأییدِ عمومی، متن راست‌چین */
.pr-modal .modal__dialog { max-width: 480px; text-align: right; }
.pr-modal .modal__body { text-align: right; padding: 1.3rem; display: flex; flex-direction: column; gap: .9rem; }
.pr-modal .modal__title { text-align: right; }
.pr-wizard__dialog { max-width: 640px; }
.pr-more { border-top: 1px dashed var(--border); padding-top: .6rem; }
.pr-more > summary { cursor: pointer; color: var(--accent-700); font-weight: 600; font-size: var(--fs-sm); list-style: none; }
.pr-more > summary::-webkit-details-marker { display: none; }
.pr-more[open] > summary { margin-bottom: .6rem; }

/* گروهِ ورودی/واحد حرفه‌ای — یک باکسِ یکپارچه: عدد + واحد (تومان/درصد/ضریب/ساعت) به‌عنوانِ
   Suffix چسبیده؛ در Wizard و مودالِ پلکانِ مالیات هر دو استفاده می‌شود (ظاهرِ یکدست ERP). */
.pr-field-group { display: flex; align-items: stretch; border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--surface); overflow: hidden; transition: border-color .15s, box-shadow .15s; }
.pr-field-group:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.pr-field-group input { flex: 1; min-width: 0; border: none; background: transparent; padding: .6rem .85rem;
    font-size: 1rem; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text); }
.pr-field-group input:focus { outline: none; box-shadow: none; }
.pr-field-group__suffix { display: flex; align-items: center; padding: 0 .85rem; white-space: nowrap;
    background: var(--surface-2); color: var(--text-muted); font-size: var(--fs-sm); font-weight: 600;
    border-inline-start: 1px solid var(--border); }

/* پیش‌نمایشِ پلکانِ مالیات داخلِ کارتِ گروه */
.pr-tax-preview { margin-top: .2rem; }

/* تاریخچه‌ی تغییراتِ هر قانون — details/summary سبک، زیرِ ردیفِ همان قانون */
.pr-history { margin-top: .35rem; }
.pr-history > summary { cursor: pointer; color: var(--text-soft); font-size: var(--fs-xs); font-weight: 600; list-style: none; padding: .1rem .2rem; }
.pr-history > summary::-webkit-details-marker { display: none; }
.pr-history[open] > summary { color: var(--accent-700); margin-bottom: .4rem; }
.pr-history__list { display: flex; flex-direction: column; gap: .2rem; padding: .55rem .8rem;
    background: var(--surface-2); border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); }
.pr-history__row { display: flex; flex-wrap: wrap; gap: .5rem .8rem; justify-content: space-between;
    font-size: var(--fs-xs); color: var(--text-muted); padding: .3rem 0; border-bottom: 1px dashed var(--border); }
.pr-history__row:last-child { border-bottom: none; }
.pr-history__amount { font-weight: 700; color: var(--text); flex: 0 0 auto; }
.pr-history__period { flex: 1 1 auto; }
.pr-history__by { flex: 0 0 auto; color: var(--text-soft); }

/* استپرِ ویزاردِ «تکمیلِ سریعِ سال» */
.pr-wizard__steps { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; padding: 0; margin: 0 0 .3rem; }
.pr-wizard__steps li { flex: 1 1 auto; text-align: center; font-size: var(--fs-xs); font-weight: 600;
    color: var(--text-soft); padding: .4rem .3rem; border-bottom: 3px solid var(--border); white-space: nowrap; }
.pr-wizard__steps li.is-active { color: var(--brand-700); border-bottom-color: var(--accent); }
.pr-wizard__steps li.is-done { color: var(--success); border-bottom-color: var(--success); }
.pr-wizard__hint { color: var(--text-muted); font-size: var(--fs-xs); margin: 0 0 .5rem; }
.pr-wizard__step { display: flex; flex-direction: column; gap: .7rem; }
.pr-wizfield { display: flex; align-items: center; gap: .7rem; }
.pr-wizfield label { flex: 0 0 200px; font-size: var(--fs-sm); font-weight: 600; }
.pr-wizfield .pr-field-group { flex: 1; min-width: 0; }
.pr-wizard__review-row { display: flex; justify-content: space-between; align-items: center; gap: .8rem; padding: .5rem .1rem; border-bottom: 1px dashed var(--border); font-size: var(--fs-sm); }
.pr-wizard__review-row:last-child { border-bottom: none; }
.pr-wizard__old { color: var(--text-soft); text-decoration: line-through; font-size: var(--fs-xs); }
.pr-wizard__arrow { color: var(--text-soft); margin: 0 .3rem; }
.pr-wizard__foot { flex-wrap: wrap; }

@media (max-width: 620px) {
    .pr-rule { flex-direction: column; align-items: stretch; }
    .pr-rule__main { flex: 0 0 auto; }
    .pr-rule__value { flex: 0 0 auto; justify-content: space-between; }
    .pr-wizfield { flex-direction: column; align-items: stretch; gap: .3rem; }
    .pr-wizfield label { flex: none; }
    .pr-setup__body { justify-content: center; text-align: center; }
    .pr-modal .modal__dialog, .pr-wizard__dialog { max-width: 100%; }
}

/* ═══════════ تسک‌های من (/tasks) — واقعی، شخصی/واگذارشده ═══════════ */
.field--grow { grid-column: 1 / -1; }

.task-form-card { margin-bottom: 1rem; }
.task-form .form-grid { align-items: end; }

.task-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .8rem; }
.task-tab {
    font-size: var(--fs-sm); font-weight: 600; color: var(--text-muted);
    background: var(--surface); border: 1px solid var(--border); border-radius: 999px;
    padding: .4rem .9rem; text-decoration: none; transition: background .14s, color .14s;
}
.task-tab:hover { background: var(--surface-2); color: var(--text); }
.task-tab.is-active { background: var(--accent); border-color: var(--accent); color: #fff; }

.task-list { display: flex; flex-direction: column; }
.task-row { display: flex; align-items: flex-start; gap: .75rem; padding: .85rem .2rem; border-bottom: 1px solid var(--border); }
.task-row:last-child { border-bottom: none; }
.task-row--done .task-row__title { color: var(--text-soft); text-decoration: line-through; }
.task-row__check { flex: 0 0 auto; margin-top: .1rem; }
.task-check {
    display: grid; place-items: center; width: 22px; height: 22px; border-radius: 6px;
    border: 1.5px solid var(--border-strong); background: var(--surface); color: #fff; cursor: pointer;
}
.task-check:hover { border-color: var(--accent); }
.task-check.is-checked { background: var(--accent); border-color: var(--accent); }
.task-row__body { flex: 1 1 auto; min-width: 0; }
.task-row__title { font-size: var(--fs-sm); font-weight: 600; color: var(--text); }
.task-row__desc { font-size: var(--fs-xs); color: var(--text-muted); margin-top: .15rem; }
.task-row__meta { display: flex; gap: .8rem; flex-wrap: wrap; font-size: var(--fs-xs); color: var(--text-soft); margin-top: .3rem; }
.task-row__due--overdue { color: var(--danger); font-weight: 700; }
.task-row__actions { flex: 0 0 auto; display: flex; gap: .35rem; }

@media (max-width: 620px) {
    .task-row { flex-wrap: wrap; }
    .task-row__actions { margin-inline-start: 2.2rem; }
}
