/* ==========================================================================
   Boros Esthetic — boutique Karaja (WooCommerce) à la charte « Le Trait ».
   Spécificité : body.bo-site + classes Woo, pour passer devant woocommerce.css
   (.woocommerce a.button 0,1,1 ; .woocommerce form .form-row input.input-text 0,3,1).
   Le laiton reste un trait : jamais en texte sur fond clair.
   ========================================================================== */

/* --- Panier dans l'en-tête --------------------------------------------- */
.bo .bo-panier { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; color: var(--bo-encre); }
.bo .bo-panier .bo-ic { width: 22px; height: 22px; }
.bo .bo-panier.est-vide { display: none; }
.bo .bo-panier__n { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px; background: var(--bo-encre); color: var(--bo-ivoire); font-size: 11px; font-weight: 500; line-height: 18px; text-align: center; }
.bo .bo-panier:hover { color: var(--bo-laiton-f); }
@media (max-width: 767px) { .bo .bo-entete__d { gap: 4px; } }

/* --- Boutique : barre, rayons, cartes ------------------------------------ */
.bo-boutique__barre { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 32px; padding: 18px 0; border-top: 1px solid var(--bo-encre); border-bottom: 1px solid var(--bo-filet); position: sticky; top: 88px; z-index: 5; background: var(--bo-ivoire); }
.bo-onglets { display: flex; flex-wrap: wrap; gap: 10px; }
.bo .bo-onglets a { min-height: 44px; display: inline-flex; align-items: center; padding: 0 20px; border: 1px solid var(--bo-filet-champ); border-radius: 999px; font-size: 15px; color: var(--bo-encre); background: var(--bo-blanc); }
.bo .bo-onglets a:hover, .bo .bo-onglets a[aria-current="true"] { background: var(--bo-encre); border-color: var(--bo-encre); color: var(--bo-ivoire); }
.bo .bo-promo { display: flex; align-items: center; gap: 12px; font-size: 15px; color: var(--bo-encre); }
.bo .bo-promo strong { font-weight: 500; letter-spacing: .12em; padding: 4px 10px; border: 1px dashed var(--bo-laiton-f); }
.bo-rayon { display: flex; flex-direction: column; gap: 28px; padding-top: 24px; scroll-margin-top: 190px; }
.bo-rayon__tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px 40px; }
.bo .bo-rayon__tete .bo-h3 { font-size: 30px; font-weight: 300; line-height: 1.2; }
.bo-produits { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(250px, 100%), 1fr)); gap: 24px; }
.bo .bo-produit { display: flex; flex-direction: column; background: var(--bo-blanc); }
.bo .bo-produit__img { display: block; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 0 0 110px 0; background: var(--bo-blanc); }
.bo .bo-produit__img img { width: 100%; height: 100%; object-fit: contain; padding: 18px; transition: transform .25s; }
.bo .bo-produit:hover .bo-produit__img img { transform: scale(1.03); }
.bo-produit__corps { padding: 18px 22px 22px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.bo .bo-produit__nom { font-size: 19px; line-height: 1.3; font-weight: 400; }
.bo .bo-produit__nom a:hover { color: var(--bo-laiton-f); }
.bo .bo-produit__gamme { font-size: 14px; color: var(--bo-taupe); }
.bo-produit__pied { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--bo-filet); display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.bo .bo-produit__pied { margin-top: auto; }
.bo .bo-produit__prix { font-weight: 500; white-space: nowrap; }
.bo .bo-produit__prix .woocommerce-Price-currencySymbol { font-weight: 400; }
.bo .bo-produit__stock { font-size: 13px; color: var(--bo-taupe); margin-top: 2px; }
.bo .bo-bt--inactif { border-color: var(--bo-filet); color: var(--bo-taupe); cursor: default; }
.bo .bo-produit .added_to_cart { font-size: 14px; color: var(--bo-encre); text-decoration: underline; text-decoration-color: var(--bo-laiton); text-underline-offset: 4px; flex-basis: 100%; text-align: right; }
.bo .bo-produit .add_to_cart_button.loading { opacity: .6; }
.bo .bo-produit .add_to_cart_button.added::after { content: " ✓"; }
@media (max-width: 767px) {
  .bo-boutique__barre { top: 72px; padding: 12px 0; }
  .bo .bo-promo { font-size: 14px; }
  .bo-produits { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .bo-produit__corps { padding: 14px 14px 16px; }
  .bo .bo-produit__nom { font-size: 16px; }
  .bo-produit__pied { flex-direction: column; align-items: stretch; }
  .bo .bo-produit__pied .bo-bt { width: 100%; padding: 0 10px; }
  .bo .bo-rayon__tete .bo-h3 { font-size: 24px; }
  .bo-rayon { scroll-margin-top: 150px; }
}

/* --- Pages WooCommerce (produit, panier, commande, compte) -------------- */
body.bo-site.woocommerce-page .site-main, body.bo-site.single-product .site-main { max-width: calc(1200px + 2 * var(--bo-gouttiere)); margin: 0 auto; padding: 56px var(--bo-gouttiere) 112px; font-family: var(--bo-police); color: var(--bo-encre); }
body.bo-site.woocommerce-page .page-header .entry-title { font-family: var(--bo-police); font-size: clamp(36px, 4vw, 52px); font-weight: 300; line-height: 1.1; margin: 0 0 32px; }
body.bo-site .woocommerce, body.bo-site .woocommerce-page { font-family: var(--bo-police); }
body.bo-site .woocommerce-breadcrumb { font-size: 14px; color: var(--bo-taupe); margin: 0 0 28px; }
body.bo-site .woocommerce-breadcrumb a { color: var(--bo-taupe); text-decoration: underline; text-underline-offset: 3px; }

/* Boutons — Woo pose .woocommerce sur <body> des fiches produit, sur une <div> ailleurs : :is() couvre les deux */
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.button, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) input.button,
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) #respond input#submit, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.button.alt, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button.alt,
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .wc-proceed-to-checkout a.checkout-button, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) #place_order {
  display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 30px; border-radius: 999px; border: 1px solid var(--bo-encre);
  background: var(--bo-encre); color: var(--bo-ivoire); font-family: var(--bo-police); font-size: 13px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; line-height: 1.2; transition: background-color .15s; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.button:hover, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button:hover, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.button.alt:hover, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button.alt:hover,
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .wc-proceed-to-checkout a.checkout-button:hover, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) #place_order:hover { background: var(--bo-encre-2); border-color: var(--bo-encre-2); color: var(--bo-ivoire); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button:disabled, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) button.button:disabled[disabled] { background: var(--bo-filet); border-color: var(--bo-filet); color: var(--bo-taupe); opacity: 1; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .cart .button[name="update_cart"], :is(body.bo-site .woocommerce, body.bo-site.woocommerce) .coupon .button { background: transparent; color: var(--bo-encre); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .cart .button[name="update_cart"]:hover, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) .coupon .button:hover { background: var(--bo-encre); color: var(--bo-ivoire); }

