/* Each complete photograph defines its frame, so portrait and landscape originals never letterbox. */
.single-product .client-product-gallery .product-gallery-photo .product-photo-frame{aspect-ratio:var(--gallery-photo-ratio,1);padding:0;min-height:0;width:100%;height:auto;overflow:hidden}
.single-product .client-product-gallery .product-gallery-photo .product-photo-frame .product-photo-open{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;overflow:hidden}
.single-product .client-product-gallery .product-gallery-photo .product-photo-frame .product-gallery-image{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;object-position:center}
/* Curated, hash-guarded crops remove only uniform background; source assets stay unchanged. */
.single-product .client-product-gallery .product-gallery-photo .product-photo-frame[data-gallery-framed] .product-gallery-image{inset:auto;left:var(--gallery-image-left,0);top:var(--gallery-image-top,0);width:var(--gallery-image-width,100%);height:var(--gallery-image-height,100%);object-fit:fill}

/* Keep navigation off measurement text in merchant size diagrams. */
.single-product .client-product-gallery:has([data-gallery-size-chart]:not([hidden])) .product-gallery-controls{top:auto;bottom:6px;inset-inline:auto 12px;justify-content:flex-end;gap:8px}
.single-product .client-product-gallery [data-gallery-size-chart] .product-gallery-caption{min-height:56px;box-sizing:border-box;padding-inline-end:124px}

/* Hide redundant photo caption strips while retaining the measurement navigation rail. */
.single-product .client-product-gallery .product-gallery-caption[hidden]{display:none!important}
