/* =========================================================
   PV WORKS SOLUTIONS — ANIMATIONS (v2: Dispatch / Bold Dark)
   ========================================================= */

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes pulseRing {
  0% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.5); }
  70% { box-shadow: 0 0 0 12px rgba(245, 158, 11, 0); }
  100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); }
}

.header-phone .phone-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--color-accent);
  display: inline-block;
  animation: pulseRing 2s infinite;
}

@media (prefers-reduced-motion: reduce) {
  .header-phone .phone-dot { animation: none; }
}

/* Staggered card entrance handled via .reveal + IntersectionObserver in animations.js,
   using the .reveal / .in-view rules defined in style.css to keep a single source
   of truth for the visible/hidden states. */

.faq-question:hover { color: var(--color-accent); }

/* Skeleton shimmer, reserved for async content states */
.shimmer {
  background: linear-gradient(90deg, #171B22 25%, #1E2430 37%, #171B22 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}
@keyframes shimmer {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}
