/* Compléments non exprimables dans theme.json. */

/* Zones à compléter par la cliente — visibles, jamais silencieuses. */
mark.aft-todo{
  background:#fff2d6;color:#8a6a20;padding:0 5px;border-radius:3px;
  font-size:.86em;white-space:normal;overflow-wrap:anywhere;
}

/* Emplacements d'images en attente. */
.aft-placeholder{
  background:repeating-linear-gradient(135deg,#eee4d6 0 12px,#e8ddce 12px 24px);
  border:1px dashed #cbbba2;border-radius:4px;
  display:flex;align-items:center;justify-content:center;
  color:#a2917a;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  text-align:center;padding:24px;min-height:180px;
}

/* Surtitre. */
.aft-eyebrow{
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--wp--preset--color--bois);font-weight:600;
}

/* Bouton secondaire : contour. */
.wp-block-button.is-style-contour .wp-block-button__link{
  background:transparent;color:var(--wp--preset--color--encre);
  border:1px solid var(--wp--preset--color--encre);
}
.wp-block-button.is-style-contour .wp-block-button__link:hover{
  background:var(--wp--preset--color--encre);color:var(--wp--preset--color--creme);
}

/* En-tête collant. */
.aft-header{
  position:sticky;top:0;z-index:60;
  background:rgba(251,247,241,.94);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--wp--preset--color--ligne);
}
.aft-header .wp-block-navigation__container{gap:clamp(10px,1.5vw,22px)}
.aft-header .wp-block-navigation-item__content{
  padding:6px 0;border-bottom:1.5px solid transparent;
}
.aft-header .wp-block-navigation-item__content:hover,
.aft-header .current-menu-item .wp-block-navigation-item__content{
  color:var(--wp--preset--color--encre);border-color:var(--wp--preset--color--bois);
}

/* Cartes. */
.aft-carte{
  background:var(--wp--preset--color--blanc);
  border:1px solid var(--wp--preset--color--ligne);
  border-radius:12px;overflow:hidden;transition:.15s;
}
.aft-carte:hover{border-color:var(--wp--preset--color--bois);transform:translateY(-2px)}

/* Bandeau de réassurance. */
.aft-reassurance{
  border-top:1px solid var(--wp--preset--color--ligne);
  border-bottom:1px solid var(--wp--preset--color--ligne);
}
.aft-reassurance .wp-block-column{
  padding:18px 12px;text-align:center;
  border-right:1px solid var(--wp--preset--color--ligne);
}
.aft-reassurance .wp-block-column:last-child{border-right:0}
.aft-reassurance p{margin:0}
.aft-reassurance strong{display:block;font-size:14px}
.aft-reassurance em{font-style:normal;font-size:12px;color:var(--wp--preset--color--encre-3)}

/* Étapes numérotées. */
.aft-etape{border-top:2px solid var(--wp--preset--color--bois);padding-top:18px}
.aft-etape .aft-num{
  font-family:var(--wp--preset--font-family--serif);
  font-size:32px;line-height:1;color:var(--wp--preset--color--bois);
}

/* FAQ. */
.aft-faq .wp-block-details{
  border-bottom:1px solid var(--wp--preset--color--ligne);padding:0;
}
.aft-faq .wp-block-details summary{
  cursor:pointer;padding:18px 0;font-size:17px;
  font-family:var(--wp--preset--font-family--serif);
}
.aft-faq .wp-block-details p{margin:0 0 18px;color:var(--wp--preset--color--encre-2)}

