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

.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: 95px;
}

.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) + 200ms) var(--transition-function-ease-in-out);
  padding: 0;
}

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

.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 20px;
  width: 16px;
  height: 16px;
}

.carousel__dot::after {
  content: "";
  width: 8px;
  height: 8px;
  transition: all var(--animation-duration, 200ms) var(--transition-function-ease-in-out);
  border-radius: 50%;
  pointer-events: none;
}

.carousel__dot.hidden {
  display: none;
}

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

.carousel__navigation.hidden {
  display: none;
}

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

.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, 200ms) var(--transition-function-ease-in-out);
}

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

.carousel__full-width .carousel__wrapper {
  padding-left: 0;
  padding-right: 0;
}

.carousel__full-width .carousel__item {
  padding: 0 var(--horzontal-padding, 16px);
}

.carousel__edges {
  width: 100%;
  margin: 0;
}

.carousel__edges .carousel__wrapper {
  padding: 0;
  width: 100%;
  margin: 0;
  gap: 0;
}

.carousel__edges .carousel__inner {
  display: flex;
  align-items: stretch;
}

.carousel__edges .carousel__item:not(:first-child) {
  display: none;
}

.carousel__edges .carousel__item.show {
  position: static;
  opacity: 1;
  visibility: visible;
  transition: visibility calc(var(--animation-duration, 400ms) + 200ms) var(--transition-function-ease-in-out),
        opacity calc(var(--animation-duration, 400ms) + 200ms) var(--transition-function-ease-in-out);
}

.carousel__edges .carousel__item.hide {
  position: absolute;
  z-index: -1;
  visibility: hidden;
  opacity: 0;
  transition: visibility calc(var(--animation-duration, 400ms) + 200ms) var(--transition-function-ease-in-out),
        opacity calc(var(--animation-duration, 400ms) + 200ms) var(--transition-function-ease-in-out);
}

.carousel__edges .images__text-area {
  margin-bottom: var(--margin-bottom-mobile, 0);
}

.carousel__edges .carousel__navigation {
  bottom: 18px;
  right: auto;
  left: 50%;
  width: 100%;
  max-width: var(--max-width);
  transform: translate(-50%, 0);
  display: flex;
  justify-content: flex-start;
  align-items: center;
  padding: 0 16px;
  margin: 0;
}

.carousel__edges .carousel__btn {
  position: relative;
  border-color: transparent;
  cursor: pointer;
  width: 40px;
  height: 40px;
  border-radius: var(--border-radius-dynamic);
  margin: 0;
  z-index: 2;
  line-height: var(--line-height-xs, 1);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--animation-duration, 200ms) var(--transition-function-ease-in-out),
        border-color var(--animation-duration, 200ms) var(--transition-function-ease-in-out);
}

.carousel__edges .carousel__btn svg {
  padding-left: 3px;
}

.carousel__edges .carousel__btn.prev {
  margin-right: 24px;
}

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

.carousel__edges .carousel__pagination {
  bottom: 31px;
  left: 50%;
  z-index: 2;
  max-width: calc(var(--max-width) - var(--horizontal-padding) * 3 - 104px * 2);
  transform: translate(-50%, 0);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  margin: 0;
}

.carousel__edges .carousel__dot {
  opacity: 1;
  margin-bottom: 0;
}

.carousel__edges .carousel__dot.active {
  opacity: 1;
}

.carousel__edges .carousel__counter {
  position: absolute;
  z-index: 0;
  bottom: 28px;
  right: 50%;
  width: 100%;
  max-width: var(--max-width);
  transform: translate(50%, 0);
  display: flex;
  justify-content: flex-end;
  align-items: center;
  font-size: 18px;
  padding: 0 16px;
  transition: color var(--animation-duration, 200ms) var(--transition-function-ease-in-out);
}

.carousel__edges .carousel__divider {
  margin: 0 16px;
}

.carousel__edges .carousel__divider,
.carousel__edges .carousel__divider + span {
  opacity: 0.4;
}

