/* ردیف‌های لغزشی خانه و صفحهٔ قیمت روی Swiper — حلقهٔ بی‌پایان و سلاید مرکزی مسلط؛ اینجا تنها جایی است که لایهٔ Swiper رنگ، فاصله و ناحیهٔ لمس دنتیوال را می‌بیند */

[data-swiper] {
  --sw-gap: var(--sp-5);
  --sw-slide: 68%;
  --sw-speed: 560ms;
  --sw-scaled: 0.78;
  --swiper-theme-color: var(--color-brand);
  --swiper-pagination-bullet-opacity: 1;
  min-inline-size: 0;
  margin-block-end: var(--sp-2);
}

@media (min-width: 640px) {
  [data-swiper] { --sw-gap: var(--sp-4); --sw-scaled: 0.74; }
}

@media (min-width: 1024px) {
  [data-swiper] { --sw-scaled: 0.70; }
}

/* بدون جاوااسکریپت ردیف با کشیدن و scroll-snap بومی مرور می‌شود؛ با ساخت رانندهٔ Swiper پرچم data-swiper-ready می‌نشیند و این پله کنار می‌رود */
[data-swiper]:not([data-swiper-ready]) .swiper {
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

[data-swiper]:not([data-swiper-ready]) .swiper::-webkit-scrollbar { display: none; }

[data-swiper]:not([data-swiper-ready]) .swiper-wrapper { overflow: visible; }

[data-swiper]:not([data-swiper-ready]) .swiper-slide {
  width: auto;
  flex: 0 0 var(--sw-slide);
  margin-inline-end: var(--sw-gap);
  scroll-snap-align: center;
}

/* پایهٔ ردیف: فهرست بدون نشانگر و بدون نوار اسکرول، و قابل‌فوکوس برای کاربر کیبورد */
[data-swiper] .swiper { list-style: none; scrollbar-width: none; }

[data-swiper] .swiper::-webkit-scrollbar { display: none; }

[data-swiper] .swiper-wrapper {
  margin: 0;
  padding: 0;
  list-style: none;
}

[data-swiper] .swiper:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-ring-offset);
}

[data-swiper] .swiper-slide { min-inline-size: 0; }

/* سلاید فعال اندازهٔ طبیعی می‌ماند و همسایه‌ها کمی کوتاه می‌شوند؛ چون هیچ سلایدی بزرگ‌تر از اندازهٔ طبیعی نمی‌شود، قد نوار ثابت می‌ماند و بریدگی نمی‌افتد */
/* سلایدِ هم‌زمانِ «ظهور با اسکرول»: دیده‌شدنِ ردیف لغزشی آن را بیرون نمی‌آورد و سلیدها بی‌محل می‌ماند؛ نمایشِ سلید کارِ خودِ ردیف است */
[data-swiper] .reveal.swiper-slide {
  opacity: 1;
  transform: none;
}

[data-swiper][data-swiper-ready] .swiper-slide {
  transition: transform var(--sw-speed) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
  transform: scale(var(--sw-scaled));
  transform-origin: center;
}

[data-swiper][data-swiper-ready] .swiper-slide-active {
  transform: scale(1);
  box-shadow: var(--shadow-lg);
  z-index: 1;
}

/* کارت‌های ردیف عرض دارند تا قدشان از متن بیفتد؛ کفِ قدِ ثابت باعث می‌شود کارتِ متنِ کوتاه هم‌قدِ بلندترین باشد و ردیف توخالی به نظر نرسد */
[data-swiper] .desc-card.swiper-slide,
[data-swiper] .step-item.swiper-slide {
  min-block-size: 10.5rem;
}

[data-swiper][data-swiper-ready] .swiper-slide-active > .desc-card {
  border-color: var(--color-brand);
  box-shadow: var(--shadow-md);
}

/* کنترل‌ها و ناحیهٔ اعلام در یک گروهِ بی‌فاصله می‌نشینند */
.card-carousel-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
}

/* دکمهٔ حرکت: ناحیهٔ لمسیِ ۴۴×۴۴px با ظاهرِ کنترلِ سبک */
.carousel-nav {
  display: inline-flex;
  place-items: center;
  inline-size: 44px;
  block-size: 44px;
  border: 1px solid var(--color-control-border);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}

.carousel-nav:hover { background: var(--color-surface-sunken); border-color: var(--color-brand-border); }

.carousel-nav:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-ring-offset);
}

/* نقطه‌های Swiper همان اندازهٔ ۱۰px را با ناحیهٔ لمسیِ ۴۴×۴۴px نگه می‌دارند */
.card-carousel-dots {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0;
  padding: 0;
  list-style: none;
}

.swiper-pagination-bullet {
  box-sizing: content-box;
  inline-size: 10px;
  block-size: 10px;
  padding: 17px;
  margin: 0;
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--color-border-strong);
  background-clip: content-box;
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
}

.swiper-pagination-bullet:not(:only-child):hover { transform: scale(1.35); }

.swiper-pagination-bullet:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-ring-offset);
}

.swiper-pagination-bullet-active,
.swiper-pagination-bullet-active-main {
  background: var(--color-brand);
  transform: scale(1);
}

.swiper-pagination-bullet-active-prev,
.swiper-pagination-bullet-active-prev-prev {
  background: var(--color-border-strong);
}

/* اعلامِ پیشرفت فقط برای صفحه‌خوان است و از چیدمان حذف نمی‌شود */
.card-carousel-live {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* قاعدهٔ نمایشِ flex روی کنترل‌ها [hidden] را خنثی می‌کند؛ بازنویسی لازم است */
[data-swiper] [hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
  /* گذار سلیدها نرم نمی‌مانند و فقط موقعیت عوض می‌شود */
  [data-swiper][data-swiper-ready] .swiper-slide { transition: none; }

  .swiper-pagination-bullet,
  .carousel-nav { transition: none; }

  [data-swiper]:not([data-swiper-ready]) .swiper { scroll-behavior: auto; }
}
