/* ABOVE & BEYOND GLOBAL MOTION SYSTEM */
/* Lenis + reveal + luxury parallax, without losing fade-up entrance */

html.lenis,
html.lenis body {
  height: auto;
}

.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

.lenis.lenis-stopped {
  overflow: hidden;
}

.lenis.lenis-scrolling iframe {
  pointer-events: none;
}

/* Fade-up reveal base */

.ab-reveal {
  --ab-reveal-y: 44px;
  --ab-parallax-y: 0px;
  --ab-hover-y: 0px;

  opacity: 0 !important;
  transform: translate3d(
    0,
    calc(var(--ab-reveal-y) + var(--ab-parallax-y) + var(--ab-hover-y)),
    0
  ) !important;

  transition:
    opacity .95s cubic-bezier(.25, 1, .5, 1),
    transform .95s cubic-bezier(.25, 1, .5, 1),
    filter .55s ease,
    box-shadow .55s ease,
    border-color .55s ease,
    background .55s ease !important;

  will-change: opacity, transform;
}

.ab-reveal.active {
  --ab-reveal-y: 0px;
  opacity: 1 !important;
}

/* Stagger delays */

.ab-reveal-delay-1 {
  transition-delay: .08s !important;
}

.ab-reveal-delay-2 {
  transition-delay: .16s !important;
}

.ab-reveal-delay-3 {
  transition-delay: .24s !important;
}

.ab-reveal-delay-4 {
  transition-delay: .32s !important;
}

/* Luxury hover lift that does not break reveal/parallax */

.ab-hover-lift:hover {
  --ab-hover-y: -5px;
}

/*
 * Once the entrance reveal has finished, hover should feel instant even
 * on a quick mouse pass, not carry the slow one-time entrance easing.
 */
.ab-hover-lift.active {
  transition:
    opacity .95s cubic-bezier(.25, 1, .5, 1),
    transform .18s ease,
    filter .2s ease,
    box-shadow .25s ease,
    border-color .25s ease,
    background .25s ease !important;
}

/* Hero background parallax variable support */

.kn-hero {
  overflow: hidden !important;
}

.kn-hero .wp-block-cover__image-background {
  transform:
    translate3d(0, var(--kn-hero-parallax-y, 0px), 0)
    scale(1.06) !important;
  transform-origin: center top;
  will-change: transform;
}

/* Accessibility */

@media (prefers-reduced-motion: reduce) {
  html.lenis,
  html.lenis body {
    scroll-behavior: auto !important;
  }

  .ab-reveal,
  .ab-reveal.active {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .kn-hero .wp-block-cover__image-background {
    transform: none !important;
  }

  * {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}