.product__body{position:relative}
/* carrousel image tuile (scroll-snap, flèches au survol) + quickbuy (add-to-cart au survol) */
.product__visuals__wrapper{position:relative;overflow:hidden}
.alz-carousel{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}
.alz-carousel::-webkit-scrollbar{display:none}
.alz-carousel>.swiper-slide{flex:0 0 100%;scroll-snap-align:start;min-width:100%}
.alz-carousel>.swiper-slide img{width:100%;display:block}
.product__tile .product__visuals__buttons{position:absolute;top:0;bottom:0;left:0;right:0;height:auto;display:flex;justify-content:space-between;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s;padding:0 .8rem;z-index:3}
.product__visuals__wrapper.alz-has-carousel:hover .product__visuals__buttons{opacity:1}
.product__tile .product__visuals__buttons button{pointer-events:all;background:rgba(255,255,255,.86);border:0;width:2.6rem;height:2.6rem;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#2e2e2e;padding:0}
.product__tile .alz-quickbuy{position:absolute;right:1rem;bottom:1rem;left:auto;top:auto;order:0;align-self:auto;width:3.2rem;height:3.2rem;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;color:#2e2e2e;opacity:0;transition:opacity .2s;z-index:4;box-shadow:0 2px 8px rgba(0,0,0,.14);text-decoration:none}
.product__tile:hover .alz-quickbuy{opacity:1}
@media(max-width:768px){.product__visuals__buttons{display:none}.alz-quickbuy{opacity:1}}
/* Home : certains modules (surtout MOBILE, page-designer) masquent .product__body pour un rendu
   image plein cadre -> pas de titre/prix. On force titre+prix visibles sous chaque tuile (demande
   user), y compris ceux injectés depuis data-gtmdata. */
.alz-home product-tile>.product__body{display:block!important}
.alz-home product-tile>.product__body>.product__body__wrapper{display:block!important;padding:.6rem .2rem 0}
.alz-home .product__title{display:block!important}
.alz-home .product__title__name{font-size:1.1rem;line-height:1.3}
.alz-home .product__price{display:block!important;margin-top:.2rem;font-size:1.1rem}
/* Prix soldés (demande user) : regular barré NOIR + prix réduit ROUGE, sur la MÊME ligne.
   Couvre le rendu natif WooCommerce (<del>/<ins> autour de .woocommerce-Price-amount) sur
   collection / PDP / complete-the-look ET les prix injectés de la home. */
.product__price,.productDetail__price,.price{white-space:nowrap}
.product__price del,.productDetail__price del,.price del,
.product__price ins,.productDetail__price ins,.price ins{display:inline!important}
.product__price del,.product__price del *,
.productDetail__price del,.productDetail__price del *,
.price del,.price del *{color:#000!important;text-decoration:line-through!important;opacity:1!important}
.product__price ins,.product__price ins *,
.productDetail__price ins,.productDetail__price ins *,
.price ins,.price ins *{color:#d0021b!important;text-decoration:underline!important;background:none}
.product__price ins,.productDetail__price ins,.price ins{margin-left:.5rem}
/* cœur wishlist ré-affiché — le thème le met display:none (piloté par le JS SFCC retiré) ;
   ici décoratif, à droite du titre/prix comme la vraie tuile. 0 backend, 0 phone-home. */
.product__body>.product__body__wishlist.alz-wishlist{display:flex!important;flex:0 0 auto;align-items:flex-start;margin-left:.6rem;pointer-events:all}
.product__body>.product__body__wrapper{width:auto;flex:1 1 auto;min-width:0}
.product__body__wishlist.alz-wishlist .product__body__wishlistCTA{height:1.6rem;width:1.6rem;padding:0;border:0;background:none;cursor:pointer}
.product__body__wishlist.alz-wishlist .product__body__wishlistCTA svg{display:block;width:1.6rem;height:1.6rem}
.product__body__wishlist.alz-wishlist .product__body__wishlistCTA svg path{stroke:#2e2e2e;stroke-width:.1rem;transition:fill .2s}
.product__body__wishlist.alz-wishlist .product__body__wishlistCTA:hover svg path{fill:#2e2e2e}
