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

.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 {
  opacity: 0;
  transition: opacity 0.6s ease;
}

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

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

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