/* Bioparticle — motion layer (GSAP-driven, progressive enhancement) */

/* FOUC-safe pre-hide: only while JS-motion is armed AND before GSAP confirms.
   A head-level failsafe removes .js-motion if GSAP never initialises, so
   content can never get stuck hidden. */
html.js-motion :where(.sec-head,.stat,.ipanel,.estep,.app,.prod,.wcard,.floor,.matrix,.capgrid,.cta,.specs,.pillbadge,[data-reveal]){opacity:0}
html.js-motion :where(.hero .eyebrow,.hero .pill,.hero h1,.hero .lede,.hero .actions,.hero figure){opacity:0}

/* hero 3D particle field — sits behind hero content, never blocks interaction */
.hero3d{position:absolute;top:0;bottom:0;left:50%;width:100vw;transform:translateX(-50%);z-index:-1;pointer-events:none;overflow:hidden}
.hero3d canvas{display:block}

/* keep brand marks above the canvas regardless of stacking context */
.hero > *:not(.hero3d){position:relative}
