/**
 * Lazy Loading Styles
 * Smooth transitions for progressively loaded content
 */

/* Image lazy loading animations */
img[data-lazy] {
  opacity: 0;
  transition: opacity 0.3s ease-in;
}

img.lazy-loaded {
  opacity: 1;
}

/* Section lazy loading animations */
[data-lazy-section] {
  opacity: 0;
  transition: opacity 0.5s ease-in 0.1s;
}

[data-lazy-section].section-loaded {
  opacity: 1;
}

/* Smooth fade-in for multiple images loading in sequence */
[data-lazy-section] img[data-lazy] {
  opacity: 0;
  transition: opacity 0.4s ease-in;
}

[data-lazy-section] img.lazy-loaded {
  opacity: 1;
}

/* Video lazy loading styles */
#home-bg-video {
  will-change: opacity;
  transition: opacity 0.5s ease-in;
}

#home-bg-video.video-loaded {
  opacity: 1;
}

/* Placeholder backgrounds for images while loading */
img[data-lazy] {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: loading 1.5s infinite;
}

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

/* Disable animation once image is loaded */
img.lazy-loaded {
  animation: none;
  background: none;
}

/* Intersection observer: Fade-in effect for entering elements */
@media (prefers-reduced-motion: no-preference) {
  [data-lazy-section] {
    animation: fadeInUp 0.6s ease-out forwards;
    animation-delay: 0.1s;
  }

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

/* Performance: Use GPU acceleration for smooth scrolling */
[data-lazy-section],
img[data-lazy],
#home-bg-video {
  backface-visibility: hidden;
  perspective: 1000px;
}

/* Loading indicator (optional) */
.section-loading::after {
  content: '';
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #ccc;
  animation: pulse 1.5s infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 0.6;
  }
  50% {
    opacity: 1;
  }
}

/* Mobile optimization */
@media (max-width: 768px) {
  img[data-lazy] {
    /* Slightly faster animation on mobile */
    transition: opacity 0.2s ease-in;
  }

  [data-lazy-section] {
    transition: opacity 0.3s ease-in 0.05s;
  }
}
