/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 520ms var(--ease-out),
              transform 520ms var(--ease-out);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.about-stat.visible .about-stat-value {
  animation: aboutStatPop 560ms var(--ease-out) both;
}

@keyframes aboutStatPop {
  from {
    opacity: 0;
    transform: scale(0.88) translateY(8px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-stat.visible .about-stat-value {
    animation: none;
  }
}

/* Stagger groups */
.stagger > *:nth-child(1) { transition-delay:   0ms; }
.stagger > *:nth-child(2) { transition-delay:  50ms; }
.stagger > *:nth-child(3) { transition-delay: 100ms; }
.stagger > *:nth-child(4) { transition-delay: 150ms; }
.stagger > *:nth-child(5) { transition-delay: 200ms; }
.stagger > *:nth-child(6) { transition-delay: 250ms; }
.stagger > *:nth-child(7) { transition-delay: 300ms; }
.stagger > *:nth-child(8) { transition-delay: 350ms; }

/* Card entry via @starting-style */
.card {
  transition: opacity 380ms var(--ease-out),
              transform 380ms var(--ease-out),
              box-shadow 200ms ease;
}

@supports (animation-timeline: scroll()) {
  .card {
    @starting-style {
      opacity: 0;
      transform: translateY(16px) scale(0.98);
    }
  }
}

/* Image clip reveal */
.img-clip {
  clip-path: inset(0 0 100% 0);
  transition: clip-path 650ms var(--ease-out);
}

.img-clip.visible {
  clip-path: inset(0 0 0 0);
}

/* Hero headline clip from left */
.hero-reveal {
  clip-path: inset(0 100% 0 0);
  transition: clip-path 700ms var(--ease-out);
}

.hero-reveal.visible {
  clip-path: inset(0 0% 0 0);
}

/* Fade up — for hero sub-elements */
.fade-up {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 600ms var(--ease-out),
              transform 600ms var(--ease-out);
}

.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

.fade-up-delay-1 { transition-delay: 150ms; }
.fade-up-delay-2 { transition-delay: 300ms; }
.fade-up-delay-3 { transition-delay: 450ms; }

/* Section label entrance (triggered by parent .reveal gaining .visible) */
.reveal .section-label {
  display: inline-block;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 380ms var(--ease-out) 60ms,
              transform 380ms var(--ease-out) 60ms;
}

.reveal.visible .section-label {
  opacity: 1;
  transform: translateY(0);
}

/* Form field error shake */
@keyframes fieldShake {
  0%, 100% { transform: translateX(0); }
  20%       { transform: translateX(-5px); }
  40%       { transform: translateX(5px); }
  60%       { transform: translateX(-4px); }
  80%       { transform: translateX(4px); }
}

.form-control.error {
  animation: fieldShake 350ms var(--ease-out);
}

/* Reduced motion overrides */
@media (prefers-reduced-motion: reduce) {
  .reveal .section-label {
    transition: none;
  }
  .form-control.error {
    animation: none;
  }
}
