/* ==========================================================================
   GFS LEGACY DEBATES — Animation states
   Quiet reveal system: small vertical travel, short durations, no theatrics.
   Content is fully visible without JavaScript — animations.js adds the
   `js-motion` class to <html> only when scripting and full motion are
   available, which enables the hidden initial states below.
   ========================================================================== */

/* Scroll reveals — CSS transition driven, JS only toggles .is-visible */

.js-motion .reveal {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 420ms ease, transform 420ms cubic-bezier(0.25, 0.8, 0.25, 1);
}

.js-motion .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Optional stagger for grouped children (team grids, glance cells) */

.js-motion .reveal-group > * {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 420ms ease, transform 420ms cubic-bezier(0.25, 0.8, 0.25, 1);
  transition-delay: calc(var(--stagger, 0) * 60ms);
}

.js-motion .reveal-group.is-visible > * {
  opacity: 1;
  transform: translateY(0);
}

/* Hero entrance (home + inner pages) — gently staggered by Anime.js */

.js-motion [data-hero] {
  opacity: 0;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
