/* کربلا گشت — هستهٔ ساخته‌شده. این فایل را دستی ویرایش نکن؛
   سرچشمه در styles/ است و با styles/build.php ساخته می‌شود. */

/* ═══ tokens.css ═══ */
/* ============================================================
   tokens.css — تنها منبعِ حقیقت
   هیچ عددِ جادویی جای دیگری نوشته نمی‌شود.
   ============================================================ */

:root{
  /* ── رنگِ برند ─────────────────────────────────────────── */
  --c-brand:#c9a227;          /* طلا — گنبد */
  --c-brand-strong:#b8952b;
  --c-brand-ink:#7d6212;      /* طلایِ خوانا روی سفید */
  --c-brand-wash:#fbf6e6;
  --c-brand-soft:#e6c866;
  --c-accent:#8a5a12;         /* برنج — تأکیدِ دوم */
  --c-accent-ink:#8a5a12;

  /* ── خنثی ─────────────────────────────────────────────── */
  --c-white:#ffffff;
  --c-black:#141210;
  --n-50:#faf9f5;
  --n-100:#f1eee5;
  --n-200:#e8e4da;
  --n-300:#d3cdbc;
  --n-400:#b3ac9a;
  --n-500:#8d8676;
  --n-600:#6b6558;
  --n-700:#4c473d;
  --n-800:#2e2a23;
  --n-900:#1c1913;

  /* ── معنایی ───────────────────────────────────────────── */
  --c-success:#1d6b32;  --c-success-bg:#eef7f0;  --c-success-line:#bcdcc6;
  --c-warning:#8a5a12;  --c-warning-bg:#fbf4e4;  --c-warning-line:#e3cf9c;
  --c-danger:#8a1c1c;   --c-danger-bg:#fbeeec;   --c-danger-line:#e5c3bd;
  --c-info:#1f4e79;     --c-info-bg:#eef3f9;     --c-info-line:#c3d5e8;

  /* ── نقش‌های سطح ──────────────────────────────────────── */
  --bg:var(--c-white);
  --bg-subtle:var(--n-50);
  --bg-muted:var(--n-100);
  --bg-inverse:var(--n-900);
  --fg:var(--c-black);
  --fg-muted:var(--n-600);
  --fg-subtle:var(--n-500);
  --fg-inverse:var(--n-50);
  --fg-on-brand:#181305;
  --line:var(--n-200);
  --line-strong:var(--n-300);
  --line-brand:var(--c-brand);

  /* ── فاصله ─── نردبانِ ۴ پیکسلی ───────────────────────── */
  --sp-0:0;
  --sp-1:.25rem;  --sp-2:.5rem;   --sp-3:.75rem;  --sp-4:1rem;
  --sp-5:1.5rem;  --sp-6:2rem;    --sp-7:2.5rem;  --sp-8:3rem;
  --sp-9:4rem;    --sp-10:5rem;   --sp-11:6rem;
  --sp-page:clamp(1rem,4vw,2rem);

  /* ── قلم ──────────────────────────────────────────────── */
  --font-sans:'Vazirmatn','Segoe UI',Tahoma,system-ui,sans-serif;
  --font-mono:ui-monospace,'Cascadia Mono',Consolas,monospace;

  --fs-2xs:.72rem; --fs-xs:.78rem;  --fs-sm:.875rem; --fs-md:1rem;
  --fs-lg:1.05rem; --fs-xl:1.22rem;
  --fs-h3:1.05rem;
  --fs-h2:clamp(1.2rem,2.6vw,1.45rem);
  --fs-h1:clamp(1.6rem,4.4vw,2.35rem);
  --fs-display:clamp(2.1rem,6vw,3.1rem);

  --lh-tight:1.3; --lh-snug:1.55; --lh-normal:1.9; --lh-loose:2.05;
  --fw-normal:400; --fw-bold:700;
  --ls-tight:-.02em; --ls-normal:0; --ls-wide:.08em; --ls-wider:.14em;
  --measure:62ch;

  /* ── گردی ─────────────────────────────────────────────── */
  --r-none:0; --r-xs:2px; --r-sm:4px; --r-md:8px; --r-lg:12px; --r-xl:18px;
  --r-pill:999px; --r-circle:50%;

  /* ── سایه ─────────────────────────────────────────────── */
  --sh-none:none;
  --sh-xs:0 1px 2px rgba(20,18,16,.05);
  --sh-sm:0 1px 2px rgba(20,18,16,.06),0 2px 6px -3px rgba(20,18,16,.16);
  --sh-md:0 2px 4px rgba(20,18,16,.06),0 10px 22px -14px rgba(20,18,16,.35);
  --sh-lg:0 3px 8px rgba(20,18,16,.08),0 24px 48px -28px rgba(20,18,16,.5);
  --sh-focus:0 0 0 3px var(--c-brand-wash);

  /* ── لایه ─────────────────────────────────────────────── */
  --z-base:0; --z-raised:10; --z-sticky:100; --z-drawer:200;
  --z-modal:300; --z-popover:400; --z-toast:500; --z-max:9999;

  /* ── حرکت ─────────────────────────────────────────────── */
  --dur-fast:120ms; --dur-mid:200ms; --dur-slow:320ms;
  --ease:cubic-bezier(.2,.6,.3,1);
  --ease-out:cubic-bezier(0,.7,.3,1);
  --t-color:color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
  --t-all:all var(--dur-mid) var(--ease);

  /* ── اندازه‌های ثابتِ چیدمان ──────────────────────────── */
  --container:68rem;
  --container-wide:80rem;
  --container-text:46rem;
  --sidebar-w:13.5rem;
  --header-h:3.4rem;
  --tap:44px;                 /* کمترین اندازهٔ لمسی */

  /* ── نقطهٔ شکست (برای خواندن در JS؛ media query خودش عدد می‌خواهد) */
  --bp-sm:576px; --bp-md:768px; --bp-lg:1024px; --bp-xl:1280px; --bp-2xl:1440px;
}

/* ── حالتِ تیره ───────────────────────────────────────────
   فقط نقش‌ها عوض می‌شوند، نه خودِ اجزا. هر جزئی که رنگش را از
   نقش بگیرد، خودبه‌خود درست می‌شود. */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#15130e;
    --bg-subtle:#1c1913;
    --bg-muted:#221e17;
    --bg-inverse:var(--n-50);
    --fg:#f2eee4;
    --fg-muted:#a9a293;
    --fg-subtle:#8d8676;
    --fg-inverse:var(--n-900);
    --fg-on-brand:#181305;
    --line:#2e2a20;
    --line-strong:#3d3729;
    --c-brand-ink:#e2c87a;
    --c-brand-wash:#241f14;
    --c-accent-ink:#e0b45c;
    --c-success:#7fc99a; --c-success-bg:#16241a; --c-success-line:#2c5c3c;
    --c-warning:#e0b45c; --c-warning-bg:#241f14; --c-warning-line:#5a4a22;
    --c-danger:#e8a49c;  --c-danger-bg:#251614;  --c-danger-line:#5c2f2a;
    --c-info:#9dc0e0;    --c-info-bg:#141c24;    --c-info-line:#2c4256;
    --sh-xs:0 1px 2px rgba(0,0,0,.4);
    --sh-sm:0 1px 2px rgba(0,0,0,.45),0 2px 6px -3px rgba(0,0,0,.6);
    --sh-md:0 2px 4px rgba(0,0,0,.5),0 10px 22px -14px rgba(0,0,0,.8);
    --sh-lg:0 3px 8px rgba(0,0,0,.55),0 24px 48px -28px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"]{
  --bg:#15130e;
  --bg-subtle:#1c1913;
  --bg-muted:#221e17;
  --bg-inverse:var(--n-50);
  --fg:#f2eee4;
  --fg-muted:#a9a293;
  --fg-subtle:#8d8676;
  --fg-inverse:var(--n-900);
  --fg-on-brand:#181305;
  --line:#2e2a20;
  --line-strong:#3d3729;
  --c-brand-ink:#e2c87a;
  --c-brand-wash:#241f14;
  --c-accent-ink:#e0b45c;
  --c-success:#7fc99a; --c-success-bg:#16241a; --c-success-line:#2c5c3c;
  --c-warning:#e0b45c; --c-warning-bg:#241f14; --c-warning-line:#5a4a22;
  --c-danger:#e8a49c;  --c-danger-bg:#251614;  --c-danger-line:#5c2f2a;
  --c-info:#9dc0e0;    --c-info-bg:#141c24;    --c-info-line:#2c4256;
  --sh-xs:0 1px 2px rgba(0,0,0,.4);
  --sh-sm:0 1px 2px rgba(0,0,0,.45),0 2px 6px -3px rgba(0,0,0,.6);
  --sh-md:0 2px 4px rgba(0,0,0,.5),0 10px 22px -14px rgba(0,0,0,.8);
  --sh-lg:0 3px 8px rgba(0,0,0,.55),0 24px 48px -28px rgba(0,0,0,.9);
}

/* ═══ reset.css ═══ */
/* ============================================================
   reset.css — پایهٔ یکسان، بدونِ پاک‌کردنِ چیزهای مفید
   ============================================================ */

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

html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-block-start:calc(var(--header-h) + var(--sp-4));
}

/* قاعدهٔ راست‌به‌چپِ کلِ رابط */
html,body{direction:rtl;text-align:right}

body{
  margin:0;
  min-height:100svh;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--font-sans);
  font-size:16.5px;
  line-height:var(--lh-normal);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0}
h1,h2,h3,h4{line-height:var(--lh-tight);letter-spacing:var(--ls-tight);text-wrap:balance}
p{text-wrap:pretty}

ul,ol{margin:0;padding:0}
ul[class],ol[class]{list-style:none}

a{color:var(--c-brand-ink);text-underline-offset:3px}
a:not([class]){text-decoration-thickness:max(1px,.06em)}

img,svg,video,canvas,picture{display:block;max-inline-size:100%;height:auto}

input,button,textarea,select{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
table{border-collapse:collapse;inline-size:100%}
th{text-align:right;font-weight:var(--fw-bold)}

hr{border:0;border-block-start:1px solid var(--line);margin-block:var(--sp-5)}

:target{scroll-margin-block-start:calc(var(--header-h) + var(--sp-4))}

/* عددها همه‌جا هم‌عرض — این پروژه پر از عدد است */
b,strong,td,th,input,select,output,.num,time{font-variant-numeric:tabular-nums}

/* پنهانِ دیداری ولی در دسترسِ صفحه‌خوان */
.sr-only{
  position:absolute!important;inline-size:1px;block-size:1px;
  padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;
}

/* پرشِ به محتوا */
.skip-link{
  position:absolute;inset-inline-start:-9999px;inset-block-start:0;z-index:var(--z-max);
  background:var(--fg);color:var(--bg);padding:var(--sp-2) var(--sp-4);
}
.skip-link:focus{inset-inline-start:0}

/* حلقهٔ فوکوس — ضخیم و طلایی؛ کاربرِ سالخورده باید بی‌شک بداند کجاست */
:focus-visible{outline:3px solid var(--c-brand);outline-offset:2px;border-radius:var(--r-xs)}
:focus:not(:focus-visible){outline:none}

::selection{background:var(--c-brand-wash);color:var(--fg)}

/* حرکتِ کمتر */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
}

