/* ============================================================
   ECB — socle conversion e-commerce, agnostique du thème.
   Les couleurs/typos viennent de design.tokens (config JSON) ;
   les valeurs ci-dessous ne sont que des replis raisonnables.
   ============================================================ */
:root {
  --ecb-bg: #F4F4F6;
  --ecb-surface: #FFFFFF;
  --ecb-ink: #1B1B24;
  --ecb-ink-soft: #5A5A70;
  --ecb-line: #E3E3EA;
  --ecb-cta: #D8324F;
  --ecb-cta-dark: #B21F3B;
  --ecb-ok: #0E9E78;
  --ecb-accent: #F5A623;
  --ecb-display: inherit;
  --ecb-body: inherit;
  --ecb-radius: 0px;
}

.ecb-wrap { max-width: 1160px; margin: 0 auto; }

/* ---------------- bandeau annonce ---------------- */
.ecb-annonce {
  background: var(--ecb-ink);
  color: #fff;
  font-family: var(--ecb-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .04em;
  text-align: center;
  padding: 9px 14px;
  position: relative;
  z-index: 200;
}
.ecb-annonce b { color: var(--ecb-accent); }
.ecb-annonce .sep { color: var(--ecb-cta); margin: 0 10px; }

/* ---------------- réassurance ---------------- */
.ecb-trust { background: var(--ecb-surface); border-top: 1px solid var(--ecb-line); padding: 28px 20px; }
.ecb-trust .ecb-wrap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.ecb-trust-item { display: flex; align-items: center; gap: 13px; }
.ecb-trust-item svg {
  width: 28px; height: 28px; flex: none;
  fill: none; stroke: var(--ecb-cta); stroke-width: 1.8;
  stroke-linecap: round; stroke-linejoin: round;
}
.ecb-trust-item b { display: block; font-family: var(--ecb-display); font-size: 15px; line-height: 1.25; color: var(--ecb-ink); }
.ecb-trust-item small { display: block; color: var(--ecb-ink-soft); font-size: 13px; line-height: 1.35; }

/* ---------------- fiche produit ---------------- */
.ecb-pp-taxo {
  font-family: var(--ecb-display);
  font-size: 13px; letter-spacing: .04em; text-transform: uppercase;
  margin: 0 0 10px;
}
.ecb-pp-taxo a { color: var(--ecb-ink-soft); text-decoration: none; }
.ecb-pp-taxo a:hover { color: var(--ecb-cta); }
.ecb-pp-taxo span { color: var(--ecb-line); margin: 0 2px; }

.ecb-pp-trust {
  margin: 22px 0 6px; padding: 16px 18px;
  border: 1px solid var(--ecb-line); background: var(--ecb-bg);
  display: grid; gap: 10px; list-style: none;
}
.ecb-pp-trust li { display: flex; align-items: center; gap: 12px; font-size: 14px; color: var(--ecb-ink); margin: 0; }
.ecb-pp-trust li svg { width: 18px; height: 18px; flex: none; fill: none; stroke: var(--ecb-ok); stroke-width: 2.4; stroke-linecap: round; }

/* ---------------- variantes ---------------- */
.ecb-var-aide, .cr-var-aide {
  margin: 0 0 12px; padding: 11px 14px;
  background: #FFF6E3; border-left: 4px solid var(--ecb-accent);
  font-size: 14px; color: var(--ecb-ink);
}
.ecb-var-aide[hidden], .cr-var-aide[hidden] { display: none; }

.woocommerce div.product form.cart .variations tr { display: block; margin-bottom: 16px; }
.woocommerce div.product form.cart .variations td { border: 0; padding: 0 0 6px; display: block; width: auto; }
.woocommerce div.product form.cart .variations td.label label {
  font-family: var(--ecb-display); font-weight: 700; font-size: 13px;
  letter-spacing: .08em; text-transform: uppercase; color: var(--ecb-ink-soft);
}
/* pastilles : on couvre les deux plugins de swatches les plus répandus */
.xt_woovs-swatches, ul.variable-items-wrapper { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 0; padding: 0; }
.xt_woovs-swatches li.swatch, ul.variable-items-wrapper li.variable-item {
  list-style: none; margin: 0 !important;
  border: 2px solid var(--ecb-line) !important;
  background: var(--ecb-surface);
  border-radius: 0 !important; padding: 0 !important;
  box-shadow: none !important;
  transition: border-color .12s ease, background .12s ease;
  cursor: pointer;
}
.xt_woovs-swatches li.swatch .swatch-inner,
.xt_woovs-swatches li.swatch .swatch-label-inner,
ul.variable-items-wrapper li.variable-item .variable-item-span {
  display: block; padding: 10px 14px;
  font-family: var(--ecb-body); font-size: 14px; font-weight: 500;
  color: var(--ecb-ink); line-height: 1.2; white-space: nowrap;
}
.xt_woovs-swatches li.swatch:hover,
ul.variable-items-wrapper li.variable-item:hover { border-color: var(--ecb-ink) !important; }
.xt_woovs-swatches li.swatch.xt_woovs-selected,
ul.variable-items-wrapper li.variable-item.selected {
  border-color: var(--ecb-ink) !important; background: var(--ecb-ink);
}
.xt_woovs-swatches li.swatch.xt_woovs-selected .swatch-inner,
.xt_woovs-swatches li.swatch.xt_woovs-selected .swatch-label-inner,
ul.variable-items-wrapper li.variable-item.selected .variable-item-span {
  color: #fff; font-weight: 600; padding-left: 30px; position: relative;
}
.xt_woovs-swatches li.swatch.xt_woovs-selected .swatch-inner::before,
.xt_woovs-swatches li.swatch.xt_woovs-selected .swatch-label-inner::before,
ul.variable-items-wrapper li.variable-item.selected .variable-item-span::before {
  content: ""; position: absolute; left: 12px; top: 50%;
  width: 10px; height: 6px;
  border-left: 2px solid var(--ecb-accent); border-bottom: 2px solid var(--ecb-accent);
  transform: translateY(-70%) rotate(-45deg);
}
.xt_woovs-swatches li.swatch.disabled, ul.variable-items-wrapper li.variable-item.disabled {
  opacity: .45; cursor: not-allowed; text-decoration: line-through;
}
.woocommerce-variation-price .screen-reader-text { display: none; }
.woocommerce-variation.single_variation {
  margin-bottom: 14px; padding: 14px 16px;
  background: var(--ecb-bg); border-left: 4px solid var(--ecb-ok);
}

/* ---------------- barre collante (produit + panier) ---------------- */
.ecb-sticky-atc {
  display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 999;
  background: var(--ecb-surface); border-top: 2px solid var(--ecb-ink);
  padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  padding-right: 78px; /* on laisse la place à une bulle de chat */
  align-items: center; gap: 12px;
  box-shadow: 0 -8px 24px rgba(0,0,0,.16);
}
.ecb-sticky-atc .ecb-sticky-price {
  font-family: var(--ecb-display); font-weight: 700; font-size: 15px;
  line-height: 1.2; white-space: nowrap;
}
.ecb-sticky-atc .ecb-sticky-price del { display: none; }
.ecb-sticky-atc .screen-reader-text { display: none; }
.ecb-sticky-atc button {
  flex: 1; background: var(--ecb-cta); color: #fff; border: 0;
  padding: 14px 12px; font-family: var(--ecb-display); font-weight: 700;
  font-size: 14px; letter-spacing: .04em; text-transform: uppercase;
  white-space: nowrap; cursor: pointer;
}
.ecb-sticky-atc button:hover { background: var(--ecb-cta-dark); }
@media (max-width: 768px) { .ecb-sticky-atc.ecb-visible { display: flex; } }
@media (max-width: 380px) {
  .ecb-sticky-atc .ecb-sticky-price { font-size: 13px; }
  .ecb-sticky-atc button { font-size: 13px; padding: 13px 8px; }
}

/* ---------------- panier ---------------- */
.ecb-cart-flash, .ecb-cart-progress {
  margin: 0 0 22px; padding: 14px 16px;
  background: var(--ecb-bg); border-left: 4px solid var(--ecb-ok);
}
.ecb-cart-flash, .ecb-cart-progress p {
  display: flex; align-items: center; gap: 11px; margin: 0; font-size: 15px;
}
.ecb-cart-flash svg, .ecb-cart-progress svg {
  width: 22px; height: 22px; flex: none; fill: none;
  stroke: var(--ecb-ok); stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round;
}
.ecb-cart-progress .ecb-bar {
  margin-top: 10px; height: 6px; background: var(--ecb-line); overflow: hidden;
}
.ecb-cart-progress .ecb-bar i { display: block; height: 100%; background: var(--ecb-ok); transition: width .3s ease; }

.ecb-continuer {
  display: inline-block; margin: 14px 0 0;
  font-family: var(--ecb-display); font-weight: 600; font-size: 14px;
  color: var(--ecb-ink-soft); text-decoration: none;
}
.ecb-continuer:hover { color: var(--ecb-cta); }

/* code promo replié : on ne le montre qu'à ceux qui en ont un */
.ecb-coupon-toggle {
  background: none; border: 0; padding: 6px 0; margin: 6px 0;
  font-family: var(--ecb-body); font-size: 14px;
  color: var(--ecb-ink-soft); text-decoration: underline; cursor: pointer;
}
.ecb-coupon-toggle:hover { color: var(--ecb-cta); }
.ecb-coupon-cache { display: none !important; }
.ecb-coupon-cache.ecb-coupon-ouvert { display: flex !important; flex-wrap: wrap; gap: 8px; }

.ecb-cart-trust {
  list-style: none; margin: 14px 0 0; padding: 0;
  display: grid; gap: 8px;
}
.ecb-cart-trust li { display: flex; align-items: center; gap: 10px; font-size: 13.5px; color: var(--ecb-ink-soft); margin: 0; }
.ecb-cart-trust li svg { width: 16px; height: 16px; flex: none; fill: none; stroke: var(--ecb-ok); stroke-width: 2.4; stroke-linecap: round; }
.ecb-cart-aide { margin: 10px 0 0; font-size: 13.5px; color: var(--ecb-ink-soft); }
.ecb-cart-aide a { color: var(--ecb-ink); font-weight: 600; }

.ecb-suggestions { margin: 46px 0 10px; }
.ecb-suggestions h2 { font-family: var(--ecb-display); font-size: 22px; margin: 0 0 18px; }

/* la vignette produit du panier est ridicule par défaut sur beaucoup de thèmes */
.woocommerce table.shop_table td.product-thumbnail img { width: 78px; height: auto; max-width: none; }

/* ---------------- footer ---------------- */
.ecb-footer {
  background: var(--ecb-ink); color: rgba(255,255,255,.72);
  padding: 56px 20px 26px; position: relative;
}
.ecb-footer h4 {
  color: #fff; font-family: var(--ecb-display); font-size: 14px;
  text-transform: uppercase; letter-spacing: .08em; margin: 0 0 15px;
}
.ecb-footer ul { list-style: none; margin: 0; padding: 0; }
.ecb-footer li { margin-bottom: 9px; }
.ecb-footer a { color: rgba(255,255,255,.72); text-decoration: none; font-size: 14px; }
.ecb-footer a:hover { color: var(--ecb-accent); }
.ecb-footer-cols {
  display: grid; grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 34px; margin-bottom: 40px;
}
.ecb-footer-brand img { max-width: 150px; height: auto; margin-bottom: 14px; }
.ecb-footer-brand p { font-size: 14px; line-height: 1.6; margin: 0 0 12px; }
.ecb-footer-brand .tel { font-family: var(--ecb-display); font-weight: 700; color: #fff; font-size: 17px; }

/* footer SEO : dense mais lisible, et uniquement des liens qui existent */
.ecb-footer-seo {
  border-top: 1px solid rgba(255,255,255,.14);
  padding-top: 28px; margin-bottom: 30px;
}
.ecb-footer-seo .ecb-seo-grp { margin-bottom: 18px; }
.ecb-footer-seo .ecb-seo-titre {
  display: block; color: rgba(255,255,255,.5); font-size: 12px;
  text-transform: uppercase; letter-spacing: .1em; margin-bottom: 8px;
}
.ecb-footer-seo ul { display: flex; flex-wrap: wrap; gap: 6px 0; }
.ecb-footer-seo li { margin: 0; }
.ecb-footer-seo li:not(:last-child)::after { content: "·"; color: rgba(255,255,255,.28); margin: 0 9px; }
.ecb-footer-seo a { font-size: 13.5px; }

.ecb-footer-bottom {
  border-top: 1px solid rgba(255,255,255,.14); padding-top: 20px;
  display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap;
  font-size: 13px;
}
.ecb-footer-bottom .ecb-signature { color: rgba(255,255,255,.42); }

/* ---------------- entêtes d'archives ---------------- */
.ecb-shop-head { margin: 10px 0 26px; border-left: 4px solid var(--ecb-cta); padding-left: 18px; }
.ecb-shop-head h1 { font-size: clamp(24px, 3.4vw, 34px); margin: 0 0 6px; }
.ecb-shop-head p { color: var(--ecb-ink-soft); max-width: 680px; margin: 0; }

/* ---------------- responsive ---------------- */
@media (max-width: 980px) {
  .ecb-trust .ecb-wrap { grid-template-columns: repeat(2, 1fr); }
  .ecb-footer-cols { grid-template-columns: 1fr 1fr; gap: 26px; }
}
@media (max-width: 640px) {
  .ecb-trust .ecb-wrap { grid-template-columns: 1fr 1fr; gap: 16px; }
  .ecb-footer-cols { grid-template-columns: 1fr; }
  .ecb-annonce { font-size: 12px; }
  .ecb-annonce .sep { margin: 0 6px; }
}
@media (prefers-reduced-motion: reduce) {
  * , *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------------- CTA des grilles produit ----------------
   Les thèmes (GeneratePress & co) posent leur propre style de bouton avec une
   spécificité supérieure : le CTA principal des listings finissait délavé,
   alors que c'est lui qui déclenche l'ajout au panier. On reprend la main. */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product a.add_to_cart_button,
.woocommerce ul.products li.product a.product_type_variable,
.woocommerce ul.products li.product .wp-element-button,
.wc-block-grid__product-add-to-cart .wp-block-button__link {
  background-color: var(--ecb-ink) !important;
  color: #fff !important;
  border: 0 !important;
  opacity: 1 !important;
}
.woocommerce ul.products li.product .button:hover,
.woocommerce ul.products li.product a.add_to_cart_button:hover,
.woocommerce ul.products li.product a.product_type_variable:hover,
.woocommerce ul.products li.product .wp-element-button:hover,
.wc-block-grid__product-add-to-cart .wp-block-button__link:hover {
  background-color: var(--ecb-cta) !important;
  color: #fff !important;
}

/* ============================================================
   Panier latéral — s'ouvre à l'ajout, garde le visiteur sur sa lancée
   ============================================================ */
/* overflow:hidden — sinon le panneau, décalé de 100% vers la droite au repos,
   déborde du viewport et crée une barre de défilement horizontale */
.ecb-drawer { position: fixed; inset: 0; z-index: 100000; visibility: hidden; overflow: hidden; }
.ecb-drawer.ecb-ouvert { visibility: visible; }
.ecb-drawer-fond {
  position: absolute; inset: 0; background: rgba(0,0,0,.45);
  opacity: 0; transition: opacity .25s ease;
}
.ecb-drawer.ecb-ouvert .ecb-drawer-fond { opacity: 1; }
.ecb-drawer-panneau {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(410px, 92vw);
  background: var(--ecb-surface);
  display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .28s cubic-bezier(.22,.61,.36,1);
  box-shadow: -18px 0 46px rgba(0,0,0,.22);
}
.ecb-drawer.ecb-ouvert .ecb-drawer-panneau { transform: translateX(0); }
.ecb-drawer-panneau header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 20px; border-bottom: 1px solid var(--ecb-line);
}
.ecb-drawer-panneau header b { font-family: var(--ecb-display); font-size: 17px; color: var(--ecb-ink); }
.ecb-drawer-x { background: none; border: 0; padding: 4px; cursor: pointer; line-height: 0; }
.ecb-drawer-x svg { width: 22px; height: 22px; fill: none; stroke: var(--ecb-ink-soft); stroke-width: 2; stroke-linecap: round; }
.ecb-drawer-x:hover svg { stroke: var(--ecb-cta); }
.ecb-drawer-corps { flex: 1; overflow-y: auto; padding: 6px 20px; }
.ecb-drawer-lignes { list-style: none; margin: 0; padding: 0; }
.ecb-drawer-lignes li {
  display: flex; align-items: center; gap: 13px;
  padding: 15px 0; border-bottom: 1px solid var(--ecb-line); margin: 0;
}
.ecb-drawer-lignes img { width: 56px; height: 56px; object-fit: cover; flex: none; }
.ecb-drawer-lignes div { flex: 1; min-width: 0; }
.ecb-drawer-lignes .t { display: block; font-size: 14px; font-weight: 600; color: var(--ecb-ink); line-height: 1.35; }
.ecb-drawer-lignes .q { display: block; font-size: 12.5px; color: var(--ecb-ink-soft); margin-top: 3px; }
.ecb-drawer-lignes .p { font-family: var(--ecb-display); font-weight: 700; white-space: nowrap; color: var(--ecb-ink); }
.ecb-drawer-panneau footer { padding: 18px 20px calc(18px + env(safe-area-inset-bottom)); border-top: 1px solid var(--ecb-line); }
.ecb-drawer-total { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; }
.ecb-drawer-total span { color: var(--ecb-ink-soft); font-size: 14px; }
.ecb-drawer-total b { font-family: var(--ecb-display); font-size: 22px; color: var(--ecb-ink); }
.ecb-drawer-cta {
  display: block; text-align: center; text-decoration: none;
  background: var(--ecb-cta); color: #fff !important;
  font-family: var(--ecb-display); font-weight: 700; letter-spacing: .04em;
  padding: 15px 18px; transition: background .15s ease;
}
.ecb-drawer-cta:hover { background: var(--ecb-cta-dark); }
.ecb-drawer-lien {
  display: block; width: 100%; text-align: center; margin-top: 10px;
  background: none; border: 0; cursor: pointer;
  color: var(--ecb-ink-soft); font-size: 13.5px; text-decoration: underline;
  font-family: var(--ecb-body);
}
.ecb-drawer-lien:hover { color: var(--ecb-cta); }

/* ============================================================
   Stock réel et date de livraison estimée
   ============================================================ */
.ecb-stock-bas, .ecb-livraison-date {
  display: flex; align-items: center; gap: 10px;
  margin: 12px 0; font-size: 14.5px; color: var(--ecb-ink);
}
.ecb-stock-bas svg { width: 19px; height: 19px; flex: none; fill: none; stroke: var(--ecb-cta); stroke-width: 1.9; stroke-linejoin: round; stroke-linecap: round; }
.ecb-stock-bas span { color: var(--ecb-cta); font-weight: 600; }
.ecb-livraison-date svg { width: 20px; height: 20px; flex: none; fill: none; stroke: var(--ecb-ok); stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.ecb-livraison-date b { color: var(--ecb-ink); }

/* ============================================================
   Micro-interactions
   ============================================================ */
.ecb-anim { opacity: 0; transform: translateY(14px); transition: opacity .45s ease, transform .45s ease; }
.ecb-anim.ecb-vu { opacity: 1; transform: none; }
ul.products li.product.ecb-anim { transition-delay: .04s; }

/* bouton : attente puis confirmation */
.add_to_cart_button.ecb-charge, .single_add_to_cart_button.ecb-charge { position: relative; color: transparent !important; pointer-events: none; }
.add_to_cart_button.ecb-charge::after, .single_add_to_cart_button.ecb-charge::after {
  content: ""; position: absolute; top: 50%; left: 50%;
  width: 17px; height: 17px; margin: -9px 0 0 -9px;
  border: 2px solid rgba(255,255,255,.45); border-top-color: #fff; border-radius: 50%;
  animation: ecb-tourne .7s linear infinite;
}
@keyframes ecb-tourne { to { transform: rotate(360deg); } }
.add_to_cart_button.ecb-ok, .single_add_to_cart_button.ecb-ok { background-color: var(--ecb-ok) !important; }
.add_to_cart_button.ecb-ok::after, .single_add_to_cart_button.ecb-ok::after { content: none; }

/* compteur du panier qui tressaille */
.ecb-bump { animation: ecb-bump .6s cubic-bezier(.3,1.4,.5,1); }
@keyframes ecb-bump { 0%,100% { transform: scale(1); } 30% { transform: scale(1.22); } 60% { transform: scale(.96); } }

/* la carte produit se soulève un peu plus franchement */
.woocommerce ul.products li.product img { transition: transform .35s ease; }
.woocommerce ul.products li.product:hover img { transform: scale(1.035); }
.woocommerce ul.products li.product { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .ecb-anim { opacity: 1 !important; transform: none !important; }
  .ecb-drawer-panneau, .ecb-drawer-fond { transition: none !important; }
}

/* ---------------- maillage interne des archives ----------------
   Sans liens entre elles, les pages catégories sont des culs-de-sac :
   ni le visiteur ni Google ne circulent. */
.ecb-maillage { margin: 46px 0 10px; padding-top: 26px; border-top: 1px solid var(--ecb-line); }
.ecb-maillage h2 {
  font-family: var(--ecb-display); font-size: 17px;
  margin: 0 0 14px; color: var(--ecb-ink);
}
.ecb-maillage ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 9px; }
.ecb-maillage li { margin: 0; }
.ecb-maillage a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  border: 1px solid var(--ecb-line); background: var(--ecb-surface);
  color: var(--ecb-ink); text-decoration: none;
  font-size: 14px; line-height: 1.2;
  transition: border-color .15s ease, color .15s ease;
}
.ecb-maillage a:hover { border-color: var(--ecb-ink); color: var(--ecb-cta); }
.ecb-maillage a span { color: var(--ecb-ink-soft); font-size: 12.5px; }

/* liens contextuels posés dans le texte : lisibles sans être criards */
a.ecb-intext {
  color: var(--ecb-ink);
  text-decoration: underline;
  text-decoration-color: var(--ecb-accent);
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
}
a.ecb-intext:hover { color: var(--ecb-cta); text-decoration-color: var(--ecb-cta); }

/* preuve sociale : la note réelle de la boutique, sous l'entête d'archive */
.ecb-avis-boutique {
  display: inline-flex; align-items: baseline; gap: 10px;
  margin: -10px 0 20px; padding: 0;
  font-size: 14.5px; color: var(--ecb-ink-soft);
}
.ecb-avis-boutique .ecb-etoiles { color: var(--ecb-accent); font-size: 16px; letter-spacing: 1px; }
.ecb-avis-boutique b { font-family: var(--ecb-display); font-size: 17px; color: var(--ecb-ink); }

/* ---------------- débordement horizontal ----------------
   Les grilles GenerateBlocks appliquent une marge négative (gouttières) que le
   conteneur parent ne compense pas toujours : la page déborde de quelques pixels
   et une barre de défilement horizontale apparaît.
   `overflow-x: clip` coupe sans créer de contexte de défilement — contrairement à
   `hidden`, il ne casse donc pas les éléments en position: sticky. */
.gb-grid-wrapper { max-width: 100%; }
/* Le débordement est porté par <html> — les thèmes posent souvent overflow-x:hidden
   sur <body>, ce qui ne suffit pas. `clip` plutôt que `hidden` : aucun contexte de
   défilement n'est créé, donc les éléments en position: sticky continuent de tenir. */
html { overflow-x: clip; }

/* titre principal de la page d'accueil — présent sans écraser le visuel existant */
.ecb-home-head { max-width: 1160px; margin: 0 auto 26px; padding: 26px 20px 0; }
.ecb-home-head h1 {
  font-family: var(--ecb-display);
  font-size: clamp(24px, 3.2vw, 34px);
  line-height: 1.2; margin: 0 0 8px; color: var(--ecb-ink);
}
.ecb-home-head p { color: var(--ecb-ink-soft); font-size: 16px; margin: 0; max-width: 720px; }

/* ---------------- lisibilité des textes posés sur image ----------------
   Sur les tuiles d'accueil, les titres sont écrits en couleur foncée directement
   sur une photo, sans ombre ni voile : illisibles dès que l'image est chargée.
   La classe est posée en JS (l'image est en pseudo-élément, donc hors de portée
   d'un sélecteur CSS) et uniquement sur les textes foncés. */
.ecb-halo {
  text-shadow:
     0 1px 0 rgba(255,255,255,.8),
     0 0 14px rgba(255,255,255,.9),
     0 0 30px rgba(255,255,255,.7);
}

/* ---------------- fil d'Ariane ---------------- */
.ecb-fil { margin: 14px 0 4px; font-size: 13.5px; color: var(--ecb-ink-soft); }
.ecb-fil a { color: var(--ecb-ink-soft); text-decoration: none; }
.ecb-fil a:hover { color: var(--ecb-cta); text-decoration: underline; }
.ecb-fil span { color: var(--ecb-line); margin: 0 4px; }
.ecb-fil .last, .ecb-fil strong { color: var(--ecb-ink); }

/* ---------- encadré auteur (EEAT) ---------- */
.ecb-auteur{display:flex;gap:18px;align-items:flex-start;margin:42px 0 8px;padding:22px 24px;
  background:var(--ecb-surface);border:1px solid var(--ecb-line);border-radius:14px}
.ecb-auteur__photo{flex:0 0 72px;width:72px;height:72px;border-radius:50%;object-fit:cover;
  border:2px solid var(--ecb-line)}
.ecb-auteur__corps{min-width:0}
.ecb-auteur__nom{margin:0 0 6px;font-family:var(--ecb-display);font-size:1.05rem;font-weight:600;
  color:var(--ecb-ink);display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}
.ecb-auteur__role{font-family:var(--ecb-body);font-size:.82rem;font-weight:500;color:var(--ecb-ink-soft)}
.ecb-auteur__bio{margin:0;font-size:.94rem;line-height:1.6;color:var(--ecb-ink-soft)}
.ecb-auteur__pied{margin:12px 0 0;font-size:.84rem;color:var(--ecb-ink-soft);
  display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.ecb-auteur__lien{color:var(--ecb-cta);text-decoration:none;font-weight:600}
.ecb-auteur__lien:hover{text-decoration:underline}
@media(max-width:600px){.ecb-auteur{flex-direction:column;gap:14px;padding:18px}
  .ecb-auteur__photo{width:60px;height:60px;flex-basis:60px}}

/* Sélecteur de langue flottant : il n'y a plus qu'une seule langue publiée,
   et sa pastille passait par-dessus le bouton d'ajout au panier en mobile
   (z-index 9999999). On le retire. */
#trp-floater-ls, .trp-floater-ls-names { display: none !important; }

/* Le thème repeint les liens du tiroir en boutons pleins (classe .button de
   GeneratePress) : « Continuer mes achats » se retrouvait aussi imposant que
   « Valider la commande ». Deux actions de même poids diluent le clic — on
   rétablit la hiérarchie sans changer la palette. */
.ecb-drawer .ecb-drawer-continuer,
.ecb-drawer button.ecb-drawer-continuer,
.ecb-drawer-panneau .ecb-drawer-continuer {
  background: none !important; background-image: none !important;
  border: 0 !important; box-shadow: none !important;
  padding: 6px 0 !important; border-radius: 0 !important;
  width: auto !important; min-height: 0 !important;
  color: var(--ecb-ink-soft) !important; text-decoration: underline !important;
  font-size: 14px !important; font-weight: 600 !important;
}
.ecb-drawer .ecb-drawer-continuer:hover { color: var(--ecb-cta) !important; }

/* Étoiles vides (0 avis) sur les cartes produit : une rangée grise sans note
   n'apporte rien et suggère « personne n'achète ici ». On ne l'affiche que
   lorsqu'il y a une vraie note. */
ul.products .star-rating:has(> span[style*="width:0%"]),
ul.products .star-rating:not(:has(span)),
.wc-block-grid__product .star-rating:has(> span[style*="width:0%"]),
ul.products .kk-star-ratings[data-count="0"] { display: none !important; }

/* Renvoi vers les réponses détaillées, depuis la réassurance de la fiche et du
   panier. Discret : c'est un filet, pas une invitation à quitter la page. */
.ecb-trust-faq {
  display: block; margin-top: 10px; font-size: 13px;
  color: var(--ecb-ink-soft); text-decoration: underline; text-underline-offset: 3px;
}
.ecb-trust-faq:hover { color: var(--ecb-cta); }

/* ---------- cibles tactiles (WCAG 2.5.5) ----------
   Mesuré sur le parc : icône panier 36 px, bouton d'en-tête 20 px de haut.
   La recommandation est 44×44 px, et l'en-tête concentre les gestes les plus
   fréquents. On agrandit la zone cliquable sans toucher à la taille visuelle
   de l'icône : le picto reste identique, seule la surface de frappe grandit. */
@media (max-width: 1024px) {
  .site-header a.cart-contents,
  .site-header .menu-toggle,
  .site-header .search-item > a,
  .site-header .nav-search-item > a,
  .site-header a[class*="icon"],
  .wc-block-mini-cart__button {
    min-height: 44px; min-width: 44px;
    display: inline-flex !important; align-items: center; justify-content: center;
  }
  /* boutons de contenu trop plats (mesuré à 20 px de haut) */
  .entry-content .gb-button, .gb-container .gb-button {
    min-height: 44px; display: inline-flex; align-items: center;
  }
}

/* --- Repli d'une description démesurée -------------------------------------
   Constaté : 23 509 px sur une fiche console-retro, dont 24 465 px d'images.
   Le contenu reste dans le DOM ; sans JS, `max-height` n'est pas appliqué et la
   description s'affiche en entier. */
.ecb-repli { position: relative; }
.ecb-repli.ecb-replie .ecb-repli-corps {
  max-height: 60vh; overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
}
.ecb-repli-btn {
  display: none; margin: 14px auto 0; padding: 12px 26px; min-height: 44px;
  font: inherit; font-weight: 600; cursor: pointer;
  background: transparent; color: var(--ecb-encre, currentColor);
  border: 1px solid currentColor; border-radius: 999px;
}
.ecb-repli.ecb-replie .ecb-repli-btn,
.ecb-repli.ecb-deplie .ecb-repli-btn { display: block; }
.ecb-repli-btn:hover { background: currentColor; }
.ecb-repli-btn:hover { color: var(--ecb-fond, #fff); }
.ecb-repli-btn:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

/* ---------------- Élévation de la carte produit (18/08) ----------------
   Le zoom d'image existait déjà ; la carte, elle, ne bougeait pas. L'élévation
   dit « ceci s'ouvre » sur la surface la plus cliquée du site. */
.woocommerce ul.products li.product,
.wc-block-grid__product {
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
  transition: transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s cubic-bezier(.2,.7,.3,1);
}
.woocommerce ul.products li.product:hover,
.wc-block-grid__product:hover {
  transform: translateY(-4px);
  box-shadow: 0 1px 2px rgba(0,0,0,.05), 0 10px 30px rgba(0,0,0,.09);
}

/* ---------------- Retour au clic sur les boutons d'achat ----------------
   Un CTA muet laisse croire que rien ne s'est passé : première cause de
   double-clic, donc de double commande. */
.single_add_to_cart_button:active,
.ecb-drawer-cta:active,
.woocommerce a.button:active,
.woocommerce button.button:active { transform: translateY(1px) scale(.995); }

/* ---------------- Focus clavier, partout ----------------
   Il n'était posé que sur le bouton de repli. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--ecb-cta);
  outline-offset: 2px;
  border-radius: 3px;
}

/* ---------------- Cartes en blocs WooCommerce (18/08) ----------------
   Mesuré : les 8 accueils sont bâtis en blocs Woo (`wc-block-grid__product`),
   AUCUNE en balisage classique — remontoir en compte 1 714, rose-eternelle 544.
   Or 7 DA sur 8 ne stylaient que `li.product` : la page la plus vue de chaque
   boutique tombait sur les défauts du thème.
   Ces règles ne portent que des tokens : chaque boutique les rend dans SES
   couleurs, et sa surcouche (chargée après) reste prioritaire. */
.wc-block-grid__product {
  background: var(--ecb-surface);
  border: 1px solid var(--ecb-line);
  border-radius: var(--ecb-radius, 8px);
  /* ⚠️ Marge volontairement serrée. Mesuré : l'accueil de remontoir porte ~285
     cartes en blocs ; un padding de 14/20 y ajoutait ~3 400 px de hauteur sur
     une page déjà à 34 600 px. Sur une grille longue, chaque pixel est multiplié
     par le nombre de rangées. */
  padding: 9px 9px 12px;
  text-align: center;
  display: flex; flex-direction: column;
  transition: transform .18s cubic-bezier(.2,.7,.3,1),
              box-shadow .18s cubic-bezier(.2,.7,.3,1),
              border-color .18s ease;
}
.wc-block-grid__product:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(0,0,0,.09);
  border-color: color-mix(in srgb, var(--ecb-accent) 45%, var(--ecb-line));
}
.wc-block-grid__product-title {
  font-family: var(--ecb-body);
  font-size: 14.5px; font-weight: 600; line-height: 1.4;
  color: var(--ecb-ink);
}
.wc-block-grid__product-price {
  font-family: var(--ecb-display);
  font-size: 19px; color: var(--ecb-ink);
  margin-top: auto; padding-top: 8px;
}
.wc-block-grid__product-price ins { text-decoration: none; color: var(--ecb-cta); }
.wc-block-grid__product-price del { color: var(--ecb-ink-soft); font-size: 14px; }
.wc-block-grid__product-add-to-cart .wp-block-button__link {
  font-family: var(--ecb-body); font-weight: 700;
  letter-spacing: .04em; font-size: 13.5px;
}
.wc-block-grid__product-image img { transition: transform .35s ease; }
.wc-block-grid__product:hover .wc-block-grid__product-image img { transform: scale(1.035); }
.wc-block-grid__product-onsale {
  background: var(--ecb-cta); color: #fff;
  font-family: var(--ecb-body); font-weight: 700; font-size: 12px;
}

/* ---------------- Encart d'aide au choix, en tête de catégorie (18/08) ----------------
   Fin par construction : deux lignes au plus. Le CHIFFRE porte le gras — c'est lui que
   l'œil cherche quand on compare. Le texte rédigé, lui, est passé sous les produits. */
.ecb-cat-aide {
  margin: 10px 0 0; padding: 10px 14px;
  border: 1px solid var(--ecb-line);
  border-left: 3px solid var(--ecb-accent);
  border-radius: var(--ecb-radius, 6px);
  background: var(--ecb-surface);
  font-family: var(--ecb-body); font-size: 14px; line-height: 1.55;
}
.ecb-cat-faits { margin: 0; color: var(--ecb-ink-soft); }
.ecb-cat-faits b { color: var(--ecb-ink); font-weight: 700; }
.ecb-cat-faits .sep { margin: 0 8px; opacity: .45; }
.ecb-cat-affiner { margin: 6px 0 0; color: var(--ecb-ink-soft); font-size: 13.5px; }
.ecb-cat-affiner > span { font-weight: 600; color: var(--ecb-ink); margin-right: 4px; }
.ecb-cat-affiner a {
  color: var(--ecb-ink); text-decoration: underline;
  text-underline-offset: 2px; text-decoration-thickness: 1px;
  margin-right: 12px; white-space: nowrap;
}
.ecb-cat-affiner a:hover { color: var(--ecb-cta); }
.ecb-cat-affiner i { font-style: normal; opacity: .55; font-size: 12.5px; }

/* ---------------- Texte rédigé de la catégorie, SOUS les produits ---------------- */
.ecb-cat-texte {
  margin: 34px 0 0; padding-top: 22px;
  border-top: 1px solid var(--ecb-line);
  font-family: var(--ecb-body);
}
.ecb-cat-texte h2 {
  font-family: var(--ecb-display); font-size: 20px;
  margin: 0 0 10px; color: var(--ecb-ink);
}
.ecb-cat-texte div { color: var(--ecb-ink-soft); font-size: 15px; line-height: 1.7; max-width: 74ch; }
.ecb-cat-texte a { color: var(--ecb-cta); }
@media (max-width: 560px) { .ecb-cat-aide { font-size: 13.5px; } }



/* Moyens de paiement sous le bouton d'achat */
.ecb-paiement-cta {
  display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
  margin: 12px 0 0; font-size: 12.5px; color: var(--ecb-ink-soft);
  font-family: var(--ecb-body);
}
.ecb-paiement-cta > svg { width: 15px; height: 15px; flex: none; opacity: .7; }
.ecb-paiement-marques { display: inline-flex; align-items: center; gap: 5px; }
.ecb-paiement-marques svg {
  width: 34px; height: 22px; display: block; flex: none;
  box-shadow: 0 0 0 1px rgba(0,0,0,.09); border-radius: 4px;
}
.ecb-paiement-txt { letter-spacing: .01em; }
@media (max-width: 420px) { .ecb-paiement-marques svg { width: 30px; height: 19px; } }

/* Prix ramené à l'unité, sous le prix principal */
.ecb-prix-unite {
  display: flex; align-items: center; gap: 6px;
  margin: 2px 0 10px; font-size: 14px; color: var(--ecb-ink-soft);
  font-family: var(--ecb-body);
}
.ecb-prix-unite b { color: var(--ecb-ink); font-weight: 700; }
.ecb-prix-unite svg { width: 15px; height: 15px; flex: none; opacity: .7; color: var(--ecb-ok); }
