.aha-hero-slider {
  position: relative;
  width: 100%;
  border: none;
  --aha-hs-progress-track: rgba(255, 255, 255, 0.22);
  --aha-hs-progress-fill: var(--aha-hs-bullet-active, #ffffff);
}

/* Autoplay progress (shortcode progress="bar" | progress="circle"). Filled via JS (rAF), not CSS transition. */
.aha-hero-slider__progress {
  pointer-events: none;
  z-index: 35;
}

.aha-hero-slider__progress--bar {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: var(--aha-hs-progress-track);
  overflow: hidden;
}

.aha-hero-slider__progress--bar .aha-hero-slider__progress-fill {
  height: 100%;
  width: 0;
  max-width: 100%;
  background: var(--aha-hs-progress-fill);
  box-sizing: border-box;
}

.aha-hero-slider__progress--circle {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 40px;
  height: 40px;
}

.aha-hero-slider__progress-svg {
  display: block;
  width: 40px;
  height: 40px;
}

.aha-hero-slider__progress-ring-bg {
  stroke: var(--aha-hs-progress-track);
}

.aha-hero-slider__progress-ring-fill {
  stroke: var(--aha-hs-progress-fill);
  stroke-dasharray: 100.531 100.531;
  stroke-dashoffset: 100.531;
}

/*
 * Vanilla carousel: beat broad theme resets on transform/opacity (e.g. Elementor,
 * prefers-reduced-motion). Duration matches assets/js/main.js (300ms).
 */
.aha-hero-slider--initialized .aha-hero-slider__track,
.aha-hero-slider--initialized.aha-hero-slider--fade .aha-hero-slider__item {
  transition-duration: 300ms !important;
  transition-delay: 0s !important;
}

/*
 * Slide mode: track is viewport-wide; each item is flex-basis 100% of that width (one viewport per slide).
 * JS uses translate3d(-(index * viewportWidth)) — same unit as layout, no %/px mismatch (see seamless flash fix).
 */
.aha-hero-slider__viewport {
  overflow: hidden;
  width: 100%;
  position: relative;
}

/* Seamless snap: track is briefly visibility:hidden during clone→real jump; matching background avoids any residual flash. */
.aha-hero-slider--seamless .aha-hero-slider__track {
  background: inherit;
}

/* Horizontal slide (default). */
.aha-hero-slider--initialized:not(.aha-hero-slider--fade):not(.aha-hero-slider--vertical) .aha-hero-slider__track {
  display: flex;
  width: 100%;
  transition-property: transform;
  transition-timing-function: ease;
  will-change: transform;
  gap: 0;
}

.aha-hero-slider--initialized:not(.aha-hero-slider--fade):not(.aha-hero-slider--vertical) .aha-hero-slider__track .aha-hero-slider__item {
  flex: 0 0 100%;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  backface-visibility: hidden;
}

/* Vertical slide: JS sets --aha-hs-vp-h on the viewport to match the active slide height. */
.aha-hero-slider--initialized.aha-hero-slider--vertical:not(.aha-hero-slider--fade) .aha-hero-slider__track {
  display: flex;
  flex-direction: column;
  width: 100%;
  transition-property: transform;
  transition-timing-function: ease;
  will-change: transform;
  gap: 0;
}

.aha-hero-slider--initialized.aha-hero-slider--vertical:not(.aha-hero-slider--fade) .aha-hero-slider__track .aha-hero-slider__item {
  flex: 0 0 var(--aha-hs-vp-h, 520px);
  width: 100%;
  min-width: 0;
  min-height: 0;
  box-sizing: border-box;
  backface-visibility: hidden;
}

/* Seamless loop: JS uses pixel translate3d to avoid subpixel gaps / white flashes between slides. */
.aha-hero-slider--seamless .aha-hero-slider__viewport {
  isolation: isolate;
}

.aha-hero-slider--fade .aha-hero-slider__viewport {
  position: relative;
  min-height: 520px;
  isolation: isolate;
}

.aha-hero-slider--fade .aha-hero-slider__track {
  display: block;
  width: 100% !important;
  transform: none !important;
  transition: none !important;
  position: relative;
  min-height: inherit;
}

/* Cloned slides for infinite="seamless" (horizontal or vertical slide); avoid accidental clicks while off-screen or mid-wrap. */
.aha-hero-slider__item--clone {
  pointer-events: none;
}

.aha-hero-slider .hide-this {
  display: none;
}

.aha-hero-slider .aha-hero-slider__item {
  position: relative;
  height: 520px;
  min-height: 520px;
  width: 100%;
  background-size: var(--aha-hs-slide-bg-size, cover);
  background-position: var(--aha-hs-slide-bg-position, center);
}

/*
 * Fade: must override the block above. Same specificity (.aha .aha__item) would lose
 * because this file declares .aha-hero-slider .aha-hero-slider__item later — without
 * this, slides stay position:relative and stack in the document (ghost text, broken dots).
 */
.aha-hero-slider.aha-hero-slider--fade.aha-hero-slider--initialized .aha-hero-slider__viewport .aha-hero-slider__item {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  width: 100%;
  max-width: 100%;
  height: auto;
  margin: 0;
  box-sizing: border-box;
  opacity: 0;
  transition-property: opacity;
  transition-timing-function: ease;
  pointer-events: none;
  z-index: 1;
}

.aha-hero-slider.aha-hero-slider--fade.aha-hero-slider--initialized .aha-hero-slider__viewport .aha-hero-slider__item--active {
  opacity: 1;
  pointer-events: auto;
  z-index: 2;
}

.aha-hero-slider .aha-hero-slider__item::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--aha-hs-overlay, transparent);
  z-index: 5;
  pointer-events: none;
}

