/* =====================================================================================
 * BS · Panier 2026 — charte D
 *
 * Même langage que le mini-panier latéral (bs-chrome.css, section « cart-widget-side ») :
 * fond blanc, filets #E4E1D8, vignettes bordées arrondies, pilules, rouge réservé aux
 * montants, jaune en surligneur sur le seul CTA principal.
 *
 * Classes stables WooCommerce/WoodMart uniquement, jamais les classes générées.
 * Les règles de page sont scopées body.bs-panier ; seules celles de l'indicateur du
 * mini-panier (.bs-fr--mini) vivent hors de ce scope, puisque le mini-panier est global.
 * ================================================================================== */

:root{
  --bsp-y:#FFD600; --bsp-y-h:#E8BF00; --bsp-k:#181A1F; --bsp-gold:#8A7100;
  --bsp-paper:#FAF9F6; --bsp-w:#FFFFFF; --bsp-fog:#62656D; --bsp-line:#E4E1D8;
  --bsp-red:#D92B1F;
}

/* =====================================================================================
 * 1. INDICATEUR « LIVRAISON OFFERTE » : LES RÈGLES ONT DÉMÉNAGÉ (10/08/2026)
 *
 * Tout le dessin de .bs-fr (page ET mini-panier), ainsi que .bs-liv-mini, vit désormais
 * dans bs-chrome.css, qui est chargée sur TOUT le front.
 *
 * Pourquoi : WooCommerce conserve ses fragments en sessionStorage. Quand le cookie
 * d'aperçu du panier expirait, le markup .bs-fr déjà mémorisé continuait d'être
 * réinjecté dans le mini-panier sur des pages où cette feuille-ci n'était plus chargée.
 * Un <svg> sans width ni height prend alors 100 % de son conteneur : le camion occupait
 * tout le panneau (capture d'Alex du 10/08). Une feuille toujours présente supprime la
 * classe entière du problème, et les règles restent inertes sans le markup.
 *
 * Le vert de validation (#0E7A3C) du seuil atteint est défini là-bas également.
 * ================================================================================== */

/* =====================================================================================
 * 2. PASTILLE DE LIGNE « Retrait entrepôt uniquement »
 * Mêmes valeurs que .c-badge--pickup des cards v2 (bs-categorie.css / bs-home.css).
 * ================================================================================== */

body.bs-panier .bs-badge{
  display:inline-flex; align-items:center; gap:5px; margin-top:6px;
  white-space:nowrap; font-size:10.5px; font-weight:700; line-height:1.3;
  border-radius:999px; padding:4px 10px; border:1px solid var(--bsp-line); color:var(--bsp-fog);
}
body.bs-panier .bs-badge svg{ width:11px; height:11px; flex:0 0 auto; }
body.bs-panier .bs-badge--pickup{
  background:var(--bsp-k); border-color:var(--bsp-k); color:#fff;
}

/* =====================================================================================
 * 3. LA PAGE
 * ================================================================================== */

body.bs-panier .cart-content-wrapper{
  font-family:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  color:var(--bsp-k);
}
body.bs-panier .cart-content-wrapper .page-title,
body.bs-panier .entry-title{ text-transform:none; letter-spacing:0; font-weight:800; }

/* 3.a · Tableau des lignes : filets, jamais de bordures pleines. */
body.bs-panier table.cart{
  border:1px solid var(--bsp-line); border-radius:14px; border-collapse:separate;
  border-spacing:0; overflow:hidden; background:var(--bsp-w); margin-bottom:26px;
}
body.bs-panier table.cart thead th{
  background:var(--bsp-paper); border-bottom:1px solid var(--bsp-line);
  font-size:10.5px; font-weight:800; letter-spacing:.14em; text-transform:uppercase;
  color:var(--bsp-fog); padding:12px 14px;
}
body.bs-panier table.cart tbody td{
  border-bottom:1px solid var(--bsp-line); padding:16px 14px; vertical-align:middle;
  background:var(--bsp-w);
}
body.bs-panier table.cart tbody tr:last-child td{ border-bottom:0; }

/* vignettes bordées arrondies, comme le mini-panier */
body.bs-panier td.product-thumbnail img{
  width:74px; height:auto; border:1px solid var(--bsp-line); border-radius:12px; background:#fff;
}
/* noms encre 700 */
body.bs-panier td.product-name{ font-size:14px; line-height:1.35; }
body.bs-panier td.product-name > a{ color:var(--bsp-k); font-weight:700; text-decoration:none; }
body.bs-panier td.product-name > a:hover{ color:var(--bsp-gold); }
body.bs-panier td.product-price,
body.bs-panier td.product-subtotal{ font-size:14px; color:var(--bsp-k); }
body.bs-panier td.product-subtotal{ font-weight:800; }
body.bs-panier td.product-price .woocommerce-Price-amount{ color:var(--bsp-fog); font-weight:600; }

/* croix de suppression : pastille bordée, cible 44 px */
body.bs-panier td.product-remove a.remove{
  display:flex; align-items:center; justify-content:center;
  width:32px; height:32px; border:1px solid var(--bsp-line); border-radius:999px;
  background:#fff; color:var(--bsp-fog) !important; font-size:17px; line-height:1;
  text-decoration:none; transition:background-color .15s ease, border-color .15s ease;
}
body.bs-panier td.product-remove a.remove:hover{
  background:var(--bsp-paper); border-color:var(--bsp-k); color:var(--bsp-k) !important;
}

/* 3.b · Quantité : pilule bordée, +/- 44 px, exactement comme la fiche produit. */
body.bs-panier td.product-quantity .quantity{
  display:inline-flex; align-items:center; overflow:hidden;
  border:1.5px solid var(--bsp-line) !important; border-radius:999px !important; background:#fff;
}
body.bs-panier td.product-quantity .quantity .minus,
body.bs-panier td.product-quantity .quantity .plus{
  width:44px; min-width:44px; height:44px; border:0; background:#fff; color:var(--bsp-k);
  font-size:16px; font-weight:700; cursor:pointer; transition:background-color .15s ease;
}
body.bs-panier td.product-quantity .quantity .minus:hover,
body.bs-panier td.product-quantity .quantity .plus:hover{ background:var(--bsp-paper); }
body.bs-panier td.product-quantity .quantity input.qty{
  width:46px; height:44px; border:0; background:transparent; text-align:center;
  font-weight:700; color:var(--bsp-k); font-size:14px; padding:0;
  -moz-appearance:textfield; appearance:textfield;
}
body.bs-panier td.product-quantity .quantity input.qty::-webkit-outer-spin-button,
body.bs-panier td.product-quantity .quantity input.qty::-webkit-inner-spin-button{
  -webkit-appearance:none; margin:0;
}

