@keyframes pulse-cta {
  0% {
    box-shadow: 0 0 0 0 rgba(196, 66, 10, 0.55);
  }

  65% {
    box-shadow: 0 0 0 14px rgba(196, 66, 10, 0);
  }

  100% {
    box-shadow: 0 0 0 0 rgba(196, 66, 10, 0);
  }
}

.btn-primary {
  animation: pulse-cta 2.4s ease-out infinite;
  transition: transform 0.18s ease, filter 0.18s ease;
}

.btn-primary:hover {
  transform: translateY(-3px) scale(1.02);
  filter: brightness(1.08);
}

.card:hover {
  transform: translateY(-7px);
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.2);
}

.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(232, 100, 42, 0.08) 1px, transparent 1px);
  background-size: 48px 48px;
  animation: grain-drift 18s ease-in-out infinite alternate;
  pointer-events: none;
}

@keyframes grain-drift {
  0% {
    transform: translateY(0) translateX(0);
  }

  100% {
    transform: translateY(-18px) translateX(8px);
  }
}

.trust-track {
  animation: marquee 28s linear infinite;
}

.trust-track:hover {
  animation-play-state: paused;
}

@keyframes marquee {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

.animate {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}

.animate.is-visible {
  opacity: 1;
  transform: translateY(0);
}
