/* ===================================================================
   استایل اصلی سایت شخصی شاعر
   الهام از نسخه‌های خطی و تذهیب ایرانی — کاغذی، آرام، باوقار
   =================================================================== */

/* فونت نستعلیق محلی (برای نام شاعر و عناوین خوشنویسی‌شده) */
@font-face {
    font-family: 'IranNastaliq';
    src: url('../fonts/IranNastaliq.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

:root {
    --paper: #F5F2E9;
    --surface: #FBF9F3;
    --ink: #20232E;
    --ink-soft: #5C5D67;
    --lapis: #284B8C;
    --lapis-deep: #1C3563;
    --gold: #AE8638;
    --crimson: #8E2A2E;
    --line: #E3DAC8;

    --radius: 14px;
    --shadow-soft: 0 8px 24px rgba(28, 53, 99, 0.08);
    --shadow-soft-lg: 0 16px 40px rgba(28, 53, 99, 0.12);

    --font-body: 'Vazirmatn', Tahoma, sans-serif;
    --font-signature: 'IranNastaliq', 'Mirza', 'Noto Nastaliq Urdu', serif;
}

/* ----------------------------------------------------------------
   حالت شب — پالت تیره‌ی هماهنگ با هویت نسخه‌ی خطی
   جوهر تیره، طلا و لاجورد روشن‌شده روی پس‌زمینه‌ی شب
   ---------------------------------------------------------------- */
html.dark {
    --paper: #16181E;
    --surface: #1E2029;
    --ink: #E8E4D8;
    --ink-soft: #9A9BA8;
    --lapis: #7098CE;
    --lapis-deep: #92B4E2;
    --gold: #C9A24E;
    --crimson: #C95A60;
    --line: #2E3140;
    --shadow-soft: 0 8px 24px rgba(0, 0, 0, 0.35);
    --shadow-soft-lg: 0 16px 40px rgba(0, 0, 0, 0.55);
}

/* گذار نرم تنها هنگام تغییر دستی توسط کاربر (نه لود اولیه) */
html.theme-transitioning,
html.theme-transitioning *,
html.theme-transitioning *::before,
html.theme-transitioning *::after {
    transition:
        background-color 0.3s ease,
        color 0.3s ease,
        border-color 0.3s ease,
        box-shadow 0.3s ease !important;
}

@media (prefers-reduced-motion: reduce) {
    html.theme-transitioning,
    html.theme-transitioning *,
    html.theme-transitioning *::before,
    html.theme-transitioning *::after {
        transition: none !important;
    }
}

/* ----------------------------------------------------------------
   ریست پایه
   ---------------------------------------------------------------- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

/* ایمنیِ انیمیشنِ AOS (کتابخانه‌ی خارجی، assets/js/main.js): خودِ AOS با
   CSSِ خودش [data-aos] را پیش‌فرض opacity:0 می‌کند تا با اسکرول نمایان
   شود. کلاسِ js-scroll-ready را main.js فقط بعد از فراخوانیِ AOS.init +
   نمایان‌کردنِ فوریِ عناصرِ داخلِ viewport روی <html> می‌گذارد؛ تا قبل از آن
   (یعنی دقیقاً وقتی جاوااسکریپت هنوز اجرا نشده، خطا داده، یا کلاً غیرفعال
   است) این override پیش‌فرضِ AOS را خنثی می‌کند تا محتوا هرگز نامرئی نماند */
html:not(.js-scroll-ready) [data-aos] {
    opacity: 1 !important;
    transform: none !important;
}

body {
    background-color: var(--paper);
    color: var(--ink);
    font-family: var(--font-body);
    line-height: 1.8;
    -webkit-font-smoothing: antialiased;
}

a {
    text-decoration: none;
    color: inherit;
}

img {
    max-width: 100%;
    display: block;
}

ul {
    list-style: none;
}

button {
    font-family: inherit;
    cursor: pointer;
}

.container {
    width: 100%;
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 20px;
}

/* ----------------------------------------------------------------
   صفحه‌ی لودینگ (splash) با انیمیشن Lottie لوگو — فقط بار اول ورود
   در هر نشست (includes/header.php کنترل sessionStorage را دارد)
   ---------------------------------------------------------------- */
.splash {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--paper);
    opacity: 1;
    transition: opacity 0.5s ease;
}

.splash[hidden] {
    display: none;
}

.splash.splash--hide {
    opacity: 0;
    pointer-events: none;
}

.splash__anim {
    width: 220px;
    height: 220px;
    max-width: 60vw;
    max-height: 60vw;
}

body.splash-active {
    overflow: hidden;
}

@media (max-width: 480px) {
    .splash__anim {
        width: 180px;
        height: 180px;
    }
}

/* ----------------------------------------------------------------
   لودینگِ گذار بین صفحات — ساده‌تر و کوچک‌تر از splash؛ روی کلیکِ
   لینک‌های داخلی و به‌صورت تصادفی نمایش داده می‌شود (assets/js/page-transition.js)
   ---------------------------------------------------------------- */
.page-transition {
    position: fixed;
    inset: 0;
    z-index: 9998;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--paper);
}

.page-transition[hidden] {
    display: none;
}

.page-transition__anim {
    width: 140px;
    height: 140px;
    max-width: 40vw;
    max-height: 40vw;
}

body.page-transition-active {
    overflow: hidden;
}

@media (max-width: 480px) {
    .page-transition__anim {
        width: 110px;
        height: 110px;
    }
}

/* ----------------------------------------------------------------
   نوار بالای چسبان
   ---------------------------------------------------------------- */
.site-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background-color: transparent;
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

.site-header.scrolled {
    background-color: var(--surface);
    box-shadow: var(--shadow-soft);
}

.header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 76px;
}

.brand {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-signature);
    font-size: 1.7rem;
    font-weight: normal ;
            word-spacing: -0.200em;

    color: var(--lapis-deep);
}

.brand-logo {
    flex-shrink: 0;
    height: 40px;
    width: auto;
    object-fit: contain;
    /* فونت نستعلیق ارتفاع بصری بیشتری از خط پایه دارد؛ کمی جابه‌جایی برای هم‌ترازی نرم */
    transform: translateY(2px);
}

.brand-name {
    /* فونت IranNastaliq کشیده و بلندتر است؛ به line-height بیشتر نیاز دارد تا حروف فشرده نشوند */
    line-height: 1.5;
}

@media (max-width: 480px) {
    .brand-logo {
        height: 32px;
    }
}

.header-end {
    display: flex;
    align-items: center;
    gap: 8px;
}

.main-nav {
    display: flex;
    align-items: center;
    gap: 28px;
}

.nav-link {
    position: relative;
    font-size: 0.98rem;
    color: var(--ink-soft);
    padding: 6px 2px;
    transition: color 0.25s ease;
}

.nav-link::after {
    content: '';
    position: absolute;
    right: 0;
    bottom: -2px;
    width: 0;
    height: 2px;
    background-color: var(--gold);
    transition: width 0.25s ease;
}

.nav-link:hover,
.nav-link.active {
    color: var(--lapis-deep);
}

.nav-link:hover::after,
.nav-link.active::after {
    width: 100%;
}

/* دکمه‌ی منوی همبرگری (فقط در موبایل) */
.nav-toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 36px;
    height: 36px;
    background: none;
    border: none;
}

.nav-toggle span {
    display: block;
    width: 100%;
    height: 2px;
    background-color: var(--ink);
    border-radius: 2px;
    transition: transform 0.25s ease, opacity 0.25s ease;
}

/* دکمه‌ی تغییر حالت شب/روز */
.theme-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: none;
    color: var(--ink-soft);
    cursor: pointer;
    flex-shrink: 0;
    transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}

.theme-toggle:hover {
    color: var(--gold);
    border-color: var(--gold);
    background-color: rgba(174, 134, 56, 0.08);
}

/* آیکن ماه در حالت روشن نمایان — آیکن خورشید مخفی */
.theme-icon-sun { display: none; }
html.dark .theme-icon-moon { display: none; }
html.dark .theme-icon-sun { display: block; }

/* خوانایی select در دارک مود — رندر لیست باز‌شده به مرورگر وابسته است ولی
   این مقادیر صریح در اکثر مرورگرها پس‌زمینه و متن را درست نگه می‌دارند */
html.dark select,
html.dark select option {
    background-color: var(--surface);
    color: var(--ink);
}
html.dark select option:checked {
    background-color: var(--lapis);
    color: #fff;
}

/* ----------------------------------------------------------------
   دکمه‌ها
   ---------------------------------------------------------------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 26px;
    border-radius: var(--radius);
    font-size: 0.95rem;
    font-weight: 500;
    border: 1px solid transparent;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}

.btn-primary {
    background-color: var(--lapis);
    color: #fff;
    box-shadow: var(--shadow-soft);
}

.btn-primary:hover {
    background-color: var(--lapis-deep);
    transform: translateY(-2px);
    box-shadow: var(--shadow-soft-lg);
}

.btn-outline {
    background-color: transparent;
    color: var(--lapis-deep);
    border-color: var(--line);
}

.btn-outline:hover {
    border-color: var(--gold);
    color: var(--gold);
    transform: translateY(-2px);
}

.btn-fal {
    background-color: rgba(174, 134, 56, 0.1);
    color: var(--gold);
    border-color: rgba(174, 134, 56, 0.35);
}

.btn-fal:hover {
    background-color: var(--gold);
    color: #fff;
    border-color: var(--gold);
    transform: translateY(-2px);
}

/* ----------------------------------------------------------------
   تزئین شمسه‌ای جداکننده
   ---------------------------------------------------------------- */
.ornament {
    display: block;
    margin: 0 auto 16px;
}

.ornament-divider {
    display: flex;
    justify-content: center;
    margin: 16px 0 40px;
}

/* ----------------------------------------------------------------
   هیرو
   ---------------------------------------------------------------- */
.hero {
    padding: 64px 0 56px;
}

.hero-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 28px;
}

/* wrapper متنی — در موبایل شفاف (children مستقیم در جریان flex-column) */
.hero-text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
    width: 100%;
}

.hero-photo {
    position: relative;
    width: clamp(200px, 40vw, 300px);
    height: clamp(200px, 40vw, 300px);
    border-radius: 50%;
    box-shadow: 0 20px 48px rgba(28, 53, 99, 0.16);
    animation: heroPhotoReveal 0.8s ease-out both;
    transition: transform 0.35s ease, box-shadow 0.35s ease;
    flex-shrink: 0;
}

.hero-photo::after {
    content: '';
    position: absolute;
    inset: -9px;
    border-radius: 50%;
    border: 1px solid rgba(174, 134, 56, 0.35);
    pointer-events: none;
}

.hero-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
    border: 2px solid var(--gold);
}

.hero-photo:hover {
    transform: scale(1.02);
    box-shadow: 0 22px 54px rgba(28, 53, 99, 0.22);
}