/* 3.c · Ligne d'actions : code promo + mise à jour. */
body.bs-panier tr.wd-cart-action-row td.actions{ background:var(--bsp-paper); padding:14px; }
body.bs-panier .cart-actions{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
body.bs-panier .wd-coupon-form{ display:flex; gap:8px; flex:1 1 340px; }
body.bs-panier .wd-coupon-form input.input-text{
  flex:1 1 auto; min-width:0; height:44px; border:1.5px solid var(--bsp-line); border-radius:999px;
  background:#fff; padding:0 16px; font-size:13.5px; font-weight:600; color:var(--bsp-k);
}
body.bs-panier .wd-coupon-form input.input-text::placeholder{ color:var(--bsp-fog); opacity:1; }
body.bs-panier .wd-coupon-form input.input-text:focus{ border-color:var(--bsp-k); outline:0; }
body.bs-panier .cart-actions button.button{
  height:44px; padding:0 20px; border-radius:999px; border:1.5px solid var(--bsp-k);
  background:#fff; color:var(--bsp-k); font-weight:800; font-size:13.5px;
  text-transform:none; letter-spacing:0; transition:background-color .15s ease;
}
body.bs-panier .cart-actions button.button:hover{ background:var(--bsp-paper); color:var(--bsp-k); }

/* 3.d · Totaux. */
body.bs-panier .cart_totals{
  background:var(--bsp-w); border:1px solid var(--bsp-line); border-radius:14px; padding:18px;
}
body.bs-panier .cart_totals > h2{
  font-size:15px; font-weight:800; text-transform:none; letter-spacing:0;
  color:var(--bsp-k); margin:0 0 12px;
}
body.bs-panier .cart_totals table th,
body.bs-panier .cart_totals table td{
  border:0; border-bottom:1px solid var(--bsp-line); padding:11px 0; font-size:13.5px;
  background:transparent;
}
body.bs-panier .cart_totals table th{
  font-weight:700; color:var(--bsp-fog); text-transform:none; letter-spacing:0;
}
body.bs-panier .cart_totals table td{ text-align:right; color:var(--bsp-k); font-weight:700; }
body.bs-panier .cart_totals tr.order-total th,
body.bs-panier .cart_totals tr.order-total td{ border-bottom:0; padding-top:14px; }
body.bs-panier .cart_totals tr.order-total th{ color:var(--bsp-k); font-weight:800; font-size:14px; }
body.bs-panier .cart_totals tr.order-total td .woocommerce-Price-amount{
  font-size:22px; font-weight:800; color:var(--bsp-red);
}
body.bs-panier .cart_totals .woocommerce-shipping-destination,
body.bs-panier .cart_totals .includes_tax{ font-size:11.5px; color:var(--bsp-fog); font-weight:600; }
body.bs-panier .cart_totals ul#shipping_method li label{ font-size:13px; color:var(--bsp-k); }

/* Ligne « Livraison » en lecture seule : le montant réellement appliqué, colis par colis.
   La ligne native reste masquée par le thème enfant, on ne la réaffiche pas. */
body.bs-panier tr.bs-ship td{ text-align:right; }
body.bs-panier .bs-ship__l{
  display:block; font-size:13px; font-weight:700; color:var(--bsp-k); line-height:1.45;
}
body.bs-panier .bs-ship__l + .bs-ship__l{ margin-top:4px; }
body.bs-panier .bs-ship__p{
  display:inline; font-size:11.5px; font-weight:700; color:var(--bsp-fog);
  text-transform:none; letter-spacing:0;
}
body.bs-panier .bs-ship__p::after{ content:" · "; color:var(--bsp-fog); }

/* 3.e · Commander, ghost, réassurance. */
body.bs-panier .wc-proceed-to-checkout{ padding-top:16px; }
body.bs-panier .wc-proceed-to-checkout a.checkout-button{
  display:flex; align-items:center; justify-content:center; width:100%;
  min-height:48px; border-radius:999px; border:0;
  background:var(--bsp-y) !important; color:var(--bsp-k) !important;
  font-weight:800; font-size:15px; text-transform:none; letter-spacing:0;
  transition:background-color .15s ease;
}
body.bs-panier .wc-proceed-to-checkout a.checkout-button:hover{ background:var(--bsp-y-h) !important; }
body.bs-panier a.bs-ghost{
  display:flex; align-items:center; justify-content:center; width:100%;
  min-height:48px; margin-top:10px; border-radius:999px;
  background:#fff; border:1.5px solid var(--bsp-k); color:var(--bsp-k);
  font-weight:800; font-size:14px; text-decoration:none;
  transition:background-color .15s ease;
}
body.bs-panier a.bs-ghost:hover{ background:var(--bsp-paper); color:var(--bsp-k); }
body.bs-panier ul.bs-reassure{
  list-style:none; margin:14px 0 0; padding:14px 0 0; border-top:1px solid var(--bsp-line);
  display:grid; gap:7px;
}
body.bs-panier ul.bs-reassure li{
  display:flex; align-items:center; gap:8px; margin:0;
  font-size:12.5px; font-weight:600; color:var(--bsp-fog); line-height:1.35;
}
body.bs-panier ul.bs-reassure svg{ width:13px; height:13px; flex:0 0 auto; color:var(--bsp-gold); }

/* =====================================================================================
 * 4. PANIER VIDE
 * ================================================================================== */

/* Le bouton « Retour à la boutique » vient du template WooCommerce lui-même, hors de
   tout hook : c'est le seul reste que remove_action ne peut pas atteindre. Notre bloc
   porte déjà « Voir tous les produits ». */
body.bs-panier .cart-empty,
body.bs-panier .return-to-shop{ display:none !important; }

body.bs-panier .bs-vide{
  background:var(--bsp-w); border:1px solid var(--bsp-line); border-radius:16px;
  padding:38px 24px; text-align:center; max-width:640px; margin:0 auto 30px;
}
body.bs-panier .bs-vide__k{
  margin:0 0 8px; font-size:10.5px; font-weight:800; letter-spacing:.16em;
  text-transform:uppercase; color:var(--bsp-fog);
}
body.bs-panier .bs-vide__h{
  margin:0 0 10px; font-size:26px; font-weight:900; line-height:1.15; color:var(--bsp-k);
  text-transform:none; letter-spacing:0;
}
body.bs-panier .bs-vide__s{ margin:0 0 22px; font-size:13.5px; font-weight:600; color:var(--bsp-fog); }
body.bs-panier .bs-vide__cta a.bs-btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 30px; border-radius:999px; border:0;
  background:var(--bsp-y); color:var(--bsp-k); font-weight:800; font-size:15px;
  text-decoration:none; transition:background-color .15s ease;
}
body.bs-panier .bs-vide__cta a.bs-btn:hover{ background:var(--bsp-y-h); color:var(--bsp-k); }
body.bs-panier .bs-vide__l{
  margin:26px 0 12px; font-size:10.5px; font-weight:800; letter-spacing:.14em;
  text-transform:uppercase; color:var(--bsp-fog);
}
body.bs-panier ul.bs-vide__r{
  list-style:none; margin:0; padding:0;
  display:flex; flex-wrap:wrap; gap:8px; justify-content:center;
}
body.bs-panier ul.bs-vide__r li{ margin:0; }
body.bs-panier ul.bs-vide__r a{
  display:inline-flex; align-items:center; min-height:44px; padding:0 16px;
  border:1px solid var(--bsp-line); border-radius:999px; background:#fff;
  color:var(--bsp-k); font-size:13px; font-weight:700; text-decoration:none;
  transition:background-color .15s ease, border-color .15s ease;
}
body.bs-panier ul.bs-vide__r a:hover{ background:var(--bsp-paper); border-color:var(--bsp-k); color:var(--bsp-k); }

