/*
 * Fiche produit. WooCommerce structure la page en deux colonnes via
 * .woocommerce-product-gallery (galerie) et .summary.entry-summary (résumé).
 */
.single-product #primary.tpc-main { padding-top: var(--tpc-space-5); }
div.product {
  display: grid; grid-template-columns: 1fr; gap: var(--tpc-space-6) var(--tpc-space-8); align-items: start;
}
/*
 * Résumé (.summary.entry-summary) poussé au maximum vers la droite : la galerie est
 * plafonnée (30rem, ou 36 % de la largeur disponible si celle-ci est plus étroite — la
 * plus petite des deux l'emporte), et le résumé absorbe tout le reste. Plus le conteneur
 * est large (réglage Customizer § Général > Largeur du conteneur), plus le résumé
 * s'élargit réellement — contrairement à un simple partage en fractions (fr), qui
 * grandirait les deux colonnes proportionnellement sans jamais privilégier le résumé.
 */
@media (min-width: 64em) { div.product { grid-template-columns: minmax(0, min(30rem, 36%)) minmax(0, 1fr); } }

/* Galerie : zoom et lightbox sont fournis par wc-product-gallery-zoom / -lightbox (voir inc/woocommerce.php). */
.woocommerce-product-gallery { position: relative; max-width: var(--tpc-single-image-max, none); margin-inline: auto; }
.woocommerce-product-gallery__wrapper { display: flex; flex-direction: column; gap: var(--tpc-space-3); margin: 0; padding: 0; list-style: none; }
.woocommerce-product-gallery__image img { display: block; width: 100%; border-radius: var(--tpc-border-radius); }
.flex-control-thumbs { display: flex; flex-wrap: wrap; gap: var(--tpc-space-2); margin: 0; padding: 0; list-style: none; }
.flex-control-thumbs li { width: var(--tpc-single-thumb-size, 4.5rem); }
.flex-control-thumbs img { aspect-ratio: 1; width: 100%; object-fit: var(--tpc-image-fit, contain); background: var(--tpc-surface-color); border-radius: var(--tpc-border-radius); border: 2px solid transparent; cursor: pointer; }
.flex-control-thumbs img.flex-active { border-color: var(--tpc-primary-color); }

.tpc-gallery-thumbs-left .woocommerce-product-gallery { display: flex; flex-direction: row-reverse; gap: var(--tpc-space-3); }
.tpc-gallery-thumbs-left .woocommerce-product-gallery__wrapper { flex: 1; }
.tpc-gallery-thumbs-left .flex-control-thumbs { flex-direction: column; }
.tpc-gallery-thumbs-left .flex-control-thumbs li { width: var(--tpc-single-thumb-size, 4rem); }
@media (max-width: 47.99em) { .tpc-gallery-thumbs-left .woocommerce-product-gallery { flex-direction: column; } .tpc-gallery-thumbs-left .flex-control-thumbs { flex-direction: row; } }

/* Résumé produit. */
.summary.entry-summary { display: flex; flex-direction: column; gap: var(--tpc-space-3); }
.summary .tpc-brand { font-size: var(--tpc-text-sm); color: var(--tpc-muted-color); text-decoration: underline; }
.summary .product_title { margin: 0; }
.summary .price { font-size: var(--tpc-text-2xl); }
.summary .woocommerce-product-rating { display: flex; align-items: center; gap: var(--tpc-space-2); margin: 0; }
.summary .woocommerce-product-details__short-description { max-width: 60ch; color: var(--tpc-muted-color); }
.summary .stock { font-weight: 600; }
.summary .stock.in-stock { color: var(--tpc-success-color); }
.summary .stock.out-of-stock { color: var(--tpc-muted-color); }

.summary table.variations { width: 100%; margin: 0; border: 0; }
.summary table.variations td { padding: 0 0 var(--tpc-space-3); }
.summary table.variations td.label { padding-bottom: .35rem; font-weight: 600; }
.summary .reset_variations { display: inline-block; margin-top: .35rem; font-size: var(--tpc-text-sm); }
.woocommerce-variation.single_variation { margin-bottom: var(--tpc-space-3); }

.summary form.cart { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tpc-space-3); }
.summary form.cart .quantity { display: flex; }
.summary form.cart .button { min-height: var(--tpc-touch-target); }

