/* ==========================================================================
   BosArts — catalogue et fiche produit
   ========================================================================== */

/* --- Grille catalogue ------------------------------------------------------ */

.woocommerce ul.products,
.wc-block-grid__products {
  display: grid !important;
  grid-template-columns: repeat(var(--bos-colonnes), minmax(0, 1fr));
  gap: var(--bos-gouttiere);
  margin: 0;
  padding: 0;
  list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none; }

.woocommerce ul.products li.product {
  width: 100%;
  margin: 0;
  float: none;
  background-color: var(--bos-blanc);
  border: var(--bos-bordure);
  border-radius: var(--bos-rayon);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: border-color var(--bos-duree) var(--bos-courbe),
              box-shadow var(--bos-duree) var(--bos-courbe);
}

.woocommerce ul.products li.product:hover {
  border-color: var(--bos-trait-fort);
  box-shadow: var(--bos-ombre);
}

/* Visuel produit : fond toile plutôt que blanc, pour les images détourées. */
.woocommerce ul.products li.product a img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  background-color: var(--bos-toile);
  margin: 0;
  padding: var(--bos-esp-3);
}

.woocommerce ul.products li.product .bos-carte__corps {
  padding: var(--bos-esp-3);
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: var(--bos-esp-2);
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-size: var(--bos-taille-md);
  line-height: 1.3;
  margin: 0;
  padding: 0;
}

/* --- Bloc prix : TTC en grand, HT et TVA en dessous pour les pros ---------- */

.bos-prix { display: flex; flex-direction: column; gap: 1px; }

.bos-prix__barre {
  font-size: var(--bos-taille-sm);
  color: var(--bos-gris-clair);
  text-decoration: line-through;
}

.bos-prix__ttc {
  font-size: var(--bos-taille-lg);
  font-weight: 500;
  color: var(--bos-fusain);
}

.bos-prix__devise {
  font-size: var(--bos-taille-sm);
  font-weight: 400;
  color: var(--bos-gris);
}

.bos-prix__ht {
  font-size: var(--bos-taille-xs);
  color: var(--bos-gris);
}

.single-product .bos-prix__ttc { font-size: 1.625rem; }

/* --- Badges ---------------------------------------------------------------- */

.bos-badge {
  display: inline-flex;
  align-items: center;
  font-size: var(--bos-taille-xs);
  font-weight: 500;
  padding: 0.2rem 0.6rem;
  border-radius: var(--bos-rayon-pilule);
  line-height: 1.5;
}

.bos-badge--pro     { background-color: var(--bos-pro);      color: var(--bos-blanc); }
.bos-badge--promo   { background-color: var(--bos-vermillon);color: var(--bos-blanc); }
.bos-badge--nouveau { background-color: var(--bos-jaune);    color: var(--bos-fusain); }

.woocommerce ul.products li.product { position: relative; }

.bos-badge--flottant {
  position: absolute;
  inset-block-start: var(--bos-esp-2);
  inset-inline-start: var(--bos-esp-2);
  z-index: 2;
}

.woocommerce span.onsale { display: none; }

/* --- Disponibilité --------------------------------------------------------- */

.bos-dispo { display: inline-flex; align-items: center; gap: var(--bos-esp-2); font-size: var(--bos-taille-xs); }
.bos-dispo::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background-color: currentColor; flex-shrink: 0; }
.bos-dispo--stock   { color: var(--bos-stock); }
.bos-dispo--attente { color: var(--bos-attente); }
.bos-dispo--rupture { color: var(--bos-rupture); }

/* --- Pastilles de variation : une palette de peintre, pas des cases -------- */

.bos-pastilles { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bos-esp-1); }

.bos-pastille {
  width: 15px; height: 15px;
  border-radius: 50%;
  border: 0.5px solid var(--bos-trait);
  flex-shrink: 0;
}

.bos-pastille--reste { font-size: var(--bos-taille-xs); color: var(--bos-gris-clair); }

/* Sélecteur de variation sur la fiche produit. */
.bos-variations { display: flex; flex-wrap: wrap; gap: var(--bos-esp-2); }

.bos-variation-couleur {
  width: 28px; height: 28px;
  border-radius: 50%;
  border: 0.5px solid var(--bos-trait-fort);
  cursor: pointer;
  padding: 0;
  transition: box-shadow var(--bos-duree) var(--bos-courbe);
}

.bos-variation-couleur[aria-pressed="true"] {
  box-shadow: 0 0 0 2px var(--bos-papier), 0 0 0 3.5px var(--bos-fusain);
}

.bos-variation-couleur:focus-visible {
  outline: 2px solid var(--bos-azur);
  outline-offset: 3px;
}

.bos-variation-taille {
  font-size: var(--bos-taille-sm);
  padding: 0.35rem 1rem;
  border-radius: var(--bos-rayon-pilule);
  border: 0.5px solid var(--bos-trait-fort);
  background: transparent;
  color: var(--bos-gris);
  cursor: pointer;
}

.bos-variation-taille[aria-pressed="true"] {
  border: 1.5px solid var(--bos-fusain);
  color: var(--bos-fusain);
}

.bos-variation-taille[disabled] {
  color: var(--bos-trait-fort);
  text-decoration: line-through;
  cursor: not-allowed;
}

/* --- Quantité --------------------------------------------------------------- */