/* چاپ */
@media print{
  body{background:#fff;color:#000;font-size:12pt}
  .no-print,.app-header,.app-sidebar,.toast-stack{display:none!important}
  a[href]::after{content:" (" attr(href) ")";font-size:.8em;color:#555}
}

/* ═══ typography.css ═══ */
/* ============================================================
   typography.css
   قلم از خودِ سایت می‌آید، نه از CDN — تجربهٔ iraqbus نشان داد
   @font-face با فایلِ نبوده فقط درخواستِ شکسته تولید می‌کند.
   ============================================================ */

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

.t-display{font-size:var(--fs-display);font-weight:var(--fw-bold);line-height:1.15;letter-spacing:var(--ls-tight)}
h1,.t-h1{font-size:var(--fs-h1);font-weight:var(--fw-bold)}
h2,.t-h2{font-size:var(--fs-h2);font-weight:var(--fw-bold)}
h3,.t-h3{font-size:var(--fs-h3);font-weight:var(--fw-bold)}
h4{font-size:var(--fs-md);font-weight:var(--fw-bold)}

.t-lead{font-size:var(--fs-lg);color:var(--fg-muted);max-inline-size:var(--measure)}
.t-body{font-size:var(--fs-md)}
.t-sm{font-size:var(--fs-sm)}
.t-xs{font-size:var(--fs-xs)}
.t-muted{color:var(--fg-muted)}
.t-subtle{color:var(--fg-subtle)}
.t-brand{color:var(--c-brand-ink)}
.t-danger{color:var(--c-danger)}
.t-success{color:var(--c-success)}
.t-bold{font-weight:var(--fw-bold)}
.t-nowrap{white-space:nowrap}
.t-balance{text-wrap:balance}
.t-measure{max-inline-size:var(--measure)}
.t-center{text-align:center}
.t-start{text-align:start}
.t-end{text-align:end}
.t-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.t-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* برچسبِ ریزِ بالای عنوان */
.eyebrow{
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);
  letter-spacing:var(--ls-wider);color:var(--c-brand-ink);
  margin-block-end:var(--sp-2);
}

/* عنوانِ بخش با خطِ طلاییِ کوتاه — به اندازهٔ خودِ عنوان، نه تا آخر صفحه */
.sec-title{position:relative;display:inline-block;padding-block-end:var(--sp-2)}
.sec-title::after{
  content:"";position:absolute;inset-block-end:0;inset-inline-start:0;
  inline-size:2rem;block-size:2px;background:var(--c-brand);
}

/* ── متنِ بلندِ ویرایش‌شده ─────────────────────────────────
   محتوایی که از ویرایشگر می‌آید و کلاس ندارد. */
.prose{max-inline-size:var(--measure);line-height:var(--lh-loose)}
.prose > * + *{margin-block-start:var(--sp-4)}
.prose h2{font-size:var(--fs-xl);margin-block-start:var(--sp-6);padding-block-end:var(--sp-1);
  border-block-end:1px solid var(--line)}
.prose h3{margin-block-start:var(--sp-5)}
.prose ul,.prose ol{padding-inline-start:var(--sp-5);list-style:revert}
.prose li{margin-block-end:var(--sp-1)}
.prose a{text-decoration:underline}
.prose blockquote{
  margin:0;padding:var(--sp-3) var(--sp-4);
  background:var(--bg-subtle);border-inline-start:3px solid var(--c-brand);
  border-radius:var(--r-xs);
}
.prose table{font-size:var(--fs-sm)}
.prose th,.prose td{padding:var(--sp-2) var(--sp-3);border:1px solid var(--line)}
.prose th{background:var(--bg-muted)}
.prose img{border-radius:var(--r-sm)}
.prose code{background:var(--bg-muted);padding:.1em .4em;border-radius:var(--r-xs);
  font-family:var(--font-mono);font-size:.86em}

/* ── قاعدهٔ لاتین/عدد در متنِ راست‌به‌چپ ──────────────────
   شمارهٔ موبایل، کد پیگیری، ایمیل و گذرنامه باید چپ‌به‌راست
   خوانده شوند وگرنه ترتیبِ رقم‌ها به‌هم می‌ریزد. */
.ltr,[dir="ltr"]{direction:ltr;text-align:left;unicode-bidi:isolate}
.ltr-inline{direction:ltr;unicode-bidi:isolate;display:inline-block}

/* ═══ layout.css ═══ */
/* ============================================================
   layout.css — ظرف، شبکه، پوستهٔ صفحه، سربرگ، پاورقی، نوارِ کناری
   همه‌جا خاصیتِ منطقی؛ هیچ left/right سختی.
   ============================================================ */

/* ── ظرف ──────────────────────────────────────────────── */
.container{inline-size:100%;max-inline-size:var(--container);margin-inline:auto;padding-inline:var(--sp-page)}
.container--wide{max-inline-size:var(--container-wide)}
.container--text{max-inline-size:var(--container-text)}
.container--flush{padding-inline:0}

/* ── پشته و ردیف ──────────────────────────────────────── */
.stack{display:flex;flex-direction:column;gap:var(--sp-4)}
.stack--xs{gap:var(--sp-1)} .stack--sm{gap:var(--sp-2)}
.stack--lg{gap:var(--sp-6)} .stack--xl{gap:var(--sp-8)}

.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.row--between{justify-content:space-between}
.row--end{justify-content:flex-end}
.row--center{justify-content:center}
.row--top{align-items:flex-start}
.row--nowrap{flex-wrap:nowrap}
.row__spacer{margin-inline-start:auto}

/* ── شبکه ─────────────────────────────────────────────── */
.grid{display:grid;gap:var(--sp-4)}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
/* خودچین: هرگز کمتر از عرضِ داده‌شده نمی‌شکند، پس روی موبایل خودش تک‌ستون می‌شود */
.grid--auto{grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))}
.grid--auto-sm{grid-template-columns:repeat(auto-fit,minmax(min(10rem,100%),1fr))}
.grid--auto-lg{grid-template-columns:repeat(auto-fit,minmax(min(20rem,100%),1fr))}
.grid--sidebar{grid-template-columns:minmax(0,1fr)}

@media (min-width:768px){
  .grid--sidebar{grid-template-columns:minmax(0,1fr) 18rem}
  .grid--sidebar-start{grid-template-columns:18rem minmax(0,1fr)}
}
@media (max-width:767.98px){
  .grid--2,.grid--3,.grid--4{grid-template-columns:minmax(0,1fr)}
}

/* ── بخش ──────────────────────────────────────────────── */
.section{padding-block:var(--sp-8)}
.section--tight{padding-block:var(--sp-6)}
.section--alt{background:var(--bg-subtle);border-block:1px solid var(--line)}
.section__head{margin-block-end:var(--sp-5)}
.section__head p{color:var(--fg-muted);margin-block-start:var(--sp-2);max-inline-size:var(--measure)}

/* ── پوستهٔ برنامه (پنل/داشبورد) ──────────────────────── */
.app{display:grid;grid-template-columns:minmax(0,1fr);min-block-size:100svh}
.app__header{grid-column:1/-1}
.app__main{min-inline-size:0;padding:var(--sp-5) var(--sp-page) var(--sp-9)}

@media (min-width:1024px){
  /* ستونِ اول در راست‌به‌چپ سمتِ راست است — جای طبیعیِ منو در فارسی */
  .app{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
  .app__sidebar{grid-row:2;grid-column:1}
  .app__main{grid-row:2;grid-column:2}
}

/* ── سربرگ ────────────────────────────────────────────── */
.app-header{
  position:sticky;inset-block-start:0;z-index:var(--z-sticky);
  min-block-size:var(--header-h);
  display:flex;align-items:center;gap:var(--sp-4);
  padding-inline:var(--sp-page);padding-block:var(--sp-2);
  background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:blur(8px);
  border-block-end:1px solid var(--line);
}
.app-header--solid{background:var(--bg-subtle);backdrop-filter:none}
.brand{display:flex;align-items:center;gap:var(--sp-2);text-decoration:none;color:var(--fg)}
.brand__mark{
  inline-size:1.15rem;block-size:1.15rem;flex:none;border-radius:var(--r-circle);
  background:var(--c-brand);
  box-shadow:inset 0 0 0 3px var(--bg),0 0 0 1px var(--c-brand);
}
.brand__name{font-weight:var(--fw-bold);font-size:var(--fs-lg);letter-spacing:var(--ls-tight)}

/* ── پاورقی ───────────────────────────────────────────── */
.app-footer{
  margin-block-start:var(--sp-9);
  padding-block:var(--sp-6);
  background:var(--bg-subtle);
  border-block-start:2px solid var(--c-brand);
}
.app-footer__row{
  max-inline-size:var(--container);margin-inline:auto;padding-inline:var(--sp-page);
  display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-6);align-items:center;justify-content:space-between;
}
.app-footer__links{
  display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);justify-content:center;
  padding-block-start:var(--sp-4);margin-block-start:var(--sp-4);
  border-block-start:1px solid var(--line);
}
.app-footer__links a{color:var(--fg-muted);font-size:var(--fs-sm);text-decoration:none}
.app-footer__links a:hover{color:var(--c-brand-ink)}

/* ── سرصفحهٔ عکس‌دار ──────────────────────────────────── */
.hero{position:relative;border-block-end:3px solid var(--c-brand);background:var(--bg-subtle)}
.hero__inner{
  max-inline-size:var(--container);margin-inline:auto;
  padding:clamp(2.4rem,7vw,4.4rem) var(--sp-page) clamp(1.8rem,5vw,3rem);
}
.hero--image{
  background-size:cover;background-position:center 38%;
  background-image:
    linear-gradient(to top,rgba(18,15,7,.94),rgba(18,15,7,.42) 58%,rgba(18,15,7,.55)),
    linear-gradient(to left,rgba(18,15,7,.60),rgba(18,15,7,0) 60%),
    var(--hero-img,none);
}
.hero--image h1,.hero--image .t-display{color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.6)}
.hero--image .t-lead{color:rgba(255,255,255,.94);text-shadow:0 1px 12px rgba(0,0,0,.55)}
.hero--image .eyebrow{color:var(--c-brand-soft)}

/* ── جداکننده ─────────────────────────────────────────── */
.divider{block-size:1px;background:var(--line);border:0;margin-block:var(--sp-5)}
.divider--brand{block-size:2px;background:var(--c-brand);inline-size:2rem}

/* ── سرریزِ افقیِ محتواهای پهن ────────────────────────── */
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.scroll-x > *{min-inline-size:max-content}

/* ═══ buttons.css ═══ */
/* ============================================================
   buttons.css — دکمه، دکمهٔ آیکونی، پیوند، گروهِ دکمه
   همهٔ حالت‌ها: default hover focus active selected disabled
                 loading success warning error
   ============================================================ */

.btn{
  --btn-bg:var(--bg);
  --btn-fg:var(--fg);
  --btn-line:var(--line-strong);
  --btn-bg-hover:var(--bg-muted);

  display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  min-block-size:var(--tap);
  padding-inline:var(--sp-5);padding-block:var(--sp-2);
  font-size:var(--fs-md);font-weight:var(--fw-bold);line-height:1.2;
  text-decoration:none;white-space:nowrap;cursor:pointer;
  background:var(--btn-bg);color:var(--btn-fg);
  border:1px solid var(--btn-line);border-radius:var(--r-sm);
  transition:var(--t-color),box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);
  position:relative;
}
.btn:hover{background:var(--btn-bg-hover)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:3px solid var(--c-brand);outline-offset:2px}

/* ── گونه‌ها ──────────────────────────────────────────── */
.btn--primary{
  --btn-bg:var(--c-brand); --btn-fg:var(--fg-on-brand);
  --btn-line:var(--c-brand); --btn-bg-hover:var(--c-brand-strong);
}
.btn--primary:hover{border-color:var(--c-brand-strong)}

.btn--secondary{
  --btn-bg:var(--c-brand-wash); --btn-fg:var(--c-brand-ink);
  --btn-line:var(--c-brand); --btn-bg-hover:var(--c-brand);
}
.btn--secondary:hover{color:var(--fg-on-brand)}

.btn--ghost{--btn-bg:transparent;--btn-fg:var(--c-brand-ink);--btn-line:var(--line-strong);
  --btn-bg-hover:var(--c-brand-wash)}
.btn--ghost:hover{border-color:var(--c-brand)}

.btn--quiet{--btn-bg:transparent;--btn-fg:var(--fg-muted);--btn-line:transparent;
  --btn-bg-hover:var(--bg-muted)}

.btn--danger{--btn-bg:var(--c-danger-bg);--btn-fg:var(--c-danger);
  --btn-line:var(--c-danger-line);--btn-bg-hover:var(--c-danger);}
.btn--danger:hover{color:#fff;border-color:var(--c-danger)}

.btn--success{--btn-bg:var(--c-success-bg);--btn-fg:var(--c-success);
  --btn-line:var(--c-success-line);--btn-bg-hover:var(--c-success)}
.btn--success:hover{color:#fff;border-color:var(--c-success)}

.btn--link{
  --btn-bg:transparent;--btn-line:transparent;--btn-bg-hover:transparent;
  --btn-fg:var(--c-brand-ink);
  min-block-size:auto;padding:0;text-decoration:underline;text-underline-offset:3px;
}

/* ── اندازه ───────────────────────────────────────────── */
.btn--sm{min-block-size:34px;padding-inline:var(--sp-3);font-size:var(--fs-sm)}
.btn--lg{min-block-size:52px;padding-inline:var(--sp-6);font-size:var(--fs-lg)}
.btn--block{display:flex;inline-size:100%}

/* ── حالت‌ها ──────────────────────────────────────────── */
.btn[disabled],.btn.is-disabled,.btn[aria-disabled="true"]{
  opacity:.5;cursor:not-allowed;pointer-events:none;transform:none;
}
.btn.is-selected,.btn[aria-pressed="true"]{
  background:var(--c-brand-wash);border-color:var(--c-brand);color:var(--c-brand-ink);
}

/* در حال کار — متن می‌ماند تا عرضِ دکمه نپرد، فقط رنگش می‌رود */
.btn.is-loading{color:transparent!important;pointer-events:none;cursor:progress}
.btn.is-loading::after{
  content:"";position:absolute;inline-size:1.1em;block-size:1.1em;
  border:2px solid currentColor;border-block-start-color:transparent;border-radius:var(--r-circle);
  color:var(--btn-fg);animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .btn.is-loading::after{animation:none;border-block-start-color:currentColor;opacity:.5}
}

/* ── دکمهٔ آیکونی ─────────────────────────────────────── */
.icon-btn{
  display:inline-grid;place-items:center;
  inline-size:var(--tap);block-size:var(--tap);flex:none;
  background:transparent;color:var(--fg-muted);
  border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;
  transition:var(--t-color);
}
.icon-btn:hover{background:var(--bg-muted);color:var(--fg)}
.icon-btn:focus-visible{outline:3px solid var(--c-brand);outline-offset:2px}
.icon-btn--bordered{border-color:var(--line-strong)}
.icon-btn--brand{color:var(--c-brand-ink)}
.icon-btn[disabled]{opacity:.45;pointer-events:none}
.icon-btn--sm{inline-size:34px;block-size:34px}

/* ── گروهِ دکمه ───────────────────────────────────────── */
.btn-group{display:inline-flex;flex-wrap:wrap;gap:var(--sp-2)}
.btn-group--attached{gap:0}
.btn-group--attached .btn{border-radius:0}
.btn-group--attached .btn:first-child{border-start-start-radius:var(--r-sm);border-end-start-radius:var(--r-sm)}
.btn-group--attached .btn:last-child{border-start-end-radius:var(--r-sm);border-end-end-radius:var(--r-sm)}
.btn-group--attached .btn + .btn{margin-inline-start:-1px}

/* ── پیوند ────────────────────────────────────────────── */
.link{color:var(--c-brand-ink);text-decoration:none;border-block-end:1px solid transparent}
.link:hover{border-block-end-color:currentColor}
.link--muted{color:var(--fg-muted)}
.link--muted:hover{color:var(--fg)}

/* ═══ forms.css ═══ */
/* ============================================================
   forms.css — فیلد، ورودی، انتخاب، تیک، رادیو، کلید، جست‌وجو،
               خودکامل، اعتبارسنجی
   ============================================================ */

.form{display:flex;flex-direction:column;gap:var(--sp-4)}
.form-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr))}
.form-grid > .field--wide{grid-column:1/-1}