.aha-hero-slider .aha-hero-slider__item--image-only .aha-hero-slider__link-wrapper {
  position: absolute;
  inset: 0;
  z-index: 15;
}

.aha-hero-slider .aha-hero-slider__content {
  max-width: 1200px;
  width: 100%;
  height: 100%;
  background: transparent;
  margin: 0 auto;
  padding-right: 50px;
  padding-left: 50px;
  position: relative;
  display: flex;
  z-index: 10;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: flex-start;
  justify-content: center;
}

.aha-hero-slider .aha-hero-slider__badge {
  margin: 0 0 8px;
  max-width: 600px;
  color: var(--aha-hs-badge, #ffffff);
  font-size: 1em;
  line-height: 1.2;
  font-weight: normal;
}

.aha-hero-slider .aha-hero-slider__headline {
  margin: 0 0 8px;
  max-width: 600px;
  color: var(--aha-hs-headline, #ffffff);
  font-size: 1.8em;
  line-height: 1.3;
  font-weight: 700;
}

.aha-hero-slider .aha-hero-slider__subtitle {
  margin: 0;
  max-width: 600px;
  color: var(--aha-hs-subtitle, #ffffff);
  font-size: 1.1em;
  line-height: 1.45;
  font-weight: 400;
  opacity: 0.95;
}

.aha-hero-slider .aha-hero-slider__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 15px;
}

.aha-hero-slider .aha-hero-slider__button {
  padding: 10px 50px;
  border-radius: 12px;
  cursor: pointer;
  font-size: 1.1em;
  text-decoration: none;
  display: inline-block;
  border: 2px solid transparent;
  box-sizing: border-box;
}

.aha-hero-slider .aha-hero-slider__button--primary {
  background-color: var(--aha-hs-slide-btn1-bg, var(--aha-hs-btn1-bg, #d81e5b));
  color: var(--aha-hs-slide-btn1-color, var(--aha-hs-btn1-color, #ffffff));
  border-color: var(--aha-hs-slide-btn1-border, var(--aha-hs-btn1-border, transparent));
  border-radius: var(--aha-hs-slide-btn1-radius, var(--aha-hs-btn1-radius, 12px));
}

.aha-hero-slider .aha-hero-slider__button--secondary {
  background-color: var(--aha-hs-slide-btn2-bg, var(--aha-hs-btn2-bg, transparent));
  color: var(--aha-hs-slide-btn2-color, var(--aha-hs-btn2-color, #ffffff));
  border-color: var(--aha-hs-slide-btn2-border, var(--aha-hs-btn2-border, #ffffff));
  border-radius: var(--aha-hs-slide-btn2-radius, var(--aha-hs-btn2-radius, 12px));
}

.aha-hero-slider .aha-hero-slider__button:hover {
  opacity: 0.85;
}

.aha-hero-slider .aha-hero-slider__link-wrapper {
  display: block;
  height: 100%;
  width: 100%;
  text-decoration: none;
  color: inherit;
}

/*
 * Arrows slide in from outside on hover (prev ← left, next → right).
 * All transition/transform/opacity use !important to beat theme `button` resets.
 */
.aha-hero-slider .aha-hero-slider__arrow {
  width: 36px;
  height: 36px;
  padding: 0;
  cursor: pointer;
  color: transparent;
  border: none;
  outline: none;
  background: var(--aha-hs-arrow-bg, #1a1a1a);
  border-radius: 50%;
  opacity: 0 !important;
  position: absolute;
  display: inline-block;
  text-align: center;
  transform-origin: center center;
  transition-property: opacity, transform !important;
  transition-duration: 0.35s, 0.5s !important;
  transition-timing-function: ease, cubic-bezier(0.22, 1, 0.36, 1) !important;
  transition-delay: 0s, 0s !important;
  top: 50%;
  margin-top: -18px;
  z-index: 99;
}

.aha-hero-slider .aha-hero-slider__arrow--prev {
  transform: translate3d(-26px, 0, 0) !important;
}

.aha-hero-slider .aha-hero-slider__arrow--next {
  transform: translate3d(26px, 0, 0) !important;
}

.aha-hero-slider:hover > .aha-hero-slider__arrow--prev:not(:disabled) {
  opacity: 0.8 !important;
  transform: translate3d(0, 0, 0) !important;
}

.aha-hero-slider:hover > .aha-hero-slider__arrow--next:not(:disabled) {
  opacity: 0.8 !important;
  transform: translate3d(0, 0, 0) !important;
}

.aha-hero-slider:hover > .aha-hero-slider__arrow:disabled {
  opacity: 0.25 !important;
  transform: translate3d(0, 0, 0) !important;
}

.aha-hero-slider .aha-hero-slider__arrow:hover:not(:disabled) {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1.12) !important;
}

.aha-hero-slider .aha-hero-slider__arrow:disabled {
  cursor: default;
}

/*
 * Hide only the default pair (direct children of the root). Nested `.aha-hero-slider__arrow` inside
 * slides (custom template) stay visible so authors can place their own controls when arrows="no".
 */
.aha-hero-slider.aha-hero-slider--no-arrows > .aha-hero-slider__arrow {
  display: none !important;
}

.aha-hero-slider .aha-hero-slider__arrow--prev {
  left: 25px;
}

.aha-hero-slider .aha-hero-slider__arrow--prev::before {
  content: "❮";
  position: relative;
  right: 0;
  display: flex;
  width: 100%;
  height: 100%;
  background-color: transparent;
  align-items: center;
  justify-content: center;
  color: var(--aha-hs-arrow-icon, #ffffff);
}

.aha-hero-slider .aha-hero-slider__arrow--next {
  right: 25px;
}

.aha-hero-slider .aha-hero-slider__arrow--next::before {
  content: "❯";
  position: relative;
  right: 0;
  display: flex;
  width: 100%;
  height: 100%;
  background-color: transparent;
  color: var(--aha-hs-arrow-icon, #ffffff);
  align-items: center;
  justify-content: center;
}

/*
 * Vertical mode: same horizontal placement as slide (prev left, next right, vertically centered).
 * Icons stay rotated so chevrons read as up / down for previous & next slide.
 */
.aha-hero-slider.aha-hero-slider--vertical .aha-hero-slider__arrow--prev::before,
.aha-hero-slider.aha-hero-slider--vertical .aha-hero-slider__arrow--next::before {
  transform: rotate(90deg);
}

@media (prefers-reduced-motion: reduce) {
  .aha-hero-slider .aha-hero-slider__arrow {
    transition-duration: 0.01ms;
  }

  .aha-hero-slider .aha-hero-slider__arrow--prev,
  .aha-hero-slider .aha-hero-slider__arrow--next {
    transform: translate3d(0, 0, 0);
  }
}

.aha-hero-slider .aha-hero-slider__dots {
  list-style: none;
  margin: 0;
  padding: 0;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 25px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  z-index: 20;
}

.aha-hero-slider .aha-hero-slider__dots li {
  margin: 0;
  padding: 0;
  list-style: none;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

/*
 * Dots are real `<button type="button">` for a11y; themes often style all `button` globally.
 * `button.aha-hero-slider__dot` + scoped `!important` keeps size, background, and chrome stable.
 */
.aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot {
  appearance: none !important;
  -webkit-appearance: none !important;
  font: inherit !important;
  font-size: 0 !important;
  line-height: 0 !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  color: transparent !important;
  text-shadow: none !important;
  min-width: 0 !important;
  min-height: 0 !important;
  width: 10px !important;
  height: 10px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 50% !important;
  box-shadow: none !important;
  cursor: pointer;
  display: block !important;
  box-sizing: border-box !important;
  user-select: none;
  background: var(--aha-hs-bullet, #1a1a1a) !important;
  background-image: none !important;
  transition: transform 0.2s ease, background-color 0.2s ease !important;
}

.aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot::before,
.aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot::after {
  content: none !important;
  display: none !important;
}

.aha-hero-slider .aha-hero-slider__dots li.is-active {
  z-index: 10;
}

.aha-hero-slider .aha-hero-slider__dots li.is-active .aha-hero-slider__dot {
  background: var(--aha-hs-bullet-active, #ffffff) !important;
  background-image: none !important;
  transform: scale(1.2) !important;
}

.aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot:focus {
  outline: none !important;
}

.aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot:focus-visible {
  outline: 2px solid var(--aha-hs-bullet-active, #ffffff) !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
}

.aha-hero-slider .aha-hero-slider__mobile {
  display: none;
}

@media (max-width: 767px) {
  /*
   * Default template: flexible height so long titles/buttons are not squeezed
   * against dots; min-height keeps a sensible floor. Image-only keeps its own min-height.
   */
  .aha-hero-slider .aha-hero-slider__item {
    background-color: var(--aha-hs-mobile-bg, #333333);
    background-image: none !important;
  }

  .aha-hero-slider .aha-hero-slider__item:not(.aha-hero-slider__item--image-only) {
    height: auto;
    min-height: 480px;
  }

  .aha-hero-slider .aha-hero-slider__item--image-only {
    height: auto;
    min-height: 520px;
  }

  .aha-hero-slider--initialized:not(.aha-hero-slider--fade):not(.aha-hero-slider--vertical) .aha-hero-slider__item {
    height: auto !important;
  }

  /* Fade + default template: content height on mobile (viewport height comes from JS). */
  .aha-hero-slider.aha-hero-slider--fade.aha-hero-slider--initialized .aha-hero-slider__viewport .aha-hero-slider__item:not(.aha-hero-slider__item--image-only) {
    bottom: auto;
  }

  .aha-hero-slider .aha-hero-slider__mobile {
    display: block;
    height: 200px;
    width: 100%;
    background-size: var(--aha-hs-slide-mobile-bg-size, cover);
    background-position: var(--aha-hs-slide-mobile-bg-position, center);
  }

  .aha-hero-slider .aha-hero-slider__item--image-only .aha-hero-slider__mobile {
    height: 520px;
    min-height: 520px;
    width: 100%;
    background-size: var(--aha-hs-slide-mobile-bg-size, cover);
    background-position: var(--aha-hs-slide-mobile-bg-position, center);
  }

  /* Overlay: cover only the image strip (200px) on default template */
  .aha-hero-slider .aha-hero-slider__item:not(.aha-hero-slider__item--image-only)::before {
    bottom: auto;
    height: 200px;
  }

  .aha-hero-slider .aha-hero-slider__content {
    max-width: 767px;
    height: auto;
    padding-right: 25px;
    padding-left: 25px;
    padding-top: 20px;
    /* Room above absolute-positioned dots (bottom ~25px + dot row + touch margin). */
    padding-bottom: 48px;
    position: relative;
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 8px;
  }

  .aha-hero-slider .aha-hero-slider__headline {
    font-size: 21px;
    color: #0f0f0f !important;
  }

  .aha-hero-slider .aha-hero-slider__subtitle {
    color: #0f0f0f !important;
  }

  .aha-hero-slider .aha-hero-slider__badge {
    color: #0f0f0f !important;
  }

  .aha-hero-slider .aha-hero-slider__subtitle {
    font-size: 15px;
  }

  .aha-hero-slider .aha-hero-slider__button {
    padding: 8px 30px;
    font-size: 16px;
  }

  /* Mobile button colors: per-slide mobile → global mobile → per-slide desktop → global desktop → default */
  .aha-hero-slider .aha-hero-slider__button--primary {
    background-color: var(--aha-hs-slide-btn1-bg-mobile, var(--aha-hs-btn1-bg-mobile, var(--aha-hs-slide-btn1-bg, var(--aha-hs-btn1-bg, #d81e5b))));
    color: var(--aha-hs-slide-btn1-color-mobile, var(--aha-hs-btn1-color-mobile, var(--aha-hs-slide-btn1-color, var(--aha-hs-btn1-color, #ffffff))));
    border-color: var(--aha-hs-slide-btn1-border-mobile, var(--aha-hs-btn1-border-mobile, var(--aha-hs-slide-btn1-border, var(--aha-hs-btn1-border, transparent))));
    border-radius: var(--aha-hs-slide-btn1-radius-mobile, var(--aha-hs-btn1-radius-mobile, var(--aha-hs-slide-btn1-radius, var(--aha-hs-btn1-radius, 12px))));
  }

  .aha-hero-slider .aha-hero-slider__button--secondary {
    background-color: var(--aha-hs-slide-btn2-bg-mobile, var(--aha-hs-btn2-bg-mobile, var(--aha-hs-slide-btn2-bg, var(--aha-hs-btn2-bg, transparent))));
    color: var(--aha-hs-slide-btn2-color-mobile, var(--aha-hs-btn2-color-mobile, var(--aha-hs-slide-btn2-color, var(--aha-hs-btn2-color, #ffffff))));
    border-color: var(--aha-hs-slide-btn2-border-mobile, var(--aha-hs-btn2-border-mobile, var(--aha-hs-slide-btn2-border, var(--aha-hs-btn2-border, #ffffff))));
    border-radius: var(--aha-hs-slide-btn2-radius-mobile, var(--aha-hs-btn2-radius-mobile, var(--aha-hs-slide-btn2-radius, var(--aha-hs-btn2-radius, 12px))));
  }

  .aha-hero-slider .aha-hero-slider__arrow {
    top: 150px;
    margin-top: 0;
  }

  /* Vertical: center arrows on the Y axis; horizontal slide keeps fixed offset for the 200px image strip. */
  .aha-hero-slider.aha-hero-slider--vertical .aha-hero-slider__arrow {
    top: 50%;
    margin-top: -18px;
  }

  .aha-hero-slider .aha-hero-slider__dots {
    gap: 8px;
  }

  .aha-hero-slider .aha-hero-slider__dots button.aha-hero-slider__dot {
    width: 8px !important;
    height: 8px !important;
  }

  /* Per-slide: hide marked elements on small screens only (see Slide content → Mobile). */
  .aha-hero-slider__hide-mobile {
    display: none !important;
  }

  .aha-hero-slider__actions--empty-on-mobile {
    display: none !important;
  }
}
