@keyframes slow-zoom {
  from { transform: scale(1); }
  to { transform: scale(1.08); }
}

@keyframes scroll-line {
  0% { transform: scaleY(0); transform-origin: top; }
  50% { transform: scaleY(1); transform-origin: top; }
  51% { transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

@keyframes fade-up {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 1s cubic-bezier(.2,.7,.2,1), transform 1s cubic-bezier(.2,.7,.2,1);
}
.reveal.in-view {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger children */
.services-grid .reveal:nth-child(2) { transition-delay: .1s; }
.services-grid .reveal:nth-child(3) { transition-delay: .2s; }
.services-grid .reveal:nth-child(4) { transition-delay: .3s; }

.showcase-grid .reveal:nth-child(2) { transition-delay: .1s; }
.showcase-grid .reveal:nth-child(3) { transition-delay: .2s; }
.showcase-grid .reveal:nth-child(4) { transition-delay: .3s; }

.philosophy-grid .reveal:nth-child(2) { transition-delay: .12s; }
.philosophy-grid .reveal:nth-child(3) { transition-delay: .24s; }

.testimonial-grid .reveal:nth-child(2) { transition-delay: .12s; }
.testimonial-grid .reveal:nth-child(3) { transition-delay: .24s; }

.approach-steps .reveal:nth-child(2) { transition-delay: .1s; }
.approach-steps .reveal:nth-child(3) { transition-delay: .2s; }
.approach-steps .reveal:nth-child(4) { transition-delay: .3s; }

.hero-content .reveal { animation: fade-up 1.1s cubic-bezier(.2,.7,.2,1) both; opacity: 1; transform: none; }
.hero-content .reveal:nth-child(1) { animation-delay: .15s; }
.hero-content .reveal:nth-child(2) { animation-delay: .35s; }
.hero-content .reveal:nth-child(3) { animation-delay: .55s; }
.hero-content .reveal:nth-child(4) { animation-delay: .75s; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
  .reveal { opacity: 1; transform: none; }
}