.carousel {
  height: 100%;
  width: calc(100% + 2 * var(--horizontal-padding));
  margin: 0 calc(-1 * var(--horizontal-padding));
  position: relative;
  contain: content; /* Performance: Reduces the scope of layout recalculations */
}

.carousel__wrapper {
  height: 100%;
  padding: 0 var(--horizontal-padding);
  display: flex;
  gap: 16px;
  align-items: stretch;

  /* Optimize with hardware acceleration while ensuring smooth native scrolling */
  will-change: transform;
  transition: transform calc(var(--animation-duration, 200ms) + 200ms) var(--transition-function-ease-in-out);
  backface-visibility: hidden;
}

.carousel--controls:not(:has(.carousel__navigation.hidden), :has(.carousel__pagination.hidden)) .carousel__wrapper {
  padding-bottom: 100px;
}

.carousel__inner {
  height: 100%;
}

.carousel__item {
  position: relative;
  min-width: var(--slide-width-mobile);
  max-width: var(--slide-width-mobile);
  transition: all calc(var(--animation-duration) + 200ms) var(--transition-function-ease-in-out);
}

.carousel__pagination {
  position: absolute;
  right: 0;
  bottom: 0;
  display: flex;
  margin: 0 calc(var(--horizontal-padding) - 4px);
  z-index: 2;
}

.carousel__pagination.hidden {
  display: none;
}

.carousel__dot {
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0;
  line-height: 0;
  text-indent: -9999px;
  overflow: hidden;
  margin: 0 0 16px;
  width: 16px;
  height: 16px;
}

.carousel__dot:after {
  content: "";
  width: 8px;
  height: 8px;
  transition: all var(--animation-duration) var(--transition-function-ease-out);
  border-radius: var(--border-radius);
  pointer-events: none;
  background: var(--color-primary-30);
}

.carousel__dot.active:after {
  background: var(--color-primary);
}

.carousel__dot.hidden {
  display: none;
}

.carousel__navigation {
  position: absolute;
  left: 0;
  bottom: 0;
  margin: 0 calc(var(--horizontal-padding) - 8px);
  display: flex;
  z-index: 2;
}

.carousel__navigation.hidden {
  display: none;
}

.carousel__btn {
  margin: 0 8px;
  border-radius: var(--border-radius);
  width: 48px;
  height: 48px;
  border: 1px solid transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  text-indent: -9999px;
  transition: all var(--animation-duration) var(--transition-function-ease-out);
  border-color: var(--background-accent);
}

.carousel__btn svg {
  width: 16px;
  height: 16px;
  pointer-events: none;
}

.carousel__btn.prev svg {
  transform: rotate(180deg);
}

.carousel__btn path {
  transition: all var(--animation-duration) var(--transition-function-ease-out);
  fill: var(--background-accent);
}

.carousel .product-card {
  height: 100%;
}

@media (min-width: 992px) {
  .carousel__item {
    min-width: var(--slide-width);
    max-width: var(--slide-width);
  }
}

@media (min-width: 1200px) {
  .carousel {
    margin: 0;
    width: 100%;
  }

  .carousel__wrapper {
    padding: 0;
  }

  .carousel__navigation {
    margin: 0 -8px;
  }

  .carousel__pagination {
    margin: 0 -4px;
  }
}

@media (hover: hover) {
  .carousel__btn:hover {
    background: var(--background-accent);
  }

  .carousel__btn:hover path {
    fill: var(--color-accent);
  }

  .carousel__dot:hover:after {
    background: var(--color-primary);
  }
}