.tpc-product-meta { margin: var(--tpc-space-2) 0 0; }
.tpc-product-meta__row { display: flex; gap: .5rem; padding: .3rem 0; border-bottom: 1px dashed var(--tpc-border-color); font-size: var(--tpc-text-sm); }
.tpc-product-meta__row dt { font-weight: 600; min-width: 9rem; }
.tpc-product-meta__row dd { margin: 0; }

.tpc-reassurance { display: grid; gap: var(--tpc-space-3); margin: var(--tpc-space-2) 0 0; padding: var(--tpc-space-4) 0 0; border-top: 1px solid var(--tpc-border-color); list-style: none; }
@media (min-width: 40em) { .tpc-reassurance { grid-template-columns: repeat(3, 1fr); } }
.tpc-reassurance__item { display: flex; gap: .6rem; align-items: flex-start; }
.tpc-reassurance__item svg { flex-shrink: 0; color: var(--tpc-primary-color); }
.tpc-reassurance__title { display: block; }
.tpc-reassurance__text { display: block; font-size: var(--tpc-text-sm); color: var(--tpc-muted-color); }

/* Onglets (description, avis…). */
.woocommerce-tabs { margin-top: var(--tpc-space-8); }
.woocommerce-tabs ul.tabs { display: flex; flex-wrap: wrap; gap: var(--tpc-space-2); margin: 0 0 var(--tpc-space-4); padding: 0; list-style: none; border-bottom: 1px solid var(--tpc-border-color); }
.woocommerce-tabs ul.tabs li { margin: 0; }
.woocommerce-tabs ul.tabs li a { display: inline-block; padding: var(--tpc-space-2) var(--tpc-space-3); text-decoration: none; color: var(--tpc-muted-color); border-bottom: 3px solid transparent; margin-bottom: -1px; }
.woocommerce-tabs ul.tabs li.active a { color: var(--tpc-text-color); border-color: var(--tpc-primary-color); font-weight: 600; }
.woocommerce-tabs .panel { max-width: 75ch; }

/* Produits similaires / associés : réutilise ul.products (product-card.css). */
.related.products, .up-sells.products { margin-top: var(--tpc-space-10); }
.related.products > h2, .up-sells.products > h2 { margin-bottom: var(--tpc-space-4); }

/*
 * Panier mobile fixe (mobile_sticky_cart). Ajouté par cart.js, uniquement quand le vrai
 * bouton d'achat de la fiche est hors écran (.tpc-show-sticky-cart, via IntersectionObserver).
 * Si le navigateur ne supporte pas IntersectionObserver, la barre reste affichée dès qu'elle
 * existe : dégradation raisonnable plutôt que de la masquer en permanence.
 */
.tpc-sticky-cart { display: none; }
body.has-sticky-cart.tpc-show-sticky-cart .tpc-sticky-cart,
body.has-sticky-cart:not(.js-io-supported) .tpc-sticky-cart {
  display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--tpc-z-bottom-nav);
  align-items: center; gap: var(--tpc-space-3); padding: var(--tpc-space-3) var(--tpc-space-4);
  padding-bottom: calc(var(--tpc-space-3) + env(safe-area-inset-bottom, 0px));
  background: var(--tpc-background-color); border-top: 1px solid var(--tpc-border-color); box-shadow: 0 -4px 12px rgb(0 0 0 / .08);
}
.tpc-sticky-cart__price { font-weight: 700; margin-inline-end: auto; }
@media (min-width: 48em) { .tpc-sticky-cart { display: none !important; } }

/* Réglage Customizer § Fiche produit > "Afficher le Compositeur/la marque" désactivé. */
body.tpc-hide-brand .summary .tpc-brand { display: none; }

/*
 * Valeur d'attribut indisponible compte tenu de la sélection en cours (voir
 * tpc_wc_deactivate_out_of_stock_variations() dans inc/woocommerce.php). WooCommerce
 * retire en général ces valeurs de la liste ; ce style couvre le cas où une valeur reste
 * présente mais désactivée (option native <select disabled>), pour qu'elle reste
 * visuellement reconnaissable comme indisponible plutôt que de paraître sélectionnable.
 */
.summary table.variations select option:disabled { color: var(--tpc-muted-color); font-style: italic; }