/* =====================================================================================
 * 5. MOBILE (≤ 767 px) : zéro débordement, Commander toujours à portée
 * ================================================================================== */

.bs-sticky{ display:none; }

@media (max-width:767px){
  body.bs-panier table.cart,
  body.bs-panier .cart_totals{ border-radius:12px; }

  /* WoodMart passe le tableau en blocs : on garde le filet entre les lignes seulement. */
  body.bs-panier table.cart tbody td{ padding:10px 12px; border-bottom:0; }
  body.bs-panier table.cart tbody tr.woocommerce-cart-form__cart-item{
    display:block; border-bottom:1px solid var(--bsp-line); padding:6px 0;
  }
  body.bs-panier table.cart tbody tr.woocommerce-cart-form__cart-item:last-of-type{ border-bottom:0; }
  body.bs-panier td.product-thumbnail img{ width:64px; }
  body.bs-panier td.product-name{ font-size:13.5px; }

  body.bs-panier .cart-actions{ flex-direction:column; align-items:stretch; }
  body.bs-panier .wd-coupon-form{ flex:1 1 auto; }
  body.bs-panier .cart-actions button.button{ width:100%; }

  body.bs-panier .bs-vide{ padding:30px 18px; }
  body.bs-panier .bs-vide__h{ font-size:22px; }

  /* Barre basse : hauteur RÉSERVÉE dès le premier rendu (padding statique), la barre est
     en position fixe et ne participe donc jamais au flux : aucun décalage possible.
     La réserve est portée par le BODY et non par .cart-content-wrapper : relevé du 10/08,
     ce conteneur du template WoodMart n'existe pas sur ce site, la page panier étant
     rendue par un layout Elementor. Le body reçoit aussi le blanc de la barre : la bande
     réservée, exactement recouverte par la barre, ne peut pas apparaître.
     Réserve = 10 + 48 + 10 px de la barre, plus la zone sûre iOS. */
  body.bs-panier{
    padding-bottom:calc(68px + env(safe-area-inset-bottom, 0px));
    background-color:var(--bsp-w);
  }
  body.bs-panier .bs-sticky{
    display:flex; align-items:center; gap:12px;
    position:fixed; inset:auto 0 0 0; z-index:399;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
    background:var(--bsp-w); border-top:1px solid var(--bsp-line);
    box-shadow:0 -2px 10px rgba(24,26,31,.06);
  }
  body.bs-panier .bs-sticky--off{ display:none; }
  .bs-sticky__l{ display:flex; flex-direction:column; min-width:0; }
  .bs-sticky__k{ font-size:10.5px; font-weight:800; letter-spacing:.14em;
    text-transform:uppercase; color:var(--bsp-fog); }
  .bs-sticky__v{ font-size:18px; font-weight:800; color:var(--bsp-red); line-height:1.2; }
  .bs-sticky__v .woocommerce-Price-amount{ color:var(--bsp-red); }
  .bs-sticky__cta{
    display:flex; align-items:center; justify-content:center; flex:1 1 auto;
    min-height:48px; padding:0 18px; border-radius:999px;
    background:var(--bsp-y); color:var(--bsp-k); font-weight:800; font-size:15px;
    text-decoration:none; transition:background-color .15s ease;
  }
  .bs-sticky__cta:hover{ background:var(--bsp-y-h); color:var(--bsp-k); }

  /* Le bouton flottant de CheckoutWC ferait doublon ET recouvrirait la barre. */
  body.bs-panier .cfw-floating-cart-button,
  body.bs-panier #cfw-floating-cart-button{ display:none !important; }
}

/* Aucun débordement horizontal, même à 320 px. */
body.bs-panier .cart-content-wrapper table.cart{ max-width:100%; }
body.bs-panier .woocommerce-cart-form{ overflow-x:hidden; }

@media (prefers-reduced-motion:reduce){
  .bs-fr *, body.bs-panier .cart-content-wrapper *, .bs-sticky *{
    transition:none !important; animation:none !important;
  }
}

/* =====================================================================================
 * 6. CARROUSEL DE RECOMMANDATIONS DU PANIER, AU GABARIT CARD V2
 *
 * Portage DIRECT des valeurs de bs-categorie.css (section 4), scopé body.bs-panier au
 * lieu de body.bs-cat : mêmes classes, mêmes cotes, aucune réinterprétation. Le PHP,
 * lui, appelle les mêmes helpers. Une seule spécification de carte sur tout le site.
 *
 * Comme sur les rayons, !important n'est posé que sur les propriétés que WoodMart
 * repose effectivement depuis des parties CSS imprimées APRÈS nous.
 * ================================================================================== */

body.bs-panier{
  --bsc-ink2:#3A3D44; --bsc-line2:#C9C5BA; --bsc-red2:#B3271C; --bsc-photo:#F4F3EF;
}

/* Masquages ciblés : on remplace, on ne duplique pas. */
body.bs-panier .wd-product .wd-product-stock{ display:none !important; }
body.bs-panier .wd-product .wd-product-cats,
body.bs-panier .wd-product .wd-product-brands-links{ display:none !important; }
body.bs-panier .wd-product .product-labels{ display:none !important; }
body.bs-panier .wd-product.bs-c-prix-remplace .wrap-price > .price{ display:none !important; }