@keyframes heroPhotoReveal {
    from {
        opacity: 0;
        transform: translateY(10px) scale(0.96);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .hero-photo {
        animation: none;
        opacity: 1;
        transform: none;
    }
}

.hero-name {
    font-family: var(--font-signature);
    font-size: clamp(2.2rem, 5vw, 3.4rem);
    line-height: 1.6;
    color: var(--lapis-deep);
    word-spacing: -0.2em;
    font-weight: normal;
}

.hero-tagline {
    font-size: 1.1rem;
    color: var(--ink-soft);
    max-width: 540px;
}

.hero-verse {
    position: relative;
    padding: 8px 28px;
    border-right: 3px solid var(--gold);
    font-size: 1.15rem;
    line-height: 2.2;
    color: var(--ink);
    max-width: 560px;
    text-align: right;
}

.hero-actions {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    justify-content: center;
}

/* ── موبایل: تلاش برای جا شدنِ هر سه دکمه در یک ردیف با اندازه‌ی
   جمع‌وجورتر (nowrap عمدی، تا هرگز به‌صورت دو+یکِ نامرتب نشکند) ────── */
@media (max-width: 480px) {
    .hero-actions {
        flex-wrap: nowrap;
        gap: 8px;
    }

    .hero-actions .btn {
        flex: 1 1 auto;
        padding: 10px 10px;
        font-size: 0.8rem;
        min-height: 44px;
        white-space: nowrap;
    }
}

/* ── عرض‌های خیلی کم: حتی با اندازه‌ی جمع‌وجورِ بالا هم جا نمی‌شوند؛
   پس به‌جای شکستِ ناموزون، هر سه دکمه تمام‌عرض و زیر هم می‌نشینند ──── */
@media (max-width: 360px) {
    .hero-actions {
        flex-direction: column;
        flex-wrap: nowrap;
        align-items: stretch;
        width: 100%;
        gap: 10px;
    }

    .hero-actions .btn {
        width: 100%;
    }
}

/* ── دسکتاپ: دو ستون ──────────────────────────────────────────── */
@media (min-width: 900px) {
    .hero {
        padding: 80px 0 72px;
    }

    .hero-inner {
        flex-direction: row;
        align-items: center;
        text-align: right;
        gap: 64px;
    }

    /* عکس به ستون چپ (order:2 در RTL = انتهای ردیف = سمت چپ) */
    .hero-photo {
        order: 2;
        width: clamp(380px, 38vw, 480px);
        height: clamp(380px, 38vw, 480px);
    }

    /* متن به ستون راست (order:1 در RTL = ابتدای ردیف = سمت راست) */
    .hero-text {
        order: 1;
        flex: 1;
        align-items: flex-start;
        gap: 20px;
        min-width: 0;
    }

    .hero-tagline,
    .hero-verse {
        max-width: none;
    }

    .hero-actions {
        justify-content: flex-start;
    }

    .hero-name {
        font-size: clamp(2.8rem, 4vw, 4rem);
    }
}

/* ----------------------------------------------------------------
   سرتیتر بخش‌ها
   ---------------------------------------------------------------- */
.section {
    padding: 56px 0;
}

.section-header {
    text-align: center;
    margin-bottom: 40px;
}

.section-eyebrow {
    display: block;
    color: var(--gold);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    margin-bottom: 8px;
}

.section-title {
    font-size: clamp(1.5rem, 3vw, 2.1rem);
    color: var(--lapis-deep);
    font-weight: 700;
}

.section-footer {
    text-align: center;
    margin-top: 36px;
}

/* ----------------------------------------------------------------
   کارت شعر
   ---------------------------------------------------------------- */
.poem-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 24px;
}

.poem-card {
    position: relative;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 26px 24px;
    overflow: hidden;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.poem-card::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 4px;
    height: 100%;
    background-color: var(--lapis);
    transform: scaleY(0);
    transform-origin: top;
    transition: transform 0.25s ease;
}

.poem-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-soft-lg);
}

.poem-card:hover::before {
    transform: scaleY(1);
}

.poem-form-badge {
    display: inline-block;
    font-size: 0.78rem;
    color: var(--lapis-deep);
    background-color: rgba(40, 75, 140, 0.08);
    border-radius: 999px;
    padding: 4px 14px;
    margin-bottom: 14px;
}

.poem-card-title {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 10px;
}

.poem-card-preview {
    color: var(--ink-soft);
    font-size: 0.95rem;
    line-height: 1.9;
    margin-bottom: 14px;
}

/* شمسه‌ی کوچکِ جداکننده‌ی دو مصرع در پیش‌نمایش کوتاه شعر (poem_preview) */
.poem-preview-sep {
    color: var(--gold);
}

.poem-card-meta {
    font-size: 0.85rem;
    color: var(--gold);
}

/* ----------------------------------------------------------------
   تایپوگرافی صفحه‌ی تک‌شعر
   ---------------------------------------------------------------- */
.poem-page-title {
    text-align: center;
    font-size: clamp(1.6rem, 3.5vw, 2.4rem);
    color: var(--lapis-deep);
    margin-bottom: 10px;
}

.poem-page-meta {
    text-align: center;
    color: var(--ink-soft);
    margin-bottom: 36px;
}

.poem-page-meta a {
    color: var(--lapis);
    font-weight: 600;
}

.poem-body {
    max-width: 700px;
    margin: 0 auto;
    text-align: center;
    font-size: 1.2rem;
    line-height: 2.9;
    color: var(--ink);
    font-family: var(--font-body);
}

/* ----------------------------------------------------------------
   عکس یادبود شعر (poem.php) — برای شعرهایی که به یاد کسی سروده شده‌اند.
   قاب و کپشنِ دوقسمتی همان کلاس‌های صفحه‌ی درباره‌ی شاعر را دوباره
   به‌کار می‌برند (.about-frame/.about-photo-caption(-sub))؛ این کلاس فقط
   وسط‌چین می‌کند، مثل .about-photo-col
   ---------------------------------------------------------------- */
.poem-memorial-photo {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0 auto 8px;
}

/* ----------------------------------------------------------------
   بیت‌ها و جداکننده‌ی شمسه‌ای بین آن‌ها (render_poem_with_ornaments)
   ---------------------------------------------------------------- */
.poem-beyt {
    text-align: center;
}

/* فاصله‌ی افقیِ وسط مصرع (از علامت *** داخل یک مصرع)؛ مثل فاصله‌ی وسط
   بیت در دیوان شعر. هر بخش با nowrap یک‌جا می‌شکند، نه وسط کلمه */
.poem-misra-part {
    white-space: nowrap;
}

.poem-misra-gap {
    display: inline-block;
    width: 28px;
}

@media (max-width: 600px) {
    /* در موبایل هر بخشِ مصرع در خط جداگانه‌ی خودش می‌نشیند تا سرریز نشود */
    .poem-misra-part {
        display: block;
        white-space: normal;
    }

    .poem-misra-gap {
        display: none;
    }
}

.poem-ornament {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--gold);
    margin: 22px 0;
}

.poem-ornament-icon {
    flex-shrink: 0;
}

.poem-ornament-icon-side {
    opacity: 0.6;
}

.poem-ornament::before,
.poem-ornament::after {
    content: '';
    width: 36px;
    height: 1px;
    background-color: rgba(174, 134, 56, 0.35);
}

@media (max-width: 480px) {
    .poem-ornament {
        margin: 18px 0;
    }

    .poem-ornament::before,
    .poem-ornament::after {
        width: 22px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .poem-ornament {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   کارت کتاب
   ---------------------------------------------------------------- */
.book-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 28px;
}

.book-card {
    display: flex;
    flex-direction: column;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-soft);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.book-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-soft-lg);
}

.book-cover {
    width: 100%;
    aspect-ratio: 3 / 4;
    background-color: var(--paper);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--gold);
    border-bottom: 1px solid var(--line);
}

.book-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.book-info {
    padding: 22px 22px 26px;
}

.book-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 6px;
}

.book-year {
    color: var(--gold);
    font-size: 0.88rem;
    margin-bottom: 12px;
}

.book-desc {
    color: var(--ink-soft);
    font-size: 0.95rem;
    margin-bottom: 16px;
}

/* ----------------------------------------------------------------
   کارت مقاله (articles.php + «مقالات دیگر» در article.php)
   ---------------------------------------------------------------- */
.article-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 28px;
}

.article-card {
    display: flex;
    flex-direction: column;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-soft);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.article-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-soft-lg);
}

.article-cover {
    width: 100%;
    aspect-ratio: 16 / 9;
    background-color: var(--paper);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--gold);
    border-bottom: 1px solid var(--line);
}

.article-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.article-info {
    display: flex;
    flex-direction: column;
    padding: 20px 22px 24px;
    flex: 1;
}

.article-title {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 6px;
}

.article-meta {
    color: var(--gold);
    font-size: 0.82rem;
    margin-bottom: 12px;
}

.article-excerpt {
    color: var(--ink-soft);
    font-size: 0.92rem;
    line-height: 1.85;
    margin-bottom: 16px;
    flex: 1;
}

.article-more-link {
    color: var(--lapis);
    font-size: 0.88rem;
    font-weight: 600;
    align-self: flex-start;
    transition: color 0.2s ease;
}

.article-card:hover .article-more-link {
    color: var(--gold);
}

/* ----------------------------------------------------------------
   صفحه‌ی تک‌مقاله (article.php)
   ---------------------------------------------------------------- */
.article-single {
    max-width: 760px;
    margin: 0 auto;
}

.article-single-title {
    text-align: center;
    font-size: clamp(1.6rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin-bottom: 10px;
}

.article-single-cover {
    margin: 24px 0;
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-soft);
}

.article-single-cover img {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
}

.article-body {
    margin-top: 24px;
}

@media (max-width: 480px) {
    .article-single-cover img {
        max-height: 240px;
    }
}

/* ----------------------------------------------------------------
   گالری عمومی سه‌بخشی (عکس/نماهنگ/صدا) — gallery.php
   ---------------------------------------------------------------- */
.media-tabs {
    display: flex;
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--line);
    padding-bottom: 2px;
}

.media-tab {
    padding: 10px 22px;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ink-soft);
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.media-tab:hover {
    color: var(--lapis);
}

.media-tab.active {
    color: var(--lapis-deep);
    border-bottom-color: var(--gold);
}

/* mobile-first عمدی: حالتِ پایه (بدونِ media query) خودش دو ستون است، پس
   از کوچک‌ترین عرضِ ممکن (۳۲۰px به بالا) هرگز تک‌ستون نمی‌ماند — به‌جای
   اینکه پایه auto-fill/تک‌ستون باشد و فقط در یک بازه‌ی خاص با max-width
   دو ستون بشود (که اگر عرضِ واقعیِ گوشی از آن بازه جا می‌ماند، دوباره
   تک‌ستون می‌شد). برای تغییرِ تعداد ستون‌های موبایل فقط همین عدد (2) را
   عوض کن. */
.media-public-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    margin-top: 24px;
}

/* از ۶۰۰px به بالا (تبلت): سه ستون */
@media (min-width: 600px) {
    .media-public-grid {
        grid-template-columns: repeat(3, 1fr);
        gap: 16px;
    }
}

/* از ۹۰۰px به بالا (دسکتاپ): همان چیدمانِ auto-fill قبلی/فعلی */
@media (min-width: 900px) {
    .media-public-grid {
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    }
}

/* ریست ظاهر دکمه برای کارت‌های قابل‌کلیک (عکس/ویدئو) */
.media-card {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin: 0;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    appearance: none;
    font: inherit;
    text-align: inherit;
    color: inherit;
}

.media-card-image,
.media-card-video {
    position: relative;
    overflow: hidden;
    aspect-ratio: 1 / 1;
    padding: 0;
    cursor: pointer;
}

.media-card-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.35s ease;
    display: block;
}

.media-card-image:hover .media-card-thumb,
.media-card-video:hover .media-card-thumb {
    transform: scale(1.06);
}

.media-card-play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: rgba(20, 23, 30, 0.18);
    pointer-events: none;
}

.media-card-play svg {
    width: 44px;
    height: 44px;
    padding: 12px;
    background-color: rgba(20, 23, 30, 0.55);
    border-radius: 50%;
}

.media-card-audio {
    position: relative;
    overflow: hidden;
    aspect-ratio: 1 / 1;
    padding: 0;
    cursor: pointer;
    background-image: linear-gradient(155deg, var(--lapis), var(--lapis-deep));
}

.media-card-audio:hover .media-card-thumb {
    transform: scale(1.06);
}

/* placeholderِ کارتِ ویدیوی بدونِ poster (رکوردهای قدیمی‌تر از افزودنِ این
   قابلیت)؛ به‌جای تگ <video> خام (که قبل از پخش معمولاً یک مستطیلِ
   خاکستریِ خام نشان می‌دهد)، از رنگ‌های خودِ سایت استفاده می‌کند */
.media-card-video-fallback {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--surface);
    color: var(--gold);
}

.media-card-audio-fallback {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255, 255, 255, 0.55);
}

/* بدون overlay تیره روی کل کارت؛ پوستر تمیز و روشن می‌ماند، فقط آیکن پخش
   (از طریق .media-card-play svg) پس‌زمینه‌ی گرد ملایم خودش را دارد */
.media-card-play-audio {
    background: none;
}

/* ----------------------------------------------------------------
   لایت‌باکس چندرسانه‌ای دو ستونی (عکس/ویدئو) با پنل کپشن کناری
   ---------------------------------------------------------------- */
