/* Polices Poppins (titres) / Open Sans (corps) : auto-hébergées via « Aegis+ › Réglages généraux »
   (upload de typo, aucun appel à Google Fonts). Sans téléversement : repli sur les polices système. */
/* Aegis-Boutiques — front. Classes aab-* uniquement. Design aligné maquette (Tailwind). */
/* Tokens globaux : dispo aussi pour les blocs rendus HORS .aab-stores/.aab-fiche
   (atouts + CTA de la page liste /agences). Sinon var(--aab-accent) indéfini
   → bouton « Prendre rendez-vous » sans fond. La page Réglages peut surcharger. */
:root {
	--aab-accent: #51B148;
	--aab-accent-dark: #45993D;
	--aab-lime: #22C55E;
	--aab-ink: #171B1F;
	--aab-text: #2B3033;
	--aab-muted: #5E6468;
	--aab-line: #E2E5E8;
	--aab-soft: #EFF2F5;
	--aab-pill: #E7F2E6;
}
/* Conteneur des templates de secours (page /agences et /agence sans gabarit Elementor). */
.aab-page { padding: 48px 20px 72px; }
.aab-page__inner { max-width: 1180px; margin: 0 auto; }

.aab-stores, .aab-fiche {
	--aab-accent: #51B148;
	--aab-accent-dark: #45993D;
	--aab-lime: #22C55E;
	--aab-ink: #171B1F;
	--aab-text: #2B3033;
	--aab-muted: #5E6468;
	--aab-line: #E2E5E8;
	--aab-soft: #EFF2F5;
	--aab-pill: #E7F2E6;
	max-width: 1180px; margin: 0 auto; color: var(--aab-text); font-size: 16px; line-height: 1.6;
	font-family: 'Open Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}
.aab-stores *, .aab-fiche *, .aab-stores *::before, .aab-fiche *::before { box-sizing: border-box; }

/* Garde anti-héritage du thème : neutralise puces de liste + soulignement de
   liens SANS toucher aux marges/bordures (qui sont gérées par nos classes). */
.aab-stores ul, .aab-fiche ul, .aab-stores ol, .aab-fiche ol { list-style: none !important; }
.aab-stores li::before, .aab-fiche li::before { content: none !important; }
.aab-stores a, .aab-fiche a { text-decoration: none; box-shadow: none; }

/* ============================ LISTE ============================ */
.aab-empty { text-align: center; color: var(--aab-muted); padding: 60px 0; }
.aab-stores__head { text-align: center; margin-bottom: 34px; }
.aab-stores__eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: .82rem; font-weight: 700; color: var(--aab-accent); margin: 0 0 10px; }
.aab-stores__title { font-size: clamp(1.8rem, 3.4vw, 2.8rem); font-weight: 800; color: var(--aab-ink); margin: 0 0 12px; font-family: 'Poppins', system-ui, -apple-system, sans-serif; line-height: 1.1; }
.aab-stores__subtitle { color: var(--aab-muted); max-width: 640px; margin: 0 auto 18px; }
.aab-stores__stats { display: flex; justify-content: center; flex-wrap: wrap; gap: 32px; list-style: none; padding: 0; margin: 18px 0 0; }
.aab-stores__stats li { display: flex; flex-direction: column; }
.aab-stores__stats strong { font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-weight: 800; font-size: 1.8rem; color: var(--aab-accent); }
.aab-stores__stats span { font-size: .85rem; color: var(--aab-muted); text-transform: uppercase; letter-spacing: .04em; }