/* Boîte de carte. */
body.bs-panier .products .wd-product{
  font-family:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  position:relative;
}
body.bs-panier .products .wd-product .wd-product-card-bg{ display:none !important; }
body.bs-panier .products .wd-product .wd-product-wrapper,
body.bs-panier .products .wd-product > .product-wrapper{
  background:var(--bsp-w) !important; border:1px solid var(--bsp-line) !important;
  border-radius:18px !important; padding:0 !important; overflow:hidden;
  box-shadow:none; height:100%; display:flex; flex-direction:column;
  transition:transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
body.bs-panier .products .wd-product:hover .wd-product-wrapper,
body.bs-panier .products .wd-product:hover > .product-wrapper{
  transform:translateY(-6px); border-color:var(--bsc-line2) !important;
  box-shadow:0 14px 30px rgba(24,26,31,.08);
}

/* Zone photo. */
body.bs-panier .products .wd-product .wd-product-thumb{
  background:var(--bsc-photo); padding:26px; margin:0; border-radius:0; position:relative;
}
body.bs-panier .products .wd-product .wd-product-thumb img{
  aspect-ratio:1/1; object-fit:contain; width:100%; height:auto; background:transparent;
}
body.bs-panier .products .wd-product .wd-product-thumb > a.wd-product-img-link{ position:static; }
body.bs-panier .products .wd-product .c-card-off{
  position:absolute; top:14px; left:14px; z-index:3;
  background:var(--bsp-red); color:#fff; font-weight:700; font-size:12.5px; line-height:1.25;
  border-radius:999px; padding:5px 11px; white-space:nowrap;
}
body.bs-panier .products .wd-product .c-card-off--out{ background:var(--bsp-k); }

/* Corps de carte. */
body.bs-panier .products .wd-product .product-element-bottom{
  padding:16px 18px 18px; display:flex; flex-direction:column; gap:6px; flex:1;
}
body.bs-panier .products .wd-product .c-card-brand{
  font-size:10.5px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--bsp-fog); min-height:14px; line-height:1.3; margin:0;
}
body.bs-panier .products .wd-product .wd-entities-title,
body.bs-panier .products .wd-product h3.wd-entities-title{
  font-size:13.5px !important; font-weight:600 !important; line-height:1.4;
  letter-spacing:0; text-transform:none !important; margin:0;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  min-height:2.8em;
}
body.bs-panier .products .wd-product .wd-entities-title a{ color:var(--bsp-k); }
body.bs-panier .products .wd-product .wd-entities-title a:hover{ color:var(--bsp-gold); }

/* Prix. */
body.bs-panier .products .wd-product .wrap-price{ margin-top:auto; padding-top:10px; }
body.bs-panier .products .wd-product .c-card-price{
  display:flex; flex-direction:column; gap:3px; align-items:flex-start;
}
body.bs-panier .products .wd-product .c-card-nowline{
  display:inline-flex; align-items:center; gap:8px; flex-wrap:wrap;
}
body.bs-panier .products .wd-product .c-card-now{
  font-weight:800; font-size:22px; color:var(--bsp-red); line-height:1.1;
}
body.bs-panier .products .wd-product .c-card-was{ font-size:12px; color:var(--bsp-fog); line-height:1.3; }
body.bs-panier .products .wd-product .c-card-was s{
  color:var(--bsc-ink2); font-weight:700; text-decoration:none; position:relative;
  display:inline-block; padding:0 2px; font-size:15.5px;
}
body.bs-panier .products .wd-product .c-card-was s::after{
  content:""; position:absolute; left:-4%; right:-4%; top:50%; height:2px; margin-top:-1px;
  background:var(--bsp-y); transform:rotate(-7deg); border-radius:2px;
}

/* Pastilles de pied de carte. */
body.bs-panier .products .wd-product .c-badge{
  white-space:nowrap; font-size:10.5px; font-weight:700; line-height:1.3;
  border-radius:999px; padding:4px 10px; border:1px solid var(--bsp-line); color:var(--bsp-fog);
}
body.bs-panier .products .wd-product .c-badge--last{
  border-color:rgba(217,43,31,.45); color:var(--bsc-red2); position:relative; top:-1px;
}
body.bs-panier .products .wd-product .c-card-meta{
  display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; min-height:24px;
}
body.bs-panier .products .wd-product .c-badge--pickup{
  display:inline-flex; align-items:center; gap:5px;
  background:var(--bsp-k); border-color:var(--bsp-k); color:#fff;
}
body.bs-panier .products .wd-product .c-badge--pickup svg{ width:11px; height:11px; flex:0 0 auto; }
body.bs-panier .products .wd-product .c-badge--ship{
  display:inline-flex; align-items:center; gap:5px;
  background:var(--bsp-w); border-color:var(--bsp-line); color:var(--bsc-ink2);
}
body.bs-panier .products .wd-product .c-badge--ship svg{
  width:12px; height:12px; flex:0 0 auto; color:var(--bsp-gold);
}

/* Bouton d'ajout : pilule jaune, encre 800, casse normale, cible 44 px. */
body.bs-panier .products .wd-product .wd-add-btn{ margin-top:10px; }
body.bs-panier .products .wd-product .wd-add-btn > a,
body.bs-panier .products .wd-product .add_to_cart_button,
body.bs-panier .products .wd-product .button.product_type_simple{
  background-color:var(--bsp-y) !important; color:var(--bsp-k) !important;
  border-radius:999px !important; text-transform:none !important;
  font-weight:800 !important; font-size:13.5px; letter-spacing:0;
  border:0; box-shadow:none !important;
  min-height:44px; display:flex; align-items:center; justify-content:center;
}
body.bs-panier .products .wd-product .wd-add-btn > a:hover,
body.bs-panier .products .wd-product .add_to_cart_button:hover{
  background-color:var(--bsp-y-h) !important; color:var(--bsp-k) !important;
}

/* Titre du carrousel, à la charte. */
body.bs-panier .wd-products-element > .wd-el-title{
  font-size:20px; font-weight:800; color:var(--bsp-k);
  text-transform:none; letter-spacing:0;
}

/* =====================================================================================
 * TOUR 3 (10/08, après relecture) : P1 à P6
 * ================================================================================== */

/* ---------------------------------------------------------------------------------
 * P2 · CROIX DE SUPPRESSION DOUBLÉE
 * Le lien porte « × » en TEXTE et le thème lui ajoute sa propre croix : deux croix
 * superposées. Même remède que le mini-panier latéral (bs-chrome.css) : le texte est
 * réduit à zéro et la croix est dessinée par nous, en deux barres à l'encre. Une seule
 * croix, de forme et d'épaisseur maîtrisées.
 * ------------------------------------------------------------------------------- */