.field{display:flex;flex-direction:column;gap:var(--sp-1);min-inline-size:0}
.field__label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--fg)}
.field__label .req{color:var(--c-danger);margin-inline-start:.15em}
.field__hint{font-size:var(--fs-xs);color:var(--fg-muted);line-height:var(--lh-snug)}
.field__error{font-size:var(--fs-xs);color:var(--c-danger);font-weight:var(--fw-bold);display:none}

/* ── کنترل‌ها ─────────────────────────────────────────── */
.input,.textarea,.select{
  inline-size:100%;min-block-size:var(--tap);
  padding-inline:var(--sp-3);padding-block:var(--sp-2);
  font-size:var(--fs-md);color:var(--fg);
  background:var(--bg);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);
  transition:var(--t-color),box-shadow var(--dur-fast) var(--ease);
}
.textarea{min-block-size:6rem;line-height:var(--lh-snug);resize:vertical}
.select{
  appearance:none;
  padding-inline-end:var(--sp-7);
  background-image:linear-gradient(45deg,transparent 50%,var(--fg-muted) 50%),
                   linear-gradient(135deg,var(--fg-muted) 50%,transparent 50%);
  background-size:5px 5px,5px 5px;
  background-position:calc(var(--sp-3)) calc(50% + 1px),calc(var(--sp-3) + 5px) calc(50% + 1px);
  background-repeat:no-repeat;
}

.input:hover,.textarea:hover,.select:hover{border-color:var(--c-brand)}
.input:focus,.textarea:focus,.select:focus{
  outline:none;border-color:var(--c-brand);box-shadow:var(--sh-focus);
}
.input:focus-visible,.textarea:focus-visible,.select:focus-visible{outline:3px solid var(--c-brand);outline-offset:1px}
.input::placeholder,.textarea::placeholder{color:var(--fg-subtle)}

.input[readonly]{background:var(--bg-subtle)}
.input[disabled],.textarea[disabled],.select[disabled],.field.is-disabled{
  opacity:.55;cursor:not-allowed;background:var(--bg-muted);
}

/* ── حالتِ اعتبارسنجی ─────────────────────────────────── */
.field.is-error .input,.field.is-error .textarea,.field.is-error .select,
.input.is-error,[aria-invalid="true"]{
  border-color:var(--c-danger);background:var(--c-danger-bg);
}
.field.is-error .field__error{display:block}
.field.is-success .input,.field.is-success .select{border-color:var(--c-success)}
.field.is-warning .input,.field.is-warning .select{border-color:var(--c-warning)}

/* ── ورودیِ لاتین ─────────────────────────────────────── */
.input--ltr{direction:ltr;text-align:left;unicode-bidi:isolate}
.input--num{font-variant-numeric:tabular-nums}

/* ── با پیشوند/پسوند ─────────────────────────────────── */
.input-group{display:flex;align-items:stretch}
.input-group .input{border-radius:0}
.input-group > :first-child{border-start-start-radius:var(--r-sm);border-end-start-radius:var(--r-sm)}
.input-group > :last-child{border-start-end-radius:var(--r-sm);border-end-end-radius:var(--r-sm)}
.input-group__addon{
  display:grid;place-items:center;padding-inline:var(--sp-3);
  background:var(--bg-muted);color:var(--fg-muted);font-size:var(--fs-sm);
  border:1px solid var(--line-strong);
}
.input-group > * + *{margin-inline-start:-1px}

/* ── تیک و رادیو ──────────────────────────────────────── */
.check{
  display:flex;align-items:flex-start;gap:var(--sp-2);
  min-block-size:var(--tap);align-items:center;cursor:pointer;
}
.check input{
  inline-size:1.25rem;block-size:1.25rem;flex:none;margin:0;
  accent-color:var(--c-brand);cursor:pointer;
}
.check span{font-size:var(--fs-sm);line-height:var(--lh-snug)}
.check.is-disabled{opacity:.55;cursor:not-allowed}

/* گزینه‌های کارتی — انتخابِ انگشتی روی موبایل */
.choice{
  display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;
  padding:var(--sp-3);min-block-size:var(--tap);
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);
  transition:var(--t-color);
}
.choice:hover{border-color:var(--c-brand);background:var(--c-brand-wash)}
.choice:has(input:checked){
  border-color:var(--c-brand);background:var(--c-brand-wash);
  box-shadow:inset 0 0 0 1px var(--c-brand);
}
.choice:has(input:focus-visible){outline:3px solid var(--c-brand);outline-offset:2px}
.choice:has(input:disabled){opacity:.55;cursor:not-allowed}

/* ── کلید (Switch) ────────────────────────────────────── */
.switch{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;min-block-size:var(--tap)}
.switch input{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.switch__track{
  inline-size:2.6rem;block-size:1.5rem;flex:none;border-radius:var(--r-pill);
  background:var(--n-300);position:relative;transition:background var(--dur-mid) var(--ease);
}
.switch__track::after{
  content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;
  inline-size:1.1rem;block-size:1.1rem;border-radius:var(--r-circle);background:#fff;
  box-shadow:var(--sh-xs);transition:translate var(--dur-mid) var(--ease);
}
.switch input:checked + .switch__track{background:var(--c-brand)}
/* در راست‌به‌چپ باید به سمتِ چپ سُر بخورد */
.switch input:checked + .switch__track::after{translate:-1.1rem 0}
.switch input:focus-visible + .switch__track{outline:3px solid var(--c-brand);outline-offset:2px}
.switch input:disabled + .switch__track{opacity:.5}

/* ── جست‌وجو ──────────────────────────────────────────── */
.search{position:relative;display:flex;align-items:center}
.search .input{padding-inline-start:var(--sp-8)}
.search__icon{
  position:absolute;inset-inline-start:var(--sp-3);
  color:var(--fg-subtle);pointer-events:none;display:grid;place-items:center;
}
.search__clear{position:absolute;inset-inline-end:var(--sp-2)}

/* ── خودکامل ──────────────────────────────────────────── */
.autocomplete{position:relative}
.autocomplete__list{
  position:absolute;inset-block-start:calc(100% + 4px);inset-inline:0;z-index:var(--z-popover);
  max-block-size:18rem;overflow:auto;
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);
  box-shadow:var(--sh-md);padding:var(--sp-1);
}
.autocomplete__item{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-3);min-block-size:var(--tap);
  border-radius:var(--r-xs);cursor:pointer;
}
.autocomplete__item:hover,.autocomplete__item[aria-selected="true"]{background:var(--c-brand-wash)}
.autocomplete__item mark{background:transparent;color:var(--c-brand-ink);font-weight:var(--fw-bold)}
.autocomplete__empty{padding:var(--sp-3);color:var(--fg-muted);font-size:var(--fs-sm)}

/* ── فایل و آپلود ─────────────────────────────────────── */
.uploader{
  display:grid;place-items:center;gap:var(--sp-2);text-align:center;
  padding:var(--sp-6) var(--sp-4);
  background:var(--bg-subtle);border:2px dashed var(--line-strong);border-radius:var(--r-md);
  cursor:pointer;transition:var(--t-color);
}
.uploader:hover,.uploader.is-dragover{border-color:var(--c-brand);background:var(--c-brand-wash)}
.uploader input[type="file"]{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.uploader__hint{font-size:var(--fs-xs);color:var(--fg-muted)}

/* ── نوارِ عملیاتِ فرم ────────────────────────────────── */
.form-actions{
  display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center;
  padding-block-start:var(--sp-4);border-block-start:1px solid var(--line);
}

/* ═══ navigation.css ═══ */
/* ============================================================
   navigation.css — نوارِ ناوبری، نوارِ کناری، مسیر، تب، آکاردئون،
                    منوی کشویی، صفحه‌بندی، گام‌شمار، نوارِ ابزار
   ============================================================ */

/* ── ناوبریِ افقی ─────────────────────────────────────── */
.nav{display:flex;align-items:center;gap:var(--sp-5);font-size:var(--fs-sm)}
.nav a{
  color:var(--fg-muted);text-decoration:none;
  padding-block:var(--sp-1);border-block-end:2px solid transparent;
  transition:var(--t-color);
}
.nav a:hover{color:var(--fg);border-block-end-color:var(--c-brand)}
.nav a[aria-current],.nav a.is-active{color:var(--fg);border-block-end-color:var(--c-brand);font-weight:var(--fw-bold)}
@media (max-width:767.98px){.nav--collapse{display:none}}

/* ── نوارِ کناری ──────────────────────────────────────── */
.sidebar{
  display:flex;flex-direction:column;gap:var(--sp-5);
  padding:var(--sp-4) var(--sp-page) var(--sp-6);
  background:var(--bg-subtle);border-block-end:1px solid var(--line);
}
.sidebar__group{display:flex;flex-direction:column;gap:1px}
.sidebar__label{
  font-size:var(--fs-2xs);letter-spacing:var(--ls-wide);color:var(--fg-muted);
  font-weight:var(--fw-bold);padding-block:var(--sp-1);
  border-block-end:1px solid var(--line);margin-block-end:var(--sp-1);
}
.sidebar__link{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-3);min-block-size:var(--tap);
  color:var(--fg);text-decoration:none;font-size:var(--fs-sm);
  border-radius:var(--r-sm);border-inline-start:3px solid transparent;
  transition:var(--t-color);
}
.sidebar__link:hover{background:var(--c-brand-wash)}
.sidebar__link[aria-current],.sidebar__link.is-active{
  background:var(--c-brand-wash);border-inline-start-color:var(--c-brand);
  color:var(--c-brand-ink);font-weight:var(--fw-bold);
}
.sidebar__badge{margin-inline-start:auto;font-size:var(--fs-2xs)}

/* کلیدِ باز و بستهٔ موبایل — بدونِ جاوااسکریپت */
.nav-toggle{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.nav-toggle-btn{
  display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;
  min-block-size:var(--tap);padding:var(--sp-2) var(--sp-page);
  font-weight:var(--fw-bold);font-size:var(--fs-sm);
  background:var(--bg-subtle);border-block-end:1px solid var(--line);
}
.nav-toggle-btn::before{content:"\2630";font-size:1.05rem}
.nav-toggle:not(:checked) ~ .sidebar{display:none}
.nav-toggle:focus-visible + .nav-toggle-btn{outline:3px solid var(--c-brand);outline-offset:-3px}

@media (min-width:1024px){
  .nav-toggle-btn{display:none}
  .nav-toggle:not(:checked) ~ .sidebar{display:flex}
  .sidebar{
    border-block-end:0;border-inline-end:1px solid var(--line);
    position:sticky;inset-block-start:0;align-self:start;
    max-block-size:100svh;overflow:auto;
  }
}

/* ── مسیرِ بالای صفحه ─────────────────────────────────── */
.breadcrumb{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);
  font-size:var(--fs-xs);color:var(--fg-muted);
  padding-block:var(--sp-3);
}
.breadcrumb a{color:var(--c-brand-ink);text-decoration:none}
.breadcrumb a:hover{text-decoration:underline}
.breadcrumb li + li::before{content:"‹";margin-inline:var(--sp-1);color:var(--fg-subtle)}
.breadcrumb [aria-current]{color:var(--fg);font-weight:var(--fw-bold)}

/* ── تب ───────────────────────────────────────────────── */
.tabs{display:flex;gap:var(--sp-1);border-block-end:1px solid var(--line);overflow-x:auto}
.tabs__tab{
  padding:var(--sp-2) var(--sp-4);min-block-size:var(--tap);white-space:nowrap;
  color:var(--fg-muted);font-size:var(--fs-sm);font-weight:var(--fw-bold);
  background:transparent;border:0;border-block-end:2px solid transparent;
  cursor:pointer;transition:var(--t-color);
}
.tabs__tab:hover{color:var(--fg)}
.tabs__tab[aria-selected="true"]{color:var(--c-brand-ink);border-block-end-color:var(--c-brand)}
.tabs__tab[disabled]{opacity:.45;cursor:not-allowed}
.tabs__panel{padding-block-start:var(--sp-4)}
.tabs__panel[hidden]{display:none}

/* تبِ قرصی */
.tabs--pill{border-block-end:0;gap:var(--sp-2)}
.tabs--pill .tabs__tab{
  border:1px solid var(--line-strong);border-radius:var(--r-pill);min-block-size:38px;
}
.tabs--pill .tabs__tab[aria-selected="true"]{
  background:var(--c-brand-wash);border-color:var(--c-brand);
}