.lightbox-overlay {
    position: fixed;
    inset: 0;
    background-color: rgba(20, 23, 30, 0.9);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 999;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease;
    padding: 24px;
}

.lightbox-overlay.is-open {
    opacity: 1;
    visibility: visible;
}

.lightbox-inner {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 0;
    max-width: 1100px;
    max-height: 88vh;
    width: 100%;
    background-color: var(--surface);
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-soft-lg);
}

.lightbox-media {
    position: relative;
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #14171e;
}

.lightbox-media img,
.lightbox-media video {
    max-width: 100%;
    max-height: 88vh;
    display: block;
}

.lightbox-caption-panel {
    flex: 0 0 260px;
    padding: 28px 24px;
    background-color: var(--surface);
    border-inline-start: 1px solid var(--line);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

.lightbox-caption-panel:empty {
    display: none;
}

.lightbox-audio-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(200px, 30vw, 320px);
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    background-image: linear-gradient(155deg, var(--lapis), var(--lapis-deep));
    color: rgba(255, 255, 255, 0.6);
}

.lightbox-audio-fallback svg {
    width: 30%;
    height: 30%;
}

/* ----------------------------------------------------------------
   صحنه‌ی صوت داخل لایت‌باکس: پوستر/کاور در بالا + پلیر سفارشی زیرش،
   هر دو در ستون رسانه (نه پنل کپشن)؛ همیشه روی پس‌زمینه‌ی تیره‌ی صحنه.
   حالت پیش‌فرض (بدون پوستر واقعی، فقط آیکن نت موسیقی) وسط‌چین با فاصله
   می‌ماند؛ وقتی پوستر واقعی هست (:has)، صحنه edge-to-edge می‌شود تا عکس و
   پلیر کل فضا را بدون هیچ حاشیه‌ای پر کنند.
   ---------------------------------------------------------------- */
.lightbox-audio-stage {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 32px;
    width: 100%;
    height: 100%;
    padding: 32px;
}

.lightbox-audio-stage:has(.lightbox-audio-poster) {
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    padding: 0;
}

/* عکسِ کاور کل فضای داخلیِ صحنه را بدون هیچ حاشیه/کادری پر می‌کند؛ اگر لازم
   شد لبه‌هایش با object-fit: cover بریده می‌شوند (کش‌نیامدن حفظ می‌شود) */
.lightbox-audio-poster {
    display: block;
    width: 100%;
    flex: 1 1 auto;
    min-height: 0;
    object-fit: cover;
}

/* پلیرِ همان کامپوننت خوانشِ شعر (poem.php) است؛ اینجا هم برای خوانایی روی
   پس‌زمینه‌ی همیشه‌تیره‌ی صحنه (صرف‌نظر از حالت روز/شب سایت) رنگ‌آمیزی می‌شود
   و هم متناسب با قاب بزرگ‌ترِ صحنه، بزرگ و پهن‌تر از حالت معمولی‌اش می‌شود */
.lightbox-audio-stage .audio-player {
    width: 100%;
    max-width: 520px;
    margin: 0;
    padding: 22px 28px;
    gap: 22px;
    background-color: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.18);
    box-shadow: none;
}

/* وقتی پوستر واقعی هست، پلیر هم‌عرضِ کامل عکس (و صحنه) می‌شود، بدون کادر
   گرد مجزا، تا زیر عکس کاملاً یکپارچه/چسبیده به نظر برسد */
.lightbox-audio-stage:has(.lightbox-audio-poster) .audio-player {
    max-width: none;
    border-radius: 0;
}

.lightbox-audio-stage .audio-player-toggle {
    width: 60px;
    height: 60px;
}

.lightbox-audio-stage .audio-player-toggle svg {
    width: 22px;
    height: 22px;
}

.lightbox-audio-stage .audio-player-body {
    gap: 10px;
}

.lightbox-audio-stage .audio-player-progress {
    height: 8px;
    background-color: rgba(255, 255, 255, 0.18);
}

.lightbox-audio-stage .audio-player-time,
.lightbox-audio-stage .audio-player-current,
.lightbox-audio-stage .audio-player-duration,
.lightbox-audio-stage .audio-player-sep {
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.65);
}

@media (max-width: 720px) {
    .lightbox-audio-stage {
        gap: 20px;
        padding: 20px;
    }

    /* روی موبایل، .lightbox-media ارتفاعِ معینی از پدر نمی‌گیرد (فقط
       max-height سقف است، نه ارتفاعِ واقعی)؛ پس flex:1 برای تعیینِ ارتفاعِ
       عکس کافی نیست و باید با aspect-ratio یک ارتفاعِ معین و جمع‌وجور
       (نه بیش‌ازحد بلند) به آن داد تا cover واقعاً کار کند و فضای مرده
       نماند — دقیقاً هم‌عرضِ باکسِ کپشن زیرش (هر دو تمام‌عرضِ کادر) */
    .lightbox-audio-poster {
        flex: none;
        width: 100%;
        aspect-ratio: 16 / 9;
        height: auto;
    }

    .lightbox-audio-fallback {
        width: clamp(140px, 34vw, 220px);
    }

    .lightbox-audio-stage .audio-player-toggle {
        width: 48px;
        height: 48px;
    }

    .lightbox-audio-stage .audio-player-toggle svg {
        width: 18px;
        height: 18px;
    }
}

@media (max-width: 480px) {
    .lightbox-audio-stage {
        gap: 16px;
        padding: 16px;
    }
}

.lightbox-caption-text {
    color: var(--ink);
    font-size: 0.98rem;
    line-height: 1.9;
    margin-bottom: 14px;
}

.lightbox-caption-category {
    display: inline-block;
    align-self: flex-start;
    font-size: 0.78rem;
    color: var(--lapis-deep);
    background-color: rgba(40, 75, 140, 0.08);
    border-radius: 999px;
    padding: 4px 14px;
}

.lightbox-close {
    position: absolute;
    top: 16px;
    left: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background-color: rgba(20, 23, 30, 0.55);
    color: #fff;
    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease;
    z-index: 2;
}

.lightbox-close:hover {
    background-color: rgba(40, 75, 140, 0.75);
    border-color: rgba(255, 255, 255, 0.5);
}

.lightbox-close:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

/* ----------------------------------------------------------------
   فلش‌های قبلی/بعدی لایت‌باکس
   ---------------------------------------------------------------- */
.lightbox-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background-color: rgba(20, 23, 30, 0.55);
    color: #fff;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
    z-index: 1;
}

.lightbox-prev {
    left: 16px;
}

.lightbox-next {
    right: 16px;
}

.lightbox-nav:hover {
    background-color: rgba(40, 75, 140, 0.75);
    border-color: rgba(255, 255, 255, 0.5);
}

.lightbox-nav:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

.lightbox-nav[disabled] {
    display: none;
}

/* ----------------------------------------------------------------
   دکمه‌ی دانلود فایل رسانه در پنل کپشن لایت‌باکس
   ---------------------------------------------------------------- */