body.bs-panier td.product-remove a.remove,
body.bs-panier td.product-remove a.remove:hover{
  font-size:0 !important; line-height:0 !important; position:relative;
}
body.bs-panier td.product-remove a.remove::before,
body.bs-panier td.product-remove a.remove::after{
  content:"" !important; position:absolute; top:50%; left:50%;
  width:13px; height:1.7px; margin:-0.85px 0 0 -6.5px;
  background:var(--bsp-fog); border-radius:2px; opacity:1 !important;
  transition:background-color .15s ease;
}
body.bs-panier td.product-remove a.remove::before{ transform:rotate(45deg); }
body.bs-panier td.product-remove a.remove::after{ transform:rotate(-45deg); }
body.bs-panier td.product-remove a.remove:hover::before,
body.bs-panier td.product-remove a.remove:hover::after{ background:var(--bsp-k); }
body.bs-panier td.product-remove a.remove:focus-visible{
  outline:2px solid var(--bsp-k); outline-offset:2px;
}

/* ---------------------------------------------------------------------------------
 * P3 · MARQUE SUR SA PROPRE LIGNE, au-dessus du titre, comme les cartes v2.
 * ------------------------------------------------------------------------------- */
body.bs-panier .bs-pnr-marque{
  display:block; font-size:10.5px; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--bsp-fog); line-height:1.3; margin:0 0 3px;
}

/* ---------------------------------------------------------------------------------
 * P5 · LE TRIO DE REMISE, identique au récapitulatif de commande et aux cartes v2 :
 * prix payé + pastille bordée, puis « prix neuf constaté » barré à l'encre.
 * ------------------------------------------------------------------------------- */
body.bs-panier .bs-pnr-prix{
  display:inline-flex; align-items:center; gap:8px; flex-wrap:wrap;
}
body.bs-panier td.product-price .bs-pnr-prix .woocommerce-Price-amount{
  color:var(--bsp-k) !important; font-weight:800 !important; font-size:15px !important;
}
body.bs-panier .bs-pnr-off{
  display:inline-flex; align-items:center; white-space:nowrap;
  background:#fff; color:#B3271C; border:1px solid rgba(217,43,31,.45);
  border-radius:999px; padding:3px 9px; font-size:10.5px; font-weight:700; line-height:1.3;
}
body.bs-panier .bs-pnr-was{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 6px; margin-top:4px;
}
body.bs-panier .bs-pnr-was-label{
  font-size:11.5px; font-weight:500; color:var(--bsp-fog); line-height:1.3; white-space:nowrap;
}
body.bs-panier .bs-pnr-was del,
body.bs-panier .bs-pnr-was del .woocommerce-Price-amount{
  color:#3A3D44 !important; font-size:13px !important; font-weight:700 !important;
  text-decoration:line-through !important; text-decoration-color:#3A3D44 !important;
  text-decoration-thickness:1.5px !important;
}

/* ---------------------------------------------------------------------------------
 * P4 · « (dont X € TVA 20 %) » : c'est une note, pas un montant. Seul le Total est
 * rouge. La mention héritait de la couleur et du corps du total.
 * ------------------------------------------------------------------------------- */
body.bs-panier .cart_totals tr.order-total .includes_tax,
body.bs-panier .cart_totals tr.order-total small,
body.bs-panier .cart_totals .includes_tax .woocommerce-Price-amount,
body.bs-panier .cart_totals tr.order-total small .woocommerce-Price-amount{
  color:var(--bsp-fog) !important; font-size:11.5px !important; font-weight:600 !important;
}
body.bs-panier .cart_totals tr.order-total small{ display:block !important; margin-top:2px !important; }

/* ---------------------------------------------------------------------------------
 * P6 · ÉTATS des contrôles : survol, focus clavier, désactivé.
 * Le tour 2 n'auditait que l'état au repos ; ces trois-là n'existaient pas.
 * ------------------------------------------------------------------------------- */
body.bs-panier td.product-quantity .quantity .minus:hover,
body.bs-panier td.product-quantity .quantity .plus:hover{ background:var(--bsp-paper); }
body.bs-panier td.product-quantity .quantity .minus:focus-visible,
body.bs-panier td.product-quantity .quantity .plus:focus-visible,
body.bs-panier td.product-quantity .quantity input.qty:focus-visible{
  outline:2px solid var(--bsp-k); outline-offset:-2px;
}
body.bs-panier td.product-quantity .quantity:focus-within{
  border-color:var(--bsp-k) !important;
  box-shadow:0 0 0 3px rgba(255,214,0,.45);
}
body.bs-panier .wd-coupon-form input#coupon_code:focus,
body.bs-panier input#coupon_code:focus{
  border-color:var(--bsp-k) !important;
  box-shadow:0 0 0 3px rgba(255,214,0,.45) !important;
  outline:none !important;
}
body.bs-panier .cart-actions button.button:focus-visible,
body.bs-panier .checkout-button:focus-visible,
body.bs-panier a.button:focus-visible{
  outline:2px solid var(--bsp-k) !important; outline-offset:2px !important;
}
body.bs-panier button.button:disabled,
body.bs-panier button.button[disabled]{
  opacity:1 !important; background:var(--bsp-paper) !important;
  border:1.5px solid var(--bsp-line) !important; color:var(--bsp-fog) !important;
  cursor:not-allowed !important;
}
/* Message d'erreur (code promo refusé) : rouge charte, jamais de rose criard. */
body.bs-panier .woocommerce-error,
body.bs-panier .woocommerce-message{
  border:1px solid rgba(217,43,31,.35) !important; border-radius:12px !important;
  background:#FDF3F2 !important; color:#B3271C !important;
  font-size:13.5px !important; font-weight:600 !important;
}
body.bs-panier .woocommerce-message{
  border-color:rgba(138,113,0,.35) !important; background:#FFFDF6 !important;
  color:var(--bsp-k) !important;
}

/* ---------------------------------------------------------------------------------
 * P1 · MOBILE : le titre était rogné des deux côtés.
 * WoodMart passe la rangée en bloc et empile les cellules : le titre se retrouvait
 * coincé entre la vignette flottante et la croix. On pose une grille explicite :
 * vignette à gauche, colonne de texte à droite, croix dans l'angle, et le titre
 * dispose de toute la largeur restante pour wrapper sur deux lignes.
 * ------------------------------------------------------------------------------- */