/* ── آکاردئون ─────────────────────────────────────────── */
.accordion{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--bg)}
.accordion + .accordion{margin-block-start:var(--sp-2)}
.accordion > summary{
  display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;list-style:none;
  padding:var(--sp-3) var(--sp-4);min-block-size:var(--tap);
  font-weight:var(--fw-bold);background:var(--bg-subtle);
}
.accordion > summary::-webkit-details-marker{display:none}
.accordion > summary::after{
  content:"+";margin-inline-start:auto;font-size:1.2rem;color:var(--fg-muted);
  transition:transform var(--dur-fast) var(--ease);
}
.accordion[open] > summary::after{content:"−"}
.accordion > summary:hover{background:var(--c-brand-wash)}
.accordion > summary:focus-visible{outline:3px solid var(--c-brand);outline-offset:-3px}
.accordion__body{padding:var(--sp-4);border-block-start:1px solid var(--line)}

/* ── منوی کشویی ───────────────────────────────────────── */
.dropdown{position:relative;display:inline-block}
.dropdown__menu{
  position:absolute;inset-block-start:calc(100% + 4px);inset-inline-end:0;
  z-index:var(--z-popover);min-inline-size:11rem;padding:var(--sp-1);
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);
  box-shadow:var(--sh-md);
}
.dropdown__menu[hidden]{display:none}
.dropdown__item{
  display:flex;align-items:center;gap:var(--sp-2);inline-size:100%;
  padding:var(--sp-2) var(--sp-3);min-block-size:var(--tap);
  color:var(--fg);text-decoration:none;font-size:var(--fs-sm);text-align:start;
  border-radius:var(--r-xs);cursor:pointer;
}
.dropdown__item:hover,.dropdown__item:focus-visible{background:var(--c-brand-wash)}
.dropdown__item--danger{color:var(--c-danger)}
.dropdown__sep{block-size:1px;background:var(--line);margin-block:var(--sp-1)}

/* ── صفحه‌بندی ────────────────────────────────────────── */
.pagination{display:flex;flex-wrap:wrap;gap:var(--sp-1);justify-content:center;margin-block-start:var(--sp-5)}
.pagination a,.pagination span{
  display:grid;place-items:center;min-inline-size:var(--tap);min-block-size:var(--tap);
  padding-inline:var(--sp-2);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;
  color:var(--fg);text-decoration:none;
  border:1px solid var(--line);border-radius:var(--r-sm);
}
.pagination a:hover{border-color:var(--c-brand);background:var(--c-brand-wash)}
.pagination .is-current{background:var(--c-brand);color:var(--fg-on-brand);border-color:var(--c-brand);font-weight:var(--fw-bold)}
.pagination .is-gap{border-color:transparent}

/* ── گام‌شمار ─────────────────────────────────────────── */
.stepper{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;counter-reset:step}
.stepper__step{
  display:flex;align-items:center;gap:var(--sp-2);
  font-size:var(--fs-sm);color:var(--fg-muted);counter-increment:step;
}
.stepper__step::before{
  content:counter(step);
  display:grid;place-items:center;inline-size:1.9rem;block-size:1.9rem;flex:none;
  border-radius:var(--r-circle);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;
  background:var(--bg-muted);color:var(--fg-muted);box-shadow:inset 0 0 0 1px var(--line-strong);
}
.stepper__step.is-current{color:var(--fg);font-weight:var(--fw-bold)}
.stepper__step.is-current::before{background:var(--c-brand);color:var(--fg-on-brand);box-shadow:none}
.stepper__step.is-done::before{content:"✓";background:var(--c-success);color:#fff;box-shadow:none}
.stepper__sep{block-size:2px;inline-size:var(--sp-5);flex:none;background:var(--line-strong);border-radius:1px}
@media (max-width:575.98px){.stepper__sep{inline-size:var(--sp-3)}}

/* ── نوارِ ابزار ──────────────────────────────────────── */
.toolbar{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);
  padding:var(--sp-3);background:var(--bg-subtle);
  border:1px solid var(--line);border-radius:var(--r-sm);
}
.toolbar__sep{inline-size:1px;align-self:stretch;background:var(--line-strong);margin-inline:var(--sp-1)}

/* ── نوارِ چسبانِ پایینِ موبایل ───────────────────────── */
.action-bar{
  position:sticky;inset-block-end:0;z-index:var(--z-sticky);
  display:flex;gap:var(--sp-2);align-items:center;
  padding:var(--sp-2) var(--sp-page);
  padding-block-end:calc(var(--sp-2) + env(safe-area-inset-bottom));
  background:var(--bg);border-block-start:1px solid var(--line);box-shadow:var(--sh-md);
}
@media (min-width:768px){.action-bar--mobile-only{display:none}}

/* ═══ cards.css ═══ */
/* ============================================================
   cards.css — کارت، کارتِ هتل/اتاق، نشانِ فاصله، گالری،
               امتیاز و نظر، آواتار، رسانه
   ============================================================ */

.card{
  display:flex;flex-direction:column;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);
  overflow:hidden;
}
.card--pad{padding:var(--sp-4)}
.card--raised{box-shadow:var(--sh-sm);border-color:transparent}
.card--interactive{transition:var(--t-color),box-shadow var(--dur-fast) var(--ease)}
.card--interactive:hover{border-color:var(--c-brand);box-shadow:var(--sh-sm)}
.card--subtle{background:var(--bg-subtle)}
.card--accent{border-inline-start:3px solid var(--c-brand)}
.card.is-selected{border-color:var(--c-brand);box-shadow:inset 0 0 0 1px var(--c-brand)}
.card.is-disabled{opacity:.55;pointer-events:none}

.card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);
  padding:var(--sp-4) var(--sp-4) 0}
.card__body{padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}
.card__foot{padding:var(--sp-3) var(--sp-4);border-block-start:1px solid var(--line);
  background:var(--bg-subtle);display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.card__title{font-size:var(--fs-lg);font-weight:var(--fw-bold)}
.card__title a{color:inherit;text-decoration:none}
.card__title a:hover{color:var(--c-brand-ink)}
.card__media{background:var(--bg-muted)}
.card__media img{inline-size:100%;block-size:100%;object-fit:cover;display:block}

/* ── کارتِ هتل ────────────────────────────────────────── */
.hotel-card{
  display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;
}
.hotel-card__media{background:var(--bg-muted)}
.hotel-card__media img{inline-size:100%;block-size:100%;min-block-size:11rem;object-fit:cover}
.hotel-card__body{padding:0 var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}
.hotel-card__name{font-size:var(--fs-xl);font-weight:var(--fw-bold)}
.hotel-card__name a{color:inherit;text-decoration:none}
.hotel-card__name a:hover{color:var(--c-brand-ink)}
.hotel-card__meta{
  display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);
  color:var(--fg-muted);font-size:var(--fs-sm);
}
.hotel-card__side{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2);
  padding:var(--sp-3) var(--sp-4);
  border-block-start:1px solid var(--line);background:var(--bg-subtle);
}
.hotel-card__side .btn{flex:1 1 100%;text-align:center}

@media (min-width:768px){
  .hotel-card{grid-template-columns:14rem minmax(0,1fr) 12rem;align-items:stretch}
  .hotel-card__side{
    flex-direction:column;align-items:flex-start;justify-content:center;
    border-block-start:0;border-inline-start:1px solid var(--line);background:transparent;
  }
  .hotel-card__side .btn{flex:0 0 auto;inline-size:100%}
  .hotel-card__body{padding-block:var(--sp-4)}
}

/* ── نشانِ فاصله تا حرم ───────────────────────────────
   تنها دایرهٔ صفحه. همه‌چیزِ دیگر گوشه‌تیز است، پس این خودش
   دیده می‌شود بی‌آنکه لازم باشد بزرگ یا پررنگ باشد.
   زائر بینِ دو هتل با همین یک عدد تصمیم می‌گیرد. */
.walk{display:inline-flex;align-items:center;gap:var(--sp-2);margin-block:var(--sp-1)}
.walk__n{
  display:grid;place-items:center;flex:none;
  inline-size:3.1rem;block-size:3.1rem;border-radius:var(--r-circle);
  font-size:1.35rem;font-weight:var(--fw-bold);line-height:1;font-variant-numeric:tabular-nums;
}
.walk__t{font-size:var(--fs-2xs);color:var(--fg-muted);line-height:var(--lh-snug)}
.walk--near .walk__n{background:var(--c-accent);color:#fff}
.walk--near .walk__t{color:var(--c-accent-ink);font-weight:var(--fw-bold)}
.walk--mid  .walk__n{background:var(--c-brand-wash);color:var(--c-brand-ink);box-shadow:inset 0 0 0 2px var(--c-brand)}
.walk--far  .walk__n{background:var(--bg-muted);color:var(--fg-muted);box-shadow:inset 0 0 0 2px var(--line-strong)}
.walk--lg .walk__n{inline-size:3.9rem;block-size:3.9rem;font-size:1.7rem}
.walk--lg .walk__t{font-size:var(--fs-sm)}

/* ── قیمت ─────────────────────────────────────────────── */
.price{display:flex;flex-direction:column;line-height:var(--lh-tight)}
.price__label{font-size:var(--fs-2xs);color:var(--fg-muted)}
.price__value{font-size:1.3rem;font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);
  font-variant-numeric:tabular-nums}
.price__unit{font-size:var(--fs-2xs);color:var(--fg-muted)}
.price__was{font-size:var(--fs-sm);color:var(--fg-subtle);text-decoration:line-through}
.price--none{font-size:var(--fs-sm);color:var(--fg-muted);font-weight:var(--fw-normal)}

/* ── ستاره و امتیاز ───────────────────────────────────── */
.stars{display:inline-flex;gap:1px;color:var(--c-brand);letter-spacing:1px}
.rating{display:inline-flex;align-items:baseline;gap:var(--sp-1)}
.rating__score{font-size:var(--fs-xl);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}
.rating__out{font-size:var(--fs-xs);color:var(--fg-muted)}

/* ورودیِ ستاره — رادیوهای معکوس تا شناوری از راست کار کند */
.rating-input{border:0;padding:0;margin:0;display:flex;flex-direction:row-reverse;
  justify-content:flex-end;gap:2px}
.rating-input input{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.rating-input label{font-size:1.9rem;line-height:1;color:var(--line-strong);cursor:pointer;
  transition:color var(--dur-fast) var(--ease)}
.rating-input input:checked ~ label,
.rating-input label:hover,
.rating-input label:hover ~ label{color:var(--c-brand)}
.rating-input input:focus-visible + label{outline:3px solid var(--c-brand);outline-offset:2px}

/* ── نظر ──────────────────────────────────────────────── */
.review{padding-block:var(--sp-4);border-block-end:1px solid var(--line)}
.review__head{display:flex;align-items:center;gap:var(--sp-2);margin-block-end:var(--sp-2)}
.review__name{font-weight:var(--fw-bold)}
.review__when{font-size:var(--fs-xs);color:var(--fg-muted);margin-inline-start:auto}
.review__body{white-space:pre-line;line-height:var(--lh-loose)}

/* ── آواتار ───────────────────────────────────────────── */
.avatar{
  display:grid;place-items:center;flex:none;
  inline-size:2.4rem;block-size:2.4rem;border-radius:var(--r-circle);
  background:var(--c-brand-wash);color:var(--c-brand-ink);
  font-weight:var(--fw-bold);font-size:var(--fs-sm);overflow:hidden;
}
.avatar img{inline-size:100%;block-size:100%;object-fit:cover}
.avatar--sm{inline-size:1.8rem;block-size:1.8rem;font-size:var(--fs-xs)}
.avatar--lg{inline-size:3.4rem;block-size:3.4rem;font-size:var(--fs-lg)}
.avatar-group{display:flex}
.avatar-group .avatar + .avatar{margin-inline-start:-.6rem;box-shadow:0 0 0 2px var(--bg)}

/* ── گالری ────────────────────────────────────────────── */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(9rem,100%),1fr));gap:var(--sp-2)}
.gallery__item{position:relative;margin:0;border-radius:var(--r-sm);overflow:hidden;
  border:1px solid var(--line);background:var(--bg-muted)}
.gallery__item img{inline-size:100%;block-size:7rem;object-fit:cover}
.gallery__item.is-cover{border-color:var(--c-brand)}
.gallery__tag{
  position:absolute;inset-block-start:var(--sp-1);inset-inline-start:var(--sp-1);
  background:var(--c-brand);color:var(--fg-on-brand);
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);
  border-radius:var(--r-pill);padding:.05rem .5rem;
}
.gallery__actions{display:flex;gap:var(--sp-1);padding:var(--sp-1)}

/* ── لغزنده/چرخان ─────────────────────────────────────── */
.slider{
  display:flex;gap:var(--sp-3);overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-padding-inline:var(--sp-page);-webkit-overflow-scrolling:touch;
  padding-block-end:var(--sp-2);
}
.slider > *{flex:0 0 min(20rem,82%);scroll-snap-align:start}
.slider::-webkit-scrollbar{block-size:6px}
.slider::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-pill)}
.slider-dots{display:flex;gap:var(--sp-1);justify-content:center;margin-block-start:var(--sp-2)}
.slider-dots button{
  inline-size:.5rem;block-size:.5rem;border-radius:var(--r-circle);
  background:var(--line-strong);border:0;cursor:pointer;
}
.slider-dots button[aria-current="true"]{background:var(--c-brand);inline-size:1.3rem;border-radius:var(--r-pill)}

/* ═══ tables.css ═══ */
/* ============================================================
   tables.css — جدول، شبکهٔ داده، فیلتر، مرتب‌سازی
   خطِ عمودی نداریم: در فارسی ستون‌ها با فاصله از هم جدا
   می‌شوند نه با میله — همان کاری که کتابِ درسی می‌کند.
   ============================================================ */