.lightbox-download {
    display: inline-flex;
    align-items: center;
    align-self: flex-end;
    gap: 6px;
    margin-top: auto;
    padding: 7px 16px;
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background-color: transparent;
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.lightbox-download:hover {
    border-color: var(--lapis);
    color: var(--lapis);
}

.lightbox-download:focus-visible {
    outline: 2px solid var(--lapis);
    outline-offset: 2px;
}

@media (max-width: 720px) {
    .lightbox-inner {
        flex-direction: column;
        max-height: 92vh;
        overflow-y: auto;
    }

    .lightbox-media {
        max-height: 50vh;
    }

    .lightbox-media img,
    .lightbox-media video {
        max-height: 50vh;
    }

    .lightbox-caption-panel {
        flex: none;
        border-inline-start: none;
        border-top: 1px solid var(--line);
    }

    .lightbox-nav {
        width: 40px;
        height: 40px;
    }

    .lightbox-prev {
        left: 8px;
    }

    .lightbox-next {
        right: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .lightbox-overlay {
        transition: none;
    }

    .media-card-thumb {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   بخش درباره
   ---------------------------------------------------------------- */
.about-content {
    max-width: 720px;
    margin: 0 auto;
    text-align: center;
    color: var(--ink-soft);
    font-size: 1.05rem;
    line-height: 2.1;
}

.about-content h2 {
    font-size: clamp(1.15rem, 3vw, 1.35rem);
    font-weight: 700;
    color: var(--lapis);
    margin: 1em 0 0.5em;
    line-height: 1.5;
}

.about-content h2:first-child { margin-top: 0; }

.about-content h3 {
    font-size: clamp(1rem, 2.4vw, 1.15rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin: 0.9em 0 0.4em;
    line-height: 1.5;
}

.about-content h3:first-child { margin-top: 0; }

.about-content p {
    margin: 0 0 0.8em;
}

.about-content p:last-child { margin-bottom: 0; }

.about-content ul,
.about-content ol {
    margin: 0.6em auto 1em;
    max-width: 420px;
    padding-right: 1.8em;
    padding-left: 0;
    text-align: right;
}

.about-content li {
    margin-bottom: 0.35em;
    line-height: 1.9;
}

.about-content strong,
.about-content b {
    font-weight: 700;
}

.about-content em,
.about-content i {
    font-style: italic;
}

/* ----------------------------------------------------------------
   صفحه‌ی اختصاصی درباره‌ی شاعر (about.php)
   چیدمان دوستونی: عکس کوچک و قاب‌دار کنار متن زندگی‌نامه
   ---------------------------------------------------------------- */
.about-layout {
    display: grid;
    grid-template-columns: minmax(220px, 260px) 1fr;
    gap: 40px;
    align-items: start;
}

@media (min-width: 768px) {
    .about-layout {
        grid-template-columns: minmax(300px, 340px) 1fr;
    }

    .about-frame {
        width: 320px;
    }
}

.about-photo-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    /* align-self: start (نه stretch) لازم است تا ارتفاعِ این ستون به‌اندازه‌ی
       محتوای خودش (عکس+کپشن) بماند، نه به‌اندازه‌ی ستونِ متنِ کنارش کش بیاید؛
       وگرنه چون هر دو هم‌ارتفاع می‌شوند، position: sticky فضایی برای «چسبیدن»
       در حینِ اسکرول نخواهد داشت */
    align-self: start;
    position: sticky;
    top: 96px;
}

.about-photo-caption {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--ink);
    text-align: center;
    margin-top: 10px;
    margin-bottom: 0;
    width: 260px;
    max-width: 100%;
    line-height: 1.6;
}

.about-photo-caption-sub {
    font-size: 0.78rem;
    color: var(--ink-soft);
    text-align: center;
    margin-top: 3px;
    margin-bottom: 0;
    width: 260px;
    max-width: 100%;
    line-height: 1.6;
    font-style: italic;
}

@media (min-width: 768px) {
    .about-photo-caption,
    .about-photo-caption-sub {
        width: 320px;
    }
}

.about-text-col {
    min-width: 0;
}

.about-text-heading {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}

.about-text-title {
    color: var(--gold);
    font-weight: 700;
    font-size: 1.1rem;
}

.about-frame {
    position: relative;
    width: 260px;
    max-width: 70%;
    aspect-ratio: 4 / 5;
    padding: 10px;
    box-sizing: border-box;
    border: 1px solid rgba(174, 134, 56, 0.55);
    border-radius: 14px;
    background-color: var(--surface);
    box-shadow: 0 18px 42px rgba(28, 53, 99, 0.14);
    animation: heroPhotoReveal 0.8s ease-out both;
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.about-frame::before {
    content: '';
    position: absolute;
    inset: 5px;
    border: 1px solid rgba(174, 134, 56, 0.25);
    border-radius: 10px;
    pointer-events: none;
}

.about-frame::after {
    content: '';
    position: absolute;
    inset-inline-start: 14px;
    inset-block-start: 14px;
    width: 14px;
    height: 14px;
    border-inline-start: 1px solid var(--gold);
    border-block-start: 1px solid var(--gold);
    pointer-events: none;
}

.about-frame img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
}

.about-frame:hover {
    transform: translateY(-2px);
    box-shadow: 0 22px 50px rgba(28, 53, 99, 0.2);
}

@media (prefers-reduced-motion: reduce) {
    .about-frame {
        animation: none;
        opacity: 1;
        transform: none;
    }
}

.about-bio {
    color: var(--ink);
    font-size: 1.05rem;
    line-height: 2.2;
    text-align: justify;
}

.about-bio h2 {
    font-size: clamp(1.2rem, 3.2vw, 1.5rem);
    font-weight: 700;
    color: var(--lapis);
    margin: 1.8em 0 0.6em;
    line-height: 1.5;
    padding-bottom: 0.25em;
    border-bottom: 2px solid var(--line);
}

.about-bio h2:first-child { margin-top: 0; }

.about-bio h3 {
    font-size: clamp(1rem, 2.6vw, 1.2rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin: 1.4em 0 0.5em;
    line-height: 1.5;
}

.about-bio h3:first-child { margin-top: 0; }

.about-bio p {
    margin: 0 0 1em;
}

.about-bio p:last-child { margin-bottom: 0; }

.about-bio ul,
.about-bio ol {
    margin: 0.6em 0 1em;
    padding-right: 1.8em;
    padding-left: 0;
}

.about-bio li {
    margin-bottom: 0.4em;
    line-height: 1.9;
}

.about-bio strong,
.about-bio b {
    font-weight: 700;
}

.about-bio em,
.about-bio i {
    font-style: italic;
}

/* فاصله‌ی افقیِ وسط بیت (از علامت *** در متن)؛ در about.php و sarghaz.php
   به‌کار می‌رود (render_verse_spacing) تا شعرهای میان‌متن مثل بیتِ دیوان
   دیده شوند. هر مصرع با nowrap یک‌جا می‌شکند، نه وسط کلمه */
.verse-mesra {
    white-space: nowrap;
}

.verse-gap {
    display: inline-block;
    width: 28px;
}

/* عکس‌های میان‌متنِ سرآغاز/زندگی‌نامه (از دکمه‌ی تصویر Quill)؛ امن و
   ریسپانسیو. تراز با کلاس‌های img-left/img-center/img-right که در
   sanitize_html حفظ می‌شوند؛ اندازه با style="width" روی خودِ img */
.about-bio img,
.sarghaz-content img {
    max-width: 100%;
    height: auto;
    border-radius: 10px;
    margin: 12px 0;
}

.about-bio img.img-left,
.sarghaz-content img.img-left {
    float: left;
    margin: 4px 18px 12px 0;
}

.about-bio img.img-right,
.sarghaz-content img.img-right {
    float: right;
    margin: 4px 0 12px 18px;
}

.about-bio img.img-center,
.sarghaz-content img.img-center {
    display: block;
    float: none;
    margin: 14px auto;
}

@media (max-width: 600px) {
    /* در موبایل، عرض کم است: هر مصرعِ بیت در خط جداگانه‌ی خودش می‌نشیند
       (به‌جای کنار هم با فاصله‌ی افقی) تا چیزی سرریز/به‌هم‌ریخته نشود؛
       شکست فقط سرِ فاصله‌ی بین کلمات ممکن است، نه وسط یک کلمه */
    .verse-mesra {
        display: block;
        white-space: normal;
        margin-bottom: 2px;
    }

    .verse-mesra:last-child {
        margin-bottom: 0;
    }

    .verse-gap {
        display: none;
    }

    /* تصاویرِ شناور هم در عرض کم جمع‌وجور نمی‌مانند؛ تمام‌عرض و وسط‌چین */
    .about-bio img.img-left,
    .about-bio img.img-right,
    .sarghaz-content img.img-left,
    .sarghaz-content img.img-right {
        float: none;
        display: block;
        margin: 12px auto;
    }
}

/* ویدیوی امبدشده‌ی میان‌متنِ مقاله (آپارات/یوتیوب، از مودالِ سفارشیِ
   ویرایشگر). فقط iframeِ امن (از دامنه‌های مجاز در sanitize_html) داخل
   این wrapper نگه داشته می‌شود. padding-top: 56.25% نسبت ۱۶:۹ ریسپانسیو
   را بدون عرض/ارتفاع ثابت روی iframe تضمین می‌کند. اندازه با style
   inline (max-width درصدی، از دکمه‌های کوچک/متوسط/بزرگِ ویرایشگر) و تراز
   با کلاس‌های video-left/video-center/video-right کنترل می‌شوند، دقیقاً
   مثل عکس‌های میان‌متنِ img-left/img-center/img-right */
.article-video {
    position: relative;
    width: 100%;
    max-width: 100%;
    padding-top: 56.25%;
    margin: 20px auto;
    border-radius: var(--radius);
    overflow: hidden;
    background: var(--paper);
    box-shadow: var(--shadow-soft);
}

.article-video iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.article-video.video-left {
    float: left;
    margin: 4px 18px 12px 0;
}

.article-video.video-right {
    float: right;
    margin: 4px 0 12px 18px;
}

.article-video.video-center {
    display: block;
    float: none;
    margin: 20px auto;
}

@media (max-width: 600px) {
    /* مثل تصاویرِ شناور، در عرض کمِ موبایل کنارِ متن جمع‌وجور نمی‌ماند */
    .article-video.video-left,
    .article-video.video-right {
        float: none;
        display: block;
        margin: 16px auto;
    }
}

@media (max-width: 480px) {
    /* اگر از پنل اندازه‌ی کوچک/متوسط (max-width درصدی به‌صورت style
       inline) انتخاب شده باشد، روی موبایلِ خیلی باریک همان درصد از عرضِ
       تنگِ صفحه هم می‌تواند خیلی کوچک/غیرقابل‌استفاده شود (ویدیوی ۱۶:۹ در
       عرض مثلاً ۱۶۰px هم پهنا و هم ارتفاعش نامرتب می‌شود). برای «مرتب»
       ماندن، در این عرض همیشه تمام‌عرض نمایش داده می‌شود؛ چون style
       inline است، override فقط با !important ممکن است */
    .article-video {
        max-width: 100% !important;
    }
}

@media (max-width: 760px) {
    .about-layout {
        grid-template-columns: 1fr;
        gap: 24px;
        text-align: center;
    }

    .about-photo-col {
        position: static;
        top: auto;
        align-self: center;
        /* عرضِ کاملِ ردیف (نه justify-self:center که شرینک‌به‌محتوا می‌شد) تا
           width:100% روی .about-frame به‌درستی نسبت به عرضِ واقعیِ موجود در
           صفحه محاسبه شود؛ خودِ align-items:center (در قانونِ پایه‌ی همین
           کلاس) وسط‌چینیِ بصری را انجام می‌دهد */
        width: 100%;
    }

    /* علتِ ریشه‌ایِ باگِ «عکس از قاب بیرون می‌زند» دقیقاً همین‌جا بود:
       width:260px + max-width:65vw (واحدِ vw، وابسته به کلِ viewport، نه به
       ستونِ واقعیِ خودش) در ترکیب با aspect-ratio روی .about-frame، در
       بعضی مرورگرها (خصوصاً Safari iOS) باعث می‌شد عرضِ واقعاً رندرشده با
       عرضی که برای محاسبه‌ی ارتفاعِ aspect-ratio استفاده می‌شود کمی
       ناهماهنگ شود — نتیجه: قاب و عکسِ داخلش دیگر دقیقاً هم‌اندازه
       نمی‌ماندند. width:100% (نسبت به همان ستونِ بالا که خودش width:100%
       است) عرض را مستقیماً و بدون واسطه‌ی viewport محاسبه می‌کند؛
       max-width:260px فقط سقفی برای گوشی‌های نسبتاً بزرگ‌تر است */
    .about-frame {
        width: 100%;
        max-width: 260px;
    }

    .about-photo-caption,
    .about-photo-caption-sub {
        width: 100%;
        max-width: 260px;
    }

    .about-text-heading {
        justify-content: center;
    }

    .about-bio {
        text-align: start;
    }
}

/* ----------------------------------------------------------------
   حالت خالی (نبود داده)
   ---------------------------------------------------------------- */
.empty-state {
    text-align: center;
    color: var(--ink-soft);
    padding: 40px 20px;
    border: 1px dashed var(--line);
    border-radius: var(--radius);
}

/* ----------------------------------------------------------------
   فوتر
   ---------------------------------------------------------------- */
.site-footer {
    padding: 30px 0 24px;
    border-top: 1px solid var(--line);
    margin-top: 40px;
}

.footer-inner {
    text-align: center;
}

/* ردیف لوگو + نام شاعر کنار هم */
.footer-brand {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-bottom: 14px;
}

.footer-logo-link {
    display: inline-flex;
    flex-shrink: 0;
    border-radius: 50%;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.footer-logo-link:hover {
    opacity: 0.82;
    transform: scale(1.06);
}

.footer-logo-link:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 3px;
}

.footer-logo {
    display: block;
    width: 40px;
    height: 40px;
    object-fit: contain;
    border-radius: 50%;
}

.footer-signature {
    font-family: var(--font-signature);
    font-size: 1.3rem;
    line-height: 1;
    color: var(--lapis-deep);
    word-spacing: -0.2em;
    margin: 0;
}

.footer-social {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
}

.footer-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid var(--line);
    color: var(--ink-soft);
    background-color: var(--surface);
    transition: color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.footer-social-link:hover {
    color: var(--gold);
    border-color: var(--gold);
    transform: translateY(-2px);
}

.footer-social-link:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

.footer-copy {
    color: var(--ink-soft);
    font-size: 0.82rem;
    margin-bottom: 0;
}

.footer-credit {
    color: var(--ink-soft);
    font-size: 0.74rem;
    opacity: 0.72;
    margin-top: 4px;
}

.footer-credit-link {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.footer-credit-link:hover {
    color: var(--gold);
    border-bottom-color: var(--gold);
}

.footer-credit-link:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
    border-radius: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .footer-logo-link,
    .footer-social-link {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   ریسپانسیو
   ---------------------------------------------------------------- */
@media (max-width: 1024px) {
    .container {
        padding: 0 18px;
    }
}

@media (max-width: 768px) {
    .nav-toggle {
        display: flex;
    }

    .main-nav {
        position: absolute;
        top: 76px;
        right: 0;
        left: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        background-color: var(--surface);
        box-shadow: var(--shadow-soft);
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
    }

    .main-nav.is-open {
        max-height: 400px;
    }

    .main-nav .nav-link {
        padding: 16px 24px;
        border-bottom: 1px solid var(--line);
    }

    .nav-toggle.is-active span:nth-child(1) {
        transform: translateY(7px) rotate(45deg);
    }

    .nav-toggle.is-active span:nth-child(2) {
        opacity: 0;
    }

    .nav-toggle.is-active span:nth-child(3) {
        transform: translateY(-7px) rotate(-45deg);
    }

    .hero {
        padding: 44px 0 36px;
    }

    .section {
        padding: 40px 0;
    }
}

/* ----------------------------------------------------------------
   دسترس‌پذیری
   ---------------------------------------------------------------- */
:focus-visible {
    outline: 2px solid var(--lapis);
    outline-offset: 3px;
    border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
}

/* ----------------------------------------------------------------
   نوار ابزار فهرست اشعار (جستجو + مرتب‌سازی + فیلترها)
   ---------------------------------------------------------------- */
.poems-toolbar {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    margin-bottom: 36px;
    text-align: center;
}

/* ردیف جستجو */
.toolbar-search {
    display: flex;
    width: 100%;
    max-width: 520px;
    gap: 10px;
}

.search-input {
    flex: 1;
    width: 100%;
    padding: 11px 16px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background-color: var(--surface);
    color: var(--ink);
    font-family: var(--font-body);
    font-size: 0.95rem;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.search-input:focus {
    outline: none;
    border-color: var(--lapis);
    box-shadow: 0 0 0 3px rgba(40, 75, 140, 0.12);
}

/* ردیف کنترل‌ها: مرتب‌سازی + قالب + کتاب + چیپِ صوت‌دارها — در دسکتاپ همیشه
   یک ردیف؛ در موبایل ستونی می‌شود (پایین‌تر) */
.toolbar-controls {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
}

/* در دسکتاپ اثری در چیدمان ندارد (فرزندانش مستقیم داخل toolbar-controls
   جریان می‌یابند)؛ فقط در موبایل به یک ردیفِ واقعیِ مستقل تبدیل می‌شود */
.toolbar-selects {
    display: contents;
}

.toolbar-ctrl {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 14px 6px 10px;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    transition: border-color 0.2s ease;
    min-width: 0;
}

.toolbar-ctrl:focus-within {
    border-color: var(--lapis);
}

.ctrl-label {
    font-size: 0.76rem;
    color: var(--ink-soft);
    white-space: nowrap;
    user-select: none;
    pointer-events: none;
}

.ctrl-select {
    background: none;
    border: none;
    outline: none;
    font-size: 0.87rem;
    font-family: var(--font-body);
    color: var(--ink);
    cursor: pointer;
    padding: 0;
    max-width: 140px;
}

.ctrl-select:focus {
    outline: none;
}

.ctrl-select:focus-visible {
    outline: 2px solid var(--lapis);
    outline-offset: 2px;
}

/* چیپِ toggleِ «فقط صوت‌دارها»؛ زیرِ ظاهرِ چیپ همان چک‌باکسِ قبلی است
   (name=audio, کلاسِ ctrl-checkbox برای ارسالِ خودکارِ main.js دست‌نخورده
   می‌ماند) — فقط بصری تغییر کرده، نه رفتار. ورودی با position:absolute
   کاملاً نامرئی می‌شود ولی هنوز focusable/toggle-پذیر است؛ ظاهرِ چیپِ واقعی
   روی <span> کناری‌اش با سلکتورِ عمومیِ ~ (پشتیبانیِ کامل در همه‌ی
   مرورگرها، بدونِ نیاز به :has()) بر اساسِ :checked رنگ می‌گیرد */
.audio-chip {
    display: inline-flex;
    cursor: pointer;
}

.audio-chip-input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.audio-chip-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 16px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background-color: var(--surface);
    color: var(--ink-soft);
    font-size: 0.85rem;
    font-weight: 500;
    white-space: nowrap;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.audio-chip-input:checked ~ .audio-chip-pill {
    background-color: var(--lapis);
    border-color: var(--lapis);
    color: #fff;
}

.audio-chip:hover .audio-chip-pill {
    border-color: var(--lapis);
}

.audio-chip-input:checked ~ .audio-chip-pill:hover {
    background-color: var(--lapis-deep);
    border-color: var(--lapis-deep);
}

.audio-chip-input:focus-visible ~ .audio-chip-pill {
    outline: 2px solid var(--lapis);
    outline-offset: 2px;
}

/* دکمه‌ی حذف فیلترها */
.btn-clear-filter {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 12px;
    font-size: 0.78rem;
    color: var(--ink-soft);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: none;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.btn-clear-filter:hover {
    color: var(--crimson);
    border-color: var(--crimson);
}

.results-count {
    color: var(--ink-soft);
    font-size: 0.82rem;
}

/* ----------------------------------------------------------------
   چیپ‌ها (فیلترِ دسته‌بندیِ گالری + صفحه‌بندی)
   ---------------------------------------------------------------- */
/* ظرفِ فیلترِ دسته‌بندی (gallery.php)؛ بدونِ این، چیپ‌ها فقط با فاصله‌ی
   پیش‌فرضِ فاصله‌ی سفیدِ متن کنارِ هم می‌نشستند و نامنظم/پراکنده دیده
   می‌شدند — با flex+gap یکنواخت می‌شوند */
.chip-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: 16px;
}

.chip {
    display: inline-flex;
    align-items: center;
    padding: 7px 18px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background-color: var(--surface);
    color: var(--ink-soft);
    font-size: 0.85rem;
    font-weight: 500;
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.chip:hover {
    border-color: var(--lapis);
    color: var(--lapis);
}

.chip.active {
    background-color: var(--lapis);
    border-color: var(--lapis);
    color: #fff;
}

@media (max-width: 600px) {
    .toolbar-search {
        max-width: 100%;
    }

    /* ردیف ۲ (سه‌گانه‌ی select) و ردیف ۳ (چیپِ صوت‌دارها + حذفِ فیلترها) از
       هم جدا می‌شوند: toolbar-controls ستونی می‌شود و هر بچه (اکنون
       toolbar-selects، audio-chip، و در صورتِ وجود لینکِ حذفِ فیلترها)
       خودش یک ردیفِ کاملِ جداگانه می‌گیرد */
    .toolbar-controls {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    /* در این عرض دیگر display:contents نیست؛ خودش یک ردیفِ واقعیِ
       سه‌ستونیِ هم‌عرض می‌شود */
    .toolbar-selects {
        display: flex;
        flex-direction: row;
        gap: 6px;
        width: 100%;
    }

    /* لیبل (مثلاً «ترتیب») بالای select می‌رود، نه کنارش؛ چون در عرضِ کم با
       مقدارِ انتخاب‌شده تداخل/همپوشانی پیدا می‌کرد */
    .toolbar-selects .toolbar-ctrl {
        flex: 1;
        flex-direction: column;
        align-items: stretch;
        gap: 2px;
        padding: 5px 7px;
        min-width: 0;
    }
    .toolbar-selects .ctrl-label {
        font-size: 0.66rem;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .toolbar-selects .ctrl-select {
        font-size: 0.76rem;
        max-width: none;
        min-width: 0;
        width: 100%;
    }

    .audio-chip {
        width: 100%;
    }
    .audio-chip-pill {
        width: 100%;
        justify-content: center;
    }

    .btn-clear-filter {
        align-self: center;
    }
}

/* ----------------------------------------------------------------
   صفحه‌بندی
   ---------------------------------------------------------------- */
.pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: 36px;
}

/* ----------------------------------------------------------------
   صفحه‌ی تک‌شعر
   ---------------------------------------------------------------- */
.poem-single {
    max-width: 720px;
    margin: 0 auto;
    /* پدینگِ افقی عمداً صفر نیست: این ظرف مستقیماً میزبانِ عناصرِ
       تمام‌عرض/کارتی‌ست (مثل .audio-player)؛ بدونِ این پدینگ، چنین
       عناصری در موبایل (که max-width:720px دیگر محدودکننده نیست)
       دقیقاً به لبه‌های صفحه می‌چسبند — چیزی که برای محتوای صرفاً
       متنی/وسط‌چین (مثل ابیات) دیده نمی‌شود ولی برای یک کارتِ
       پس‌زمینه‌دار بلافاصله لو می‌رود */
    padding: 0 16px 8px;
}

.poem-single-head {
    text-align: center;
    margin-bottom: 8px;
}

.poem-single-title {
    text-align: center;
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin-bottom: 10px;
}

/* ردیف افقی اطلاعات زیر عنوان شعر */
.poem-head-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    margin-top: 4px;
}

/* در هر دو حالت: مارجین‌های فردی با gap مدیریت می‌شوند */
.poem-head-body .poem-single-book,
.poem-head-body .poem-user-actions,
.poem-head-body .poem-rating {
    margin-top: 0;
}

@media (min-width: 768px) {
    .poem-head-body {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        align-items: center;
        gap: 6px 20px;
    }
    /* در دسکتاپ مارجین‌های فردی جای خود را به gap می‌دهند */
    .poem-head-body .poem-single-meta,
    .poem-head-body .poem-single-book,
    .poem-head-body .poem-user-actions {
        margin: 0;
    }
    /* ویجت ستاره افقی می‌شود: ستاره‌ها و اطلاعات کنار هم */
    .poem-head-body .poem-rating {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 0 8px;
        margin: 0;
        text-align: start;
    }
    .poem-head-body .poem-rating-info {
        margin-top: 0;
    }
    /* جدا‌کننده‌ی ظریف بین آیتم‌ها */
    .poem-head-body > * + * {
        padding-inline-start: 20px;
        border-inline-start: 1px solid var(--line);
    }
}

.poem-single-meta {
    text-align: center;
    color: var(--ink-soft);
    font-size: 0.85rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    flex-wrap: wrap;
}

.poem-view-count {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.78rem;
    opacity: 0.7;
}

/* ----------------------------------------------------------------
   ویجت امتیازدهی ستاره‌ای (poem.php)
   ---------------------------------------------------------------- */
.poem-rating {
    text-align: center;
    margin: 14px 0 4px;
}

.poem-rating-stars {
    display: inline-flex;
    gap: 2px;
    direction: ltr;
}

.rating-star {
    background: none;
    border: none;
    padding: 3px;
    cursor: pointer;
    color: var(--ink-soft);
    line-height: 0;
    transition: transform 0.12s ease;
}

.rating-star:hover,
.rating-star:focus-visible {
    outline: none;
    transform: scale(1.18);
}

.rating-star:disabled {
    cursor: default;
    transform: none;
}

.star-wrap {
    position: relative;
    display: inline-block;
    width: 22px;
    height: 22px;
}

.star-bg,
.star-fg {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
}

.star-bg {
    color: var(--ink-soft);
}

.star-fg {
    color: var(--gold);
    clip-path: inset(0 100% 0 0);
    transition: clip-path 0.1s ease;
}

.rating-star.filled .star-fg {
    clip-path: inset(0 0% 0 0);
}

.rating-star.half .star-fg {
    clip-path: inset(0 50% 0 0);
}

/* هاور روی ستاره‌های فعال: تمام ستاره‌ها با رنگ طلایی */
.poem-rating-stars:not([aria-disabled="true"]) .rating-star:hover ~ .rating-star .star-bg,
.poem-rating-stars:not([aria-disabled="true"]) .rating-star:hover ~ .rating-star .star-fg {
    clip-path: inset(0 100% 0 0);
}

.poem-rating-info {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 6px;
    font-size: 0.8rem;
    color: var(--ink-soft);
    direction: rtl;
    min-width: 7rem;
}

.poem-rating-sep {
    opacity: 0.4;
}

.poem-rating-avg {
    color: var(--gold);
    font-weight: 600;
}


@media (prefers-reduced-motion: reduce) {
    .rating-star { transition: none; }
    .star-fg     { transition: none; }
}

.poem-single-book {
    text-align: center;
    color: var(--ink-soft);
    font-size: 0.9rem;
    margin-top: 10px;
}

.poem-single-book a {
    color: var(--lapis);
    font-weight: 600;
}

/* ----------------------------------------------------------------
   پلیر صوتی سفارشی خوانش شعر (poem.php)
   ---------------------------------------------------------------- */
.audio-player {
    display: flex;
    align-items: center;
    gap: 16px;
    max-width: 700px;
    margin: 20px auto 28px;
    padding: 14px 18px;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-soft);
}

.audio-player-element {
    display: none;
}

.audio-player-toggle {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    background-color: var(--lapis);
    color: #fff;
    cursor: pointer;
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.audio-player-toggle:hover {
    background-color: var(--lapis-deep);
    transform: scale(1.05);
}

.audio-player-toggle .icon-pause {
    display: none;
}

.audio-player-toggle.is-playing .icon-play {
    display: none;
}

.audio-player-toggle.is-playing .icon-pause {
    display: block;
}

.audio-player-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.audio-player-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    color: var(--ink-soft);
}

.audio-player-label svg {
    color: var(--gold);
    flex-shrink: 0;
}

.audio-player-progress {
    position: relative;
    height: 6px;
    background-color: var(--line);
    border-radius: 999px;
    cursor: pointer;
}

.audio-player-progress-fill {
    position: absolute;
    inset-inline-start: 0;
    top: 0;
    height: 100%;
    width: 0%;
    background-color: var(--gold);
    border-radius: 999px;
    transition: width 0.1s linear;
}

.audio-player-time {
    display: flex;
    justify-content: space-between;
    font-size: 0.75rem;
    color: var(--ink-soft);
}

@media (max-width: 480px) {
    .audio-player {
        gap: 12px;
        padding: 12px 14px;
    }

    .audio-player-toggle {
        width: 38px;
        height: 38px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .audio-player-toggle {
        transition: none;
    }

    .audio-player-progress-fill {
        transition: none;
    }
}

.poem-single-back {
    display: flex;
    justify-content: center;
    margin-top: 32px;
}

/* ----------------------------------------------------------------
   اشتراک‌گذاری/کپی شعر (poem.php)
   ---------------------------------------------------------------- */
.poem-share {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    margin: 32px 0;
    padding-top: 24px;
    border-top: 1px solid var(--line);
}

.poem-share-label {
    font-size: 0.85rem;
    color: var(--ink-soft);
}

.poem-share-buttons {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

.share-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 16px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background-color: var(--surface);
    color: var(--ink-soft);
    font-size: 0.85rem;
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.share-btn svg {
    flex-shrink: 0;
}

.share-btn:hover {
    border-color: var(--lapis);
    color: var(--lapis);
}

.poem-share-data {
    display: none;
}

/* ----------------------------------------------------------------
   دکمه‌های نشان/علاقه‌مندی/خوانده‌شده (localStorage، بدون حساب کاربری)
   ---------------------------------------------------------------- */
.poem-user-actions {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 14px;
}

.user-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--line);
    border-radius: 50%;
    background-color: var(--surface);
    color: var(--ink-soft);
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease, transform 0.15s ease;
}

.user-action-btn:hover {
    transform: translateY(-1px);
}

.user-action-btn[data-user-action="bookmark"].active {
    color: var(--gold);
    border-color: var(--gold);
    background-color: rgba(174, 134, 56, 0.1);
}

.user-action-btn[data-user-action="favorite"].active {
    color: var(--crimson);
    border-color: var(--crimson);
    background-color: rgba(142, 42, 46, 0.08);
}

.user-action-btn[data-user-action="read"].active {
    color: var(--lapis);
    border-color: var(--lapis);
    background-color: rgba(40, 75, 140, 0.08);
}

@media (prefers-reduced-motion: reduce) {
    .user-action-btn {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   نشانه‌ی کوچک وضعیت روی کارت‌های شعر (فقط نمایشی)
   ---------------------------------------------------------------- */
.poem-card-badges {
    position: absolute;
    top: 12px;
    left: 12px;
    display: flex;
    gap: 4px;
    z-index: 1;
}

.poem-card-badge {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background-color: var(--surface);
    box-shadow: var(--shadow-soft);
}

.poem-card-badge.badge-bookmark {
    color: var(--gold);
}

.poem-card-badge.badge-favorite {
    color: var(--crimson);
}

.poem-card-badge.badge-read {
    color: var(--lapis);
}

/* ----------------------------------------------------------------
   صفحه‌ی «نشان‌های من» (my.php)
   ---------------------------------------------------------------- */
.my-note {
    text-align: center;
    color: var(--ink-soft);
    font-size: 0.85rem;
    margin-bottom: 22px;
}

.my-tabs {
    display: flex;
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 24px;
    border-bottom: 1px solid var(--line);
    padding-bottom: 2px;
}

.my-tab {
    appearance: none;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    padding: 10px 18px;
    font: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--ink-soft);
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.my-tab:hover {
    color: var(--lapis);
}

.my-tab.active {
    color: var(--lapis-deep);
    border-bottom-color: var(--gold);
}

.my-tab-count {
    color: var(--ink-soft);
    font-weight: 400;
    font-size: 0.85rem;
}

.my-panel {
    display: none;
}

.my-panel.active {
    display: block;
}

.my-list {
    max-width: 640px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
}

.my-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 4px;
    border-bottom: 1px dashed var(--line);
}

.my-item:last-child {
    border-bottom: none;
}

.my-item-title {
    color: var(--ink);
    font-size: 0.98rem;
    flex: 1;
    min-width: 0;
}

.my-item-title:hover {
    color: var(--lapis);
}

.my-item-remove {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border: 1px solid var(--line);
    border-radius: 50%;
    background-color: var(--surface);
    color: var(--ink-soft);
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease;
}

.my-item-remove:hover {
    border-color: var(--crimson);
    color: var(--crimson);
}

.my-empty {
    max-width: 480px;
    margin: 0 auto;
}

@media (max-width: 480px) {
    .my-tab {
        padding: 8px 12px;
        font-size: 0.85rem;
    }
}

/* ----------------------------------------------------------------
   منوی شناور اشتراک‌گذاری بخش انتخاب‌شده از شعر
   ---------------------------------------------------------------- */
.selection-share-menu {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 500;
    display: flex;
    gap: 4px;
    padding: 6px;
    background-color: var(--lapis-deep);
    border-radius: 10px;
    box-shadow: var(--shadow-soft-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(4px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
}

.selection-share-menu.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.selection-share-menu button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    background: none;
    border: none;
    border-radius: 6px;
    color: #fff;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.selection-share-menu button:hover,
.selection-share-menu button:focus-visible {
    background-color: rgba(255, 255, 255, 0.15);
}

/* ----------------------------------------------------------------
   توستِ بازخورد کپی
   ---------------------------------------------------------------- */
.share-toast {
    position: fixed;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%) translateY(10px);
    z-index: 1000;
    padding: 10px 22px;
    background-color: var(--lapis-deep);
    color: #fff;
    font-size: 0.85rem;
    border-radius: 999px;
    box-shadow: var(--shadow-soft-lg);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease;
}

.share-toast.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

@media (max-width: 480px) {
    .share-btn {
        padding: 8px 12px;
        font-size: 0.8rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .selection-share-menu,
    .share-toast {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   معنی/شرح شعر (poem.php)
   ---------------------------------------------------------------- */
.poem-meaning {
    max-width: 700px;
    margin: 0 auto 28px;
    padding: 22px 24px;
    background-color: var(--surface);
    border-inline-start: 3px solid var(--gold);
    border-radius: var(--radius);
    text-align: start;
}

.poem-meaning-title {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lapis-deep);
    margin-bottom: 10px;
}

.poem-meaning-body {
    color: var(--ink);
    font-size: 1rem;
    line-height: 2.1;
}

@media (max-width: 480px) {
    .poem-meaning {
        margin-inline: 18px;
        padding: 18px;
    }
}

/* ----------------------------------------------------------------
   تعداد اشعار کتاب (کارت فهرست کتاب‌ها)
   ---------------------------------------------------------------- */
.book-count {
    display: inline-block;
    color: var(--gold);
    font-size: 0.82rem;
}

/* ----------------------------------------------------------------
   صفحه‌ی تک‌کتاب
   ---------------------------------------------------------------- */
.book-single {
    max-width: 640px;
    margin: 0 auto;
    text-align: center;
}

.book-single-cover {
    width: 200px;
    margin: 0 auto 22px;
    aspect-ratio: 3 / 4;
    border-radius: var(--radius);
    overflow: hidden;
    border: 1px solid var(--line);
    box-shadow: var(--shadow-soft);
}

.book-single-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.book-single-title {
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin-bottom: 8px;
}

.book-single-year {
    color: var(--gold);
    font-size: 0.9rem;
    margin-bottom: 16px;
}

.book-single-desc {
    color: var(--ink-soft);
    font-size: 1rem;
    line-height: 2;
}

.book-single-back {
    display: flex;
    justify-content: center;
    margin-top: 36px;
}

/* ----------------------------------------------------------------
   آکاردئون فهرست اشعار: کتاب ← قالب ← شعر (contents.php)
   وسط‌چین، عرض محدود، با سه سطح کاملاً متمایز و تورفتگی پلکانی
   ---------------------------------------------------------------- */
.contents-wrap {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 4px;
}

/* بدون JS، همه‌چیز همیشه باز و در دسترس باشد (تحول تدریجی/progressive enhancement) */
html:not(.js-acc) .acc-book-body,
html:not(.js-acc) .acc-form-body {
    max-height: none !important;
    opacity: 1 !important;
    overflow: visible !important;
}

html:not(.js-acc) .acc-chevron {
    display: none;
}

/* ریست کامل ظاهر دکمه تا هیچ‌کجا شبیه dropdown/select مرورگر دیده نشود */
.acc-toggle {
    display: flex;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    margin: 0;
    background-color: transparent;
    background-image: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    font: inherit;
    color: inherit;
    text-align: center;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

/* ---------------------- سطح ۱: کتاب (کارت تمام‌عرض) ---------------------- */
.acc-book {
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    margin-bottom: 18px;
    overflow: hidden;
    box-shadow: var(--shadow-soft);
}

.acc-book-head {
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    padding: 20px 52px;
    transition: background-color 0.2s ease;
}

.acc-book-head:hover,
.acc-book-head:focus-visible {
    background-color: var(--paper);
}

.acc-book.open > .acc-book-head {
    border-bottom: 1px solid var(--line);
}

.acc-book-title {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--lapis-deep);
}

.acc-book-year {
    font-size: 0.85rem;
    color: var(--gold);
}

.acc-book-count {
    font-size: 0.8rem;
    color: var(--ink-soft);
    font-weight: 400;
}

.acc-book-head:hover .acc-book-title {
    color: var(--lapis);
}

.acc-book-body {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    text-align: center;
    padding: 0 20px;
    transition: max-height 0.4s ease, opacity 0.3s ease, padding 0.4s ease;
}

.acc-book.open > .acc-book-body {
    max-height: 4000px;
    opacity: 1;
    padding: 16px 20px 22px;
}

/* ---------------------- سطح ۲: قالب (تورفته، عرض کمی محدودتر) ---------------------- */
.acc-form {
    max-width: 92%;
    margin: 0 auto 4px;
    border-radius: 10px;
    overflow: hidden;
}

.acc-form-head {
    align-items: center;
    justify-content: center;
    gap: 6px 10px;
    padding: 11px 40px;
    border-radius: 10px;
    transition: background-color 0.2s ease;
}

.acc-form-head:hover,
.acc-form-head:focus-visible {
    background-color: rgba(174, 134, 56, 0.08);
}

.acc-form-title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--gold);
}

.acc-form-count {
    font-size: 0.78rem;
    color: var(--ink-soft);
}

.acc-form-head:hover .acc-form-title {
    color: var(--lapis);
}

.acc-form-body {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.35s ease, opacity 0.25s ease;
}

.acc-form.open > .acc-form-body {
    max-height: 2000px;
    opacity: 1;
    padding-bottom: 6px;
}

/* ---------------------- سطح ۳: اشعار (چندستونه، شمسه‌ها هم‌تراز) ---------------------- */
.acc-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    column-gap: 28px;
    row-gap: 4px;
    max-width: 96%;
    margin: 0 auto;
    text-align: start;
}

.acc-row {
    display: flex;
    align-items: baseline;
    padding: 6px 0;
    min-width: 0;
}

.acc-row::before {
    content: '✦';
    flex: 0 0 20px;
    color: var(--gold);
    font-size: 0.6rem;
    text-align: center;
}

.acc-row a {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--ink);
    font-size: 0.94rem;
    line-height: 1.5;
    overflow-wrap: break-word;
    transition: color 0.2s ease;
}

.acc-row a:hover {
    color: var(--lapis);
}

@media (max-width: 768px) {
    .acc-list {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ---------------------- شِورون (فلش جمع/باز)، در یک سمت ثابت ---------------------- */
.acc-chevron {
    position: absolute;
    inset-inline-start: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ink-soft);
    transition: transform 0.25s ease, color 0.2s ease;
    pointer-events: none;
}

.acc-form-head .acc-chevron {
    inset-inline-start: 14px;
}

.acc-toggle[aria-expanded="true"] .acc-chevron {
    transform: translateY(-50%) rotate(180deg);
    color: var(--lapis);
}

.acc-book-head:hover .acc-chevron,
.acc-form-head:hover .acc-chevron {
    color: var(--lapis);
}

@media (max-width: 480px) {
    .acc-book-head {
        padding: 16px 44px;
        gap: 6px 8px;
    }

    .acc-book-title {
        font-size: 1.08rem;
    }

    .acc-form-head {
        padding: 10px 34px;
    }

    .acc-chevron {
        inset-inline-start: 14px;
    }

    .acc-form-head .acc-chevron {
        inset-inline-start: 10px;
    }

    .acc-book-body {
        padding: 0 10px;
    }

    .acc-book.open > .acc-book-body {
        padding: 16px 10px 22px;
    }

    .acc-form {
        max-width: 98%;
    }

    .acc-list {
        grid-template-columns: repeat(2, 1fr);
        column-gap: 12px;
        row-gap: 2px;
        max-width: 100%;
    }

    .acc-row {
        padding: 5px 0;
    }

    .acc-row::before {
        flex: 0 0 15px;
        font-size: 0.55rem;
    }

    .acc-row a {
        font-size: 0.84rem;
        line-height: 1.45;
    }
}

/* حالت بسیار باریک: اگر واقعاً جای دو ستون نبود، فقط اینجا به یک ستون برگرد */
@media (max-width: 300px) {
    .acc-list {
        grid-template-columns: 1fr;
    }
}

/* ----------------------------------------------------------------
   بنر تفأل در صفحه‌ی اصلی
   ---------------------------------------------------------------- */
.fal-banner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    max-width: 560px;
    margin: 0 auto;
    padding: 36px 28px;
    text-align: center;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-soft);
}

.fal-banner-ornament {
    animation: falOrnamentSpin 14s linear infinite;
}

.fal-banner-text {
    font-family: var(--font-signature);
    font-size: 1.4rem;
    line-height: 1.6;
            word-spacing: -0.200em;

    color: var(--lapis-deep);
}

@keyframes falOrnamentSpin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

@media (prefers-reduced-motion: reduce) {
    .fal-banner-ornament {
        animation: none;
    }
}

/* ----------------------------------------------------------------
   صفحه‌ی تفأل (fal.php)
   ---------------------------------------------------------------- */
.fal-page {
    max-width: 720px;
    margin: 0 auto;
}

.fal-intro {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
    margin-bottom: 28px;
}

.fal-intro-title {
    font-family: var(--font-signature);
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.6;
    color: var(--lapis-deep);
            word-spacing: -0.200em;

    font-weight: normal;
}

.fal-frame {
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 32px 28px;
    box-shadow: var(--shadow-soft);
}

.fal-frame-link {
    text-align: center;
    margin-top: 10px;
}

.fal-frame-link a {
    color: var(--gold);
    font-weight: 600;
    font-size: 0.92rem;
    border-bottom: 1px solid rgba(174, 134, 56, 0.4);
}

.fal-frame-link a:hover {
    color: var(--lapis);
    border-bottom-color: var(--lapis);
}

.fal-actions {
    display: flex;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 28px;
}

/* تعبیر فال — بخش معنوی در صفحه‌ی تفأل */
.fal-fortune {
    margin: 28px 0 8px;
    padding: 24px 28px;
    background-color: color-mix(in srgb, var(--gold) 6%, var(--surface));
    border-inline-start: 4px solid var(--gold);
    border-radius: 0 10px 10px 0;
    text-align: center;
}

.fal-fortune-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-bottom: 16px;
}

.fal-fortune-ornament {
    flex-shrink: 0;
    opacity: 0.85;
}

.fal-fortune-title {
    font-family: var(--font-signature);
    font-size: clamp(1.2rem, 3.5vw, 1.6rem);
    color: var(--gold);
    line-height: 1.5;
    margin: 0;
}

.fal-fortune-body {
    font-size: 1.05rem;
    line-height: 2;
    color: var(--ink);
    white-space: pre-wrap;
}

@media (max-width: 480px) {
    .fal-frame {
        padding: 24px 18px;
    }

    .fal-banner {
        padding: 28px 20px;
    }

    .fal-fortune {
        margin-inline: 6px;
        padding: 18px;
        border-radius: 8px;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   مودال ساخت تصویر شعر  (.pim)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* wrapper تمام‌صفحه — flex برای وسط‌چینی پنل */
.pim {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow-y: auto;
}

/* بسته بودن: hidden attribute آن را مخفی می‌کند */
.pim[hidden] {
    display: none;
}

/* overlay نیمه‌شفاف */
.pim__overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.68);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
}

/* پنل اصلی */
.pim__panel {
    position: relative;
    z-index: 1;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 28px 22px 28px;
    width: 100%;
    max-width: 440px;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

/* دکمه‌ی بستن */
.pim__close {
    position: absolute;
    top: 12px;
    left: 14px;
    background: none;
    border: none;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--ink-soft);
    cursor: pointer;
    padding: 3px 8px;
    border-radius: 6px;
    transition: color 0.15s, background 0.15s;
}

.pim__close:hover {
    color: var(--ink);
    background: var(--surface);
}

/* عنوان */
.pim__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--ink);
    text-align: center;
}

/* ناحیه‌ی پیش‌نمایش canvas */
.pim__preview {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #111;
    border-radius: 8px;
    padding: 12px;
    min-height: 160px;
    box-sizing: border-box;
}

/* canvas: رزولوشن واقعی بزرگ، نمایش CSS کوچک (JS تنظیم می‌کند) */
.pim__preview canvas {
    display: block;
    max-width: 100%;
    height: auto;
    border-radius: 4px;
}

/* دکمه‌ی دانلود */
.pim__download {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 12px;
    font-size: 1rem;
}

body.pim-open {
    overflow: hidden;
}

@media (max-width: 480px) {
    .pim {
        padding: 12px;
        align-items: flex-start;
    }

    .pim__panel {
        padding: 22px 14px 22px;
        gap: 14px;
        border-radius: 12px;
        max-height: none;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   مودال پاپ‌آپ ورود به سایت (.site-popup)، includes/footer.php
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.site-popup {
    position: fixed;
    inset: 0;
    z-index: 2500;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;   /* fallback مرورگرهای قدیمی */
    height: 100dvh;  /* واحد داینامیک — Safari iOS را با احتساب نوار آدرس درست حساب می‌کند */
    padding: 20px;
    overflow-y: auto;
}

.site-popup[hidden] {
    display: none;
}

.site-popup__overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.65);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
}

.site-popup__panel {
    position: relative;
    z-index: 1;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 32px 26px 26px;
    width: 100%;
    max-width: 460px;
    max-height: 85vh;   /* fallback مرورگرهای قدیمی */
    max-height: 85dvh;  /* واحد داینامیک — Safari iOS را با احتساب نوار آدرس درست حساب می‌کند */
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    text-align: center;
}

.site-popup__close {
    position: absolute;
    top: 10px;
    left: 12px;
    background: none;
    border: none;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--ink-soft);
    cursor: pointer;
    padding: 3px 8px;
    border-radius: 6px;
    transition: color 0.15s ease, background-color 0.15s ease;
}

.site-popup__close:hover {
    color: var(--ink);
    background-color: var(--surface);
}

.site-popup__logo {
    width: 48px;
    height: 48px;
    object-fit: contain;
}

.site-popup__content {
    color: var(--ink);
    font-size: 1rem;
    line-height: 2;
}

.site-popup__content p {
    margin: 0 0 0.8em;
}

.site-popup__content p:last-child {
    margin-bottom: 0;
}

.site-popup__content a {
    color: var(--lapis);
    text-decoration: underline;
    text-decoration-color: rgba(40, 75, 140, 0.35);
}

.site-popup__content a:hover {
    color: var(--gold);
}

.site-popup__content strong,
.site-popup__content b {
    font-weight: 700;
}

.site-popup__content em,
.site-popup__content i {
    font-style: italic;
}

.site-popup__content .poem-beyt {
    font-size: 1.05rem;
    line-height: 2.3;
}

/* گزینه‌ی اختیاریِ پنل: نمایش شعرِ تصادفیِ مودال با فونت نستعلیق
   (popup_verse_nastaliq)؛ فقط وقتی محتوای مودال همان شعر تصادفی باشد،
   کلاسِ .site-popup__content--nastaliq روی این ظرف اضافه می‌شود.
   حروفِ نستعلیق کشیده‌اند؛ اندازه و line-height بزرگ‌تر برای خوانایی */
.site-popup__content--nastaliq .poem-beyt {
    font-family: var(--font-signature);
    font-weight: normal;
    font-size: 1.4rem;
    line-height: 2.7;
}

.site-popup__progress {
    width: 100%;
    height: 3px;
    background-color: var(--line);
    border-radius: 999px;
    overflow: hidden;
}

.site-popup__progress-bar {
    height: 100%;
    width: 100%;
    background-color: var(--gold);
}

.site-popup__close-btn {
    width: 100%;
    padding: 11px;
}

body.site-popup-open {
    overflow: hidden;
}

@media (max-width: 480px) {
    .site-popup {
        padding: 12px;
    }

    .site-popup__panel {
        padding: 26px 16px 18px;
        gap: 12px;
        border-radius: 12px;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   صفحه‌ی ۴۰۴ سفارشی
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.notfound-section {
    min-height: calc(100vh - 200px);
    display: flex;
    align-items: center;
}

.notfound-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 60px 20px;
    gap: 0;
}

.notfound-logo {
    width: 80px;
    height: 80px;
    object-fit: contain;
    border-radius: 50%;
    margin-bottom: 24px;
    opacity: 0.9;
}

.notfound-code {
    font-family: var(--font-signature);
    font-size: clamp(5rem, 18vw, 9rem);
    line-height: 1;
    color: var(--gold);
    letter-spacing: -0.02em;
    margin-bottom: 16px;
}

.notfound-ornament {
    display: block;
    margin: 0 auto 20px;
    opacity: 0.7;
}

.notfound-title {
    font-family: var(--font-signature);
    font-size: clamp(1.3rem, 4vw, 1.9rem);
    font-weight: 400;
    color: var(--ink);
    margin-bottom: 10px;
}

.notfound-desc {
    color: var(--ink-soft);
    font-size: 0.95rem;
    max-width: 380px;
    margin-bottom: 28px;
    line-height: 1.8;
}

.notfound-verse {
    border: 1px solid var(--line);
    background: var(--surface);
    border-radius: 10px;
    padding: 18px 28px;
    margin: 0 0 32px;
    max-width: 560px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px 14px;
}

.notfound-verse-line {
    font-family: var(--font-signature);
    font-size: clamp(1rem, 3vw, 1.25rem);
    color: var(--lapis-deep);
    line-height: 1.8;
}

.notfound-verse-sep {
    color: var(--gold);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.notfound-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
}

.notfound-actions .btn:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 3px;
}

@media (max-width: 480px) {
    .notfound-logo {
        width: 64px;
        height: 64px;
    }

    .notfound-verse {
        padding: 14px 16px;
        flex-direction: column;
        gap: 6px;
    }

    .notfound-verse-sep {
        display: none;
    }
}

/* ----------------------------------------------------------------
   منوی کشویی نوار ناوبری (سرآغاز)
   ---------------------------------------------------------------- */
.nav-item {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.nav-dd-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 3px 5px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--ink-soft);
    line-height: 0;
    transition: color 0.2s ease;
    margin-inline-start: -4px;
}

.nav-dd-btn:hover {
    color: var(--lapis);
}

.nav-dd-btn svg {
    transition: transform 0.2s ease;
}

.has-dropdown:hover .nav-dd-btn svg,
.has-dropdown.dd-open .nav-dd-btn svg {
    transform: rotate(180deg);
}

.nav-dd-menu {
    position: absolute;
    top: calc(100% + 10px);
    inset-inline-start: 0;
    min-width: 180px;
    list-style: none;
    margin: 0;
    padding: 6px 0;
    background-color: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-soft-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
    z-index: 300;
}

.has-dropdown:hover .nav-dd-menu,
.has-dropdown.dd-open .nav-dd-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.nav-dd-item {
    display: block;
    padding: 9px 18px;
    color: var(--ink-soft);
    font-size: 0.9rem;
    white-space: nowrap;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.nav-dd-item:hover {
    background-color: var(--paper);
    color: var(--lapis);
}

.nav-dd-item.active {
    color: var(--lapis);
    font-weight: 600;
}

@media (max-width: 768px) {
    .main-nav.is-open {
        max-height: 700px;
    }

    .nav-item.has-dropdown {
        display: flex;
        flex-wrap: wrap;
        align-items: stretch;
        width: 100%;
        border-bottom: 1px solid var(--line);
    }

    /* وقتی زیرمنو باز است، خط پایین container حذف می‌شود؛ آخرین زیر‌آیتم آن را می‌آورد */
    .nav-item.has-dropdown.dd-open {
        border-bottom: none;
    }

    /* لینک اصلی: border-bottom خودش را ندارد (container دارد) */
    .nav-item.has-dropdown > .nav-link {
        flex: 1;
        border-bottom: none !important;
    }

    /* دکمه‌ی فلش: هم‌ارتفاع با لینک */
    .nav-item.has-dropdown > .nav-dd-btn {
        padding: 16px 20px;
        margin-inline-start: 0;
        border-bottom: none;
    }

    /* زیرمنو: جای‌گاه ثابت، پایین‌ خط container */
    .nav-dd-menu {
        position: static;
        flex: 0 0 100%;
        opacity: 1;
        visibility: visible;
        transform: none;
        box-shadow: none;
        border: none;
        border-top: 1px dashed var(--line);
        border-radius: 0;
        padding: 0;
        background: transparent;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
    }

    .has-dropdown.dd-open .nav-dd-menu {
        max-height: 400px;
    }

    .nav-dd-item {
        padding: 12px 40px;
        border-bottom: 1px solid var(--line);
        font-size: 0.88rem;
    }

    .nav-dd-item:last-child {
        border-bottom: none;
    }
}

html.dark .nav-dd-menu {
    background-color: var(--surface);
}

html.dark .nav-dd-item:hover {
    background-color: var(--paper);
}

@media (prefers-reduced-motion: reduce) {
    .nav-dd-btn svg,
    .nav-dd-menu {
        transition: none;
    }
}

/* ----------------------------------------------------------------
   صفحه‌ی «سرآغاز» (sarghaz.php)
   ---------------------------------------------------------------- */

/* بخش با عکس: تمام‌عرض container (همان رفتار about.php)
   بخش بدون عکس: متن در ستون مرکزی باریک و خوانا */
.sarghaz-text-wrap {
    max-width: 760px;
    margin: 0 auto;
}

/* ناوبری بین بخش‌ها */
.sarghaz-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin-bottom: 36px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--line);
}

