/*
 * Identité visuelle Landes Cuisines & Bains, DA Showroom (maquette da2-showroom.html du 16/09/2026).
 * Ne porte que ce que les attributs de blocs ne savent pas faire : pseudo-éléments, états,
 * masques d'image, grilles particulières, positionnements, responsive fin, gabarits PHP.
 * Les couleurs, tailles et paddings du contenu sont posés en attributs par le convertisseur.
 * Jetons : --mx-* (style.css) et --lcb-* (header.css).
 */

/* ================================================================ généralités */
body { -webkit-font-smoothing: antialiased; }
/* Boutons Spectra et Astra : capitales espacées, flèche animée, angles vifs (charte). */
.wp-block-spectra-button { border-radius: 0 !important; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; font-size: 14px; }
.wp-block-spectra-button svg.spectra-icon { transition: transform .25s var(--mx-ease); }
.wp-block-spectra-button:hover svg.spectra-icon { transform: translateX(4px); }
/* Variante sombre d'un bouton (sur fond jaune) : classe lcb-btn-dark posée sur le template. */
.wp-block-spectra-button.lcb-btn-dark { background: var(--mx-appoint) !important; color: #fff !important; }
.wp-block-spectra-button.lcb-btn-dark:hover { background: var(--mx-titre) !important; color: #fff !important; }
/* Bouton contour sur fond sombre : survol jaune plein. */
.mx-sombre a.wp-block-spectra-button.has-background:hover { background: var(--mx-accent) !important; border-color: var(--mx-accent) !important; color: var(--mx-titre) !important; }

/* Dans une section constrained, Spectra centre tout enfant plus étroit que 1200 px (marges auto) :
   la DA Showroom aligne tout à gauche du contenu. */
/* Boutons alignés à droite (data-align right) dans une colonne verticale : la colonne est en align-items flex-start,
   le groupe de boutons doit occuper toute la largeur pour que justify-content: flex-end ait un effet. */
.wp-block-spectra-container.is-vertical > .wp-block-spectra-buttons { align-self: stretch; }
/* Lignes empilées (mobile Spectra, 480 px) : le bouton reprend l'alignement à gauche du texte qui le précède. */
@media (max-width: 480px) { .wp-block-spectra-container.is-vertical > .wp-block-spectra-buttons { align-self: flex-start; } }
/* Portée : contenu de page (.entry-content) et Custom Layouts Astra (404, hooks), qui ne passent pas par .entry-content. */
:is(.entry-content, [class*="astra-advanced-hook-"]) .spectra-is-root-container > :is(.wp-block-spectra-content, .wp-block-list, .wp-block-table, .wp-block-spectra-buttons, .wp-block-image, .wp-block-shortcode) { margin-left: var(--mx-gauche) !important; margin-right: 0 !important; }
:is(.entry-content, [class*="astra-advanced-hook-"]) .spectra-is-root-container > .wp-block-spectra-content:where(p) { max-width: 70ch; }
/* Libellé au-dessus d'un titre (sur-titre du document de contenus) : capitales, filet jaune. */
.lcb-label { display: flex; align-items: center; gap: 14px; width: 100%; font-size: 12px !important; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; margin-bottom: 0; }
/* Filets décoratifs en ::after + order -1 : un ::before serait lu comme un fond (Spectra y peint les fonds, l'audit de contraste aussi). */
.lcb-label::after { content: ""; order: -1; width: 36px; height: 1px; background: var(--mx-accent); flex: none; }

/* Lien texte « Découvrir … › » : capitales, filet jaune qui s'allonge au survol. */
.lcb-link, :is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a { display: inline-flex; align-items: center; gap: 12px; font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; text-decoration: none !important; color: inherit; }
.lcb-link::after, :is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a::after { content: ""; order: -1; width: 40px; height: 1px; background: var(--mx-accent); transition: width .3s var(--mx-ease); }
.lcb-link:hover::after, :is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a:hover::after { width: 64px; }
.lcb-link:has(> a)::after { content: none; }
.lcb-link:has(> a) { display: block; }
:is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a { color: inherit; text-decoration: none !important; }
.lcb-link, :is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a { align-items: flex-start; }
.lcb-link::after, :is(.entry-content, [class*="astra-advanced-hook-"]) p.lcb-link a::after { margin-top: .55em; flex: none; }

/* Chapô : largeur de lecture. */
:is(.entry-content, [class*="astra-advanced-hook-"]) .m-lead { max-width: 56ch; }

/* Grilles à joints de 2 px : le fond du conteneur fait le joint. */
.lcb-joints { background: var(--mx-filet); }
.mx-sombre .lcb-joints, .lcb-joints--sombre { background: var(--lcb-ligne-sombre); }

/* ================================================================ 01 hero */
.lcb-hero.wp-block-spectra-container {
	min-height: min(88vh, 860px);
	justify-content: flex-end !important;
	overflow: hidden;
	border-radius: 0 !important;
}
/* L'image (::after de Spectra) fondue vers le noir à gauche et en bas, comme le dégradé
   de la maquette : masque sur le pseudo-élément, le fond noir du container fait le reste. */
.lcb-hero.wp-block-spectra-container::after {
	-webkit-mask-image: linear-gradient(100deg, rgba(0, 0, 0, .12) 0%, rgba(0, 0, 0, .45) 40%, rgba(0, 0, 0, .9) 72%, #000 100%), linear-gradient(0deg, rgba(0, 0, 0, .05) 0%, rgba(0, 0, 0, .55) 35%, #000 70%);
	mask-image: linear-gradient(100deg, rgba(0, 0, 0, .12) 0%, rgba(0, 0, 0, .45) 40%, rgba(0, 0, 0, .9) 72%, #000 100%), linear-gradient(0deg, rgba(0, 0, 0, .05) 0%, rgba(0, 0, 0, .55) 35%, #000 70%);
	-webkit-mask-composite: source-in;
	mask-composite: intersect;
	background-position: 60% 50% !important;
}
.lcb-hero h1 { max-width: 16ch; }
.lcb-hero h1 em { font-style: normal; color: var(--mx-accent); }
.lcb-hero .lcb-label { color: var(--lcb-texte-sombre); }
/* Chiffres clés : grille 3 colonnes séparées par des filets, bordure haute. */
.lcb-stats.wp-block-spectra-container { border-top: 1px solid rgba(255, 255, 255, .18); margin-top: 24px; gap: 0 !important; grid-template-columns: repeat(3, auto) !important; justify-content: start; }
.lcb-stat.wp-block-spectra-container { padding: 26px 48px 8px 0 !important; gap: 6px !important; }
.lcb-stat.wp-block-spectra-container + .lcb-stat.wp-block-spectra-container { padding-left: 48px !important; border-left: 1px solid rgba(255, 255, 255, .18); }
.lcb-stat-n { font-weight: 700; letter-spacing: -0.04em; line-height: 1 !important; }
.lcb-stat-n small { font-size: .5em; color: var(--mx-accent); margin-left: 4px; }
.lcb-stat-l { font-size: 13px !important; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; }
@media (max-width: 782px) {
	.lcb-hero.wp-block-spectra-container { min-height: 0; }
	.lcb-hero.wp-block-spectra-container::after { -webkit-mask-image: linear-gradient(0deg, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, .5) 40%, #000 80%); mask-image: linear-gradient(0deg, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, .5) 40%, #000 80%); }
	.lcb-stats.wp-block-spectra-container { grid-template-columns: 1fr 1fr !important; }
	.lcb-stat.wp-block-spectra-container { padding: 20px 20px 4px 0 !important; }
	.lcb-stat.wp-block-spectra-container + .lcb-stat.wp-block-spectra-container { padding-left: 20px !important; }
	.lcb-stat.wp-block-spectra-container:nth-child(3) { grid-column: span 2; border-left: 0; padding-left: 0 !important; border-top: 1px solid rgba(255, 255, 255, .18); }
}

/* ================================================================ 02 engagements */
.lcb-engagements.wp-block-spectra-container { border-bottom: 1px solid var(--mx-filet); gap: 0 !important; }
.lcb-engagement.wp-block-spectra-container { padding: 40px 28px 40px 0 !important; border-top: 1px solid var(--mx-filet); gap: 14px !important; box-shadow: none !important; }
.lcb-engagement.wp-block-spectra-container + .lcb-engagement.wp-block-spectra-container { padding-left: 28px !important; border-left: 1px solid var(--mx-filet); }
.lcb-engagement-t { font-weight: 700; letter-spacing: -0.02em; line-height: 1.25 !important; }
@media (max-width: 1100px) and (min-width: 783px) {
	.lcb-engagement.wp-block-spectra-container:nth-child(4) { border-left: 0; padding-left: 0 !important; }
}
@media (max-width: 782px) {
	.lcb-engagement.wp-block-spectra-container { padding: 24px 0 24px !important; border-left: 0 !important; }
	.lcb-engagement.wp-block-spectra-container + .lcb-engagement.wp-block-spectra-container { padding-left: 0 !important; }
}

/* ================================================================ 03 savoir-faire : tuiles plein image */
.lcb-tiles.wp-block-spectra-container { gap: 2px !important; }
.lcb-tile.wp-block-spectra-container {
	position: relative; aspect-ratio: 3 / 4; overflow: hidden; justify-content: flex-end !important;
	padding: 36px !important; gap: 10px !important; box-shadow: none !important; color: #fff;
}
/* Image (::after de Spectra) : fondue vers le noir en bas, zoom lent au survol. */
.lcb-tile.wp-block-spectra-container::after {
	-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, .06) 0%, rgba(0, 0, 0, .7) 45%, #000 100%);
	mask-image: linear-gradient(to top, rgba(0, 0, 0, .06) 0%, rgba(0, 0, 0, .7) 45%, #000 100%);
	transition: transform 1.4s var(--mx-ease), opacity .9s ease;
	opacity: .78;
}
.lcb-tile.wp-block-spectra-container:hover::after { transform: scale(1.04); opacity: .9; }
.lcb-tile h3 { letter-spacing: -0.03em; }
/* Texte révélé en douceur : hauteur et opacité sur un temps long, léger glissement. */
.lcb-tile .lcb-tile-p { max-width: 36ch; max-height: 0; opacity: 0; overflow: hidden; transform: translateY(6px); transition: max-height 1s var(--mx-ease), opacity .8s ease .1s, transform .8s var(--mx-ease), margin 1s var(--mx-ease); margin: 0 !important; }
.lcb-tile:hover .lcb-tile-p, .lcb-tile:focus-visible .lcb-tile-p { max-height: 240px; opacity: 1; transform: none; margin-bottom: 8px !important; }
.lcb-tile .lcb-link { margin-top: 6px; }
@media (max-width: 1100px) {
	.lcb-tile .lcb-tile-p { max-height: none; opacity: 1; }
	.lcb-tile.wp-block-spectra-container::after { opacity: .6; }
}
@media (max-width: 782px) {
	.lcb-tiles.wp-block-spectra-container .lcb-tile:first-child { grid-column: span 2; aspect-ratio: 16 / 9; }
	.lcb-tile.wp-block-spectra-container { padding: 24px !important; }
}
@media (max-width: 480px) {
	.lcb-tiles.wp-block-spectra-container .lcb-tile:first-child { grid-column: span 1; aspect-ratio: 3 / 4; }
}

/* ================================================================ 04 depuis 1986 */
.lcb-year { font-weight: 800; letter-spacing: -0.06em; line-height: .85 !important; color: transparent !important; -webkit-text-stroke: 2px #C9CCD0; user-select: none; margin-bottom: 8px !important; }
.lcb-year .lcb-year-accent { color: var(--mx-accent); -webkit-text-stroke: 0; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-list { list-style: none; padding: 0; margin: 8px 0 0; display: grid; gap: 12px; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-list li { position: relative; padding-left: 22px; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-list li::after { content: ""; position: absolute; left: 0; top: .6em; width: 8px; height: 8px; background: var(--mx-accent); }
.lcb-about-fig.wp-block-spectra-container { position: relative; padding: 0 !important; gap: 0 !important; box-shadow: none !important; }
.lcb-about-fig .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; }
.lcb-encart.wp-block-spectra-container { position: absolute; left: 0; bottom: 0; max-width: 320px; padding: 24px 28px !important; box-shadow: none !important; }
.lcb-encart p { font-weight: 700; line-height: 1.35 !important; letter-spacing: -0.01em; }
.lcb-encart-t { font-size: 12px !important; letter-spacing: .14em; text-transform: uppercase; font-weight: 600 !important; color: #6D4D00 !important; margin-bottom: 4px !important; }
/* Mobile : l'encart passe sous la photo. Position relative et non static : Spectra peint le fond jaune dans un
   ::before en absolu, qui couvrait sinon toute la figure (photo comprise) jusqu'au 13/10/2026. */
@media (max-width: 782px) { .lcb-encart.wp-block-spectra-container { position: relative; max-width: none; } }

/* ================================================================ 05 réalisations : grille DA3 (masonry) et vignettes */
.lcb-grille { display: grid; gap: 20px; }
.lcb-grille--grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lcb-grille--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* Masonry DA3 : première rangée 440 px (grande vignette sur deux colonnes), rangées suivantes 300 px.
   data-n (posé par le shortcode) recompose la grille quand un filtre renvoie moins de 5 fiches. */
.lcb-grille--masonry { --lcb-masonry-gap: 20px; gap: var(--lcb-masonry-gap); grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: 440px; grid-auto-rows: 300px; }
.lcb-grille--masonry .lcb-vig--large { grid-column: span 2; }
.lcb-grille--masonry[data-n="4"] > .lcb-vig:last-child { grid-column: span 2; }
.lcb-grille--masonry[data-n="3"] { grid-template-rows: 300px 300px; }
.lcb-grille--masonry[data-n="3"] .lcb-vig--large { grid-row: span 2; }
.lcb-grille--masonry[data-n="1"] .lcb-vig--large { grid-column: 1 / -1; }
.lcb-vig { display: block; position: relative; overflow: hidden; background: var(--lcb-graphite); color: inherit; text-decoration: none; min-width: 0; }
.lcb-vig__fig { margin: 0; height: 100%; }
.lcb-grille--masonry .lcb-vig__fig { position: absolute; inset: 0; }
.lcb-vig img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s var(--mx-ease); }
.lcb-grille--grid .lcb-vig img, .lcb-grille--2 .lcb-vig img { aspect-ratio: 4 / 3; }
.lcb-vig:hover img { transform: scale(1.04); }
/* Légende (13/10/2026) : titre blanc sur dégradé sombre en bas de photo, type en petites capitales jaunes sous le
   titre (filet comme les liens des tuiles), flèche à droite. Remplace le cartouche blanc + étiquette jaune.
   Dégradé à 72 % d'opacité ou plus sous le texte : contraste du blanc au moins 7:1 sur une photo claire. */
.lcb-vig__cap {
	position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
	margin: 0; padding: 80px 72px 22px 24px; background: linear-gradient(to top, rgba(20, 21, 23, .92) 0%, rgba(20, 21, 23, .78) 50%, rgba(20, 21, 23, 0) 100%);
	color: #fff; font-size: 17px; font-weight: 700; line-height: 1.3; letter-spacing: -0.01em;
}
.lcb-vig__cap b { font-weight: 700; }
.lcb-vig__cap span { display: flex; align-items: center; gap: 10px; color: var(--mx-accent); font-size: 12px; font-weight: 700; line-height: 1.2; letter-spacing: .16em; text-transform: uppercase; }
.lcb-vig__cap span::after { content: ""; order: -1; flex: none; width: 24px; height: 1px; background: currentColor; } /* ::after + order : l'audit de contraste lit les ::before comme des fonds */
.lcb-vig__cap::after {
	content: ""; position: absolute; right: 24px; bottom: 22px; width: 24px; height: 24px; background: #fff;
	-webkit-mask: var(--lcb-i-fleche) center / contain no-repeat; mask: var(--lcb-i-fleche) center / contain no-repeat;
	transition: transform .5s var(--mx-ease);
}
.lcb-vig--large .lcb-vig__cap { padding: 120px 88px 30px 32px; font-size: 22px; }
.lcb-vig--large .lcb-vig__cap::after { right: 32px; bottom: 30px; width: 28px; height: 28px; }
.lcb-vig__placeholder { object-fit: contain !important; background: var(--mx-fond-2); }
.lcb-vide { color: var(--mx-texte); }
/* Filtres (accueil et page Réalisations) : puces carrées de la DA Showroom, même dessin que les choix
   du formulaire, joints de 2 px, cible tactile 44 px. Variante claire par défaut, sombre dans .mx-sombre. */
.lcb-vig[hidden] { display: none; }
.lcb-filtres { display: flex; flex-wrap: wrap; gap: 2px; margin: 0 0 28px; }
.lcb-filtres[hidden] { display: none; }
.lcb-filtres button { font: inherit; font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; line-height: 1.2; min-height: 44px; padding: 12px 22px; border: 1px solid var(--mx-filet); border-radius: 0; background: transparent; color: var(--mx-titre); cursor: pointer; transition: background .25s, color .25s, border-color .25s; }
.lcb-filtres button:hover { border-color: var(--mx-titre); }
.lcb-filtres button:focus-visible { outline: 2px solid var(--mx-accent); outline-offset: 2px; }
.lcb-filtres button[aria-pressed="true"] { background: var(--mx-titre); border-color: var(--mx-titre); color: #fff; }
.mx-sombre .lcb-filtres button { border-color: var(--lcb-ligne-sombre); color: var(--lcb-texte-sombre); }
.mx-sombre .lcb-filtres button:hover { border-color: var(--lcb-label-sombre); color: #fff; }
.mx-sombre .lcb-filtres button[aria-pressed="true"] { background: #fff; border-color: #fff; color: var(--mx-titre); }
/* Page Réalisations : puces à gauche, compteur discret à droite. */
.lcb-filtres-barre { display: flex; align-items: center; justify-content: space-between; gap: 12px 32px; flex-wrap: wrap; margin: 0 0 32px; }
.lcb-filtres-barre .lcb-filtres { margin: 0; }
.lcb-filtres-nb { margin: 0 !important; font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--mx-texte); }
.lcb-filtres-nb strong { color: var(--mx-titre); font-size: 15px; letter-spacing: 0; margin-right: 2px; }
.lcb-filtrables > .lcb-grille:not([hidden]) { animation: lcb-apparition .45s var(--mx-ease) both; }
@keyframes lcb-apparition { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .lcb-filtrables > .lcb-grille { animation: none !important; } }
@media (max-width: 600px) { .lcb-filtres button { padding: 12px 16px; letter-spacing: .08em; } .lcb-filtres-barre { margin-bottom: 24px; } }
@media (max-width: 1100px) {
	.lcb-grille--masonry { --lcb-masonry-gap: 16px; grid-template-columns: 1fr 1fr; grid-template-rows: 380px; grid-auto-rows: 260px; }
	.lcb-grille--masonry[data-n="3"] { grid-template-rows: 380px; }
	.lcb-grille--masonry[data-n="3"] .lcb-vig--large { grid-row: auto; }
	.lcb-grille--masonry[data-n="2"] > .lcb-vig:last-child { grid-column: span 2; }
}
@media (max-width: 782px) {
	.lcb-grille--grid, .lcb-grille--2 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
	.lcb-grille--grid, .lcb-grille--2 { grid-template-columns: 1fr; }
	/* Une colonne : toutes les compositions data-n reviennent à une pile de vignettes de 260 px
	   (sélecteurs plus forts que les règles data-n, sinon un span 2 recrée une colonne implicite). */
	.lcb-grille--masonry, .lcb-grille--masonry[data-n] { --lcb-masonry-gap: 12px; grid-template-columns: 1fr; grid-template-rows: none; grid-auto-rows: 260px; }
	.lcb-grille--masonry[data-n] > .lcb-vig.lcb-vig:nth-child(n) { grid-column: auto; grid-row: auto; }
	.lcb-vig__cap, .lcb-vig--large .lcb-vig__cap { padding: 64px 56px 16px 16px; font-size: 16px; }
	.lcb-vig__cap::after, .lcb-vig--large .lcb-vig__cap::after { right: 16px; bottom: 16px; width: 22px; height: 22px; }
}

/* ================================================================ 06 comparateur avant / après */
/* width 100 % : dans une colonne flex (align-items flex-start) le bloc n'a aucune largeur intrinsèque, ses images sont en absolu. */
.lcb-compare { position: relative; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; user-select: none; background: var(--mx-fond-2); }
.lcb-compare img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; margin: 0; }
.lcb-compare__after { clip-path: inset(0 0 0 var(--pos, 50%)); }
.lcb-compare__handle { position: absolute; top: 0; bottom: 0; left: var(--pos, 50%); width: 2px; background: var(--mx-accent); transform: translateX(-1px); pointer-events: none; }
.lcb-compare__handle::after {
	content: ""; position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: 56px; height: 56px; background: var(--mx-accent);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23141517' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5'/%3E%3C/svg%3E");
	background-size: 26px; background-repeat: no-repeat; background-position: center;
}
.lcb-compare__range { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: ew-resize; margin: 0; -webkit-appearance: none; appearance: none; background: none; }
.lcb-compare__lab { position: absolute; top: 18px; padding: 8px 12px; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; font-weight: 700; background: var(--mx-appoint); color: #fff; pointer-events: none; }
.lcb-compare__lab--l { left: 18px; }
.lcb-compare__lab--r { right: 18px; background: var(--mx-accent); color: var(--mx-titre); }
.lcb-compare--vide img { position: static; object-fit: contain; background: var(--mx-fond-2); aspect-ratio: 4 / 3; }
/* Page Salles de bains (13/10/2026) : comparateur à droite des deux cartes, à leur hauteur (il occupait toute la largeur
   en 1200 x 900 px). Empilé sous 783 px, il reprend son format 4/3. */
.lcb-ba-media.wp-block-spectra-container > .lcb-compare { flex: 1 1 auto; aspect-ratio: auto; min-height: 380px; }
/* Photos de l'ancien site : mention AVANT / APRÈS incrustée en bas de l'image. En 4/3 le recadrage la masque ; dans ce
   format plus haut, les images débordent de 56 px vers le bas (rognés par le cadre). Inutile avec des photos propres. */
.lcb-ba-media.wp-block-spectra-container > .lcb-compare img { height: calc(100% + 56px); }
@media (max-width: 782px) { .lcb-ba-media.wp-block-spectra-container > .lcb-compare { flex: none; aspect-ratio: 4 / 3; min-height: 0; } }

/* ================================================================ 07 déroulé : colonne collante et timeline */
/* Le collant est porté par l'attribut Spectra stickyContainer (offset 112 px, dans le parent) ; la ligne est en verticalAlignment stretch pour que la colonne ait la hauteur de la timeline. */
.lcb-sticky.wp-block-spectra-container { padding: 0 !important; box-shadow: none !important; }
.lcb-timeline.wp-block-spectra-container { border-top: 1px solid var(--lcb-ligne-sombre); gap: 0 !important; }
.lcb-step.wp-block-spectra-container { display: grid !important; grid-template-columns: 120px 1fr; gap: 28px !important; align-items: start; padding: 36px 0 !important; border-bottom: 1px solid var(--lcb-ligne-sombre); box-shadow: none !important; }
.lcb-step-n { font-weight: 800; letter-spacing: -0.05em; line-height: .9 !important; }
.lcb-step-body.wp-block-spectra-container { padding: 0 !important; gap: 10px !important; }
.lcb-step-body p { max-width: 52ch; }
@media (max-width: 782px) {
	.lcb-sticky.wp-block-spectra-container { position: static; }
	.lcb-step.wp-block-spectra-container { grid-template-columns: 72px 1fr; gap: 18px !important; padding: 28px 0 !important; }
}

/* ================================================================ 08 avis */
.lcb-score { font-weight: 800; letter-spacing: -0.06em; line-height: .9 !important; }
.lcb-score span { font-size: .22em; font-weight: 600; color: var(--mx-texte); margin-left: 6px; letter-spacing: 0; }
.lcb-stars { color: var(--mx-accent) !important; letter-spacing: 4px; line-height: 1 !important; }
.lcb-quotes.wp-block-spectra-container { gap: 2px !important; background: var(--mx-filet); }
.lcb-quote.wp-block-spectra-container { padding: 32px 36px !important; box-shadow: none !important; gap: 14px !important; }
.lcb-quote p { line-height: 1.5 !important; letter-spacing: -0.01em; }
.lcb-quote .lcb-quote-by { letter-spacing: .14em; text-transform: uppercase; font-weight: 700; }
@media (max-width: 782px) { .lcb-quote.wp-block-spectra-container { padding: 22px 20px !important; } }

/* ================================================================ 09 FAQ : voir style.css (accordéon) */

/* ================================================================ 10 formulaire et showroom */
.lcb-contact.wp-block-spectra-container { gap: 2px !important; }
/* Maquette : grille 1.15fr / .85fr à cellules étirées, les deux panneaux ont la même hauteur.
   La ligne est en stretch (attribut Spectra) ; ici le panneau remplit sa colonne. */
.lcb-contact.wp-block-spectra-container > .wp-block-spectra-container { align-items: stretch; }
.lcb-contact .lcb-panel.wp-block-spectra-container { flex: 1 1 auto; }
@media (max-width: 900px) {
	.lcb-contact.wp-block-spectra-container { flex-direction: column !important; }
	.lcb-contact.wp-block-spectra-container > .wp-block-spectra-container { width: 100% !important; }
}
/* Sélecteur de pays du champ téléphone (Forminator) : cible tactile. */
.lcb-panel-form .iti__selected-country, .lcb-panel-form .forminator-ui .iti__flag-container { min-height: 44px; }
.lcb-panel.wp-block-spectra-container { box-shadow: none !important; }
.lcb-panel-showroom .lcb-label::after { background: var(--mx-appoint); }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-infos { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; font-weight: 600; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-infos li { padding-left: 0; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ul.lcb-infos a { color: inherit; text-decoration: none; }
/* La carte absorbe la hauteur restante du panneau showroom : « Nous situer » tombe en pied, sans aplat vide. */
.lcb-panel-showroom .wp-block-spectra-google-map { width: 100%; flex: 1 1 auto; min-height: 260px; height: auto !important; filter: grayscale(1) contrast(1.05); }
.lcb-panel-showroom .wp-block-spectra-google-map :is(embed, iframe) { display: block; width: 100%; height: 100%; min-height: 260px; }
@media (max-width: 900px) { .lcb-panel-showroom .wp-block-spectra-google-map { flex: none; aspect-ratio: 16 / 9; } }
/* Formulaire sur panneau graphite : champs noirs, bordures lignes, focus jaune. */
.lcb-panel-form .forminator-ui .forminator-input,
.lcb-panel-form .forminator-ui .forminator-textarea,
.lcb-panel-form .forminator-ui .forminator-select .selection .select2-selection {
	background: var(--mx-appoint) !important; border: 1px solid var(--lcb-ligne-sombre) !important; border-radius: 0 !important; color: #fff !important; padding: 16px 18px !important;
}
.lcb-panel-form .forminator-ui .forminator-input::placeholder, .lcb-panel-form .forminator-ui .forminator-textarea::placeholder { color: var(--lcb-label-sombre) !important; }
.lcb-panel-form .forminator-ui .forminator-input:focus, .lcb-panel-form .forminator-ui .forminator-textarea:focus { border-color: var(--mx-accent) !important; box-shadow: 0 0 0 2px var(--mx-accent) !important; }
.lcb-panel-form .forminator-ui .forminator-label, .lcb-panel-form .forminator-ui.forminator-custom-form .forminator-label, .lcb-panel-form .forminator-ui .forminator-field label, .lcb-panel-form .forminator-ui .forminator-checkbox, .lcb-panel-form .forminator-ui .forminator-radio, .lcb-panel-form .forminator-ui .forminator-description, .lcb-panel-form .forminator-ui .forminator-consent, .lcb-panel-form .forminator-ui .forminator-checkbox-label, .lcb-panel-form .forminator-ui .forminator-radio-label, .lcb-panel-form .forminator-ui .forminator-label .forminator-required { color: var(--lcb-texte-sombre) !important; }
.lcb-panel-form .forminator-ui .forminator-label .forminator-required { color: var(--mx-accent) !important; }
.lcb-panel-form .forminator-ui .forminator-radio { border: 1px solid var(--lcb-ligne-sombre); padding: 12px 18px; margin: 0 2px 2px 0 !important; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.lcb-panel-form .forminator-ui .forminator-radio:has(input:checked) { background: #fff; color: var(--mx-titre) !important; border-color: #fff; }
.lcb-panel-form .forminator-ui .forminator-radio:has(input:checked) .forminator-radio-label { color: var(--mx-titre) !important; }
.lcb-panel-form .forminator-ui .forminator-button-submit { border-radius: 0 !important; background: var(--mx-accent) !important; color: var(--mx-titre) !important; padding: 18px 28px !important; font-weight: 700 !important; letter-spacing: .08em; text-transform: uppercase; font-size: 14px !important; }
.lcb-panel-form .forminator-ui .forminator-button-submit:hover { background: var(--mx-accent-2) !important; }
.lcb-panel-form .forminator-ui a { color: #fff !important; }
/* Disposition maquette : champs en mosaïque à joints de 2 px (Nom | Téléphone, Email | Commune). */
.lcb-panel-form .forminator-ui .forminator-row { margin: 0 -1px 2px !important; }
.lcb-panel-form .forminator-ui .forminator-row > .forminator-col { padding: 0 1px !important; }
.lcb-panel-form .forminator-ui .forminator-row:has(> .forminator-field-textarea),
.lcb-panel-form .forminator-ui .forminator-row:has(> .forminator-field-consent) { margin-top: 22px !important; }
.lcb-panel-form .forminator-ui .forminator-row-last { margin-top: 24px !important; }
@media (max-width: 782px) { .lcb-panel-form .forminator-ui .forminator-row > .forminator-col + .forminator-col { margin-top: 2px; } }
/* Champs à placeholder (nom, téléphone, email, commune) : libellé conservé pour les lecteurs d'écran,
   masqué à l'écran comme sur la maquette. Remettre un libellé dans Forminator ne change donc rien au rendu. */
.lcb-panel-form .forminator-ui :is(.forminator-field-name, .forminator-field-phone, .forminator-field-email, .forminator-field-text) .forminator-label {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
/* Téléphone : le drapeau de l'indicatif ne recouvre plus le texte (notre padding !important écrasait celui d'intl-tel-input). */
/* Le conteneur pays (drapeau, flèche, +33) fait 80 px ; intl-tel-input pose ce retrait en style inline, que notre padding !important écrase. */
.lcb-panel-form .forminator-ui .iti input.forminator-input { padding-left: 92px !important; }
.lcb-panel-form .forminator-ui .iti__selected-dial-code { color: var(--lcb-texte-sombre); }
.lcb-panel-form .forminator-ui .forminator-description { display: block; margin: 0 0 8px; font-size: 13px; line-height: 1.5; color: var(--lcb-label-sombre) !important; }
.lcb-panel-form .forminator-ui .forminator-consent *, .lcb-panel-form .forminator-ui .forminator-checkbox-label *, .lcb-panel-form .forminator-ui .forminator-field p, .lcb-panel-form .forminator-ui .forminator-radio-label { color: var(--lcb-texte-sombre) !important; }
.lcb-panel-form .forminator-ui .forminator-checkbox-box { background: var(--mx-appoint) !important; border-color: var(--lcb-label-sombre) !important; border-radius: 0 !important; }
.lcb-panel-form .forminator-ui .forminator-checkbox-box svg path, .lcb-panel-form .forminator-ui .forminator-checkbox input:checked + .forminator-checkbox-box { color: var(--mx-accent) !important; }

/* ================================================================ pages intérieures */
/* En-tête de page sombre : photo 4/3 à droite, texte à gauche. */
.lcb-page-hero .wp-block-image img { aspect-ratio: 4 / 3; object-fit: cover; }
/* Tableau comparatif (matériaux) : en-tête anthracite. */
:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau th { background: var(--mx-titre); color: #fff; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; }
:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau td:first-child { font-weight: 700; }
/* Trois atouts / engagements en colonnes séparées par des filets (réutilise le pattern engagements). */
/* Fin de page : bandeau noir, liens en capitales. */
.lcb-fin.wp-block-spectra-container .lcb-link { color: #fff; }
/* Étapes en liste (page salles de bains) : numérotation jaune. */
:is(.entry-content, [class*="astra-advanced-hook-"]) ol.lcb-etapes { list-style: none; counter-reset: e; padding: 0; margin: 0; display: grid; gap: 14px; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ol.lcb-etapes li { counter-increment: e; position: relative; padding-left: 56px; min-height: 36px; display: flex; align-items: center; }
:is(.entry-content, [class*="astra-advanced-hook-"]) ol.lcb-etapes li::after { content: counter(e, decimal-leading-zero); position: absolute; left: 0; top: 0; width: 40px; height: 36px; display: flex; align-items: center; font-weight: 800; letter-spacing: -0.03em; font-size: 22px; color: var(--mx-accent); }

/* ================================================================ pied de page */
.site-footer { color: var(--lcb-label-sombre); font-size: 15px; }
.site-footer a { color: var(--lcb-label-sombre); text-decoration: none; transition: color .2s; }
.site-footer a:hover { color: var(--mx-accent); }
.site-footer h4, .site-footer .widget-title { color: #fff; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; font-weight: 700; margin: 0 0 22px; }
.site-footer .widget ul { list-style: none; margin: 0; padding: 0; }
.site-footer .widget li { margin: 0 0 12px; padding: 0; }
.site-footer .lcb-footer-intro { max-width: 640px; }
.site-footer .lcb-footer-intro p { margin: 20px 0 0; color: var(--lcb-label-sombre); }
/* Rangée basse : copyright | menu légal | crédit MATRYS (convention MATRYS). */
.site-footer .site-below-footer-wrap .footer-nav-wrap .menu-item a { font-size: 13px; }
/* Colonnes empilées (tablette, mobile) : respiration entre la colonne logo et les listes. */
@media (max-width: 1200px) {
	.site-footer .site-primary-footer-wrap[data-section] .site-footer-section.site-footer-section { margin-bottom: 36px; }
	.site-footer .site-primary-footer-wrap[data-section] .site-footer-section.site-footer-section:last-child { margin-bottom: 0; }
	.site-footer .lcb-footer-intro { max-width: 520px; }
}
.site-footer .lcb-footer-logo img { height: auto; }
.site-footer .lcb-footer-credit { font-size: 13px; }
.site-footer .site-below-footer-wrap { font-size: 13px; }
.site-footer .ast-footer-copyright { font-size: 13px; }
@media (max-width: 1200px) {
	.site-footer .lcb-footer-intro { margin-left: auto; margin-right: auto; }
}

/* ================================================================ barre mobile téléphone + devis */
.lcb-mcta { display: none; }
@media (max-width: 767px) {
	body.lcb-has-mcta { padding-bottom: 64px; }
	.lcb-mcta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: var(--lcb-ligne-sombre); border-top: 1px solid var(--lcb-ligne-sombre); }
	.lcb-mcta a { display: flex; align-items: center; justify-content: center; min-height: 56px; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
	.lcb-mcta .lcb-mcta__tel { background: var(--mx-appoint); color: #fff; }
	.lcb-mcta .lcb-mcta__devis { background: var(--mx-accent); color: var(--mx-titre); }
	body.ast-main-header-nav-open .lcb-mcta, body.ast-mobile-popup-open .lcb-mcta { display: none; }
}

/* ================================================================ fiches de chantier (gabarit PHP) */
.lcb-sec { padding: clamp(56px, 7vw, 96px) 0; }
.lcb-sec--sombre { background: var(--mx-appoint); color: var(--lcb-texte-sombre); }
.lcb-sec--sombre h1, .lcb-sec--sombre h2, .lcb-sec--sombre h3 { color: #fff; }
.lcb-sec--gris { background: var(--mx-fond-2); }
.lcb-wrap { max-width: calc(var(--mx-contenu) + 40px); margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.lcb-fil { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--lcb-label-sombre); margin-bottom: 28px; }
.lcb-fil a { color: inherit; text-decoration: none; }
.lcb-fil a:hover { color: var(--mx-accent); }
.lcb-fil [aria-current] { color: #fff; }
.lcb-rea-tete { padding-bottom: 0; }
.lcb-rea-titre { max-width: 20ch; margin: 0 0 18px; }
.lcb-rea-meta { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0 0 40px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; }
.lcb-rea-type { background: var(--mx-accent); color: var(--mx-titre); padding: 6px 12px; }
.lcb-rea-commune { color: var(--lcb-texte-sombre); }
.lcb-rea-photo { padding-bottom: 0; }
.lcb-rea-photo__img { width: 100%; aspect-ratio: 16 / 8; object-fit: cover; display: block; }
.lcb-rea-cols { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.lcb-rea-textes p { margin: 0 0 1em; }
.lcb-lead { font-size: clamp(18px, 1.3vw, 20px); }
.lcb-rea-fiche { background: var(--mx-fond-2); padding: 32px; }
.lcb-rea-fiche__titre { font-size: 12px !important; letter-spacing: .2em; text-transform: uppercase; margin: 0 0 20px; display: flex; align-items: center; gap: 14px; }
.lcb-rea-fiche__titre::after { content: ""; order: -1; width: 36px; height: 1px; background: var(--mx-accent); }
.lcb-rea-fiche dl { margin: 0; display: grid; gap: 16px; }
.lcb-rea-fiche dt { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: var(--mx-texte); }
.lcb-rea-fiche dd { margin: 4px 0 0; font-weight: 600; }
.lcb-rea-ba h2, .lcb-rea-galerie h2, .lcb-rea-suite h2 { margin: 0 0 28px; }
.lcb-rea-ba .lcb-compare { max-width: 720px; }
.lcb-rea-galerie__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; }
.lcb-rea-galerie__item { margin: 0; position: relative; min-height: 0; }
.lcb-rea-galerie__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
/* Première photo en double largeur et double hauteur : la hauteur des rangées vient des
   petites vignettes (4/3), la grande remplit sa cellule en absolu. */
.lcb-rea-galerie__item:first-child { grid-column: span 2; grid-row: span 2; }
.lcb-rea-galerie__item:first-child img { position: absolute; inset: 0; height: 100%; aspect-ratio: auto; }
.lcb-rea-galerie__item:first-child:last-child { grid-column: span 3; grid-row: auto; }
.lcb-rea-galerie__item:first-child:last-child img { position: static; aspect-ratio: 16 / 9; }
/* Galerie sans trou quel que soit le nombre de photos (14/10/2026). Au-dessus de 900 px, grille de 6 colonnes
   (une vignette = 2 colonnes, la grande = 4 colonnes sur 2 rangées) :
   1 photo : pleine largeur 16/9 ; 2 photos : deux moitiés 4/3 ; 4 et 7 : la première en pleine largeur 16/9,
   les autres par trois ; 5 et 8 : les deux dernières se partagent la dernière rangée. Sans :has(), même rendu qu'avant. */
@media (min-width: 901px) {
	.lcb-rea-galerie__grille { grid-template-columns: repeat(6, minmax(0, 1fr)); }
	.lcb-rea-galerie__item { grid-column: span 2; }
	.lcb-rea-galerie__item:first-child { grid-column: span 4; }
	.lcb-rea-galerie__item:first-child:last-child,
	.lcb-rea-galerie__grille:has(> :nth-child(3n+1):last-child) > :first-child { grid-column: 1 / -1; grid-row: auto; }
	.lcb-rea-galerie__item:first-child:last-child img,
	.lcb-rea-galerie__grille:has(> :nth-child(3n+1):last-child) > :first-child img { position: static; height: auto; aspect-ratio: 16 / 9; }
	.lcb-rea-galerie__grille:has(> :nth-child(2):last-child) > * { grid-column: span 3; grid-row: auto; }
	.lcb-rea-galerie__grille:has(> :nth-child(2):last-child) > * img { position: static; height: auto; aspect-ratio: 4 / 3; }
	.lcb-rea-galerie__grille:has(> :nth-child(3n+2):nth-child(n+5):last-child) > :nth-last-child(-n+2) { grid-column: span 3; }
}
/* 601 à 900 px (2 colonnes, la première en pleine largeur) : nombre pair = dernière seule sur sa rangée, en pleine largeur. */
@media (min-width: 601px) and (max-width: 900px) {
	.lcb-rea-galerie__grille:has(> :nth-child(2n):last-child) > :last-child { grid-column: 1 / -1; }
	.lcb-rea-galerie__grille:has(> :nth-child(2n):last-child) > :last-child img { aspect-ratio: 16 / 9; }
}
.lcb-citation { margin: 0; max-width: 60ch; }
.lcb-citation p { font-size: clamp(22px, 2.2vw, 30px); font-weight: 700; letter-spacing: -0.02em; line-height: 1.3; margin: 0 0 16px; }
.lcb-citation footer { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: var(--mx-texte); }
.lcb-rea-suite__metier { margin: 0 0 40px; }
.lcb-rea-suite__tous { margin: 32px 0 0; }
.lcb-rea-cta__in { display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
.lcb-rea-cta__in > div:first-child { max-width: 52ch; }
.lcb-rea-cta h2 { margin: 0 0 12px; }
.lcb-rea-cta p { margin: 0; }
.lcb-rea-cta__actions { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.lcb-btn { display: inline-flex; align-items: center; padding: 18px 28px; background: var(--mx-accent); color: var(--mx-titre); font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; transition: background .25s; }
.lcb-btn:hover { background: var(--mx-accent-2); color: var(--mx-titre); }
.lcb-rea-cta__tel a { color: #fff; font-weight: 800; font-size: 22px; letter-spacing: -0.01em; text-decoration: none; }
@media (max-width: 900px) {
	.lcb-rea-cols { grid-template-columns: 1fr; }
	.lcb-rea-galerie__grille { grid-template-columns: 1fr 1fr; }
	.lcb-rea-galerie__item:first-child { grid-column: span 2; grid-row: auto; }
	.lcb-rea-galerie__item:first-child img { position: static; aspect-ratio: 16 / 9; }
}
@media (max-width: 600px) {
	.lcb-wrap { padding: 0 16px; }
	.lcb-rea-fiche { padding: 24px 20px; }
	.lcb-rea-galerie__grille { grid-template-columns: 1fr; }
	.lcb-rea-galerie__item:first-child { grid-column: span 1; }
}

/* ================================================================ compléments pages intérieures */
/* Cartes « styles de cuisines » : photo bord à bord, texte en dessous. */
.lcb-style.wp-block-spectra-container { padding: 0 !important; gap: 0 !important; box-shadow: none !important; }
.lcb-style .wp-block-image { margin: 0; }
.lcb-style-body.wp-block-spectra-container { padding: 24px 28px 30px !important; gap: 10px !important; }
/* Deuxième H2 d'une même section (déroulé + réalisations) : respiration. */
:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-h2-suite { margin-top: 40px !important; }
/* Phrase de fin en exergue (Qui sommes-nous). */
.lcb-exergue { font-weight: 700; letter-spacing: -0.02em; line-height: 1.25 !important; max-width: 30ch; border-left: 3px solid var(--mx-accent); padding-left: 24px; margin-top: 16px !important; }
/* Ligne inversée (orientationReverse) : le texte reste premier sur mobile. */
@media (max-width: 480px) {
	.lcb-row-text-first.wp-block-spectra-container { flex-direction: column !important; }
	.lcb-row-text-first.wp-block-spectra-container > *:first-child { order: 1; }
	.lcb-row-text-first.wp-block-spectra-container > *:last-child { order: 2; }
}
/* Plan du site (SEOPress) : listes en colonnes. */
.seopress-html-sitemap, :is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-shortcode ul { padding-left: 1.2em; }

/* Pied de page : filet haut (une page peut finir sur une section noire). */
.site-footer { border-top: 1px solid var(--lcb-ligne-sombre); }
/* Tableaux : pas de bordures verticales (core/table en pose par défaut). */
:is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-table td, :is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-table th { border-left: 0; border-right: 0; border-top: 0; }
:is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-table table { border: 0; }

/* ================================================================ pages de texte (mentions légales, données personnelles)
   Contenu du plugin Coordonnées & RGPD, sans section Spectra : le gabarit pleine largeur les collait au bord.
   Classe body lcb-page-texte posée par le thème (page sans spectra/container). Conteneur 1200 px aligné sur
   l'en-tête, colonne de lecture 760 px, échelle de titres resserrée. */
.lcb-page-texte .site-content .entry-content { box-sizing: content-box; max-width: 1200px; margin: 0 auto; padding: 96px 20px 120px; }
.lcb-page-texte .entry-content > *, .lcb-page-texte .entry-content .ccrgpd-section > * { max-width: 760px; }
.lcb-page-texte .entry-content h1 { margin: 0 0 48px; }
.lcb-page-texte .entry-content h2 { font-size: 30px; line-height: 1.2; letter-spacing: -0.02em; margin: 56px 0 18px; }
.lcb-page-texte .entry-content h3 { font-size: 20px; line-height: 1.3; margin: 36px 0 12px; }
.lcb-page-texte .entry-content .ccrgpd-section:first-of-type h2, .lcb-page-texte .entry-content h1 + h2 { margin-top: 0; }
.lcb-page-texte .entry-content :is(p, li) { color: var(--mx-texte); }
@media (max-width: 782px) {
	.lcb-page-texte .site-content .entry-content { padding: 56px 16px 72px; }
	.lcb-page-texte .entry-content h1 { margin-bottom: 32px; }
	.lcb-page-texte .entry-content h2 { font-size: 24px; margin-top: 40px; }
}

/* ================================================================ recette responsive du 13/10/2026
   Audit 360 / 390 / 600 / 768 / 900 / 1024 / 1280 px, 13 gabarits. Aucun débordement horizontal ;
   corrigé ici : rangées serrées entre 481 et 700 px (mots coupés en deux), tuiles d'accueil rognées
   sous 1100 px, « 1986 » sur deux lignes, orphelins de grilles, formulaire et filtres irréguliers. */

/* Noms de lieux composés : jamais coupés au trait d'union (span posé par lcb_child_typo_fr). */
.lcb-insec { white-space: nowrap; }

/* Chiffres clés sous 783 px : le troisième passe sous les deux autres, sans filet ni retrait à gauche
   (la règle « + » des colonnes 2 et 3 l'emportait par sa spécificité). */
@media (max-width: 782px) {
	.lcb-stat.wp-block-spectra-container + .lcb-stat.wp-block-spectra-container:nth-child(3) { padding-left: 0 !important; border-left: 0; }
}

/* Tuiles savoir-faire : sous 1100 px le texte est toujours affiché ; à hauteur imposée (aspect-ratio) il
   débordait, et le retour à la ligne flex le renvoyait dans une seconde colonne hors cadre. Hauteur
   minimale à la place, le contenu fait grandir la tuile. */
.lcb-tile.wp-block-spectra-container { flex-wrap: nowrap !important; }
@media (max-width: 1100px) {
	.lcb-tile.wp-block-spectra-container { aspect-ratio: auto; min-height: 460px; }
}
/* De 783 à 1100 px, trois colonnes de 290 px coupaient « Aménagements » : composition tablette (2 colonnes,
   la première tuile sur toute la largeur). */
@media (min-width: 783px) and (max-width: 1100px) {
	.lcb-tiles.wp-block-spectra-container.wp-block-spectra-container { grid-template-columns: 1fr 1fr !important; }
	.lcb-tiles.wp-block-spectra-container .lcb-tile:first-child { grid-column: span 2; min-height: 380px; }
}
@media (max-width: 782px) {
	.lcb-tiles.wp-block-spectra-container .lcb-tile:first-child { aspect-ratio: auto; min-height: 360px; }
	.lcb-tile.wp-block-spectra-container { min-height: 420px; }
}
@media (max-width: 480px) {
	.lcb-tiles.wp-block-spectra-container .lcb-tile:first-child, .lcb-tile.wp-block-spectra-container { aspect-ratio: auto; min-height: 400px; }
}

/* « 1986 » : taille plafonnée à la largeur de sa colonne (requête de conteneur), toujours sur une ligne. */
.wp-block-spectra-container:has(> .lcb-year) { container-type: inline-size; }
.lcb-year { white-space: nowrap; font-size: min(200px, 46cqi) !important; }
@media (max-width: 782px) { .lcb-year { font-size: min(150px, 46cqi) !important; } }
@media (max-width: 480px) { .lcb-year { font-size: min(110px, 46cqi) !important; } }

/* Rangées 2 colonnes entre 481 et 700 px : Spectra ne les empile qu'à 480 px ; à 600 px un H2 de 40 px
   tenait dans 220 px (« aménageme / nts », « interlocu / teur »). Empilées dès 700 px. */
@media (max-width: 700px) {
	/* Spécificité au-dessus des règles Spectra (2 classes + data-spectra-id + is-horizontal-*, en !important,
	   imprimées après la feuille du thème), sinon une ligne inversée restait en row-reverse hors écran. */
	:is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-spectra-container.wp-block-spectra-container.is-horizontal.is-layout-flex[data-spectra-id] { flex-direction: column !important; flex-wrap: nowrap !important; align-items: stretch !important; row-gap: 32px; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-spectra-container.is-horizontal.is-layout-flex > .wp-block-spectra-container.wp-block-spectra-container[data-spectra-id] { width: 100% !important; max-width: none !important; flex: 0 0 auto !important; }
	.lcb-row-text-first.wp-block-spectra-container > *:first-child { order: 1; }
	.lcb-row-text-first.wp-block-spectra-container > *:last-child { order: 2; }
	.lcb-cta-actions.wp-block-spectra-container { align-items: flex-start; }
	.lcb-cta-actions .wp-block-spectra-buttons { justify-content: flex-start !important; }
}
/* En-tête des réalisations (accueil) : le bouton passe sous le texte quand il ne tient plus à côté. */
@media (max-width: 1100px) {
	.lcb-works.wp-block-spectra-container > .wp-block-spectra-container.is-horizontal:first-child { flex-wrap: wrap !important; row-gap: 24px; }
	.lcb-works.wp-block-spectra-container > .wp-block-spectra-container.is-horizontal:first-child .wp-block-spectra-buttons { justify-content: flex-start !important; }
}
/* Boutons : libellé sur une ligne dès qu'il y a la place (à 768 px « Voir toutes nos réalisations » et
   « Prise de cotes gratuite » se coupaient en deux lignes serrées). */
@media (min-width: 481px) { .wp-block-spectra-button { white-space: nowrap; } }

/* Filtres des réalisations : rangées pleines sous 600 px au lieu de boutons en escalier. */
@media (max-width: 600px) { .lcb-filtres button { flex: 1 1 auto; } }

/* Grilles à 2 colonnes (481 à 782 px) : le dernier élément d'un nombre impair occupe toute la ligne. */
@media (min-width: 481px) and (max-width: 782px) {
	.lcb-suite--3 > .lcb-suite-carte:last-child { grid-column: 1 / -1; }
	.wp-block-spectra-container > .lcb-style.wp-block-spectra-container:last-child:nth-child(odd) { grid-column: 1 / -1; display: grid !important; grid-template-columns: 1fr 1fr; align-items: stretch; }
	.lcb-style:last-child:nth-child(odd) > .wp-block-image { position: relative; margin: 0; min-height: 260px; }
	.lcb-style:last-child:nth-child(odd) > .wp-block-image img { position: absolute; inset: 0; width: 100%; height: 100% !important; aspect-ratio: auto !important; object-fit: cover; }
	.lcb-style:last-child:nth-child(odd) > .lcb-style-body { align-self: center; }
	/* Comparateur empilé sous les cartes : moins haut qu'en 4/3 sur tablette. */
	.lcb-ba-media.wp-block-spectra-container > .lcb-compare { aspect-ratio: 16 / 10; }
}
@media (min-width: 601px) and (max-width: 782px) {
	.lcb-grille--grid > .lcb-vig:last-child:nth-child(odd) { grid-column: 1 / -1; }
	.lcb-grille--grid > .lcb-vig:last-child:nth-child(odd) img { aspect-ratio: 2 / 1; }
}
@media (max-width: 480px) {
	.lcb-suite-carte.wp-block-spectra-container, .lcb-suite--2 .lcb-suite-carte.wp-block-spectra-container { min-height: 180px; }
}

/* Tableaux en fiches sous 600 px (libellés data-label posés par le thème). */
@media (max-width: 600px) {
	:is(.entry-content, [class*="astra-advanced-hook-"]) .wp-block-table.lcb-tableau { overflow: visible; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau table, :is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau tbody { display: block; width: 100%; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau tr { display: block; padding: 18px 0; border-bottom: 1px solid var(--mx-filet); }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau tr:first-child { border-top: 2px solid var(--mx-titre); }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau td { display: grid; grid-template-columns: 8.5em 1fr; gap: 12px; padding: 4px 0 !important; border: 0 !important; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau td::before { content: attr(data-label); font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--mx-texte); padding-top: .25em; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau td:first-child { display: block; font-size: 18px; padding-bottom: 8px !important; }
	:is(.entry-content, [class*="astra-advanced-hook-"]) .lcb-tableau td:first-child::before { content: none; }
}

/* Formulaire devis : choix du projet en grille 2 x 2 alignée sur la mosaïque des champs, à toutes les
   largeurs (les quatre étiquettes de longueurs inégales s'empilaient en escalier) ; champs groupés par
   deux à partir de 600 px, joints de 2 px partout (Forminator ajoutait 20 px sous le premier champ d'une
   rangée sous 783 px). */
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-field { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-field > :not(.forminator-radio) { grid-column: 1 / -1; } /* libellé, message d'erreur */
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio { margin: 0 !important; display: flex; justify-content: center; text-align: center; min-height: 48px; padding: 12px 14px; }
/* Puces sans le rond de Forminator, même dessin que les filtres des réalisations : la sélection se lit au
   fond blanc ; focus clavier reporté sur la puce (le bouton radio natif est masqué par Forminator). */
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio { position: relative; }
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio input { position: absolute; top: 50%; left: 50%; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio-bullet { display: none !important; }
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio:hover { border-color: var(--lcb-label-sombre); }
.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio:has(input:focus-visible) { outline: 2px solid var(--mx-accent); outline-offset: 2px; }
@media (max-width: 782px) {
	.lcb-panel-form .forminator-ui .forminator-row > .forminator-col { margin-bottom: 0 !important; }
}
@media (min-width: 600px) and (max-width: 782px) {
	.lcb-panel-form .forminator-ui .forminator-row:has(> .forminator-col + .forminator-col) { display: flex !important; flex-wrap: nowrap; }
	.lcb-panel-form .forminator-ui .forminator-row > .forminator-col { flex: 1 1 0; min-width: 0; }
	.lcb-panel-form .forminator-ui .forminator-row > .forminator-col + .forminator-col { margin-top: 0 !important; }
}
@media (max-width: 480px) {
	.lcb-panel-form .forminator-ui .forminator-field-radio .forminator-radio { padding: 12px 10px; letter-spacing: .06em; }
}

/* Cibles tactiles : menu légal du pied de page et fil d'Ariane des fiches (21 px de haut). */
#astra-footer-menu .menu-link { padding-top: 8px; padding-bottom: 8px; }
.lcb-fil a { display: inline-block; padding: 8px 0; }
/* Texte des engagements : gris du slot 6 à 4,27:1 sur le fond gris de Qui sommes-nous (4,5 exigé), assombri
   (5,2:1 sur gris, 6:1 sur blanc). La couleur vient de l'attribut du bloc (style en ligne), d'où !important. */
.lcb-engagement.wp-block-spectra-container p:not(.lcb-engagement-t) { color: #5F646B !important; }
