/*
|--------------------------------------------------------------------------
| استایل اصلی سایت (بدون نیاز به build - مستقیم در layout لود می‌شود)
|--------------------------------------------------------------------------
| ساختار فایل:
|   ۱) فونت و متغیرهای رنگ (تغییر رنگ برند فقط از بخش :root)
|   ۲) پایه و بازنویسی‌های بوت‌استرپ
|   ۳) هدر، نوار پایین موبایل، فوتر
|   ۴) کارت رویداد و ردیف‌های افقی (اسکرول لمسی)
|   ۵) صفحه رویداد (پوستر، سانس‌ها، نوار خرید چسبان)
|   ۶) نقشه صندلی
|   ۷) بلیط، پرداخت، پنل
*/

/* ---------------------------------------------------------------- ۱) فونت و رنگ */
/*
 * فونت و رنگ از قالب Mobilekit می‌آید (public/vendor/mobilekit/mobilekit.css): فونت IRANSansX با ارقام فارسی و رنگ اصلی آبی قالب.
 * برای تغییر رنگ برند فقط متغیرهای --brand در :root را عوض کنید.
 */
:root {
    --brand: #0785f2;            /* رنگ اصلی برند (دکمه خرید، لینک‌ها، هدر پنل) */
    --brand-dark: #066dc7;
    --brand-soft: #e1f0fe;
    --accent: #02c195;           /* رنگ فرعی برند (موفقیت، تأکید دوم، گرادیان‌ها) */
    --accent-dark: #02a27d;
    --accent-soft: #dcf7ef;
    --ink: #111827;              /* متن اصلی */
    --muted: #6b7280;
    --surface: #ffffff;          /* کارت‌ها */
    --page: #f4f5f9;             /* پس‌زمینه صفحه */
    --line: #e5e7eb;
    --radius: 14px;
    --bottom-nav-h: 56px;          /* ارتفاع appBottomMenu قالب */
    --header-h: 56px;            /* ارتفاع appHeader قالب (برای منوی چسبان بخش‌های صفحه رویداد) */
    --frame-w: 480px;            /* عرض قاب موبایل در دسکتاپ */

    /* رنگ وضعیت صندلی‌ها */
    --seat-free: #10b981;
    --seat-mine: #EC4433;            /* رنگ «انتخاب شما» متمایز از رنگ قیمت‌ها */
    --seat-held: #f59e0b;
    --seat-sold: #9ca3af;
    --seat-blocked: #4b5563;

    /* هم‌سو کردن متغیرهای بوت‌استرپ با رنگ برند */
    --bs-primary: var(--brand);
    --bs-primary-rgb: 7, 133, 242;
    --bs-success: var(--accent);
    --bs-success-rgb: 2, 193, 149;
    --bs-link-color: var(--brand);
    --bs-link-hover-color: var(--brand-dark);
    --font-main: iransansfa, Tahoma, sans-serif;
    --bs-body-font-family: var(--font-main);
    --bs-body-font-size: 15px;
    --bs-body-bg: var(--page);
    --bs-body-color: var(--ink);
    --bs-border-radius: 10px;
    --bs-border-radius-lg: var(--radius);
}

/*
 * حالت تاریک: سوییچ منوی کناری (یا تنظیم سیستم) هم body.dark-mode-active قالب و هم data-bs-theme="dark" بوت‌استرپ را می‌گذارد.
 */
[data-bs-theme="dark"] {
    --ink: #f3f4f6;
    --muted: #9ca3af;
    --surface: #1f2937;
    --page: #111827;
    --line: #374151;
    --brand-soft: #0b2a47;
    --accent-soft: #063b30;
    --bs-body-bg: var(--page);
    --bs-body-color: var(--ink);
    --bs-border-color: var(--line);
}

/* ---------------------------------------------------------------- ۲) پایه */
body {
    font-family: var(--font-main);
    -webkit-tap-highlight-color: transparent;
}

.text-primary { color: var(--brand) !important; }
.bg-primary-soft { background: var(--brand-soft) !important; color: var(--brand); }