.sarghaz-nav-link {
    padding: 7px 18px;
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.88rem;
    color: var(--ink-soft);
    background-color: var(--surface);
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.sarghaz-nav-link:hover {
    border-color: var(--lapis);
    color: var(--lapis);
}

.sarghaz-nav-link.active {
    background-color: var(--lapis);
    border-color: var(--lapis);
    color: #fff;
}

/* عنوان هر بخش با نشان الماس */
.sarghaz-heading {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
}

.sarghaz-title {
    font-size: clamp(1.3rem, 3.5vw, 1.7rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin: 0;
}

/* ----------------------------------------------------------------
   چیدمان دوستونی سرآغاز با عکس — الگوی عین about.php
   ---------------------------------------------------------------- */
.sarghaz-layout {
    display: grid;
    grid-template-columns: minmax(220px, 300px) 1fr;
    gap: 40px;
    align-items: start;
}

@media (min-width: 768px) {
    .sarghaz-layout {
        grid-template-columns: minmax(300px, 340px) 1fr;
    }
}

/* ستون عکس: flex ستونی تا قاب و کپشن روی هم بمانند، وسط‌چین */
/* چسبان در دسکتاپ: هنگام اسکرولِ متن بلند، عکس در دید می‌ماند (فقط تا انتهای متن) */
.sarghaz-photo-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    /* align-self: start (نه stretch) لازم است تا ارتفاعِ این ستون به‌اندازه‌ی
       محتوای خودش (عکس+کپشن) بماند، نه به‌اندازه‌ی ستونِ متنِ کنارش کش بیاید؛
       وگرنه چون هر دو هم‌ارتفاع می‌شوند، position: sticky فضایی برای «چسبیدن»
       در حینِ اسکرول نخواهد داشت */
    align-self: start;
    position: sticky;
    top: 96px;
}

/* اندازه‌ی قاب عکس در سرآغاز؛ همان الگوی width:100%+max-width:ثابتِ
   about-frame (نه ترکیبِ px/vw) تا در موبایل با aspect-ratio ناهماهنگ نشود */
.sarghaz-photo-col .about-frame {
    width: 100%;
    max-width: 280px;
}

@media (min-width: 768px) {
    .sarghaz-photo-col .about-frame {
        max-width: 320px;
    }
}

/* نام زیر عکس: بولد، پررنگ */
.sarghaz-photo-caption {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--ink);
    text-align: center;
    margin-top: 10px;
    margin-bottom: 0;
    width: 100%;
    max-width: 280px;
    line-height: 1.6;
}

