/* Progressive Image Loading Styles */

.progressive-image-wrapper {
  position: relative;
  overflow: hidden;
  background-color: #f0f0f0;
}

.progressive-image-placeholder,
.progressive-image-full {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.progressive-image-placeholder {
  filter: blur(20px);
  transform: scale(1.1); /* Slightly scale to hide blur edges */
  transition: opacity 0.3s ease-out;
}

.progressive-image-full {
  transition: opacity 0.4s ease-out;
}

/* When image is loaded */
.progressive-image-wrapper.loaded .progressive-image-placeholder {
  opacity: 0;
}

.progressive-image-wrapper.loaded .progressive-image-full {
  opacity: 1 !important;
}

/* Loading animation */
@keyframes shimmer {
  0% {
    background-position: -1000px 0;
  }
  100% {
    background-position: 1000px 0;
  }
}

.progressive-image-wrapper.loading::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.3),
    transparent
  );
  animation: shimmer 2s infinite;
  z-index: 1;
}

/* Responsive aspect ratio containers */
.progressive-image-wrapper[style*="aspect-ratio"] {
  position: relative;
  width: 100%;
}

.progressive-image-wrapper[style*="aspect-ratio"] img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* For browsers that don't support aspect-ratio */
@supports not (aspect-ratio: 1) {
  .progressive-image-wrapper::before {
    content: '';
    display: block;
    padding-top: 56.25%; /* 16:9 default */
  }
}