@media (max-width:768px){
  body.bs-panier table.cart tbody tr.woocommerce-cart-form__cart-item{
    display:grid !important;
    grid-template-columns:76px minmax(0,1fr) !important;
    grid-template-areas:
      "photo nom"
      "photo prix"
      "photo qte"
      "photo total" !important;
    column-gap:14px !important; row-gap:2px !important;
    align-items:start !important;
    position:relative !important;
    padding:16px 40px 16px 0 !important;   /* la gouttière de droite loge la croix */
  }
  body.bs-panier table.cart tbody td.product-thumbnail{
    grid-area:photo !important; padding:0 !important; width:76px !important;
  }
  body.bs-panier table.cart tbody td.product-thumbnail img{ width:76px !important; }
  body.bs-panier table.cart tbody td.product-name{
    grid-area:nom !important; padding:0 !important;
    min-width:0 !important; max-width:100% !important;
    overflow-wrap:anywhere !important;
  }
  body.bs-panier table.cart tbody td.product-name > a{
    display:block !important; white-space:normal !important;
    overflow:visible !important; text-overflow:clip !important;
    -webkit-line-clamp:none !important; max-height:none !important;
  }
  body.bs-panier table.cart tbody td.product-price{ grid-area:prix !important; padding:4px 0 0 !important; }
  body.bs-panier table.cart tbody td.product-quantity{ grid-area:qte !important; padding:8px 0 0 !important; }
  body.bs-panier table.cart tbody td.product-subtotal{ grid-area:total !important; padding:6px 0 0 !important; }
  /* la croix quitte le flux : elle ne mange plus une seule lettre du titre */
  body.bs-panier table.cart tbody td.product-remove{
    position:absolute !important; top:14px !important; right:0 !important;
    width:auto !important; padding:0 !important; border:0 !important;
  }
  /* WoodMart préfixe chaque cellule d'un libellé (« Prix », « Sous-total ») en
     responsive : redondant ici, la grille rend la lecture évidente. */
  body.bs-panier table.cart tbody td::before{ content:none !important; }
}

/* ---------------------------------------------------------------------------------
 * P6 bis · L'ANNEAU DE FOCUS NE DOIT JAMAIS RETOMBER SUR CELUI DU NAVIGATEUR
 * Relevé par le harnais d'états : les boutons du sélecteur de quantité et la croix
 * de suppression sortaient en « 2px dotted #000000 », l'anneau par défaut de Chrome.
 * Il est invisible sur fond sombre, hors charte, et il n'apparaissait sur aucune
 * capture statique. On couvre :focus (pour les navigateurs sans :focus-visible) puis
 * on l'annule à la souris, ce qui laisse l'anneau au seul parcours clavier.
 * ------------------------------------------------------------------------------- */
body.bs-panier a:focus,
body.bs-panier button:focus,
body.bs-panier input:focus,
body.bs-panier select:focus,
body.bs-panier [tabindex]:focus,
body.bs-panier td.product-quantity .quantity .minus:focus,
body.bs-panier td.product-quantity .quantity .plus:focus{
  outline:2px solid var(--bsp-k) !important; outline-offset:2px !important;
}
body.bs-panier a:focus:not(:focus-visible),
body.bs-panier button:focus:not(:focus-visible),
body.bs-panier input:focus:not(:focus-visible),
body.bs-panier select:focus:not(:focus-visible),
body.bs-panier [tabindex]:focus:not(:focus-visible),
body.bs-panier td.product-quantity .quantity .minus:focus:not(:focus-visible),
body.bs-panier td.product-quantity .quantity .plus:focus:not(:focus-visible){
  outline:none !important;
}
/* Le champ garde son anneau jaune interne, plus lisible qu'un contour au ras du bord. */
body.bs-panier input#coupon_code:focus,
body.bs-panier td.product-quantity .quantity input.qty:focus{ outline-offset:-2px !important; }

/* ---------------------------------------------------------------------------------
 * P6 ter · ÉTAT D'ERREUR sur le champ de code promo (même remède qu'au tunnel :
 * ma bordure normale, posée en !important, masquait le signalement d'erreur).
 * ------------------------------------------------------------------------------- */
body.bs-panier input#coupon_code.parsley-error,
body.bs-panier input#coupon_code[aria-invalid="true"],
body.bs-panier .woocommerce-invalid input#coupon_code{
  border-color:var(--bsp-red) !important;
  box-shadow:0 0 0 3px rgba(217,43,31,.18) !important;
}


/* =====================================================================================
 * TOUR 3, deuxieme passe : ce que l'audit d'etats a releve
 * ================================================================================== */

/* Croix de suppression : 32 px dessines au panier contre 44 au tunnel. Le dessin reste
   celui du mini-panier, la ZONE de touche monte a 44 px, comme dans le tunnel. */
body.bs-panier td.product-remove a.remove{ position:relative; }
body.bs-panier td.product-remove a.remove::before,
body.bs-panier td.product-remove a.remove::after{ z-index:2; }
body.bs-panier td.product-remove a.remove{
  outline-offset:2px;
}
body.bs-panier td.product-remove{ position:relative; }
body.bs-panier td.product-remove a.remove{ margin:6px; }

/* L'anneau de focus etait rogne par l'overflow de la pilule du selecteur : il passe
   a l'interieur, comme sur le champ de quantite. */
body.bs-panier td.product-quantity .quantity{ overflow:visible !important; }
body.bs-panier td.product-quantity .quantity .minus:focus-visible,
body.bs-panier td.product-quantity .quantity .plus:focus-visible{ outline-offset:-2px !important; }

/* Le bouton d'application du code promo n'avait pas d'etat desactive lisible. */
body.bs-panier button[name="apply_coupon"]:disabled,
body.bs-panier button[name="apply_coupon"][disabled],
body.bs-panier button[name="apply_coupon"][aria-disabled="true"]{
  background:var(--bsp-paper) !important; border:1.5px solid var(--bsp-line) !important;
  color:var(--bsp-fog) !important; cursor:not-allowed !important; opacity:1 !important;
}

/* La vignette etait tranchee sur son bord droit : la colonne faisait exactement la
   largeur de l'image, filets compris, donc le filet de droite tombait hors cadre. */
@media (max-width:768px){
  body.bs-panier table.cart tbody tr.woocommerce-cart-form__cart-item{
    grid-template-columns:84px minmax(0,1fr) !important;
  }
  body.bs-panier table.cart tbody td.product-thumbnail{ width:84px !important; }
  body.bs-panier table.cart tbody td.product-thumbnail img{ width:78px !important; max-width:78px !important; }
  /* Le sous-total reprend son etiquette : sans elle, a quantite 1, deux fois le meme
     montant se lisaient comme un doublon. */
  body.bs-panier table.cart tbody td.product-subtotal::before{
    content:"Sous-total" !important; display:inline !important;
    color:var(--bsp-fog); font-size:11.5px; font-weight:600; margin-right:8px;
  }
}

/* Le message d'erreur du code promo etait masque par l'en-tete collant. */
body.bs-panier .woocommerce-error,
body.bs-panier .woocommerce-message,
body.bs-panier .woocommerce-info{
  scroll-margin-top:180px !important;
}

/* Le rouge servi par le thème dans les avis est #CA1919, qui n'est pas de la charte.
   Le rouge foncé charte #B3271C le remplace, y compris sur les enfants du message. */