/* توضیح زیر نام: ریزتر، کم‌رنگ */
.sarghaz-photo-caption-sub {
    font-size: 0.78rem;
    color: var(--ink-soft);
    text-align: center;
    margin-top: 3px;
    margin-bottom: 0;
    width: 100%;
    max-width: 280px;
    line-height: 1.6;
    font-style: italic;
}

@media (min-width: 768px) {
    .sarghaz-photo-caption,
    .sarghaz-photo-caption-sub {
        max-width: 320px;
    }
}

/* ستون متن */
.sarghaz-text-col {
    min-width: 0;
}

@media (max-width: 760px) {
    .sarghaz-layout {
        grid-template-columns: 1fr;
        gap: 24px;
        text-align: center;
    }

    .sarghaz-photo-col {
        /* همان دلیلِ about.php: width:100% به‌جای justify-self:center تا
           width:100% روی .about-frame نسبت به عرضِ واقعیِ صفحه محاسبه شود */
        position: static;
        top: auto;
        align-self: center;
        width: 100%;
    }
}

/* متن بخش (بدون تصویر) */
.sarghaz-body {
    color: var(--ink);
    font-size: 1.05rem;
    line-height: 2.2;
    text-align: justify;
}

@media (max-width: 600px) {
    .sarghaz-nav {
        gap: 6px;
        margin-bottom: 24px;
    }

    .sarghaz-nav-link {
        padding: 6px 14px;
        font-size: 0.82rem;
    }

    .sarghaz-body {
        font-size: 1rem;
        line-height: 2;
    }
}

