/* ===========================================
   Carousel (карусель) — общий компонент
   Горизонтальная прокрутка с кнопками влево/вправо
   =========================================== */

/* --- Секция-обёртка --- */
.main-section {
  padding: var(--spacing-3) 0;
}

.main-section:first-child {
  padding-top: 0;
}

.main-section:last-child {
  padding-bottom: var(--spacing-4);
}

.main-section + .main-section {
  border-top: 1px dashed var(--color-border-light);
}

.section-header {
  display: flex;
  align-items: center;
  margin-bottom: var(--spacing-1);
  padding: var(--spacing-1) var(--spacing-4);
}

.section-title {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
  margin: 0;
  line-height: 1.3;
}

.section-title a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  color: inherit;
  padding: var(--spacing-1) 0;
  transition: color 0.2s ease;
}

.section-title a:hover {
  color: var(--color-primary);
}

.section-title__icon {
  width: 20px;
  height: 20px;
  object-fit: contain;
  flex-shrink: 0;
}

/* --- Контейнер карусели --- */
.carousel {
  position: relative;
  padding: 0 var(--spacing-4);
  display: flex;
  align-items: center;
}

.carousel__viewport {
  width: 100%;
  overflow: hidden;
  border-radius: var(--radius-lg);
  padding: 6px 0;
  margin: -6px 0;
}

.carousel__track {
  display: flex;
  gap: var(--spacing-4);
  transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
  will-change: transform;
}

/* --- Карточка внутри карусели --- */
.carousel__item {
  flex: 0 0 auto;
  width: 234px;
  min-width: 0;
}

/* --- Кнопки навигации (компактные стрелки по краям) --- */
.carousel__btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;

  display: flex;
  align-items: center;
  justify-content: center;

  width: 14px;
  height: 32px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  cursor: pointer;
  padding: 0;

  color: var(--color-border-dark);
  opacity: 0;
  transition: opacity 0.25s ease, color 0.2s ease;
}

.carousel:hover .carousel__btn:not(:disabled) {
  opacity: 1;
}

.carousel__btn:hover {
  color: var(--color-primary);
}

.carousel__btn:active {
  color: var(--color-primary-hover);
}

.carousel__btn:disabled {
  opacity: 0 !important;
  pointer-events: none;
}

.carousel__btn--prev {
  left: 0;
}

.carousel__btn--next {
  right: 0;
}

.carousel__btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* --- Индикаторы (точки) --- */
.carousel__dots {
  display: flex;
  justify-content: center;
  gap: var(--spacing-2);
  margin-top: var(--spacing-4);
}

.carousel__dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-full);
  border: none;
  background-color: var(--color-border);
  cursor: pointer;
  padding: 0;
  transition: background-color 0.2s ease, width 0.2s ease;
}

.carousel__dot--active {
  width: 24px;
  background-color: var(--color-primary);
}

/* --- Состояние загрузки --- */
.carousel__loading {
  display: flex;
  gap: var(--spacing-4);
  overflow: hidden;
}

.carousel__skeleton {
  flex: 0 0 100%;
  height: 180px;
  border-radius: var(--radius-lg);
  background: linear-gradient(90deg,
    var(--color-bg-secondary) 25%,
    var(--color-border-light) 50%,
    var(--color-bg-secondary) 75%
  );
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.5s infinite;
}

@keyframes skeleton-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* --- Состояние: нет данных --- */
.carousel__empty {
  text-align: center;
  padding: var(--spacing-8) var(--spacing-4);
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
}

/* --- Адаптив --- */

/* Touch-устройства: скрываем кнопки навигации (используется свайп) */
@media (hover: none) and (pointer: coarse) {
  .carousel__btn {
    display: none;
  }
}

/* xs: < 400px — маленькие телефоны */
@media (max-width: 399px) {
  .carousel {
    padding: 0 var(--spacing-3);
  }

  .carousel__item {
    width: 198px;
  }

  .carousel__track {
    gap: var(--spacing-3);
  }

  .section-title {
    font-size: var(--font-size-sm);
  }

  .section-title__icon {
    width: 18px;
    height: 18px;
  }

  .section-header {
    padding: var(--spacing-1) var(--spacing-3);
  }
}

/* sm: 576px */
@media (min-width: 576px) {
  .carousel__item {
    width: 216px;
  }

  .section-title {
    font-size: var(--font-size-lg);
  }

  .section-title__icon {
    width: 22px;
    height: 22px;
  }
}

/* md: 768px */
@media (min-width: 768px) {
  .carousel__item {
    width: 252px;
  }

  .main-section {
    padding: var(--spacing-4) 0;
  }

  .section-header {
    padding: var(--spacing-1) var(--spacing-4);
  }
}

/* lg: 992px — 3 карточки в 1000px контейнере */
@media (min-width: 992px) {
  .carousel__item {
    width: 240px;
  }

  .main-section {
    padding: var(--spacing-5) 0;
  }

  .section-header {
    padding: var(--spacing-1) var(--spacing-5);
  }
}

/* xl: 1100px — 4 карточки в 1100px контейнере */
@media (min-width: 1100px) {
  .carousel__item {
    width: 255px;
  }
}