/* Cartes agences façon maquette : en-tête coloré (badge + titre) + corps riche. */
/* Flex centré : jusqu'à 3 cartes par rangée ; une rangée incomplète (ex. 4ᵉ agence) se recentre au lieu de rester orpheline à gauche. */
.aab-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 26px; }
.aab-grid > .aab-store { flex: 0 1 340px; }
.aab-store { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--aab-line); border-radius: 22px; overflow: hidden; box-shadow: 0 12px 32px rgba(15,23,42,.09); }
.aab-store:hover { transform: translateY(-4px); box-shadow: 0 22px 48px rgba(15,23,42,.14); }
/* En-tête coloré */
.aab-store__header { position: relative; display: flex; align-items: center; justify-content: center; min-height: 180px; padding: 26px 22px; background: var(--aab-card-accent, var(--aab-accent)); background-size: cover; background-position: center; text-decoration: none; overflow: hidden; }
.aab-store__overlay { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.aab-store__badge { position: absolute; z-index: 2; top: 16px; left: 16px; background: #fff; color: var(--aab-card-accent, var(--aab-accent)); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; padding: 6px 13px; border-radius: 999px; }
.aab-store__htitle { position: relative; z-index: 2; color: #fff; font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 1.65rem; text-align: center; line-height: 1.15; letter-spacing: -.01em; }
.aab-store__header.has-bg .aab-store__htitle { text-shadow: 0 1px 12px rgba(0,0,0,.35); }
/* Corps */
.aab-store__body { padding: 22px 22px 24px; display: flex; flex-direction: column; gap: 15px; flex: 1 1 auto; }
.aab-store__rating { display: flex; align-items: center; gap: 8px; min-height: 20px; font-weight: 700; color: var(--aab-ink); font-size: .95rem; }
.aab-store__rating.is-empty { min-height: 20px; }
.aab-store__stars { display: inline-flex; gap: 1px; }
.aab-store__stars .aab-star { width: 16px; height: 16px; fill: #E5E7EB; }
.aab-store__stars .aab-star.is-on { fill: #F59E0B; }
.aab-store__meta { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 11px; font-size: .95rem; }
.aab-store__meta li { display: flex; align-items: flex-start; gap: 11px; color: var(--aab-text); }
.aab-store__meta .aab-ico { width: 18px; height: 18px; color: var(--aab-accent); flex: 0 0 auto; margin-top: 1px; }
.aab-store__meta a { color: var(--aab-text); text-decoration: none; }
.aab-store__meta a:hover { color: var(--aab-accent); }
.aab-store__today { font-weight: 500; }
.aab-store__today.is-open .aab-ico { color: var(--aab-accent); }
/* Stats Experts / Modèles */
.aab-store__stats2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding-top: 16px; border-top: 1px solid var(--aab-line); text-align: center; }
.aab-store__stat strong { display: block; min-height: 1.5rem; font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 1.5rem; color: var(--aab-ink); line-height: 1; }
.aab-store__stats2.is-empty { border-top-color: transparent; }
.aab-store__stat span { display: block; margin-top: 5px; font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--aab-muted); }
/* Actions */
.aab-store__actions { display: flex; gap: 10px; align-items: center; margin-top: auto; padding-top: 6px; }
.aab-store__cta { flex: 1 1 auto; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 18px; background: var(--aab-accent); color: #fff; font-weight: 700; border-radius: 999px; text-decoration: none; }
.aab-store__cta:hover { background: var(--aab-accent-dark); color: #fff; }
.aab-store__phonebtn { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--aab-line); background: #fff; color: var(--aab-accent); }
.aab-store__phonebtn:hover { border-color: var(--aab-accent); }
.aab-store__phonebtn .aab-ico { width: 20px; height: 20px; }

/* Carte des agences (sous l'en-tête de /agences). */
.aab-stores__map { margin: 0 0 40px; border-radius: 22px; overflow: hidden; border: 1px solid var(--aab-line); box-shadow: 0 14px 40px rgba(15,23,42,.08); }
.aab-stores__map iframe { width: 100%; height: 440px; border: 0; display: block; }
@media (max-width: 640px) { .aab-stores__map iframe { height: 300px; } }

/* Espacement des sections de la page archive (liste + atouts + CTA). */
.aab-page__inner > * + * { margin-top: 60px; }

/* ============================ FICHE ============================ */
.aab-fiche > section { margin: 0 0 60px; }
.aab-fiche > section:last-child { margin-bottom: 0; }

/* Hero 2 colonnes (texte gauche, image droite) */
.aab-hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: center; }
@media (max-width: 880px) { .aab-hero { grid-template-columns: 1fr; gap: 28px; } }
.aab-hero__eyebrow { text-transform: uppercase; letter-spacing: .14em; font-size: 13px; font-weight: 700; color: var(--aab-accent); margin: 0 0 14px; }
.aab-hero__title { font-size: clamp(2.1rem, 5vw, 3.4rem); font-weight: 800; color: var(--aab-ink); margin: 0 0 18px; line-height: 1.05; letter-spacing: -.02em; }
.aab-hero__lead { color: var(--aab-text); font-size: 1.05rem; margin: 0 0 22px; max-width: 36em; }
.aab-hero__lead p { margin: 0 0 12px; }
.aab-hero__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; }
/* Hero « landing » : bouton catalogue. */
.aab-hero__actions { margin: 16px 0 4px; }
.aab-hero__actions .aab-btn { display: inline-flex; }
/* Bouton catalogue placé SOUS les 2 colonnes (titre + photo) : il occupe toute
   la largeur de la grille du hero et se pose en dessous. */
.aab-hero__actions--full { grid-column: 1 / -1; margin: 8px 0 0; }
@media (max-width: 880px) { .aab-hero__actions--full { margin: 4px 0 0; } }
/* Coordonnées sous la photo : adresse / téléphone / horaires du jour. */
.aab-hero__coords { list-style: none; margin: 16px 0 0; padding: 16px 18px; display: grid; gap: 11px;
	border: 1px solid var(--aab-line); border-radius: 18px; background: rgba(255,255,255,.72); }
.aab-hero__coords li { display: flex; align-items: flex-start; gap: 11px; font-size: .95rem; line-height: 1.35; color: var(--aab-ink); }
.aab-hero__coords a { color: var(--aab-ink); text-decoration: none; font-weight: 600; }
.aab-hero__coords a:hover { color: var(--aab-accent); }
.aab-hero__coords-ic { flex: 0 0 auto; display: inline-flex; }
.aab-hero__coords-ic .aab-ico { width: 18px; height: 18px; color: var(--aab-accent); }
.aab-hero__coords-today.is-open strong { color: #45993D; }
.aab-visit--noheures { grid-template-columns: 1fr !important; }
/* Pastilles du hero : fond + bord arrondi (pill). */
.aab-hero__rating, .aab-hero__certif, .aab-hero__open { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; padding: 8px 15px; border-radius: 999px; border: 1px solid var(--aab-line); background: var(--aab-soft); color: var(--aab-text); text-decoration: none; }
.aab-hero__rating { color: #92400E; background: #FEF3C7; border-color: #FDE68A; }
.aab-rating__star { color: #F59E0B; font-size: 1.1em; }
.aab-hero__certif { color: var(--aab-accent-dark); background: #E7F2E6; border-color: #CFE6CC; }
.aab-hero__open.is-open { color: #45993D; background: #E7F2E6; border-color: #CFE6CC; }
.aab-ico { width: 19px; height: 19px; flex: 0 0 auto; }
.aab-hero__media { position: relative; }
.aab-hero__imgwrap { position: relative; }
.aab-hero__img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 24px !important; display: block; box-shadow: 0 24px 60px rgba(15,23,42,.16); }
.aab-hero__ph { aspect-ratio: 4/3; border-radius: 24px; background: linear-gradient(135deg, var(--aab-accent), var(--aab-accent-dark)); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1.6rem; text-align: center; padding: 24px; box-shadow: 0 24px 60px rgba(22,163,74,.28); }
/* Mobile : le hero passe en 1 colonne → l'image 4/3 devenait trop haute.
   On l'aplatit (16/10) et on plafonne sa hauteur pour un rendu compact. */
@media (max-width: 880px) {
	.aab-hero__img, .aab-hero__ph { aspect-ratio: 16 / 10; max-height: 44vh; object-fit: cover; }
}
.aab-hero__badge { position: absolute; left: 18px; bottom: 18px; background: #fff; color: var(--aab-ink); font-weight: 700; font-size: 13px; padding: 8px 16px; border-radius: 999px; box-shadow: 0 6px 18px rgba(0,0,0,.16); }

/* Fond hero « dégradé accueil » (recette partagée avec le catalogue, préfixée aab-).
   Le dégradé vert clair + les 2 halos flous passent DERRIÈRE le contenu via
   ::before/::after en z-index négatif (stacking context isolé). La grille 2 colonnes
   du hero (texte/image) reste au-dessus sans réglage supplémentaire. Hauteur mini
   réglable (0 par défaut = respiration de l'accueil, pilotée par le contenu). */
.aab-herobg, .aab-herobg--soft {
	--aab-sec-tint: rgba(81,177,72,.12);
	--aab-sec-glow: #51B148;
	--aab-hero-minh: 0px;                 /* défaut : hauteur pilotée par le contenu = comme l'accueil */
	position: relative; isolation: isolate; overflow: hidden;
	min-height: var(--aab-hero-minh, 0px);
	/* Full-bleed : le hero occupe TOUTE la largeur de la page (bord à bord),
	   même si son conteneur est limité à 1180px. Le contenu reste centré sur
	   ~1180px grâce au padding horizontal calculé.
	   !important : bat la règle `.aab-fiche > section { margin: 0 0 60px }`
	   (spécificité supérieure) qui remettait les marges gauche/droite à 0. */
	width: auto !important;
	max-width: none !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	padding: clamp(48px, 8vw, 112px) max(20px, calc((100vw - 1180px) / 2));
	border-radius: 0;
	background: linear-gradient(135deg, var(--aab-sec-tint) 0%, #fff 46%, #fff 100%);
}
.aab-herobg::before, .aab-herobg::after { content:""; position:absolute; z-index:-1; border-radius:50%; filter:blur(90px); pointer-events:none; }
.aab-herobg::before { top:24px; right:-120px; width:360px; height:360px; background: color-mix(in srgb, var(--aab-sec-glow) 22%, transparent); }
.aab-herobg::after  { bottom:-60px; left:-140px; width:360px; height:360px; background: color-mix(in srgb, var(--aab-sec-glow) 12%, transparent); }
@supports not (background: color-mix(in srgb, #000 10%, transparent)) {
	.aab-herobg::before { background: rgba(81,177,72,.22); } .aab-herobg::after { background: rgba(81,177,72,.12); }
}
@media (max-width:600px){ .aab-herobg::before,.aab-herobg::after{width:220px;height:220px;filter:blur(70px);} }
/* Anti-débordement horizontal dû au full-bleed (100vw inclut la barre de défilement). */
.aab-page { overflow-x: hidden; }
/* Le hero pleine largeur est placé dans des conteneurs Elementor « boxés »
   (section + colonne, largeur max ~1280px) qui le rognent. On retire leur
   largeur max + overflow sur TOUT conteneur Elementor englobant le hero, pour
   qu'il atteigne les bords de l'écran. Le reste du contenu de la fiche reste
   contenu (.aab-fiche garde max-width:1180px). */
.elementor-element:has(.aab-herobg),
.elementor-container:has(.aab-herobg),
.e-con:has(.aab-herobg),
.e-con-inner:has(.aab-herobg),
.elementor-widget-aab_single > .elementor-widget-container,
.elementor-widget-aab_list > .elementor-widget-container {
	max-width: none !important;
	overflow: visible !important;
}

/* Bandeau d'infos à icônes */
.aab-infobar { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); border: 1px solid var(--aab-line); border-radius: 14px; overflow: hidden; background: #fff; }
.aab-info { display: flex; gap: 10px; align-items: center; padding: 13px 15px; border-right: 1px solid var(--aab-line); }
.aab-info:last-child { border-right: 0; }
@media (max-width: 760px) { .aab-info { border-right: 0; border-bottom: 1px solid var(--aab-line); } .aab-info:last-child { border-bottom: 0; } }
.aab-info__ico { color: var(--aab-accent); line-height: 0; }
.aab-info__ico .aab-ico { width: 19px; height: 19px; }
.aab-info__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.aab-info__l { text-transform: uppercase; letter-spacing: .05em; font-size: 10px; font-weight: 700; color: var(--aab-muted); }
.aab-info__v { color: var(--aab-ink); font-weight: 600; font-size: .9rem; }
.aab-info__v a { color: inherit; text-decoration: none; }
.aab-info__hl { color: var(--aab-lime); font-weight: 800; font-size: 1.05rem; }

/* En-tête de section */
.aab-sec__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 0 0 24px; }
.aab-sec__eyebrow { display: inline-flex; align-items: center; gap: 7px; text-transform: uppercase; letter-spacing: .14em; font-size: 12px; font-weight: 700; color: var(--aab-accent); margin: 0 0 8px; }
.aab-sec__eyebrow .aab-ico { width: 16px; height: 16px; }
.aab-sec__title { font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-size: clamp(1.55rem, 3vw, 2.2rem); font-weight: 800; color: var(--aab-ink); margin: 0; line-height: 1.1; letter-spacing: -.01em; }
.aab-sec__meta { display: inline-flex; align-items: center; gap: 7px; color: var(--aab-muted); font-weight: 600; font-size: .9rem; white-space: nowrap; }
.aab-sec__meta .aab-ico { width: 17px; height: 17px; }
.aab-sec__link { color: var(--aab-accent); font-weight: 700; text-decoration: none; white-space: nowrap; }
.aab-sec__link:hover { text-decoration: underline; }

/* Marques en grille */
.aab-brands { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 880px) { .aab-brands { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 560px) { .aab-brands { grid-template-columns: repeat(2, 1fr); } }
.aab-brand { display: flex; align-items: center; justify-content: center; min-height: 92px; padding: 18px; background: #fff; border: 1px solid var(--aab-line); border-radius: 16px; font-weight: 800; font-size: 1.15rem; color: var(--aab-ink); text-align: center; transition: border-color .2s ease, box-shadow .2s ease; }
.aab-brand:hover { border-color: var(--aab-accent); box-shadow: 0 10px 24px rgba(15,23,42,.08); }
.aab-brand--logo { padding: 16px 22px; }
.aab-brand--logo img { height: 48px; max-height: 56px; max-width: 100%; width: auto; object-fit: contain; display: block; }

/* Catégories de poêles présentes (chips arrondies, accent vert) */
.aab-cats-sec .aab-sec__head { margin-bottom: 18px; }
.aab-chips { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; }
.aab-chip { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; background: var(--aab-pill); border: 1px solid var(--aab-accent); border-radius: 999px; color: var(--aab-accent-dark); font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-weight: 700; font-size: .95rem; line-height: 1; }
.aab-chip::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--aab-accent); flex: 0 0 auto; }

/* Galerie bento (1 grande + petites) */
.aab-bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 170px; gap: 14px; }
.aab-bento__item { position: relative; display: block; overflow: hidden; border-radius: 18px; background: #f1f3f5; }
.aab-bento__item:first-child { grid-column: span 2; grid-row: span 2; }
.aab-bento__item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.aab-bento__item:hover img { transform: scale(1.05); }
@media (max-width: 760px) { .aab-bento { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 130px; } }
/* 1–2 photos : layout simple (pas de mosaïque avec une grande case isolée). */
.aab-bento--1 { grid-template-columns: 1fr; grid-auto-rows: auto; }
.aab-bento--1 .aab-bento__item:first-child { grid-column: auto; grid-row: auto; aspect-ratio: 16 / 9; }
.aab-bento--2 { grid-template-columns: 1fr 1fr; grid-auto-rows: auto; }
.aab-bento--2 .aab-bento__item, .aab-bento--2 .aab-bento__item:first-child { grid-column: auto; grid-row: auto; aspect-ratio: 4 / 3; }
@media (max-width: 560px) { .aab-bento--2 { grid-template-columns: 1fr; } }

/* Services à icônes */
.aab-svc { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
@media (max-width: 760px) { .aab-svc { grid-template-columns: 1fr; } }
.aab-svc__card { background: var(--aab-soft); border: 1px solid var(--aab-line); border-radius: 20px; padding: 34px 26px; text-align: center; box-shadow: 0 10px 30px rgba(15,23,42,.06); }
.aab-svc__ico { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 16px; background: #E7F2E6; color: var(--aab-accent); margin: 0 auto 18px; }
.aab-svc__ico .aab-ico { width: 26px; height: 26px; }
.aab-svc__t { font-family: 'Poppins', system-ui, -apple-system, sans-serif; margin: 0 0 8px; font-weight: 700; color: var(--aab-ink); font-size: 1.15rem; }
.aab-svc__card p { margin: 0; color: var(--aab-muted); }
/* Bloc atouts centré */
/* Cadrage : le hero (.aab-herobg) est full-bleed mais son CONTENU est borné à
   ~1180px, tout comme .aab-stores / .aab-grid (les cartes agences). Rendu dans
   un widget Elementor, .aab-sec--features n'a AUCUNE largeur max → il s'étalait
   plus large que le hero et décalé à gauche. On le borne au même 1180px centré
   pour que les 3 cartes de bas de page fassent la même largeur que le hero. */
.aab-sec--features { max-width: 1180px; margin-left: auto; margin-right: auto; }
.aab-sec--features .aab-sec__head { justify-content: center; margin-bottom: 30px; }
.aab-sec--features .aab-sec__head > div { text-align: center; }
.aab-sec--features .aab-sec__eyebrow { justify-content: center; }

/* Avis Google */
.aab-rev__wrap { display: grid; grid-template-columns: 320px 1fr; gap: 22px; align-items: start; }
@media (max-width: 760px) { .aab-rev__wrap { grid-template-columns: 1fr; } }
.aab-rev__score { background: #fff; border: 1px solid var(--aab-line); border-radius: 18px; padding: 28px; text-align: center; }
.aab-rev__num { display: block; font-size: 3.4rem; font-weight: 800; color: var(--aab-lime); line-height: 1; }
.aab-rev__stars { display: inline-flex; gap: 3px; margin: 10px 0 12px; }
.aab-star { width: 22px; height: 22px; fill: #E5E7EB; }
.aab-star.is-on { fill: #F59E0B; }
.aab-rev__based { display: block; color: var(--aab-muted); font-size: .95rem; margin-bottom: 12px; }
.aab-rev__list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.aab-rev__list:empty { display: none; }
@media (max-width: 560px) { .aab-rev__list { grid-template-columns: 1fr; } }
/* Si pas d'avis détaillés (crochet vide), le bloc note occupe toute la largeur. */
.aab-rev__wrap:has(.aab-rev__list:empty) { grid-template-columns: 1fr; max-width: 420px; }

/* Zones d'intervention (encart nuage de villes, SEO) — centré */
.aab-zones { background: var(--aab-soft); border: 1px solid var(--aab-line); border-radius: 24px; padding: 34px; text-align: center; }
.aab-zones .aab-sec__head { margin-bottom: 20px; justify-content: center; }
.aab-zones .aab-sec__head > div { text-align: center; }
.aab-zones .aab-sec__eyebrow { justify-content: center; }
.aab-zones__list { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; padding: 0; margin: 0; justify-content: center; }
.aab-zone { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 1px solid var(--aab-line); border-radius: 999px; padding: 8px 15px 8px 12px; font-weight: 600; color: var(--aab-ink); }
.aab-zone .aab-ico { width: 16px; height: 16px; color: var(--aab-accent); flex: 0 0 auto; }

/* Cartes d'avis (Aegis-Avis) */
.aab-revcard { background: #fff; border: 1px solid var(--aab-line); border-radius: 18px; padding: 22px; display: flex; flex-direction: column; }
.aab-revcard__quote { font-size: 2.6rem; line-height: .5; color: var(--aab-line); font-family: Georgia, 'Times New Roman', serif; }
.aab-revcard__stars { display: inline-flex; gap: 2px; margin: 8px 0 10px; }
.aab-revcard__stars .aab-star { width: 18px; height: 18px; }
.aab-revcard__text { color: var(--aab-text); margin: 0 0 16px; }
.aab-revcard__who { display: flex; align-items: center; gap: 12px; margin-top: auto; border-top: 1px solid var(--aab-line); padding-top: 14px; font-size: .9rem; color: var(--aab-ink); }
.aab-revcard__ava { width: 38px; height: 38px; border-radius: 50%; background: #E7F2E6; color: var(--aab-accent); display: inline-flex; align-items: center; justify-content: center; font-weight: 800; flex: 0 0 auto; }
.aab-revcard__date { color: var(--aab-muted); font-weight: 500; }

/* --- Avis en carrousel (option widget « Avis en carrousel ») --- */
.aab-rev__list--carousel { display: flex; grid-template-columns: none; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; padding: 2px 2px 8px; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.aab-rev__list--carousel > * { scroll-snap-align: start; flex: 0 0 300px; max-width: 300px; }
@media (max-width: 560px) { .aab-rev__list--carousel > * { flex-basis: 84%; max-width: 84%; } }
.aab-rev__nav { display: flex; gap: 10px; justify-content: center; margin-top: 14px; grid-column: 2; }
@media (max-width: 760px) { .aab-rev__nav { grid-column: 1; } }
.aab-rev__arrow { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--aab-line); background: #fff; color: var(--aab-ink); font-size: 1.5rem; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background .15s, color .15s, border-color .15s; }
.aab-rev__arrow:hover:not(:disabled) { background: var(--aab-accent); color: #fff; border-color: var(--aab-accent); }
.aab-rev__arrow:disabled { opacity: .4; cursor: default; }
.aab-rev__arrow:focus-visible { outline: 2px solid var(--aab-accent); outline-offset: 2px; }

/* Nous trouver : en-tête + horaires | carte + venir */
.aab-visit-wrap .aab-sec__head { margin-bottom: 24px; }
.aab-card__title { display: flex; align-items: center; gap: 8px; font-size: 1.25rem; font-weight: 800; color: var(--aab-ink); margin: 0 0 18px; }
.aab-card__title .aab-ico { width: 20px; height: 20px; color: var(--aab-accent); }
.aab-visit { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: stretch; }
@media (max-width: 880px) { .aab-visit { grid-template-columns: 1fr; } }
.aab-hours { background: #fff; border: 1px solid var(--aab-line); border-radius: 24px; padding: 38px 40px; }
.aab-hours .aab-sec__title { margin-bottom: 30px; }
/* Reset des styles de <table> du thème (zébrures, bordures de cellules, trait vertical). */
.aab-hours__table { width: 100%; border-collapse: collapse; border: 0 !important; margin: 0; background: transparent !important; }
.aab-hours__table tr, .aab-hours__table tbody, .aab-hours__table tbody tr { background: transparent !important; border: 0 !important; }
.aab-hours__table th, .aab-hours__table td { background: transparent !important; border: 0 !important; border-bottom: 1px solid var(--aab-line) !important; padding: 18px 0 !important; font-size: 1.05rem; vertical-align: middle; }
.aab-hours__table tr:last-child th, .aab-hours__table tr:last-child td { border-bottom: 0 !important; }
.aab-hours__table th { text-align: left; color: var(--aab-ink); font-weight: 700; }
.aab-hours__table td { text-align: right; color: var(--aab-muted); font-weight: 500; white-space: nowrap; }
.aab-closed { color: #EF4444; font-weight: 600; }
.aab-hours__table tr.is-today th, .aab-hours__table tr.is-today td { color: var(--aab-accent-dark); font-weight: 800; }
.aab-hours__badge { display: inline-block; margin-left: 8px; font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #45993D; background: #E7F2E6; border-radius: 999px; padding: 2px 9px; vertical-align: middle; }
.aab-hours__note { margin: 22px 0 0; color: var(--aab-muted); font-size: .92rem; line-height: 1.5; }
@media (max-width: 560px) { .aab-hours { padding: 26px 22px; } .aab-hours__table th, .aab-hours__table td { padding: 14px 0 !important; font-size: .98rem; } }
.aab-visit__side { display: flex; flex-direction: column; gap: 18px; }
.aab-map { position: relative; flex: 1 1 auto; display: flex; }
.aab-map__badge { position: absolute; top: 14px; left: 14px; z-index: 1; display: inline-flex; align-items: center; gap: 6px; background: #fff; color: var(--aab-ink); font-weight: 700; font-size: 13px; padding: 6px 12px; border-radius: 999px; box-shadow: 0 4px 14px rgba(0,0,0,.14); }
.aab-map__badge .aab-ico { width: 15px; height: 15px; color: var(--aab-accent); }
.aab-map__frame { flex: 1 1 auto; border-radius: 18px; overflow: hidden; border: 1px solid var(--aab-line); }
.aab-map__frame iframe { width: 100%; height: 100%; min-height: 240px; border: 0; display: block; }
.aab-venir {
	border: 1px solid var(--aab-line); border-radius: 18px; padding: 26px;
	position: relative; isolation: isolate; overflow: hidden;
	/* Fond « hero » : dégradé + halos verts, comme la section hero. */
	background: linear-gradient(135deg, var(--aab-sec-tint, rgba(81,177,72,.12)) 0%, #fff 46%, #fff 100%);
}
.aab-venir::before, .aab-venir::after { content:""; position:absolute; z-index:-1; border-radius:50%; filter:blur(80px); pointer-events:none; }
.aab-venir::before { top:-40px; right:-90px; width:260px; height:260px; background: color-mix(in srgb, var(--aab-sec-glow, #51B148) 20%, transparent); }
.aab-venir::after  { bottom:-70px; left:-100px; width:260px; height:260px; background: color-mix(in srgb, var(--aab-sec-glow, #51B148) 12%, transparent); }
@supports not (background: color-mix(in srgb, #000 10%, transparent)) {
	.aab-venir::before { background: rgba(81,177,72,.20); } .aab-venir::after { background: rgba(81,177,72,.12); }
}
.aab-venir__addr { color: var(--aab-ink); font-weight: 600; margin: 0 0 6px; }
.aab-venir__acces { color: var(--aab-muted); font-size: .92rem; margin: 0 0 18px; }
.aab-venir__btns { display: flex; flex-wrap: wrap; gap: 12px; }

/* Boutons */
.aab-btn { display: inline-flex; align-items: center; gap: 8px; padding: 13px 22px; border-radius: 12px; font-weight: 700; text-decoration: none; border: 1px solid transparent; cursor: pointer; font-family: inherit; }
.aab-btn .aab-ico { width: 18px; height: 18px; }
.aab-btn--primary { background: var(--aab-accent); color: #fff; box-shadow: 0 10px 24px rgba(22,163,74,.28); }
.aab-btn--primary:hover { background: var(--aab-accent-dark); }
.aab-btn--ghost { background: #fff; color: var(--aab-ink); border-color: var(--aab-line); }
.aab-btn--ghost:hover { border-color: var(--aab-accent); color: var(--aab-accent); }

/* CTA final */
.aab-cta2 { background: #E7F2E6; border: 1px solid #CFE6CC; border-radius: 24px; padding: 52px 24px; box-shadow: 0 10px 30px rgba(15,23,42,.06); }
/* Centrage robuste du cadre CTA (fiche + archive) — bat les resets Elementor/thème sur <section>. */
.aab-fiche .aab-cta2, .aab-stores .aab-cta2, .aab-model-page .aab-cta2, .aab-cta2 { max-width: 900px !important; margin-left: auto !important; margin-right: auto !important; text-align: center !important; }
.aab-cta2__title { font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-size: clamp(1.7rem, 3.4vw, 2.4rem); font-weight: 700; color: var(--aab-ink); margin: 0 0 10px; }
.aab-cta2__sub { color: var(--aab-muted); margin: 0 0 24px; }
.aab-cta2__btns { display: inline-flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
/* Espacement entre les sections rendues par les widgets liste/fiche agence : dans
   un conteneur Elementor, la règle « .aab-page__inner > * + * » ne s'applique pas,
   d'où atouts + CTA collés (effet de chevauchement). On rétablit un écart responsive. */
.elementor-widget-aab_list .aab-sec,
.elementor-widget-aab_list .aab-cta2,
.elementor-widget-aab_single .aab-sec,
.elementor-widget-aab_single .aab-cta2 { margin-top: clamp(40px, 6vw, 60px); }
@media (max-width: 760px) { .aab-cta2 { padding: 40px 20px; } }

/* Badge générique (réutilisable) */
.aab-badge { display: inline-flex; align-items: center; gap: 6px; background: var(--aab-soft); color: var(--aab-ink); font-weight: 600; font-size: 13px; padding: 7px 14px; border-radius: 999px; text-decoration: none; }
.aab-badge--note { background: #FEF3C7; color: #B45309; }
.aab-badge.is-open { background: #E7F2E6; color: #45993D; }

/* Effets / style minimal */
.aab-card-fx { transition: transform .22s ease, box-shadow .22s ease; }
.aab-bare .aab-store, .aab-bare .aab-svc__card, .aab-bare .aab-hours, .aab-bare .aab-venir, .aab-bare .aab-brand, .aab-bare .aab-infobar, .aab-bare .aab-cta2, .aab-bare .aab-rev__score { background: none; box-shadow: none; border: 0; }

/* Lightbox galerie */
.aab-lb { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(8,10,14,.85); opacity: 0; visibility: hidden; transition: opacity .2s ease, visibility .2s ease; }
.aab-lb.is-open { opacity: 1; visibility: visible; }
.aab-lb img { max-width: 92vw; max-height: 88vh; border-radius: 12px; }
.aab-lb__close { position: absolute; top: 20px; right: 24px; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,.15); color: #fff; font-size: 24px; cursor: pointer; }

@media (max-width: 640px) { .aab-grid > .aab-store { flex: 1 1 100%; } }

/* ===================================================================
   Sécurité responsive (mobile) — évite tout débordement horizontal.
   L'override !important bat le CSS « colonnes » généré par Elementor.
   =================================================================== */
.aab-store { min-width: 0; max-width: 100%; }
.aab-grid > .aab-store { min-width: 0; }
.aab-store__meta li { min-width: 0; overflow-wrap: anywhere; }
.aab-stores img, .aab-fiche img, .aab-page img, .aab-stores iframe, .aab-fiche iframe, .aab-map__frame iframe { max-width: 100%; }
@media (max-width: 600px) {
	.aab-stores:not(.aab-stores--rows) .aab-grid, .aab-grid { grid-template-columns: 1fr !important; }
	.aab-grid > .aab-store { flex: 1 1 100%; }
	.aab-svc { grid-template-columns: 1fr; }
	.aab-rev__list { grid-template-columns: 1fr; }
	.aab-sec__head { flex-wrap: wrap; }
}
@media (max-width: 460px) {
	.aab-bento { grid-template-columns: 1fr; grid-auto-rows: auto; }
	.aab-bento__item:first-child { grid-column: auto; grid-row: auto; aspect-ratio: 16 / 9; }
	.aab-hours__table td { white-space: normal; }
}

/* ============================================================
   Fond hero en IMAGE (widget fiche — option « Image de fond »)
   ============================================================ */
.aab-herobg--image { position: relative; isolation: isolate; overflow: hidden; background-size: cover; background-position: center; min-height: var(--aab-hero-minh, 340px); padding: clamp(28px, 4vw, 56px); }
.aab-herobg--image::before { content: ""; position: absolute; inset: 0; z-index: 0; background: rgba(17, 24, 20, .5); }
.aab-herobg--image > * { position: relative; z-index: 1; }
.aab-hero--light .aab-hero__eyebrow { color: #dff3db; }
.aab-hero--light .aab-hero__title,
.aab-hero--light .aab-hero__lead,
.aab-hero--light .aab-hero__lead * { color: #fff; }
.aab-hero--light .aab-hero__coords,
.aab-hero--light .aab-hero__coords a,
.aab-hero--light .aab-hero__coords span,
.aab-hero--light .aab-hero__meta,
.aab-hero--light .aab-hero__meta * { color: rgba(255, 255, 255, .94); }
.aab-hero--light .aab-hero__coords-ic { color: #fff; }

/* ============================================================
   Widget « Showrooms » (design accueil3 : cartes photo + overlay)
   ============================================================ */
/* Padding normal (relatif au conteneur, PAS au viewport) : l'ancien
   « calc((100vw - 1220px)/2) » supposait une section pleine largeur ; placé dans
   une colonne Elementor bornée (ex. 1140px), il écrasait le contenu. Le contenu
   est désormais centré via max-width sur l'en-tête et la grille (cf. plus bas),
   ce qui fonctionne aussi bien en colonne bornée qu'en pleine largeur. */
.aab-shr { --aab-accent: #51B148; --aab-line: #E2E5E8; --aab-ink: #171B1F; --aab-muted: #5E6468; padding: clamp(40px, 6vw, 80px) 0; }
/* Sans inset horizontal sur PC → la grille s'aligne sur la largeur du conteneur
   (comme les autres sections du site). Marge latérale rétablie sur mobile. */
@media (max-width: 700px) { .aab-shr { padding-left: 16px; padding-right: 16px; } }
.aab-shr__head, .aab-shr__grid { max-width: 1220px; margin-inline: auto; }
.aab-shr__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin: 0 0 clamp(28px, 4vw, 44px); }
.aab-shr__head-l { max-width: 640px; }
.aab-shr__head-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .18em; color: var(--aab-accent); margin: 0 0 12px; }
.aab-shr__head-eyebrow svg { width: 15px; height: 15px; }
.aab-shr__head-title { font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-size: clamp(1.7rem, 3.6vw, 2.6rem); font-weight: 800; color: var(--aab-ink); margin: 0 0 12px; line-height: 1.1; letter-spacing: -.01em; }
.aab-shr__head-sub { color: var(--aab-muted); line-height: 1.6; margin: 0; }
.aab-shr__head-btn { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 8px; padding: 11px 22px; border: 1px solid var(--aab-line); border-radius: 999px; background: #fff; color: var(--aab-ink); font-weight: 700; font-size: 14px; text-decoration: none; transition: border-color .15s, color .15s, background .15s; }
.aab-shr__head-btn:hover { border-color: var(--aab-accent); color: var(--aab-accent); }

.aab-shr__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(14px, 1.4vw, 20px); }
.aab-shr__card { position: relative; display: block; min-height: 440px; border-radius: 18px; overflow: hidden; border: 1px solid rgba(255,255,255,.08); box-shadow: 0 14px 34px -16px rgba(20, 40, 30, .4); isolation: isolate; text-decoration: none; }
.aab-shr__card--noimg { background: linear-gradient(160deg, #2f7a2b, #1f2a24); }
.aab-shr__card-bg { position: absolute; inset: 0; z-index: 0; background-size: cover; background-position: center; transition: transform .7s ease; }
.aab-shr__card:hover .aab-shr__card-bg { transform: scale(1.05); }
.aab-shr__card-ov { position: absolute; inset: 0; z-index: 1; background: linear-gradient(var(--aab-shr-veil, transparent), var(--aab-shr-veil, transparent)), linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.55) 45%, rgba(0,0,0,.2) 100%); }
.aab-shr__card-body { position: relative; z-index: 2; padding: 24px; color: #fff; }
.aab-shr__card-badge { display: inline-block; background: var(--aab-accent); color: #fff; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; padding: 6px 13px; border-radius: 999px; }
.aab-shr__card-title { font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-size: 1.55rem; font-weight: 800; color: #fff; margin: 96px 0 0; line-height: 1.1; letter-spacing: -.01em; text-shadow: 0 2px 10px rgba(0,0,0,.4); }
.aab-shr__card-info { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.aab-shr__card-info li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: rgba(255,255,255,.86); line-height: 1.4; }
.aab-shr__card-info svg { width: 17px; height: 17px; color: var(--aab-accent); flex: 0 0 auto; margin-top: 1px; }
.aab-shr__card-actions { display: flex; gap: 10px; margin-top: 20px; }
.aab-shr__card-cta { flex: 1 1 auto; display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: var(--aab-accent); color: #fff; font-weight: 700; font-size: 13px; padding: 11px 18px; border-radius: 999px; text-decoration: none; transition: filter .15s; }
.aab-shr__card-cta:hover { filter: brightness(.93); color: #fff; }
.aab-shr__card-phone { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 999px; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.35); color: #fff; text-decoration: none; transition: background .15s; }
.aab-shr__card-phone:hover { background: rgba(255,255,255,.28); }
.aab-shr__card-phone svg { width: 18px; height: 18px; }

/* 4 agences sur UNE ligne en grand écran (grille pleine largeur du conteneur,
   alignée sur le reste du site) ; 2 colonnes en dessous, 1 sur mobile. */
@media (max-width: 1080px) { .aab-shr__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 900px) { .aab-shr__card { min-height: 360px; } .aab-shr__card-title { margin-top: 52px; } }
@media (max-width: 560px) { .aab-shr__grid { grid-template-columns: 1fr; } .aab-shr__head { flex-direction: column; align-items: flex-start; } .aab-shr__card { min-height: 290px; } .aab-shr__card-title { margin-top: 32px; } .aab-shr__card-body { padding: 20px; } .aab-shr__card-info li.aab-shr__info-tel { display: none; } }

/* Footer identique partout : Hello Elementor applique padding:64px 24px 32px à
   .site-footer-inner via son template pleine largeur (accueil), mais pas sur nos
   templates PHP (catégorie / fiche produit / agences) où le footer perdait ce
   padding. On le réplique pour aligner le footer sur celui de l’accueil. */
.site-footer-inner { padding: 64px 24px 32px; }

/* Bandeau « Congés » temporaire (option aab_conges, expiration automatique par
   les dates) : fond ambré doux près des horaires. Version --mini pour les
   cartes de la liste d'agences. */
.aab-conges { display: flex; align-items: center; gap: 12px; margin: 26px 0 8px; padding: 14px 18px; background: #FEF3C7; border: 1px solid #FCD34D; border-radius: 12px; color: #92400E; font-weight: 600; font-size: 15px; line-height: 1.45; }
.aab-conges__ico { font-size: 20px; line-height: 1; flex: 0 0 auto; }
.aab-conges--mini { margin: 10px 0 0; padding: 8px 12px; font-size: 13px; border-radius: 10px; gap: 8px; }
.aab-conges--mini .aab-conges__ico { font-size: 16px; }

/* ======================================================================
   TEMPLATE « AGENCES SIGNATURE » (.aab-sig) — reproduction de la maquette
   Lovable /agences3 : palette encre/vert, hero pleine largeur, carte,
   agences en lignes alternées, atouts, CTA. Opt-in via option aab_template.
   ====================================================================== */
.aab-sig {
	--sig-ink: #16211b;
	--sig-green: #2f8f4e;
	--sig-green-soft: #7fdba3;
	--sig-cream: #ffffff;
	--sig-cream2: #f2f8f4;
	color: var(--sig-ink);
	font-family: 'Open Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
	font-size: 16px;
	line-height: 1.6;
	background: var(--sig-cream);
}
.aab-sig *, .aab-sig *::before, .aab-sig *::after { box-sizing: border-box; }
/* Archive /agences en template Signature : hero plein écran (pas de gouttière). */
.aab-page--signature { padding: 0 !important; max-width: none !important; }
.aab-sig ul, .aab-sig ol { list-style: none !important; margin: 0; padding: 0; }
.aab-sig li::before { content: none !important; }
.aab-sig a { text-decoration: none; box-shadow: none; color: inherit; }
.aab-sig img { max-width: 100%; display: block; }

/* Surtitre en filet + titres de section */
.aab-sig__eyebrow { display: flex; align-items: center; gap: 12px; font-family: 'Poppins', system-ui, sans-serif; font-size: 10px; font-weight: 800; letter-spacing: .5em; text-transform: uppercase; color: var(--sig-green); margin: 0; }
.aab-sig__eyebrow--bar { letter-spacing: .4em; }
.aab-sig__eyebrow--center { justify-content: center; letter-spacing: .5em; }
.aab-sig__rule { display: inline-block; width: 40px; height: 1px; background: var(--sig-green); flex: 0 0 auto; }
.aab-sig__h2 { font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: clamp(1.9rem, 4vw, 3rem); line-height: 1.05; margin: 22px 0 0; max-width: 46rem; }
.aab-sig__h2 span { font-style: italic; font-weight: 300; color: var(--sig-green); }

/* Boutons */
.aab-sig-btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 999px; padding: 14px 28px; font-family: 'Poppins', system-ui, sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .25em; text-transform: uppercase; transition: opacity .2s, transform .2s; }
.aab-sig-btn--sm { padding: 12px 22px; letter-spacing: .22em; }
.aab-sig-btn svg { width: 15px; height: 15px; }
.aab-sig .aab-sig-btn--ink { background: var(--sig-ink); color: var(--sig-cream); }
.aab-sig .aab-sig-btn--ink:hover { opacity: .9; }
.aab-sig .aab-sig-btn--ghost { border: 1px solid rgba(22,33,27,.28); color: var(--sig-ink); background: rgba(255,255,255,.7); }
.aab-sig .aab-sig-btn--ghost:hover { opacity: .8; }

/* ---------------- HERO ---------------- */
/* Largeur PLEINE (full-bleed 100vw centré) alignée sur les heros de référence :
   hero « Flamme » d'aegis-catalogue et hero « Édition » d'aegis-realisations. Même
   technique EXACTE : le fond + le voile sont étirés à width:100vw et recentrés par
   translateX(-50%) → ils touchent les deux bords de l'écran, quel que soit le
   conteneur (Elementor boxé) ; le contenu, lui, reste borné dans .aab-sig__hero-in.
   Pas d'overflow:hidden sur la section (il rognait le fond au conteneur) ; le
   débordement horizontal est neutralisé par overflow-x:clip sur <body>. */
.aab-sig__hero { position: relative; border-bottom: 1px solid rgba(22,33,27,.12); }
.aab-sig__hero > .aab-sig__hero-bg { position: absolute; top: 0; bottom: 0; left: 50%; transform: translateX(-50%); width: 100vw; height: 100%; background-size: cover; background-position: center; z-index: 0; }
/* Voile crème : solide à gauche (sous le texte), fondu jusqu'à TRANSPARENT au bord
   droit → l'image atteint le bord de l'écran sans arête dure (fondu propre). */
.aab-sig__hero > .aab-sig__hero-veil { position: absolute; top: 0; bottom: 0; left: 50%; transform: translateX(-50%); width: 100vw; height: 100%; z-index: 0; background: linear-gradient(100deg, #fff 0%, #fff 30%, rgba(255,255,255,.86) 45%, rgba(255,255,255,.42) 62%, rgba(255,255,255,.12) 82%, rgba(255,255,255,0) 100%); }
.aab-sig__halo { position: absolute; left: -6rem; top: 33%; width: 30rem; height: 30rem; border-radius: 50%; background: rgba(47,143,78,.15); filter: blur(90px); pointer-events: none; z-index: 0; }
/* Anti-scroll horizontal dû au fond 100vw / au halo. */
html:has(.aab-sig), body:has(.aab-sig) { overflow-x: hidden; overflow-x: clip; }
.aab-sig__hero-in { position: relative; z-index: 1; max-width: 1400px; margin: 0 auto; padding: 84px 24px; display: grid; grid-template-columns: 7fr 5fr; gap: 40px; align-items: center; }
.aab-sig__hero-main { min-width: 0; }
.aab-sig__title { font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: clamp(3rem, 7vw, 5.5rem); line-height: .95; letter-spacing: -.02em; margin: 26px 0 0; }
.aab-sig__title-grad { display: block; margin-top: 8px; font-style: italic; font-weight: 300; background: linear-gradient(90deg, var(--sig-green), #5fd18a, var(--sig-green)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.aab-sig__lead { max-width: 34rem; margin: 30px 0 0; font-size: 1.05rem; line-height: 1.7; color: rgba(22,33,27,.7); }
.aab-sig__hero-btns { display: flex; flex-wrap: wrap; gap: 12px; margin: 36px 0 0; }
.aab-sig__hero-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 16px; max-width: 32rem; margin: 46px 0 0; }
.aab-sig__stat-k { display: block; font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: clamp(1.8rem, 3vw, 2.25rem); line-height: 1; color: var(--sig-green); }
.aab-sig__stat-v { display: block; margin-top: 8px; font-size: 9px; font-weight: 800; letter-spacing: .25em; text-transform: uppercase; color: rgba(22,33,27,.6); }

/* Carte signature (aside) */
.aab-sig__hero-aside { min-width: 0; }
.aab-sig__card { position: relative; overflow: hidden; border-radius: 26px; border: 1px solid rgba(22,33,27,.14); background: var(--sig-ink); box-shadow: 0 30px 60px -20px rgba(22,33,27,.34); }
.aab-sig__card-img { width: 100%; height: 560px; object-fit: cover; }
.aab-sig__card-veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,33,27,0) 40%, rgba(22,33,27,.6) 100%); }
.aab-sig__card-badge { position: absolute; left: 22px; top: 22px; display: flex; align-items: center; gap: 12px; padding: 8px 16px; border-radius: 999px; background: rgba(22,33,27,.55); border: 1px solid rgba(47,143,78,.5); backdrop-filter: blur(6px); font-family: 'Poppins', system-ui, sans-serif; font-size: 9px; font-weight: 800; letter-spacing: .4em; text-transform: uppercase; color: #bff3d2; }
.aab-sig__card-h { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--sig-green); background: rgba(47,143,78,.3); color: #bff3d2; font-weight: 900; letter-spacing: 0; }
.aab-sig__card-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 24px; }
.aab-sig__card-kick { font-family: 'Poppins', system-ui, sans-serif; font-size: 10px; font-weight: 800; letter-spacing: .4em; text-transform: uppercase; color: var(--sig-green-soft); margin: 0; }
.aab-sig__card-title { margin: 8px 0 0; font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: 1.7rem; color: #fff; line-height: 1.1; }
.aab-sig__card-title span { font-style: italic; font-weight: 300; color: var(--sig-green-soft); }

/* ---------------- CARTE (map) ---------------- */
.aab-sig__mapsec { border-bottom: 1px solid rgba(22,33,27,.1); background: var(--sig-cream2); }
.aab-sig__mapsec-in { max-width: 1400px; margin: 0 auto; padding: 64px 24px; }
.aab-sig__map { position: relative; margin-top: 30px; border-radius: 26px; overflow: hidden; border: 1px solid rgba(22,33,27,.14); background: var(--sig-cream); }
.aab-sig__map-frame { height: 380px; }
.aab-sig__map-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.aab-sig__map-pills { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-wrap: wrap; gap: 8px; padding: 20px; }
.aab-sig__pill { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border-radius: 999px; background: rgba(255,255,255,.92); border: 1px solid var(--sig-green); backdrop-filter: blur(6px); font-family: 'Poppins', system-ui, sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--sig-ink); transition: background .2s; }
.aab-sig__pill svg { color: var(--sig-green); }
.aab-sig__pill:hover { background: #fff; }

/* ---------------- AGENCES (lignes alternées) ---------------- */
.aab-sig__agences { max-width: 1400px; margin: 0 auto; padding: 82px 24px; }
.aab-sig__rows { display: flex; flex-direction: column; gap: 64px; margin-top: 56px; }
.aab-sig__row { display: grid; grid-template-columns: 7fr 5fr; gap: 34px; align-items: center; }
.aab-sig__row-media { position: relative; overflow: hidden; border-radius: 26px; border: 1px solid rgba(22,33,27,.1); background: var(--sig-ink); }
.aab-sig__row.is-alt .aab-sig__row-media { order: 2; }
.aab-sig__row-media img, .aab-sig__row-ph { width: 100%; height: 420px; object-fit: cover; }
.aab-sig__row-ph { display: grid; place-items: center; color: var(--sig-green-soft); font-family: 'Poppins', system-ui, sans-serif; font-weight: 800; font-size: 1.5rem; background: linear-gradient(135deg, #1f2d25, #16211b); }
.aab-sig__row-veil { position: absolute; inset: 0; background: linear-gradient(to top, rgba(22,33,27,.72), rgba(22,33,27,.05) 55%); }
.aab-sig__row-num { position: absolute; left: 20px; top: 18px; font-family: 'Poppins', system-ui, sans-serif; font-size: .7rem; font-weight: 900; letter-spacing: .3em; color: var(--sig-green-soft); }
.aab-sig__row-badge { position: absolute; right: 20px; top: 18px; padding: 5px 13px; border-radius: 999px; border: 1px solid rgba(47,143,78,.5); background: rgba(0,0,0,.35); backdrop-filter: blur(4px); font-family: 'Poppins', system-ui, sans-serif; font-size: 9px; font-weight: 800; letter-spacing: .3em; text-transform: uppercase; color: #bff3d2; }
.aab-sig__row-city { position: absolute; left: 24px; bottom: 22px; font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: clamp(1.8rem, 3vw, 2.4rem); color: #fff; line-height: 1; }
.aab-sig__row-body { min-width: 0; }
.aab-sig__row.is-alt .aab-sig__row-body { order: 1; }
.aab-sig__row-rating { display: flex; align-items: center; gap: 8px; color: var(--sig-green); font-size: .8rem; font-weight: 600; }
.aab-sig__stars { display: inline-flex; gap: 2px; }
.aab-sig__stars svg { width: 15px; height: 15px; }
.aab-sig__row-rating span:not(.aab-sig__stars) { color: rgba(22,33,27,.55); text-transform: uppercase; letter-spacing: .12em; font-size: .7rem; }
.aab-sig__row-blurb { margin: 18px 0 0; font-size: 1.1rem; line-height: 1.65; color: rgba(22,33,27,.78); }
.aab-sig__row-coords { display: flex; flex-direction: column; gap: 12px; margin: 24px 0 0; font-size: .95rem; color: rgba(22,33,27,.78); }
.aab-sig__row-coords li { display: flex; align-items: flex-start; gap: 10px; }
.aab-sig__row-coords svg { color: var(--sig-green); flex: 0 0 auto; margin-top: 3px; }
.aab-sig__row-coords a { color: rgba(22,33,27,.78); }
.aab-sig__row-coords a:hover { color: var(--sig-green); }
.aab-sig__hline { display: block; }
.aab-sig__row-stats { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; margin: 24px 0 0; padding-top: 24px; border-top: 1px solid rgba(22,33,27,.1); }
.aab-sig__row-num2 { display: block; font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: 1.8rem; color: var(--sig-green); }
.aab-sig__row-stats span:not(.aab-sig__row-num2) { display: block; font-size: 10px; font-weight: 800; letter-spacing: .3em; text-transform: uppercase; color: rgba(22,33,27,.55); margin-top: 2px; }
.aab-sig__row-btns { display: flex; flex-wrap: wrap; gap: 10px; margin: 26px 0 0; }

/* ---------------- SUR PLACE (atouts) ---------------- */
.aab-sig__services { border-top: 1px solid rgba(22,33,27,.1); border-bottom: 1px solid rgba(22,33,27,.1); background: var(--sig-cream2); }
.aab-sig__services-in { max-width: 1400px; margin: 0 auto; padding: 82px 24px; }
.aab-sig__svc-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1px; margin: 48px 0 0; background: rgba(22,33,27,.12); border: 1px solid rgba(22,33,27,.12); }
.aab-sig__svc { display: flex; flex-direction: column; padding: 34px; background: var(--sig-cream); }
.aab-sig__svc-ico { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--sig-green); background: rgba(47,143,78,.1); color: var(--sig-green); }
.aab-sig__svc-ico .aab-ico { width: 20px; height: 20px; }
.aab-sig__svc-t { font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: 1.25rem; margin: 24px 0 0; }
.aab-sig__svc p { margin: 12px 0 0; font-size: .95rem; line-height: 1.65; color: rgba(22,33,27,.7); }

/* ---------------- CTA FINAL ---------------- */
.aab-sig__cta { position: relative; overflow: hidden; background: var(--sig-cream); }
.aab-sig__cta-halo { position: absolute; inset: 0; background: radial-gradient(ellipse at center, rgba(47,143,78,.22), transparent 60%); pointer-events: none; }
.aab-sig__cta-in { position: relative; max-width: 56rem; margin: 0 auto; padding: 96px 24px; text-align: center; }
.aab-sig__cta-title { font-family: 'Poppins', system-ui, sans-serif; font-weight: 900; font-size: clamp(2.2rem, 5vw, 3.75rem); line-height: 1.05; margin: 24px 0 0; }
.aab-sig__cta-title span { font-style: italic; font-weight: 300; color: var(--sig-green); }
.aab-sig__cta-sub { max-width: 34rem; margin: 24px auto 0; font-size: 1.02rem; color: rgba(22,33,27,.7); }
.aab-sig__cta-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 38px 0 0; }

/* ---------------- RESPONSIVE ---------------- */
@media (max-width: 900px) {
	.aab-sig__hero-in { grid-template-columns: 1fr; gap: 34px; padding: 60px 20px; }
	.aab-sig__card-img { height: 420px; }
	.aab-sig__row { grid-template-columns: 1fr; gap: 22px; }
	.aab-sig__row.is-alt .aab-sig__row-media { order: 0; }
	.aab-sig__row.is-alt .aab-sig__row-body { order: 0; }
	.aab-sig__svc-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
	.aab-sig__hero-in, .aab-sig__mapsec-in, .aab-sig__agences, .aab-sig__services-in { padding-left: 16px; padding-right: 16px; }
	.aab-sig__hero-stats { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; }
	.aab-sig__row-media img, .aab-sig__row-ph { height: 260px; }
	.aab-sig__card-img { height: 340px; }
	.aab-sig-btn { padding: 12px 20px; letter-spacing: .18em; }
	.aab-sig__map-frame { height: 300px; }
}

/* ======================================================================
   WIDGET « Bouton Appeler une agence » (.aab-callbtn) — réplique du bouton
   d'appel de l'en-tête du site (pastille verte Poppins) + menu déroulant des
   agences avec numéros. Chaque ligne = lien tel: (appel direct au tap mobile).
   Valeurs par défaut = rendu réel du bouton d'en-tête relevé sur le site.
   ====================================================================== */
.aab-callbtn { position: relative; display: flex; justify-content: flex-start; font-family: 'Open Sans', system-ui, -apple-system, sans-serif; }
.aab-callbtn * { box-sizing: border-box; }
.aab-callbtn__btn {
	display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
	border: 0; margin: 0; padding: 12px 22px; border-radius: 999px;
	background: #51B148; color: #fff;
	font-family: 'Poppins', system-ui, -apple-system, sans-serif; font-weight: 800; font-size: 14px; line-height: 1.1;
	box-shadow: 6px 0 16px -6px rgba(22,163,74,.5);
	transition: background .2s ease, box-shadow .2s ease, transform .2s ease;
	-webkit-appearance: none; appearance: none;
}
.aab-callbtn__btn:hover, .aab-callbtn.is-open .aab-callbtn__btn { background: #45993D; }
.aab-callbtn__btn:focus-visible { outline: 2px solid #45993D; outline-offset: 2px; }
.aab-callbtn__btn { min-height: 44px; } /* cible tactile confortable (≥44px). */
/* Libellé du bouton : TOUJOURS visible (desktop ET mobile). Blindage contre les
   règles de thème « icône seule sur mobile » (font-size:0 / text-indent / width:0 /
   display:none appliqués aux textes de bouton en petit écran) qui, héritées, le
   masqueraient. On redéclare display + taille lisible avec !important. */
.aab-callbtn__btn .aab-callbtn__label {
	display: inline-block !important; visibility: visible !important; overflow: visible !important;
	width: auto !important; max-width: none !important; height: auto !important;
	line-height: inherit; letter-spacing: inherit; text-indent: 0 !important;
	white-space: nowrap; text-transform: none; clip: auto !important; clip-path: none !important;
}
.aab-callbtn__btn .aab-callbtn__ico { width: 18px; height: 18px; flex: 0 0 auto; }
.aab-callbtn__btn .aab-callbtn__chev { width: 16px; height: 16px; flex: 0 0 auto; transition: transform .2s ease; opacity: .9; }
.aab-callbtn.is-open .aab-callbtn__btn .aab-callbtn__chev { transform: rotate(180deg); }
.aab-bare.aab-callbtn .aab-callbtn__btn { background: none; color: inherit; box-shadow: none; padding: 0; }
/* Mode ICÔNE SEULE (libellé vide) : bouton compact carré/rond, sans espace résiduel,
   cible tactile ≥44px conservée. Le rayon 999px du bouton le rend circulaire. */
.aab-callbtn__btn--iconly { padding: 0; gap: 0; width: 48px; height: 48px; min-width: 48px; justify-content: center; }
.aab-callbtn__btn--iconly .aab-callbtn__ico { width: 20px; height: 20px; }

/* --------------------------------------------------------------------
   Préréglage « Contour clair / fantôme » — réplique EXACTE du bouton voisin
   « Découvrir notre catalogue » de l'accueil (classes site hero-btn-ghost +
   halo vert de hero-btn-primary) : fond transparent, contour clair #E5E7EB,
   texte sombre Poppins 700 12px majuscules, halo vert, arrondi total.
   Au survol : léger soulèvement, fond gris clair, contour qui fonce, texte VERT,
   halo renforcé (icône/chevron suivent via currentColor). !important pour battre
   les styles d'instance générés par Elementor (fond/typo/ombre réglés au widget).
   Cible : le préréglage du widget (.aab-callbtn--ghost) ET l'instance de l'accueil
   déjà posée (son ID Elementor), pour un rendu identique sans réédition.
   -------------------------------------------------------------------- */
.aab-callbtn--ghost .aab-callbtn__btn,
.elementor-element-8c69b93 .aab-callbtn__btn {
	background: transparent !important;
	color: #111827 !important;
	border: 1px solid #E5E7EB !important;
	border-radius: 999px !important;
	padding: 14px 28px !important;
	font-family: 'Poppins', system-ui, -apple-system, sans-serif !important;
	font-weight: 700 !important;
	font-size: 12px !important;
	letter-spacing: normal !important;
	text-transform: uppercase !important;
	gap: 8px !important;
	box-shadow: 0 10px 25px -5px rgba(22,163,74,.5) !important;
	transition: transform .3s ease, background .3s ease, border-color .3s ease, color .3s ease, box-shadow .3s ease !important;
}
.aab-callbtn--ghost .aab-callbtn__btn:hover,
.aab-callbtn--ghost .aab-callbtn__btn:focus-visible,
.aab-callbtn--ghost.is-open .aab-callbtn__btn,
.elementor-element-8c69b93 .aab-callbtn__btn:hover,
.elementor-element-8c69b93 .aab-callbtn__btn:focus-visible,
.elementor-element-8c69b93 .aab-callbtn.is-open .aab-callbtn__btn {
	transform: translateY(-2px) !important;
	background: #F3F4F6 !important;
	border-color: #111827 !important;
	color: #51B148 !important;
	box-shadow: 0 14px 30px -5px rgba(22,163,74,.6) !important;
	outline: none !important;
}

/* Menu déroulant ancré au bouton.
   position:FIXED (et non absolute) : le menu est retiré du flux et positionné par
   rapport à la fenêtre, calculé en JS sous le bouton (repositionné au scroll/resize).
   Objectif : ÉCHAPPER à tout ancêtre overflow:hidden (sections Elementor e-con) qui
   rognait le menu et masquait des agences. max-height + overflow-y:auto → si la liste
   est longue, elle défile à l'intérieur du menu ; toutes les agences restent joignables. */
.aab-callbtn__menu {
	--aab-cb-accent: #45993D;
	position: fixed; top: 0; left: 0; z-index: 100000;
	width: 300px; max-width: min(92vw, 380px);
	max-height: 80vh; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
	background: #fff; border: 1px solid #E2E5E8; border-radius: 16px;
	box-shadow: 0 20px 48px rgba(15,23,42,.18); padding: 8px;
	opacity: 0; transform: translateY(-6px); transition: opacity .16s ease, transform .16s ease;
}
.aab-callbtn.is-open .aab-callbtn__menu { opacity: 1; transform: translateY(0); }
.aab-callbtn__menu[hidden] { display: none; }
.aab-callbtn__menu-head { margin: 0; padding: 8px 12px 10px; font-family: 'Poppins', sans-serif; font-weight: 800; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--aab-cb-accent); border-bottom: 1px solid #EFF2F5; }
.aab-callbtn__list { list-style: none !important; margin: 6px 0 0; padding: 0; }
.aab-callbtn__list li::before { content: none !important; }
.aab-callbtn__item {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 11px 12px; border-radius: 10px; text-decoration: none;
	transition: background .15s ease;
}
.aab-callbtn__item:hover, .aab-callbtn__item:focus-visible { background: #F1F8EF; outline: none; }
.aab-callbtn__item-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.aab-callbtn__item-name { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 15px; color: #171B1F; line-height: 1.15; }
.aab-callbtn__item-type { font-size: 11px; color: #5E6468; text-transform: uppercase; letter-spacing: .04em; }
.aab-callbtn__item-tel { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: var(--aab-cb-accent); white-space: nowrap; }
.aab-callbtn__item-tel svg { width: 15px; height: 15px; flex: 0 0 auto; }

/* Mobile / tablette : garantit le TEXTE + l'icône du bouton (bouton complet, pas
   pictogramme seul). Force une taille lisible sur le libellé pour battre toute
   règle de thème « icône seule sur mobile » (ex. font-size:0 sur le bouton, qui
   laisse l'icône SVG visible mais masque le texte). Desktop (>782px) : la typo
   Elementor du bouton reste souveraine. */
@media (max-width: 782px) {
	.aab-callbtn__btn .aab-callbtn__label { font-size: 14px !important; display: inline-block !important; }
}
/* Mobile : le menu prend toute la largeur du bouton, lignes plus grandes (cible tactile). */
@media (max-width: 600px) {
	.aab-callbtn__menu { width: 300px; max-width: 94vw; }
	.aab-callbtn__item { padding: 14px 12px; }
	.aab-callbtn__item-name { font-size: 16px; }
	.aab-callbtn__item-tel { font-size: 15px; }
}
/* Très petit écran : réduit légèrement padding/typo pour que « texte + icône »
   tienne sans déborder — plutôt que de masquer le texte. */
@media (max-width: 360px) {
	.aab-callbtn__btn { padding: 11px 15px; gap: 6px; }
	.aab-callbtn__btn .aab-callbtn__label { font-size: 13px !important; }
	.aab-callbtn__btn .aab-callbtn__chev { width: 14px; height: 14px; }
}