.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}

.table{inline-size:100%;border-collapse:collapse;font-size:var(--fs-sm);min-inline-size:30rem}
.table th,.table td{
  padding:var(--sp-2) var(--sp-3);
  text-align:start;vertical-align:top;
  border-block-end:1px solid var(--line);
}
.table thead th{
  font-size:var(--fs-2xs);letter-spacing:.02em;color:var(--fg-muted);
  font-weight:var(--fw-bold);white-space:nowrap;
  border-block-end:2px solid var(--line-strong);
}
.table tbody tr:hover{background:var(--bg-subtle)}
.table tbody tr.is-selected{background:var(--c-brand-wash)}
.table tbody tr.is-disabled{opacity:.5}
.table tfoot td{font-weight:var(--fw-bold);background:var(--bg-subtle);border-block-end:0}

.table--fixed{table-layout:fixed}
.table--compact th,.table--compact td{padding:var(--sp-1) var(--sp-2)}
.table--zebra tbody tr:nth-child(even){background:var(--bg-subtle)}
.table--bordered th,.table--bordered td{border:1px solid var(--line)}

.table .num,.table .cell--num{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
.table .cell--actions{inline-size:1%;white-space:nowrap}
.table .cell--tight{inline-size:1%;white-space:nowrap}

/* سرستونِ چسبان برای جدولِ بلند */
.table--sticky thead th{
  position:sticky;inset-block-start:0;z-index:var(--z-raised);
  background:var(--bg);
}

/* مرتب‌سازی */
.table th[aria-sort]{cursor:pointer;user-select:none}
.table th[aria-sort]:hover{color:var(--fg)}
.table th[aria-sort]::after{content:"↕";margin-inline-start:.35em;opacity:.4;font-size:.9em}
.table th[aria-sort="ascending"]::after{content:"↑";opacity:1;color:var(--c-brand-ink)}
.table th[aria-sort="descending"]::after{content:"↓";opacity:1;color:var(--c-brand-ink)}

/* ── جدولِ کارتی روی موبایل ───────────────────────────
   هر ردیف یک کارت می‌شود و نامِ ستون از data-label می‌آید،
   تا جدولِ ده‌ستونی روی گوشی خوانده شود. */
@media (max-width:767.98px){
  .table--cards,.table--cards thead,.table--cards tbody,
  .table--cards tr,.table--cards th,.table--cards td{display:block}
  .table--cards thead{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}
  .table--cards tr{
    margin-block-end:var(--sp-3);padding:var(--sp-3);
    border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);
  }
  .table--cards td{
    display:flex;justify-content:space-between;gap:var(--sp-3);
    border:0;border-block-end:1px dashed var(--line);padding:var(--sp-1) 0;
  }
  .table--cards td:last-child{border-block-end:0}
  .table--cards td::before{
    content:attr(data-label);color:var(--fg-muted);font-size:var(--fs-xs);
    font-weight:var(--fw-bold);flex:none;
  }
  .table--cards .cell--num{text-align:end}
}

/* ── فیلترها ──────────────────────────────────────────── */
.filters{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-3);
  margin-block-end:var(--sp-4);
}
.filters .field{min-inline-size:9rem}
.filters__chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);inline-size:100%}
.filter-chip{
  display:inline-flex;align-items:center;gap:var(--sp-1);
  padding:.15rem .6rem;border-radius:var(--r-pill);font-size:var(--fs-xs);
  background:var(--c-brand-wash);border:1px solid var(--c-brand);color:var(--c-brand-ink);
}
.filter-chip button{color:inherit;line-height:1;font-size:1.1em;cursor:pointer}

/* ── شبکهٔ داده (فهرستِ سنگینِ پنل) ───────────────────── */
.datagrid{display:flex;flex-direction:column;gap:var(--sp-3)}
.datagrid__bar{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-3);
  background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--r-sm);
}
.datagrid__count{font-size:var(--fs-xs);color:var(--fg-muted);margin-inline-start:auto}
.datagrid__empty{padding:var(--sp-8);text-align:center;color:var(--fg-muted)}

/* ── کارتِ آمار (KPI) ─────────────────────────────────── */
.kpi-grid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(min(9rem,100%),1fr))}
.kpi{
  padding:var(--sp-3) var(--sp-4);
  background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--r-sm);
}
.kpi__value{
  display:block;font-size:1.6rem;font-weight:var(--fw-bold);line-height:1.15;
  letter-spacing:var(--ls-tight);font-variant-numeric:tabular-nums;
}
.kpi__label{font-size:var(--fs-xs);color:var(--fg-muted)}
.kpi__delta{font-size:var(--fs-xs);font-weight:var(--fw-bold)}
.kpi__delta--up{color:var(--c-success)}
.kpi__delta--down{color:var(--c-danger)}
.kpi--accent{border-color:var(--c-brand)}
.kpi--accent .kpi__value{color:var(--c-brand-ink)}
.kpi--warn{border-color:var(--c-accent)}
.kpi--warn .kpi__value{color:var(--c-accent-ink)}

/* ═══ calendar.css ═══ */
/* ============================================================
   calendar.css — تاریخ، تقویم، ساعت
   ── قاعدهٔ اصلی ──
   جایگاهِ تقویم در چیدمان تابعِ راست‌به‌چپ است، ولی محتوای
   داخلی‌اش چپ‌به‌راست و ترتیبِ تاریخ YYYY/MM/DD.
   ============================================================ */

.date-input,.date-picker,.calendar{
  direction:ltr;
  text-align:left;
}

/* ── ورودیِ تاریخ ─────────────────────────────────────── */
.date-field{display:flex;flex-direction:column;gap:var(--sp-1);min-inline-size:0}
.date-field > .field__label{direction:rtl;text-align:right}
.date-field > .field__hint,.date-field > .field__error{direction:rtl;text-align:right}

.date-input{
  inline-size:100%;min-block-size:var(--tap);
  padding-inline:var(--sp-3);padding-block:var(--sp-2);
  font-family:var(--font-sans);font-size:var(--fs-md);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;
  color:var(--fg);background:var(--bg);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);
  transition:var(--t-color),box-shadow var(--dur-fast) var(--ease);
}
.date-input:hover{border-color:var(--c-brand)}
.date-input:focus{outline:none;border-color:var(--c-brand);box-shadow:var(--sh-focus)}
.date-input[disabled]{opacity:.55;background:var(--bg-muted);cursor:not-allowed}
.date-input.is-error{border-color:var(--c-danger);background:var(--c-danger-bg)}
.date-input::placeholder{color:var(--fg-subtle);letter-spacing:0}

/* دکمهٔ تقویمِ مرورگر سمتِ چپ می‌ماند چون خودِ فیلد LTR است */
.date-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55}
.date-input:hover::-webkit-calendar-picker-indicator{opacity:1}

/* بازهٔ تاریخ */
.date-range{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:var(--sp-2)}
.date-range__sep{padding-block-end:var(--sp-3);color:var(--fg-subtle)}
@media (max-width:575.98px){
  .date-range{grid-template-columns:1fr}
  .date-range__sep{display:none}
}

/* ── جعبهٔ انتخابگر ───────────────────────────────────── */
.date-picker{
  position:absolute;z-index:var(--z-popover);
  inset-block-start:calc(100% + 4px);inset-inline-start:0;   /* جایگاه تابعِ RTL */
  inline-size:min(20rem,calc(100vw - 2rem));
  padding:var(--sp-3);
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-md);
  box-shadow:var(--sh-lg);
}
.date-picker[hidden]{display:none}
.date-picker-wrap{position:relative}

/* ── تقویم ────────────────────────────────────────────── */
.calendar__head{
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);
  margin-block-end:var(--sp-3);
}
.calendar__title{
  font-weight:var(--fw-bold);font-size:var(--fs-md);
  font-variant-numeric:tabular-nums;
}
.calendar__nav{display:flex;gap:var(--sp-1)}
.calendar__nav .icon-btn{inline-size:36px;block-size:36px}

.calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.calendar__dow{
  text-align:center;font-size:var(--fs-2xs);color:var(--fg-muted);
  padding-block-end:var(--sp-1);
}

.calendar__day{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  min-block-size:2.4rem;padding:2px;
  font-size:var(--fs-sm);font-variant-numeric:tabular-nums;
  color:var(--fg);background:transparent;
  border:1px solid transparent;border-radius:var(--r-sm);
  cursor:pointer;transition:var(--t-color);
}
.calendar__day:hover:not(:disabled){background:var(--bg-muted)}
.calendar__day:focus-visible{outline:3px solid var(--c-brand);outline-offset:-1px}
.calendar__day--out{opacity:.35;cursor:default}
.calendar__day--today{box-shadow:inset 0 0 0 2px var(--c-brand)}
.calendar__day--selected{background:var(--c-brand);color:var(--fg-on-brand);font-weight:var(--fw-bold)}
.calendar__day--in-range{background:var(--c-brand-wash)}
.calendar__day--range-start,.calendar__day--range-end{
  background:var(--c-brand);color:var(--fg-on-brand);font-weight:var(--fw-bold);
}
.calendar__day:disabled,.calendar__day--disabled{
  opacity:.3;cursor:not-allowed;text-decoration:line-through;
}
.calendar__day--available{border-color:var(--c-success)}
.calendar__day--ask{border-color:var(--line-strong);background:var(--bg-subtle)}
.calendar__day--full,.calendar__day--closed{
  border-color:var(--c-danger);background:var(--c-danger-bg);color:var(--c-danger);
}
/* قیمت یا ظرفیت زیرِ عدد */
.calendar__meta{font-size:.6rem;line-height:1;opacity:.85}

.calendar__legend{
  direction:rtl;text-align:right;
  display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);
  margin-block-start:var(--sp-3);font-size:var(--fs-2xs);color:var(--fg-muted);
}
.calendar__legend span::before{
  content:"";display:inline-block;inline-size:.6rem;block-size:.6rem;
  border-radius:2px;margin-inline-end:.35rem;vertical-align:-1px;background:currentColor;
}

.calendar__foot{
  direction:rtl;display:flex;justify-content:space-between;gap:var(--sp-2);
  margin-block-start:var(--sp-3);padding-block-start:var(--sp-3);
  border-block-start:1px solid var(--line);
}

/* ── ساعت ─────────────────────────────────────────────── */
.time-input{
  direction:ltr;text-align:left;
  min-block-size:var(--tap);inline-size:100%;
  padding-inline:var(--sp-3);padding-block:var(--sp-2);
  font-variant-numeric:tabular-nums;
  background:var(--bg);color:var(--fg);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);
}
.time-input:focus{outline:none;border-color:var(--c-brand);box-shadow:var(--sh-focus)}

/* ── نمایشِ فقط‌خواندنیِ تاریخ در متنِ فارسی ───────────── */
.date-text{direction:ltr;unicode-bidi:isolate;display:inline-block;font-variant-numeric:tabular-nums}

/* ═══ booking.css ═══ */
/* ============================================================
   booking.css — ویجتِ جست‌وجو، اتاق، خلاصهٔ رزرو، پرداخت،
                 تأیید، تور، پروفایل، ورود/ثبت‌نام
   ============================================================ */

/* ── ویجتِ جست‌وجو ────────────────────────────────────── */
.searchbox{
  margin-block-start:var(--sp-5);padding:var(--sp-4);
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);
  box-shadow:var(--sh-sm);
}
.hero--image .searchbox{border-color:transparent;box-shadow:var(--sh-lg)}
.searchbox__row{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-end}
.searchbox__row + .searchbox__row{margin-block-start:var(--sp-3)}
.searchbox .field{flex:1 1 10rem;min-inline-size:0}
.searchbox .field--grow{flex:1 1 14rem}
.searchbox .btn{flex:0 0 auto}
.searchbox__note{margin-block-start:var(--sp-3);font-size:var(--fs-xs);color:var(--fg-muted)}
/* یادداشتِ داخلِ کارتِ سفید هرگز سفید نمی‌شود، حتی روی سرصفحهٔ عکس‌دار */
.hero--image .searchbox .searchbox__note{color:var(--fg-muted);text-shadow:none}

