@keyframes hero-load {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

.js .reveal {
  opacity: 0;
  transform: translateY(18px);
  animation: rise 0.7s ease forwards;
  animation-play-state: paused;
}

.reveal.is-in {
  animation-play-state: running;
}

.reveal-delay {
  animation-delay: 0.12s;
}

@keyframes rise {
  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes hit-ping {
  0% { transform: scale(1); opacity: 0.85; }
  70%, 100% { transform: scale(3.6); opacity: 0; }
}

@keyframes hit-dot {
  0%, 70%, 100% { transform: scale(1) translate(0, 0); }
  8% { transform: scale(1.35) translate(0.5px, -0.4px); }
  16% { transform: scale(0.82) translate(-0.55px, 0.45px); }
  24% { transform: scale(1.18) translate(0.35px, 0.25px); }
  34% { transform: scale(1) translate(0, 0); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  .js .reveal,
  .hero-slide,
  .company-media img,
  .service-media img,
  .insight-media img,
  .industry img,
  .btn,
  .text-link::after,
  .desktop-nav a::after,
  .mobile-nav {
    animation: none;
    transition: none;
    transform: none;
    opacity: 1;
  }

  .hero.is-playing .hero-progress span {
    animation: none;
    transform: scaleX(1);
  }

  .dot,
  .hit-ring {
    animation: none;
  }
}