/* Champs */
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) input.input-text, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) textarea, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) select,
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row input.input-text, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row textarea, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) .quantity .qty,
body.bo-site .select2-container--default .select2-selection--single {
  min-height: 52px; border: 1px solid var(--bo-filet-champ); border-radius: 0; background: var(--bo-blanc); color: var(--bo-encre); font-family: var(--bo-police); font-size: 17px; padding: 0 14px; box-shadow: none; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row textarea { padding: 12px 14px; min-height: 104px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .coupon .input-text { width: 200px !important; margin-right: 8px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .quantity .qty { width: 80px; text-align: center; padding: 0 6px; }
body.bo-site .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 50px; padding-left: 0; color: var(--bo-encre); }
body.bo-site .select2-container--default .select2-selection--single .select2-selection__arrow { height: 50px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) input.input-text:focus, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row input.input-text:focus, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) textarea:focus, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) .quantity .qty:focus {
  border: 2px solid var(--bo-encre); outline: none; box-shadow: 0 0 0 4px var(--bo-travertin); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row label { font-size: 15px; font-weight: 500; line-height: 1.65; color: var(--bo-encre); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row .required { color: var(--bo-erreur); text-decoration: none; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form .form-row.woocommerce-invalid input.input-text { border: 2px solid var(--bo-erreur); }

/* Messages */
body.bo-site .woocommerce-message, body.bo-site .woocommerce-info, body.bo-site .woocommerce-error, body.bo-site .wc-block-components-notice-banner {
  border: 1px solid var(--bo-filet); border-left-width: 1px; background: var(--bo-blanc); color: var(--bo-encre); font-family: var(--bo-police); font-size: 16px; padding: 18px 20px 18px 56px; border-radius: 0; }
body.bo-site .woocommerce-message { border-color: var(--bo-succes); }
body.bo-site .woocommerce-message::before { color: var(--bo-succes); }
body.bo-site .woocommerce-info::before { color: var(--bo-laiton-f); }
body.bo-site .woocommerce-error { border-color: var(--bo-erreur); }
body.bo-site .woocommerce-error::before { color: var(--bo-erreur); }
body.bo-site .woocommerce-message a.button, body.bo-site .woocommerce-info a.button { min-height: 40px; padding: 0 18px; }
/* liens du contenu seulement : sur une fiche produit, <body> porte .woocommerce et le pied encre serait touché */
:is(body.bo-site .site-main .woocommerce, body.bo-site.woocommerce .site-main) a:not(.button):not(.bo-bt) { color: var(--bo-encre); text-decoration-color: var(--bo-laiton); }

/* Fiche produit */
body.bo-site.single-product div.product { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: start; }
body.bo-site.single-product div.product .woocommerce-product-gallery, body.bo-site.single-product div.product .summary { width: 100%; float: none; margin: 0; }
body.bo-site.single-product div.product .woocommerce-product-gallery { background: var(--bo-blanc); border-radius: 0 0 220px 0; overflow: hidden; padding: 32px; }
body.bo-site.single-product div.product .woocommerce-product-gallery img { object-fit: contain; }
body.bo-site.single-product div.product .woocommerce-product-gallery__trigger { display: none; }
body.bo-site.single-product div.product .product_title { font-family: var(--bo-police); font-size: clamp(34px, 3.6vw, 48px); font-weight: 300; line-height: 1.1; margin: 0 0 16px; }
body.bo-site.single-product div.product p.price, body.bo-site.single-product div.product span.price { color: var(--bo-encre); font-size: 26px; font-weight: 400; margin: 0 0 20px; }
body.bo-site.single-product div.product .woocommerce-product-details__short-description { color: var(--bo-taupe); font-size: 17px; margin-bottom: 24px; }
body.bo-site.single-product div.product .stock { color: var(--bo-taupe); font-size: 14px; }
body.bo-site.single-product div.product .stock.out-of-stock { color: var(--bo-erreur); }
body.bo-site.single-product div.product form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0 0 28px; padding: 24px 0; border-top: 1px solid var(--bo-encre); border-bottom: 1px solid var(--bo-filet); }
body.bo-site.single-product div.product form.cart .quantity { margin: 0; }
body.bo-site.single-product div.product .product_meta { font-size: 14px; color: var(--bo-taupe); display: flex; flex-direction: column; gap: 4px; }
body.bo-site.single-product div.product .product_meta a { color: var(--bo-taupe); }
body.bo-site.single-product div.product .woocommerce-tabs, body.bo-site.single-product div.product .related, body.bo-site.single-product div.product .upsells { grid-column: 1 / -1; }
body.bo-site.single-product .woocommerce-tabs ul.tabs { padding: 0; margin: 0 0 24px; border-bottom: 1px solid var(--bo-filet); }
body.bo-site.single-product .woocommerce-tabs ul.tabs::before { display: none; }
body.bo-site.single-product .woocommerce-tabs ul.tabs li { background: transparent; border: 0; border-radius: 0; margin: 0 24px 0 0; padding: 0; }
body.bo-site.single-product .woocommerce-tabs ul.tabs li::before, body.bo-site.single-product .woocommerce-tabs ul.tabs li::after { display: none; }
body.bo-site.single-product .woocommerce-tabs ul.tabs li a { padding: 12px 0; font-weight: 400; color: var(--bo-taupe); }
body.bo-site.single-product .woocommerce-tabs ul.tabs li.active a { color: var(--bo-encre); box-shadow: inset 0 -1.5px 0 var(--bo-laiton); }
body.bo-site.single-product .woocommerce-tabs h2, body.bo-site .related > h2, body.bo-site .cart-collaterals h2, body.bo-site #order_review_heading, body.bo-site .woocommerce-billing-fields h3, body.bo-site .woocommerce-additional-fields h3 {
  font-family: var(--bo-police); font-size: 28px; font-weight: 300; line-height: 1.2; margin: 0 0 20px; }

/* Grilles Woo (produits liés) : la carte de la charte */
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr)); gap: 24px; margin: 0; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products::before, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products::after { display: none; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product { width: auto; float: none; margin: 0; background: var(--bo-blanc); padding: 0 0 22px; display: flex; flex-direction: column; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product a img { aspect-ratio: 1 / 1; object-fit: contain; padding: 18px; margin: 0 0 8px; border-radius: 0 0 90px 0; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product .woocommerce-loop-product__title { font-family: var(--bo-police); font-size: 17px; font-weight: 400; padding: 0 20px; color: var(--bo-encre); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product .price { color: var(--bo-encre); font-weight: 500; padding: 0 20px; font-size: 16px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product .button { margin: auto 20px 0; min-height: 44px; padding: 0 16px; background: transparent; color: var(--bo-encre); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) ul.products li.product .button:hover { background: var(--bo-encre); color: var(--bo-ivoire); }

/* Panier et commande */
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) table.shop_table { border: 0; border-collapse: collapse; border-radius: 0; background: var(--bo-blanc); font-size: 16px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) table.shop_table th { font-size: 12px; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--bo-laiton-f); border: 0; border-bottom: 1px solid var(--bo-encre); padding: 16px 18px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) table.shop_table td { border: 0; border-top: 1px solid var(--bo-filet); padding: 16px 18px; background: transparent; }
body.bo-site table.shop_table tbody > tr:nth-child(odd) > td, body.bo-site table.shop_table tbody > tr:nth-child(odd) > th { background: transparent; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) table.shop_table img { width: 72px; background: var(--bo-blanc); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.remove { color: var(--bo-erreur) !important; font-weight: 300; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) a.remove:hover { background: var(--bo-erreur); color: var(--bo-blanc) !important; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .cart-collaterals .cart_totals, body.bo-site .woocommerce-checkout-review-order { background: var(--bo-travertin); padding: 28px; }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) .cart-collaterals .cart_totals table.shop_table, body.bo-site .woocommerce-checkout-review-order table.shop_table { background: transparent; }
body.bo-site .woocommerce-checkout #payment { background: var(--bo-blanc); border-radius: 0; }
body.bo-site .woocommerce-checkout #payment div.payment_box { background: var(--bo-travertin); color: var(--bo-encre); border-radius: 0; }
body.bo-site .woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--bo-travertin); }
body.bo-site .woocommerce-checkout #payment ul.payment_methods { border-bottom: 1px solid var(--bo-filet); }
body.bo-site .woocommerce-privacy-policy-text, body.bo-site .woocommerce-terms-and-conditions-wrapper { font-size: 14px; color: var(--bo-taupe); }
:is(body.bo-site .woocommerce, body.bo-site.woocommerce) form.checkout_coupon, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) form.login, :is(body.bo-site .woocommerce, body.bo-site.woocommerce) form.register { border: 1px solid var(--bo-filet); border-radius: 0; background: var(--bo-blanc); }
body.bo-site .woocommerce-cart .wc-empty-cart-message, body.bo-site .cart-empty { font-size: 18px; }
body.bo-site .woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; border-top: 1px solid var(--bo-encre); }
body.bo-site .woocommerce-account .woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--bo-filet); }
body.bo-site .woocommerce-account .woocommerce-MyAccount-navigation li a { display: block; padding: 14px 0; }
body.bo-site .woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { font-weight: 500; }

@media (max-width: 900px) {
  body.bo-site.single-product div.product { grid-template-columns: 1fr; gap: 32px; }
  body.bo-site.single-product div.product .woocommerce-product-gallery { border-radius: 0 0 140px 0; padding: 20px; }
}
@media (max-width: 767px) {
  body.bo-site.woocommerce-page .site-main, body.bo-site.single-product .site-main { padding: 32px 20px 64px; }
  :is(body.bo-site .woocommerce, body.bo-site.woocommerce) .cart-collaterals .cart_totals, body.bo-site .woocommerce-checkout-review-order { padding: 20px; }
  :is(body.bo-site .woocommerce, body.bo-site.woocommerce) table.shop_table_responsive tr td { padding: 12px 14px; }
}