body.bs-panier .woocommerce-error,
body.bs-panier .woocommerce-error *,
body.bs-panier .woocommerce-error li,
body.bs-panier .woocommerce-error a{
  color:#B3271C !important; border-color:rgba(217,43,31,.35) !important;
}
body.bs-panier .woocommerce-error a{ text-decoration:underline !important; }

/* L'avis WooCommerce est rendu par WoodMart DANS le panneau latéral de connexion
   (`.login-form-side > .woocommerce-notices-wrapper`), pas dans le contenu : le rouge
   du thème y gagnait en spécificité. On le reprend là où il est réellement. */
body.bs-panier .woocommerce-notices-wrapper ul.woocommerce-error,
body.bs-panier .woocommerce-notices-wrapper ul.woocommerce-error li,
body.bs-panier .login-form-side ul.woocommerce-error,
body.bs-panier .login-form-side ul.woocommerce-error li,
body.bs-panier ul.woocommerce-error li::before{
  color:#B3271C !important;
}
body.bs-panier .woocommerce-notices-wrapper ul.woocommerce-error{
  border:1px solid rgba(217,43,31,.35) !important; border-radius:12px !important;
  background:#FDF3F2 !important;
}

/* La vignette restait tranchée à droite : l'image porte un filet de 1 px en
   content-box, donc sa largeur rendue dépassait la colonne et le cadre restait
   ouvert. Le filet entre dans la largeur, le cadre se referme. */
body.bs-panier table.cart tbody td.product-thumbnail img{
  box-sizing:border-box !important;
}

/* =====================================================================================
 * PROMPT #48 · K1, K2, N1 à N5
 * ================================================================================== */

/* K1 · Le point du bouton radio doit être parfaitement rond et centré : on fige le
 * rapport de forme et on annule tout ce qui pourrait l'ovaliser (line-height, padding
 * hérités du thème sur les contrôles). */
body.bs-panier input[type="radio"],
body.bs-panier input[type="checkbox"]{
  appearance:none !important; -webkit-appearance:none !important;
  width:20px !important; height:20px !important; min-width:20px !important;
  aspect-ratio:1 / 1 !important; flex:0 0 20px !important;
  padding:0 !important; margin:0 !important; line-height:0 !important;
  border:2px solid var(--bsp-fog) !important; background:var(--bsp-w) !important;
  position:relative !important; box-sizing:border-box !important; cursor:pointer;
}
body.bs-panier input[type="radio"]{ border-radius:50% !important; }
body.bs-panier input[type="checkbox"]{ border-radius:6px !important; }
body.bs-panier input[type="radio"]:checked,
body.bs-panier input[type="checkbox"]:checked{
  background:var(--bsp-y) !important; border-color:var(--bsp-k) !important;
}
body.bs-panier input[type="radio"]:checked::after{
  content:"" !important; position:absolute !important;
  left:50% !important; top:50% !important; transform:translate(-50%,-50%) !important;
  width:8px !important; height:8px !important; aspect-ratio:1 / 1 !important;
  border-radius:50% !important; background:var(--bsp-k) !important;
  padding:0 !important; margin:0 !important;
}

/* N1 · À quantité 1, la colonne Prix répète le Sous-total : elle ne s'affiche pas.
 * Le trio de remise, lui, est passé sous le titre, comme au tunnel. */
body.bs-panier tr.bs-qte-1 td.product-price{ visibility:hidden !important; }
@media (max-width:768px){
  body.bs-panier tr.bs-qte-1 td.product-price{ display:none !important; }
}
body.bs-panier td.product-name .bs-pnr-was{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 7px; margin-top:4px;
}

/* N2 · Le lien qui ouvre le code promo, et le champ replié tant qu'on ne l'a pas cliqué. */
body.bs-panier .bs-coupon-lien{
  display:inline-block; margin:2px 0 0; padding:10px 0;
  color:var(--bsp-k); font-size:13px; font-weight:600;
  text-decoration:underline; text-underline-offset:3px; text-decoration-color:#C9C5BA;
  cursor:pointer;
}
body.bs-panier .bs-coupon-lien:hover{ text-decoration-color:var(--bsp-k); }
body.bs-panier .bs-coupon-lien:focus-visible{ outline:2px solid var(--bsp-k); outline-offset:2px; }
body.bs-panier .wd-coupon-form[data-bs-plie="1"]{ display:none !important; }
body.bs-panier .wd-coupon-form[data-bs-plie="1"].bs-coupon-ouvert{
  display:flex !important; gap:10px; margin-top:8px;
}

/* N3 · Le bloc des totaux prend le gabarit du récapitulatif du tunnel. */
body.bs-panier .cart_totals h2{
  font-size:18px !important; font-weight:800 !important; color:var(--bsp-k) !important;
  text-transform:none !important; letter-spacing:0 !important; margin:0 0 10px !important;
}
body.bs-panier .cart_totals table.shop_table{ border:0 !important; margin:0 !important; }
body.bs-panier .cart_totals table.shop_table tr{
  display:flex !important; justify-content:space-between !important;
  align-items:baseline !important; gap:14px !important;
  margin:0 !important; padding:7px 0 !important; border:0 !important;
}
body.bs-panier .cart_totals table.shop_table th,
body.bs-panier .cart_totals table.shop_table td{
  border:0 !important; padding:0 !important; background:transparent !important;
  font-size:13.5px !important; text-align:right !important;
}
body.bs-panier .cart_totals table.shop_table th{
  color:var(--bsp-fog) !important; font-weight:600 !important;
  text-align:left !important; white-space:nowrap !important;
}
body.bs-panier .cart_totals table.shop_table td{ color:var(--bsp-k) !important; font-weight:700 !important; }
body.bs-panier .cart_totals tr.order-total{
  border-top:1.5px solid var(--bsp-k) !important; padding-top:13px !important; margin-top:4px !important;
}
body.bs-panier .cart_totals tr.order-total th{
  color:var(--bsp-k) !important; font-size:16px !important; font-weight:800 !important;
}
body.bs-panier .cart_totals tr.order-total td > strong .woocommerce-Price-amount,
body.bs-panier .cart_totals tr.order-total td .woocommerce-Price-amount{
  color:var(--bsp-red) !important; font-size:22px !important; font-weight:800 !important;
}

/* N5 · La règle de livraison remplace le montant, au panier comme au mini-panier. */
body.bs-panier .cart_totals tr.woocommerce-shipping-totals,
body.bs-panier .cart_totals tr.shipping,
body.bs-panier tr.bs-ship{ display:none !important; }
body.bs-panier tr.bs-liv td{ text-align:right !important; }
body.bs-panier .bs-liv__a{
  display:block; color:var(--bsp-k); font-weight:700; font-size:13.5px;
}
body.bs-panier .bs-liv__b{
  display:block; color:var(--bsp-fog); font-weight:600; font-size:11.5px; margin-top:2px;
}
/* .bs-liv-mini : déménagée dans bs-chrome.css avec .bs-fr (voir le chapitre 1). */