.surface { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.form-control:focus, .form-select:focus { border-color: var(--brand); box-shadow: 0 0 0 .2rem rgba(7, 133, 242, .15); }

/* ورودی‌های عددی مثل موبایل و کد چپ‌چین شوند */
.ltr { direction: ltr; text-align: left; }
.ltr::placeholder { text-align: right; }

.section-title { font-weight: 800; font-size: 1.1rem; margin: 0; }
.text-muted-2 { color: var(--muted) !important; }
.fw-800 { font-weight: 800; }
.min-w-0 { min-width: 0; }

/* کادر اطلاع‌رسانی داخل صفحه (به‌جای alert بوت‌استرپ؛ پیام‌های لحظه‌ای با SweetAlert2 هستند) */
.notice { border-radius: var(--radius); padding: 12px 16px; margin-bottom: 1rem; border: 1px solid var(--line);
    background: var(--surface); border-inline-start: 4px solid var(--muted); }
.notice-info { border-inline-start-color: #0ea5e9; background: color-mix(in srgb, #0ea5e9 7%, var(--surface)); }
.notice-warning { border-inline-start-color: #f59e0b; background: color-mix(in srgb, #f59e0b 9%, var(--surface)); }
.notice-danger { border-inline-start-color: var(--brand); background: color-mix(in srgb, var(--brand) 7%, var(--surface)); }


/* صفحات ورود و ثبت‌نام */
.auth-icon { width: 64px; height: 64px; border-radius: 50%; display: inline-grid; place-items: center;
    background: var(--brand-soft); color: var(--brand); font-size: 1.6rem; }
.auth-steps { display: flex; gap: 6px; }
.auth-steps span { flex: 1; text-align: center; font-size: .8rem; color: var(--muted); padding-top: 8px; border-top: 3px solid var(--line); }
.auth-steps span.active { color: var(--brand); border-top-color: var(--brand); font-weight: 700; }
.segmented { display: flex; gap: 8px; }
.segmented label { flex: 1; text-align: center; padding: 10px; border: 1.5px solid var(--line); border-radius: 12px; cursor: pointer; }
.segmented .btn-check:checked + label { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 700; }

/* ---------------------------------------------------------------- ۳) پوسته قالب و قاب موبایل */
/* آیکن‌های Font Awesome داخل اجزای قالب (قالب برای ion-icon و i.icon اندازه می‌دهد) */
.appHeader .headerButton { position: relative; }
.appHeader .headerButton .badge { position: absolute; top: 8px; inset-inline-end: 2px; font-size: 10px; min-width: 16px; height: 16px; line-height: 16px; padding: 0 4px; }
.appHeader .pageTitle { max-width: calc(100% - 230px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.appHeader .header-role { font-size: 10px; background: rgba(255, 255, 255, .2); border-radius: 20px; padding: 1px 8px; margin-inline-start: 4px; }
.app-logo { color: var(--brand); font-weight: 800; font-size: 17px; display: inline-flex; align-items: center; }
.app-logo img { height: 28px; width: auto; display: block; }
.image-listview > li .item .icon-box i { font-size: 16px; color: #fff; }
.listview .item.active .in { color: var(--brand); font-weight: 700; }
.avatar-letter { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 255, 255, .25); color: #fff; font-weight: 800; font-size: 20px; }
.offcanvas { --bs-offcanvas-width: 300px; }   /* عرض منوی کناری قالب (بوت‌استرپ ۵.۳ پیش‌فرض ۴۰۰ دارد) */
.profileBox .close-sidebar-button { color: #fff; }
.appBottomMenu .item .col i.icon { font-size: 20px; margin: 2px auto 4px; display: block; }
.appBottomMenu .item.active .col i.icon, .appBottomMenu .item.active strong { color: var(--brand); }
.appBottomMenu .item .action-button i.icon { color: #fff !important; margin: 0 !important; font-size: 24px; }
body.no-bottom-nav #appCapsule { padding-bottom: 0; }
.site-announcement { margin: 8px 16px 0; padding: 10px 12px; border-radius: 10px; font-size: 13px; background: var(--brand); color: #fff; display: flex; gap: 8px; align-items: flex-start; }
.site-announcement span { flex: 1; }
.announcement-close { border: 0; background: none; color: inherit; opacity: .8; padding: 0 2px; }
.site-announcement.is-warning { background: #FECE00; color: #141515; }
.site-announcement a { color: inherit; font-weight: 700; margin-inline-start: 4px; }
.app-footer { text-align: center; font-size: 11px; color: var(--muted); padding: 16px 16px 8px; }

/*
 * لایه هم‌اندازه قاب: منوی کناری (offcanvas)، اعلان iOS و toast داخل آن قرار می‌گیرند.
 * transform باعث می‌شود position: fixed فرزندان نسبت به همین لایه باشد و overflow: hidden
 * انیمیشن منو را به قاب محدود می‌کند (در دسکتاپ منو از لبه قاب باز می‌شود، نه از لبه صفحه).
 */
#app-layer { position: fixed; inset: 0; z-index: 1045; overflow: hidden; pointer-events: none; transform: translateZ(0); }
#app-layer > * { pointer-events: auto; }
#app-layer .offcanvas:not(.show):not(.showing):not(.hiding) { pointer-events: none; }

/* زیرمنوهای منوی کناری */
/* فلش گروه: همان فلش قالب و همان جای فلش آیتم‌ها، فقط چرخیده (بسته: پایین، باز: بالا) */
.sidebar-menu .menu-group > a.item .group-arrow { display: none; }
.sidebar-menu .menu-group > a.item:after { transform: rotate(90deg); transition: transform .2s; }
.sidebar-menu .menu-group > a.item:not(.collapsed):after { transform: rotate(-90deg); }
.sidebar-menu .submenu { background: transparent; padding-inline-start: 24px; }
.sidebar-menu .submenu .item { min-height: 46px; }
.sidebar-menu .submenu .icon-box { width: 32px; height: 32px; min-width: 32px; border-radius: 50%; background: var(--brand-soft, #e6f2fe); color: var(--brand); font-size: 14px; }
.sidebar-menu .submenu .in { font-size: 14px; }
.sidebar-menu .submenu .item.active .in { color: var(--brand); font-weight: 700; }
.sidebar-menu .submenu .icon-box i { color: var(--brand) !important; }
.sidebar-menu .submenu .item.active .icon-box { background: var(--brand); }
.sidebar-menu .submenu .item.active .icon-box i { color: #fff !important; }

/* اعلان iOS، toast و پنجره‌های قالب (public/js/app.js: App.notify / App.toast / App.dialog) */
.notification-dialog .notify-icon { font-size: 20px; }
.notification-box.js-notify { cursor: pointer; }
.toast-box .in { display: flex; align-items: center; gap: 8px; }
.toast-box.toast-bottom.show { bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom)); }
.dialogbox .modal-icon i { font-size: 48px; }
.dialogbox .dialog-list { text-align: start; padding-inline-start: 18px; margin: 0; }
.dialogbox .dialog-error:empty { display: none; }
.dialogbox .modal-dialog.dialog-wide { max-width: calc(var(--frame-w) - 24px); width: calc(100% - 24px); }
.dialogbox .modal-dialog.dialog-wide .modal-content { max-width: 100%; }

/* قالب به آیتم فعال font-weight می‌دهد؛ آیکن‌های Font Awesome وزن خودشان را لازم دارند */
.fa-solid, .fas { font-weight: 900 !important; }
.fa-regular, .far { font-weight: 400 !important; }
/* قالب رنگ تیتر را ثابت می‌کند؛ روی پس‌زمینه تیره (هیروی رویداد، اسلایدر) رنگ والد را بگیرد */
.event-hero :is(h1, h2, h3, h4, h5, h6), .hero-slide :is(h1, h2, h3, h4, h5, h6), .text-white :is(h1, h2, h3, h4, h5, h6) { color: inherit; }

/*
 * قاب موبایل در دسکتاپ: سایت همیشه با عرض موبایل (--frame-w) وسط صفحه نمایش داده می‌شود تا ساختار قالب به‌هم نریزد.
 * بوت‌استرپ نسخه «فقط موبایل» است (tools/mobile-only-css.php) پس col-lg-* و d-lg-* هم مثل گوشی رفتار می‌کنند.
 * المان‌های fixed (هدر، منوی پایین، نوار خرید، منوی کناری، مودال) هم به همان قاب محدود می‌شوند.
 */
@media (min-width: 520px) {
    html { background: #dfe4ec; }
    body { max-width: var(--frame-w); margin-inline: auto; min-height: 100vh; position: relative; box-shadow: 0 0 0 1px rgba(0, 0, 0, .04), 0 10px 50px rgba(0, 0, 0, .12); }
    .appHeader, #search, .appBottomMenu, .sticky-buy, .bottom-sheet, .chatFooter, #app-layer { max-width: var(--frame-w); margin-inline: auto; }
    .offcanvas.offcanvas-bottom, .offcanvas.offcanvas-top { max-width: var(--frame-w); margin-inline: auto; }
    .modal-dialog { max-width: calc(var(--frame-w) - 24px); margin-inline: auto; }
}
html[data-bs-theme="dark"] { background: #05070b; }

/* ---------------------------------------------------------------- ۴) کارت رویداد و ردیف افقی */
.event-card { display: block; text-decoration: none; color: inherit; height: 100%; }
.event-card .poster {
    position: relative; aspect-ratio: 9 / 16; border-radius: var(--radius); overflow: hidden; background: var(--line); /* پوستر عمودی سایز استوری */
}
.event-card .poster img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.event-card:hover .poster img { transform: scale(1.04); }
.event-card .badge-corner { position: absolute; top: 8px; inset-inline-start: 8px; }
.event-card .title {
    font-weight: 700; font-size: .95rem; margin: .5rem 0 .15rem;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.event-card .meta { color: var(--muted); font-size: .78rem; }
.event-card .price { font-weight: 700; font-size: .85rem; color: var(--brand); }

/* اسکرول افقی لمسی با snap (روی دسکتاپ هم با شیفت+اسکرول) */
.h-scroll {
    display: grid; grid-auto-flow: column; grid-auto-columns: 42%;
    gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
    padding-bottom: 6px; scrollbar-width: none;
    margin-inline: -12px; padding-inline: 12px;
}
.h-scroll::-webkit-scrollbar { display: none; }
.h-scroll > * { scroll-snap-align: start; }

/* چیپ‌های دسته‌بندی/فیلتر */
.chips { display: flex; gap: 8px; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; padding-bottom: 4px; }
.chips::-webkit-scrollbar { display: none; }
.chip {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px; border-radius: 999px; border: 1px solid var(--line);
    background: var(--surface); color: var(--ink); text-decoration: none; font-size: .85rem; white-space: nowrap;
}
.chip.active, .chip:hover { background: var(--brand); border-color: var(--brand); color: #fff; }

/* کاشی‌های دسته‌بندی صفحه اصلی (آیکن گرد + عنوان زیرش) */
.cat-tiles { display: flex; gap: 14px; overflow-x: auto; scrollbar-width: none; padding: 4px 2px 6px; }
.cat-tiles::-webkit-scrollbar { display: none; }
.cat-tiles a { flex: 0 0 auto; width: 68px; display: flex; flex-direction: column; align-items: center; gap: 6px;
    text-decoration: none; color: var(--ink); font-size: .85rem; text-align: center; }
.cat-tiles .icon { width: 58px; height: 58px; border-radius: 50%; display: grid; place-items: center;
    background: var(--brand-soft); color: var(--brand); font-size: 1.45rem; transition: transform .15s; }
.cat-tiles a:hover .icon { transform: translateY(-2px); background: var(--brand); color: #fff; }
.see-all { font-size: .85rem; color: var(--muted); text-decoration: none; }
.see-all:hover { color: var(--brand); }

/* اسلایدر ویژه صفحه اصلی */
.hero-slide { position: relative; border-radius: var(--radius); overflow: hidden; aspect-ratio: 16 / 9; max-height: 420px; width: 100%; }
.hero-slide img { width: 100%; height: 100%; object-fit: cover; filter: brightness(.6); }
/* نشانگرهای اسلایدر بالای تصویر تا روی متن نیفتند */
#hero .carousel-indicators { top: 10px; bottom: auto; margin: 0; justify-content: flex-start; inset-inline-start: 14px; }
#hero .carousel-indicators [data-bs-target] { width: 8px; height: 8px; border-radius: 50%; }
.hero-slide .caption { position: absolute; inset: auto 0 0 0; padding: 1.25rem; color: #fff;
    background: linear-gradient(transparent, rgba(0, 0, 0, .75)); }

/* ---------------------------------------------------------------- ۵) صفحه رویداد */
.event-hero { position: relative; overflow: hidden; background: #000; }
.event-hero .backdrop { position: absolute; inset: -20px; background-size: cover; background-position: center;
    filter: blur(24px) brightness(.45); transform: scale(1.1); }
.event-hero .content { position: relative; color: #fff; }
.event-hero .poster-lg { width: 140px; aspect-ratio: 9 / 16; object-fit: cover; border-radius: var(--radius);
    box-shadow: 0 10px 30px rgba(0, 0, 0, .4); }

.day-tab { min-width: 74px; text-align: center; line-height: 1.3; height: auto; padding: 8px 12px; border-radius: 16px; justify-content: center; }
.day-tab .num { font-size: 1.25rem; font-weight: 800; display: block; }

.session-row { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--line);
    border-radius: 12px; background: var(--surface); }
.session-row .time { font-size: 1.15rem; font-weight: 800; min-width: 64px; text-align: center; }

/* نوار خرید پایین صفحه در موبایل (بالای نوار ناوبری) */
.sticky-buy {
    position: fixed; inset-inline: 0; z-index: 1029;
    bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom));
    background: var(--surface); border-top: 1px solid var(--line);
    padding: 10px 16px; box-shadow: 0 -6px 20px rgba(0, 0, 0, .06);
}

.stars { color: #f59e0b; letter-spacing: 1px; }

/* کارت انتخاب سانس فقط در دسکتاپ چسبان است (در موبایل بالای توضیحات می‌آید) */

/* ---- صفحه رویداد به سبک تیوال: بخش‌های زیر هم + منوی چسبان */
html { scroll-behavior: smooth; }
.event-title { font-size: 1.6rem; font-weight: 800; line-height: 1.4; }

/* نوار مشخصات کلیدی زیر هیرو */
.event-facts {
    display: flex; flex-wrap: wrap; gap: 8px 18px;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
    padding: 12px 16px; margin-top: -18px; position: relative; z-index: 2;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .06); font-size: .95rem;
}
.event-facts > div { display: flex; align-items: center; gap: 6px; }
.event-facts i { color: var(--brand); }

/* منوی بخش‌ها: زیر هدر می‌چسبد */
.section-nav {
    position: sticky; top: var(--header-h); z-index: 1020;
    background: var(--page); padding: 10px 0; margin-top: 12px;
    border-bottom: 1px solid var(--line);
}
.section-nav .chip { padding: 6px 16px; }
.section-nav .chip.active { background: var(--brand); border-color: var(--brand); color: #fff; }

/* هر بخش یک کارت؛ scroll-margin تا عنوان زیر هدر و منو پنهان نشود */
.event-sections { max-width: 860px; }
.event-section {
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
    padding: 18px; margin-top: 16px;
    scroll-margin-top: calc(var(--header-h) + 70px);
}
.section-heading { font-size: 1.2rem; font-weight: 800; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.section-heading i { color: var(--brand); }
.lead-text { font-weight: 700; }
.prose { line-height: 2.1; text-align: justify; }

/* ---- انتخاب عکس با برش */
.crop-preview { width: 84px; object-fit: cover; border-radius: 12px; border: 1px solid var(--line); background: var(--page); }

/* ---- پروفایل برگزارکننده / ارائه‌دهنده (الگوی اینستاگرام) */
.profile-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.profile-cover { height: 150px; background-size: cover; background-position: center; }
.profile-cover.empty { background: linear-gradient(135deg, var(--brand), #7c3aed); opacity: .85; }
.profile-body { padding: 0 16px 18px; }
.profile-top { margin-top: -44px; }
.profile-avatar { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; border: 4px solid var(--surface); background: var(--surface); }
.profile-stats { display: flex; justify-content: space-around; text-align: center; padding-top: 50px; }
.profile-stats b { display: block; font-size: 1.2rem; font-weight: 800; }
.profile-stats span { font-size: .8rem; color: var(--muted); }
.profile-about { font-size: .95rem; }
.follow-btn .when-on { display: none; }
.follow-btn.following .when-on { display: inline; }
.follow-btn.following .when-off { display: none; }

.socials { display: flex; flex-wrap: wrap; gap: 8px; }
.social { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px 5px 6px; border-radius: 999px;
    border: 1px solid var(--line); color: var(--ink); text-decoration: none; font-size: .85rem; }
.social i, .social b { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center;
    background: var(--c); color: #fff; font-size: .85rem; font-style: normal; }
.social:hover { border-color: var(--c); }
.social-dot { width: 24px; height: 24px; border-radius: 50%; display: inline-grid; place-items: center; background: var(--c); color: #fff; font-size: .8rem; font-weight: 700; }

/* ---- استوری: پنل */
.story-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 10px; }
.story-tile { position: relative; aspect-ratio: 9 / 16; border-radius: 12px; overflow: hidden; background: #000; }
.story-tile img, .story-tile video { width: 100%; height: 100%; object-fit: cover; }
.story-tile .meta { position: absolute; inset: auto 0 0 0; padding: 6px 8px; font-size: .72rem; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.8)); }
.story-tile .del { position: absolute; top: 6px; left: 6px; width: 30px; height: 30px; padding: 0; }

/* ---- استوری: حلقه‌ها و نمایشگر */
.story-rings { display: flex; gap: 14px; overflow-x: auto; scrollbar-width: none; padding: 4px 2px 8px; }
.story-rings::-webkit-scrollbar { display: none; }
.story-ring { flex: 0 0 auto; border: 0; background: none; padding: 0; width: 74px; display: flex; flex-direction: column; align-items: center; gap: 5px; color: var(--ink); }
.story-ring .ring { width: 68px; height: 68px; border-radius: 50%; padding: 3px;
    background: conic-gradient(#f59e0b, var(--brand), #7c3aed, #f59e0b); display: grid; place-items: center; }
.story-ring.seen .ring { background: var(--line); }
.story-ring img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; border: 3px solid var(--surface); background: var(--surface); }
.story-ring .label { font-size: .75rem; max-width: 74px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.story-rings.big { padding: 0; overflow: visible; }
.story-rings.big .story-ring, .story-rings.big .ring { width: 100px; height: 100px; }

.story-viewer { position: fixed; inset: 0; z-index: 3000; background: #000; display: none; align-items: center; justify-content: center; }
.story-viewer.open { display: flex; }
.sv-frame { position: relative; width: 100%; height: 100%; max-width: 480px; max-height: 100dvh; aspect-ratio: 9 / 16; background: #111; overflow: hidden; user-select: none; }
.sv-media { position: absolute; inset: 0; display: grid; place-items: center; }
.sv-media img, .sv-media video { width: 100%; height: 100%; object-fit: cover; }
.sv-bars { position: absolute; top: 10px; inset-inline: 10px; display: flex; gap: 4px; z-index: 3; direction: ltr; flex-direction: row-reverse; }
.sv-bars span { flex: 1; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, .35); overflow: hidden; }
.sv-bars i { display: block; height: 100%; background: #fff; float: right; }
.sv-head { position: absolute; top: 20px; inset-inline: 10px; display: flex; align-items: center; gap: 8px; z-index: 3; color: #fff; }
.sv-brand { display: flex; align-items: center; gap: 8px; color: #fff; text-decoration: none; font-weight: 700; }
.sv-brand img { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; }
.sv-time { font-size: .78rem; opacity: .8; }
.sv-close { margin-inline-start: auto; border: 0; background: none; color: #fff; font-size: 1.5rem; }
.sv-foot { position: absolute; bottom: 0; inset-inline: 0; padding: 60px 16px calc(20px + env(safe-area-inset-bottom)); z-index: 3;
    background: linear-gradient(transparent, rgba(0, 0, 0, .75)); color: #fff; text-align: center; }
.sv-caption { margin-bottom: 12px; font-weight: 700; text-shadow: 0 1px 4px rgba(0, 0, 0, .6); }
.sv-nav { position: absolute; top: 70px; bottom: 120px; width: 40%; border: 0; background: transparent; z-index: 2; }
.sv-prev { right: 0; }
.sv-next { left: 0; }

/* ---------------------------------------------------------------- ۶) نقشه صندلی */
.seat-page { padding: 8px 12px 0; }
.seat-top { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.seat-info { font-size: .8rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.chip-scroll { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; flex-wrap: nowrap; }
.chip-scroll::-webkit-scrollbar { display: none; }
.sec-chip { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
    padding: 6px 12px; border-radius: 999px; border: 1.5px solid var(--line); background: var(--surface);
    color: var(--ink); font-size: .85rem; font-weight: 700; }
.sec-chip small { font-weight: 400; color: var(--muted); font-size: .72rem; }
.sec-chip .dot { width: 10px; height: 10px; border-radius: 3px; background: var(--c); }
.sec-chip.active { border-color: var(--brand); background: var(--brand-soft); }
.legend { gap: 12px; font-size: .75rem; color: var(--muted); }
.legend span { flex: 0 0 auto; white-space: nowrap; }
.legend span::before { content: ""; display: inline-block; width: 11px; height: 11px; border-radius: 3px;
    margin-inline-end: 4px; vertical-align: -1px; background: var(--c); }

.seatmap-wrap {
    position: relative; overflow: hidden; touch-action: none;   /* لمس را خودمان مدیریت می‌کنیم (کشیدن/زوم) */
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
    height: 60vh; min-height: 280px; user-select: none;      /* ارتفاع دقیق را seat-map.js تنظیم می‌کند */
}
.seatmap-wrap svg { width: 100%; height: 100%; display: block; cursor: grab; }
.seatmap-wrap svg:active { cursor: grabbing; }

/* صندلی مربعی (مثل سایت‌های بلیت‌فروشی) */
.seat { cursor: pointer; transition: fill .15s; stroke: rgba(0, 0, 0, .15); stroke-width: 1; }
.seat.free { fill: var(--seat-free); }
.seat.mine { fill: var(--seat-mine) !important; stroke: #fff; stroke-width: 2.5; }
.seat.held { fill: var(--seat-held); cursor: not-allowed; }
.seat.sold { fill: var(--seat-sold); cursor: not-allowed; opacity: .55; }
.seat.blocked { fill: var(--seat-blocked); cursor: not-allowed; opacity: .85; }
.seat.busy { opacity: .45; }
.seat-back { fill: rgba(0, 0, 0, .18); pointer-events: none; }
.seat-g:hover .seat.free { stroke: var(--ink); stroke-width: 2; }

/* شماره صندلی فقط وقتی بزرگنمایی کافی است (کلاس show-numbers را seat-map.js می‌گذارد) */
.seat-label, .seat-icon { font-size: 10px; fill: #fff; pointer-events: none; font-family: Tahoma, sans-serif; display: none; }
.show-numbers .seat-label, .show-numbers .seat-icon { display: inline; }
.seat-icon { font-size: 12px; }

.stage { fill: #374151; }
.stage-label { fill: #fff; font-size: 16px; pointer-events: none; }
.map-text { fill: var(--muted); pointer-events: none; }
.row-label { fill: var(--muted); font-size: 12px; font-weight: 700; pointer-events: none; font-family: Tahoma, sans-serif; }
.section-box { fill: color-mix(in srgb, var(--c) 7%, transparent); stroke: color-mix(in srgb, var(--c) 45%, transparent);
    stroke-width: 1.5; stroke-dasharray: 6 4; cursor: zoom-in; }
.section-title { fill: var(--ink); font-size: 15px; font-weight: 700; pointer-events: none; }

.seat-legend-btn { position: absolute; top: 8px; inset-inline-start: 8px; z-index: 2; height: 32px; padding: 0 10px;
    border-radius: 999px; border: 1px solid var(--line); background: var(--surface); color: var(--ink);
    font-size: .75rem; font-weight: 700; box-shadow: 0 2px 6px rgba(0,0,0,.08); }
.seat-legend { position: absolute; top: 46px; inset-inline-start: 8px; z-index: 3; padding: 8px 12px; border-radius: 12px;
    background: var(--surface); border: 1px solid var(--line); box-shadow: 0 6px 18px rgba(0,0,0,.12); }
.legend-list { list-style: none; margin: 0; padding: 0; font-size: .78rem; }
.legend-list li { white-space: nowrap; padding: 3px 0; }
.legend-list li::before { content: ""; display: inline-block; width: 12px; height: 12px; border-radius: 3px;
    margin-inline-end: 6px; vertical-align: -1px; background: var(--c); }
.seat-zoom { position: absolute; top: 8px; inset-inline-end: 8px; display: flex; flex-direction: column; gap: 6px; z-index: 2; }
.seat-zoom button { width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--line);
    background: var(--surface); color: var(--ink); box-shadow: 0 2px 8px rgba(0, 0, 0, .12); display: grid; place-items: center; }
.seat-hint { position: absolute; bottom: 10px; inset-inline: 0; margin: auto; width: fit-content; font-size: .75rem;
    background: rgba(17, 24, 39, .78); color: #fff; padding: 4px 12px; border-radius: 999px; pointer-events: none; }

/* انتخاب جایگاه (پارتر، بالکن ...) - نسخه قدیمی کارت‌ها برای صفحات دیگر */
.section-picker { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.section-picker::-webkit-scrollbar { display: none; }

.bottom-sheet {
    position: fixed; inset-inline: 0; z-index: 1035; bottom: 0;
    background: var(--surface); border-top: 1px solid var(--line);
    border-radius: 18px 18px 0 0; padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
    box-shadow: 0 -10px 30px rgba(0, 0, 0, .12);
}
.seat-sheet { padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); }
.seat-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.selected-list { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin-bottom: 8px; }
.selected-list:empty { display: none; }
.sel-chip { flex: 0 0 auto; border: 1px solid var(--line); background: var(--page); color: var(--ink);
    border-radius: 8px; padding: 3px 8px; font-size: .78rem; white-space: nowrap; }
.sel-chip i { color: var(--brand); }
.timer { font-variant-numeric: tabular-nums; font-weight: 800; }

/* ---------------------------------------------------------------- ۷) بلیط و پنل */
.ticket {
    background: var(--surface); border-radius: 18px; overflow: hidden; border: 1px solid var(--line);
    position: relative;
}
/* بریدگی‌های دو طرف بلیط */
.ticket .perforation { position: relative; border-top: 2px dashed var(--line); margin: 0 18px; }
.ticket .perforation::before, .ticket .perforation::after {
    content: ""; position: absolute; top: -13px; width: 24px; height: 24px; border-radius: 50%; background: var(--page);
}
.ticket .perforation::before { right: -30px; }
.ticket .perforation::after { left: -30px; }
.ticket .qr svg { width: 200px; height: 200px; background: #fff; padding: 8px; border-radius: 12px; }
.ticket.used { opacity: .6; }

.stat-card .value { font-size: 1.35rem; font-weight: 800; }
.stat-card .label { color: var(--muted); font-size: .8rem; }


/* نمودار میله‌ای ساده (بدون کتابخانه) */
.bars { display: flex; align-items: flex-end; gap: 4px; height: 140px; }
.bars .bar { flex: 1; background: var(--brand); border-radius: 4px 4px 0 0; min-height: 2px; position: relative; }
.bars .bar:hover { background: var(--brand-dark); }
.bars-labels { display: flex; gap: 4px; font-size: .62rem; color: var(--muted); }
.bars-labels span { flex: 1; text-align: center; overflow: hidden; }

.table > :not(caption) > * > * { background-color: transparent; color: var(--ink); border-color: var(--line); }

/* اسکنر */
#qr-reader { border-radius: var(--radius); overflow: hidden; background: #000; }
#qr-reader video { object-fit: cover; }
.scan-result.ok { border-color: var(--seat-free) !important; }
.scan-result.bad { border-color: var(--brand) !important; }

/* ابزار نقشه‌ساز */
.builder-canvas { width: 100%; height: 100%; touch-action: none; user-select: none;
    background-image: radial-gradient(var(--line) 1px, transparent 1px); background-size: 20px 20px; }
.builder-canvas .seat-label { display: inline; }
.builder .seat.selected, .builder .stage.selected { stroke: #2563eb; stroke-width: 3.5; }
.builder .b-text.selected { fill: #2563eb; }
.builder .b-text, .builder .stage { cursor: move; }
.builder .b-pick { cursor: pointer; pointer-events: all; }
.builder .b-pick:hover { fill: var(--brand); }
.b-section { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1.5px solid var(--line); border-radius: 10px; cursor: pointer; font-size: .9rem; }
.b-section.active { border-color: var(--brand); background: var(--brand-soft); }
.b-section .dot { width: 12px; height: 12px; border-radius: 50%; flex: 0 0 auto; }

/* رنگ فرعی برند */
.text-accent { color: var(--accent) !important; }
.bg-accent { background: var(--accent) !important; color: #fff; }
.btn-accent { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn-accent:hover { background: var(--accent-dark); border-color: var(--accent-dark); color: #fff; }

/* ---------------------------------------------------------------- ۸) صفحات بازسازی‌شده با اجزای قالب */
/* دکمه‌های فرم ورود قالب در پایین صفحه fixed هستند؛ اینجا منوی پایین داریم پس داخل جریان صفحه می‌آیند */
.form-button-group { position: static; min-height: 0; padding: 16px 0 0; background: transparent; }
.login-form h1 { font-size: 22px; font-weight: 700; margin-bottom: 6px; }
.login-form h4 { font-size: 14px; color: var(--muted); font-weight: 400; line-height: 1.8; margin-bottom: 20px; }
.auth-hero { margin: 28px auto 20px; display: grid; place-items: center; }
.auth-hero img { width: 92px; height: auto; display: block; }
.auth-steps { margin-bottom: 16px; }
.avatar-circle { width: 40px; height: 40px; border-radius: 50%; display: inline-grid; place-items: center; flex: 0 0 auto;
    background: linear-gradient(135deg, var(--brand), var(--accent)); color: #fff; font-weight: 700; font-size: 16px; }
.avatar-circle.lg { width: 64px; height: 64px; font-size: 26px; }
.avatar-circle.sm { width: 32px; height: 32px; font-size: 13px; }
.profile-stats .item { text-align: center; }
.empty-state { text-align: center; padding: 48px 16px; color: var(--muted); }
.empty-state i { font-size: 48px; opacity: .5; }
.empty-state p { margin: 12px 0; }
.listview.transactions .item .in, .notification-list .item .in { gap: 10px; }
.notification-list li.unread { background: var(--brand-soft); }
.notification-list .notification-text { white-space: pre-line; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.wallet-hero { border-radius: 16px; padding: 18px 16px 14px; color: #fff; background: linear-gradient(135deg, var(--brand), var(--accent)); box-shadow: 0 12px 30px rgba(7, 133, 242, .25); }
.wallet-hero h1 { color: #fff; font-size: 26px; font-weight: 800; margin: 4px 0 0; }
.wallet-hero .label { font-size: 12px; opacity: .85; }
.wallet-hero-top { display: flex; justify-content: space-between; align-items: flex-start; }
.wallet-hero-icon { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .18); font-size: 18px; }
.wallet-hero-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 16px; }
.wallet-action { display: flex; align-items: center; justify-content: center; gap: 6px; height: 42px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .35); background: rgba(255, 255, 255, .12); color: #fff !important; font-size: 13px; font-weight: 700; }
.wallet-action.primary { background: #fff; border-color: #fff; color: var(--brand) !important; }
.topup-amounts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.topup-amounts .btn { height: 40px; font-size: 13px; }
.poster-thumb { aspect-ratio: 9 / 16; height: auto; object-fit: cover; }
.listview.media .item .in { gap: 8px; }
.alert-imaged { border-radius: 12px; }
/* چت قالب: نوار نوشتن بالای منوی پایین */
.chatFooter { bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom)); z-index: 998; }
.chatFooter form { display: flex; align-items: center; gap: 8px; width: 100%; }
.chatFooter .form-group { flex: 1; margin: 0; padding: 0; }
#appCapsule:has(.chatFooter) { padding-bottom: calc(var(--bottom-nav-h) + 72px); }
.message-item .avatar-circle { margin-inline-end: 8px; }
.bubble-sources { margin-top: 8px; font-size: 11px; opacity: .7; }
.live-card { margin-top: 6px; background: var(--brand-soft) !important; color: var(--ink) !important; min-width: 220px; }
.message-item .chips { flex-wrap: wrap; }
/* نظرات: بلاک کامنت قالب + انتخاب ستاره */
.comment-block .item .in { flex: 1; min-width: 0; }
.comment-badges { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin: 2px 0; font-size: 12px; }
.comment-reply { margin-top: 6px; padding: 8px 10px; border-radius: 10px; background: var(--brand-soft); font-size: 13px; }
.star-rate { display: inline-flex; flex-direction: row-reverse; gap: 2px; }
.star-rate input { display: none; }
.star-rate label { cursor: pointer; color: #d4d7dd; font-size: 20px; line-height: 1; }
.star-rate input:checked ~ label, .star-rate label:hover, .star-rate label:hover ~ label { color: #f59e0b; }
.review-sheet .simple-listview li { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.action-sheet .offcanvas-body { max-height: 75vh; overflow-y: auto; }
.order-summary li { justify-content: space-between; gap: 8px; }
.image-listview > li .item .avatar-circle.image { margin-inline-end: 16px; margin-inline-start: 0; }
html[dir="rtl"] .image-listview > li .item .avatar-circle.image { margin-left: 16px; margin-right: 0; }
.member-list .item .in, .customer-list .item .in { gap: 8px; }
.queue-list li.is-empty .in > div:first-child { color: var(--muted); }
/* متن بلند داخل ردیف لیست کوتاه شود، نه اینکه عرض را بشکند */
.listview .item .in { min-width: 0; }
.listview .item .in > .min-w-0 { flex: 1 1 auto; min-width: 0; }
/* منوی کناری بدون ردیف دکمه‌های پایین قالب */
#sidebarPanel .offcanvas-body { padding-bottom: 16px; }
#sidebarPanel form button.item { display: flex; align-items: center; padding: 10px 16px; min-height: 50px; }
/* اعلان‌ها و هشدارها به شکل گفتگو (صفحه چت قالب) */
.message-item .avatar-circle { color: #fff; }
.message-item .avatar-circle.bg-success { background: var(--accent) !important; }
.message-item .bubble .bubble-link { display: inline-flex; align-items: center; gap: 4px; margin-top: 6px; font-weight: 700; font-size: 13px; }
.message-item.is-unread .bubble { box-shadow: 0 0 0 2px var(--brand-soft); }
.message-item .title .badge { font-size: 10px; height: 16px; }
.alerts-chat .message-item .content { max-width: calc(100% - 50px); }
.message-item .avatar.avatar-circle { width: 32px; height: 32px; flex: 0 0 32px; font-size: 13px; }

/* فاصله یکسان آیکن و متن (کلاس‌ها را public/js/app.js می‌گذارد) */
i.fa-gap-end { margin-inline-end: .4em; }
i.fa-gap-start { margin-inline-start: .4em; }
.btn i.fa-gap-end, .btn i.fa-gap-start { margin-top: 0; }

/*
 * صفحه‌های چت (اعلان‌ها، هشدارها، دستیار): پس‌زمینه همان پس‌زمینه سایت است.
 * لینک‌های پیام به شکل دکمه inline تلگرام (partials/chat-buttons): نیمه‌شفاف تیره و شیشه‌ای،
 * متن سفید وسط‌چین، فلش کوچک در گوشه بالا.
 */
.alerts-chat { padding: 4px 0 8px; }
.tg-buttons { display: flex; flex-direction: column; gap: 4px; margin-top: 4px; }
.tg-btn {
    position: relative; display: flex; align-items: center; justify-content: center;
    min-height: 36px; padding: 6px 26px; border-radius: 10px;
    font-size: 14px; font-weight: 500; line-height: 1.35; text-align: center; text-decoration: none;
    color: #fff; background: rgba(24, 45, 70, .58);   /* تیره نیمه‌شفاف مثل تلگرام؛ روی پس‌زمینه روشن سایت هم خواناست */
    backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
    transition: background .15s;
}
.tg-btn:hover, .tg-btn:focus { color: #fff; background: rgba(24, 45, 70, .68); }
.tg-btn:active { background: rgba(24, 45, 70, .76); }
.tg-btn .tg-corner { position: absolute; top: 2px; inset-inline-end: 6px; font-size: 12px; line-height: 1; opacity: .9; font-family: Tahoma, sans-serif; }
body.dark-mode-active .tg-btn { background: rgba(255, 255, 255, .14); }
body.dark-mode-active .tg-btn:hover { background: rgba(255, 255, 255, .2); }

/*
 * چت راست‌به‌چپ: قالب پیام‌ها را ltr می‌کند و متن فارسی داخل حباب به‌هم می‌ریزد (نقطه اول جمله می‌آید).
 * اینجا قرینه می‌شود: پیام دریافتی سمت راست با آواتار راست، پیام کاربر سمت چپ.
 */
html[dir="rtl"] .message-item { direction: rtl; margin-right: 0; margin-left: 60px; align-items: flex-end; }
html[dir="rtl"] .message-item.user { margin-left: 0; margin-right: 60px; }
html[dir="rtl"] .message-item .content { text-align: right; min-width: 0; }
html[dir="rtl"] .message-item .avatar { margin-right: 0; margin-left: 8px; }
html[dir="rtl"] .message-item .bubble { border-radius: 16px 16px 0 16px; }
html[dir="rtl"] .message-item.user .bubble { border-radius: 16px 16px 16px 0; }
html[dir="rtl"] .message-item .title { padding: 0 10px 0 0; }
html[dir="rtl"] .message-item .footer { text-align: left; }
.message-item + .message-item { margin-top: 10px; }

/* هشدارهای داشبورد: هر هشدار پیام کامل‌عرض با فاصله و دکمه شیشه‌ای هم‌عرض */
.alerts-chat .message-item { margin-left: 0; padding: 0 6px; }
.alerts-chat .message-item .content { flex: 1; display: flex; flex-direction: column; }
.alerts-chat .message-item .bubble { display: block; }
.alerts-chat .message-item .title { margin-bottom: 2px; }
.alerts-chat .message-item .avatar { align-self: flex-start; margin-top: 18px; }
.alerts-chat .alert-more { text-align: center; margin-top: 8px; }
/* هدر پنل فقط ۳ دکمه دارد؛ عنوان و نشان نقش جای بیشتری می‌گیرند */
.panel-body .appHeader .pageTitle { max-width: calc(100% - 170px); }
.appHeader .header-role { white-space: nowrap; }

/* ---------------------------------------------------------------- فهرست آکاردئونی به‌جای جدول (x-row-list) */
.row-list { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.row-list .accordion-item { background: transparent; border-bottom: 1px solid var(--line) !important; }
.row-list .accordion-item:last-child { border-bottom: 0 !important; }
.row-list .row-head { display: flex !important; align-items: center; gap: 10px; text-align: start !important;
    padding: 10px 14px !important; padding-inline-end: 40px !important; min-height: 56px; color: var(--ink) !important; text-decoration: none; }
.row-list .row-head.no-body { padding-inline-end: 14px !important; }
.row-list .row-head.no-body::after { display: none; }
.row-list .row-head::before { display: none !important; }
.row-list .row-head::after { right: auto !important; inset-inline-end: 12px; }
[dir="rtl"] .row-list .row-head::after { left: 12px; right: auto !important; }
.row-list .row-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.row-list .row-title { font-weight: 700; font-size: .9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row-list .row-sub { font-size: .76rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row-list .row-side { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 3px; font-size: .82rem; font-weight: 700; text-align: end; }
.row-list .icon-box { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; color: #fff; }
.row-list .row-body { padding: 4px 14px 14px !important; background: var(--page); }
.row-field { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: .84rem; }
.row-field:last-of-type { border-bottom: 0; }
.row-field > span:first-child { color: var(--muted); flex: 0 0 auto; }
.row-field > span:last-child { text-align: end; min-width: 0; overflow-wrap: anywhere; }
.row-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.row-actions form { margin: 0; }
.row-empty { padding: 24px 16px; text-align: center; color: var(--muted); font-size: .88rem; }

/* ---------------------------------------------------------------- مجله (مقالات) */
.article-list { display: grid; gap: 12px; }
.article-list.two { grid-template-columns: 1fr 1fr; }
.article-card { display: block; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; color: var(--ink); text-decoration: none; }
.article-card .thumb { position: relative; aspect-ratio: 16 / 9; background: var(--page); }
.article-card .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.article-card .thumb-ph { position: absolute; inset: 0; display: grid; place-items: center; font-size: 2rem; color: var(--muted); }
.article-card .cat { position: absolute; top: 8px; inset-inline-start: 8px; background: var(--brand); color: #fff; font-size: .7rem; padding: 2px 8px; border-radius: 999px; }
.article-card .body { padding: 10px 12px 12px; }
.article-card .title { font-size: .95rem; font-weight: 800; line-height: 1.6; margin: 0 0 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.article-card .excerpt { font-size: .8rem; color: var(--muted); margin: 0 0 6px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.article-card .meta { font-size: .72rem; color: var(--muted); }
.article-card.compact .title { font-size: .82rem; }
.article-page .article-title { font-size: 1.25rem; font-weight: 800; line-height: 1.7; margin-bottom: 6px; }
.article-meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: .76rem; color: var(--muted); margin-bottom: 10px; }
.article-hero { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--radius); margin-bottom: 12px; }
.article-lead { font-weight: 700; color: var(--ink); border-inline-start: 3px solid var(--brand); padding-inline-start: 10px; }
.rich-text { font-size: .95rem; line-height: 2; color: var(--ink); overflow-wrap: anywhere; }
.rich-text h2 { font-size: 1.1rem; font-weight: 800; margin: 18px 0 8px; }
.rich-text h3 { font-size: 1rem; font-weight: 800; margin: 14px 0 6px; }
.rich-text h4 { font-size: .95rem; font-weight: 700; margin: 12px 0 6px; }
.rich-text img { max-width: 100%; height: auto; border-radius: 10px; margin: 8px 0; }
.rich-text figure { margin: 10px 0; }
.rich-text figcaption { font-size: .78rem; color: var(--muted); text-align: center; }
.rich-text blockquote { border-inline-start: 3px solid var(--line); padding-inline-start: 12px; color: var(--muted); }
.rich-text a { color: var(--brand); }
.article-event .event-card { display: grid; grid-template-columns: 96px 1fr; grid-template-rows: auto; column-gap: 12px; align-content: start;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px; }
.article-event .event-card .poster { grid-row: 1 / span 5; aspect-ratio: 9 / 16; margin: 0; }
.article-event .event-card .title { margin-top: 0; }
.terms-body { max-height: 60vh; overflow-y: auto; text-align: start; }
.article-scroll .article-card { flex: 0 0 220px; }
.seo-preview { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--page); }
.seo-preview .sp-url { font-size: .72rem; color: #188038; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seo-preview .sp-title { color: #1a0dab; font-size: 1rem; font-weight: 700; margin: 2px 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seo-preview .sp-desc { font-size: .8rem; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.seo-checks li { padding: 2px 0; }
.latin, .latin input, input.latin { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important; direction: ltr; font-feature-settings: normal; }
/* گردش حساب با آکاردئون قالب */
.ledger-accordion .accordion-button { gap: 10px; padding: 10px 12px; }
.ledger-accordion .accordion-button .icon-box { width: 32px; height: 32px; min-width: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; }
.ledger-accordion .ledger-head { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.ledger-accordion .ledger-desc { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.ledger-accordion .ledger-date { font-size: 11px; color: var(--bs-secondary-color, #8e8e93); }
.ledger-accordion .ledger-amount { white-space: nowrap; font-size: 13px; margin-inline-end: 6px; }
.ledger-accordion .accordion-body p { white-space: normal; word-break: break-word; }
.ledger-details li { display: flex; justify-content: space-between; gap: 8px; padding: 6px 0 !important; min-height: 0 !important; font-size: 13px; }
.ledger-details li > span:first-child { color: var(--bs-secondary-color, #8e8e93); }
/* برچسب وضعیت برگزاری */
.held-state { display: inline-flex; align-items: center; gap: 5px; padding: 2px 10px; border-radius: 999px; font-size: 12px; line-height: 1.8; background: var(--brand-soft, #e6f2fe); color: var(--ink, #27173e); white-space: nowrap; }
.held-state.held-live { background: #fde8e8; }
.held-state.held-today { background: #fff4d6; }
.held-state.held-held { background: #eef0f3; color: #6b7280; }
.held-state.held-cancelled { background: #eef0f3; color: #6b7280; text-decoration: line-through; }
.held-dot { width: 7px; height: 7px; border-radius: 50%; background: #e53935; animation: held-pulse 1.2s infinite; }
@keyframes held-pulse { 0% { box-shadow: 0 0 0 0 rgba(229, 57, 53, .6); } 100% { box-shadow: 0 0 0 7px rgba(229, 57, 53, 0); } }
.badge-corner.held-state { position: absolute; }
/* داشبورد تحلیلی */
.hbar { margin-bottom: 8px; }
.bars .bar.bar-alt { background: var(--accent, #00c9a7); }
.bars .bar.bar-peak { background: #ff9800; }
.bars-labels span { min-width: 0; white-space: nowrap; overflow: visible; }
/* قالب: .accordion .accordion-header .accordion-button متن را چپ‌چین (!important) می‌کند؛ ردیف‌های فهرست راست‌چین بمانند */
.row-list.accordion .accordion-header .row-head, .ledger-accordion.accordion .accordion-header .accordion-button { text-align: start !important; }
/* عکس پروفایل کاربر داخل دایره آواتار */
.avatar-circle.has-photo { padding: 0; overflow: hidden; background: transparent !important; }
.avatar-circle.has-photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
.avatar-letter.has-photo { padding: 0; overflow: hidden; }
.avatar-letter img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.profile-head .avatar { position: relative; }
.avatar-edit { position: absolute; bottom: -2px; inset-inline-end: -2px; width: 26px; height: 26px; border-radius: 50%; background: var(--brand); color: #fff;
    display: grid; place-items: center; font-size: 12px; border: 2px solid #fff; cursor: pointer; margin: 0; }
.article-author { display: flex; align-items: center; gap: 8px; font-size: .85rem; margin-bottom: 8px; }
/* کاشی‌های آمار تخت (حساب من، آمار استوری‌ها) */
.stat-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.stat-tile { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px 4px 10px; border-radius: 12px;
    background: var(--brand-soft, #e6f2fe); color: var(--ink) !important; text-decoration: none; text-align: center; min-width: 0; }
.stat-tile i { font-size: 15px; color: var(--brand); margin-bottom: 4px; }
.stat-tile strong { font-size: 16px; font-weight: 800; line-height: 1.3; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stat-tile span { font-size: 11px; color: var(--muted); line-height: 1.4; }
.stat-tile.tone-green { background: #e8f8f1; } .stat-tile.tone-green i { color: #1dae6b; }
.stat-tile.tone-amber { background: #fff5e0; } .stat-tile.tone-amber i { color: #f2a01b; }
.stat-tile.tone-violet { background: #f1ecfd; } .stat-tile.tone-violet i { color: #7b5cf0; }
a.stat-tile:active { filter: brightness(.96); }
body.dark-mode-active .stat-tile.tone-green { background: #0f3324; }
body.dark-mode-active .stat-tile.tone-amber { background: #3a2c0c; }
body.dark-mode-active .stat-tile.tone-violet { background: #261d44; }
/* ورود با رمز: دکمه نمایش رمز و جداکننده «یا» */
.pw-toggle { position: absolute; inset-inline-end: 8px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; color: var(--muted); padding: 6px; z-index: 2; }
.auth-or { display: flex; align-items: center; gap: 10px; margin: 18px 0 14px; color: var(--muted); font-size: 12px; }
.auth-or::before, .auth-or::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* ===================== جلوگیری از دوخطی شدن متن‌های کوتاه در موبایل ===================== */
/* اندازه‌های بزرگ بوت‌استرپ برای قاب موبایل کوچک‌تر */
.fs-2 { font-size: 1.5rem !important; }
.fs-3 { font-size: 1.3rem !important; }
.fs-4 { font-size: 1.15rem !important; }
.fs-5 { font-size: 1.05rem !important; }
/* متن دکمه‌ها یک خط */
.btn { white-space: nowrap; }
/* کارت‌های آمار: عدد و برچسب یک خط */
.stat-card { padding: 12px !important; min-width: 0; }
.stat-card .value { font-size: 1.05rem; white-space: nowrap; }
.stat-card .label { font-size: .74rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* کارت رویداد و دسته‌ها */
.event-card .title { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.event-card .meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.category-tile .label, a .label { white-space: nowrap; }
/* آمار سربرگ برگزارکننده/ارائه‌دهنده */
.profile-stats b { font-size: 1.05rem; white-space: nowrap; }
.profile-stats span { font-size: .72rem; white-space: nowrap; }
/* لیست‌ها: خط عنوان و خط توضیح یک خط با «…» */
.image-listview > li .item .in > div:first-child { min-width: 0; }
.image-listview > li .item .in > div:first-child > .fw-bold,
.image-listview > li .item .in > div:first-child > footer,
.image-listview > li .item .in > div:first-child > .small,
.image-listview > li .item .in > div:first-child > .text-muted { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.image-listview > li .item .in > .text-end, .image-listview > li .item .in > span.badge { white-space: nowrap; flex-shrink: 0; }
.simple-listview li > :last-child { white-space: nowrap; }
.ledger-date, .ledger-amount { white-space: nowrap; }
.image-crop .small { font-size: .7rem; white-space: nowrap; }

/* صفحه اعلان‌ها: پیام‌ها تمام‌عرض (بدون حاشیه ۶۰px قالب چت) */
html[dir="rtl"] .message-item.notif-item { margin: 0; padding: 2px 4px; }
.message-item.notif-item .content { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.message-item.notif-item .bubble { display: block; }

/* حالت تاریک: برچسب‌های «برگزار شد / در حال برگزاری / ...» */
body.dark-mode-active .held-state { background: #1e2a3a; color: #e6e9ef; }
body.dark-mode-active .held-state.held-live { background: #4a1c1c; color: #ffd6d6; }
body.dark-mode-active .held-state.held-today { background: #3d3112; color: #ffe8b0; }
body.dark-mode-active .held-state.held-held,
body.dark-mode-active .held-state.held-cancelled { background: #2a2f37; color: #c4cad3; }
body.dark-mode-active .bg-light,
body.dark-mode-active .bg-white { background-color: #1f2533 !important; color: #e6e9ef; }
body.dark-mode-active .alert-light { background-color: #1f2533; border-color: #2e3646; color: #e6e9ef; }
/* سوییچ قالب: لیبل خود سوییچ ۵۶px است؛ متن در لیبل جدا کنار آن تا در یک خط بماند */
.form-switch:has(.switch-text) { display: flex; align-items: center; gap: 10px; height: auto; min-height: 30px; }
.form-switch .form-check-label { flex: 0 0 56px; }
.form-switch .switch-text { margin: 0; line-height: 1.6; font-size: 14px; cursor: pointer; }

/* فرم نظر: دکمه نظر اختصاصی کنار ستاره‌ها و آکاردئون متن آن (ارائه‌دهنده / محل برگزاری) */
.review-sheet .simple-listview li.rate-row { flex-wrap: wrap; }
.rate-row .rate-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rate-row .note-toggle { order: 3; flex: 0 0 32px; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--line, #e5e7eb); background: transparent; color: var(--brand, #0785f2); display: inline-flex; align-items: center; justify-content: center; }
.rate-row .note-toggle:not(.collapsed) { background: var(--brand, #0785f2); border-color: var(--brand, #0785f2); color: #fff; }
.rate-row .star-rate { order: 2; }
.rate-row .rate-note { order: 4; flex: 0 0 100%; }
.review-sheet .simple-listview li.rate-row > .rate-note { white-space: normal; }
.rate-note textarea { margin-top: 6px; font-size: 13px; }
.rate-note-hint { font-size: 11px; color: var(--muted, #8a8f98); margin-top: 3px; }
.rate-note textarea:not([required]) + .rate-note-hint { display: none; }

/* امتیاز ارائه‌دهنده / محل برگزاری */
.rating-pill { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border-radius: 999px; background: #fff4d6; color: #92600a; font-weight: 700; font-size: 13px; white-space: nowrap; }
.rating-pill i { color: #f59e0b; font-size: 11px; }
body.dark-mode-active .rating-pill { background: #3d3112; color: #ffe8b0; }
.stars-off { color: #d4d7dd; }
body.dark-mode-active .stars-off { color: #4b5263; }
.feedback-list { list-style: none; margin: 0; padding: 0; }
.feedback-list li { padding: 8px 0; border-bottom: 1px solid var(--line, #eef0f3); font-size: 13px; }
.feedback-list li:last-child { border-bottom: 0; }
.feedback-head { display: flex; align-items: center; gap: 8px; min-width: 0; margin-bottom: 3px; font-size: 12px; }
.rating-bars { display: grid; gap: 4px; }
.rating-bar { display: grid; grid-template-columns: 38px 1fr 28px; align-items: center; gap: 8px; font-size: 12px; }
.rating-bar i { color: #f59e0b; font-size: 10px; }
.rating-bar .bar { height: 6px; border-radius: 3px; background: var(--line, #eef0f3); overflow: hidden; }
.rating-bar .bar span { display: block; height: 100%; background: #f59e0b; border-radius: 3px; }
.rating-bar .cnt { text-align: left; color: var(--muted, #8a8f98); }
body.dark-mode-active .rating-bar .bar { background: #2a2f37; }

/* دسته‌بندی‌های صفحه اصلی: لیبل متنی زیر استوری‌ها */
.cat-chips { padding: 2px 0 4px; }
.cat-chips .chip { padding: 7px 16px; font-weight: 600; }

/* انتخاب کاربر با جستجو (x-user-picker) */
.user-picker { position: relative; }
.up-selected { display: flex; flex-wrap: wrap; gap: 6px; }
.up-selected:not(:empty) { margin-bottom: 6px; }
.up-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 4px 3px 10px; border-radius: 999px; background: var(--brand-soft, #e6f2fe); font-size: 13px; max-width: 100%; }
.up-chip img, .up-chip > i { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.up-chip > i { display: inline-grid; place-items: center; font-size: 11px; font-style: normal; font-weight: 700; background: #fff; color: #8a8f98; }
.up-chip > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.up-remove { border: 0; background: transparent; color: inherit; opacity: .6; padding: 0 4px; }
.up-search { position: relative; }
.up-search i { position: absolute; inset-inline-start: 12px; top: 50%; transform: translateY(-50%); color: #9ca3af; font-size: 13px; pointer-events: none; }
.up-search input { padding-inline-start: 34px; }
.up-results { position: absolute; z-index: 30; inset-inline: 0; top: 100%; margin: 4px 0 0; padding: 4px; list-style: none; background: var(--surface, #fff); border: 1px solid var(--line, #e5e7eb); border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.12); max-height: 260px; overflow-y: auto; }
.up-results button { width: 100%; display: flex; align-items: center; gap: 10px; padding: 7px 8px; border: 0; background: transparent; border-radius: 8px; text-align: start; color: inherit; }
.up-results button:hover { background: var(--brand-soft, #e6f2fe); }
.up-results img, .up-av { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.up-av { display: grid; place-items: center; background: #eef0f3; color: #8a8f98; font-size: 13px; }
.up-text { display: flex; flex-direction: column; min-width: 0; }
.up-text b { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.up-text small { font-size: 12px; color: #8a8f98; unicode-bidi: plaintext; text-align: start; }
.up-none { padding: 8px; font-size: 13px; color: #8a8f98; }
body.dark-mode-active .up-chip { color: #e6e9ef; }
body.dark-mode-active .up-results { background: #1f2533; border-color: #2e3646; }
body.dark-mode-active .up-results button:hover { background: #2a3142; }
.brand-checks { display: grid; gap: 8px; max-height: 220px; overflow-y: auto; padding: 10px 12px; border: 1px solid var(--line, #e5e7eb); border-radius: 12px; }

/* جستجو: کادر کشویی هدر و کادر صفحه اصلی (آیکن داخل کادر، سمت راست؛ دکمه بستن سمت چپ) */
.searchbox .input-icon { position: absolute; top: 0; bottom: 0; right: 0; left: auto; width: 44px; height: auto; font-size: 16px; display: flex; align-items: center; justify-content: center; color: var(--muted, #8a8f98); pointer-events: none; transform: none; }
.searchbox input[type=search]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
#search .searchbox { height: 56px; }
#search .searchbox .form-control { padding: 0 52px; height: 56px; font-size: 15px; }
#search .searchbox .input-icon { width: 52px; font-size: 18px; }
#search .searchbox .close { position: absolute; top: 0; left: 0; right: auto !important; width: 52px; height: 56px; margin: 0 !important; font-size: 20px; display: flex; align-items: center; justify-content: center; color: #a1a1a2; }
.home-search .form-control { height: 46px; border-radius: 12px; padding: 0 44px 0 14px !important; font-size: 14px; background: var(--surface, #fff); }
body.dark-mode-active #search .searchbox .form-control { color: #e6e9ef; }

/* کارت رویداد: فاصله تا روز برگزاری روبه‌روی تاریخ (امروز / فردا / ۳ روز دیگر) */
.event-card .meta.date-line { display: flex; align-items: center; gap: 6px; overflow: visible; }
.event-card .meta.date-line > .text-truncate { min-width: 0; }
.rel-day { margin-inline-start: auto; flex-shrink: 0; font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--brand-soft, #e6f2fe); color: var(--brand, #0785f2); white-space: nowrap; }
.rel-day.is-today { background: #fff4d6; color: #92600a; }
body.dark-mode-active .rel-day { background: #0b2a47; color: #8cc4ff; }
body.dark-mode-active .rel-day.is-today { background: #3d3112; color: #ffe8b0; }

/* مکان رویداد: اطلاعات سمت راست، نقشه کوچک نشان سمت چپ با دکمه بزرگ‌نمایی */
.venue-block { display: flex; gap: 12px; align-items: flex-start; }
.venue-info { flex: 1; min-width: 0; }
.venue-mini-map { position: relative; flex: 0 0 132px; height: 132px; border-radius: 14px; overflow: hidden; border: 1px solid var(--line, #e5e7eb); background: #e9eef3; }
.venue-mini-canvas { position: absolute; inset: 0; cursor: pointer; z-index: 0; }
.venue-mini-canvas .leaflet-control-attribution, .venue-mini-canvas .leaflet-control-container { display: none; }
.map-expand { position: absolute; z-index: 500; top: 6px; left: 6px; width: 32px; height: 32px; border-radius: 10px; border: 0; background: rgba(255,255,255,.95); color: #141515; box-shadow: 0 2px 6px rgba(0,0,0,.18); display: grid; place-items: center; font-size: 14px; }
.venue-big-canvas { height: 52vh; min-height: 280px; border-radius: 14px; overflow: hidden; border: 1px solid var(--line, #e5e7eb); background: #e9eef3; z-index: 0; }
/* فاصله و زمان رسیدن: دو خانه هم‌اندازه کنار هم، تمام‌عرض */
.route-info:not([hidden]) { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.route-stat { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 6px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); text-align: center; }
.route-stat i { color: var(--brand, #0785f2); font-size: 18px; }
.route-stat b { font-size: 15px; }
.route-stat span { font-size: 12px; color: var(--muted); }
/* پنجره کوچک مارکر روی نقشه نشان (OpenLayers) */
.bmap-popup { background: var(--surface, #fff); color: var(--ink); border-radius: 10px; padding: 6px 12px; font-size: 13px; font-weight: 700; box-shadow: 0 4px 14px rgba(0,0,0,.18); white-space: nowrap; transform: translateY(-4px); }
.venue-mini-canvas .ol-attribution, .venue-mini-canvas .ol-zoom, .venue-mini-canvas .ol-rotate { display: none; }
body.dark-mode-active .map-expand { background: rgba(31,37,51,.95); color: #e6e9ef; }

/* کپی کد تخفیف */
.copy-btn { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; color: var(--brand, #0785f2); background: var(--brand-soft, #e6f2fe); margin-inline-end: 6px; cursor: pointer; }
.copy-btn.copied, .code-chip.copied { background: #e8f8f1; color: #1dae6b; }
.new-codes-list { display: flex; flex-wrap: wrap; gap: 6px; max-height: 220px; overflow-y: auto; }
.code-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px dashed var(--brand, #0785f2); background: var(--brand-soft, #e6f2fe); color: var(--ink, #141515); border-radius: 8px; padding: 4px 10px; font-family: monospace; font-size: 13px; }
.code-chip i { color: var(--brand, #0785f2); }
body.dark-mode-active .code-chip { color: #e6e9ef; }
.row-list .row-side:has(.copy-btn) { flex-direction: row; align-items: center; }

/* برداشت کیف پول */
.wallet-hero-actions:has(> :nth-child(4)) { grid-template-columns: repeat(2, 1fr); }
.iban-card { border: 1px dashed var(--line, #e5e7eb); border-radius: 12px; padding: 10px 12px; }
.iban-card .latin { font-size: 14px; letter-spacing: .5px; }
.form-hints { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 3px; font-size: 12px; color: var(--muted, #8a8f98); }
.form-hints li { display: flex; align-items: center; gap: 6px; }
.form-hints i { width: 14px; text-align: center; font-size: 11px; color: var(--brand, #0785f2); }
.feedback-reply { margin-top: 6px; padding: 6px 10px; border-radius: 10px; background: var(--brand-soft, #e6f2fe); font-size: 12.5px; }
.feedback-reply i { color: var(--brand, #0785f2); }
body.dark-mode-active .feedback-reply { background: #0b2a47; }
.no-refund-notice { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 12px; background: #fde8e8; color: #8a1c1c; }
.no-refund-notice > i { margin-top: 3px; }
body.dark-mode-active .no-refund-notice { background: #4a1c1c; color: #ffd6d6; }

/* ردیف عدد با stepper: برچسب و توضیح در یک سمت، stepper روبه‌روی آن در همان خط */
.stepper-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.stepper-row > div:first-child { min-width: 0; }
.stepper-row .stepper { flex-shrink: 0; }
.purchase-rules > summary { padding: 2px 4px; }

/* لیست حضور: نام و جزئیات در یک سمت، سوییچ حضور روبه‌روی آن */
.attendance-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.attendance-row .form-switch { flex-shrink: 0; }

/* قوانین لغو و جابه‌جایی: یک باکس، دو زیربخش جدا با زیرعنوان */
.policy-box { border: 1px solid var(--line, #e5e7eb); border-radius: 14px; overflow: hidden; }
.policy-part { padding: 10px 12px; }
.policy-part + .policy-part { border-top: 1px solid var(--line, #e5e7eb); }
.policy-sub { font-weight: 700; font-size: 14px; margin-bottom: 6px; }
.policy-sub i { color: var(--bs-primary, #1e74fd); margin-inline-end: 4px; }
.policy-list { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.policy-list li { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; }
.policy-list li + li { border-top: 1px dashed var(--line, #e5e7eb); }
.policy-list b { white-space: nowrap; }
.policy-box .no-refund-notice { align-items: center; padding: 8px 10px; }

/* پروفایل برگزارکننده/ارائه‌دهنده: عکس روی کاور (نه زیر آن)، شبکه‌های اجتماعی با اسکرول افقی، معرفی با پس‌زمینه خاکستری */
.profile-card { position: relative; }
.profile-top { position: relative; z-index: 2; }
.profile-avatar, .profile-avatar-ring { position: relative; z-index: 2; }
.profile-card .socials { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 2px; }
.profile-card .socials::-webkit-scrollbar { display: none; }
.profile-card .socials .social { flex-shrink: 0; }
.profile-about { background: var(--bs-gray-100, #f2f3f5); border-radius: 12px; padding: 10px 12px; }
.profile-about > :last-child { margin-bottom: 0; }
body.dark-mode-active .profile-about { background: rgba(255, 255, 255, .06); }

/* چیپ‌های برگزارکنندگان صفحه اصلی */
.brand-chips .chip-media { flex-shrink: 0; text-decoration: none; }
.brand-chips .chip-media img { object-fit: cover; }

/* دکمه دنبال کردن همیشه یک‌خطی (کنار نام برگزارکننده در صفحه رویداد) */
.follow-btn { white-space: nowrap; flex-shrink: 0; }
.follow-btn i { margin-inline-end: 4px; }

/* روبان گوشه پوستر: تکمیل ظرفیت / برگزار شد / لغو شد */
.event-card .poster, .poster-wrap { position: relative; overflow: hidden; }
.poster-wrap { border-radius: var(--radius); }
/* مهر وضعیت روی پوستر (تکمیل ظرفیت / برگزار شد / لغو شد): برچسب سفید مورب وسط پوستر و پوستر خاکستری */
.poster-ribbon { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; z-index: 2; }
.poster-ribbon > span {
    transform: rotate(-18deg); white-space: nowrap; color: #fff; font-size: 1.15rem; font-weight: 900; letter-spacing: .3px;
    text-shadow: 0 2px 6px rgba(0, 0, 0, .55), 0 0 2px rgba(0, 0, 0, .4);
}
.poster-lg ~ .poster-ribbon > span { font-size: 1.35rem; }
:is(.poster, .poster-wrap):has(.poster-ribbon) img { filter: grayscale(1) brightness(.9); }

/* سانس انتخاب‌شده بالای جستجوی سانس (لیست حضور، رزروکنندگان) */
.session-current { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 12px;
    background: var(--surface); border: 1px solid var(--line); }
.session-current img { width: 40px; height: 54px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; }

/* ردیف دکمه‌های هم‌عرض در یک خط (وضعیت رویداد در پنل) */
/* ردیف دکمه‌های هم‌عرض؛ بیش از ۳ دکمه به ردیف بعد می‌رود تا دکمه‌ها له نشوند */
.action-row { display: flex; flex-wrap: wrap; gap: 6px; }
.action-row > a, .action-row > form, .action-row > button { flex: 1 1 30%; min-width: 0; }
.action-row .btn { width: 100%; white-space: nowrap; padding-inline: 6px; font-size: .78rem; overflow: hidden; text-overflow: ellipsis; }

/* دکمه‌های btn-light: قالب حاشیه/پس‌زمینه را تقریباً شفاف می‌کند (!important) و روی کارت سفید شبیه متن ساده می‌شوند */
.btn-light { background: #f3f4f6 !important; border: 1px solid #d1d5db !important; color: var(--ink, #141515) !important; }
.btn-light:hover, .btn-light:focus, .btn-light:active { background: #e5e7eb !important; border-color: #c4c8cf !important; }
body.dark-mode-active .btn-light { background: #2a2f36 !important; border-color: #3b424c !important; color: #e5e7eb !important; }

/* ردیف عملیات سانس: دکمه‌های اصلی + منوی «بیشتر» */
.session-actions { display: flex; gap: 6px; align-items: center; }
.session-actions > .btn, .session-actions > .dropdown > .btn { white-space: nowrap; }
.session-actions .dropdown-menu { min-width: 200px; }
.session-actions .dropdown-item i { width: 20px; margin-inline-end: 6px; text-align: center; }
.session-actions form { margin: 0; }

/* حالت مسدودسازی نقشه صندلی (پنل): صندلی «انتخاب‌شده» = مسدود */
.block-mode .seat.mine { fill: var(--seat-blocked) !important; stroke: #fff; }

/* ذره‌بین هدر: هم‌اندازه آیکن اعلان (Font Awesome solid درشت‌تر از regular دیده می‌شود) */
.appHeader .toggle-searchbox .icon { font-size: 19px; }

/* بنر بدون متن: تصویر بدون تیرگی */
.hero-slide.no-caption img { filter: none; }

/* شمارنده اعداد بزرگ (ظرفیت، سهمیه): فیلد عدد پهن‌تر */
.stepper.stepper-wide { width: auto; }
.stepper.stepper-wide .form-control { width: 72px; flex: 0 0 72px; }

/* قیمت مرحله‌ای: دکمه بالای ردیف سانس + پنجره مراحل */
.session-row { position: relative; }
.session-row.has-tier { margin-top: 12px; padding-top: 18px; }
.tier-chip { position: absolute; top: -12px; inset-inline-start: 12px; display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 10px; border: 0; border-radius: 999px; font-size: .74rem; font-weight: 800; color: #fff; white-space: nowrap;
    background: linear-gradient(90deg, #f59e0b, #f97316); box-shadow: 0 3px 8px rgba(249, 115, 22, .35); }
.tier-chip-time { padding: 0 6px; border-radius: 999px; background: rgba(255, 255, 255, .25); font-weight: 700; }
.tier-steps { list-style: none; padding: 0; margin: 0 0 10px; }
.tier-step { display: flex; gap: 10px; position: relative; padding-bottom: 14px; }
.tier-step:not(:last-child)::before { content: ""; position: absolute; top: 28px; bottom: 0; inset-inline-start: 13px; width: 2px; background: var(--line); }
.tier-dot { flex: 0 0 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: .75rem; font-weight: 800;
    background: var(--line); color: var(--muted); }
.tier-step.is-current .tier-dot { background: linear-gradient(135deg, #f59e0b, #f97316); color: #fff; }
.tier-body { flex: 1; min-width: 0; }
.tier-step.is-current .tier-body { padding: 8px 10px; border-radius: 12px; background: #fff7e6; border: 1px solid #fde3b0; margin-top: -4px; }
.tier-row { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
.tier-price { font-weight: 800; white-space: nowrap; }
.tier-step.is-final .tier-price, .tier-step.is-upcoming .tier-price { color: var(--muted); font-weight: 700; }
.tier-when { font-size: .78rem; color: var(--muted); margin-top: 2px; }
.tier-when b { color: #c2410c; }
.tier-now { display: inline-block; padding: 0 8px; margin-inline-end: 4px; border-radius: 999px; background: #f97316; color: #fff; font-size: .7rem; font-weight: 800; }
body.dark-mode-active .tier-step.is-current .tier-body { background: #2b2215; border-color: #5c4318; }

/* باشگاه امتیاز: نشان سطح، انتخاب آیکن، سرصفحه امتیاز و پنجره تبریک ارتقا */
.level-badge { display: inline-flex; align-items: center; gap: 6px; vertical-align: middle; }
.level-badge .level-icon { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto;
    background: var(--lc); color: #fff; font-size: 12px; overflow: hidden; box-shadow: 0 2px 6px color-mix(in srgb, var(--lc) 45%, transparent); }
.level-badge .level-icon img { width: 100%; height: 100%; object-fit: cover; }
.level-badge .level-title { font-weight: 800; font-size: .8rem; color: var(--lc); }
.level-badge.level-lg .level-icon { width: 40px; height: 40px; font-size: 18px; }
.level-badge.level-lg .level-title { font-size: 1rem; color: inherit; }
.level-icon-picker { display: flex; flex-wrap: wrap; gap: 6px; }
.level-icon-picker label { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; cursor: pointer;
    border: 1px solid var(--line); background: var(--surface); color: var(--muted); }
.level-icon-picker .btn-check:checked + label { border-color: var(--brand); background: var(--brand-soft, #e7f1ff); color: var(--brand); }
.points-hero { padding: 18px; border-radius: 16px; color: #fff; text-align: center;
    background: linear-gradient(135deg, #7c3aed, #2563eb); box-shadow: 0 8px 22px rgba(37, 99, 235, .25); }
.points-hero .points-total { font-size: 2.2rem; font-weight: 900; line-height: 1.3; }
.points-hero .level-badge .level-icon { box-shadow: 0 0 0 3px rgba(255,255,255,.35); }
.points-bar { height: 8px; border-radius: 999px; background: rgba(255,255,255,.25); overflow: hidden; margin: 6px auto; max-width: 320px; }
.points-bar span { display: block; height: 100%; border-radius: inherit; background: #fbbf24; }
.points-bar.sm { height: 5px; background: rgba(0,0,0,.08); margin: 4px 0; max-width: none; }
.levelup-overlay { position: fixed; inset: 0; z-index: 3000; display: grid; place-items: center; padding: 16px;
    background: rgba(15, 23, 42, .6); backdrop-filter: blur(3px); animation: lvFade .25s ease-out; }
.levelup-card { position: relative; overflow: hidden; width: min(340px, 100%); padding: 28px 20px 20px; border-radius: 22px; text-align: center;
    background: var(--surface, #fff); color: var(--ink); animation: lvPop .45s cubic-bezier(.2, 1.4, .4, 1); }
.levelup-icon { position: relative; width: 92px; height: 92px; margin: 0 auto 10px; border-radius: 50%; display: grid; place-items: center;
    background: var(--lc); color: #fff; font-size: 40px; overflow: hidden; box-shadow: 0 10px 26px color-mix(in srgb, var(--lc) 55%, transparent); }
.levelup-icon img { width: 100%; height: 100%; object-fit: cover; }
.levelup-card h3 { position: relative; font-weight: 900; color: var(--lc); margin: 4px 0 6px; }
.levelup-card p, .levelup-card .small, .levelup-card .d-flex { position: relative; }
@keyframes lvPop { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes lvFade { from { opacity: 0; } to { opacity: 1; } }

/* کارت امتیاز در پروفایل و مأموریت‌های باشگاه امتیاز */
.profile-points { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 14px; text-decoration: none; color: var(--ink);
    background: var(--surface); border: 1px solid var(--line); }
.profile-points .pp-icon { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; flex: 0 0 auto;
    background: linear-gradient(135deg, #7c3aed, #2563eb); color: #fff; font-size: 18px; }
.mission-list { display: grid; gap: 8px; }
.mission { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 14px; background: var(--surface);
    border: 1px solid var(--line); border-inline-start: 4px solid var(--lc); }

/* دکمه‌های ویرایش اطلاعات و رمز عبور سمت چپ سرصفحه پروفایل */
.profile-head .in { flex: 1 1 auto; min-width: 0; }
.profile-actions { display: flex; flex-direction: column; gap: 6px; margin-inline-start: auto; flex: 0 0 auto; }
.profile-actions .pa-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 30px; padding: 0 12px;
    border: 1px solid #d1d5db; border-radius: 8px; box-shadow: none; background: #f3f4f6; color: #111827;
    font-size: .74rem; font-weight: 600; white-space: nowrap; cursor: pointer; }
.profile-actions .pa-btn i { color: #4b5563; }
.profile-actions .pa-btn:hover, .profile-actions .pa-btn:focus { background: #e5e7eb; border-color: #9ca3af; }
body.dark-mode-active .profile-actions .pa-btn { background: #1f2937; border-color: #374151; color: #f3f4f6; }
body.dark-mode-active .profile-actions .pa-btn i { color: #9ca3af; }
.profile-head .mobile-edit { margin-inline-start: 6px; font-size: .7rem; color: var(--brand); }

/* لیبل سطح وفاداری کنار نام نویسنده نظر */
.reviewer-levels { display: inline-flex; flex-wrap: wrap; gap: 4px; vertical-align: middle; }
.level-badge.level-xs { gap: 3px; padding: 1px 7px 1px 2px; border-radius: 999px; background: color-mix(in srgb, var(--lc) 12%, transparent); line-height: 1.4; }
.level-badge.level-xs .level-icon { width: 16px; height: 16px; font-size: 8px; }
.level-badge.level-xs .level-title { font-size: .66rem; white-space: nowrap; }

/* بردکرامب (صفحه رویداد و آرشیو دسته‌بندی) */
.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 0; list-style: none; margin: 0; padding: 0; font-size: .74rem; }
.crumbs li { color: var(--muted); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.crumbs li + li::before { content: "\f053"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .55rem; margin: 0 6px; opacity: .6; }
.crumbs a { color: inherit; text-decoration: none; }
.crumbs a:hover { color: var(--brand, #1e74fd); }
.crumbs [aria-current] { color: inherit; font-weight: 700; }
.crumbs-dark li, .crumbs-dark a { color: rgba(255,255,255,.85); }
.crumbs-dark [aria-current] { color: #fff; }
.brand-filter { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--card-bg, #fff); }
.category-intro { line-height: 1.9; }
.chips .chip img { vertical-align: -4px; }
body.dark-mode-active .brand-filter { background:#161f2c; border-color:#2a3446; }

/* ---------------------------------------------------------------- رویداد دانلودی: فهرست محتوا و پلیر */
.media-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.media-row:last-child { border-bottom: 0; }
.media-ico { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; flex: 0 0 auto; font-size: 16px; color: #fff; background: #6366f1; }
.media-ico.is-audio { background: #0ea5e9; }
.media-ico.is-file { background: #f59e0b; }
.media-row .btn.is-current { background: var(--brand); color: #fff; }
.media-row.is-locked .media-ico { background: #9ca3af; }
.media-drop { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 16px; border: 2px dashed var(--line); border-radius: 12px; cursor: pointer; text-align: center; }
.media-drop i { font-size: 26px; color: var(--brand); }
.media-drop:hover { border-color: var(--brand); }
.upload-row { padding: 6px 8px; border-radius: 8px; background: var(--page); }
.upload-row.is-error small { color: #dc2626 !important; }
.media-buy { display: flex; align-items: center; gap: 10px; padding: 12px; border-radius: 12px; background: var(--page); margin-bottom: 10px; }
.media-buy .price { font-weight: 800; font-size: 1.05rem; }
.media-owned { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 12px; background: #ecfdf5; color: #065f46; font-size: .85rem; margin-bottom: 10px; }
body.dark-mode-active .media-owned { background: #052e22; color: #a7f3d0; }

/* زیر منوی کناری (offcanvas ۱۰۴۵) و پنجره‌ها، بالای سربرگ و منوی پایین قالب (۹۹۹) */
.mp-root { position: fixed; inset: 0; z-index: 1039; pointer-events: none; }
.mp-root[hidden] { display: none; }
.mp-root.is-mini.mp-covered { visibility: hidden; }
.mp-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.6); opacity: 0; transition: opacity .2s; }
.mp-root.is-full .mp-backdrop { opacity: 1; pointer-events: auto; }
/* رنگ‌ها از توکن‌های سایت (روشن/تاریک)؛ پنل بالای منوی پایین می‌نشیند تا منو دیده و قابل استفاده بماند */
.mp-panel { position: absolute; inset-inline: 0; bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom)); margin-inline: auto; max-width: var(--frame-w);
    background: var(--surface); color: var(--ink); pointer-events: auto;
    border-radius: 18px 18px 0 0; box-shadow: 0 -8px 30px rgba(0,0,0,.18); transition: transform .25s; user-select: none; -webkit-user-select: none; }
body.no-bottom-nav .mp-root.is-full .mp-panel { bottom: 0; }
.mp-root.is-full .mp-backdrop { bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom)); }
body.no-bottom-nav .mp-root.is-full .mp-backdrop { bottom: 0; }
.mp-head { display: flex; align-items: center; gap: 8px; padding: 10px 10px 6px; }
.mp-title-wrap { flex: 1; min-width: 0; text-align: center; }
.mp-title { display: block; font-size: .9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-artist { display: block; font-size: .72rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-icon { background: transparent; border: 0; color: inherit; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; font-size: 17px; flex: 0 0 auto; }
.mp-icon:hover { background: color-mix(in srgb, var(--ink) 8%, transparent); }
.mp-play { width: 56px; height: 56px; font-size: 22px; background: var(--brand); color: #fff; }
.mp-play:hover { background: var(--brand); filter: brightness(.92); }
.mp-speed { font-size: .8rem; font-weight: 700; }
.mp-stage { position: relative; background: #000; aspect-ratio: 16 / 9; }
.mp-stage video { width: 100%; height: 100%; display: block; object-fit: contain; background: #000; }
.mp-cover { display: none; position: absolute; inset: 0; place-items: center; background: linear-gradient(135deg, var(--brand-soft, #e0efff), var(--page)); }
.mp-cover img { width: 46%; aspect-ratio: 1; object-fit: cover; border-radius: 14px; box-shadow: 0 10px 30px rgba(0,0,0,.5); }
.mp-cover img[hidden] + i { display: block; }
.mp-cover i { display: none; font-size: 64px; color: var(--muted); }
.mp-root.is-audio .mp-cover { display: grid; }
.mp-root.is-audio .mp-stage video { visibility: hidden; }
.mp-root.is-audio .mp-fs { visibility: hidden; }
.mp-controls { padding: 10px 14px 14px; }
body.no-bottom-nav .mp-controls { padding-bottom: calc(14px + env(safe-area-inset-bottom)); }
.mp-seek { width: 100%; accent-color: var(--brand); direction: ltr; }
.mp-times { display: flex; justify-content: space-between; direction: ltr; font-size: .72rem; color: var(--muted); margin-top: 2px; }
.mp-buttons { display: flex; align-items: center; justify-content: center; gap: 10px; direction: ltr; margin-top: 4px; }
.mp-mini-buttons, .mp-mini-progress, .mp-mini-expand { display: none; }

/* حالت کوچک: نوار بالای منوی پایین؛ پخش ادامه دارد */
.mp-root.is-mini .mp-panel { bottom: calc(var(--bottom-nav-h) + 8px + env(safe-area-inset-bottom)); inset-inline: 8px; border-radius: 14px; border: 1px solid var(--line);
    display: flex; align-items: center; gap: 6px; padding: 6px; overflow: hidden; }
@media (min-width: 520px) { .mp-root.is-mini .mp-panel { inset-inline: 0; width: calc(var(--frame-w) - 16px); } }
body.no-bottom-nav .mp-root.is-mini .mp-panel { bottom: calc(8px + env(safe-area-inset-bottom)); }
.mp-root.is-mini .mp-head { order: 2; flex: 1; min-width: 0; padding: 0; }
.mp-root.is-mini .mp-head .mp-icon { display: none; }
.mp-root.is-mini .mp-title-wrap { text-align: start; }
.mp-root.is-mini .mp-stage { order: 1; width: 86px; flex: 0 0 auto; border-radius: 8px; overflow: hidden; }
.mp-root.is-mini.is-audio .mp-stage { width: 46px; aspect-ratio: 1; }
.mp-root.is-mini .mp-cover i { font-size: 18px; }
.mp-root.is-mini .mp-cover img { width: 100%; height: 100%; border-radius: 0; box-shadow: none; }
.mp-root.is-mini .mp-controls { display: none; }
.mp-root.is-mini .mp-mini-buttons { order: 3; display: flex; }
.mp-root.is-mini .mp-mini-buttons .mp-play { width: 40px; height: 40px; font-size: 16px; }
.mp-root.is-mini .mp-mini-expand { display: block; position: absolute; inset: 0; background: transparent; border: 0; }
.mp-root.is-mini .mp-mini-progress { display: block; position: absolute; inset-inline: 0; bottom: 0; height: 3px; background: var(--line); direction: ltr; }
.mp-root.is-mini .mp-mini-progress span { display: block; height: 100%; width: 0; background: var(--brand); }
body.mp-open { overflow: hidden; }
.mp-stage:fullscreen { aspect-ratio: auto; }

/* قاب پس‌زمینه: صفحات سایت هنگام پخش داخل آن باز می‌شوند */
.mp-frame { position: fixed; inset: 0; width: 100%; height: 100%; border: 0; z-index: 1030; background: var(--page); }
.mp-frame[hidden] { display: none; }
body.mp-framed { overflow: hidden; }
html.in-media-frame body { padding-bottom: 76px; } /* جای نوار پلیر والد */
.tier-off { display: inline-block; margin-inline-end: 6px; padding: 1px 7px; border-radius: 999px; background: #fee2e2; color: #b91c1c; font-size: .72rem; font-weight: 800; }
body.dark-mode-active .tier-off { background: #3f1d1d; color: #fca5a5; }
.brand-filter .brand-logos { display: flex; flex: 0 0 auto; }
.brand-filter .brand-logos img + img { margin-inline-start: -10px; border: 2px solid var(--surface); }
.organizer-sheet .offcanvas-body { max-height: 70vh; overflow-y: auto; padding: 4px 16px 0; }
.org-row { display: flex; align-items: center; gap: 10px; padding: 8px 2px; border-bottom: 1px solid var(--line); cursor: pointer; }
.org-row img { border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.org-row .org-name { flex: 1; min-width: 0; font-weight: 700; font-size: .85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.org-row .form-check-input { flex: 0 0 auto; margin: 0; }
.org-actions { position: sticky; bottom: 0; display: flex; gap: 8px; padding: 10px 0; background: var(--surface); }
body.dark-mode-active .org-actions { background: #161f2c; }

/* پنجره اشتراک‌گذاری */
.share-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px 6px; }
.share-item { display: flex; flex-direction: column; align-items: center; gap: 6px; font-size: .7rem; color: var(--ink); text-decoration: none; text-align: center; }
.share-item[hidden] { display: none; }
.share-icon { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 20px; box-shadow: 0 4px 10px rgba(0,0,0,.12); }
.share-icon b { font-size: 20px; }
.share-item:active .share-icon { transform: scale(.94); }
body.dark-mode-active .share-item { color: #e5e7eb; }
.event-hero { position: relative; }
.event-hero .share-btn { width: 28px; height: 28px; padding: 0; display: grid; place-items: center;
    background: transparent; border: 0; box-shadow: none; color: #fff; font-size: 15px; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
.event-hero .share-btn:hover, .event-hero .share-btn:focus, .event-hero .share-btn:active { background: transparent; color: #fff; border: 0; opacity: .85; }

/* هیرو صفحه رویداد: بردکرامب تمام‌عرض و یک‌خطی (عنوان طولانی با … کوتاه می‌شود)، عنوان بلند کوچک‌تر */
.event-hero .crumbs ol { flex-wrap: nowrap; }
.event-hero .crumbs li { flex: 0 0 auto; }
.event-hero .crumbs li:last-child { flex: 1 1 auto; min-width: 0; }
.event-title { font-size: clamp(1.2rem, 5.2vw, 1.6rem); overflow-wrap: anywhere; }
.event-title.is-long { font-size: clamp(1.02rem, 4.2vw, 1.3rem); line-height: 1.5; }
@media (max-width: 400px) { .event-hero .poster-lg { width: 118px; } }

/* عکس‌های نظر */
.photo-row { display: flex; gap: 8px; }
.photo-row[data-count="0"] { display: none; }
.photo-tile { position: relative; flex: 1 1 0; min-width: 0; height: 200px; border-radius: 12px; overflow: hidden; background: var(--page); }
.photo-row[data-count="2"] .photo-tile { height: 160px; }
.photo-row[data-count="3"] .photo-tile { height: auto; aspect-ratio: 1; }
.photo-tile img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-remove { position: absolute; top: 6px; left: 6px; width: 28px; height: 28px; border-radius: 50%; border: 0; background: rgba(0,0,0,.55); color: #fff; font-size: 14px; display: grid; place-items: center; }
.photo-add { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 48px; margin: 8px 0 0; border: 2px dashed var(--line); border-radius: 12px;
    color: var(--muted); font-size: .8rem; cursor: pointer; background: transparent; }
.photo-add[hidden] { display: none; }
.photo-add i { font-size: 18px; color: var(--brand); }
.photo-row[data-count="0"] + .photo-add { height: 110px; margin-top: 0; flex-direction: column; gap: 4px; }
.photo-row[data-count="0"] + .photo-add i { font-size: 24px; }
.review-images { display: flex; gap: 6px; margin-top: 6px; }
.review-images a { width: 72px; aspect-ratio: 1; border-radius: 10px; overflow: hidden; flex: 0 0 auto; }
.review-images img { width: 100%; height: 100%; object-fit: cover; }
.lightbox-overlay { position: fixed; inset: 0; z-index: 3000; background: rgba(0,0,0,.9); display: grid; place-items: center; padding: 16px; }
.lightbox-overlay img { max-width: 100%; max-height: 90vh; border-radius: 8px; }
.lightbox-overlay button { position: absolute; top: 14px; left: 14px; width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(255,255,255,.15); color: #fff; font-size: 18px; }
.past-reviews-note { padding: 8px 10px; border-radius: 10px; background: var(--page); color: var(--muted); }
.rate-note.need-note textarea { border-color: #dc2626; box-shadow: 0 0 0 3px rgba(220,38,38,.15); animation: note-shake .3s; }
@keyframes note-shake { 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }
.drag-handle { flex: 0 0 auto; width: 26px; display: grid; place-items: center; color: var(--muted); cursor: grab; touch-action: none; user-select: none; }
.media-row.is-dragging { background: var(--page); border-radius: 10px; box-shadow: 0 6px 18px rgba(0,0,0,.12); opacity: .95; }
.media-row.is-dragging .drag-handle { cursor: grabbing; color: var(--brand); }
.media-preview video { width: 100%; max-height: 50vh; border-radius: 12px; background: #000; }
.media-preview audio { width: 100%; }
.drag-handle { align-self: stretch; min-height: 38px; }
.accordion-header.has-handle { display: flex; align-items: stretch; }
.accordion-header.has-handle > .row-head { flex: 1 1 auto; min-width: 0; }
.accordion-header.has-handle > .drag-handle { padding-inline: 6px; }
.accordion-item.is-dragging { box-shadow: 0 6px 18px rgba(0,0,0,.15); position: relative; z-index: 2; background: var(--surface); }
.sort-hint { font-size: .72rem; color: var(--muted); padding: 6px 10px; }
.builder-stage { height: 78vh; }
@media (max-width: 991px) { .builder-stage { height: 62vh; } }
.builder-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 24px; pointer-events: none; }
.builder-empty .btn { pointer-events: auto; }
.levelup-details { position: relative; background: color-mix(in srgb, var(--lc) 10%, transparent); border-radius: 12px; padding: 8px 12px; text-align: start; max-height: 30vh; overflow-y: auto; }
.level-perk { border-inline-start: 4px solid var(--lc); }
/* صفحه‌بندی: فاصله از بخش بعدی در همه صفحه‌ها */
.pager-nav { margin: 12px 0 20px; }
.pager-nav .pagination { margin-bottom: 0; }
.pager-nav .pagination { flex-wrap: nowrap; white-space: nowrap; }
.pager-nav .page-gap { display: flex; align-items: center; padding: 0 2px; color: var(--muted); }
.pager-nav .page-link { min-width: 36px; text-align: center; }
/* دکمه‌های صفحه‌بندی: توخالی و دورخط (ابعاد و گوشه قالب)؛ صفحه فعلی پر */
.pager-nav .pagination .page-item .page-link { background: transparent; border: 1px solid var(--brand); color: var(--brand); }
.pager-nav .pagination .page-item:not(.disabled):not(.active) .page-link:hover { background: color-mix(in srgb, var(--brand) 10%, transparent); }
.pager-nav .pagination .page-item.active .page-link { background: var(--brand); border-color: var(--brand); color: #fff; }
.pager-nav .pagination .page-item.disabled .page-link { border-color: var(--line); color: var(--muted); opacity: .7; }

/* مسیر پیشرفت سطح‌ها (باشگاه امتیاز) - سبک form-wizard قالب، اسکرول افقی */
.level-road { overflow-x: auto; overflow-y: hidden; padding: 30px 4px 18px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.road-track { display: flex; align-items: flex-start; width: max-content; padding: 0 8px; }
.road-node { width: 78px; flex: 0 0 78px; text-align: center; position: relative; }
.road-node .road-dot { width: 40px; height: 40px; border-radius: 50%; display: inline-grid; place-items: center; overflow: hidden;
    background: #e5e7eb; color: #9ca3af; font-size: 17px; position: relative; z-index: 1; transition: transform .2s; }
.road-node .road-dot img { width: 100%; height: 100%; object-fit: cover; }
.road-node b { display: block; font-size: 12px; margin-top: 6px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--muted, #6b7280); }
.road-node small { display: block; font-size: 10.5px; color: var(--muted, #9ca3af); white-space: nowrap; }
.road-node.start .road-dot { background: #64748b; color: #fff; width: 32px; height: 32px; font-size: 13px; margin-top: 4px; }
.road-node.done .road-dot { background: var(--lc, #64748b); color: #fff; }
.road-node.done b { color: var(--ink, #111); }
.road-node.current .road-dot { background: var(--lc); color: #fff; transform: scale(1.22); box-shadow: 0 0 0 4px color-mix(in srgb, var(--lc) 25%, transparent), 0 6px 16px color-mix(in srgb, var(--lc) 45%, transparent); }
.road-node.current b { color: var(--lc); font-weight: 900; margin-top: 10px; }
.road-node.current small { color: var(--lc); font-weight: 700; }
.road-node.next .road-dot { background: #fff; color: var(--lc); border: 2px dashed var(--lc); }
.road-node.next b { color: var(--ink, #111); }
.road-seg { flex: 0 0 64px; height: 6px; margin: 17px -20px 0; border-radius: 999px; background: #e5e7eb; position: relative; }
.road-seg > span { position: absolute; inset-block: 0; inset-inline-start: 0; border-radius: inherit; background: var(--lc); }
.road-you { position: absolute; bottom: 12px; transform: translateX(50%); font-style: normal; font-size: 10px; font-weight: 700; white-space: nowrap;
    background: var(--lc); color: #fff; padding: 1px 6px; border-radius: 999px; }
.road-you::after { content: ''; position: absolute; top: 100%; left: 50%; margin-left: -4px; border: 4px solid transparent; border-top-color: var(--lc); }
body.dark-mode-active .road-node .road-dot, body.dark-mode-active .road-seg { background: #1b283b; }

/* کروسل سطح‌های کسب‌شده (اسکرول اسلایدی با scroll-snap و نقطه‌ها) */
.earned-carousel { position: relative; }
.earned-track { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 2px; padding: 4px 2px 8px; direction: rtl; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.earned-track::-webkit-scrollbar { display: none; }
.earned-slide { flex: 0 0 72%; max-width: 260px; scroll-snap-align: start; background: var(--surface, #fff); border-radius: 18px; padding: 16px 14px;
    text-align: center; border: 1px solid var(--line, #e5e7eb); border-top: 4px solid var(--lc);
    background-image: linear-gradient(180deg, color-mix(in srgb, var(--lc) 12%, transparent), transparent 55%); }
.earned-icon { width: 58px; height: 58px; margin: 0 auto 8px; border-radius: 50%; display: grid; place-items: center; overflow: hidden;
    background: var(--lc); color: #fff; font-size: 24px; box-shadow: 0 6px 16px color-mix(in srgb, var(--lc) 40%, transparent); }
.earned-icon img { width: 100%; height: 100%; object-fit: cover; }
.earned-title { display: block; color: var(--lc); font-size: 1.05rem; font-weight: 900; }
.earned-perk { margin-top: 10px; padding: 8px 10px; border-radius: 12px; text-align: start; background: color-mix(in srgb, var(--lc) 9%, transparent); }
.earned-dots { display: flex; justify-content: center; gap: 6px; }
.earned-dots button { width: 7px; height: 7px; border-radius: 999px; border: 0; padding: 0; background: #d1d5db; transition: width .2s; }
.earned-dots button.active { width: 18px; background: var(--primary, #0785f2); }

/* تیکت پشتیبانی: گفت‌وگوی حبابی و پیوست‌ها */
.ticket-thread { display: flex; flex-direction: column; gap: 10px; }
.ticket-msg { max-width: 80%; align-self: flex-end; background: var(--surface, #fff); border: 1px solid var(--line, #e5e7eb); border-radius: 16px; border-top-left-radius: 4px; padding: 10px 12px; }
/* ثبت‌کننده تیکت همیشه سمت راست (در RTL: flex-start)، پاسخ‌دهنده سمت چپ */
.ticket-thread .ticket-msg.from-requester { align-self: flex-start; background: #e8f2fe; background: color-mix(in srgb, var(--brand, #0785f2) 10%, var(--surface, #fff)); border-color: #b9d8fb; border-radius: 16px; border-top-right-radius: 4px; }
[dir="ltr"] .ticket-thread .ticket-msg { align-self: flex-start; }
[dir="ltr"] .ticket-thread .ticket-msg.from-requester { align-self: flex-end; }
.ticket-msg.side-admin { border-left: 3px solid var(--brand, #0785f2); }
.ticket-msg-meta { font-size: .72rem; color: var(--muted, #6b7280); margin-bottom: 4px; }
.ticket-msg-body { font-size: .9rem; line-height: 1.9; white-space: normal; overflow-wrap: anywhere; }
.ticket-files { display: flex; gap: 6px; margin-top: 8px; }
.ticket-files a { flex: 1 1 0; min-width: 0; height: 150px; border-radius: 10px; overflow: hidden; display: block; background: var(--page); }
.ticket-files[data-count="3"] a { height: auto; aspect-ratio: 1; }
.ticket-files img { width: 100%; height: 100%; object-fit: cover; display: block; }
.kind-pick { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.kind-pick label { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 8px; border: 2px solid var(--line, #e5e7eb); border-radius: 14px; cursor: pointer; text-align: center; font-size: .85rem; }
.kind-pick label i { font-size: 22px; color: var(--brand, #0785f2); }
.kind-pick input:checked + label { border-color: var(--brand, #0785f2); background: color-mix(in srgb, var(--brand, #0785f2) 8%, transparent); }
.avatar-circle.xs { width: 22px; height: 22px; font-size: 10px; object-fit: cover; }
.ticket-admin-icon { background: var(--brand, #0785f2); color: #fff; font-size: 11px; }
img.avatar-circle { object-fit: cover; }
.ticket-list .ticket-face { width: 36px; height: 36px; }
.level-pick { display: flex; flex-wrap: wrap; gap: 6px; }
.level-pick label { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 2px solid var(--line, #e5e7eb); border-radius: 999px; cursor: pointer; }
.level-pick input:checked + label { border-color: var(--lc); background: color-mix(in srgb, var(--lc) 10%, transparent); }

/* تب‌ها (nav-pills / nav-tabs) همه جا تک‌خطی با اسکرول افقی؛ عنوان تب دو خطی نمی‌شود */
.nav-pills, .nav-tabs { flex-wrap: nowrap !important; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 2px; }
.nav-pills::-webkit-scrollbar, .nav-tabs::-webkit-scrollbar { display: none; }
.nav-pills .nav-item, .nav-tabs .nav-item { flex: 0 0 auto; }
.nav-pills .nav-link, .nav-tabs .nav-link { white-space: nowrap; }

/* بازخورد: گزینه‌های تک‌انتخابی/چندانتخابی به شکل ردیف‌های قابل لمس */
.feedback-options { display: grid; gap: 6px; }
.feedback-option { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line, #e5e7eb); border-radius: 12px; cursor: pointer; font-size: .88rem; background: var(--surface, #fff); }
.feedback-option .form-check-input { margin: 0; flex: 0 0 auto; }
.feedback-option:has(input:checked) { border-color: var(--brand, #0785f2); background: color-mix(in srgb, var(--brand, #0785f2) 7%, var(--surface, #fff)); }
.feedback-option i { color: var(--brand, #0785f2); width: 18px; text-align: center; }
.feedback-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.feedback-chips .feedback-option { padding: 7px 12px; border-radius: 999px; }
.feedback-yesno { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.feedback-yesno .feedback-option { justify-content: center; }
.profile-feedback-btn { width: 38px; height: 38px; padding: 0; display: inline-grid; place-items: center; border-radius: 50%; }
.feedback-bars { display: grid; gap: 8px; }

/* رسانه‌های رویداد زیر پوستر (هیرو) + کروسل پنجره‌ای */
.poster-open { padding: 0; border: 0; background: none; display: block; cursor: zoom-in; }
.hero-media { display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); border-radius: 10px; padding: 5px 8px; backdrop-filter: blur(6px); }
.hero-media-head { color: #fff; font-size: .7rem; font-weight: 600; display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.hero-media-head span { background: rgba(255,255,255,.2); border-radius: 999px; padding: 0 6px; font-size: .65rem; }
.hero-media-strip { display: flex; gap: 5px; margin-inline-start: auto; }
.hero-media-item { position: relative; width: 38px; height: 38px; flex: 0 0 auto; padding: 0; border: 0; border-radius: 7px; overflow: hidden; background: rgba(0,0,0,.25); }
.hero-media-item img, .gallery-manage-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-media-more { position: absolute; inset: 0; background: rgba(0,0,0,.55); color: #fff; font-weight: 700; font-size: .72rem; display: flex; align-items: center; justify-content: center; }
.gallery-play { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%, -50%); font-size: 24px; color: #fff; text-shadow: 0 2px 8px rgba(0,0,0,.45); pointer-events: none; }
.hero-media-item .gallery-play { font-size: 14px; }
.gallery-video-ph { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; color: rgba(255,255,255,.8); font-size: 14px; }
.gallery-modal .modal-content { background: #000; color: #fff; border: 0; overflow: hidden; }
@media (min-width: 576px) { .gallery-modal .modal-content { border-radius: 16px; } }
.gallery-top { display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 6px 4px; }
.gallery-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; flex: 1; }
.gallery-track::-webkit-scrollbar { display: none; }
.gallery-slide { flex: 0 0 100%; scroll-snap-align: start; display: flex; align-items: center; justify-content: center; min-height: 60vh; }
.gallery-slide img, .gallery-slide video { max-width: 100%; max-height: 75vh; object-fit: contain; }
@media (max-width: 575.98px) { .gallery-slide img, .gallery-slide video { max-height: calc(100vh - 120px); } }
.gallery-nav { display: flex; align-items: center; justify-content: space-between; padding: 4px 8px 10px; }
.gallery-step { background: none; border: 0; color: #fff; font-size: 18px; padding: 8px 14px; }
.gallery-dots { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.gallery-dots span { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.35); transition: all .2s; }
.gallery-dots span.active { background: #fff; width: 18px; border-radius: 4px; }
.gallery-manage { display: flex; flex-wrap: wrap; gap: 8px; }
.gallery-manage-item { position: relative; width: 84px; height: 84px; border-radius: 10px; overflow: hidden; background: #e9edf3; cursor: pointer; margin: 0; }
.gallery-manage-item .form-check-input { position: absolute; top: 6px; right: 6px; margin: 0; }
.gallery-manage-item:has(input:checked) { outline: 3px solid #e53935; opacity: .6; }

/* کد پیامکی: هر رقم یک خانه */
.otp-input { display: flex; justify-content: center; gap: 8px; direction: ltr; }
.otp-box { width: 48px; height: 56px; text-align: center; font-size: 1.5rem; font-weight: 700; border: 1.5px solid #d6dce5; border-radius: 12px; background: #fff; color: #1f2937; caret-color: var(--bs-primary, #0785f2); outline: none; transition: border-color .15s, box-shadow .15s; padding: 0; }
.otp-box:focus { border-color: var(--bs-primary, #0785f2); box-shadow: 0 0 0 3px rgba(7,133,242,.15); }
.otp-input.is-complete .otp-box { border-color: #22a06b; }
.is-invalid ~ .otp-input .otp-box, .otp-input.is-invalid .otp-box { border-color: #e53935; }
@media (max-width: 360px) { .otp-box { width: 42px; height: 50px; font-size: 1.3rem; } .otp-input { gap: 6px; } }

/* پیشرفت ارسال فرم روی خود دکمه: پس‌زمینه دکمه به‌تدریج پر می‌شود */
.btn-progress { position: relative; overflow: hidden; pointer-events: none; background-image: linear-gradient(to left, rgba(255,255,255,.28) calc(var(--p, 0) * 100%), transparent 0) !important; }
.btn-progress::after { content: attr(data-pct); margin-inline-start: 6px; font-size: .8em; opacity: .9; }

/* آپلود فوری: کم‌رنگ → پررنگ + حلقه کوچک پیشرفت گوشه فایل؛ در پایان تیک سبز */
.photo-tile video { width: 100%; height: 100%; object-fit: cover; display: block; }
.up-host { position: relative; }
.up-host.is-uploading > img, .up-host.is-uploading > video, .up-host.is-uploading .crop-preview, .up-host.is-uploading .avatar-circle img { opacity: calc(.3 + .7 * var(--p, 0)); filter: saturate(calc(.4 + .6 * var(--p, 0))); transition: opacity .2s linear; }
.up-ring { position: absolute; bottom: 4px; right: 4px; width: 20px; height: 20px; border-radius: 50%; background: rgba(0,0,0,.45); display: grid; place-items: center; pointer-events: none; transition: background .25s, transform .25s; z-index: 2; }
.up-ring svg { position: absolute; inset: 1.5px; width: calc(100% - 3px); height: calc(100% - 3px); transform: rotate(-90deg); }
.up-ring circle { fill: none; stroke-width: 3.6; }
.up-ring-bg { stroke: rgba(255,255,255,.3); }
.up-ring-fg { stroke: #fff; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: calc(100 - var(--p, 0) * 100); transition: stroke-dashoffset .2s linear; }
.up-ring i { font-size: 9px; color: #fff; opacity: 0; transform: scale(.4); transition: opacity .25s, transform .25s; }
.up-ring .up-fail { position: absolute; }
.up-host.is-done .up-ring { background: #22a06b; }
.up-host.is-done .up-ring svg { opacity: 0; transition: opacity .2s; }
.up-host.is-done .up-ok { opacity: 1; transform: scale(1); }
.up-host.is-failed .up-ring { background: #e53935; }
.up-host.is-failed .up-ring svg { opacity: 0; }
.up-host.is-failed .up-fail { opacity: 1; transform: scale(1); }
.up-host.is-failed > img, .up-host.is-failed > video { opacity: .35; filter: grayscale(1); }
/* تراشه فایل تکی (پوستر، لوگو، مدرک): بندانگشتی + نام کوتاه‌شده + حلقه در انتها */
.upload-chip { display: flex; align-items: center; gap: 8px; max-width: 100%; margin-top: 6px; padding: 4px 8px 4px 32px; border: 1px solid var(--line); border-radius: 10px; background: #fff; font-size: .8rem; }
.upload-chip .uc-thumb { width: 28px; height: 28px; flex: 0 0 28px; border-radius: 6px; object-fit: cover; display: grid; place-items: center; background: var(--page, #f3f4f6); color: #6b7280; }
.upload-chip .uc-name { min-width: 0; flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: ltr; text-align: right; }
.upload-chip .up-ring { top: 50%; bottom: auto; right: auto; left: 6px; margin-top: -10px; }
.upload-chip { cursor: pointer; }
.upload-chip.is-uploading .uc-thumb { opacity: calc(.3 + .7 * var(--p, 0)); }
.crop-preview-wrap { position: relative; display: inline-block; max-width: 100%; }
/* گالری پنل: شبکه مربعی */
.photo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.photo-grid:empty { display: none; }
.photo-grid .photo-tile { height: auto; aspect-ratio: 1; }
.gallery-picker .photo-grid:not(:empty) + .photo-add { margin-top: 8px; }
/* ردیف آپلود رسانه: یک خط (نام کوتاه‌شده، وضعیت بدون شکستن) */
.upload-row > .d-flex { gap: 8px; align-items: baseline; }
.upload-row > .d-flex > b { min-width: 0; flex: 1 1 auto; }
.upload-row > .d-flex > small { flex: 0 0 auto; }
.upload-row:not(.is-error) > .d-flex > small { white-space: nowrap; }
.upload-row.is-error > .d-flex { flex-wrap: wrap; }
/* عکس پروفایل به‌جای آیکن در ردیف‌های فهرست کاربران (x-row-item avatar) */
.row-list .row-head .row-avatar { width: 36px; height: 36px; font-size: 15px; }
/* نوار فیلتر فهرست کاربران (x-filter-bar): چیپ‌ها با اسکرول افقی، انتخاب در پنجره */
.filter-bar { margin-bottom: 12px; }
.filter-chip b { font-weight: 700; max-width: 140px; overflow: hidden; text-overflow: ellipsis; }
.filter-clear { color: var(--danger, #dc3545); border-color: currentColor; }
.filter-dialog .modal-body { text-align: start; max-height: 60vh; overflow-y: auto; }
.filter-options .item { display: flex; align-items: center; gap: 8px; padding: 10px 4px; color: var(--ink); text-decoration: none; border-radius: 10px; }
.filter-options .item .in { flex: 1 1 auto; }
.filter-options .item.active { font-weight: 700; color: var(--brand); }
/* دکمه «جزئیات» سمت چپ ردیف‌های فهرست کاربران (کل ردیف قابل کلیک است) */
.row-list .row-details-btn { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid var(--brand); border-radius: 999px;
    color: var(--brand); font-size: .8rem; font-weight: 700; white-space: nowrap; pointer-events: none; }
.row-list .row-details-btn i { font-size: .7rem; }
.row-list .row-details-btn::before, .row-list .row-details-btn::after { display: none !important; content: none !important; }
/* زیرنویس اسلاید کروسل (عکس‌های نظرها در رسانه‌های رویداد) */
.gallery-slide { position: relative; }
.gallery-caption { position: absolute; bottom: 8px; inset-inline-start: 8px; background: rgba(0,0,0,.55); color: #fff; font-size: 12px; padding: 3px 10px; border-radius: 999px; }
/* عوامل صفحه رویداد (مثل کارت برگزارکننده): دوتا کنار هم؛ تک‌نفر یا نفر آخرِ تعداد فرد تمام‌عرض */
.cast-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.cast-card { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 12px 8px; border: 1px solid var(--line); border-radius: 14px; text-align: center; min-width: 0; }
.cast-card .cast-link { display: flex; flex-direction: column; align-items: center; gap: 6px; color: inherit; text-decoration: none; min-width: 0; width: 100%; }
.cast-card .cast-text { min-width: 0; width: 100%; }
.cast-card.is-wide { grid-column: 1 / -1; flex-direction: row; text-align: start; padding: 12px; }
.cast-card.is-wide .cast-link { flex-direction: row; gap: 8px; flex: 1 1 auto; }
.cast-stats { display: block; }
.cast-stats > span { display: block; }

.cast-card.is-wide .cast-stats > span { display: inline; }
.cast-card.is-wide .cast-stats > span + span::before { content: '، '; }
/* اوپن‌لایرز در صفحه راست‌به‌چپ جای پنجره‌های روی نقشه را اشتباه حساب می‌کند: داخل نقشه چپ‌به‌راست، متن پنجره راست‌به‌چپ */
.ol-viewport { direction: ltr; }
.ol-viewport .bmap-popup { direction: rtl; }
/* سوییچ «فقط رویدادهای فعال» بالای فهرست رویدادها */
.active-switch-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); min-width: 0; }
.active-switch-row .active-switch { display: flex; align-items: center; gap: 10px; margin-inline-start: auto; min-width: 0; }
.active-switch-row .active-switch > label { font-size: .88rem; font-weight: 700; cursor: pointer; white-space: nowrap; margin: 0; }
.active-switch-row.is-loading { opacity: .6; pointer-events: none; }
/* کارت رویداد برگزارشده: کم‌رنگ با برچسب «برگزار شد» */
.event-card.is-past .poster img { filter: grayscale(.55); opacity: .85; }
.event-card.is-past .price { color: var(--muted); }
.rel-day.is-held { background: color-mix(in srgb, var(--muted) 15%, transparent); color: var(--muted); }
/* «برگزارکننده شوید»: مراحل زیر هم با نوار پیشرفت (step-road بر پایه level-road) */
.apply-hero { display: flex; gap: 12px; align-items: center; padding: 14px; border-radius: 16px; background: linear-gradient(135deg, color-mix(in srgb, var(--brand) 12%, var(--surface)), var(--surface)); border: 1px solid var(--line); }
.apply-hero-icon { flex: 0 0 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: var(--brand); color: #fff; font-size: 22px; }
.step-road .road-node { text-decoration: none; color: inherit; }
.step-road .road-node.next .road-dot { background: var(--surface); color: var(--brand); border-color: var(--brand); }
.apply-step { border: 1px solid var(--line); border-radius: 16px; background: var(--surface); margin-bottom: 12px; scroll-margin-top: 70px; }
.apply-step.is-locked { opacity: .55; }
.apply-step.is-open { border-color: var(--brand); box-shadow: 0 6px 20px color-mix(in srgb, var(--brand) 12%, transparent); }
.apply-step-head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
.apply-step-num { flex: 0 0 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; font-size: 13px; background: color-mix(in srgb, var(--muted) 15%, transparent); color: var(--muted); }
.apply-step.is-open .apply-step-num { background: var(--brand); color: #fff; }
.apply-step.is-done .apply-step-num { background: #16a34a; color: #fff; }
.apply-edit { margin-inline-start: auto; font-size: .82rem; font-weight: 700; }
.apply-step-body { padding: 0 14px 14px; }
.apply-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 0 14px 12px; font-size: .85rem; color: var(--muted); }
.apply-step-body .apply-summary { padding: 8px 10px; border-radius: 10px; background: color-mix(in srgb, var(--muted) 8%, transparent); }
.apply-summary-logo { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; }
.verify-label { display: flex !important; align-items: center; justify-content: space-between; gap: 6px; }
.verify-tick { color: #16a34a; font-size: .78rem; font-weight: 700; display: inline-flex; align-items: center; gap: 4px; }
.chip-checks { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-checks .chip { cursor: pointer; user-select: none; }
.chip-checks .chip input { position: absolute; opacity: 0; pointer-events: none; }
.chip-checks .chip:has(input:checked) { background: var(--brand); border-color: var(--brand); color: #fff; }
.chip-checks .chip:has(input:focus-visible) { outline: 2px solid var(--brand); outline-offset: 2px; }

.apply-plans { display: grid; gap: 8px; }
.apply-plan { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; cursor: pointer; }
.apply-plan:has(input:checked) { border-color: var(--brand); background: color-mix(in srgb, var(--brand) 6%, transparent); }
.apply-plan input { margin-top: 4px; }
.apply-plan-body { flex: 1 1 auto; min-width: 0; }
.apply-contract { max-height: 50vh; overflow-y: auto; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--muted) 5%, transparent); font-size: .9rem; }

/* ویزارد برگزارکننده: کارت برند قابل ویرایش (بنر و لوگو با دکمه آپلود روی کارت) */
.apply-brand-card { overflow: hidden; }
.apply-cover { position: relative; aspect-ratio: 3 / 1; background: linear-gradient(135deg, var(--brand), #7c3aed); }
.apply-cover .crop-preview { width: 100%; height: 100%; object-fit: cover; display: block; }
.apply-cover .crop-preview.is-empty { opacity: 0; }
.apply-cover-btn { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%, -50%); background: rgba(0, 0, 0, .55); color: #fff !important; border: 1px solid rgba(255, 255, 255, .6); border-radius: 999px; padding: 6px 16px; backdrop-filter: blur(4px); white-space: nowrap; }
.apply-cover-btn:hover { background: rgba(0, 0, 0, .7); }
.apply-logo { position: relative; width: 96px; margin: -48px auto 0; z-index: 2; }
.apply-logo .profile-avatar { display: block; background: #eef0f4; }
.apply-logo-empty { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1.8rem; color: #b6bcc8; z-index: 2; pointer-events: none; }
.apply-logo .profile-avatar:not(.is-empty) + .apply-logo-empty { display: none; }
.apply-logo-btn { z-index: 3; position: absolute; bottom: 2px; inset-inline-start: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--brand); color: #fff; display: grid; place-items: center; border: 3px solid var(--surface); cursor: pointer; font-size: .8rem; }
.apply-logo .up-ring { right: auto; left: 4px; z-index: 4; }
.apply-cover .up-ring { z-index: 3; right: auto; left: 8px; bottom: 8px; } /* حلقه پیشرفت و تیک آپلود سمت چپ */
.apply-brand-card .profile-body { padding-top: 0; }
.apply-brand-card .form-group.basic { margin-bottom: 0; }

/* انتخاب چندتایی با جستجو */
.multi-select { position: relative; }
.ms-box { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 44px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); cursor: text; }
.multi-select.open .ms-box { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 15%, transparent); }
.ms-chips { display: contents; }
.ms-chip { display: inline-flex; align-items: center; gap: 6px; border: 0; border-radius: 999px; padding: 3px 10px; background: color-mix(in srgb, var(--brand) 12%, transparent); color: var(--brand); font-size: .82rem; font-weight: 700; }
.ms-chip i { font-size: .7rem; opacity: .7; }
.ms-search { flex: 1; min-width: 120px; border: 0; outline: 0; background: transparent; font-size: .9rem; padding: 4px 0; color: inherit; }
.ms-list { display: none; position: absolute; inset-inline: 0; top: calc(100% + 4px); max-height: 240px; overflow-y: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 10px 30px rgba(0, 0, 0, .12); z-index: 20; padding: 4px; }
.multi-select.open .ms-list { display: block; }
.ms-option { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 8px; cursor: pointer; margin: 0; }
.ms-option:hover { background: color-mix(in srgb, var(--brand) 6%, transparent); }
.ms-option input { position: absolute; opacity: 0; pointer-events: none; }
.ms-option span { flex: 1; }
.ms-option i { color: var(--brand); visibility: hidden; }
.ms-option:has(input:checked) { font-weight: 700; }
.ms-option:has(input:checked) i { visibility: visible; }
.ms-option[hidden] { display: none; }
.ms-empty { padding: 10px; color: var(--muted); font-size: .85rem; }
.apply-contacts { background: transparent; }
.apply-contacts .item { padding-inline: 0 !important; align-items: center; }
.apply-contacts .icon-box { color: #fff; flex: 0 0 36px; width: 36px; height: 36px; font-size: 1rem; border-radius: 10px; }
.apply-contacts .icon-box b { font-size: .95rem; }
.apply-contacts .form-group.basic { padding: 4px 0; }

/* نام کاربری برند (آدرس صفحه): پیشوند آدرس + وضعیت آزاد بودن */
.username-field { display: flex; align-items: center; direction: ltr; gap: 4px; }
.username-prefix { color: var(--muted); font-size: .8rem; white-space: nowrap; max-width: 55%; overflow: hidden; text-overflow: ellipsis; direction: ltr; }
.username-field .form-control { flex: 1; min-width: 0; text-align: left; padding-left: 0 !important; }
.username-state { width: 20px; flex: 0 0 20px; text-align: center; }
[data-username-check][data-state="ok"] .username-state, [data-username-check][data-state="ok"] [data-username-msg] { color: #16a34a; }
[data-username-check][data-state="bad"] .username-state, [data-username-check][data-state="bad"] [data-username-msg] { color: #dc2626; }

/* ارسال دوباره کد ورود: متن زیرخط‌دار (نه دکمه) */
.resend-link { background: none; border: 0; padding: 4px; font: inherit; font-size: .88rem; color: var(--brand); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.resend-link:disabled { color: var(--muted); text-decoration: none; cursor: default; }
.image-listview .item .in .text-wrap, .image-listview .item .in .text-wrap * { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; }

/* تنظیمات اطلاعیه‌ها: کلید هر اطلاعیه و کانال‌ها به‌صورت آکاردئونی */
.np-card { padding: 0; overflow: hidden; }
.np-item + .np-item { border-top: 1px solid var(--line); }
.np-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }
.np-label { flex: 1; margin: 0; font-size: .92rem; font-weight: 600; cursor: pointer; }
.np-channels { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .25s ease; }
.np-channels-inner { overflow: hidden; padding: 0 14px; }
.np-item:has(.np-switch:checked) .np-channels { grid-template-rows: 1fr; }
.np-item:has(.np-switch:checked) .np-channels-inner { padding-bottom: 12px; }
.np-channels .chip i { font-size: .8rem; }
.np-unreachable { opacity: .65; }
.np-warn { color: #d97706; }
.np-reach { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; line-height: 2; }
.np-save { position: sticky; bottom: calc(var(--bottom-nav-h) + 8px + env(safe-area-inset-bottom)); z-index: 5; padding-top: 4px; }
body.no-bottom-nav .np-save { bottom: 8px; }

/* تسویه خودکار در پنل مالی: فیلدها فقط وقتی روشن است؛ روز هفته/ماه بر اساس نوع */
.auto-payout:has(input[name="auto_payout"][value=""]:checked) .ap-fields { display: none; }
.auto-payout .ap-when { display: none; }
.auto-payout:has(input[value="weekly"]:checked) .ap-weekly,
.auto-payout:has(input[value="monthly"]:checked) .ap-monthly { display: block; }

/* پیام به مشتریان: قدم‌های فرم و خلاصه چسبان */
.campaign-step { font-weight: 700; margin-bottom: .6rem; display: flex; align-items: center; gap: .5rem; }
.campaign-step > span:first-child { width: 24px; height: 24px; border-radius: 50%; background: var(--brand); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: .8rem; flex-shrink: 0; }
@media (min-width: 992px) { .campaign-summary { position: sticky; top: 72px; } }
.campaign-pending { background: rgba(255, 193, 7, .08); border-radius: 8px; padding-inline: .5rem; }
.campaign-progress { border-radius: 6px; overflow: hidden; }
.campaign-progress .progress-bar { font-size: 9px; }
.campaign-progress-label { width: 9.5rem; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 575px) { .campaign-progress-label { width: 6.5rem; } }
.campaign-progress .bar-missing { background: #f3c2c6; color: #9b1c2a; }
.campaign-progress-toggle { cursor: pointer; }
.campaign-progress-toggle[aria-expanded="true"] .fa-chevron-down { transform: rotate(180deg); }
/* مورد انتخاب‌شده در نتایج جستجوی x-user-picker: دوباره انتخاب نمی‌شود */
.up-results button.up-picked { opacity: .55; cursor: default; }
.up-results button.up-picked:hover { background: transparent; }
.up-results .up-check { margin-inline-start: auto; color: var(--brand, #0785F2); }

/* سابقه ارسال پیام‌ها: کارت هر پیام */
.campaign-card .card-body { padding: 14px 16px; }
.campaign-card.is-pending { border-inline-start: 3px solid var(--bs-warning, #ffc107); }
.campaign-title { font-size: 1rem; font-weight: 700; margin: 2px 0 0; line-height: 1.6; }
.campaign-title a { color: inherit; }
.campaign-message { margin-top: 8px; padding: 10px 12px; border-radius: 10px; background: #f4f6fa; font-size: .875rem; white-space: pre-line;
    display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.campaign-facts { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; font-size: .8rem; color: var(--muted, #8a8f98); }
.campaign-facts i { margin-inline-end: 3px; }
.campaign-channels i { margin-inline-end: 6px; font-size: .95rem; color: var(--brand, #0785F2); }
.campaign-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; padding-top: 10px; border-top: 1px solid rgba(0, 0, 0, .06); }
body.dark-mode-active .campaign-message { background: #1f2533; }
body.dark-mode-active .campaign-actions { border-top-color: rgba(255, 255, 255, .08); }
.campaign-message.is-full { -webkit-line-clamp: unset; display: block; }
.campaign-recipient { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid rgba(0, 0, 0, .06); font-size: .875rem; }
.campaign-recipient:last-of-type { border-bottom: 0; }
.campaign-recipient-icon { width: 30px; height: 30px; border-radius: 50%; display: inline-grid; place-items: center; background: #eef4fd; color: var(--brand, #0785F2); flex-shrink: 0; }
body.dark-mode-active .campaign-recipient { border-bottom-color: rgba(255, 255, 255, .08); }
body.dark-mode-active .campaign-recipient-icon { background: #1f2533; }

/* خرید کل دوره در صفحه رویداد */
.bundle-card { border: 1px solid rgba(7, 133, 242, .25); }
.bundle-price { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.bundle-sessions { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 2px; scroll-snap-type: x proximity; }
.bundle-sessions::-webkit-scrollbar { display: none; }
.bundle-session { flex: 0 0 auto; display: flex; flex-direction: column; gap: 1px; padding: 6px 12px; border-radius: 10px; background: var(--brand-soft, #eef5ff); font-size: .75rem; color: var(--text-muted, #6b7280); white-space: nowrap; scroll-snap-align: start; }
.bundle-session b { color: var(--brand, #0785f2); font-size: .78rem; }
/* دوره «فقط خرید کامل»: سانس‌ها بدون دکمه خرید */
.bundle-info-only .session-row form, .bundle-info-only .session-row .btn { display: none !important; }

/* قوانین خرید رویداد: آکاردئون دسته‌ها */
.rules-accordion .accordion-button { font-size: .9rem; padding-block: .7rem; gap: 4px; }
.rules-accordion .rules-summary { font-weight: 400; color: var(--brand, #0785F2); background: rgba(7, 133, 242, .08); border-radius: 999px; padding: 1px 8px; margin-inline-end: 8px; white-space: nowrap; }
.rules-accordion .accordion-body { padding: .75rem .9rem; }

/* قالب (چپ‌چین): دکمه آکاردئون متن چپ‌چین و فلش سمت راست دارد؛ در سایت راست‌چین متن از راست و فلش سمت چپ */
.accordion .accordion-header .accordion-button { text-align: start !important; padding-inline: 16px 44px; }
.accordion .accordion-header .accordion-button::after { right: auto; inset-inline-end: 12px; }
.accordion .accordion-header .accordion-button::before { left: 0; right: 16px; }
.rules-accordion .accordion-button { padding-inline: 12px 40px; }

/* لغو بلیت: مقصد بازپرداخت (کارت / کیف پول) و کارمزد متحرک؛ کارمزد صفر محو و «رایگان!» نمایش داده می‌شود */
.refund-box { padding: 12px; border: 1px solid var(--line, #e5e7eb); border-radius: 14px; background: var(--surface, #fff); }
.refund-toggle label { display: flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap; }
.refund-fee { position: relative; display: inline-grid; justify-items: end; }
.refund-fee > b { grid-area: 1 / 1; transition: opacity .35s ease, transform .35s ease; }
.refund-fee-free { opacity: 0; transform: scale(.7); }
.refund-box.is-free .refund-fee-num { opacity: 0; transform: translateY(-6px); }
.refund-box.is-free .refund-fee-free { opacity: 1; transform: scale(1); }
.refund-card-field { padding-top: 6px; }

/* رسید واریز تسویه در پنل مالی برگزارکننده */
.payout-receipt { padding: 8px 10px; border-radius: 10px; background: var(--brand-soft, #eef5ff); line-height: 1.9; }
.payout-receipt i { color: var(--brand, #0785f2); }

/* فرم پلن مدیر: امکانات به تفکیک گروه */
.plan-feature-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px 16px; padding: 10px; border: 1px solid var(--line, #e5e7eb); border-radius: 12px; }
.plan-feature-group .form-check { margin-bottom: 2px; }

/* صفحه پلن و کمیسیون: پلن‌ها در آکاردئون با آیکن امکانات و انتخاب دوره */
.plan-accordion .accordion-button { gap: 10px; align-items: center; }
.plan-accordion .plan-icon { flex: 0 0 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: var(--brand-soft, #eef5ff); color: var(--brand, #0785f2); font-size: 1.05rem; }
.plan-accordion .plan-offered .plan-icon { background: #fff4d6; color: #c98a00; }
.plan-accordion .plan-current { border-color: rgba(22, 163, 74, .45); }
.plan-features { display: flex; flex-wrap: wrap; gap: 6px; }
.plan-feature { display: inline-flex; align-items: center; gap: 5px; font-size: .75rem; padding: 4px 9px; border-radius: 999px; background: var(--brand-soft, #eef5ff); color: var(--text, #1f2937); }
.plan-feature i { color: var(--brand, #0785f2); }
.plan-feature.off { background: transparent; border: 1px dashed var(--line, #e5e7eb); color: var(--text-muted, #9ca3af); text-decoration: line-through; }
.plan-feature.off i { color: inherit; }
.plan-limits { display: flex; flex-wrap: wrap; gap: 4px 14px; color: var(--text-muted, #6b7280); }
.plan-limits i { color: var(--brand, #0785f2); width: 14px; text-align: center; }
.plan-periods { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; }
.plan-periods label { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border: 1.5px solid var(--line, #e5e7eb); border-radius: 12px; cursor: pointer; font-size: .8rem; text-align: center; }
.plan-periods .btn-check:checked + label { border-color: var(--brand, #0785f2); background: var(--brand-soft, #eef5ff); }
.plan-periods label b { font-size: .85rem; }

/* نظرات من: امتیاز و متن نظر هر کدام سطر جدا */
.my-review-stars { display: flex; align-items: center; gap: 6px; margin-top: 2px; font-size: 1rem; }
.my-review-body { margin: 10px 0 0; padding: 10px 12px; border-radius: 12px; background: var(--surface-2, #f6f7f9); font-size: .9rem; line-height: 1.9; white-space: pre-line; }
body.dark-mode-active .my-review-body { background: #1c2230; }
.my-review-part { margin-top: 8px; padding-inline-start: 10px; border-inline-start: 2px solid var(--line, #e5e7eb); }
.np-reach-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.np-reach-list li { display: flex; align-items: center; gap: 8px; line-height: 1.5; }
.np-reach-list li .np-reach-text { flex: 1 1 auto; min-width: 0; }
.np-reach-list li .btn { flex: 0 0 auto; white-space: nowrap; }
.np-reach-list i { width: 16px; text-align: center; color: var(--brand, #0785f2); }

/* داشبورد تحلیلی: کارت رویداد انتخابی */
.analytics-scope { border-color: rgba(7, 133, 242, .3); background: var(--brand-soft, #eef5ff); }
.analytics-scope .card-body { padding: 10px 12px; }
.analytics-scope-poster { width: 36px; aspect-ratio: 9/16; object-fit: cover; border-radius: 8px; flex: 0 0 auto; }
.avatar-zoom { display: inline-block; cursor: zoom-in; border-radius: 50%; }
/* سطح وفاداری: دکمه «آپلود آیکن اختصاصی» کنار آیکن‌های آماده */
.level-icon-upload { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; border: 1.5px dashed var(--line, #d1d5db); background: transparent; color: var(--text-muted, #6b7280); }
.level-icon-upload.active, .level-icon-upload[aria-expanded="true"] { border-style: solid; border-color: var(--brand); background: var(--brand-soft, #e7f1ff); color: var(--brand); }
/* نظرات مخاطبان (پنل): فیلترها */
.review-filters .chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.review-filters .chips::-webkit-scrollbar { display: none; }
.review-star-chips .chip .stars { font-size: .85em; }

/* بازخورد کاربران (آکاردئون پاسخ‌ها): گزینه‌ها برچسب با اسکرول افقی، متن‌ها شکسته در عرض صفحه */
#brand-feedback-list .accordion-body { overflow: hidden; }
.fb-chips { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding: 2px 0; max-width: 100%; -webkit-overflow-scrolling: touch; }
.fb-chips::-webkit-scrollbar { display: none; }
.fb-chip { flex: 0 0 auto; white-space: nowrap; padding: 3px 10px; border-radius: 999px; background: var(--brand-soft, #eef5ff); color: var(--brand, #0785f2); font-size: 12px; }
/* قاعده عمومی «آخرین ستون ردیف تک‌خطی» (.simple-listview li > :last-child) متن‌های بلند را بیرون می‌زد؛ ردیف‌های چندخطی و متن آزاد می‌شکنند */
.simple-listview li.flex-column > :last-child, .simple-listview li.d-block > :last-child, .simple-listview li > .fb-text { white-space: normal; }
.fb-text, .simple-listview li.d-block > div { overflow-wrap: anywhere; min-width: 0; max-width: 100%; }

/* صفحه پلن اشتراک: کارت وضعیت، نرخ کمیسیون در سرتیتر پلن، خلاصه امکانات و میزان استفاده */
.plan-status .plan-icon, .plan-accordion .plan-icon { flex: 0 0 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: var(--brand-soft, #eef5ff); color: var(--brand, #0785f2); font-size: 1.1rem; }
.plan-status-meta { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line, #e5e7eb); color: var(--text-muted, #6b7280); }
.plan-status-meta i { color: var(--brand, #0785f2); }
.plan-rate { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; line-height: 1.1; margin-inline-end: 6px; }
.plan-rate b { font-size: 1.05rem; color: var(--brand, #0785f2); }
.plan-rate small { font-size: .65rem; color: var(--text-muted, #9ca3af); font-weight: normal; }
.plan-summary { list-style: none; padding: 10px 12px; margin: 0; background: var(--bs-light, #f8f9fa); border-radius: 12px; display: grid; gap: 6px; }
.plan-summary li { display: flex; gap: 8px; align-items: flex-start; }
.plan-summary li > i { margin-top: 3px; width: 14px; text-align: center; }
.plan-tip { display: flex; gap: 8px; align-items: flex-start; padding: 8px 12px; border-radius: 12px; background: var(--bs-light, #f8f9fa); color: var(--text-muted, #6b7280); }
.plan-tip i { margin-top: 3px; color: #c98a00; }
.plan-tip.is-suggested { background: #ecfdf3; color: #166534; }
.plan-usage + .plan-usage { margin-top: 12px; }

/* نقشه‌ساز سالن: مرحله‌ها، کارت صحنه، دستگیره اندازه، رنگ بخش و حالت‌های بوم */
.builder-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.builder-steps button { border: 1.5px solid var(--line); background: var(--surface, #fff); border-radius: 12px; padding: 8px 4px; font-size: .78rem; color: var(--ink); line-height: 1.3; }
.builder-steps button b { display: block; width: 22px; height: 22px; margin: 0 auto 2px; border-radius: 50%; background: var(--line); font-size: .75rem; line-height: 22px; }
.builder-steps button.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 700; }
.builder-steps button.active b { background: var(--brand); color: #fff; }
.b-stage { padding: 10px; border: 1.5px solid var(--line); border-radius: 12px; }
.b-stage.active { border-color: var(--brand); }
.builder .b-handle { fill: #fff; stroke: #2563eb; stroke-width: 2.5; cursor: nwse-resize; }
.b-colors { display: flex; flex-wrap: wrap; gap: 8px; }
.b-colors input { display: none; }
.b-colors span { display: block; width: 30px; height: 30px; border-radius: 50%; cursor: pointer; border: 3px solid transparent; box-shadow: 0 0 0 1px var(--line); }
.b-colors input:checked + span { border-color: #fff; box-shadow: 0 0 0 2px var(--ink); }
.chip .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; vertical-align: -1px; }
.segmented > button { flex: 1; padding: 8px 4px; border: 1.5px solid var(--line); border-radius: 12px; background: var(--surface, #fff); font-size: .8rem; color: var(--ink); }
.segmented > button:hover { border-color: var(--brand); color: var(--brand); }
.builder .segmented label { padding: 8px 6px; font-size: .82rem; }
.builder-more summary { cursor: pointer; color: var(--brand); }
.seat-zoom button.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.builder-canvas[data-mode="pan"] { cursor: grab; }
.builder-canvas[data-mode="seat"] { cursor: crosshair; }
@media (max-width: 991px) { .builder-stage { height: 52vh; } }

/* اعتبار هدیه مدیر: وضعیت برند منبع (موجودی و امکان پلن) */
.gift-brand-info { padding: 8px 10px; border-radius: 10px; display: grid; gap: 3px; }
.gift-brand-info.is-ok { background: #ecfdf3; color: #166534; }
.gift-brand-info.is-bad { background: #fef2f2; color: #b91c1c; }
#brand-feedback-list .accordion-body { padding: 8px 14px 12px; }
#brand-feedback-list .fb-text { display: block; margin-top: 4px; padding: 8px 10px; border-radius: 10px; background: var(--bs-light, #f6f7f9); line-height: 1.8; }
#brand-feedback-list .ledger-details { margin: 0 !important; background: transparent; }
#brand-feedback-list .ledger-details li { padding-inline: 0 !important; }

/* لوگوی سایت: نسخه حالت شب فقط وقتی آپلود شده باشد (x-site-logo) */
img.site-logo.site-logo-dark { display: none; }
body.dark-mode-active img.site-logo.site-logo-light { display: none; }
body.dark-mode-active img.site-logo.site-logo-dark { display: block; }

/* تنظیمات سایت: کارت لوگو/فاوآیکن با پیش‌نمایش روی زمینه روشن و تیره */
.brand-asset { display: flex; gap: 12px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 14px; }
.brand-asset-preview { flex: 0 0 96px; height: 64px; border-radius: 10px; background: #fff; border: 1px solid var(--line); display: grid; place-items: center; padding: 8px; }
.brand-asset.is-dark .brand-asset-preview { background: #161129; border-color: #161129; }
.brand-asset-preview.is-icon { flex-basis: 64px; }
.brand-asset-preview img { max-width: 100%; max-height: 100%; object-fit: contain; }
.brand-asset-body { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.brand-asset-body .btn-link { padding-inline: 4px; }

/* پنجره برش عکس: قاب با ارتفاع محدود تا عکس عمودی (استوری، پوستر) از پنجره بیرون نزند */
.crop-stage { height: max(220px, min(calc(100dvh - 250px), 520px)); width: 100%; overflow: hidden; background: #f1f3f6; border-radius: 10px; }
/* پنجره پهن (برش عکس) به سقف ۵۶۰ پیکسلی Mobilekit محدود نباشد تا سرتیتر و دکمه‌ها با قاب برش جا شوند */
.dialogbox .modal-dialog.dialog-wide .modal-content { max-height: calc(100dvh - 24px); }
.crop-stage img { display: block; max-width: 100%; max-height: 100%; }

/* دستگاه‌های متصل: نام محل قابل لمس و نقشه در پنجره */
.device-place { white-space: normal; }
.device-map { height: min(60dvh, 420px); border-radius: 12px; overflow: hidden; }

/* اشتراک کاربران: سوییچ نوع قوانین، کارت پلن و قیمت دوره‌ها */
.segmented > .seg-link { flex: 1; text-align: center; padding: 8px; border: 1.5px solid var(--line); border-radius: 12px; color: var(--ink); text-decoration: none; }
.segmented > .seg-link.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 700; }
.membership-prices { display: flex; flex-wrap: wrap; gap: 6px; }
.membership-prices > span { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; padding: 6px 12px; border-radius: 12px; background: var(--brand-soft, #eef5ff); line-height: 1.4; }
.membership-prices small { color: var(--text-muted, #6b7280); font-size: .7rem; }
.membership-prices b { font-size: .85rem; color: var(--brand, #0785f2); }
.membership-card { overflow: hidden; }
.membership-card-img { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; display: block; }
.membership-periods { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; }
.membership-periods label { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border: 1.5px solid var(--line, #e5e7eb); border-radius: 12px; cursor: pointer; font-size: .8rem; text-align: center; }
.membership-periods .btn-check:checked + label { border-color: var(--brand, #0785f2); background: var(--brand-soft, #eef5ff); }
.membership-offer { border: 1.5px dashed var(--brand, #0785f2); background: var(--brand-soft, #eef5ff); border-radius: 14px; padding: 12px; }
