/* ============ REVEAL ============ */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease-out), transform .9s var(--ease-out);
  will-change: opacity, transform;
}
[data-reveal].is-in { opacity: 1; transform: none; }

/* Stagger within groups */
.eco-grid > [data-reveal]:nth-child(1),
.services-grid > [data-reveal]:nth-child(1),
.journey > [data-reveal]:nth-child(1),
.approach > [data-reveal]:nth-child(1),
.vision__grid > [data-reveal]:nth-child(1),
.ecosystem-story > [data-reveal]:nth-child(1) { transition-delay: 0s; }
.eco-grid > [data-reveal]:nth-child(2),
.services-grid > [data-reveal]:nth-child(2),
.journey > [data-reveal]:nth-child(2),
.approach > [data-reveal]:nth-child(2),
.vision__grid > [data-reveal]:nth-child(2),
.ecosystem-story > [data-reveal]:nth-child(2) { transition-delay: .1s; }
.eco-grid > [data-reveal]:nth-child(3),
.services-grid > [data-reveal]:nth-child(3),
.journey > [data-reveal]:nth-child(3),
.approach > [data-reveal]:nth-child(3),
.vision__grid > [data-reveal]:nth-child(3),
.ecosystem-story > [data-reveal]:nth-child(3) { transition-delay: .2s; }
.eco-grid > [data-reveal]:nth-child(4),
.services-grid > [data-reveal]:nth-child(4),
.journey > [data-reveal]:nth-child(4),
.approach > [data-reveal]:nth-child(4),
.ecosystem-story > [data-reveal]:nth-child(4) { transition-delay: .3s; }
.eco-grid > [data-reveal]:nth-child(5),
.services-grid > [data-reveal]:nth-child(5),
.journey > [data-reveal]:nth-child(5),
.ecosystem-story > [data-reveal]:nth-child(5) { transition-delay: .4s; }
.eco-grid > [data-reveal]:nth-child(6) { transition-delay: .5s; }
.eco-grid > [data-reveal]:nth-child(7) { transition-delay: .6s; }
.eco-grid > [data-reveal]:nth-child(8) { transition-delay: .7s; }

/* ============ HERO ============ */
.hero__title .line { overflow: hidden; }

/* ============ NETWORK PULSE ============ */
.hero__network-nodes circle:not(:first-child) {
  animation: nodePulse 2.4s ease-in-out infinite;
  transform-origin: center;
}
.hero__network-nodes circle:nth-of-type(2) { animation-delay: 0s; }
.hero__network-nodes circle:nth-of-type(3) { animation-delay: .3s; }
.hero__network-nodes circle:nth-of-type(4) { animation-delay: .6s; }
.hero__network-nodes circle:nth-of-type(5) { animation-delay: .9s; }
.hero__network-nodes circle:nth-of-type(6) { animation-delay: 1.2s; }
.hero__network-nodes circle:nth-of-type(7) { animation-delay: 1.5s; }
@keyframes nodePulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.5); }
}
.hero__network-lines line {
  stroke-dasharray: 4 6;
  animation: dash 20s linear infinite;
}
@keyframes dash { to { stroke-dashoffset: -200; } }

/* ============ SCROLL HINT ============ */
.hero__scroll i { animation: bounce 2s ease-in-out infinite; }
@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(4px); }
}

/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1; transform: none; transition: none; }
  .hero__network-nodes circle,
  .hero__network-lines line,
  .hero__scroll i { animation: none; }
}