/* A single overlay, shared by cards, thumbnails, profile and viewer. */
[data-photo-stage] { isolation: isolate; }
img[data-photo-pending], img[data-photo-failed] { visibility: hidden; }
.media__loader { position: absolute; inset: 0; z-index: 3; display: grid; place-items: center; overflow: hidden; border-radius: inherit; background: var(--color-panel); pointer-events: none; }
.media__loader .media__stamp { position: relative; inset: auto; width: 44px; height: 44px; object-fit: contain; opacity: .12; visibility: visible; }
.media__loader::after { content: ''; position: absolute; inset: -35%; background: linear-gradient(135deg, transparent 40%, var(--color-shine) 46%, var(--color-shine) 54%, transparent 60%); transform: translate(-75%, -75%); }
[data-photo-stage="shimmer"] > .media__loader::after { animation: media-shine 1.2s linear infinite; }
[data-photo-stage]::before, [data-photo-stage]::after { animation: none; }
[data-photo-stage] > .postcard__img { object-fit: contain; }
@keyframes media-shine { from { transform: translate(-75%, -75%); } to { transform: translate(75%, 75%); } }
@media (prefers-reduced-motion: reduce) { [data-photo-stage="shimmer"] > .media__loader::after { animation: none; } }

/* Retire per-component timers and duplicate shimmer layers. */
.dd__thumb.is-loading::before, .dd__thumb.is-loading::after,
.profile__avatar.is-loading::after, .profile__head.is-loading::after,
.profile__avatar:has(.dd__thumb.is-loading)::after, .profile__head:has(.dd__thumb.is-loading)::after,
.post-panel__preview.is-loading::before, .post-panel__preview.is-loading::after,
.viewer__boot { display: none; }

html [data-photo-stage] > .media__loader > img.media__stamp { width: 44px; height: 44px; min-width: 0; max-width: none; opacity: .12; visibility: visible; display: block; filter: none; transform: none; }

/* Loader artwork must never inherit photo cropping or natural-width sizing. */
html [data-photo-stage] > .media__loader > img.media__stamp {
    object-fit: contain;
    flex: none;
    aspect-ratio: 1;
}
html .dd__thumb[data-photo-stage] > .media__loader > img.media__stamp {
    width: 24px;
    height: 24px;
    min-width: 24px;
    max-width: 24px;
    min-height: 24px;
    max-height: 24px;
    object-fit: contain;
}
