.progressive-media {
  --progressive-media-reveal-duration: 300ms;
  position: absolute;
  inset: 0;
  display: block;
  overflow: hidden;
  background: #000;
  isolation: isolate;
}

.progressive-media > img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.progressive-media__placeholder {
  z-index: 0;
  opacity: 0.2;
  transition: opacity var(--progressive-media-reveal-duration) ease-out;
}

.progressive-media.has-pixelated-placeholder .progressive-media__placeholder {
  opacity: 0;
  transition: none;
}

.progressive-media__pixelated-placeholder {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 1;
  pointer-events: none;
  transition: opacity var(--progressive-media-reveal-duration) ease-out;
}

.progressive-media__image {
  z-index: 1;
  opacity: 0;
  transition: opacity var(--progressive-media-reveal-duration) ease-out;
}

.progressive-media__reveal {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--progressive-media-reveal-duration) ease-out;
}

.progressive-media.is-revealed .progressive-media__placeholder {
  opacity: 0;
}

.progressive-media.is-revealed .progressive-media__pixelated-placeholder {
  opacity: 0;
}

.progressive-media.is-revealed .progressive-media__image {
  opacity: 1;
  transition: none;
}

.progressive-media.is-fallback-revealing .progressive-media__placeholder,
.progressive-media.is-fallback-revealing .progressive-media__pixelated-placeholder {
  opacity: 0;
}

.progressive-media.is-fallback-revealing .progressive-media__image {
  opacity: 1;
}

.progressive-media.is-revealing .progressive-media__reveal {
  opacity: 1;
}

.progressive-media.is-revealed .progressive-media__reveal {
  opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
  .progressive-media {
    --progressive-media-reveal-duration: 1ms !important;
  }
}
