/* =====================================================================
   Republic of Nature — animation.css
   Scroll-reveal states + keyframes + micro-interactions
   ===================================================================== */

/* Scroll reveal (toggled by IntersectionObserver in main.js) */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
  will-change:opacity, transform;
}
.reveal.in{ opacity:1; transform:none; }

/* Stagger children inside grids that carry .reveal */
.hl-grid .hl-card,
.am-feature-grid .am-feature,
.am-groups .am-group,
.testi-grid .review,
.nature-features .nf,
.loc-cards .dist-card{ transition-delay:calc(var(--i, 0) * 70ms); }

/* Counter pop when active */
.stat .num.counting{ color:var(--bronze); }

/* Keyframes */
@keyframes scrollcue{
  0%{ transform:translateY(0); opacity:1; }
  70%{ transform:translateY(14px); opacity:0; }
  100%{ transform:translateY(0); opacity:0; }
}
@keyframes pulse{
  0%{ transform:scale(1); opacity:.6; }
  70%{ transform:scale(1.7); opacity:0; }
  100%{ transform:scale(1.7); opacity:0; }
}
@keyframes floatUp{
  from{ opacity:0; transform:translateY(20px); }
  to{ opacity:1; transform:none; }
}

/* Hero copy entrance */
.hero-copy > *{ animation:floatUp .9s var(--ease) both; }
.hero-copy .eyebrow{ animation-delay:.05s; }
.hero-copy h1{ animation-delay:.15s; }
.hero-copy .hero-sub{ animation-delay:.28s; }
.hero-copy .hero-points{ animation-delay:.4s; }
.hero-copy .hero-actions{ animation-delay:.52s; }
.hero-form{ animation:floatUp 1s var(--ease) .35s both; }

@media (prefers-reduced-motion:reduce){
  .hero-copy > *,.hero-form{ animation:none; }
  .scroll-cue span,.float-wa::before{ animation:none; }
}
