/* Motion layer for the IV lounge template (see assets/motion.js).
   Everything here only applies once motion.js has run and added .js-motion to <html>. */

/* Lenis 1.1.13 recommended rules */
html.lenis, html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }
.lenis.lenis-autoToggle { transition-property: overflow; transition-duration: 1ms; transition-behavior: allow-discrete; }

/* Science strip: when the horizontal pin is active (>=768px), undo the static-preview
   fallback (swipeable row) and restore the original full-height, clipped track. */
#science.ms-pin .md\:overflow-hidden { overflow: hidden !important; }
#science.ms-pin .md\:h-\[100svh\] { height: 100svh !important; padding: 0 !important; }

/* The droplet cursor only exists once motion.js turns it on (fine pointers, motion allowed) */
.cursor-ring, .cursor-droplet { display: none; }
body.cursor-on .cursor-ring, body.cursor-on .cursor-droplet { display: block; }

/* Floating particles (hero + booking CTA) */
.ms-particle { position: absolute; border-radius: 50%; filter: blur(0.5px); opacity: .7; will-change: transform, opacity; }

/* Mobile quick-action bar: slides in after the hero, as on the original */
.js-motion .ms-quickbar { transition: opacity .3s, transform .3s; }
.js-motion .ms-quickbar.is-hidden { opacity: 0; transform: translateY(1.5rem); pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .ms-particle { display: none; }
}
