/**
 * Lazy Loading Image Styles
 * Provides smooth transitions and placeholder states for lazy-loaded images
 */

/* Base lazy image state - hidden until loaded */
img.lazy {
  opacity: 0;
  transition: opacity 0.3s ease-in-out;
}

/* Loaded state - fade in smoothly */
img.lazy.loaded {
  opacity: 1;
}

/* Error state - show with reduced opacity */
img.lazy.error {
  opacity: 0.5;
  filter: grayscale(100%);
}

/* Skeleton placeholder for images while loading */
.image-skeleton {
  background: linear-gradient(90deg, #f0f0f0 0%, #e0e0e0 50%, #f0f0f0 100%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
}

@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

/* Blur placeholder for progressive image loading */
.image-blur-placeholder {
  filter: blur(10px);
  transition: filter 0.3s ease-in-out;
}

.image-blur-placeholder.loaded {
  filter: blur(0);
}
