.product-gallery { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }
.product-gallery__stage {
    position: relative; overflow: hidden; aspect-ratio: 1/1;
    border-radius: var(--radius, 14px); background: var(--color-surface, #fff);
    border: 1px solid var(--color-border, #e5e5e5); cursor: zoom-in;
}
.product-gallery__main-img {
    width: 100%; height: 100%; object-fit: contain; display: block;
    user-select: none; -webkit-user-drag: none; transition: opacity .1s;
}
.product-gallery__stage.is-zooming .product-gallery__main-img { opacity: 0; }
.product-gallery__stage::after {
    content: ""; position: absolute; inset: 0;
    background-image: var(--zoom-bg); background-repeat: no-repeat; background-size: 200%;
    background-position: var(--zoom-x, 50%) var(--zoom-y, 50%); opacity: 0;
    transition: opacity .1s; pointer-events: none;
}
.product-gallery__stage.is-zooming::after { opacity: 1; }
.product-gallery__zoom-btn {
    position: absolute; right: 10px; bottom: 10px; z-index: 2;
    width: 36px; height: 36px; border-radius: 50%;
    border: 1px solid var(--color-border, #ddd); background: var(--color-surface, #fff);
    display: flex; align-items: center; justify-content: center; font-size: 16px; cursor: pointer;
}
.product-gallery__thumbs { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 2px; }
.product-gallery__thumb {
    flex: 0 0 auto; width: 64px; height: 64px; padding: 0;
    border-radius: calc(var(--radius, 14px) * 0.4); border: 2px solid transparent;
    overflow: hidden; cursor: pointer; background: none;
}
.product-gallery__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.product-gallery__thumb.is-active { border-color: var(--color-accent, var(--color-text, #333)); }
@media (hover: none) { .product-gallery__stage { cursor: pointer; } }
