.artwork-progressive {
    position: relative;
    display: block;
    max-width: 100%;
    overflow: hidden;
    line-height: 0;
}

.artwork-progressive--ratio {
    width: 100%;
    height: auto;
}

.artwork-progressive--fill {
    width: 100%;
    height: 100%;
}

.artwork-progressive > .artwork-progressive__preview,
.artwork-progressive > picture,
.artwork-progressive > img.artwork-progressive__final-img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
}

.artwork-progressive picture img {
    display: block;
    width: 100%;
    height: 100%;
}

.artwork-progressive--ratio .artwork-progressive__media {
    object-fit: contain;
}

.artwork-progressive--fill .artwork-progressive__media {
    object-fit: cover;
}

.artwork-progressive__preview {
    z-index: 0;
    filter: blur(12px);
    transform: scale(1.02);
}

.artwork-progressive > picture,
.artwork-progressive > img.artwork-progressive__final-img {
    z-index: 1;
}

.artwork-progressive__final-img {
    opacity: 0;
}

.artwork-progressive.is-sharp .artwork-progressive__final-img {
    opacity: 1;
    transition: opacity 200ms ease;
}

.discover-view__grid .discover-view__image-wrap > .artwork-progressive--ratio {
    width: 100%;
    min-width: 100%;
    max-width: 100%;
    max-height: calc(100cqi * var(--artwork-media-max-ratio, 1.75));
    height: auto;
    flex: 0 0 auto;
    align-self: stretch;
}

.discover-view__grid[data-recommendation-list] .discover-view__image-wrap > .artwork-progressive,
.discover-view__grid[data-recommendation-list] .discover-view__image-wrap > picture,
.discover-view__grid[data-recommendation-list] .artwork-progressive__media,
.discover-view__grid[data-recommendation-list] img.discover-view__image {
    width: 100%;
    max-width: 100%;
    object-fit: cover;
}

.discover-view__list .artwork-progressive,
.recent-view__image-wrap .artwork-progressive,
.latest-artworks__image-wrap .artwork-progressive,
.artist-artworks__image-wrap .artwork-progressive,
.artist-profile-artwork-media .artwork-progressive,
.fav-artwork__image-container .artwork-progressive,
.order-confirmation-artwork__image-container .artwork-progressive {
    width: 100%;
    height: 100%;
    aspect-ratio: auto !important;
}

.artist-card__carousel-img .artwork-progressive__media {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.discover-view__list .artwork-progressive__media,
.recent-view__image-wrap .artwork-progressive__media,
.latest-artworks__image-wrap .artwork-progressive__media,
.artist-artworks__image-wrap .artwork-progressive__media,
.artist-profile-artwork-media .artwork-progressive__media,
.fav-artwork__image-container .artwork-progressive__media,
.order-confirmation-artwork__image-container .artwork-progressive__media,
.artist-card__background.artwork-progressive__media {
    object-fit: cover;
}

/* Height is the constraint. Width is the photo ratio at that height, then
   clamped. The ratio is published as --artwork-ratio next to aspect-ratio
   so the slide does not fall back to the file's intrinsic max-content size. */
.artist-card__carousel-img .artwork-progressive--ratio {
    height: var(--carousel-slide-height, 320px);
    width: clamp(
        var(--carousel-slide-min, 198px),
        calc(var(--carousel-slide-height, 320px) * var(--artwork-ratio, 1)),
        var(--carousel-slide-max, 688px)
    );
    min-width: var(--carousel-slide-min, 198px);
    max-width: var(--carousel-slide-max, 688px);
    flex: 0 0 auto;
}

.main-image-wrapper .artwork-progressive--ratio {
    width: auto;
    height: 770px;
    max-width: 100%;
    margin-inline: auto;
}

.main-image-wrapper .artwork-progressive--ratio .main-image {
    width: 100%;
    height: 100%;
    max-height: none;
    object-fit: contain;
}

@media (max-width: 1440px) {
    .main-image-wrapper .artwork-progressive--ratio {
        height: 600px;
    }
}

@media (max-width: 700px) {
    .main-image-wrapper .artwork-progressive--ratio {
        height: 500px;
    }
}

@media (max-width: 520px) {
    .main-image-wrapper .artwork-progressive--ratio {
        height: 350px;
    }
}
