/* ==========================================================================
   کفِ مشترکِ هر سه قالبِ سایت عمومی (کلاسیک / مینیمال / نرم)
   --------------------------------------------------------------------------
   این فایل «ظاهر» نمی‌سازد — هویتِ بصری کارِ فایلِ خودِ قالب است.
   اینجا فقط چیزهایی می‌آید که هر سه قالب به‌طور یکسان به آن نیاز دارند:
     • توکن‌های مشتق از رنگ برند (سطح، خط، مرکب، سایه، شعاع، ریتم)
     • کفِ واکنش‌گرایی: بدون اسکرول افقی، شکستنِ نشانی‌های بلند، جدولِ اسکرول‌دار
     • کفِ لمسی: روی صفحه‌های لمسی هیچ هدفی کوچک‌تر از ۴۴px نماند
     • کفِ دسترس‌پذیری: حلقه‌ی فوکوس، احترام به کاهش حرکت، متنِ خوانا روی رنگ برند
   *قبل از* فایل قالب لود می‌شود تا هر قالب بتواند آزادانه بازنویسی کند.
   ========================================================================== */

.public-theme-classic,
.public-theme-editorial,
.public-theme-soft {
    /* ---------- مرکب و سطح (همه مشتق از رنگ‌های پنل) ---------- */
    --pub-ink: var(--pub-dark, #151515);
    --pub-ink-2: color-mix(in srgb, var(--pub-dark, #151515) 68%, #ffffff);
    --pub-ink-3: color-mix(in srgb, var(--pub-dark, #151515) 46%, #ffffff);
    --pub-surface: #ffffff;
    --pub-canvas: color-mix(in srgb, var(--pub-dark, #151515) 3.5%, #ffffff);
    --pub-sunken: color-mix(in srgb, var(--pub-dark, #151515) 7%, #ffffff);
    --pub-line: color-mix(in srgb, var(--pub-dark, #151515) 12%, #ffffff);
    --pub-line-strong: color-mix(in srgb, var(--pub-dark, #151515) 22%, #ffffff);

    /* رنگ برند در سه نقش متفاوت — تا هیچ‌جا کنتراست نشکند */
    --pub-accent: var(--pub-primary, #f6d014);
    --pub-accent-tint: color-mix(in srgb, var(--pub-primary, #f6d014) 12%, #ffffff);
    --pub-accent-ring: color-mix(in srgb, var(--pub-primary, #f6d014) 38%, transparent);
    /* --pub-on-primary و --pub-primary-ink را لایه‌ی صفحه (Razor) با محاسبه‌ی
       روشناییِ WCAG تزریق می‌کند؛ مقدارهای زیر فقط پشتیبانِ نبودِ آن‌هاست. */
    --pub-on-accent: var(--pub-on-primary, #14161a);
    --pub-accent-text: var(--pub-primary-ink, #6b5a00);
    /* متنِ کم‌رنگ روی زمینه‌ی تیره — هنوز باید ۴٫۵:۱ بدهد.
       پابرگ قبلاً #b7b7b7 هاردکد داشت که روی هر رنگِ تیره‌ای حدود ۳٫۳:۱ می‌شد. */
    --pub-on-dark-muted: color-mix(in srgb, var(--pub-on-dark, #ffffff) 82%, var(--pub-dark, #151515));

    /* ---------- شعاع ---------- */
    --pub-r-xs: 6px;
    --pub-r-sm: 10px;
    --pub-r-md: 14px;
    --pub-r-lg: 20px;
    --pub-r-pill: 999px;

    /* ---------- سایه (سه پله، با ته‌رنگِ مرکبِ سایت نه سیاهِ خام) ---------- */
    --pub-shadow-1: 0 1px 2px color-mix(in srgb, var(--pub-dark, #151515) 8%, transparent),
                    0 1px 3px color-mix(in srgb, var(--pub-dark, #151515) 6%, transparent);
    --pub-shadow-2: 0 4px 10px -3px color-mix(in srgb, var(--pub-dark, #151515) 14%, transparent),
                    0 12px 26px -12px color-mix(in srgb, var(--pub-dark, #151515) 18%, transparent);
    --pub-shadow-3: 0 10px 20px -8px color-mix(in srgb, var(--pub-dark, #151515) 18%, transparent),
                    0 28px 56px -22px color-mix(in srgb, var(--pub-dark, #151515) 26%, transparent);

    /* ---------- ریتم سیّال ---------- */
    --pub-gutter: clamp(1rem, 3.5vw, 2.25rem);
    --pub-section-y: clamp(2.75rem, 6.5vw, 5.5rem);
    --pub-gap: clamp(0.9rem, 2.2vw, 1.75rem);
    --pub-container: 1180px;

    /* ---------- حرکت ---------- */
    --pub-ease: cubic-bezier(.22, .61, .36, 1);
    --pub-fast: .16s;
    --pub-base: .24s;
}

/* ==========================================================================
   ۱) ریتم پیمایش — لنگرها زیر منوی چسبان پنهان نشوند
   ========================================================================== */
html:has(.public-theme-classic),
html:has(.public-theme-editorial),
html:has(.public-theme-soft) {
    scroll-behavior: smooth;
    scroll-padding-block-start: clamp(64px, 12vh, 104px);
}

/* ==========================================================================
   ۲) کفِ واکنش‌گرایی — هیچ صفحه‌ای نباید افقی اسکرول شود
   ========================================================================== */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft) {
    overflow-x: clip;
}
/* نشانی، ایمیل، کد پیگیری و نام فایل — بلند و بدون فاصله؛ باید بشکنند نه اینکه صفحه را پهن کنند */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(p, li, dd, dt, td, th, figcaption, blockquote, .rich-body, .post-classic-body, .lp-article) {
    overflow-wrap: anywhere;
}
/* فرزندِ flex/grid به‌طور پیش‌فرض کوچک‌تر از محتوایش نمی‌شود و همین باعث سرریز می‌شد */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(.unit__body, .rd-navbar-items-list li, .site-foot-col, .prod-card, .svc-card, .public-card) {
    min-inline-size: 0;
}
/* جدولِ داخلِ متنِ غنی: به‌جای شکستنِ چیدمان، داخل قابِ خودش اسکرول شود */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(.rich-body, .lp-article, .post-classic-body) table {
    display: block;
    max-inline-size: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
/* رسانه هرگز از ظرف بیرون نزند (ارتفاع‌های هدفمندِ کارت‌ها دست‌نخورده می‌ماند) */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(img, svg, video, iframe, canvas) { max-inline-size: 100%; }
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(.rich-body, .lp-article, .post-classic-body) :is(iframe, video) {
    inline-size: 100%;
    block-size: auto;
    aspect-ratio: 16 / 9;
}

/* ==========================================================================
   ۳) کفِ لمسی — روی موبایل/تبلت هیچ هدفی کوچک‌تر از ۴۴px نماند
   (فقط روی اشاره‌گرِ درشت اعمال می‌شود تا دسکتاپ فشرده و مرتب بماند)
   ========================================================================== */
@media (pointer: coarse) {
    /* ۴۴px یک «کف» است، نه یک پیشنهاد: فایل قالب بعد از این لود می‌شود و
       اندازه‌های کوچکِ خودش (مثل .button-xs با ۳۶px) وگرنه این کف را می‌شکستند.
       تنها همین یک خاصیت اجباری می‌شود تا بقیه‌ی ظاهر دستِ قالب بماند. */
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        :is(.button, .btn, .rd-navbar-nav > li > a, .site-foot-list a, .home-faq-item summary,
            .public-drawer-close, .pagination a, .pagination button,
            .cat-pill, .rd-navbar-top-panel__toggle) {
        min-block-size: 44px !important;
        display: inline-flex;
        align-items: center;
    }
    /* آیکون‌های شبکه‌های اجتماعی: خودِ گلیف ریز است، ناحیه‌ی لمسِ اطرافش بزرگ می‌شود */
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        :is(.site-top-social a, .site-foot-social a, .list-inline-xxs > li > a.icon) {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-inline-size: 44px !important;
        min-block-size: 44px !important;
    }
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        :is(.site-top-social, .site-foot-social) {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-inline-start: -10px;
    }
    /* گلوله‌های اسلایدر ۹px بودند — ناحیه‌ی لمس با شبه‌عنصر بزرگ می‌شود، ظاهر ثابت می‌ماند */
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        .swiper-pagination-bullet { position: relative; }
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        .swiper-pagination-bullet::after {
        content: "";
        position: absolute;
        inset: -16px -8px;
    }
    /* ردیف فیلترها: هدف‌ها بزرگ شدند، پس فاصله‌شان هم باید ≥۸px باشد */
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        :is(.cat-pills, .prod-actions, .pd-cta-group) { gap: 8px; }
    /* فهرست‌های پابرگ: فاصله‌ی عمودی به‌جای خطوطِ چسبیده */
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
        .site-foot-list li + li { margin-block-start: 2px; }
}

/* ==========================================================================
   ۴) کفِ دسترس‌پذیری
   ========================================================================== */
:is(.public-theme-classic, .public-theme-editorial, .public-theme-soft) :focus-visible {
    /* خودِ حلقه‌ی فوکوس هم باید ۳:۱ کنتراست داشته باشد؛ رنگ برندِ روشن (زرد، سبزِ روشن…)
       این را نمی‌دهد. پس حلقه از نسخه‌ی خوانای رنگ برند کشیده می‌شود و هاله‌ی
       رنگِ خامِ برند فقط دورش می‌نشیند — هم دیده می‌شود، هم هویتِ برند را دارد. */
    outline: 3px solid var(--pub-accent-text);
    outline-offset: 2px;
    box-shadow: 0 0 0 6px var(--pub-accent-ring);
    border-radius: var(--pub-r-xs);
}
/* روی زمینه‌ی تیره، حلقه‌ی رنگ برند ممکن است گم شود — حلقه‌ی دولایه */
:is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(.footer-corporate, .page-hero, .home-hero, .rd-navbar-top-panel) :focus-visible {
    outline-color: #fff;
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--pub-accent) 55%, transparent);
}
:is(.public-theme-classic, .public-theme-editorial, .public-theme-soft) ::selection {
    background: var(--pub-accent);
    color: var(--pub-on-accent);
}
/* دستِ اشاره روی هر چیزِ کلیک‌شدنی */
:is(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(a[href], button, summary, [role="button"], label[for]):not(:disabled) { cursor: pointer; }

/* ==========================================================================
   ۵) تیترها نباید «یتیم» بشکنند (یک واژه‌ی تنها در سطر آخر)
   ========================================================================== */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(h1, h2, h3, .heading-decorated, .en-section-title, .prod-title, .post-classic-title) {
    text-wrap: balance;
}
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(p, li) { text-wrap: pretty; }

/* ==========================================================================
   ۶) احترام به کاهش حرکت — در هر سه قالب، بدون استثنا
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
    html:has(.public-theme-classic),
    html:has(.public-theme-editorial),
    html:has(.public-theme-soft) { scroll-behavior: auto; }

    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft) *,
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft) *::before,
    :is(.public-theme-classic, .public-theme-editorial, .public-theme-soft) *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
}

/* ==========================================================================
   ۶) متن‌های محتوایی: جاستیفای (هر سه قالب)
   فقط متن‌های چندخطیِ خواندنی — تیترها، دکمه‌ها و متن‌های وسط‌چین دست‌نخورده
   ========================================================================== */
:where(.public-theme-classic, .public-theme-editorial, .public-theme-soft)
    :is(.rich-body p, .rich-body li, .home-faq-a, .site-faq-a, .post-classic-body p) {
    text-align: justify;
    text-justify: inter-word;
}

/* ==========================================================================
   ۸) حرفِ آغازین (drop cap) — فقط نسخه‌ی انگلیسی، برای هر سه قالب
   در فارسی حروف چسبیده‌اند و بزرگ/جداکردن حرفِ اول، کلمه را بدشکل می‌کند؛
   پس این امضا فقط در صفحات لاتین (lang=en) اجرا می‌شود.
   ========================================================================== */
@media (min-width: 576px) {
    html[lang="en"] :is(.rich-body, .en-content, .lp-article, .post-classic-body) > p:first-of-type::first-letter {
        float: inline-start;
        font-size: 3.1em;
        font-weight: 700;
        line-height: .85;
        margin-inline-end: .12em;
        margin-block-start: .05em;
        color: var(--pub-dark, #20242b);
    }
}
