/* ════════════════════════════════════════
   REVEAL ON SCROLL
════════════════════════════════════════ */
.reveal-up {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
}

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

/* Staggered delays via data attribute */
.reveal-up[data-delay="0"]   { transition-delay: 0ms; }
.reveal-up[data-delay="80"]  { transition-delay: 80ms; }
.reveal-up[data-delay="100"] { transition-delay: 100ms; }
.reveal-up[data-delay="120"] { transition-delay: 120ms; }
.reveal-up[data-delay="150"] { transition-delay: 150ms; }
.reveal-up[data-delay="160"] { transition-delay: 160ms; }
.reveal-up[data-delay="200"] { transition-delay: 200ms; }
.reveal-up[data-delay="240"] { transition-delay: 240ms; }
.reveal-up[data-delay="300"] { transition-delay: 300ms; }
.reveal-up[data-delay="360"] { transition-delay: 360ms; }
.reveal-up[data-delay="450"] { transition-delay: 450ms; }
.reveal-up[data-delay="550"] { transition-delay: 550ms; }
.reveal-up[data-delay="700"] { transition-delay: 700ms; }

/* ════════════════════════════════════════
   HERO LINE ANIMATION
   (triggered on page load)
════════════════════════════════════════ */
.hero .hero__content .reveal-up {
  /* Handled by JS adding .visible class on load */
}

/* ════════════════════════════════════════
   SERVICE ACCORDION BODY
════════════════════════════════════════ */
.service__body {
  overflow: hidden;
  max-height: 0;
  transition: max-height var(--dur-slow) var(--ease-out),
              padding var(--dur-med) var(--ease-out);
  padding-bottom: 0;
}

.service__body:not([hidden]) {
  max-height: 400px;
  padding-bottom: var(--space-lg);
}

/* ════════════════════════════════════════
   WA FLOAT PULSE
════════════════════════════════════════ */
@keyframes wa-pulse {
  0%, 100% { box-shadow: 0 4px 20px rgba(37, 211, 102, 0.3); }
  50%       { box-shadow: 0 4px 32px rgba(37, 211, 102, 0.55); }
}

.wa-float {
  animation: wa-pulse 3s ease-in-out infinite;
}

/* ════════════════════════════════════════
   COUNTER ANIMATION (JS-assisted)
════════════════════════════════════════ */
.metric__num {
  display: block;
}

/* ════════════════════════════════════════
   DOT BLINK
════════════════════════════════════════ */
@keyframes dot-blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.3; }
}

.dot {
  animation: dot-blink 2.5s ease-in-out infinite;
}

/* ════════════════════════════════════════
   REDUCED MOTION OVERRIDES
════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  .reveal-up {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .wa-float {
    animation: none;
  }

  .dot {
    animation: none;
  }

  * {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