/* ----------------------------------------------------------------
   محتوای غنی‌سازی‌شده «سرآغاز» (.sarghaz-content)
   اعمال می‌شود به هر دو حالت: با عکس (.about-bio) و بدون عکس (.sarghaz-body)
   متغیرهای رنگ در دارک‌مود خودکار تغییر می‌کنند (نیازی به override جداگانه نیست)
   ---------------------------------------------------------------- */

.sarghaz-content h2 {
    font-size: clamp(1.2rem, 3.2vw, 1.5rem);
    font-weight: 700;
    color: var(--lapis);
    margin: 1.8em 0 0.6em;
    line-height: 1.5;
    padding-bottom: 0.25em;
    border-bottom: 2px solid var(--line);
}

.sarghaz-content h2:first-child {
    margin-top: 0;
}

.sarghaz-content h3 {
    font-size: clamp(1rem, 2.6vw, 1.2rem);
    font-weight: 700;
    color: var(--lapis-deep);
    margin: 1.4em 0 0.5em;
    line-height: 1.5;
}

.sarghaz-content h3:first-child {
    margin-top: 0;
}

.sarghaz-content p {
    margin: 0 0 1em;
    text-align: justify;
}

.sarghaz-content p:last-child {
    margin-bottom: 0;
}

.sarghaz-content ul,
.sarghaz-content ol {
    margin: 0.6em 0 1em;
    padding-right: 1.8em;
    padding-left: 0;
}

