/* Entrance reveal. Elements start hidden. JS MutationObserver adds
   .shown to trigger the animation when Blazor inserts them into DOM.
   Without JS: elements stay hidden. Graceful for legacy browsers. */
@keyframes reveal-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.animate-reveal {
  opacity: 0;
  transform: translateY(20px);
}
.animate-reveal.shown {
  animation: reveal-up 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.stagger-1.shown { animation-delay: 0ms; }
.stagger-2.shown { animation-delay: 120ms; }
.stagger-3.shown { animation-delay: 240ms; }
.stagger-4.shown { animation-delay: 360ms; }
.stagger-5.shown { animation-delay: 480ms; }

/* Hero CTA one-time pulse */
@keyframes cta-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(184, 134, 11, 0.4); }
  50% { box-shadow: 0 0 0 12px rgba(184, 134, 11, 0); }
}
.animate-cta-pulse {
  animation: cta-pulse 2s ease-out 1;
  animation-delay: 3.5s;
  animation-fill-mode: forwards;
}

/* Card border glow on hover */
.card-glow:hover {
  box-shadow: 0 0 0 4px rgba(184, 134, 11, 0.12), 0 4px 12px rgba(15, 23, 42, 0.08);
}

/* Header scroll shadow */
header.sticky.scrolled {
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}

@media (prefers-reduced-motion: reduce) {
  .animate-reveal {
    opacity: 1;
    transform: none;
  }
  .animate-reveal.shown {
    animation: none;
  }
  .animate-cta-pulse {
    animation: none;
  }
}
