.hv3pay-section {
  display: flex;
  flex-direction: column;
  gap: 40px;
  padding-block: 40px;
}

.hv3pay-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
}

.hv3pay-ctas {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
}

.hv3pay-ctaBtn {
  height: 52px;
  min-height: 52px;
  padding: 16px 24px;
  font-size: 16px;
  line-height: 20px;
}

.hv3pay-slider {
  --stage-h: 260px;
  --active-w: min(84vw, 320px);
  --active-h: calc(var(--active-w) * 390 / 520);
  --side-w: min(70vw, 240px);
  --side-h: calc(var(--side-w) * 270 / 360);
  --side-offset: 58%;
  --hidden-offset: 92%;
  --arrow-inset: 12px;
  position: relative;
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  height: var(--stage-h);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.hv3pay-stage {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  perspective: 1200px;
}

.hv3pay-slide {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--side-w);
  height: var(--side-h);
  border-radius: 12px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -50%) translateX(0) scale(0.75);
  transition:
    transform 750ms cubic-bezier(0.22, 1, 0.36, 1),
    opacity 750ms cubic-bezier(0.22, 1, 0.36, 1),
    width 750ms cubic-bezier(0.22, 1, 0.36, 1),
    height 750ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 750ms cubic-bezier(0.22, 1, 0.36, 1);
  will-change: transform, opacity, filter;
}

.hv3pay-slideImg {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hv3pay-slideActive {
  width: var(--active-w);
  height: var(--active-h);
  opacity: 1;
  z-index: 5;
  pointer-events: auto;
  border-radius: 16px;
  transform: translate(-50%, -50%) scale(1);
  filter: brightness(1);
}

.hv3pay-slidePrev {
  opacity: 0.4;
  z-index: 3;
  transform: translate(-50%, -50%) translateX(calc(-1 * var(--side-offset))) scale(0.92);
  filter: brightness(0.85);
}

.hv3pay-slideNext {
  opacity: 0.4;
  z-index: 3;
  transform: translate(-50%, -50%) translateX(var(--side-offset)) scale(0.92);
  filter: brightness(0.85);
}

.hv3pay-slideHiddenLeft {
  opacity: 0;
  z-index: 1;
  transform: translate(-50%, -50%) translateX(calc(-1 * var(--hidden-offset))) scale(0.8);
  filter: brightness(0.6);
}

.hv3pay-slideHiddenRight {
  opacity: 0;
  z-index: 1;
  transform: translate(-50%, -50%) translateX(var(--hidden-offset)) scale(0.8);
  filter: brightness(0.6);
}

.hv3pay-arrow {
  position: absolute;
  top: 50%;
  z-index: 30;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 30px;
  background: var(--brand);
  box-shadow: inset 0 2px 4px rgba(254, 254, 254, 0.3);
  cursor: pointer;
  transform: translateY(-50%);
  transition: transform 220ms ease, opacity 220ms ease;
}

.hv3pay-arrow:hover {
  transform: translateY(-50%) scale(1.08);
}

.hv3pay-arrow img {
  display: block;
  width: 24px;
  height: 24px;
  pointer-events: none;
}

.hv3pay-arrowPrev {
  left: var(--arrow-inset);
}

.hv3pay-arrowPrev img {
  transform: scaleX(-1);
}

.hv3pay-arrowNext {
  right: var(--arrow-inset);
}

@media (min-width: 768px) {
  .hv3pay-slider {
    --stage-h: 320px;
    --active-w: 420px;
    --active-h: 315px;
    --side-w: 300px;
    --side-h: 225px;
    --side-offset: 340px;
    --hidden-offset: 560px;
    --arrow-inset: calc(50% - 190px);
  }

  .hv3pay-arrowPrev {
    left: var(--arrow-inset);
  }

  .hv3pay-arrowNext {
    right: auto;
    left: calc(50% + 150px);
  }
}

@media (min-width: 1024px) {
  .hv3pay-section {
    gap: 60px;
    padding-block: 80px;
  }

  .hv3pay-slider {
    --stage-h: 390px;
    --active-w: 520px;
    --active-h: 390px;
    --side-w: 360px;
    --side-h: 270px;
    --side-offset: 420px;
    --hidden-offset: 680px;
    --arrow-inset: calc(50% - 280px);
    overflow: visible;
  }

  .hv3pay-arrowNext {
    left: calc(50% + 240px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hv3pay-slide {
    transition: none;
  }

  .hv3pay-arrow {
    transition: none;
  }

  .hv3pay-arrow:hover {
    transform: translateY(-50%);
  }
}
