@keyframes intensiva-shimmer-sweep {
  0%   { transform: translateX(-150%); }
  100% { transform: translateX(250%); }
}

.intensiva-shimmer-image-wrap,
.intensiva-shimmer-media-wrap {
  position: relative;
  overflow: hidden;
  max-width: 100%;
  vertical-align: middle;
  background: #e2e2e2;
}

.intensiva-shimmer-wrap-inline {
  display: inline-block;
}

.intensiva-shimmer-wrap-block {
  display: block;
}

.intensiva-shimmer-image-wrap > img,
.intensiva-shimmer-image-wrap > picture,
.intensiva-shimmer-image-wrap > picture > img,
.intensiva-shimmer-media-wrap > img,
.intensiva-shimmer-media-wrap > picture,
.intensiva-shimmer-media-wrap > picture > img,
.intensiva-shimmer-media-wrap > iframe,
.intensiva-shimmer-media-wrap > video {
  display: block;
  max-width: 100%;
}

.intensiva-shimmer-image-wrap > picture,
.intensiva-shimmer-media-wrap > picture {
  width: 100%;
}

.intensiva-shimmer-image-wrap.intensiva-shimmer-has-ratio > img,
.intensiva-shimmer-image-wrap.intensiva-shimmer-has-ratio > picture,
.intensiva-shimmer-image-wrap.intensiva-shimmer-has-ratio > picture > img,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-ratio > img,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-ratio > picture,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-ratio > picture > img {
  width: 100%;
}

.intensiva-shimmer-media-wrap.intensiva-shimmer-has-ratio > iframe,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-ratio > video,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-fixed-size > iframe,
.intensiva-shimmer-media-wrap.intensiva-shimmer-has-fixed-size > video {
  width: 100%;
  height: 100%;
}

.shimmer-loading {
  position: relative;
  overflow: hidden;
}

.shimmer-overlay {
  position: absolute;
  inset: 0;
  background: #e2e2e2;
  z-index: 10;
  overflow: hidden;
  transition: opacity 0.6s ease;
  pointer-events: none;
  border-radius: inherit;
}

.shimmer-overlay.hide {
  opacity: 0;
}

.shimmer-wave {
  position: absolute;
  top: 0;
  left: 0;
  width: 55%;
  height: 100%;
  background: linear-gradient(
    90deg,
    rgba(255,255,255,0)    0%,
    rgba(255,255,255,0.30) 20%,
    rgba(255,255,255,0.85) 50%,
    rgba(255,255,255,0.30) 80%,
    rgba(255,255,255,0)   100%
  );
  animation: intensiva-shimmer-sweep 1.5s infinite ease-in-out;
}

.shimmer-img,
.shimmer-media {
  opacity: 0;
  transition: opacity 0.6s ease;
}

.shimmer-img.loaded,
.shimmer-media.loaded {
  opacity: 1;
}

.intensiva-shimmer-loaded {
  background: transparent;
}

@media (prefers-reduced-motion: reduce) {
  .shimmer-wave {
    animation: none;
  }

  .shimmer-overlay,
  .shimmer-img,
  .shimmer-media {
    transition: none;
  }
}
