/* Shared motion — all pages */

@keyframes hero-fade-up {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes hero-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes cta-shift {
  0%,
  100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

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

.reveal.is-inview {
  opacity: 1;
  transform: translateY(0);
}

/* CTA band */
.cta-band {
  background:
    linear-gradient(125deg, var(--color-navy-deep) 0%, var(--color-navy-mid) 42%, var(--color-navy) 72%, var(--color-navy-mid) 100%);
  background-size: 200% 200%;
  animation: cta-shift 16s ease-in-out infinite;
}

.cta-band .btn-orange {
  transition: background var(--transition), color var(--transition), border-color var(--transition),
    transform var(--transition);
}

.cta-band .btn-orange:hover {
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .cta-band {
    animation: none;
    background: var(--color-navy-mid);
    background-size: auto;
  }

  .cta-band .btn-orange:hover {
    transform: none;
  }
}
