/* ==========================================================================
   Glowmigos — Scroll reveals + reduced-motion contract
   ========================================================================== */

/* Scoped to .has-js so the page is never blank when scripts do not run. */
.has-js .reveal { opacity: 0; transform: translateY(22px); }
.has-js .reveal.is-in {
  opacity: 1; transform: none;
  transition: opacity 760ms var(--e-out), transform 760ms var(--e-out);
  transition-delay: var(--rd, 0ms);
}

/* --------------------------------------------------------------------------
   Reduced motion: the site still lights up, it just stops moving.
   Applied both by media query and by the [data-motion] flag so the JS
   controllers and the CSS never disagree.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
}

[data-motion="reduced"] .show__stage,
[data-motion="reduced"] .show__flash,
[data-motion="reduced"] .show__drops,
[data-motion="reduced"] .wire__spark,
[data-motion="reduced"] .halo { display: none; }

[data-motion="reduced"] .reveal { opacity: 1; transform: none; }

[data-motion="reduced"] .hb__ring, [data-motion="reduced"] .hb__mid,
[data-motion="reduced"] .hb__core, [data-motion="reduced"] .cb__body,
[data-motion="reduced"] .cb__halo { transition-delay: 0ms !important; }
