:root {
  --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --spring-soft: cubic-bezier(0.34, 1.56, 0.64, 1);

  --dur-micro: 120ms;
  --dur-fast: 200ms;
  --dur-med: 320ms;
  --dur-slow: 600ms;
  --dur-xslow: 1400ms;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

@keyframes pv-pulse-dot {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}
@keyframes pv-breathe {
  0%, 100% { transform: scaleY(1); }
  50% { transform: scaleY(1.06); }
}
@keyframes pv-shimmer {
  0% { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}
@keyframes pv-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes pv-overlay-enter {
  from { opacity: 0; transform: translate(-50%, 8px) scale(0.96); filter: blur(8px); }
  to { opacity: 1; transform: translate(-50%, 0) scale(1); filter: blur(0); }
}
