@keyframes rz-open {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes rz-close {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

.rz-open {
  animation: var(--rz-expander-transition) rz-open;
}

.rz-close {
  animation: var(--rz-expander-transition) rz-close;
}

@keyframes rz-pulse {
  0%, 100% { 
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

@keyframes rz-pulse-subtle {
  0%, 100% { 
    opacity: 0.1; 
  }
  50% { 
    opacity: 1; 
  }
}

@keyframes rz-wave {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

// Accessibility: honor the user's OS "reduce motion" preference.
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    transition-timing-function: linear !important;
    animation-duration: 0.01ms !important;
    animation-timing-function: linear !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}