.carousel.carousel__edges.initialized .carousel__item,
.carousel.carousel__edges.initialized .carousel__item:not(:first-child) {
  display: block;
}

.carousel.carousel__edges.carousel__fade-effect .carousel__wrapper {
  overflow: hidden;
  transform: none !important;
}

.carousel-with-date-picker.carousel__edges .carousel__navigation {
  bottom: calc(18px + var(--date-picker-block-height, 0px));
}

.carousel-with-date-picker.carousel__edges .carousel__pagination {
  bottom: calc(31px + var(--date-picker-block-height, 0px));
}

.carousel-with-date-picker.carousel__edges .carousel__counter {
  bottom: calc(28px + var(--date-picker-block-height, 0px));
}

.palette-one .carousel__dot::after {
  background: var(--color-primary-30, #0B1A264D);
}

.palette-one .carousel__dot.active::after {
  background: var(--color-primary, #0B1A26);
}

.palette-one .carousel__btn {
  border-color: var(--color-border, #0B1A2626);
}

.palette-one .carousel__btn path {
  fill: var(--color-primary, #0B1A26);
}

.palette-two .carousel__dot::after {
  background: var(--color-primary-2-30, #FFFFFF4D);
}

.palette-two .carousel__dot.active::after {
  background: var(--color-primary-2, #FFF);
}

.palette-two .carousel__btn {
  border-color: var(--color-border-2, #FFFFFF47);
}

.palette-two .carousel__btn path {
  fill: var(--color-primary-2, #FFF);
}

.palette-three .carousel__dot::after {
  background: var(--color-primary-3-30, #0B1A264D);
}

.palette-three .carousel__dot.active::after {
  background: var(--color-primary-3, #0B1A26);
}

.palette-three .carousel__btn {
  border-color: var(--color-border-3, #0B1A2626);
}

.palette-three .carousel__btn path {
  fill: var(--color-primary-3, #0B1A26);
}

.palette-one .carousel__edges .carousel__btn {
  background: var(--overlay-color-08, #FFFFFF24);
  border-color: transparent;
}

.palette-one .carousel__edges .carousel__btn path,
.palette-one .carousel__edges ~ .date-picker .date-picker__title path,
.palette-one.images__wrapper .date-picker__title path {
  fill: var(--overlay-color, #FFF) !important;
}

.palette-one .carousel__edges .carousel__dot::after {
  background: var(--overlay-color-45, #FFFFFF73);
}

.palette-one .carousel__edges .carousel__dot.active::after {
  background: var(--overlay-color, #FFF);
}

.palette-one .carousel__edges .carousel__counter,
.palette-one .carousel__edges ~ .date-picker .date-picker__title,
.palette-one.images__wrapper .date-picker__title {
  color: var(--overlay-color, #FFF);
}

.palette-two .carousel__edges .carousel__btn {
  background: var(--overlay-color-08, #FFFFFF24);
  border-color: transparent;
}

.palette-two .carousel__edges .carousel__btn path,
.palette-two .carousel__edges ~ .date-picker .date-picker__title path,
.palette-two.images__wrapper .date-picker__title path {
  fill: var(--overlay-color, #FFF) !important;
}

.palette-two .carousel__edges .carousel__dot::after {
  background: var(--overlay-color-45, #FFFFFF73);
}

.palette-two .carousel__edges .carousel__dot.active::after {
  background: var(--overlay-color, #FFF);
}

.palette-two .carousel__edges .carousel__counter,
.palette-two .carousel__edges ~ .date-picker .date-picker__title,
.palette-two.images__wrapper .date-picker__title {
  color: var(--overlay-color, #FFF);
}

.palette-three .carousel__edges .carousel__btn {
  background: var(--overlay-color-08, #FFFFFF24);
  border-color: transparent;
}

.palette-three .carousel__edges .carousel__btn path,
.palette-three .carousel__edges ~ .date-picker .date-picker__title path,
.palette-three.images__wrapper .date-picker__title path {
  fill: var(--overlay-color, #FFF) !important;
}

.palette-three .carousel__edges .carousel__dot::after {
  background: var(--overlay-color-45, #FFFFFF73);
}

.palette-three .carousel__edges .carousel__dot.active::after {
  background: var(--overlay-color, #FFF);
}

.palette-three .carousel__edges .carousel__counter,
.palette-three .carousel__edges ~ .date-picker .date-picker__title,
.palette-three.images__wrapper .date-picker__title {
  color: var(--overlay-color, #FFF);
}

@media (width >= 992px) {
  .carousel__wrapper {
    gap: 24px;
  }

  .carousel__item {
    min-width: var(--slide-width);
    max-width: var(--slide-width);
  }

  .carousel__edges {
    width: 100%;
    margin: 0;
  }

  .carousel__edges .images__text-area {
    margin-bottom: var(--margin-bottom, 0);
  }

  .carousel__edges .carousel__navigation {
    bottom: 33px;
  }

  .carousel__edges .carousel__dot {
    width: 48px;
    height: 16px;
    margin-right: 4px;
    margin-left: 4px;
    margin-bottom: 3px;
  }

  .carousel__edges .carousel__dot::after {
    border-radius: 0;
    width: 100%;
    height: 2px;
  }

  .carousel__edges .carousel__counter {
    bottom: 33px;
  }

  .carousel-with-date-picker.carousel__edges .carousel__navigation {
    bottom: calc(33px + var(--date-picker-block-height, 0px));
  }

  .carousel-with-date-picker.carousel__edges .carousel__counter {
    bottom: calc(33px + var(--date-picker-block-height, 0px));
  }
}

@media (width >= 1248px) {
  .carousel__edges .carousel__counter,
  .carousel__edges .carousel__navigation {
    padding: 0 calc(var(--padding-no-full-width, 56px) + var(--horizontal-padding, 16px));
  }

  .images__wrapper-full-width .carousel__edges .carousel__counter,
  .images__wrapper-full-width .carousel__edges .carousel__navigation {
    padding: 0 var(--horizontal-padding, 16px);
  }
}

@media (width >= 1273px) {
  .carousel {
    margin: 0;
    width: 100%;
  }

  .carousel__wrapper {
    padding: 0;
  }

  .carousel__navigation {
    margin: 0 -8px;
  }

  .carousel__pagination {
    margin: 0 -4px;
  }

  .carousel__full-width .carousel__item {
    padding: 0;
  }
}

@media (hover: hover) {
  .carousel__edges .carousel__dot:hover {
    opacity: 1;
  }

  .palette-one .carousel__btn:hover {
    border-color: var(--color-primary, #0B1A26);
  }

  .palette-one .carousel__dot:hover::after {
    background: var(--color-primary, #0B1A26);
  }

  .palette-two .carousel__btn:hover {
    border-color: var(--color-primary-2, #FFF);
  }

  .palette-two .carousel__dot:hover::after {
    background: var(--color-primary-2, #FFF);
  }

  .palette-three .carousel__btn:hover {
    border-color: var(--color-primary-3, #0B1A26);
  }

  .palette-three .carousel__dot:hover::after {
    background: var(--color-primary-3, #0B1A26);
  }

  .palette-one .carousel__edges .carousel__btn:hover {
    border-color: var(--overlay-color, #0B1A26);
  }

  .palette-one .carousel__edges .carousel__dot:hover::after {
    background: var(--overlay-color, #0B1A26);
  }

  .palette-two .carousel__edges .carousel__btn:hover {
    border-color: var(--overlay-color, #FFF);
  }

  .palette-two .carousel__edges .carousel__dot:hover::after {
    background: var(--overlay-color, #FFF);
  }

  .palette-three .carousel__edges .carousel__btn:hover {
    border-color: var(--overlay-color, #0B1A26);
  }

  .palette-three .carousel__edges .carousel__dot:hover::after {
    background: var(--overlay-color, #0B1A26);
  }
}