/* ── جدولِ اتاق ───────────────────────────────────────── */
.rooms{inline-size:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.rooms th,.rooms td{padding:var(--sp-2) var(--sp-3);border-block-end:1px solid var(--line);text-align:start}
.rooms thead th{font-size:var(--fs-2xs);color:var(--fg-muted);border-block-end:2px solid var(--line-strong)}
.rooms tr.is-full{opacity:.55}
.rooms .pick{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.rooms .pick .select{inline-size:auto;min-inline-size:7rem}

@media (max-width:767.98px){
  .rooms,.rooms thead,.rooms tbody,.rooms tr,.rooms th,.rooms td{display:block}
  .rooms thead{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}
  .rooms tr{margin-block-end:var(--sp-3);padding:var(--sp-3);
    border:1px solid var(--line);border-radius:var(--r-sm)}
  .rooms td{display:flex;justify-content:space-between;gap:var(--sp-3);
    border:0;border-block-end:1px dashed var(--line);padding:var(--sp-1) 0}
  .rooms td:last-child{border-block-end:0}
  .rooms td::before{content:attr(data-label);color:var(--fg-muted);font-size:var(--fs-xs);
    font-weight:var(--fw-bold);flex:none}
  .rooms .pick .btn{inline-size:100%}
}

/* ── قیفِ رزرو ────────────────────────────────────────── */
.booking{display:grid;gap:var(--sp-5);grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.booking{grid-template-columns:minmax(0,1fr) 20rem;align-items:start}}

.booking__main{min-inline-size:0}
.booking__aside{
  position:sticky;inset-block-start:calc(var(--header-h) + var(--sp-3));
  padding:var(--sp-4);
  background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--r-sm);
}

/* ── خلاصهٔ رزرو ──────────────────────────────────────── */
.summary__kv{display:grid;gap:var(--sp-1);margin-block-end:var(--sp-3)}
.summary__kv > div{
  display:flex;justify-content:space-between;gap:var(--sp-3);
  font-size:var(--fs-sm);padding-block-end:var(--sp-1);
  border-block-end:1px dashed var(--line);
}
.summary__kv span{color:var(--fg-muted)}
.summary__kv b{font-weight:var(--fw-bold);text-align:end}

.summary__line{
  display:flex;justify-content:space-between;gap:var(--sp-2);
  font-size:var(--fs-sm);color:var(--fg-muted);margin-block:var(--sp-1);
}
.summary__line--off{color:var(--c-success)}
.summary__total{
  display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-2);
  padding-block-start:var(--sp-2);margin-block-start:var(--sp-2);
  border-block-start:1px solid var(--line-strong);
}
.summary__total b{font-size:var(--fs-xl);font-variant-numeric:tabular-nums}
.summary__irt{font-size:var(--fs-xs);color:var(--fg-muted);margin-block-start:var(--sp-1)}
.summary__rules{font-size:var(--fs-xs);color:var(--fg-muted);margin-block-start:var(--sp-3);
  padding-block-start:var(--sp-3);border-block-start:1px solid var(--line)}

/* ── کد تخفیف ─────────────────────────────────────────── */
.coupon{
  display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:flex-end;
  margin-block-start:var(--sp-4);padding-block-start:var(--sp-4);
  border-block-start:1px dashed var(--line);
}
.coupon label{flex:0 0 100%;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--fg-muted)}
.coupon .input{flex:1;min-inline-size:8rem}
.coupon .btn{flex:0 0 auto}
.coupon__msg{flex:0 0 100%;font-size:var(--fs-xs);margin-block-start:var(--sp-1)}
.coupon__msg--ok{color:var(--c-success);font-weight:var(--fw-bold)}
.coupon__msg--err{color:var(--c-danger)}

/* ── مسافران ──────────────────────────────────────────── */
.guest{
  padding:var(--sp-3);margin-block-end:var(--sp-3);
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-subtle);
}
.guest__legend{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--fg-muted);
  margin-block-end:var(--sp-2)}
.guest__grid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(min(10rem,100%),1fr))}

/* ── پرداخت ───────────────────────────────────────────── */
.pay{display:grid;gap:var(--sp-4);max-inline-size:var(--container-text)}
.pay__amount{
  display:flex;flex-direction:column;gap:var(--sp-1);align-items:center;text-align:center;
  padding:var(--sp-5);
  background:var(--c-brand-wash);border:1px solid var(--c-brand);border-radius:var(--r-md);
}
.pay__amount b{font-size:1.9rem;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;
  letter-spacing:var(--ls-tight)}
.pay__amount span{font-size:var(--fs-sm);color:var(--fg-muted)}
.pay__method{
  padding:var(--sp-4);background:var(--bg-subtle);
  border:1px solid var(--line);border-radius:var(--r-sm);white-space:pre-line;
}
.pay__card{
  font-family:var(--font-mono);font-size:var(--fs-lg);letter-spacing:.12em;
  direction:ltr;unicode-bidi:isolate;display:inline-block;
  background:var(--bg);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);
  border:1px dashed var(--line-strong);
}

/* ── تأیید / رسید ─────────────────────────────────────── */
.receipt{
  max-inline-size:52rem;margin-inline:auto;padding:var(--sp-6);
  background:var(--bg);border:1px solid var(--line);
}
.receipt__top{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-4);
  padding-block-end:var(--sp-4);margin-block-end:var(--sp-5);
  border-block-end:3px solid var(--c-brand);
}
.receipt__code{font-size:var(--fs-xl);font-weight:var(--fw-bold);direction:ltr;unicode-bidi:isolate}
.receipt__stamp{
  border:1px dashed var(--c-brand);border-radius:var(--r-sm);
  padding:var(--sp-6) var(--sp-7);color:var(--c-brand-ink);font-size:var(--fs-xs);
}

/* ── تور ──────────────────────────────────────────────── */
.tour-grid{display:grid;gap:var(--sp-4)}
.tour-card{
  display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;
}
.tour-card__media img{inline-size:100%;block-size:100%;min-block-size:10rem;object-fit:cover}
.tour-card__body{padding:0 var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}
.tour-card__side{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2);
  padding:var(--sp-3) var(--sp-4);background:var(--bg-subtle);border-block-start:1px solid var(--line);
}
@media (min-width:768px){
  .tour-card{grid-template-columns:15rem minmax(0,1fr) 12rem}
  .tour-card__side{flex-direction:column;align-items:flex-start;justify-content:center;
    border-block-start:0;border-inline-start:1px solid var(--line)}
}
.tour-facts{display:flex;flex-direction:column;gap:var(--sp-2)}
.tour-facts > div{
  display:flex;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-sm);
  padding-block-end:var(--sp-1);border-block-end:1px dashed var(--line);
}
.tour-facts span{color:var(--fg-muted)}

.list-yes,.list-no{list-style:none;padding:0;margin-block-start:var(--sp-2)}
.list-yes li,.list-no li{position:relative;padding-inline-start:1.5rem;margin-block-end:var(--sp-1);
  line-height:var(--lh-normal)}
.list-yes li::before{content:"✓";position:absolute;inset-inline-start:0;color:var(--c-success);font-weight:var(--fw-bold)}
.list-no li::before{content:"×";position:absolute;inset-inline-start:0;color:var(--c-danger);font-weight:var(--fw-bold)}

/* ── ورود / ثبت‌نام / پروفایل ─────────────────────────── */
.auth{
  display:grid;place-items:center;min-block-size:100svh;padding:var(--sp-5);
  background:var(--bg-subtle);
}
.auth__box{
  inline-size:min(24rem,100%);padding:var(--sp-6);
  display:flex;flex-direction:column;gap:var(--sp-4);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-sm);
}
.auth__title{font-size:var(--fs-xl);font-weight:var(--fw-bold)}
.auth__sub{font-size:var(--fs-sm);color:var(--fg-muted)}

.profile{display:grid;gap:var(--sp-5);grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){.profile{grid-template-columns:16rem minmax(0,1fr)}}
.profile__head{display:flex;align-items:center;gap:var(--sp-3);margin-block-end:var(--sp-4)}

/* ═══ dashboard.css ═══ */
/* ============================================================
   dashboard.css — پوستهٔ پنل، سربرگ، کارتِ آمار، پنل، اکشن،
                   نمودارِ بدونِ کتابخانه، قیف
   ============================================================ */

.dash{display:grid;grid-template-columns:minmax(0,1fr);min-block-size:100svh;background:var(--bg)}
.dash__header{
  grid-column:1/-1;
  display:flex;align-items:center;gap:var(--sp-4);
  padding:var(--sp-2) var(--sp-page);min-block-size:var(--header-h);
  background:var(--bg-subtle);border-block-end:1px solid var(--line);
}
.dash__who{margin-inline-start:auto;font-size:var(--fs-xs);color:var(--fg-muted)}
.dash__main{grid-row:auto;min-inline-size:0;padding:var(--sp-5) var(--sp-page) var(--sp-9)}

@media (min-width:1024px){
  .dash{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
  .dash__sidebar{grid-row:2;grid-column:1}
  .dash__main{grid-row:2;grid-column:2}
}

/* ── پنلِ محتوا ───────────────────────────────────────── */
.panel{
  padding:var(--sp-4);margin-block-end:var(--sp-4);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);
}
.panel__head{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);
  margin-block-end:var(--sp-3);
}
.panel__title{font-size:var(--fs-lg);font-weight:var(--fw-bold)}
.panel--subtle{background:var(--bg-subtle)}
.panel--accent{border-inline-start:3px solid var(--c-brand)}

/* ── سرِ صفحه ─────────────────────────────────────────── */
.page-head{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);
  margin-block-end:var(--sp-4);
}
.page-head h1{font-size:var(--fs-xl)}
.page-head__actions{margin-inline-start:auto;display:flex;flex-wrap:wrap;gap:var(--sp-2)}

/* ── فرمِ پنل ─────────────────────────────────────────── */
.panel-form{
  display:grid;gap:var(--sp-3);
  grid-template-columns:repeat(auto-fit,minmax(min(13rem,100%),1fr));
  align-items:end;
}
.panel-form > .field--wide,.panel-form > .form-actions{grid-column:1/-1}

/* ── نمودارِ ستونی، بدونِ کتابخانه ────────────────────
   یک کتابخانهٔ نمودار برای سی ستون، صد کیلوبایت جاوااسکریپت به
   پنلی اضافه می‌کند که باید از موبایلِ کندِ کربلا هم باز شود. */
.chart{
  display:flex;align-items:flex-end;gap:2px;block-size:8rem;
  padding:var(--sp-1);background:var(--bg-subtle);border-radius:var(--r-sm);
}
.chart__col{position:relative;flex:1;block-size:100%;display:flex;align-items:flex-end;justify-content:center}
.chart__bar,.chart__bar2{position:absolute;inset-block-end:0;border-start-start-radius:2px;border-start-end-radius:2px}
.chart__bar{inline-size:100%;background:var(--c-brand-wash);border:1px solid var(--c-brand)}
.chart__bar2{inline-size:56%;background:var(--c-brand)}
.chart__axis{display:flex;justify-content:space-between;font-size:var(--fs-2xs);
  color:var(--fg-muted);margin-block-start:var(--sp-1)}

/* ── قیف ──────────────────────────────────────────────── */
.funnel{display:flex;flex-direction:column;gap:var(--sp-2)}
.funnel__row{display:grid;grid-template-columns:10rem minmax(0,1fr) 5.5rem;gap:var(--sp-3);align-items:center}
.funnel__label b{display:block;font-size:var(--fs-sm)}
.funnel__label span{display:block;font-size:var(--fs-2xs);color:var(--fg-muted);line-height:var(--lh-snug)}
.funnel__track{background:var(--bg-muted);border-radius:var(--r-pill);block-size:22px;overflow:hidden}
.funnel__bar{
  block-size:100%;inline-size:var(--val,1%);
  background:linear-gradient(90deg,var(--c-brand),var(--c-brand-soft));
  border-radius:var(--r-pill);transition:inline-size var(--dur-slow) var(--ease);
}
.funnel__num{text-align:end;font-variant-numeric:tabular-nums}
.funnel__num b{font-size:var(--fs-md)}
.funnel__num span{display:block;font-size:var(--fs-xs);color:var(--fg-muted)}
@media (max-width:767.98px){
  .funnel__row{grid-template-columns:minmax(0,1fr) 4.5rem}
  .funnel__track{grid-column:1/-1}
}

/* ── سطرِ عملیات ──────────────────────────────────────── */
.actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-block-start:var(--sp-3)}

/* ── چیپِ برچسب ──────────────────────────────────────── */
.tag{
  display:inline-block;font-size:var(--fs-2xs);
  background:var(--c-brand-wash);border:1px solid var(--c-brand);color:var(--c-brand-ink);
  border-radius:var(--r-pill);padding:.05rem .6rem;margin-inline-end:.25rem;
}

/* ── پیغامِ لحظه‌ای ───────────────────────────────────── */
.flash{
  padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);
  margin-block-end:var(--sp-4);font-size:var(--fs-sm);
  border:1px solid var(--line);border-inline-start:3px solid var(--fg-muted);
}
.flash--ok{background:var(--c-success-bg);border-color:var(--c-success-line);
  border-inline-start-color:var(--c-success);color:var(--c-success)}
.flash--err{background:var(--c-danger-bg);border-color:var(--c-danger-line);
  border-inline-start-color:var(--c-danger);color:var(--c-danger)}

/* ═══ cms.css ═══ */
/* ============================================================
   cms.css — ویرایشگر، مدیر فایل/تصویر، آپلود، مودال، کشو،
             برگهٔ پایین، اعلان
   ============================================================ */

/* ── ویرایشگر ─────────────────────────────────────────── */
.editor{display:flex;flex-direction:column;gap:var(--sp-2)}
.editor__tools{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.editor__tools button{
  font-size:var(--fs-xs);min-block-size:34px;padding-inline:var(--sp-3);cursor:pointer;
  background:var(--bg-subtle);color:var(--fg);
  border:1px solid var(--line);border-radius:var(--r-sm);
}
.editor__tools button:hover{border-color:var(--c-brand);color:var(--c-brand-ink)}
.editor__tools button[aria-pressed="true"]{background:var(--c-brand-wash);border-color:var(--c-brand)}
.editor__area{
  min-block-size:16rem;font-family:var(--font-mono);font-size:var(--fs-sm);
  line-height:var(--lh-normal);resize:vertical;
}
.editor__preview{
  padding:var(--sp-4);margin-block-start:var(--sp-2);
  background:var(--bg-subtle);border:1px dashed var(--c-brand);border-radius:var(--r-sm);
}
.editor__preview[hidden]{display:none}
.editor__count{font-size:var(--fs-2xs);color:var(--fg-muted);text-align:end}

/* ── مدیر فایل و تصویر ────────────────────────────────── */
.filemanager{display:grid;gap:var(--sp-3);grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.filemanager{grid-template-columns:14rem minmax(0,1fr)}}
.filemanager__tree{
  padding:var(--sp-3);background:var(--bg-subtle);
  border:1px solid var(--line);border-radius:var(--r-sm);
}
.filemanager__tree a{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-1) var(--sp-2);min-block-size:36px;
  color:var(--fg);text-decoration:none;font-size:var(--fs-sm);border-radius:var(--r-xs);
}
.filemanager__tree a:hover{background:var(--c-brand-wash)}
.filemanager__tree a.is-active{background:var(--c-brand-wash);color:var(--c-brand-ink);font-weight:var(--fw-bold)}

