.hero-slide {
  background-size: cover;
  background-position: center;
  opacity: 0;
}

.hero-slide.active {
  opacity: 1;
}

.focus-outline:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

/* Loading spinner animation */
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.animate-spin {
  animation: spin 1s linear infinite;
}

/* Pulse animation for skeleton screens */
@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* Opacity transitions */
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.duration-300 {
  transition-duration: 300ms;
}

.duration-500 {
  transition-duration: 500ms;
}

.opacity-0 {
  opacity: 0;
}

.opacity-100 {
  opacity: 1;
}

/* Loading state utilities */
.backdrop-blur-sm {
  backdrop-filter: blur(4px);
}

.bg-white\/80 {
  background-color: rgba(255, 255, 255, 0.8);
}