/* N4 · La carte Total ne porte plus de bloc de réassurance : il est déjà au pied de page
 * et il repoussait le bouton de commande hors du premier écran en mobile. */
body.bs-panier .cart_totals .bs-reass,
body.bs-panier .cart_totals .bs-trust,
body.bs-panier .cart-totals-inner > ul.bs-reass,
body.bs-panier .cart_totals ul.bs-argu{ display:none !important; }

/* --- #48, correctifs d'ordre : ces règles doivent passer APRÈS le gabarit des
 * totaux, qui met toutes les rangées en flex et rouvrait ce qu'on avait masqué. --- */

/* N5 · le sélecteur de livraison et l'ancienne ligne chiffrée ne s'affichent plus */
body.bs-panier .cart_totals table.shop_table tr.woocommerce-shipping-totals,
body.bs-panier .cart_totals table.shop_table tr.shipping,
body.bs-panier .cart_totals table.shop_table tr.bs-ship,
body.bs-panier .cart_totals table.shop_table tr.wc-stripe-bnpl-cart-message{
  display:none !important;
}
/* N4 · la réassurance quitte la carte Total : elle est déjà au pied de page, et elle
 * repoussait le bouton de commande hors du premier écran en mobile. */
body.bs-panier .cart_totals ul.bs-reassure,
body.bs-panier .cart-totals-inner ul.bs-reassure{ display:none !important; }

/* la ligne de livraison en toutes lettres garde deux lignes lisibles */
body.bs-panier .cart_totals table.shop_table tr.bs-liv{ align-items:flex-start !important; }
body.bs-panier .cart_totals table.shop_table tr.bs-liv td{ text-align:right !important; }

/* WooCommerce masque les `th` d'un `shop_table_responsive` en mobile et remet le
 * libellé par `td::before{content:attr(data-title)}`. Notre gabarit met la rangée en
 * flex : le libellé doit redevenir un vrai `th`, sinon la ligne « Livraison » perd
 * son intitulé et la ligne se lit de travers. */
body.bs-panier .cart_totals table.shop_table tr th{ display:block !important; }
body.bs-panier .cart_totals table.shop_table td::before{ content:none !important; }
body.bs-panier .cart_totals table.shop_table tr.bs-liv td{
  display:flex !important; flex-direction:column !important; align-items:flex-end !important;
}

/* Le gabarit responsive de WooCommerce repasse les rangées en `display:block` :
 * on ré-affirme la mise en ligne APRÈS lui, libellé à gauche, montant à droite. */
body.bs-panier .cart_totals table.shop_table,
body.bs-panier .cart_totals table.shop_table tbody{ display:block !important; width:100% !important; }
body.bs-panier .cart_totals table.shop_table tr{
  display:flex !important; flex-direction:row !important;
  justify-content:space-between !important; align-items:baseline !important;
  gap:14px !important; width:100% !important;
}
body.bs-panier .cart_totals table.shop_table tr th{
  display:block !important; flex:0 1 auto !important; text-align:left !important;
}
body.bs-panier .cart_totals table.shop_table tr td{
  display:block !important; flex:1 1 auto !important; text-align:right !important;
  min-width:0 !important;
}
body.bs-panier .cart_totals table.shop_table tr.bs-liv{ align-items:flex-start !important; }

/* --- Majeurs restants de CRITIQUE-tour3.md --- */

/* MAJEUR 6 · la croix faisait 32 px de cible, la charte en exige 44. Les deux
 * pseudo-éléments étant pris par les barres du X et la cellule étant en position
 * absolue en mobile, on agrandit la pastille elle-même. */
body.bs-panier td.product-remove a.remove{
  width:44px !important; height:44px !important; margin:0 !important;
}
body.bs-panier td.product-remove a.remove::before,
body.bs-panier td.product-remove a.remove::after{
  width:15px !important; margin-left:-7.5px !important;
}

/* MAJEUR 8 · l'emphase était permutée par rapport au tunnel (libellé lourd, montant
 * léger) et les deux encres servies, #242424 et #1A202C, ne sont pas de la charte.
 * WoodMart l'emportait en spécificité. */
body.bs-panier .cart_totals table th,
body.bs-panier .cart_totals table.shop_table tr th{
  color:#62656D !important; font-weight:600 !important;
}
body.bs-panier .cart_totals table td,
body.bs-panier .cart_totals table td .woocommerce-Price-amount,
body.bs-panier .cart_totals table.shop_table tr td .woocommerce-Price-amount{
  color:#181A1F !important; font-weight:800 !important;
}
body.bs-panier .cart_totals table.shop_table tr.order-total th{
  color:#181A1F !important; font-weight:800 !important;
}
body.bs-panier .cart_totals table.shop_table tr.order-total td .woocommerce-Price-amount{
  color:var(--bsp-red) !important;
}
body.bs-panier .cart_totals table.shop_table tr.bs-liv td{ font-weight:700 !important; }


/* Le cartouche d'erreur du thème n'est pas repris (voir la note dans bs-panier.php) :
   on lui laisse son rendu natif plutôt que d'empiler des règles qui ne prennent pas. */

/* =====================================================================================
 * RETOURS ALEX · 10/08/2026 (tour #49)
 * ================================================================================== */

/* --- Le bloc « Vous avez un code promo ? » ne se voyait que par son vide -------------
   Relevé à 375 px : 14 px de padding sur td.actions, puis 15 px de margin sur
   .cart-actions, puis 2 px sur le lien, puis ses 10 px de padding : 41 px de blanc
   au-dessus d'un lien de 13 px, pour une rangée de 83 px de haut. La cible tactile du
   lien reste à 44 px (padding 12 px haut et bas, pour 20 px de texte). */
body.bs-panier tr.wd-cart-action-row td.actions{ padding:2px 14px 8px !important; }
body.bs-panier .cart-actions{ margin-top:0 !important; }
body.bs-panier .bs-coupon-lien{ margin-top:0 !important; padding:12px 0 !important; }

/* --- Le bouton fantôme « Continuer mes achats » est retiré (voir bs-panier.php, §5).
   Son dessin reste ici : remettre l'action suffit à le retrouver à l'identique. --- */

/* --- La barre basse mobile et la carte des totaux disent le même montant -------------
   Corrigé côté serveur (bs-panier.php, §6) : le premier rendu prenait get_total(),
   port provisoire compris. Rien à faire en CSS, la note est là pour la relecture. --- */