.filegrid{display:grid;gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(min(8rem,100%),1fr))}
.file{
  position:relative;display:flex;flex-direction:column;gap:var(--sp-1);
  padding:var(--sp-2);text-align:center;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);
  cursor:pointer;transition:var(--t-color);
}
.file:hover{border-color:var(--c-brand)}
.file.is-selected{border-color:var(--c-brand);box-shadow:inset 0 0 0 1px var(--c-brand);
  background:var(--c-brand-wash)}
.file__thumb{
  block-size:5.5rem;display:grid;place-items:center;overflow:hidden;
  background:var(--bg-muted);border-radius:var(--r-xs);
}
.file__thumb img{inline-size:100%;block-size:100%;object-fit:cover}
.file__name{font-size:var(--fs-2xs);color:var(--fg-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file__check{position:absolute;inset-block-start:var(--sp-1);inset-inline-end:var(--sp-1)}

/* پیشرفتِ آپلود */
.upload-item{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2);border-block-end:1px solid var(--line);font-size:var(--fs-sm);
}
.upload-item__bar{flex:1;min-inline-size:4rem}
.upload-item.is-done{color:var(--c-success)}
.upload-item.is-error{color:var(--c-danger)}

/* ── مودال ────────────────────────────────────────────── */
.modal{
  position:fixed;inset:0;z-index:var(--z-modal);
  display:grid;place-items:center;padding:var(--sp-4);
  background:rgba(15,13,9,.55);
  animation:fade var(--dur-fast) var(--ease);
}
.modal[hidden]{display:none}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal__box{
  inline-size:min(34rem,100%);max-block-size:calc(100svh - 2rem);overflow:auto;
  background:var(--bg);border-radius:var(--r-md);box-shadow:var(--sh-lg);
  animation:pop var(--dur-mid) var(--ease-out);
}
@keyframes pop{from{opacity:0;translate:0 .8rem;scale:.98}to{opacity:1;translate:0 0;scale:1}}
.modal__head{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-4);border-block-end:1px solid var(--line);
}
.modal__title{display:block;font-size:var(--fs-lg);font-weight:var(--fw-bold)}
.modal__close{margin-inline-start:auto}
.modal__body{padding:var(--sp-4)}
.modal__foot{
  display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:flex-end;
  padding:var(--sp-3) var(--sp-4);border-block-start:1px solid var(--line);background:var(--bg-subtle);
}
.modal--wide .modal__box{inline-size:min(56rem,100%)}

/* عنصر dialog بومی هم همین ظاهر را بگیرد */
dialog{border:0;padding:0;background:transparent;max-inline-size:none;max-block-size:none}
dialog::backdrop{background:rgba(15,13,9,.55)}

/* ── کشو ──────────────────────────────────────────────── */
.drawer{
  position:fixed;inset-block:0;inset-inline-end:0;z-index:var(--z-drawer);
  inline-size:min(22rem,90vw);display:flex;flex-direction:column;
  background:var(--bg);border-inline-start:1px solid var(--line);box-shadow:var(--sh-lg);
  animation:drawer-in var(--dur-mid) var(--ease-out);
}
/* در راست‌به‌چپ کشو از سمتِ راست می‌آید */
@keyframes drawer-in{from{translate:100% 0}to{translate:0 0}}
.drawer[hidden]{display:none}
.drawer__head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);
  border-block-end:1px solid var(--line)}
.drawer__body{flex:1;overflow:auto;padding:var(--sp-4)}
.drawer__foot{padding:var(--sp-3) var(--sp-4);border-block-start:1px solid var(--line);
  background:var(--bg-subtle)}
.scrim{position:fixed;inset:0;z-index:calc(var(--z-drawer) - 1);background:rgba(15,13,9,.5)}
.scrim[hidden]{display:none}

/* ── برگهٔ پایین (موبایل) ─────────────────────────────── */
.sheet{
  position:fixed;inset-inline:0;inset-block-end:0;z-index:var(--z-drawer);
  max-block-size:85svh;overflow:auto;
  padding:var(--sp-4);padding-block-end:calc(var(--sp-4) + env(safe-area-inset-bottom));
  background:var(--bg);border-start-start-radius:var(--r-xl);border-start-end-radius:var(--r-xl);
  box-shadow:var(--sh-lg);animation:sheet-in var(--dur-mid) var(--ease-out);
}
@keyframes sheet-in{from{translate:0 100%}to{translate:0 0}}
.sheet[hidden]{display:none}
.sheet__grip{
  inline-size:2.5rem;block-size:.25rem;border-radius:var(--r-pill);
  background:var(--line-strong);margin:0 auto var(--sp-3);
}

/* ── اعلان ────────────────────────────────────────────── */
.notif{
  display:flex;gap:var(--sp-3);align-items:flex-start;
  padding:var(--sp-3);border-block-end:1px solid var(--line);
}
.notif.is-unread{background:var(--c-brand-wash)}
.notif__body{flex:1;min-inline-size:0}
.notif__title{display:block;font-weight:var(--fw-bold);font-size:var(--fs-sm)}
.notif__text{font-size:var(--fs-xs);color:var(--fg-muted)}
.notif__when{font-size:var(--fs-2xs);color:var(--fg-subtle);white-space:nowrap}

/* ═══ states.css ═══ */
/* ============================================================
   states.css — نشان، وضعیت، هشدار، توست، ابزارک، پاپ‌اور،
                اسکلت، چرخنده، پیشرفت، حالتِ خالی/خطا/موفق
   ============================================================ */

/* ── نشان ─────────────────────────────────────────────── */
.badge{
  display:inline-flex;align-items:center;gap:.3em;
  padding:.1rem .6rem;border-radius:var(--r-pill);
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);line-height:1.7;
  background:var(--bg-muted);color:var(--fg-muted);border:1px solid var(--line);
}
.badge--brand{background:var(--c-brand-wash);color:var(--c-brand-ink);border-color:var(--c-brand)}
.badge--success{background:var(--c-success-bg);color:var(--c-success);border-color:var(--c-success-line)}
.badge--warning{background:var(--c-warning-bg);color:var(--c-warning);border-color:var(--c-warning-line)}
.badge--danger{background:var(--c-danger-bg);color:var(--c-danger);border-color:var(--c-danger-line)}
.badge--info{background:var(--c-info-bg);color:var(--c-info);border-color:var(--c-info-line)}
.badge--solid{background:var(--c-brand);color:var(--fg-on-brand);border-color:var(--c-brand)}
.badge--dot::before{content:"";inline-size:.45em;block-size:.45em;border-radius:var(--r-circle);
  background:currentColor;flex:none}

/* شمارندهٔ روی آیکون */
.badge-count{
  position:absolute;inset-block-start:-.3rem;inset-inline-end:-.3rem;
  min-inline-size:1.15rem;block-size:1.15rem;padding-inline:.25rem;
  display:grid;place-items:center;border-radius:var(--r-pill);
  background:var(--c-danger);color:#fff;font-size:.65rem;font-weight:var(--fw-bold);
}

/* ── وضعیت (چیپِ چرخهٔ کار) ───────────────────────────── */
.status{display:inline-flex;align-items:center;gap:.35em;
  padding:.1rem .65rem;border-radius:var(--r-pill);
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);
  border:1px solid var(--line);background:var(--bg);color:var(--fg-muted)}
.status--new,.status--pending{background:var(--c-brand-wash);color:var(--c-brand-ink);border-color:var(--c-brand)}
.status--ok,.status--confirmed,.status--paid{background:var(--c-success-bg);color:var(--c-success);border-color:var(--c-success-line)}
.status--warn,.status--await{background:var(--c-warning-bg);color:var(--c-warning);border-color:var(--c-warning-line)}
.status--off,.status--cancelled,.status--error{background:var(--c-danger-bg);color:var(--c-danger);border-color:var(--c-danger-line)}
.status--muted{opacity:.7}

/* ── هشدار ────────────────────────────────────────────── */
.alert{
  display:flex;gap:var(--sp-3);align-items:flex-start;
  padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);
  border:1px solid var(--line);border-inline-start:3px solid var(--fg-muted);
  background:var(--bg-subtle);font-size:var(--fs-sm);line-height:var(--lh-snug);
}
/* <b> است، پس بدونِ display:block نه margin می‌گیرد نه سطرِ خودش را —
   نتیجه‌اش «یادداشتپیامِ خنثی» می‌شد. */
.alert__title{display:block;font-weight:var(--fw-bold);margin-block-end:var(--sp-1)}
.alert--success{background:var(--c-success-bg);border-color:var(--c-success-line);
  border-inline-start-color:var(--c-success);color:var(--c-success)}
.alert--warning{background:var(--c-warning-bg);border-color:var(--c-warning-line);
  border-inline-start-color:var(--c-warning);color:var(--c-warning)}
.alert--danger{background:var(--c-danger-bg);border-color:var(--c-danger-line);
  border-inline-start-color:var(--c-danger);color:var(--c-danger)}
.alert--info{background:var(--c-info-bg);border-color:var(--c-info-line);
  border-inline-start-color:var(--c-info);color:var(--c-info)}
.alert__close{margin-inline-start:auto}

/* ── توست ─────────────────────────────────────────────── */
.toast-stack{
  position:fixed;inset-block-end:var(--sp-4);inset-inline-start:var(--sp-4);
  z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--sp-2);
  max-inline-size:min(22rem,calc(100vw - 2rem));
  padding-block-end:env(safe-area-inset-bottom);
}
.toast{
  display:flex;gap:var(--sp-2);align-items:flex-start;
  padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);
  background:var(--bg);border:1px solid var(--line-strong);
  box-shadow:var(--sh-md);font-size:var(--fs-sm);
  animation:toast-in var(--dur-mid) var(--ease-out);
}
@keyframes toast-in{from{opacity:0;translate:0 .6rem}to{opacity:1;translate:0 0}}
.toast--success{border-inline-start:3px solid var(--c-success)}
.toast--danger{border-inline-start:3px solid var(--c-danger)}
.toast--warning{border-inline-start:3px solid var(--c-warning)}

/* ── ابزارک و پاپ‌اور ─────────────────────────────────── */
.tooltip{position:relative}
.tooltip::after{
  content:attr(data-tip);
  position:absolute;inset-block-end:calc(100% + 6px);inset-inline-start:50%;
  translate:50% 0;                          /* در RTL از راست نصف می‌شود */
  z-index:var(--z-popover);
  padding:.25rem .6rem;border-radius:var(--r-xs);
  background:var(--fg);color:var(--bg);font-size:var(--fs-2xs);white-space:nowrap;
  opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease);
}
.tooltip:hover::after,.tooltip:focus-visible::after{opacity:1}

.popover{
  position:absolute;z-index:var(--z-popover);
  inline-size:min(20rem,calc(100vw - 2rem));padding:var(--sp-4);
  background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-md);
  box-shadow:var(--sh-lg);
}
.popover[hidden]{display:none}

/* ── اسکلت ────────────────────────────────────────────── */
.skeleton{
  background:linear-gradient(90deg,var(--bg-muted) 25%,var(--bg-subtle) 37%,var(--bg-muted) 63%);
  background-size:400% 100%;
  animation:shimmer 1.4s ease-in-out infinite;
  border-radius:var(--r-xs);color:transparent!important;user-select:none;
}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.skeleton--text{block-size:.9em;margin-block:.25em}
.skeleton--title{block-size:1.4em;inline-size:60%}
.skeleton--box{block-size:8rem}
.skeleton--circle{border-radius:var(--r-circle);inline-size:2.4rem;block-size:2.4rem}
@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* ── چرخنده ───────────────────────────────────────────── */
.spinner{
  display:inline-block;inline-size:1.2rem;block-size:1.2rem;
  border:2px solid currentColor;border-block-start-color:transparent;
  border-radius:var(--r-circle);animation:spin .7s linear infinite;
}
.spinner--lg{inline-size:2.2rem;block-size:2.2rem;border-width:3px}
@media (prefers-reduced-motion:reduce){.spinner{animation:none;opacity:.5;border-block-start-color:currentColor}}

/* ── پیشرفت ───────────────────────────────────────────── */
.progress{
  block-size:.5rem;inline-size:100%;overflow:hidden;
  background:var(--bg-muted);border-radius:var(--r-pill);
}
.progress__bar{
  block-size:100%;inline-size:var(--val,0%);
  background:var(--c-brand);border-radius:var(--r-pill);
  transition:inline-size var(--dur-slow) var(--ease);
}
.progress--success .progress__bar{background:var(--c-success)}
.progress--danger .progress__bar{background:var(--c-danger)}

