/* ==========================================================================
   JoomlaHelpNow — Animation Utilities
   Subtle, purposeful motion only. Every keyframe here is used deliberately
   somewhere in the design system — nothing decorative-for-its-own-sake.
   ========================================================================== */

@keyframes pulse-dot {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.5); }
  50% { opacity: 0.6; box-shadow: 0 0 0 4px rgba(20, 184, 166, 0); }
}

@keyframes pulse-dot-amber {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.5); }
  50% { opacity: 0.6; box-shadow: 0 0 0 4px rgba(245, 158, 11, 0); }
}

@keyframes line-reveal {
  to { opacity: 1; transform: translateY(0); }
}

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

@keyframes scan-sweep {
  from { transform: translateX(-100%); }
  to { transform: translateX(220%); }
}

/* Scroll reveal: elements start hidden, JS toggles .is-visible via
   IntersectionObserver (see assets/js/animations.js) */
.js-reveal [data-reveal] {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--duration-slow) var(--ease-out),
              transform var(--duration-slow) var(--ease-out);
}
.js-reveal [data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
.js-reveal [data-reveal="stagger"] > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--duration-slow) var(--ease-out),
              transform var(--duration-slow) var(--ease-out);
}
.js-reveal [data-reveal="stagger"].is-visible > * {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="stagger"].is-visible > *:nth-child(1) { transition-delay: 0ms; }
[data-reveal="stagger"].is-visible > *:nth-child(2) { transition-delay: 80ms; }
[data-reveal="stagger"].is-visible > *:nth-child(3) { transition-delay: 160ms; }
[data-reveal="stagger"].is-visible > *:nth-child(4) { transition-delay: 240ms; }
[data-reveal="stagger"].is-visible > *:nth-child(5) { transition-delay: 320ms; }
[data-reveal="stagger"].is-visible > *:nth-child(6) { transition-delay: 400ms; }

@media (prefers-reduced-motion: reduce) {
  .js-reveal [data-reveal], .js-reveal [data-reveal="stagger"] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .diagnostic-line { opacity: 1 !important; transform: none !important; animation: none !important; }
  .diagnostic-panel__live::before { animation: none !important; }
  .emergency-cta__signal::before { animation: none !important; }
}
