/* ============================================
   OTM C.A. — Animation System
   ============================================ */

/* --- Scroll Reveal Base --- */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition:
    opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}

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

/* --- Stagger Delays (children inside a grid/list) --- */
.reveal.stagger-1 { transition-delay: 0.1s; }
.reveal.stagger-2 { transition-delay: 0.2s; }
.reveal.stagger-3 { transition-delay: 0.3s; }
.reveal.stagger-4 { transition-delay: 0.4s; }
.reveal.stagger-5 { transition-delay: 0.5s; }
.reveal.stagger-6 { transition-delay: 0.6s; }

/* --- Hero Entrance --- */
.hero-content.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity 0.9s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

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

/* Hero children stagger */
.hero-content.visible .hero-badge {
  animation: heroFadeUp 0.6s 0.2s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.hero-content.visible .hero-title {
  animation: heroFadeUp 0.6s 0.35s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.hero-content.visible .hero-subtitle {
  animation: heroFadeUp 0.6s 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.hero-content.visible .hero-cta {
  animation: heroFadeUp 0.6s 0.65s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes heroFadeUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* --- Count-Up (number ticking) --- */
.count-up {
  display: inline-block;
}

/* --- Pulse animation (used for service icons on scroll-in) --- */
@keyframes iconPulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

/* --- Bounce animation (trust icons on scroll-in) --- */
@keyframes iconBounce {
  0%   { transform: translateY(0); }
  30%  { transform: translateY(-6px); }
  50%  { transform: translateY(0); }
  70%  { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}

/* --- Gradient shimmer for service card top border --- */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* ============================================
   Accessibility: Reduced Motion
   ============================================ */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .hero-content.reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero-content.visible .hero-badge,
  .hero-content.visible .hero-title,
  .hero-content.visible .hero-subtitle,
  .hero-content.visible .hero-cta {
    animation: none;
  }

  .service-card::before {
    animation: none !important;
  }

  .trust-card.reveal.visible .trust-icon-wrapper {
    animation: none !important;
  }
}
