/* ══════════════════════════════════════════════════════════════════
   GNC — Scroll Animations
   All elements start hidden via [data-gnc-anim] and are revealed
   by the IntersectionObserver in animations.js.
   ══════════════════════════════════════════════════════════════════ */

/* ── Respect reduced-motion preference ──────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  [data-gnc-anim] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* ── Base: every animated element starts invisible ──────────────── */
[data-gnc-anim] {
  opacity: 0;
  will-change: opacity, transform;
  transition-property: opacity, transform;
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  transition-duration: 0.85s;
}

/* ── Revealed state ─────────────────────────────────────────────── */
[data-gnc-anim].gnc-visible {
  opacity: 1 !important;
  transform: none !important;
}

/* ── Fade up (default) ──────────────────────────────────────────── */
[data-gnc-anim="fade-up"] {
  transform: translateY(40px);
}

/* ── Fade in (no movement) ──────────────────────────────────────── */
[data-gnc-anim="fade"] {
  transform: none;
}

/* ── Fade left ──────────────────────────────────────────────────── */
[data-gnc-anim="fade-left"] {
  transform: translateX(-48px);
}

/* ── Fade right ─────────────────────────────────────────────────── */
[data-gnc-anim="fade-right"] {
  transform: translateX(48px);
}

/* ── Scale up (images, cards) ───────────────────────────────────── */
[data-gnc-anim="scale"] {
  transform: scale(0.93);
}

/* ── Line draw (decorative rules / underlines) ──────────────────── */
[data-gnc-anim="line"] {
  transform: scaleX(0);
  transform-origin: left center;
  opacity: 1;
}

/* ── Stagger delay helpers (applied via JS data-gnc-delay) ─────── */
/* These are set inline by JS: style="transition-delay: Xms" */

/* ── Number counter ─────────────────────────────────────────────── */
.gnc-count-up {
  display: inline-block;
}