/* Sections sombres. */
.aft-sombre{background:var(--wp--preset--color--encre);color:var(--wp--preset--color--creme)}
.aft-sombre :where(h1,h2,h3,h4){color:var(--wp--preset--color--creme)}
.aft-sombre p,.aft-sombre li{color:#cbbdae}
.aft-sombre .wp-block-button__link{background:var(--wp--preset--color--bois-clair);color:var(--wp--preset--color--encre)}
.aft-sombre .aft-placeholder{
  background:repeating-linear-gradient(135deg,#3a2f24 0 12px,#342a20 12px 24px);
  border-color:#4a3c2e;color:#7d6d5c;
}

/* Pied de page. */
.aft-footer{background:var(--wp--preset--color--encre);color:#b6a897}
.aft-footer :where(h4,.wp-block-heading){color:var(--wp--preset--color--creme)}
.aft-footer a{color:#b6a897;text-decoration:none}
.aft-footer a:hover{color:var(--wp--preset--color--creme)}
.aft-footer p,.aft-footer li{color:#b6a897;font-size:14px}

/* Le configurateur occupe toute la largeur utile de la page produit. */
.aft-cfg{margin-block:var(--wp--preset--spacing--30)}

@media(max-width:781px){
  .aft-reassurance .wp-block-column{border-right:0;border-bottom:1px solid var(--wp--preset--color--ligne)}
}

/* --- Corrections d'intégration (recette du 14/08) --- */
.aft-header .wp-block-site-title,
.aft-header .wp-block-site-title a{white-space:nowrap}
.aft-header .wp-block-buttons{flex:none}
.aft-header .wp-block-button__link{white-space:nowrap}
.aft-header .wp-block-navigation{flex:1 1 auto;min-width:0}
.aft-header .wp-block-navigation__container{row-gap:4px}
@media(max-width:1240px){ .aft-header .wp-block-navigation{font-size:13px} }

/* Le configurateur a besoin de toute la largeur utile. */
.aft-cfg{width:100%}

/* Titre de page : pas de veuve sur les pages piliers. */
.wp-block-post-title{text-wrap:balance}
h1,h2{text-wrap:balance}

/* En-tête : rien ne doit passer à la ligne. */
.aft-header .wp-block-site-title{flex:none}
.aft-header .wp-block-site-title a{white-space:nowrap;display:inline-block}
.aft-header .wp-block-navigation__container{flex-wrap:nowrap}
.aft-header .wp-block-navigation-item__label{white-space:nowrap}
@media(max-width:1100px){
  .aft-header .wp-block-navigation{font-size:12.5px}
  .aft-header .wp-block-navigation__container{gap:12px}
}

/* En-tête — répartition définitive : titre à gauche, menu poussé à droite. */
.aft-header > .wp-block-group{
  display:flex;align-items:center;
  gap:clamp(16px,2.4vw,40px);
}
.aft-header .wp-block-site-title{flex:0 0 auto;margin-right:auto}
.aft-header .wp-block-navigation{flex:0 1 auto;min-width:0}
.aft-header .wp-block-buttons{flex:0 0 auto}

/* ===== En-tête, structure explicite (v0.1.3) ===== */
.aft-header{
  position:sticky;top:0;z-index:60;
  background:rgba(251,247,241,.94);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--wp--preset--color--ligne);
}
.aft-header__in{
  max-width:1240px;margin:0 auto;
  padding:0 clamp(18px,4.5vw,64px);
  height:68px;display:flex;align-items:center;
  gap:clamp(14px,2vw,32px);
}
.aft-logo{
  font-family:var(--wp--preset--font-family--serif);
  font-size:20px;color:var(--wp--preset--color--encre);
  text-decoration:none;white-space:nowrap;flex:0 0 auto;margin-right:auto;
}
.aft-nav{display:flex;gap:clamp(10px,1.5vw,22px);flex:0 1 auto;min-width:0}
.aft-nav a{
  font-size:14px;color:var(--wp--preset--color--encre-2);
  text-decoration:none;white-space:nowrap;
  padding:6px 0;border-bottom:1.5px solid transparent;
}
.aft-nav a:hover{color:var(--wp--preset--color--encre);border-color:var(--wp--preset--color--bois)}
.aft-cta{
  flex:0 0 auto;white-space:nowrap;text-decoration:none;
  background:var(--wp--preset--color--bois);color:#fff;
  font-size:14px;font-weight:600;padding:10px 19px;border-radius:999px;
}
.aft-cta:hover{background:#9c6231;color:#fff}
@media(max-width:1080px){ .aft-nav{display:none} }

/* Grilles de cartes : largeur « large », technique full-bleed. */
.aft-grille-familles,.aft-grille-avis{
  display:grid;
  gap:clamp(16px,2vw,26px);
  margin-top:clamp(24px,3vw,38px);
  position:relative;
  left:50%;
  transform:translateX(-50%);
  width:min(1240px, calc(100vw - 40px));
  max-width:min(1240px, calc(100vw - 40px)); /* neutralise le max-width de la mise en page WordPress */
}
.aft-grille-familles{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.aft-grille-avis{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}

/* ---------------------------------------------------------------
   Photos produits.
   Le bloc « galerie » de WordPress répartit les images en flex,
   proportionnellement à leur ratio : avec des photos de formats
   différents, les lignes deviennent irrégulières. On repasse en
   grille et on recadre en 4/3, ce qui donne un pavage régulier.
   ---------------------------------------------------------------- */
.wp-block-gallery.has-nested-images{
  display:grid;
  gap:clamp(10px,1.2vw,16px);
  margin-top:clamp(16px,2vw,24px);
}
.wp-block-gallery.has-nested-images.columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.wp-block-gallery.has-nested-images.columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.wp-block-gallery.has-nested-images figure.wp-block-image{
  width:100%!important;max-width:100%!important;margin:0;flex:none!important;
}
.wp-block-gallery.has-nested-images figure.wp-block-image img{
  display:block;width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;
  border-radius:12px;background:#f3ece1;
}
.wp-block-image img{border-radius:12px}
.wp-block-image{margin-top:clamp(16px,2vw,24px)}

@media(max-width:820px){
  .wp-block-gallery.has-nested-images.columns-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:520px){
  .wp-block-gallery.has-nested-images.columns-3,
  .wp-block-gallery.has-nested-images.columns-2{grid-template-columns:1fr}
}

/* Vignettes des cartes « familles » : recadrage régulier, coins raccord avec la carte. */
.aft-carte .aft-vignette{border-bottom:1px solid #e6dbcb;border-radius:13px 13px 0 0}

/* ---------------------------------------------------------------
   Fiche produit WooCommerce intégrée dans une page.
   Même vocabulaire visuel que le configurateur : carte blanche,
   filet crème, prix en gros, un seul bouton d'action orange.
   ---------------------------------------------------------------- */
.entry-content div.product{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr);
  gap:clamp(18px,2.4vw,34px);align-items:start;
  margin:clamp(20px,3vw,34px) 0;padding:clamp(16px,2vw,24px);
  background:#fff;border:1px solid #e6dbcb;border-radius:14px;
}
.entry-content div.product::before,.entry-content div.product::after{content:none}
.entry-content div.product .woocommerce-product-gallery{width:100%!important;float:none;margin:0;min-width:0}
.entry-content div.product .woocommerce-product-gallery__trigger{display:none}
.entry-content div.product .woocommerce-product-gallery__wrapper{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0;transform:none!important;width:auto!important;
}
.entry-content div.product .woocommerce-product-gallery__image{width:auto!important;margin:0}
.entry-content div.product .woocommerce-product-gallery__image:first-child{grid-column:1/-1}
.entry-content div.product .woocommerce-product-gallery__image img{
  display:block;width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:11px;background:#f3ece1;
}
.entry-content div.product .summary{width:100%!important;float:none;margin:0;min-width:0}
.entry-content div.product .product_title{margin:0 0 8px;font-size:clamp(21px,2.1vw,27px);line-height:1.2}
.entry-content div.product p.price{margin:0 0 14px;font-size:20px;font-weight:600;color:#241c14;font-variant-numeric:tabular-nums}
.entry-content div.product .woocommerce-product-details__short-description p{font-size:15px;color:#5f5145;margin:0 0 16px}
.entry-content div.product table.variations{width:100%;margin:0 0 6px;border:0}
.entry-content div.product table.variations tbody,
.entry-content div.product table.variations tr{display:block;border:0}
.entry-content div.product table.variations th,
.entry-content div.product table.variations td{display:block;border:0;padding:0 0 12px;text-align:left;background:none}
.entry-content div.product table.variations th label{
  font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8b7c6d;font-weight:400;margin:0 0 6px;display:block;
}
.entry-content div.product .variations select{
  width:100%;padding:11px 12px;border:1px solid #e6dbcb;border-radius:8px;background:#fbf7f1;
  font:inherit;font-size:15px;color:#241c14;
}
.entry-content div.product .reset_variations{font-size:12.5px;color:#8b7c6d}
.entry-content div.product .single_variation .price{font-size:29px;font-weight:600;letter-spacing:-.02em}
.entry-content div.product .woocommerce-variation-add-to-cart{display:flex;gap:10px;align-items:stretch;margin-top:14px}
.entry-content div.product .quantity input{
  width:74px;padding:13px 10px;border:1px solid #e6dbcb;border-radius:9px;font:inherit;text-align:center;background:#fbf7f1;
}
.entry-content div.product .single_add_to_cart_button{
  flex:1;padding:14px;background:var(--wp--preset--color--bois,#b0723d);border:0;border-radius:9px;
  color:#fff;font:inherit;font-weight:600;font-size:15.5px;cursor:pointer;
}
.entry-content div.product .single_add_to_cart_button:hover{background:#9c6231}
.entry-content div.product .single_add_to_cart_button.disabled{opacity:.45;cursor:not-allowed}
.entry-content div.product .stock{font-size:13px;color:#5f5145}

@media(max-width:900px){
  .entry-content div.product{grid-template-columns:1fr}
}

/* ---------------------------------------------------------------
   Blocs qui doivent déborder de la colonne de texte.

   La colonne de lecture est volontairement étroite (800 px) : c'est
   la bonne mesure pour du texte suivi. Mais le configurateur, la
   fiche produit et les galeries n'ont rien d'un paragraphe — ils
   étouffent à cette largeur. On les sort de la contrainte de mise
   en page de WordPress, qui impose un max-width aux enfants d'un
   conteneur « constrained ».
   ---------------------------------------------------------------- */
.entry-content .aft-cfg,
.entry-content div.product,
.entry-content .wp-block-gallery.has-nested-images{
  position:relative;
  left:50%;
  transform:translateX(-50%);
  width:min(1320px, calc(100vw - 48px));
  max-width:min(1320px, calc(100vw - 48px)); /* neutralise le max-width de la mise en page */
}

/* Au-delà de 1 100 px, la place gagnée va au visuel, pas au panneau de réglages. */
@media(min-width:1100px){
  .entry-content .aft-cfg{grid-template-columns:minmax(0,1fr) 420px}
  .entry-content div.product{grid-template-columns:minmax(0,1fr) 420px}
}
@media(min-width:1100px){
  .entry-content .wp-block-gallery.has-nested-images.columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* Galerie posée avant le configurateur : elle joue le rôle de visuel d'ouverture. */
.aft-galerie-ouverture{margin-bottom:clamp(6px,1vw,12px)}
.aft-legende-photos{
  font-size:13.5px;color:var(--wp--preset--color--encre-3,#8b7c6d);
  margin:0 0 clamp(20px,3vw,34px);
}

/*
 * Sous 781 px (le seuil « mobile » de WordPress), on annule le débordement :
 * la colonne fait déjà toute la largeur utile, et sortir de la mise en page
 * ne ferait que reprendre les marges latérales du site.
 */
@media(max-width:781px){
  .entry-content .aft-cfg,
  .entry-content div.product,
  .entry-content .wp-block-gallery.has-nested-images{
    position:static;left:auto;transform:none;width:auto;max-width:100%;
  }
}

/* ============================================================
   v0.3.0 — rythme vertical, bandeau d'ouverture, logo réel
   ------------------------------------------------------------
   Les gabarits ont été corrigés : <main> est désormais en flux
   simple, donc « large » (1320) et « pleine largeur » agissent
   nativement. Les sections ne portent plus de marge en ligne :
   tout le rythme vertical tient dans .aft-section.
   ============================================================ */

/* --- 1. Rythme des sections ------------------------------- */
.aft-section{ padding-block: clamp(54px, 6.4vw, 100px); }
.aft-section + .aft-section{ padding-top: 0; }
.aft-section.has-background + .aft-section,
.aft-section + .aft-section.has-background,
.aft-section + .aft-sombre,
.aft-sombre + .aft-section{ padding-top: clamp(54px, 6.4vw, 100px); }

.aft-section > .aft-eyebrow{ margin: 0 0 10px; }
.aft-section > h2,
.aft-section .wp-block-column > h2{
  margin: 0 0 14px;
  font-size: clamp(27px, 3.1vw, 41px);
  line-height: 1.12;
  letter-spacing: -.015em;
}
.aft-section .aft-intro{ margin: 0; max-width: 64ch; }
.aft-section__corps{ margin-top: clamp(28px, 3.4vw, 48px) !important; }
.aft-section__corps-apres{ margin-bottom: clamp(24px, 3vw, 40px) !important; }
.aft-page-tete{ padding-top: clamp(30px, 3.6vw, 52px); padding-bottom: clamp(20px, 2.4vw, 32px); }

/* --- 2. En-tête : fond blanc, logo réel ------------------- */
.aft-header{
  position: sticky; top: 0; z-index: 60;
  background: rgba(255,255,255,.95); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--wp--preset--color--ligne);
}
.aft-header__in{
  max-width: 1320px; margin: 0 auto;
  padding: 0 clamp(18px, 3.4vw, 40px);
  height: 74px; display: flex; align-items: center;
  gap: clamp(14px, 2vw, 34px);
}
.aft-logo{ flex: 0 0 auto; margin-right: auto; display: block; line-height: 0; }
.aft-logo img{ display: block; height: 34px; width: auto; }
.aft-nav{ display: flex; gap: clamp(10px, 1.4vw, 21px); flex: 0 1 auto; min-width: 0; }
.aft-nav a{
  font-size: 14px; color: var(--wp--preset--color--encre-2);
  text-decoration: none; white-space: nowrap;
  padding: 5px 0; border-bottom: 1.5px solid transparent;
}
.aft-nav a:hover{ color: var(--wp--preset--color--encre); border-color: var(--wp--preset--color--bois); }
.aft-cta{
  flex: 0 0 auto; white-space: nowrap; text-decoration: none;
  background: var(--wp--preset--color--bois); color: #fff;
  font-size: 14px; font-weight: 600; padding: 10px 19px; border-radius: 999px;
}
.aft-cta:hover{ background: #9c6231; color: #fff; }

/* Menu mobile, sans une ligne de JavaScript. */
.aft-burger{ display: none; position: relative; flex: 0 0 auto; }
.aft-burger > summary{
  list-style: none; cursor: pointer; width: 34px; height: 34px;
  display: flex; flex-direction: column; justify-content: center; gap: 5px;
}
.aft-burger > summary::-webkit-details-marker{ display: none; }
.aft-burger > summary span{ display: block; height: 1.5px; background: var(--wp--preset--color--encre); border-radius: 2px; }
.aft-burger[open] > summary span:nth-child(1){ transform: translateY(6.5px) rotate(45deg); }
.aft-burger[open] > summary span:nth-child(2){ opacity: 0; }
.aft-burger[open] > summary span:nth-child(3){ transform: translateY(-6.5px) rotate(-45deg); }
.aft-burger__menu{
  position: absolute; right: 0; top: calc(100% + 12px);
  background: #fff; border: 1px solid var(--wp--preset--color--ligne);
  border-radius: 12px; box-shadow: 0 18px 44px rgba(36,28,20,.13);
  padding: 8px; min-width: 234px; display: flex; flex-direction: column;
}
.aft-burger__menu a{
  padding: 11px 13px; font-size: 15px; text-decoration: none;
  color: var(--wp--preset--color--encre); border-radius: 8px;
}
.aft-burger__menu a:hover{ background: var(--wp--preset--color--creme-2); }
@media (max-width: 1120px){
  .aft-nav{ display: none; }
  .aft-burger{ display: block; }
}
@media (max-width: 560px){
  .aft-header__in{ height: 64px; }
  .aft-logo img{ height: 28px; }
  .aft-cta{ display: none; }
}

/* --- 3. Bandeau d'ouverture ------------------------------- */
.aft-hero{ background: var(--wp--preset--color--creme-2); border-bottom: 1px solid var(--wp--preset--color--ligne); }
.aft-hero__in{
  max-width: 1320px; margin: 0 auto;
  padding: clamp(40px, 5vw, 76px) clamp(18px, 3.4vw, 40px);
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.02fr);
  gap: clamp(28px, 4.4vw, 68px); align-items: center;
}
.aft-hero__t{
  margin: 12px 0 0;
  font-size: clamp(33px, 4.3vw, 58px); line-height: 1.05;
  letter-spacing: -.022em; text-wrap: balance;
}
.aft-hero__t em{ font-style: italic; color: var(--wp--preset--color--bois); }
.aft-hero__sub{
  margin: 18px 0 0; max-width: 46ch;
  font-size: clamp(16px, 1.25vw, 18px); line-height: 1.55;
  color: var(--wp--preset--color--encre-2);
}
.aft-hero__cta{ display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.aft-btn{
  display: inline-block; text-decoration: none; white-space: nowrap;
  background: var(--wp--preset--color--bois); color: #fff;
  font-size: 15.5px; font-weight: 600; padding: 14px 26px; border-radius: 999px;
  transition: .15s;
}
.aft-btn:hover{ background: #9c6231; color: #fff; }
.aft-btn--ghost{
  background: transparent; color: var(--wp--preset--color--encre);
  border: 1px solid var(--wp--preset--color--encre);
}
.aft-btn--ghost:hover{ background: var(--wp--preset--color--encre); color: var(--wp--preset--color--creme); }
.aft-hero__pts{
  list-style: none; margin: 26px 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 8px 22px;
  font-size: 13.5px; color: var(--wp--preset--color--encre-3);
}
.aft-hero__pts li{ position: relative; padding-left: 17px; }
.aft-hero__pts li::before{
  content: ""; position: absolute; left: 0; top: .52em;
  width: 6px; height: 6px; border-radius: 50%; background: var(--wp--preset--color--bois);
}
.aft-hero__img img,
.aft-hero__img .aft-placeholder{
  width: 100%; border-radius: 16px; display: block;
  aspect-ratio: 5/4; object-fit: cover;
  box-shadow: 0 24px 60px rgba(36,28,20,.14);
}
@media (max-width: 860px){
  .aft-hero__in{ grid-template-columns: 1fr; gap: 28px; }
  .aft-hero__img{ order: -1; }
  .aft-hero__img img,
  .aft-hero__img .aft-placeholder{ aspect-ratio: 16/10; }
}

/* --- 4. Bandeau de réassurance ---------------------------- */
.aft-reassurance{ border-top: 0; }
.aft-reassurance .wp-block-column{ padding: 20px 14px; }

/* --- 5. Cartes « familles » ------------------------------- */
.aft-grille-familles,
.aft-grille-avis{
  display: grid; gap: clamp(16px, 1.8vw, 26px);
  position: static; left: auto; transform: none;
  width: auto; max-width: none;
}
.aft-grille-familles{ grid-template-columns: repeat(auto-fit, minmax(276px, 1fr)); }
.aft-grille-avis{ grid-template-columns: repeat(auto-fit, minmax(258px, 1fr)); }
.aft-carte{ display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.aft-carte__corps{ padding: 17px 20px 20px; display: flex; flex-direction: column; flex: 1; }
.aft-badge{
  align-self: flex-start; font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--wp--preset--color--bois); background: var(--wp--preset--color--creme-2);
  border-radius: 999px; padding: 4px 10px; margin-bottom: 11px;
}
.aft-carte__corps h3{ margin: 0; font-size: 19.5px; line-height: 1.2; }
.aft-carte__d{ margin: 6px 0 0; font-size: 13.5px; color: var(--wp--preset--color--encre-3); }
.aft-carte__p{
  margin: 14px 0 0; padding-top: 13px; border-top: 1px solid var(--wp--preset--color--ligne);
  font-size: 14.5px; font-weight: 600; color: var(--wp--preset--color--bois);
  display: flex; justify-content: space-between; align-items: center;
}
.aft-carte__p span{ transition: transform .15s; }
.aft-carte:hover .aft-carte__p span{ transform: translateX(4px); }

/* --- 6. Avis ---------------------------------------------- */
.aft-avis{ padding: 23px; }
.aft-etoiles{ color: var(--wp--preset--color--bois); letter-spacing: .16em; font-size: 13px; margin: 0; }
.aft-avis__t{ font-family: var(--wp--preset--font-family--serif); font-size: 17px; line-height: 1.45; margin: 11px 0 14px; }
.aft-avis__a{ font-size: 12.5px; color: var(--wp--preset--color--encre-3); margin: 0; }

/* --- 7. Section matière ----------------------------------- */
.aft-matiere__img img,
.aft-matiere__img .aft-placeholder{
  width: 100%; border-radius: 16px; display: block; aspect-ratio: 1/1; object-fit: cover;
}
.aft-sombre .wp-block-list li{ margin-bottom: 9px; }

/* --- 8. Étapes -------------------------------------------- */
.aft-etape{ border-top: 2px solid var(--wp--preset--color--bois); padding-top: 19px; }
.aft-etape h3{ margin: 6px 0 8px; font-size: 20px; }
.aft-etape p{ margin: 0; font-size: 15px; }

/* --- 9. Alignement des sections (consolidé) ----------------
   Les gabarits corrigés rendent « large » et « pleine largeur »
   natifs : les grilles n'ont plus besoin de l'ancien procédé
   full-bleed. Reste un piège : dans un conteneur « contraint »,
   WordPress recentre tout enfant plus étroit que la colonne. Les
   chapeaux et la liste de la FAQ sont donc enveloppés dans un
   groupe en flux (.aft-tete, .aft-faq__liste) qui, lui, occupe
   toute la colonne — leurs enfants restent calés à gauche.
   --------------------------------------------------------- */
.aft-grille-familles,
.aft-grille-avis{
  width: auto;
  max-width: 1320px;
  margin-inline: auto;
}

/* Six familles : deux rangées de trois se lisent mieux qu'une
   rangée de quatre suivie d'un reliquat de deux. */
@media (min-width: 1000px){
  .aft-grille-familles,
  .aft-grille-avis{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Chapeau de section : groupe en flux, enfants alignés à gauche. */
.aft-tete{ margin-bottom: 0; }
.aft-tete > .aft-eyebrow{ margin: 0 0 10px; }
.aft-tete > h2{ margin: 0 0 14px; font-size: clamp(27px, 3.1vw, 41px); line-height: 1.12; letter-spacing: -.015em; }
.aft-tete > .aft-intro{ margin: 0; max-width: 64ch; }

/* FAQ : la liste occupe la colonne, les questions gardent une
   largeur de lecture et démarrent au même bord gauche. */
.aft-faq__liste{ max-width: 1320px; }
.aft-faq__liste .wp-block-details{ max-width: 900px; }
.aft-faq .aft-tete > .aft-intro{ max-width: 900px; }

/* Les annotations de recette ne doivent jamais élargir la page :
   sur mobile, un « à confirmer » sur une seule ligne débordait. */
mark.aft-todo{ white-space: normal; overflow-wrap: anywhere; }

/* ============================================================
   v0.5.0 — gabarit des pages produit
   ------------------------------------------------------------
   Même grammaire que l'accueil : bandeau d'ouverture, bandeau de
   réassurance, sections à 1320, colonne de lecture à 900 pour le
   texte long. Le configurateur et la fiche produit intégrée n'ont
   plus besoin de sortir de la mise en page : ils vivent désormais
   dans une section « pleine largeur », comme le reste.
   ============================================================ */

/* Prix d'appel dans le bandeau d'ouverture. */
.aft-hero__prix{
  margin: 14px 0 0;
  font-size: 15.5px;
  color: var(--wp--preset--color--encre-2);
}
.aft-hero__prix strong{
  font-size: 21px; font-weight: 600; color: var(--wp--preset--color--encre);
  font-variant-numeric: tabular-nums;
}

/* Le bandeau d'ouverture d'une page produit porte lui-même son fond. */
.aft-hero--produit{ padding-block: 0; }

/* Atouts en colonnes. */
.aft-atouts{
  display: grid; gap: clamp(16px, 1.8vw, 26px);
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  max-width: 1320px; margin-inline: auto;
}
.aft-atout{
  border-top: 2px solid var(--wp--preset--color--bois);
  padding-top: 18px;
}
.aft-atout h3{ margin: 0 0 8px; font-size: 19px; line-height: 1.22; }
.aft-atout p{ margin: 0; font-size: 15px; color: var(--wp--preset--color--encre-2); }

/* Colonne de lecture du texte long : même bord gauche que les sections. */
.aft-lecture > *{ max-width: 900px; margin-inline: 0; }
.aft-lecture h2{
  margin: clamp(30px, 3.4vw, 46px) 0 12px;
  font-size: clamp(22px, 2.2vw, 29px); line-height: 1.16;
}
.aft-lecture > h2:first-child{ margin-top: 0; }
.aft-lecture p, .aft-lecture li{ font-size: 16.5px; }
.aft-lecture ul{ padding-left: 20px; }
.aft-lecture li{ margin-bottom: 9px; }

/* Section du configurateur / de la fiche produit : plus de « full-bleed ». */
.aft-outil .aft-cfg,
.aft-outil div.product,
.aft-outil .wp-block-gallery.has-nested-images{
  position: static; left: auto; transform: none;
  width: auto; max-width: 1320px; margin-inline: auto;
}
.aft-galerie .wp-block-gallery.has-nested-images{
  position: static; left: auto; transform: none;
  width: auto; max-width: 1320px; margin-inline: auto;
}
.aft-legende{
  margin: clamp(14px, 1.6vw, 20px) 0 0;
  font-size: 13.5px; color: var(--wp--preset--color--encre-3);
  max-width: 900px;
}

/* Toute galerie posée dans une section suit la colonne de 1320,
   sans reprendre l'ancien débordement. */
.aft-section .wp-block-gallery.has-nested-images{
  position: static; left: auto; transform: none;
  width: auto; max-width: 1320px; margin-inline: auto;
}

/* Panier dans l'en-tête : sans ce lien, une composition ajoutée au panier
   n'était plus accessible nulle part. */
.aft-panier{
  flex: 0 0 auto; position: relative; display: flex; align-items: center;
  color: var(--wp--preset--color--encre); text-decoration: none; padding: 4px;
}
.aft-panier:hover{ color: var(--wp--preset--color--bois); }
.aft-panier__n{
  position: absolute; top: -3px; right: -6px;
  min-width: 17px; height: 17px; padding: 0 4px;
  border-radius: 999px; background: var(--wp--preset--color--bois); color: #fff;
  font-size: 11px; font-weight: 600; line-height: 17px; text-align: center;
  display: none;
}
.aft-panier__n.on{ display: block; }

/* Zone de messages WooCommerce, replacée dans la section d'achat. */
.aft-outil .woocommerce-message,
.aft-outil .woocommerce-error,
.aft-outil .woocommerce-info{
  max-width: 1320px; margin: 0 auto clamp(18px, 2vw, 26px);
  background: #fff; border: 1px solid var(--wp--preset--color--ligne);
  border-left: 3px solid var(--wp--preset--color--bois);
  border-radius: 10px; padding: 15px 18px; list-style: none;
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  font-size: 15px;
}
.aft-outil .woocommerce-message .button{
  margin-left: auto; background: var(--wp--preset--color--bois); color: #fff;
  border: 0; border-radius: 999px; padding: 9px 18px; font-size: 14px;
  font-weight: 600; text-decoration: none;
}
.aft-outil .woocommerce-message .button:hover{ background: #9c6231; color: #fff; }

/* ============================================================
   v0.7.0 — liserés parasites et barre d'USP
   ============================================================ */

/*
 * WordPress insère un « espacement de bloc » de 10,7 px entre chaque enfant de
 * premier niveau. Entre deux sections de couleurs différentes — et surtout sous
 * l'en-tête blanc — cet espace laissait voir le fond de page : une fine bande
 * horizontale, visible sur toutes les pages. Le rythme vertical étant entièrement
 * porté par .aft-section, cet espacement n'a aucune utilité ici. On ne le neutralise
 * qu'autour de nos sections, pour ne pas coller les paragraphes des pages rédigées.
 */
.wp-site-blocks > * + *,
main.wp-block-group > * + *,
.entry-content > * + .aft-section,
.entry-content > * + .aft-hero,
.entry-content > * + .aft-reassurance,
.entry-content > .aft-section + *,
.entry-content > .aft-hero + *,
.entry-content > .aft-reassurance + *{ margin-block-start: 0; }

/* Le bandeau d'ouverture n'a plus besoin de son filet : la barre sombre le clôt. */
.aft-hero{ border-bottom: 0; }

/*
 * Barre d'USP. Elle reprenait le fond du bandeau d'ouverture et s'y fondait :
 * les garanties passaient inaperçues au moment précis où elles doivent rassurer.
 */
.aft-reassurance{ border-top: 0; border-bottom: 0; }
.aft-reassurance .wp-block-column{
  border-right-color: rgba(251, 247, 241, .15);
  padding-top: 22px; padding-bottom: 22px;
}
.aft-reassurance strong{ color: var(--wp--preset--color--creme); }
.aft-reassurance em{ color: #b0a091; }
.aft-reassurance mark.aft-todo{ background: rgba(255, 242, 214, .16); color: #e6c98a; }
@media (max-width: 781px){
  .aft-reassurance .wp-block-column{ border-bottom-color: rgba(251, 247, 241, .15); }
}

/*
 * Paragraphes vides. WordPress passe le contenu des blocs « code court » dans
 * wpautop : le bandeau d'ouverture et les atouts, qui renvoient un <div>, se
 * retrouvent encadrés de <p></p>. Hauteur nulle, mais marges bien réelles —
 * d'où une bande résiduelle de 10,7 px sous chaque section à raccourci.
 */
.entry-content p:empty,
.aft-hero p:empty,
.aft-section p:empty{ display: none; }

/*
 * Barre d'USP sur mobile. Empilée en cinq lignes pleine largeur, elle occupait
 * plus de 500 px avant le premier contenu — d'autant plus pesant depuis qu'elle
 * est sombre. Deux colonnes suffisent à la lire, et divisent sa hauteur par deux.
 */
@media (max-width: 781px){
  .aft-reassurance .wp-block-columns{
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
  }
  .aft-reassurance .wp-block-column{
    flex-basis: auto !important;
    padding: 15px 10px;
    border-right: 1px solid rgba(251, 247, 241, .15);
    border-bottom: 1px solid rgba(251, 247, 241, .15);
  }
  .aft-reassurance .wp-block-column:nth-child(2n){ border-right: 0; }
  .aft-reassurance .wp-block-column:last-child{
    grid-column: 1 / -1; border-right: 0; border-bottom: 0;
  }
  .aft-reassurance .wp-block-column:nth-last-child(2){ border-bottom: 0; }
  .aft-reassurance strong{ font-size: 13.5px; }
  .aft-reassurance em{ font-size: 11.5px; }
}


/* ---------- Pages informationnelles : blocs réutilisables ---------- */
.aft-encadre{margin:34px 0;padding:22px 26px;border-left:3px solid var(--wp--preset--color--bois);background:var(--wp--preset--color--creme-2,#f7f1e8);border-radius:0 10px 10px 0}
.aft-encadre>*:first-child{margin-top:0}
.aft-encadre>*:last-child{margin-bottom:0}
.aft-encadre__titre{margin:0 0 8px;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;color:var(--wp--preset--color--bois)}
.aft-sommaire{margin:30px 0;padding:20px 24px;border:1px solid var(--wp--preset--color--ligne,#e6dbcb);border-radius:12px}
.aft-sommaire__titre{margin:0 0 10px;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;color:var(--wp--preset--color--encre-2)}
.aft-sommaire ul{margin:0;padding-left:1.1em}
.aft-sommaire li{margin:.25em 0}
.aft-chiffres{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:34px 0}
.aft-chiffre{padding:18px 20px;border:1px solid var(--wp--preset--color--ligne,#e6dbcb);border-radius:12px}
.aft-chiffre b{display:block;font-size:1.7rem;line-height:1.1;color:var(--wp--preset--color--bois)}
.aft-chiffre span{display:block;margin-top:4px;font-size:.92rem;color:var(--wp--preset--color--encre-2)}


/* ==========================================================================
   Journal (blog) et article
   ========================================================================== */
.aft-journal__liste{list-style:none;margin:clamp(24px,3vw,38px) 0 0;padding:0;display:grid;gap:clamp(16px,2vw,26px);grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:980px){.aft-journal__liste{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.aft-journal__liste{grid-template-columns:1fr}}
.aft-journal__liste>li{margin:0;display:flex}
.aft-carte--article{display:flex;flex-direction:column;width:100%}
.aft-carte--article .wp-block-post-featured-image{margin:0}
.aft-carte--article .wp-block-post-featured-image{width:100%}
.aft-carte--article .wp-block-post-featured-image img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.aft-carte--article .wp-block-post-title{margin:0;font-size:clamp(18px,1.4vw,21px);line-height:1.25}
.aft-carte--article .wp-block-post-title a{color:inherit;text-decoration:none}
.aft-carte--article .wp-block-post-title a:hover{text-decoration:underline;text-underline-offset:3px}
.aft-carte--article .aft-carte__d{margin:8px 0 0}
.aft-carte__date{margin:auto 0 0;padding-top:12px}
.aft-journal .wp-block-query-pagination{margin-top:clamp(24px,3vw,38px);justify-content:center;gap:14px}
.aft-journal .wp-block-query-pagination a{color:var(--wp--preset--color--bois);text-underline-offset:3px}
.aft-article__meta{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-top:14px;font-size:13px;color:var(--wp--preset--color--encre-3)}
.aft-article__meta p,.aft-article__meta div{margin:0}
.aft-article__img{margin-top:clamp(20px,2.5vw,32px)}
.aft-article__img img{border-radius:12px;width:100%;height:auto;display:block}
.aft-article__corps>*{margin-top:1.15em}
.aft-article__corps>h2{margin-top:1.9em}
.aft-article__corps>h3{margin-top:1.5em}
.aft-lies__liste{list-style:none;margin:clamp(20px,2.5vw,30px) 0 0;padding:0;display:grid;gap:clamp(16px,2vw,26px);grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:820px){.aft-lies__liste{grid-template-columns:1fr}}
.aft-lies__liste>li{margin:0;display:flex}
.aft-article__corps .aft-intro{max-width:none;margin-left:0;margin-right:0}
.aft-retour{margin-top:clamp(24px,3vw,36px);font-size:14px}
.aft-retour a{color:var(--wp--preset--color--bois);text-underline-offset:3px}


/* ==========================================================================
   Colonnes de lecture calées à gauche
   WordPress centre les enfants d'un groupe « constrained » avec des marges
   automatiques marquées !important : le texte se retrouvait décalé à droite
   par rapport au titre de section. On rétablit le même bord gauche que
   .aft-tete, comme sur la page d'accueil — d'où le !important ici aussi.
   ========================================================================== */
:root .aft-lecture>*{max-width:900px;margin-left:0 !important;margin-right:0 !important}
:root .aft-lecture>.aft-tete,
:root .aft-lecture>.aft-faq,
:root .aft-lecture>.aft-faq__liste,
:root .aft-lecture>.aft-chiffres,
:root .aft-lecture>.wp-block-columns{max-width:1320px}
.aft-faq .wp-block-details{max-width:900px}


/* ==========================================================================
   Logo du pied de page
   ========================================================================== */
.aft-footer__logo{margin:0 0 16px}
.aft-footer__logo img{display:block;width:220px;max-width:100%;height:auto}
@media (max-width:781px){.aft-footer__logo img{width:180px}}

/* Image à la une d'un article : même bord gauche que le texte. */
.aft-article__img{margin-top:clamp(20px,2.5vw,32px)}
:root .aft-article__img>*{max-width:900px;margin-left:0 !important;margin-right:0 !important}
.aft-article__img .wp-block-post-featured-image{margin:0}
.aft-article__img img{border-radius:12px;width:100%;height:auto;display:block}


/* ==========================================================================
   Tunnel de commande : en-tête et pied dédiés
   ========================================================================== */
.aft-tunnel__tete{background:var(--wp--preset--color--blanc);border-bottom:1px solid var(--wp--preset--color--ligne)}
.aft-tunnel__in{max-width:1320px;margin-inline:auto;padding:0 20px}
.aft-tunnel__tete .aft-tunnel__in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:82px}
.aft-tunnel__logo{display:block;line-height:0}
.aft-tunnel__logo img{width:190px;height:auto;display:block}
.aft-tunnel__sec{margin:0;font-size:13px;color:var(--wp--preset--color--encre-2);letter-spacing:.01em}
.aft-tunnel__sec span{color:var(--wp--preset--color--vert,#4a7c4e);font-size:10px;margin-right:6px;vertical-align:1px}
.aft-tunnel{padding:clamp(28px,4vw,56px) 20px clamp(40px,5vw,72px)}
.aft-tunnel__pied{background:var(--wp--preset--color--encre);color:var(--wp--preset--color--creme);margin-top:auto;padding:clamp(24px,3vw,36px) 0}
.aft-tunnel__pied .aft-tunnel__in{display:flex;flex-direction:column;gap:10px}
.aft-tunnel__rass{margin:0;font-size:13.5px;color:var(--wp--preset--color--creme)}
.aft-tunnel__rass strong{font-weight:600}
.aft-tunnel__legal{margin:0;font-size:12.5px;color:var(--wp--preset--color--creme);opacity:.72}
.aft-tunnel__pied a{color:inherit;text-underline-offset:3px}
.aft-tunnel__pied a:hover{opacity:1;text-decoration:underline}
@media (max-width:640px){.aft-tunnel__tete .aft-tunnel__in{min-height:66px}.aft-tunnel__logo img{width:150px}.aft-tunnel__sec{display:none}}

/* Panier : un peu d'air sous l'en-tête, comme sur le reste du site. */
.wp-block-woocommerce-cart{padding-bottom:clamp(30px,4vw,60px)}
main > .wp-block-post-title{margin-top:clamp(28px,4vw,56px)}

/* Tunnel de commande : adaptation mobile. */
@media (max-width:640px){
.aft-tunnel__tete .aft-tunnel__in{flex-wrap:wrap;gap:4px 16px;min-height:0;padding-top:14px;padding-bottom:14px}
.aft-tunnel__logo img{width:150px}
.aft-tunnel__sec{font-size:12px}
}