/* ── حالتِ خالی / خطا / موفق ─────────────────────────── */
.state-box{
  display:grid;place-items:center;gap:var(--sp-2);text-align:center;
  padding:var(--sp-8) var(--sp-4);
  background:var(--bg-subtle);border:1px dashed var(--line-strong);border-radius:var(--r-md);
}
.state-box__icon{font-size:2rem;line-height:1;opacity:.6}
.state-box__title{display:block;font-size:var(--fs-lg);font-weight:var(--fw-bold)}
.state-box__text{color:var(--fg-muted);max-inline-size:var(--measure)}
.state-box--error{background:var(--c-danger-bg);border-color:var(--c-danger-line)}
.state-box--success{background:var(--c-success-bg);border-color:var(--c-success-line)}

/* ── پوششِ در حال بارگذاری ───────────────────────────── */
.is-busy{position:relative;pointer-events:none}
.is-busy::after{
  content:"";position:absolute;inset:0;z-index:var(--z-raised);
  background:color-mix(in srgb,var(--bg) 65%,transparent);
  backdrop-filter:blur(1px);
}

/* ═══ utilities.css ═══ */
/* ============================================================
   utilities.css — کمکی‌ها، همه با خاصیتِ منطقی
   ============================================================ */

/* ── نمایش ────────────────────────────────────────────── */
.u-hidden{display:none!important}
.u-block{display:block}
.u-inline{display:inline}
.u-inline-block{display:inline-block}
.u-flex{display:flex}
.u-inline-flex{display:inline-flex}
.u-grid{display:grid}
.u-contents{display:contents}

/* ── چیدمانِ فلکس ─────────────────────────────────────── */
.u-wrap{flex-wrap:wrap}
.u-nowrap{flex-wrap:nowrap}
.u-col{flex-direction:column}
.u-items-center{align-items:center}
.u-items-start{align-items:flex-start}
.u-items-end{align-items:flex-end}
.u-justify-center{justify-content:center}
.u-justify-between{justify-content:space-between}
.u-justify-end{justify-content:flex-end}
.u-grow{flex:1 1 auto;min-inline-size:0}
.u-none{flex:none}
.u-push{margin-inline-start:auto}

/* ── فاصله ────────────────────────────────────────────── */
.u-gap-1{gap:var(--sp-1)} .u-gap-2{gap:var(--sp-2)} .u-gap-3{gap:var(--sp-3)}
.u-gap-4{gap:var(--sp-4)} .u-gap-5{gap:var(--sp-5)} .u-gap-6{gap:var(--sp-6)}

.u-mbs-0{margin-block-start:0} .u-mbs-1{margin-block-start:var(--sp-1)}
.u-mbs-2{margin-block-start:var(--sp-2)} .u-mbs-3{margin-block-start:var(--sp-3)}
.u-mbs-4{margin-block-start:var(--sp-4)} .u-mbs-5{margin-block-start:var(--sp-5)}
.u-mbs-6{margin-block-start:var(--sp-6)}

.u-mbe-0{margin-block-end:0} .u-mbe-1{margin-block-end:var(--sp-1)}
.u-mbe-2{margin-block-end:var(--sp-2)} .u-mbe-3{margin-block-end:var(--sp-3)}
.u-mbe-4{margin-block-end:var(--sp-4)} .u-mbe-5{margin-block-end:var(--sp-5)}
.u-mbe-6{margin-block-end:var(--sp-6)}

.u-mis-auto{margin-inline-start:auto} .u-mie-auto{margin-inline-end:auto}
.u-mi-auto{margin-inline:auto}

.u-p-0{padding:0} .u-p-2{padding:var(--sp-2)} .u-p-3{padding:var(--sp-3)}
.u-p-4{padding:var(--sp-4)} .u-p-5{padding:var(--sp-5)}
.u-pi{padding-inline:var(--sp-page)}
.u-pb-4{padding-block:var(--sp-4)}

/* ── اندازه ───────────────────────────────────────────── */
.u-w-full{inline-size:100%}
.u-w-auto{inline-size:auto}
.u-max-measure{max-inline-size:var(--measure)}
.u-max-text{max-inline-size:var(--container-text)}
.u-min-0{min-inline-size:0}
.u-h-full{block-size:100%}

/* ── سطح و کادر ───────────────────────────────────────── */
.u-bg{background:var(--bg)}
.u-bg-subtle{background:var(--bg-subtle)}
.u-bg-muted{background:var(--bg-muted)}
.u-bg-brand{background:var(--c-brand-wash)}
.u-border{border:1px solid var(--line)}
.u-border-bs{border-block-start:1px solid var(--line)}
.u-border-be{border-block-end:1px solid var(--line)}
.u-border-is{border-inline-start:3px solid var(--c-brand)}
.u-round{border-radius:var(--r-sm)}
.u-round-md{border-radius:var(--r-md)}
.u-round-pill{border-radius:var(--r-pill)}
.u-round-circle{border-radius:var(--r-circle)}
.u-shadow{box-shadow:var(--sh-sm)}
.u-shadow-md{box-shadow:var(--sh-md)}
.u-no-shadow{box-shadow:none}

/* ── متن ──────────────────────────────────────────────── */
.u-num{font-variant-numeric:tabular-nums}
.u-ltr{direction:ltr;text-align:left;unicode-bidi:isolate}
.u-rtl{direction:rtl;text-align:right}
.u-caps{text-transform:uppercase;letter-spacing:var(--ls-wide)}
.u-line-through{text-decoration:line-through}
.u-underline{text-decoration:underline;text-underline-offset:3px}
.u-no-underline{text-decoration:none}

/* ── تعامل ────────────────────────────────────────────── */
.u-pointer{cursor:pointer}
.u-not-allowed{cursor:not-allowed}
.u-select-none{user-select:none}
.u-no-events{pointer-events:none}
.u-scroll{overflow:auto}
.u-clip{overflow:hidden}
.u-sticky{position:sticky;inset-block-start:0}
.u-relative{position:relative}

/* ── چاپ و دسترس‌پذیری ───────────────────────────────── */
.u-no-print{}
@media print{.u-no-print{display:none!important}}
.u-only-print{display:none}
@media print{.u-only-print{display:revert}}

/* ═══ responsive.css ═══ */
/* ============================================================
   responsive.css — نقاط شکست: 576 768 1024 1280 1440
   موبایل‌اول: قاعده‌های پایه بی‌کوئری‌اند، این‌جا فقط بزرگ‌ترها.
   ============================================================ */

/* ── نمایشِ شرطی ──────────────────────────────────────── */
.hide-sm,.hide-md,.hide-lg,.hide-xl{display:revert}
@media (max-width:575.98px){ .hide-sm{display:none!important} }
@media (max-width:767.98px){ .hide-md{display:none!important} }
@media (max-width:1023.98px){ .hide-lg{display:none!important} }
@media (max-width:1279.98px){ .hide-xl{display:none!important} }

.only-sm,.only-md,.only-lg{display:none!important}
@media (max-width:575.98px){ .only-sm{display:revert!important} }
@media (max-width:767.98px){ .only-md{display:revert!important} }
@media (max-width:1023.98px){ .only-lg{display:revert!important} }

/* ── ۵۷۶ و بالاتر ─────────────────────────────────────── */
@media (min-width:576px){
  .sm\:row{flex-direction:row}
  .sm\:grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sm\:w-auto{inline-size:auto}
}

/* ── ۷۶۸ و بالاتر ─────────────────────────────────────── */
@media (min-width:768px){
  .md\:grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md\:grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .md\:row{flex-direction:row}
  .md\:hidden{display:none}
  /* دکمهٔ تمام‌عرضِ موبایل، روی صفحهٔ بزرگ‌تر به اندازهٔ محتوا برمی‌گردد */
  .btn--block-mobile{display:inline-flex;inline-size:auto}
}

/* ── ۱۰۲۴ و بالاتر ────────────────────────────────────── */
@media (min-width:1024px){
  .lg\:grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lg\:grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .lg\:sticky{position:sticky;inset-block-start:calc(var(--header-h) + var(--sp-3))}
}

/* ── ۱۲۸۰ و بالاتر ────────────────────────────────────── */
@media (min-width:1280px){
  :root{--sp-page:2.25rem}
  .xl\:grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* ── ۱۴۴۰ و بالاتر ────────────────────────────────────── */
@media (min-width:1440px){
  :root{--container:74rem}
}

/* ── موبایلِ کوچک ─────────────────────────────────────── */
@media (max-width:575.98px){
  :root{--fs-h1:clamp(1.45rem,7vw,1.8rem)}
  /* روی گوشی، دکمهٔ اصلی تمامِ عرض را می‌گیرد: انگشت بدونِ نشانه‌گیری می‌زند */
  .btn--block-mobile{display:flex;inline-size:100%}
  .form-actions .btn{inline-size:100%}
  .table-wrap{margin-inline:calc(var(--sp-page) * -1);padding-inline:var(--sp-page)}
}

/* ── اشاره‌گرِ درشت (لمسی) ───────────────────────────── */
@media (pointer:coarse){
  :root{--tap:48px}
  .icon-btn{inline-size:var(--tap);block-size:var(--tap)}
}

/* ── صفحهٔ کوتاه ─────────────────────────────────────── */
@media (max-height:520px){
  .app-header{position:static}
  .booking__aside{position:static}
}

/* ═══ globals.css ═══ */
/* ============================================================
   globals.css — پلِ سازگاری با نشانه‌گذاریِ موجود
   ── چرا این فایل هست ──
   بیستِ صفحهٔ سایت و پنل امروز کار می‌کنند و کلاس‌های خودشان را
   دارند. هستهٔ تازه نباید آن‌ها را بشکند؛ پس این‌جا نام‌های قدیمی
   به نشانه‌های تازه گره می‌خورند. هر صفحه که به نام‌های تازه مهاجرت
   کرد، سطرش از این فایل حذف می‌شود — این فایل باید با زمان لاغر شود.
   ============================================================ */

/* ── نگاشتِ متغیرهای قدیمی ───────────────────────────── */
:root{
  --ground:var(--bg);
  --surface:var(--bg-subtle);
  --surface-2:var(--bg-muted);
  --surface2:var(--bg-muted);
  --ink:var(--fg);
  --muted:var(--fg-muted);
  --line-strong:var(--line-strong);
  --gold:var(--c-brand);
  --gold-ink:var(--c-brand-ink);
  --gold-wash:var(--c-brand-wash);
  --gold-soft:var(--c-brand-soft);
  --brass:var(--c-accent);
  --radius:var(--r-xs);
  --r:var(--r-xs);
  --pad:var(--sp-page);
  --maxw:var(--container);
  --measure:var(--measure);
}

/* ── ظرف‌های قدیمی ───────────────────────────────────── */
.wrap{max-inline-size:var(--container);margin-inline:auto;padding:var(--sp-5) var(--sp-page) var(--sp-9)}
.doc,.tourPage{max-inline-size:min(var(--measure),var(--container))}
.docBody{max-inline-size:var(--measure)}
.contact{max-inline-size:var(--measure);color:var(--fg-muted)}
.resMain,.sgText{min-inline-size:0}
.srchList{display:grid;gap:var(--sp-4)}

/* ── هم‌ارزیِ اجزا ───────────────────────────────────── */
.hint{font-size:var(--fs-xs);color:var(--fg-muted)}
.msg{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);margin-block-end:var(--sp-4);
  font-size:var(--fs-sm);border:1px solid var(--line)}
.msg.ok,.msgOk{background:var(--c-success-bg);border-color:var(--c-success-line);color:var(--c-success)}
.msg.err,.msgErr{background:var(--c-danger-bg);border-color:var(--c-danger-line);color:var(--c-danger)}
.neg{color:var(--c-danger);font-weight:var(--fw-bold)}
.muted{color:var(--fg-muted);font-size:.8em;font-weight:var(--fw-normal)}
.isOff{opacity:.55}

/* ── قواعدِ عرضیِ همیشگی ─────────────────────────────── */
/* هر جدولِ پهن باید داخلِ ظرفِ خودش بلغزد، نه اینکه صفحه را افقی کند */
.tableWrap,.tableWrap2{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* شمارهٔ موبایل، کد پیگیری و گذرنامه همیشه چپ‌به‌راست */
[dir="ltr"]{unicode-bidi:isolate}

/* ── نشانِ فاصله تا حرم — نام‌های موجود ──────────────── */
.walk{display:inline-flex;align-items:center;gap:var(--sp-2);margin-block:var(--sp-1)}
.walkN{
  display:grid;place-items:center;flex:none;
  inline-size:3.1rem;block-size:3.1rem;border-radius:var(--r-circle);
  font-size:1.35rem;font-weight:var(--fw-bold);line-height:1;font-variant-numeric:tabular-nums;
}
.walkT{font-size:var(--fs-2xs);color:var(--fg-muted);line-height:var(--lh-snug)}
.walk-near .walkN{background:var(--c-accent);color:#fff}
.walk-near .walkT{color:var(--c-accent-ink);font-weight:var(--fw-bold)}
.walk-mid .walkN{background:var(--c-brand-wash);color:var(--c-brand-ink);box-shadow:inset 0 0 0 2px var(--c-brand)}
.walk-far .walkN{background:var(--bg-muted);color:var(--fg-muted);box-shadow:inset 0 0 0 1px var(--line-strong)}

/* ── تاریخ: هر ورودیِ تاریخ، هرجا که باشد ───────────── */
input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"]{
  direction:ltr;text-align:left;font-variant-numeric:tabular-nums;
}