.woocommerce .quantity {
  display: inline-flex;
  align-items: center;
  border: 0.5px solid var(--bos-trait-fort);
  border-radius: var(--bos-rayon-pilule);
  background-color: var(--bos-blanc);
  overflow: hidden;
}

.woocommerce .quantity input.qty {
  width: 44px;
  text-align: center;
  border: 0;
  background: transparent;
  padding: 0.55rem 0;
  -moz-appearance: textfield;
}

.woocommerce .quantity input.qty::-webkit-outer-spin-button,
.woocommerce .quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.woocommerce .quantity input.qty:focus { box-shadow: none; }

.bos-qte-pas {
  border: 0;
  background: transparent;
  color: var(--bos-gris);
  font-size: var(--bos-taille-base);
  padding: 0.55rem 0.75rem;
  cursor: pointer;
  line-height: 1;
}

.bos-qte-pas:hover { color: var(--bos-fusain); }

/* --- Fiche produit ------------------------------------------------------------ */

.single-product .product_title { font-size: var(--bos-taille-xl); margin: 0 0 var(--bos-esp-1); }

.bos-marque {
  font-size: var(--bos-taille-xs);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bos-azur);
  margin: 0 0 var(--bos-esp-1);
}

.bos-encart-prix {
  background-color: var(--bos-blanc);
  border: var(--bos-bordure);
  border-radius: var(--bos-rayon);
  padding: var(--bos-esp-3);
  margin-block: var(--bos-esp-4);
}

.bos-livraison {
  display: flex;
  align-items: center;
  gap: var(--bos-esp-2);
  font-size: var(--bos-taille-sm);
  color: var(--bos-gris);
  margin-block-start: var(--bos-esp-2);
}

/* --- Bouton devis --------------------------------------------------------------- */

.bos-devis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  font-size: var(--bos-taille-sm);
  color: var(--bos-outremer);
  background: transparent;
  border: 1px solid var(--bos-outremer);
  border-radius: var(--bos-rayon-pilule);
  padding: 0.55rem 1rem;
  margin-block-start: var(--bos-esp-2);
  cursor: pointer;
  text-decoration: none;
}

.bos-devis:hover { background-color: var(--bos-azur-clair); color: var(--bos-nuit); }

.woocommerce ul.products li.product .bos-devis {
  font-size: var(--bos-taille-xs);
  border: 0;
  padding: 0;
  margin-block-start: var(--bos-esp-1);
}

.woocommerce ul.products li.product .bos-devis:hover { background: transparent; text-decoration: underline; }

/* --- Grille de commande de gamme (emplacement réservé au plugin B2B) --------- */

.bos-matrice {
  background-color: var(--bos-blanc);
  border: var(--bos-bordure);
  border-radius: var(--bos-rayon);
  padding: var(--bos-esp-4);
  margin-block-start: var(--bos-esp-6);
}

.bos-matrice__entete { display: flex; align-items: center; gap: var(--bos-esp-2); margin-block-end: var(--bos-esp-1); }
.bos-matrice__titre { font-family: var(--bos-font-titre); font-size: var(--bos-taille-lg); margin: 0; }
.bos-matrice__aide { font-size: var(--bos-taille-sm); color: var(--bos-gris); margin: 0 0 var(--bos-esp-4); }

.bos-matrice table { width: 100%; border-collapse: collapse; }
.bos-matrice thead th {
  font-size: var(--bos-taille-xs);
  font-weight: 400;
  color: var(--bos-gris-clair);
  text-align: center;
  padding-block-end: var(--bos-esp-2);
}
.bos-matrice thead th:first-child { text-align: start; }
.bos-matrice tbody td { border-top: 0.5px solid var(--bos-toile); padding: var(--bos-esp-2) var(--bos-esp-1); }
.bos-matrice tbody td:first-child { font-size: var(--bos-taille-sm); }
.bos-matrice input[type="number"] { width: 100%; text-align: center; padding: 0.35rem 0; }

.bos-matrice__pied {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bos-esp-4);
  margin-block-start: var(--bos-esp-3);
  padding-block-start: var(--bos-esp-3);
  border-top: var(--bos-bordure);
}

/* --- Panier, commande, compte -------------------------------------------------- */

.woocommerce-cart table.cart,
.woocommerce-checkout .woocommerce-checkout-review-order-table {
  background-color: var(--bos-blanc);
  border: var(--bos-bordure);
  border-radius: var(--bos-rayon);
  border-collapse: separate;
  overflow: hidden;
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  border-radius: var(--bos-rayon);
  border: var(--bos-bordure);
  border-top-width: 3px;
  background-color: var(--bos-blanc);
  padding: var(--bos-esp-3) var(--bos-esp-4);
}

.woocommerce-message { border-top-color: var(--bos-vert); }
.woocommerce-info    { border-top-color: var(--bos-azur); }
.woocommerce-error   { border-top-color: var(--bos-rupture); }

/* Mention de règlement hors ligne, affichée aux pros à la commande. */
.bos-reglement-entreprise {
  background-color: var(--bos-pro-bg);
  border-radius: var(--bos-rayon);
  padding: var(--bos-esp-3) var(--bos-esp-4);
  font-size: var(--bos-taille-md);
  color: var(--bos-nuit);
}

@media (max-width: 782px) {
  .bos-matrice { padding: var(--bos-esp-3); }
  .bos-matrice__pied { flex-direction: column; align-items: stretch; }
}
