/**
 * Premium motion layer — Lenis / WebGL / Lottie helpers.
 * GSAP handles most transforms; this file is for support styles only.
 */

html.sn-lenis,
html.sn-lenis body {
  height: auto;
}

html.sn-lenis.lenis,
html.sn-lenis.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-smooth iframe {
  pointer-events: none;
}

.lenis.lenis-smooth iframe.lenis-iframe-active {
  pointer-events: auto;
}

.sn-webgl-stage {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.38;
  mix-blend-mode: multiply;
}

.sn-webgl-canvas {
  width: 100%;
  height: 100%;
  display: block;
}

body.safetynet-theme .sn-header {
  position: sticky;
  z-index: 1000;
}

body.safetynet-theme .sn-main,
body.safetynet-theme .sn-footer {
  position: relative;
  z-index: 1;
}

.sn-lottie {
  position: absolute;
  inset: -8px;
  pointer-events: none;
  opacity: 0.55;
}

.sn-lottie svg {
  width: 100% !important;
  height: 100% !important;
}

/* When GSAP owns reveals, disable older CSS hidden-state fighting. */
html.sn-premium-motion.js-enabled body.home .sn-homepage .sn-gsap-reveal {
  opacity: 1;
  transform: none;
  filter: none;
  transition: none;
  will-change: auto;
}

html.sn-premium-motion.js-enabled .sn-inner-page .sn-gsap-reveal {
  opacity: 1;
  transform: none;
  filter: none;
  transition: none;
  will-change: auto;
}

html.sn-premium-motion.js-enabled .sn-inner-page.sn-hero-entered .sn-page-hero .sn-reveal {
  opacity: 1;
  transform: none;
  filter: none;
  transition: none;
}

/* Keep existing entrance CSS from conflicting with GSAP hero timeline */
html.sn-premium-motion.js-enabled body.home .sn-homepage:not(.sn-hero-entered) .sn-home-hero__keep,
html.sn-premium-motion.js-enabled body.home .sn-homepage:not(.sn-hero-entered) .sn-home-hero__title-line,
html.sn-premium-motion.js-enabled body.home .sn-homepage:not(.sn-hero-entered) .sn-home-hero__frame {
  opacity: 1;
  transform: none;
  animation: none;
}

@media (max-width: 767px), (pointer: coarse) {
  .sn-webgl-stage {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sn-webgl-stage,
  .sn-lottie {
    display: none !important;
  }
}