.sarghaz-content li {
    margin-bottom: 0.4em;
    line-height: 1.9;
}

.sarghaz-content strong,
.sarghaz-content b {
    font-weight: 700;
}

.sarghaz-content em,
.sarghaz-content i {
    font-style: italic;
}

/* ----------------------------------------------------------------
   صفحه‌ی «به‌زودی» / حالت تعمیر (coming-soon.php)
   دوستونی: عکس بزرگ کنار عنوان + متن + شبکه‌های اجتماعی
   ---------------------------------------------------------------- */
.cs-preview-banner {
    background-color: var(--lapis);
    color: #fff;
    text-align: center;
    font-size: 0.85rem;
    padding: 8px 12px;
}

.cs-page {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 20px;
}

.cs-logo-link {
    display: block;
    margin: 0 auto 18px;
}

.cs-logo {
    display: block;
    max-width: 220px;
    max-height: 130px;
    width: auto;
    height: auto;
    object-fit: contain;
    margin: 0 auto;
}

.cs-ornament {
    display: flex;
    justify-content: center;
    color: var(--gold);
    margin-bottom: 26px;
}

.cs-wrap {
    width: 100%;
    max-width: 1080px;
}

.cs-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
    align-items: center;
}

@media (min-width: 860px) {
    .cs-layout {
        grid-template-columns: minmax(0, 460px) 1fr;
        gap: 56px;
    }
}

.cs-photo-col {
    display: flex;
    justify-content: center;
}

.cs-frame {
    position: relative;
    width: 100%;
    max-width: 440px;
    aspect-ratio: 4 / 5;
    padding: 14px;
    border: 1px solid rgba(174, 134, 56, 0.55);
    border-radius: var(--radius);
    background-color: var(--surface);
    box-shadow: var(--shadow-soft-lg);
}

.cs-frame::before {
    content: '';
    position: absolute;
    inset: 8px;
    border: 1px solid rgba(174, 134, 56, 0.25);
    border-radius: 10px;
    pointer-events: none;
}

.cs-frame img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 10px;
}

.cs-frame-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: var(--gold);
    opacity: 0.5;
    border-radius: 10px;
}

/* حالت بدون قاب: مناسب عکس‌های PNG با پس‌زمینه‌ی شفاف (مثل موکاپ کتاب) */
.cs-frame-plain {
    aspect-ratio: auto;
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: transparent;
    box-shadow: none;
}

.cs-frame-plain::before {
    display: none;
}

.cs-frame-plain img {
    height: auto;
    object-fit: contain;
    border-radius: 0;
}

.cs-text-col {
    text-align: center;
    min-width: 0;
}

@media (min-width: 860px) {
    .cs-text-col {
        text-align: start;
    }
}

.cs-verse-top {
    width: 100%;
    max-width: 620px;
    margin: 0 auto 30px;
    text-align: center;
}

.cs-verse {
    display: inline-block;
    font-family: var(--font-signature);
    font-size: clamp(1.15rem, 2.8vw, 1.5rem);
    line-height: 1.9;
    color: var(--gold);
    word-spacing: -0.1em;
    text-align: center;
    margin: 0 0 10px;
}

/* خط تزئینی طلایی کنار شعر (اختیاری، با maintenance_verse_line) */
.cs-verse-accent {
    border-inline-start: 3px solid var(--gold);
    padding-inline-start: 20px;
}

/* هر خط ورودی = یک بیت؛ فاصله‌ی عمودی مشخص بین بیت‌های پشت‌سرهم */
.cs-verse-line {
    margin-bottom: 10px;
}

.cs-verse-line:last-child {
    margin-bottom: 0;
}

/* بیتی که با *** به دو مصرع تقسیم شده: دو مصرع کنار هم با فاصله‌ی افقیِ
   ثابت (مثل فاصله‌ی وسط بیت در دیوان شعر)؛ در صورت کمبود جا (موبایل) مصرع
   دوم به خط بعد می‌رود */
.cs-verse-beyt {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: baseline;
    gap: 6px 36px;
}

.cs-title {
    font-family: var(--font-signature);
    font-size: clamp(2rem, 5vw, 3.2rem);
    line-height: 1.6;
    color: var(--lapis-deep);
    font-weight: normal;
    word-spacing: -0.15em;
    margin-bottom: 18px;
}

.cs-text {
    color: var(--ink);
    font-size: 1.05rem;
    line-height: 2.1;
}

.cs-text p {
    margin: 0 0 1em;
}

.cs-text p:last-child {
    margin-bottom: 0;
}

.cs-text ul,
.cs-text ol {
    margin: 0.6em 0 1em;
    padding-inline-start: 1.8em;
}

.cs-text li {
    margin-bottom: 0.4em;
}

.cs-text strong,
.cs-text b {
    font-weight: 700;
}

.cs-text em,
.cs-text i {
    font-style: italic;
}

.cs-social {
    display: flex;
    gap: 12px;
    margin-top: 28px;
    justify-content: center;
    flex-wrap: wrap;
}

@media (min-width: 860px) {
    .cs-social {
        justify-content: flex-start;
    }
}

.cs-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background-color: var(--surface);
    border: 1px solid var(--line);
    color: var(--ink-soft);
    transition: color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.cs-social-link:hover {
    color: var(--gold);
    border-color: var(--gold);
    transform: translateY(-2px);
}

@media (max-width: 480px) {
    .cs-page {
        padding: 32px 16px;
    }

    .cs-frame {
        max-width: 300px;
    }

    .cs-title {
        margin-bottom: 14px;
    }
}
