.image-shimmer{position:relative;overflow:hidden;background:linear-gradient(90deg,#e0e0e0,#f0f0f0 20%,#f0f0f0 40%,#e0e0e0);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.image-fade-in{opacity:0;transition:opacity .5s ease-in-out}.image-fade-in[data-loaded=true]{opacity:1}.image-shimmer:has(img[complete]){animation:none;background:transparent}