/* Uniform compact frames: fit complete artwork without cropping or stretching. */
.product-photo,.product-photo:has(>.product-image){position:relative;width:100%;height:auto;aspect-ratio:1.05;min-height:0;padding:0;background:var(--photo,#f1ede5);overflow:hidden;border-radius:5px}
.product-photo>.product-image{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:100%;max-height:none;object-fit:contain;object-position:center;margin:0;padding:0;border:0;border-radius:0;background:transparent;transform:none}
.product-link:hover .product-image,.cart-product-image:hover>.product-image{transform:none}
.real-product-gallery{width:100%;min-width:0;align-self:start}
.gallery-stage{position:relative;width:100%;max-width:520px;aspect-ratio:1.05;margin-inline:auto;background:var(--photo,#f1ede5);border-radius:5px;overflow:hidden}
.gallery-stage>.gallery-main.product-image{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:100%;min-height:0;max-height:none;aspect-ratio:auto;object-fit:contain;object-position:center;margin:0;padding:0;border:0;background:transparent;transform:none}
.gallery-thumbnails{display:flex;align-items:flex-start;gap:8px;overflow-x:auto;padding:4px 2px 10px;scroll-snap-type:x proximity}
.gallery-thumbnails button{flex:0 0 64px;height:64px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:4px;background:var(--photo,#f1ede5);scroll-snap-align:start;outline-offset:2px}
.gallery-thumbnails button[aria-pressed=true]{outline:2px solid #a8833d}
.gallery-thumbnails .product-image{display:block;width:64px;height:64px;object-fit:contain;margin:0;padding:0;border:0;transform:none}
.cart-product-image:has(>.product-image){aspect-ratio:1;height:auto;padding:0;background:var(--photo,#f1ede5);align-self:start;overflow:hidden}
.cart-product-image>.product-image{display:block;width:100%;height:100%;object-fit:contain;margin:0;padding:0;border:0;transform:none}
.pricing-product a:has(>.product-image){display:block}
.pricing-product .product-image{display:block;float:none;width:100%;max-width:300px;height:auto;aspect-ratio:1.05;object-fit:contain;background:var(--photo,#f1ede5);margin:0 0 16px;padding:0;border:0}
/* Save controls never cover a logo, contact number or image text. */
/* Shared save position for every existing and future product card. */
.product-card>.save-button{position:absolute;top:10px;right:10px;bottom:auto;left:auto;margin:0;display:flex;z-index:2}
@media(max-width:760px){.product-card>.save-button{top:6px;right:6px}}
.uploaded-product .open-product{display:none}
@media(max-width:760px){.gallery-stage{max-width:420px}.gallery-stage>.gallery-main.product-image{height:100%;max-height:none}.gallery-thumbnails .product-image{width:64px;height:64px}}

/* Catalog pages show at most sixteen products in a four-column desktop grid. */
.catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.catalog-pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin-top:28px}
.catalog-pagination a{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:8px 14px;border:1px solid var(--line);border-radius:4px}
.catalog-pagination a[aria-current=page]{background:var(--navy);color:#fff}
@media(max-width:1000px){.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Initial brand animation dismisses after three seconds even if JavaScript fails. */
.emart-loading{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:#faf8f3;animation:emart-loader-dismiss 3s linear forwards;pointer-events:none}
.emart-loading-brand{width:min(280px,70vw);text-align:center}
.emart-loading-brand img{display:block;width:100%;height:auto;animation:emart-logo-pulse 1.4s ease-in-out 2}
.emart-loading-progress{display:block;height:3px;width:100%;margin-top:18px;background:#e9c47f;transform-origin:left;animation:emart-loader-progress 3s linear forwards}
@keyframes emart-loader-dismiss{0%,90%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@keyframes emart-logo-pulse{0%,100%{transform:scale(.96);opacity:.8}50%{transform:scale(1);opacity:1}}
@keyframes emart-loader-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.emart-loading-brand img,.emart-loading-progress{animation:none}.emart-loading{animation-timing-function:steps(1,end)}}
.storefront-load-error{padding:16px;background:#fff1d6;color:#0b1928}
