/* ==========================================================================
   Nexora Commerce — motion pre-states
   Applied only while html.nxc-motion is present (added in <head> for visitors
   without prefers-reduced-motion, removed again by a fail-safe if the motion
   scripts never boot). Values mirror the "from" states in scroll-reveal.js,
   so there is no flash before GSAP takes over. Layout is never affected:
   only opacity and transform are used.
   ========================================================================== */

.nxc-motion [data-nxc-reveal]:not([data-nxc-revealed]) { opacity: 0; transform: translate3d(0, 28px, 0); }
.nxc-motion [data-nxc-reveal="fade"]:not([data-nxc-revealed]) { transform: none; }
.nxc-motion [data-nxc-reveal="left"]:not([data-nxc-revealed]) { transform: translate3d(-28px, 0, 0); }
.nxc-motion [data-nxc-reveal="right"]:not([data-nxc-revealed]) { transform: translate3d(28px, 0, 0); }
.nxc-motion [data-nxc-reveal="scale"]:not([data-nxc-revealed]) { transform: translate3d(0, 24px, 0) scale(.965); }
.nxc-motion [data-nxc-reveal="rise"]:not([data-nxc-revealed]) { transform: translate3d(0, 40px, 0); }
.nxc-motion [data-nxc-reveal="tilt"]:not([data-nxc-revealed]) { transform: translate3d(0, 36px, 0) rotate(-3deg); }

/* Hero vials start hidden; hero.js settles them in. */
.nxc-motion .nxc-hero__vial img { opacity: 0; }

/* Promote only continuously animated layers. */
.nxc-motion .nxc-hero__vial,
.nxc-motion .nxc-hero__vial img,
.nxc-motion .nxc-bulk__float img,
.nxc-motion .nxc-guarantee__vial,
.nxc-motion .nxc-quality__vial { will-change: transform; }

@media (max-width: 767px) {
	.nxc-motion [data-nxc-reveal]:not([data-nxc-revealed]) { transform: translate3d(0, 18px, 0); }
	.nxc-motion [data-nxc-reveal="left"]:not([data-nxc-revealed]), .nxc-motion [data-nxc-reveal="right"]:not([data-nxc-revealed]) { transform: translate3d(0, 18px, 0); }
	.nxc-motion .nxc-bulk__float img { will-change: auto; }
}
