/*
Theme Name: AlterEgo
Theme URI: https://alteregopatrimoine.com
Author: AlterEgo Patrimoine
Description: Thème WordPress sur-mesure pour AlterEgo Patrimoine. Bloc/FSE, sans page builder, orienté performance et SEO local.
Version: 2.2.6
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: alterego
Tags: full-site-editing, block-patterns, custom-colors, custom-menu
*/

/* ------------------------------------------------------------------
   1. Réglages de base
------------------------------------------------------------------ */
:root {
  --ae-max: 1240px;
  --ae-gutter: clamp(1.25rem, 4vw, 3rem);
  --ae-t: 200ms cubic-bezier(.4, 0, .2, 1);
}

html { -webkit-text-size-adjust: 100%; }
body { text-rendering: optimizeLegibility; overflow-x: hidden; }
img, svg, video { max-width: 100%; height: auto; }
:where(a):focus-visible,
:where(button):focus-visible,
:where(input):focus-visible,
:where(select):focus-visible,
:where(textarea):focus-visible {
  outline: 2px solid var(--wp--preset--color--bronze);
  outline-offset: 2px;
}

.ae-skip {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  background: var(--wp--preset--color--ink); color: #fff; padding: .75rem 1.25rem;
}
.ae-skip:focus { left: 0; }

/* ------------------------------------------------------------------
   2. En-tête — une ligne, trois entrées par situation, un appel clair
------------------------------------------------------------------ */
.ae-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(251, 248, 243, .92);
  backdrop-filter: saturate(140%) blur(10px);
  border-bottom: 1px solid var(--wp--preset--color--line);
}
.ae-header__inner {
  max-width: calc(var(--ae-max) + 2 * var(--ae-gutter)); margin-inline: auto;
  padding: 0 var(--ae-gutter);
  display: flex; align-items: center; justify-content: space-between;
  gap: 1.5rem; min-height: 72px;
}
.ae-logo { display: flex; align-items: center; text-decoration: none; flex: 0 0 auto; }
.ae-logo img { width: 128px; height: auto; display: block; }

.ae-nav { display: flex; align-items: center; gap: 1.5rem; }
.ae-nav > a, .ae-nav__menu > summary {
  text-decoration: none; color: var(--wp--preset--color--ink);
  font-size: .9375rem; font-weight: 500; white-space: nowrap;
  transition: color var(--ae-t); cursor: pointer; list-style: none;
}
.ae-nav > a:hover, .ae-nav > a[aria-current="page"], .ae-nav__menu > summary:hover { color: var(--wp--preset--color--bronze); }

/* Menu « Nos communes » : huit liens vers les hubs communaux, depuis
   toutes les pages. C'est un maillage interne, pas un ornement. */
.ae-nav__menu { position: relative; }
.ae-nav__menu > summary::-webkit-details-marker { display: none; }
.ae-nav__menu > summary::after {
  content: ""; display: inline-block; width: 6px; height: 6px; margin-left: .45rem;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: translateY(-3px) rotate(45deg);
}
.ae-nav__panel {
  position: absolute; top: calc(100% + 1rem); left: 50%; transform: translateX(-50%);
  background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 18px;
  padding: .75rem; min-width: 420px; display: grid; grid-template-columns: 1fr 1fr; gap: .125rem;
  box-shadow: 0 24px 48px -24px rgba(20, 20, 19, .3);
}
.ae-nav__panel a {
  display: block; padding: .6rem .8rem; border-radius: 10px; text-decoration: none;
  color: var(--wp--preset--color--ink); font-size: .9375rem;
}
.ae-nav__panel a:hover { background: var(--wp--preset--color--sand); }
.ae-nav__panel a small { display: block; font-size: .75rem; color: #6c675e; margin-top: .1rem; }

.ae-header__cta {
  display: inline-block; background: var(--wp--preset--color--bronze); color: #fff;
  text-decoration: none; padding: .7rem 1.2rem; border-radius: 999px;
  font-size: .9375rem; font-weight: 700; white-space: nowrap;
  transition: background var(--ae-t), transform var(--ae-t);
}
.ae-header__cta:hover { background: var(--wp--preset--color--ink); color: #fff; }

.ae-burger {
  display: none; background: none; border: 0; padding: .5rem; cursor: pointer;
  color: var(--wp--preset--color--ink);
}
.ae-burger span { display: block; width: 22px; height: 1.5px; background: currentColor; margin: 5px 0; transition: transform var(--ae-t), opacity var(--ae-t); }
.ae-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.ae-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.ae-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

@media (max-width: 1060px) {
  .ae-burger { display: block; order: 3; }
  .ae-header__cta { display: none; }
  .ae-nav {
    position: fixed; inset: 72px 0 auto 0;
    background: var(--wp--preset--color--paper); flex-direction: column; align-items: stretch;
    gap: 0; padding: .5rem var(--ae-gutter) 2rem;
    border-bottom: 1px solid var(--wp--preset--color--line);
    box-shadow: 0 24px 40px -24px rgba(0,0,0,.25);
    max-height: calc(100dvh - 72px); overflow-y: auto;
    display: none;
  }
  .ae-nav.is-open { display: flex; }
  .ae-nav > a, .ae-nav__menu > summary { padding: 1rem 0; border-bottom: 1px solid var(--wp--preset--color--line); font-size: 1.0625rem; font-weight: 600; }
  .ae-nav__menu { position: static; }
  .ae-nav__panel {
    position: static; transform: none; min-width: 0; box-shadow: none; border: 0;
    background: transparent; padding: 0 0 .75rem; grid-template-columns: 1fr 1fr;
  }
  .ae-nav__mobile-cta {
    display: inline-block; margin-top: 1.25rem; text-align: center;
    background: var(--wp--preset--color--bronze); color: #fff !important; text-decoration: none;
    padding: 1rem 1.25rem; border-radius: 999px; font-weight: 700;
  }
}
@media (min-width: 1061px) { .ae-nav__mobile-cta { display: none; } }

/* ------------------------------------------------------------------
   3. Conteneurs et sections
------------------------------------------------------------------ */
.ae-wrap {
  max-width: calc(var(--ae-max) + 2 * var(--ae-gutter));
  margin-inline: auto; padding-inline: var(--ae-gutter);
}
.ae-section { padding-block: clamp(3rem, 6vw, 5.5rem); }
.ae-section--tight { padding-block: clamp(2.25rem, 4vw, 3.5rem); }
.ae-section--sand { background: var(--wp--preset--color--sand); }
.ae-section--ink { background: var(--wp--preset--color--ink); color: #fff; }
.ae-section--ink a { color: #fff; }
.ae-section--ink h1, .ae-section--ink h2, .ae-section--ink h3 { color: #fff; }

.ae-eyebrow {
  font-size: .75rem; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--preset--color--bronze); font-weight: 600; margin: 0 0 1rem;
}
.ae-lede { font-size: clamp(1.0625rem, 1.6vw, 1.25rem); line-height: 1.6; max-width: 62ch; }
.ae-measure { max-width: 68ch; }

/* ------------------------------------------------------------------
   4. Hero et boutons
------------------------------------------------------------------ */
.ae-hero { padding-block: clamp(3rem, 7vw, 6rem) clamp(2.5rem, 5vw, 4rem); border-bottom: 1px solid var(--wp--preset--color--line); }
.ae-hero h1 { margin: 0 0 1.25rem; max-width: 18ch; }
.ae-hero__lede { max-width: 56ch; margin: 0 0 2rem; font-size: clamp(1.0625rem, 1.6vw, 1.25rem); }
.ae-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; }

.ae-btn {
  display: inline-block; text-decoration: none; padding: .95rem 1.6rem;
  font-size: 1rem; font-weight: 700; letter-spacing: 0; text-transform: none; line-height: 1.2;
  border: 1.5px solid var(--wp--preset--color--ink); border-radius: 999px;
  transition: background var(--ae-t), color var(--ae-t), border-color var(--ae-t);
}
.ae-btn--solid { background: var(--wp--preset--color--ink); color: #fff; }
.ae-btn--solid:hover { background: var(--wp--preset--color--bronze); border-color: var(--wp--preset--color--bronze); color: #fff; }
.ae-btn--ghost { background: transparent; color: var(--wp--preset--color--ink); }
.ae-btn--ghost:hover { background: var(--wp--preset--color--ink); color: #fff; }
.ae-btn--accent { background: var(--wp--preset--color--bronze); border-color: var(--wp--preset--color--bronze); color: #fff; }
.ae-btn--accent:hover { background: var(--wp--preset--color--ink); border-color: var(--wp--preset--color--ink); color: #fff; }
.ae-btn--small { padding: .7rem 1.1rem; font-size: .9375rem; }

/* ------------------------------------------------------------------
   5. Grilles
------------------------------------------------------------------ */
.ae-grid { display: grid; gap: clamp(1.5rem, 3vw, 2.5rem); }
.ae-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.ae-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }
.ae-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }

.ae-card { background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 20px; padding: 1.5rem; }
.ae-section--sand .ae-card { border-color: transparent; }
.ae-card h3 { margin: 0 0 .5rem; font-size: 1.1875rem; }
.ae-card p { margin: 0 0 .75rem; }
.ae-card__link { font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; }

.ae-stat { border-left: 2px solid var(--wp--preset--color--bronze); padding-left: 1.125rem; }
.ae-stat__value { display: block; font-size: clamp(1.75rem, 3.5vw, 2.5rem); font-weight: 700; line-height: 1.05; letter-spacing: -.02em; }
.ae-stat__label { display: block; font-size: .8125rem; color: #5b5b5b; margin-top: .35rem; }
.ae-section--ink .ae-stat__label { color: #b9b9b9; }

/* ------------------------------------------------------------------
   6. Tableaux de données locales
------------------------------------------------------------------ */
.ae-table-wrap { overflow-x: auto; margin: 1.5rem 0; -webkit-overflow-scrolling: touch; }
.ae-table { width: 100%; border-collapse: collapse; font-size: .9375rem; min-width: 440px; }
.ae-table caption { text-align: left; font-size: .8125rem; color: #5b5b5b; padding-bottom: .75rem; }
.ae-table th, .ae-table td { text-align: left; padding: .7rem .75rem; border-bottom: 1px solid var(--wp--preset--color--line); }
.ae-table th { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
.ae-table th + td, .ae-table td + td, .ae-table th + th { text-align: right; font-variant-numeric: tabular-nums; }
.ae-table tbody tr:hover { background: var(--wp--preset--color--sand); }
.ae-source { font-size: .8125rem; color: #5b5b5b; margin-top: .5rem; }

/* Colonne chiffrée à échelle.
   Vingt lignes de prix alignés ne se comparent pas de l'œil : il faut lire
   chaque nombre et le retenir. Un filet proportionnel sous la valeur donne le
   classement immédiatement, sans rien enlever au chiffre exact. Le filet est
   posé sous le texte, en bas de cellule, pour ne jamais gêner la lecture. */
.ae-td--echelle { position: relative; }
.ae-td--echelle::after {
  content: "";
  position: absolute;
  right: .75rem;
  bottom: .42rem;
  height: 2px;
  /* 68 % de la largeur de colonne au maximum : la barre reste un repère, pas
     un graphique, et ne vient jamais sous le chiffre de la colonne voisine. */
  width: calc(var(--part, 0) * 68%);
  background: var(--wp--preset--color--bronze);
  opacity: .5;
  transform-origin: right;
}

/* Le filet est décoratif : il double une information déjà lisible dans la
   cellule. On le retire pour qui a demandé moins d'animation ou un contraste
   renforcé, où il devient du bruit. */
@media (prefers-contrast: more) {
  .ae-td--echelle::after { display: none; }
}

/* ------------------------------------------------------------------
   7. FAQ
------------------------------------------------------------------ */
/* Le module FAQ est centré dans la colonne de lecture plutôt que collé au
   bord gauche : sur grand écran, une liste pleine largeur se lit mal. */
.ae-faq {
  border-top: 1px solid var(--wp--preset--color--line);
  max-width: 820px;
  margin-inline: auto;
}
.ae-faq-section > .ae-wrap > h2,
.ae-faq-section > .ae-wrap > .ae-lede { text-align: center; }
.ae-faq details { border-bottom: 1px solid var(--wp--preset--color--line); }
.ae-faq summary {
  cursor: pointer; padding: 1.25rem 2.5rem 1.25rem 0; position: relative;
  font-weight: 600; font-size: 1.0625rem; list-style: none;
}
.ae-faq summary::-webkit-details-marker { display: none; }
.ae-faq summary::after {
  content: ""; position: absolute; right: .5rem; top: 50%; width: 10px; height: 10px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: translateY(-70%) rotate(45deg); transition: transform var(--ae-t);
}
.ae-faq details[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.ae-faq details > div { padding: 0 0 1.5rem; }
.ae-faq details > div > *:first-child { margin-top: 0; }

/* ------------------------------------------------------------------
   8. Simulateur d'estimation
------------------------------------------------------------------ */
.ae-sim { border: 1px solid var(--wp--preset--color--line); background: #fff; }
.ae-sim__head { padding: 1.75rem clamp(1.25rem, 3vw, 2.25rem) 0; }
.ae-sim__head h2, .ae-sim__head h3 { margin: 0 0 .5rem; }
.ae-sim__head p { margin: 0; color: #4a4a4a; }
.ae-sim__frame { position: relative; margin-top: 1.5rem; }
.ae-sim__poster {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem;
  min-height: 260px; padding: 2rem; background: var(--wp--preset--color--sand); text-align: center;
}
.ae-sim__poster p { margin: 0; max-width: 42ch; color: #4a4a4a; font-size: .9375rem; }
.ae-sim iframe { display: block; width: 100%; height: 720px; border: 0; }
.ae-sim__legal { padding: 1rem clamp(1.25rem, 3vw, 2.25rem) 1.5rem; font-size: .8125rem; color: #5b5b5b; border-top: 1px solid var(--wp--preset--color--line); }

/* ------------------------------------------------------------------
   9. Formulaire de contact / lead
------------------------------------------------------------------ */
.ae-form { display: grid; gap: 1.125rem; }
.ae-form__row { display: grid; gap: 1.125rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.ae-field { display: grid; gap: .4rem; }
.ae-field label { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
.ae-field input, .ae-field select, .ae-field textarea {
  border-width: 1.5px;
  /* Les champs de formulaire sont en content-box par défaut dans le
     navigateur : sans cette ligne, la largeur 100 % s'ajoute au rembourrage et
     à la bordure, et le champ dépasse sa colonne. */
  box-sizing: border-box;
  width: 100%; padding: .85rem .9rem; border: 1px solid var(--wp--preset--color--line);
  background: #fff; font: inherit; font-size: 1rem; color: inherit; border-radius: 12px;
  transition: border-color var(--ae-t);
}
.ae-field input:focus, .ae-field select:focus, .ae-field textarea:focus { border-color: var(--wp--preset--color--ink); }
.ae-field textarea { min-height: 130px; resize: vertical; }
.ae-consent { display: flex; gap: .7rem; align-items: flex-start; font-size: .8125rem; color: #4a4a4a; }
.ae-consent input { margin-top: .25rem; flex: 0 0 auto; width: 16px; height: 16px; }
.ae-hp { position: absolute !important; left: -9999px !important; }
.ae-form button { justify-self: start; }
.ae-form__msg { padding: 1rem 1.125rem; border-left: 3px solid var(--wp--preset--color--bronze); background: var(--wp--preset--color--sand); font-size: .9375rem; }
.ae-form__msg--err { border-left-color: #b3261e; }

/* ------------------------------------------------------------------
   10. Fil d'Ariane
------------------------------------------------------------------ */
.ae-breadcrumb { font-size: .75rem; letter-spacing: .04em; color: #6a6a6a; padding-block: 1rem; }
.ae-breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.ae-breadcrumb li::after { content: "/"; margin-left: .4rem; color: var(--wp--preset--color--line); }
.ae-breadcrumb li:last-child::after { content: ""; }
.ae-breadcrumb a { color: inherit; text-decoration: none; }
.ae-breadcrumb a:hover { color: var(--wp--preset--color--bronze); text-decoration: underline; }

/* ------------------------------------------------------------------
   11. Pied de page — éditorial, dense, sombre
------------------------------------------------------------------ */
.ae-footer { background: var(--wp--preset--color--ink); color: #d8d4cc; padding-block: 0 2rem; }
.ae-footer a { color: #d8d4cc; text-decoration: none; transition: color var(--ae-t); }
.ae-footer a:hover { color: #fff; text-decoration: underline; }

/* Bandeau recrutement : la page « Nous rejoindre » est volontairement
   absente du menu principal. Elle vit ici, sur toutes les pages. */
.ae-footer__recrute {
  background: var(--wp--preset--color--sand); color: var(--wp--preset--color--ink);
  padding-block: 1.5rem;
}
.ae-footer__recrute .ae-wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; }
.ae-footer__recrute p { margin: 0; font-size: 1rem; max-width: 70ch; }
.ae-footer__recrute p strong { font-weight: 700; }
.ae-footer__recrute a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; white-space: nowrap; }
.ae-footer__recrute a:hover { color: var(--wp--preset--color--bronze); }

.ae-footer__top {
  display: grid; gap: clamp(2rem, 5vw, 4rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
  padding-top: clamp(3.5rem, 7vw, 5.5rem);
}
@media (min-width: 900px) {
  .ae-footer__top { grid-template-columns: minmax(240px, 1.2fr) repeat(3, minmax(150px, 1fr)); }
}
.ae-footer__brand img { width: 150px; height: auto; margin-bottom: 1.25rem; }
.ae-footer__brand p { max-width: 34ch; font-size: .9375rem; line-height: 1.6; color: #a8a49c; }
.ae-footer h2, .ae-footer h3 {
  font-family: var(--wp--preset--font-family--sans);
  font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: #fff;
  margin: 0 0 1.125rem; font-weight: 600;
}
.ae-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; font-size: .9375rem; }
.ae-footer__legal {
  margin-top: clamp(2.5rem, 5vw, 4rem); padding-top: 2rem; border-top: 1px solid #2a2a29;
  font-size: .78125rem; line-height: 1.7; color: #8d897f;
}
.ae-footer__legal p { margin: 0 0 .6rem; max-width: 100ch; }
.ae-footer__legal a { color: #b8b4ac; text-decoration: underline; }
.ae-footer__bottom {
  margin-top: 1.5rem; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; justify-content: space-between;
  font-size: .78125rem; color: #8d897f;
}
.ae-footer__bottom ul { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }

/* Champ à compléter — visible en préproduction, masqué en production */
.ae-todo { background: #fff3cd; color: #6a4b00; padding: .1em .45em; font-weight: 700; }
body.ae-prod .ae-todo { display: none; }

/* ------------------------------------------------------------------
   12. Contenu éditorial
------------------------------------------------------------------ */
.entry-content > * { margin-block: 1.25rem; }
.entry-content h2 { margin-block: clamp(2.5rem, 5vw, 3.75rem) 1rem; }
.entry-content h3 { margin-block: 2rem .75rem; }
.entry-content ul, .entry-content ol { padding-left: 1.25rem; }
.entry-content li { margin-bottom: .5rem; }
.entry-content li::marker { color: var(--wp--preset--color--bronze); }

/* --- Listes ordonnées : une suite d'étapes, pas une énumération -------------
   Un « 1. » de corps de texte ne dit pas qu'on lit une séquence. Le numéro est
   sorti dans la marge, en gros, avec un rail vertical qui relie les étapes.
   Le compteur est posé sur la liste elle-même : la numérotation reste celle du
   document, donc lisible par un lecteur d'écran comme par un moteur. */
.entry-content ol.wp-block-list {
  list-style: none;
  counter-reset: ae-etape;
  padding-left: 0;
  margin: 2rem 0;
}
.entry-content ol.wp-block-list > li {
  counter-increment: ae-etape;
  position: relative;
  padding-left: 3.5rem;
  padding-bottom: 1.35rem;
  margin-bottom: 0;
}
.entry-content ol.wp-block-list > li::before {
  content: counter(ae-etape);
  position: absolute;
  left: 0;
  top: -.15rem;
  width: 2.25rem;
  text-align: right;
  font-size: 1.5rem;
  font-weight: 300;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
  color: var(--wp--preset--color--bronze);
}
/* Le rail relie une étape à la suivante ; la dernière n'en a pas, sinon il
   pend dans le vide sous le point d'arrivée. */
.entry-content ol.wp-block-list > li::after {
  content: "";
  position: absolute;
  left: 2.75rem;
  top: 1.9rem;
  bottom: .35rem;
  width: 1px;
  background: var(--wp--preset--color--line);
}
.entry-content ol.wp-block-list > li:last-child { padding-bottom: 0; }
.entry-content ol.wp-block-list > li:last-child::after { display: none; }
/* Le gras d'ouverture reste DANS la phrase. Sur certaines listes c'est une
   étiquette (« Estimation. En ligne pour… »), sur d'autres un fragment
   (« La localisation précise, et surtout le temps de trajet… ») : le passer en
   bloc ferait commencer la ligne suivante par une virgule. Le numéro et le
   rail suffisent à dire qu'on lit une séquence. */

/* Les listes à puces gardent leur intitulé dans la phrase : ici le gras est
   un fragment de phrase (« Le relevé technique : état des éléments… »), pas
   une étiquette. Le détacher en bloc laisserait des deux-points orphelins.
   On se contente de leur donner de l'air. */
.entry-content ul.wp-block-list > li { margin-bottom: .8rem; }
.entry-content blockquote {
  border-left: 2px solid var(--wp--preset--color--bronze); padding-left: 1.25rem; margin-left: 0;
  font-size: 1.125rem; font-style: normal;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ------------------------------------------------------------------
   13. Colonne de lecture
   Le texte est borné à une largeur confortable ET CENTRÉ. Borné sans
   être centré — ce qu'il était — il se colle à gauche et laisse
   plusieurs centaines de pixels de vide à droite sur un écran large :
   la page paraît bancale et le regard n'a pas d'axe.

   Les blocs de mise en page font exception et gardent la pleine
   largeur : ils encadrent la colonne au lieu de la subir.
------------------------------------------------------------------ */
:root {
  /* Largeur de la colonne de lecture. 62ch tient entre 60 et 70 signes
     par ligne, l'intervalle où l'œil retrouve le début de la ligne
     suivante sans effort. */
  --ae-col: 39rem; /* ≈ 65 signes par ligne en corps de texte, et la même largeur pour les titres */
}

.entry-content > :where(p, h1, h2, h3, h4, h5, h6, ul, ol, blockquote, figure, div,
  .ae-source, .ae-faq-section, .ae-formbox, .ae-sim,
  .wp-block-list, .wp-block-heading, .wp-block-quote, .wp-block-table) {
  max-width: var(--ae-col);
  margin-inline: auto;
}

/* Les tableaux ont besoin de plus d'air que la prose. */
.entry-content > .ae-table-wrap { max-width: 88ch; margin-inline: auto; }

/* Blocs de mise en page : pleine largeur du conteneur. */
.entry-content > :where(.alignfull, .alignwide, .ae-slot, .ae-fiche, .ae-vgrid,
  .ae-comp, .ae-galerie, .ae-media-fill, .ae-grid, .ae-vs) {
  max-width: none;
}

/* Bandes pleine largeur consécutives : pas de double respiration */
.ae-section + .ae-section,
.ae-hero + .ae-section { margin-top: 0; }
.ae-section--sand + .ae-section--sand { padding-top: 0; }

/* ------------------------------------------------------------------
   14. Accessibilité et finitions
------------------------------------------------------------------ */
.screen-reader-text {
  border: 0; clip-path: inset(50%); height: 1px; width: 1px;
  margin: -1px; overflow: hidden; padding: 0; position: absolute;
  white-space: nowrap;
}
.screen-reader-text:focus {
  clip-path: none; height: auto; width: auto; margin: 0; padding: .75rem 1.25rem;
  background: var(--wp--preset--color--ink); color: #fff; z-index: 999;
}

/* Dernière bande collée au pied de page, sans liseré parasite */
.entry-content > *:last-child { margin-bottom: 0; }
.ae-footer { border-top: 1px solid #262626; }

/* ------------------------------------------------------------------
   15. Bandeau de consentement
------------------------------------------------------------------ */
.ae-consent-bar {
  position: fixed; inset: auto 0 0 0; z-index: 200;
  background: var(--wp--preset--color--ink); color: #e6e2da;
  border-top: 2px solid var(--wp--preset--color--bronze);
}
.ae-consent-bar[hidden] { display: none; }
.ae-consent-bar__inner {
  max-width: calc(var(--ae-max) + 2 * var(--ae-gutter));
  margin-inline: auto; padding: 1.25rem var(--ae-gutter);
  display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem;
  justify-content: space-between;
}
.ae-consent-bar p { margin: 0; font-size: .875rem; max-width: 72ch; line-height: 1.55; }
.ae-consent-bar a { color: #fff; }
.ae-consent-bar__actions { display: flex; gap: .625rem; flex-shrink: 0; }
.ae-consent-bar .ae-btn { padding: .75rem 1.25rem; font-size: .75rem; }
.ae-consent-bar .ae-btn--ghost { color: #e6e2da; border-color: #4a4a4a; }
.ae-consent-bar .ae-btn--ghost:hover { background: #fff; color: var(--wp--preset--color--ink); border-color: #fff; }
.ae-consent-bar .ae-btn--solid { background: #fff; color: var(--wp--preset--color--ink); border-color: #fff; }
.ae-consent-bar .ae-btn--solid:hover { background: var(--wp--preset--color--bronze); border-color: var(--wp--preset--color--bronze); color: #fff; }

/* ------------------------------------------------------------------
   16. Encadré réglementaire (barème)
------------------------------------------------------------------ */
.ae-encadre {
  border-left: 3px solid var(--wp--preset--color--bronze);
  background: var(--wp--preset--color--sand);
  padding: 1.25rem 1.5rem; margin: 1.5rem 0;
}
.ae-encadre > *:first-child { margin-top: 0; }
.ae-encadre > *:last-child { margin-bottom: 0; }
.ae-encadre ul { margin: .75rem 0; padding-left: 1.25rem; }
.ae-encadre__note { font-size: .875rem; color: #4a4a4a; }

/* Liste des communes avec leur prix — page « Quitter Paris » */
.ae-liste-villes {
  list-style: none; margin: 1.5rem 0 0; padding: 0;
  display: grid; gap: .25rem 2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
.ae-liste-villes li {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .7rem 0; border-bottom: 1px solid var(--wp--preset--color--line);
}
.ae-liste-villes span {
  color: var(--wp--preset--color--bronze); font-variant-numeric: tabular-nums; white-space: nowrap;
}

/* ==========================================================================
   DIRECTION ARTISTIQUE — IMAGES
   --------------------------------------------------------------------------
   Noir et blanc intégral, sans exception. La couleur du site tient dans le
   bronze des liens et rien d'autre : une photo en couleur casserait
   immédiatement l'impression de tenue.

   Le traitement est appliqué en CSS plutôt qu'à la source. Vous versez des
   photos couleur, le site les met au noir et blanc. Vous changez d'avis sur
   le rendu, on change une ligne ici au lieu de retoucher deux cents fichiers.
   ========================================================================== */

.ae-media {
  position: relative;
  overflow: hidden;
  background: var(--wp--preset--color--sand);
  margin: 0;
}

.ae-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Le contraste légèrement poussé et la luminosité à peine relevée
     empêchent le rendu « photocopie » d'un simple grayscale. */
  filter: grayscale(1) contrast(1.08) brightness(1.02);
  transition: transform 900ms cubic-bezier(.2, .6, .2, 1),
              filter 900ms cubic-bezier(.2, .6, .2, 1);
  will-change: transform;
}

/* Un grain très fin, posé en surimpression. C'est ce qui distingue une photo
   « désaturée » d'une photo « noir et blanc ». Il reste invisible
   individuellement et se voit sur l'ensemble. */
.ae-media::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .14;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'>\
<filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/>\
<feColorMatrix type='saturate' values='0'/></filter>\
<rect width='140' height='140' filter='url(%23g)' opacity='.5'/></svg>");
}

/* Ratios. On les impose pour que la page ne saute pas au chargement. */
.ae-media--paysage   { aspect-ratio: 3 / 2; }
.ae-media--portrait  { aspect-ratio: 4 / 5; }
.ae-media--carre     { aspect-ratio: 1 / 1; }

/* Un carré ou un portrait sur toute la largeur du texte fait 1 100 px de haut
   et avale la page. On les ramène à une colonne étroite, centrée ; le paysage
   et le panorama gardent la pleine largeur, c'est leur intérêt. */
.ae-figure--etroite {
  max-width: 560px;
  margin-inline: auto;
}
.ae-media--panorama  { aspect-ratio: 21 / 9; }
.ae-media--hero      { aspect-ratio: 16 / 9; }

@media (max-width: 700px) {
  /* En panorama sur téléphone, le sujet disparaît. On redresse. */
  .ae-media--panorama { aspect-ratio: 16 / 9; }
  .ae-media--hero     { aspect-ratio: 4 / 3; }
}

/* Survol : très lent, très léger. Un zoom rapide fait « site de promoteur ». */
@media (hover: hover) {
  a:hover > .ae-media img,
  .ae-media--zoom:hover img {
    transform: scale(1.04);
    filter: grayscale(1) contrast(1.14) brightness(1.04);
  }
}

/* Voile dégradé, pour poser du texte sur une image sans le rendre illisible. */
.ae-media--voile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top,
    rgba(16, 16, 16, .72) 0%,
    rgba(16, 16, 16, .35) 45%,
    rgba(16, 16, 16, 0) 100%);
}

.ae-media__texte {
  position: absolute;
  z-index: 2;
  left: 0; right: 0; bottom: 0;
  padding: clamp(1.25rem, 3vw, 2.5rem);
  color: #fff;
}
.ae-media__texte h2, .ae-media__texte h3, .ae-media__texte p { color: inherit; }
.ae-media__texte p { margin: .35rem 0 0; opacity: .88; font-size: .9375rem; }

/* Légende sous l'image. Discrète, jamais centrée. */
.ae-media + figcaption,
.ae-figure figcaption {
  margin-top: .65rem;
  font-size: .8125rem;
  line-height: 1.5;
  color: color-mix(in srgb, var(--wp--preset--color--ink) 58%, transparent);
}

/* Emplacement en attente d'une vraie photo. Il ressemble à quelque chose,
   et il dit ce qu'il attend : personne ne met en ligne un trou gris. */
.ae-media--attente {
  display: grid;
  place-items: center;
  background:
    repeating-linear-gradient(45deg,
      var(--wp--preset--color--sand) 0 12px,
      color-mix(in srgb, var(--wp--preset--color--line) 55%, transparent) 12px 24px);
  border: 1px solid var(--wp--preset--color--line);
}
.ae-media--attente::after { display: none; }
.ae-media--attente span {
  font-size: .8125rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--wp--preset--color--ink) 52%, transparent);
  background: var(--wp--preset--color--paper);
  padding: .5rem 1rem;
  border: 1px solid var(--wp--preset--color--line);
  text-align: center;
  max-width: 80%;
}

/* Bande d'images pleine largeur, deux ou trois de front. */
.ae-galerie {
  display: grid;
  gap: 1px;
  background: var(--wp--preset--color--line);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
}
.ae-galerie .ae-media { aspect-ratio: 4 / 5; }

/* ==========================================================================
   MOUVEMENT ET AIDES À LA LECTURE
   --------------------------------------------------------------------------
   Rien qui bouge tout seul, rien qui clignote, rien qui retarde la lecture.
   Le mouvement sert à deux choses : signaler qu'un bloc entre dans le champ,
   et donner du rythme à une page longue. Au-delà, c'est du bruit.

   Tout est neutralisé pour qui a demandé à son système de réduire les
   animations, et tout reste lisible si le JavaScript ne se charge pas.
   ========================================================================== */

[data-ae-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 700ms cubic-bezier(.2, .6, .2, 1),
              transform 700ms cubic-bezier(.2, .6, .2, 1);
  will-change: opacity, transform;
}
[data-ae-reveal].ae-vu { opacity: 1; transform: none; }

/* Sans JavaScript, on n'a jamais de contenu invisible. */
.no-js [data-ae-reveal] { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  [data-ae-reveal] { opacity: 1 !important; transform: none !important; transition: none !important; }
  .ae-media img { transition: none !important; }
  .ae-progres { display: none !important; }
  * { scroll-behavior: auto !important; }
}

/* Barre de progression de lecture, sur les articles seulement. */
.ae-progres {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 100%;
  z-index: 200;
  background: transparent;
  pointer-events: none;
}
.ae-progres span {
  display: block;
  height: 100%;
  width: 0;
  background: var(--wp--preset--color--bronze);
  transform-origin: left;
}

/* Citation détachée. Casse un mur de texte mieux qu'un intertitre de plus. */
.ae-citation {
  margin: clamp(2rem, 5vw, 3.5rem) 0;
  padding-left: clamp(1.25rem, 3vw, 2rem);
  border-left: 2px solid var(--wp--preset--color--bronze);
  font-size: clamp(1.125rem, 2.4vw, 1.375rem);
  line-height: 1.5;
  max-width: 34ch;
}
.ae-citation p { margin: 0; }
.ae-citation cite {
  display: block;
  margin-top: .75rem;
  font-size: .8125rem;
  font-style: normal;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--wp--preset--color--ink) 58%, transparent);
}

/* Chiffre mis en avant au fil du texte. */
.ae-chiffre {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  margin: clamp(1.75rem, 4vw, 2.5rem) 0;
  padding: 1.25rem 0;
  border-top: 1px solid var(--wp--preset--color--line);
  border-bottom: 1px solid var(--wp--preset--color--line);
}
.ae-chiffre strong {
  font-size: clamp(2rem, 6vw, 3rem);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ae-chiffre span { font-size: .9375rem; line-height: 1.5; }

/* Chapô d'article : une taille au-dessus, sans être un titre. */
.entry-content > p.ae-chapo,
.ae-chapo {
  font-size: clamp(1.0625rem, 2.2vw, 1.25rem);
  line-height: 1.6;
  color: color-mix(in srgb, var(--wp--preset--color--ink) 78%, transparent);
  max-width: 62ch;
}

/* Les compteurs de la bande de chiffres s'animent une fois, à l'arrivée. */
.ae-stat__value[data-ae-compteur] { font-variant-numeric: tabular-nums; }

/* ==========================================================================
   TABLEAU COMPARATIF, FAQ SUR DEUX COLONNES, VIDÉO
   ========================================================================== */

.ae-comp { margin: clamp(2rem, 5vw, 3rem) 0; }

.ae-comp__cadre {
  border: 1px solid var(--wp--preset--color--line);
  border-radius: 14px;
  overflow: hidden;
  background: var(--wp--preset--color--paper);
}

.ae-comp__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  font-size: .9375rem;
}

.ae-comp__table thead th {
  padding: 1rem .75rem;
  text-align: center;
  vertical-align: bottom;
  font-size: .8125rem;
  line-height: 1.35;
  font-weight: 600;
  border-bottom: 1px solid var(--wp--preset--color--line);
  overflow-wrap: anywhere;
}
.ae-comp__table thead th:first-child { width: 34%; }

.ae-comp__table tbody th {
  width: 22%;
  padding: .9rem .75rem .9rem 1rem;
  text-align: left;
  font-weight: 400;
  line-height: 1.4;
  border-bottom: 1px solid var(--wp--preset--color--line);
  overflow-wrap: anywhere;
}
.ae-comp__table tbody td {
  padding: .9rem .75rem;
  text-align: center;
  border-bottom: 1px solid var(--wp--preset--color--line);
}
.ae-comp__table tbody tr:last-child th,
.ae-comp__table tbody tr:last-child td { border-bottom: 0; }

.ae-comp__table th + th,
.ae-comp__table td + td {
  border-left: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 55%, transparent);
}

/* La colonne la plus complète est posée sur un fond très légèrement teinté.
   Pas d'encadré ni de couleur : la hiérarchie suffit. */
.ae-comp__fort { background: var(--wp--preset--color--sand); }

.ae-comp__marque {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  border-radius: 999px;
  border: 1px solid var(--wp--preset--color--line);
  background: var(--wp--preset--color--paper);
}
.ae-comp__marque svg { width: 15px; height: 15px; }
.ae-comp__marque--oui { color: var(--wp--preset--color--ink); }
.ae-comp__marque--non { color: color-mix(in srgb, var(--wp--preset--color--ink) 32%, transparent); }

/* Sous 860 px, un tableau à quatre colonnes est illisible : on le replie en
   cartes, et chaque valeur rappelle le nom de sa colonne. */
@media (max-width: 860px) {
  .ae-comp__table thead { display: none; }
  /* Sélecteurs alignés sur ceux du tableau plein écran : à spécificité égale,
     c'est la règle la plus basse qui gagne. Écrits plus court, les width des
     colonnes du haut l'emporteraient et la carte resterait compressée. */
  .ae-comp__table {
    display: block;
    width: 100%;
    table-layout: auto;
  }
  .ae-comp__table tbody,
  /* box-sizing explicite : la ligne porte un rembourrage latéral. En
     content-box, width:100 % s'ajoute à ce rembourrage et la ligne déborde du
     cadre, ce qui rognait les pastilles à droite. */
  .ae-comp__table tr { display: block; width: 100%; box-sizing: border-box; }
  .ae-comp__table tbody th,
  .ae-comp__table tbody td { display: block; width: 100%; box-sizing: border-box; }
  .ae-comp__table tr {
    padding: 1rem 1.1rem .5rem;
    border-bottom: 1px solid var(--wp--preset--color--line);
  }
  .ae-comp__table tr:last-child { border-bottom: 0; }
  .ae-comp__table tbody th {
    padding: 0 0 .75rem;
    font-weight: 600;
    text-align: left;
    border-bottom: 0;
  }
  .ae-comp__table tbody td {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    text-align: left;
    border-left: 0 !important;
    border-bottom: 0;
    background: transparent !important;
  }
  .ae-comp__table tbody td::before {
    content: attr(data-colonne);
    font-size: .8125rem;
    color: color-mix(in srgb, var(--wp--preset--color--ink) 62%, transparent);
  }
}

/* FAQ sur deux colonnes, pour les longues listes. */
@media (min-width: 900px) {
  .ae-faq--deux {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 3rem;
    align-items: start;
  }
  /* Le trait du haut appartient au conteneur : sur deux colonnes, il faut le
     reporter sur la première ligne de chaque colonne. */
  .ae-faq--deux { border-top: 0; }
  .ae-faq--deux details { border-top: 1px solid var(--wp--preset--color--line); }
}

/* Vidéo : on n'affiche qu'un bouton tant que personne n'a cliqué. */
.ae-video {
  position: relative;
  margin: clamp(1.75rem, 4vw, 2.5rem) auto;
  background: var(--wp--preset--color--ink);
  border-radius: 14px;
  overflow: hidden;
}
.ae-video--paysage { aspect-ratio: 16 / 9; }
.ae-video--portrait { aspect-ratio: 9 / 16; max-width: 420px; }

.ae-video__lancer {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  /* inset:0 étire déjà le bouton sur toute la vignette. Une largeur de 100 %
     en plus lui ferait dépasser de son rembourrage. */
  padding: 1.5rem;
  background: none;
  border: 0;
  color: #fff;
  cursor: pointer;
  text-align: center;
  font: inherit;
}
.ae-video__play {
  display: grid;
  place-items: center;
  width: 64px; height: 64px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .55);
  transition: transform 300ms cubic-bezier(.2,.6,.2,1), background 300ms;
}
.ae-video__play svg { width: 26px; height: 26px; margin-left: 3px; }
.ae-video__lancer:hover .ae-video__play,
.ae-video__lancer:focus-visible .ae-video__play {
  transform: scale(1.08);
  background: rgba(255, 255, 255, .12);
}
.ae-video__titre { font-size: 1.0625rem; font-weight: 600; max-width: 30ch; }
.ae-video__mention {
  font-size: .75rem;
  line-height: 1.45;
  opacity: .7;
  max-width: 36ch;
}
.ae-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ------------------------------------------------------------------
   21. Avant / après — l'argument central d'une page
   ------------------------------------------------------------------
   Deux cartes identiques présentent deux situations opposées comme si
   elles se valaient. Ici la colonne « sans » est en retrait — texte
   grisé, fond neutre — et la colonne « avec » porte le poids : fond
   sable, filet bronze, texte pleine densité. La forme dit la thèse
   avant que le texte ne soit lu.
   ------------------------------------------------------------------ */

.ae-vs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  margin: 2.5rem 0;
  background: var(--wp--preset--color--line);
  border: 1px solid var(--wp--preset--color--line);
}

.ae-vs__col { padding: 1.6rem 1.5rem; background: var(--wp--preset--color--paper); }

.ae-vs__col--avant {
  color: color-mix(in srgb, var(--wp--preset--color--ink) 58%, transparent);
}
.ae-vs__col--apres {
  background: var(--wp--preset--color--sand);
  box-shadow: inset 3px 0 0 var(--wp--preset--color--bronze);
}

.ae-vs__tag {
  font-size: .75rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 600;
  margin: 0 0 .7rem;
}
.ae-vs__col--avant .ae-vs__tag {
  color: color-mix(in srgb, var(--wp--preset--color--ink) 45%, transparent);
}
.ae-vs__col--apres .ae-vs__tag { color: var(--wp--preset--color--bronze); }

.ae-vs__col p:last-child { margin-bottom: 0; }

/* Sous 720 px les deux colonnes s'empilent. Le filet bronze passe en haut de
   la colonne « avec » : sur le côté, il disparaîtrait dans la gouttière. */
@media (max-width: 720px) {
  .ae-vs { grid-template-columns: 1fr; }
  .ae-vs__col--apres { box-shadow: inset 0 3px 0 var(--wp--preset--color--bronze); }
}

/* ------------------------------------------------------------------
   22. Grille de communes — le chiffre devant la phrase
   ------------------------------------------------------------------
   Le prix au mètre carré est ce que le lecteur vient chercher. Aligné
   en colonne, il se compare d'une commune à l'autre sans lecture.
   ------------------------------------------------------------------ */

.ae-vgrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: clamp(1.5rem, 3vw, 2.25rem);
}

/* Colonne flexible : le lien est repoussé en bas, donc tous les liens de la
   rangée s'alignent même quand une commune n'a pas de note d'évolution. */
.ae-vgrid__item {
  border-top: 2px solid var(--wp--preset--color--ink);
  padding-top: 1.1rem;
  display: flex;
  flex-direction: column;
}
.ae-vgrid__item .ae-card__link { margin-top: auto; align-self: flex-start; }

.ae-vgrid__titre {
  margin: 0 0 .9rem;
  font-size: .8125rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 600;
}

.ae-vgrid__ligne {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  padding: .3rem 0;
  border-bottom: 1px solid var(--wp--preset--color--line);
}
.ae-vgrid__ligne:last-child { border-bottom: 0; }

.ae-vgrid__val {
  font-size: 1.375rem;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
}
.ae-vgrid__leg { font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: #5b5b5b; }

.ae-vgrid__note { margin: .8rem 0 .9rem; font-size: .875rem; color: #4a4a4a; }
.ae-vgrid__item .ae-card__link { font-size: .75rem; }

/* ==================================================================
   23. PRÉSENTATION ÉDITORIALE — équilibre des textes
   ==================================================================
   Trois réglages, et un seul est discutable.

   1. La LARGEUR DE LIGNE. Au-delà de 75 caractères, l'œil perd la
      ligne suivante en revenant à la marge. En dessous de 45, il
      revient trop souvent. Le corps de texte est donc borné à 68
      caractères, quelle que soit la largeur de l'écran.

   2. La JUSTIFICATION. Elle n'est appliquée qu'au-dessus de 900 px,
      et toujours avec la coupure de mots activée. Justifier sans
      couper les mots creuse des « rivières » de blanc entre les
      mots — c'est le défaut classique du texte justifié sur le web.
      Sur téléphone, la ligne fait 35 à 40 caractères : aucune
      coupure ne sauve une justification à cette largeur, donc le
      texte y reste au fer à gauche. C'est le seul réglage à voir de
      vos yeux avant de trancher : la justification donne un bloc
      plus net, le fer à gauche une couleur de page plus régulière.

   3. Les VEUVES ET ORPHELINES. `text-wrap: pretty` empêche qu'un
      dernier mot se retrouve seul sur sa ligne, et `balance` répartit
      les titres de deux ou trois lignes en lignes égales.
   ================================================================== */

/* La largeur de colonne est définie en section 13. Ici on ne règle que
   l'alignement et la coupure. */


.entry-content p,
.ae-prose p {
  text-wrap: pretty;
}

.entry-content h1, .entry-content h2, .entry-content h3,
.ae-hero h1, .ae-section h2 {
  text-wrap: balance;
}

/* Fer à gauche sur toutes les largeurs (refonte d'octobre 2026) : la
   justification creusait des rivières et coupait les mots dans un texte
   déjà dense. Le fer à gauche donne une couleur de page régulière. */
.entry-content > p,
.ae-prose p {
  text-align: left;
  hyphens: manual;
  -webkit-hyphens: manual;
}

/* Coupure jamais appliquée aux mots courts ni aux sigles. */
.entry-content { hyphenate-limit-chars: 7 4 3; } /* sans effet tant que hyphens: manual */

/* ==================================================================
   24. EMPLACEMENTS MÉDIA — à remplir
   ==================================================================
   Tant qu'aucun fichier n'est posé, l'emplacement s'affiche comme un
   cadre nommé : il dit ce qu'il attend, dans quel format, et s'il
   s'agit d'une image ou d'une vidéo. Ce n'est pas un trou en attente,
   c'est une consigne de tournage lisible sur la page.

   En production, `body.ae-prod` les masque : un emplacement vide ne
   part jamais en ligne par accident.
   ================================================================== */

.ae-slot {
  position: relative;
  width: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: 1.5rem;
  border: 1px dashed color-mix(in srgb, var(--wp--preset--color--ink) 24%, transparent);
  background: color-mix(in srgb, var(--wp--preset--color--sand) 55%, #fff);
  text-align: center;
  margin-block: clamp(2rem, 4vw, 3rem);
}

.ae-slot--panorama { aspect-ratio: 21 / 9; }
.ae-slot--paysage  { aspect-ratio: 3 / 2; }
.ae-slot--hero     { aspect-ratio: 16 / 9; }
.ae-slot--carre    { aspect-ratio: 1 / 1;  max-width: 520px; margin-inline: auto; }
.ae-slot--portrait { aspect-ratio: 4 / 5;  max-width: 520px; margin-inline: auto; }

.ae-slot__type {
  font-size: .6875rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--wp--preset--color--bronze);
}
.ae-slot__sujet {
  font-size: clamp(.9375rem, 1.6vw, 1.125rem);
  font-weight: 600;
  max-width: 34ch;
  line-height: 1.35;
  margin: 0;
}
.ae-slot__format {
  font-size: .75rem;
  color: #5b5b5b;
  font-variant-numeric: tabular-nums;
  margin: 0;
}

/* Un emplacement vide ne s'affiche pas en production. */
body.ae-prod .ae-slot { display: none; }

/* Média posé : la vidéo et l'image partagent le même cadre. */
.ae-media-fill { margin-block: clamp(2rem, 4vw, 3rem); }
.ae-media-fill video,
.ae-media-fill img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ==================================================================
   25. RYTHME DE PAGE
   ==================================================================
   Repris de ce que font les agences dont la page se lit : Espaces
   Atypiques, Architecture de Collection, Rennie. Trois principes.

   1. La prose et les chiffres ne se mélangent jamais. Le lecteur ne
      doit pas avoir à chasser un prix dans un paragraphe.
   2. Une page longue est découpée en chapitres numérotés. Le numéro
      dit où l'on en est sans qu'il faille faire défiler.
   3. Une citation signée casse un mur de texte mieux qu'une image.
   ================================================================== */

/* --- Chapitre ----------------------------------------------------- */
.ae-chapitre {
  display: flex;
  align-items: baseline;
  gap: 1.25rem;
  margin-block: clamp(3rem, 6vw, 4.5rem) 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--wp--preset--color--line);
}
.ae-chapitre__num {
  flex: 0 0 auto;
  font-size: .75rem;
  letter-spacing: .18em;
  font-weight: 700;
  color: var(--wp--preset--color--bronze);
  font-variant-numeric: tabular-nums;
}
.ae-chapitre h2 { margin: 0; text-wrap: balance; }

/* --- Fiche de données : les chiffres hors du texte ---------------- */
.ae-fiche {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  gap: 1px;
  background: var(--wp--preset--color--line);
  border: 1px solid var(--wp--preset--color--line);
  margin-block: clamp(2rem, 4vw, 2.75rem);
}
.ae-fiche__case {
  background: var(--wp--preset--color--paper);
  padding: 1.1rem 1.25rem;
}
.ae-fiche__val {
  display: block;
  font-size: clamp(1.25rem, 2.2vw, 1.625rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
}
.ae-fiche__leg {
  display: block;
  margin-top: .4rem;
  font-size: .6875rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #5b5b5b;
}

/* --- Citation signée ---------------------------------------------- */
/* La citation occupe la colonne de lecture, pas une largeur à elle : son
   filet bronze doit tomber sur le même axe que le texte qui l'entoure.
   C'est la ligne de texte à l'intérieur qui est raccourcie. */
.ae-dit {
  margin-block: clamp(2.5rem, 5vw, 3.5rem);
  margin-inline: auto;
  max-width: var(--ae-col);
  padding-left: clamp(1.25rem, 3vw, 2.25rem);
  border-left: 2px solid var(--wp--preset--color--bronze);
}
.ae-dit p {
  margin: 0;
  max-width: 34ch;
  font-size: clamp(1.1875rem, 2.4vw, 1.5rem);
  line-height: 1.4;
  text-wrap: balance;
  /* Une citation ne se justifie jamais : les lignes sont trop courtes. */
  text-align: left !important;
  hyphens: manual !important;
}
.ae-dit cite {
  display: block;
  margin-top: .9rem;
  font-style: normal;
  font-size: .75rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #5b5b5b;
}

/* --- Étiquettes de résumé, sous un titre -------------------------- */
.ae-tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-block: 1rem 1.75rem; padding: 0; list-style: none; }
.ae-tags li {
  margin: 0;
  font-size: .75rem;
  letter-spacing: .04em;
  padding: .35rem .7rem;
  border: 1px solid var(--wp--preset--color--line);
  background: var(--wp--preset--color--sand);
}

/* Un cadrage panoramique tient sur un écran large ; sur un téléphone de
   390 px il tombe à 150 px de haut et devient une bande illisible. Sous
   700 px, les formats très allongés sont redressés. Le cadrage de la
   photo, lui, ne change pas : c'est le recadrage à l'affichage qui suit. */
@media (max-width: 700px) {
  .ae-slot--panorama { aspect-ratio: 16 / 10; }
  .ae-slot--hero     { aspect-ratio: 4 / 3; }
  .ae-media--panorama { aspect-ratio: 16 / 10; }
}

/* ------------------------------------------------------------------
   26. Accueil — une agence qui s'engage avant vous
   Les sections de l'accueil sont posées en pleine largeur, chacune avec
   sa propre respiration. Sur téléphone, tout passe en une colonne dans
   l'ordre de lecture : titre, texte, preuve, action.
------------------------------------------------------------------ */
.ae-home { --ae-home-pad: clamp(3.5rem, 7vw, 6.5rem); }
.ae-home .ae-eyebrow { margin-bottom: 1.25rem; }
.ae-home h2 { font-size: clamp(2rem, 3.8vw, 3.25rem); line-height: 1.04; margin: 0 0 1.25rem; max-width: 20ch; }
.ae-home .ae-lede { color: #4a4740; margin: 0 0 1.25rem; }
.ae-home__section { padding-block: var(--ae-home-pad); }
.ae-home__section--sand { background: var(--wp--preset--color--sand); }
.ae-home__section--ink { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper); }
.ae-home__section--ink h2, .ae-home__section--ink h3 { color: var(--wp--preset--color--paper); }
.ae-home__section--ink .ae-lede { color: #c9c5bd; }
.ae-home__section--ink .ae-eyebrow { color: #e0a08a; }
.ae-home__deux { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
@media (min-width: 900px) {
  .ae-home__deux { grid-template-columns: 5fr 7fr; }
  .ae-home__deux--inverse { grid-template-columns: 7fr 5fr; }
  .ae-home__deux--centre { align-items: center; }
}

/* Hero */
.ae-home-hero { padding-block: clamp(3rem, 6vw, 5.5rem) clamp(3rem, 6vw, 5rem); }
.ae-home-hero__inner { display: grid; gap: clamp(2rem, 4vw, 3.5rem); align-items: center; }
@media (min-width: 900px) { .ae-home-hero__inner { grid-template-columns: 7fr 5fr; } }
.ae-home-hero h1 { font-size: clamp(2.5rem, 5.4vw, 4.75rem); line-height: 1.02; margin: 0 0 1.5rem; max-width: 14ch; }
.ae-home-hero__lede { font-size: clamp(1.0625rem, 1.5vw, 1.25rem); color: #4a4740; max-width: 46ch; margin: 0 0 1.75rem; }
.ae-home-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 0 0 1.25rem; }
.ae-home-hero__note { font-size: .875rem; color: #6c675e; margin: 0; }
.ae-home-hero__note span + span::before { content: "·"; margin-inline: .6rem; }
.ae-home-hero__visuel { position: relative; }
.ae-home-hero__visuel .ae-slot { margin: 0; }
.ae-home-hero__card {
  position: absolute; left: -1.5rem; bottom: 1.5rem; max-width: 300px;
  background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper);
  border-radius: 18px; padding: 1.125rem 1.25rem; box-shadow: 0 30px 50px -30px rgba(20,20,19,.5);
}
.ae-home-hero__card strong { display: block; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; color: #e0a08a; margin-bottom: .4rem; }
.ae-home-hero__card p { margin: 0; font-size: .9375rem; line-height: 1.45; }
@media (max-width: 899px) {
  .ae-home-hero__card { position: static; max-width: none; margin-top: 1rem; }
}

/* Bande des communes */
.ae-communes { border-block: 1px solid var(--wp--preset--color--line); padding-block: 1.125rem; overflow: hidden; }
.ae-communes .ae-wrap { display: flex; align-items: center; gap: 1.25rem; }
.ae-communes__label {
  flex: 0 0 auto; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600;
  padding-right: 1rem; border-right: 1px solid var(--wp--preset--color--line); white-space: nowrap;
}
.ae-communes ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 1.1rem; overflow-x: auto; scrollbar-width: none; }
.ae-communes ul::-webkit-scrollbar { display: none; }
.ae-communes li { flex: 0 0 auto; }
.ae-communes a { text-decoration: none; color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1rem; white-space: nowrap; }
.ae-communes a:hover { color: var(--wp--preset--color--bronze); }
.ae-communes li + li::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--wp--preset--color--bronze); margin-right: 1.1rem; vertical-align: middle; }

/* Étapes de méthode */
.ae-etapes { display: grid; gap: 1.25rem; margin-top: 2.5rem; }
@media (min-width: 760px) { .ae-etapes { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ae-etape { background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 22px; padding: 1.75rem; display: flex; flex-direction: column; gap: .75rem; }
.ae-etape__num { font-family: var(--wp--preset--font-family--display); font-size: .8125rem; font-weight: 700; letter-spacing: .1em; color: var(--wp--preset--color--bronze); }
.ae-etape h3 { margin: 0; font-size: 1.375rem; }
.ae-etape p { margin: 0; color: #4a4740; font-size: .9875rem; line-height: 1.55; }

/* Engagements avant honoraires */
.ae-engage { display: grid; gap: 1rem; }
@media (min-width: 640px) { .ae-engage { grid-template-columns: 1fr 1fr; } }
.ae-engage__card { background: rgba(251,248,243,.06); border: 1px solid rgba(251,248,243,.14); border-radius: 18px; padding: 1.375rem; }
.ae-engage__card strong { display: block; font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: #e0a08a; margin-bottom: .5rem; font-weight: 600; }
.ae-engage__card h3 { margin: 0 0 .4rem; font-size: 1.1875rem; }
.ae-engage__card p { margin: 0; font-size: .9375rem; line-height: 1.5; color: #c9c5bd; }

/* Trois situations */
.ae-situations { display: grid; gap: 1.25rem; margin-top: 2.5rem; }
@media (min-width: 900px) { .ae-situations { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ae-sit { background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 24px; padding: 2rem; display: flex; flex-direction: column; gap: .875rem; }
.ae-sit .ae-eyebrow { margin: 0; }
.ae-sit h3 { margin: 0; font-size: clamp(1.5rem, 2vw, 1.875rem); line-height: 1.05; }
.ae-sit p { margin: 0; color: #4a4740; line-height: 1.55; flex-grow: 1; }
.ae-sit__box { background: var(--wp--preset--color--sand); border-radius: 14px; padding: .875rem 1rem; font-size: .9375rem; line-height: 1.45; color: #4a4740; }
.ae-sit__box strong { display: block; font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink); margin-bottom: .25rem; }
.ae-sit .ae-btn { align-self: flex-start; }

/* Qui vous répond */
.ae-personnes { display: grid; gap: 1.75rem; }
@media (min-width: 560px) { .ae-personnes { grid-template-columns: 1fr 1fr; } }
.ae-personne .ae-slot { margin: 0 0 1rem; }
.ae-personne h3 { margin: 0; font-size: 1.5rem; }
.ae-personne__role { margin: .15rem 0 .75rem; font-size: .875rem; color: #6c675e; }
.ae-personne blockquote { margin: 0; padding: 0; border: 0; font-size: 1rem; line-height: 1.5; font-style: normal; }

/* Et Paris ? */
.ae-paris__card { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper); border-radius: 26px; padding: clamp(1.5rem, 3vw, 2.5rem); }
.ae-paris__card strong.ae-paris__eyebrow { display: block; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; color: #e0a08a; margin-bottom: 1.25rem; font-weight: 600; }
.ae-paris__card ol { list-style: none; margin: 0; padding: 0; counter-reset: paris; display: grid; gap: 1.25rem; }
.ae-paris__card li { counter-increment: paris; position: relative; padding-left: 3rem; }
.ae-paris__card li::before {
  content: counter(paris); position: absolute; left: 0; top: 0; width: 2rem; height: 2rem; border-radius: 50%;
  border: 1.5px solid rgba(251,248,243,.35); display: grid; place-items: center;
  font-family: var(--wp--preset--font-family--display); font-size: .8125rem; font-weight: 700;
}
.ae-paris__card li strong { display: block; font-family: var(--wp--preset--font-family--display); font-size: 1.125rem; margin-bottom: .2rem; }
.ae-paris__card li span { display: block; font-size: .9375rem; line-height: 1.45; color: #c9c5bd; }

/* Prix par commune */
.ae-prix { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--wp--preset--color--line); border: 1px solid var(--wp--preset--color--line); border-radius: 22px; overflow: hidden; }
.ae-prix a { display: flex; flex-direction: column; gap: .25rem; background: #fff; padding: 1.25rem 1.375rem; text-decoration: none; color: var(--wp--preset--color--ink); transition: background var(--ae-t); }
.ae-prix a:hover { background: var(--wp--preset--color--sand); }
.ae-prix__valeur { font-family: var(--wp--preset--font-family--display); font-size: clamp(1.5rem, 2.2vw, 1.875rem); font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ae-prix__nom { font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: #6c675e; }
.ae-prix__source { font-size: .8125rem; color: #6c675e; margin-top: 1rem; }

/* Engagement */
.ae-engagement { border: 1px solid var(--wp--preset--color--line); border-radius: 22px; padding: 1.5rem 1.75rem; background: #fff; }
.ae-engagement strong { display: block; font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--bronze); margin-bottom: .5rem; }
.ae-engagement p { margin: 0; }

/* Formulaire final */
.ae-home-form__panel { background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 26px; padding: clamp(1.5rem, 3vw, 2.5rem); }
.ae-home-form__panel .ae-form input, .ae-home-form__panel .ae-form select, .ae-home-form__panel .ae-form textarea { border-radius: 12px; }
.ae-home-form__panel .ae-form button { width: 100%; text-align: center; }

/* Pleine largeur : le contenu de l'accueil est posé sans colonne de lecture */
.ae-home .ae-wrap { max-width: calc(var(--ae-max) + 2 * var(--ae-gutter)); }

/* Sur l'accueil, les bandes pleine largeur se touchent. */
.home .entry-content > .alignfull { margin-block: 0; }
.home .ae-faq-section { padding-block: var(--ae-home-pad, 4rem) 0; }
@media (max-width: 760px) {
  .ae-communes .ae-wrap { flex-direction: column; align-items: flex-start; gap: .6rem; }
  .ae-communes__label { border-right: 0; padding-right: 0; }
  .ae-communes ul { width: 100%; padding-bottom: .25rem; }
}

/* Calage des écritures sur l'accueil : le surtitre court sur toute la
   largeur, puis titre à gauche et texte à droite partent du même haut. */
.ae-home .ae-home__deux > div > h2:first-child { margin-top: 0; }
.ae-home .ae-home__deux > .ae-lede { margin-top: .35em; }
.ae-home .ae-figure { margin: 0; max-width: none; }
.ae-home .ae-media { border-radius: 22px; }
.ae-home-hero__visuel .ae-figure { max-width: 520px; margin-inline: auto; }
.ae-personne .ae-figure { margin-bottom: 1rem; }
.home .ae-faq-section > .ae-wrap > h2,
.home .ae-faq-section > .ae-wrap > .ae-lede { text-align: left; }
.home .ae-faq { margin-inline: 0; max-width: 820px; }
.home .ae-faq-section > .ae-wrap > h2 { font-size: clamp(2rem, 3.8vw, 3.25rem); line-height: 1.04; max-width: 20ch; }
@media (min-width: 761px) {
  .ae-communes ul { flex-wrap: wrap; overflow: visible; row-gap: .5rem; }
  .ae-communes a { font-size: .9375rem; }
}
.ae-sit p.ae-eyebrow { flex-grow: 0; margin: 0; }
@media (min-width: 761px) {
  .ae-communes ul { gap: .9rem; }
  .ae-communes a { font-size: .875rem; }
  .ae-communes li + li::before { margin-right: .9rem; width: 5px; height: 5px; }
}
.home .entry-content > .ae-faq-section {
  max-width: calc(var(--ae-max) + 2 * var(--ae-gutter)); margin-inline: auto;
  padding-inline: var(--ae-gutter); box-sizing: border-box;
}
.ae-home .ae-faq-section { padding: 0; max-width: none; margin: 0; }
.ae-home .ae-faq-section > h2 { font-size: clamp(2rem, 3.8vw, 3.25rem); line-height: 1.04; max-width: 20ch; margin: 0 0 1.5rem; }
.ae-home .ae-faq { margin-inline: 0; max-width: 820px; }

/* ------------------------------------------------------------------
   27. Un seul axe de lecture sur les pages intérieures
   Le hero et les textes des bandes de couleur se posent dans la même
   colonne que le corps de page : un titre collé à gauche au-dessus
   d'un texte centré donnait deux axes, et l'œil hésitait.
------------------------------------------------------------------ */
.ae-hero > .ae-wrap > :where(.ae-eyebrow, h1, .ae-hero__lede, .ae-hero__actions),
.ae-section > .ae-wrap > :where(h2, h3, p, ul, ol, .ae-hero__actions) {
  max-width: var(--ae-col);
  margin-inline: auto;
}
.ae-hero h1 { max-width: var(--ae-col); }
.ae-section > .ae-wrap > .ae-grid,
.ae-section > .ae-wrap > .ae-cards { max-width: none; }
/* Les bandes de l'accueil ont leur propre grille : hors champ. */
.ae-home.ae-section > .ae-wrap > * { max-width: none; margin-inline: 0; }

/* Réseaux sociaux */
.ae-reseaux { list-style: none; margin: 1.25rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.ae-reseaux a {
  display: inline-flex; align-items: center; gap: .45rem; padding: .5rem .85rem .5rem .6rem;
  border: 1px solid var(--wp--preset--color--line); border-radius: 999px; text-decoration: none;
  color: var(--wp--preset--color--ink); font-size: .875rem; font-weight: 600; transition: background var(--ae-t), color var(--ae-t);
}
.ae-reseaux a:hover { background: var(--wp--preset--color--ink); color: #fff; text-decoration: none; }
.ae-reseaux--pied a { border-color: #3a3936; color: #d8d4cc; }
.ae-reseaux--pied a:hover { background: #fff; color: var(--wp--preset--color--ink); }
.ae-reseaux--grand a { font-size: 1rem; padding: .7rem 1.1rem .7rem .85rem; }

/* CTA final */
.ae-cta .ae-btn--inverse { color: #fff; border-color: rgba(255,255,255,.4); }
.ae-cta .ae-btn--inverse:hover { background: #fff; color: var(--wp--preset--color--ink); border-color: #fff; }
.ae-cta h2 { text-wrap: balance; }

/* ------------------------------------------------------------------
   28. Outils interactifs
------------------------------------------------------------------ */
.ae-outil {
  background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 26px;
  padding: clamp(1.5rem, 3vw, 2.5rem); margin-block: clamp(2.5rem, 5vw, 4rem);
}
.entry-content > .ae-outil { max-width: 88ch; margin-inline: auto; }
.ae-outil__tete h2 { margin: 0 0 .75rem; font-size: clamp(1.625rem, 3vw, 2.25rem); }
.ae-outil__tete p:not(.ae-eyebrow) { margin: 0 0 1.5rem; color: #4a4740; }
.ae-outil__choix { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); margin-bottom: 1rem; }
.ae-outil__champ { display: grid; gap: .4rem; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
.ae-outil__champ select {
  box-sizing: border-box; width: 100%; padding: .8rem .9rem; border: 1.5px solid var(--wp--preset--color--line);
  border-radius: 12px; background: #fff; font: inherit; font-size: 1rem; letter-spacing: 0; text-transform: none; font-weight: 500;
}
.ae-comparateur__table td.is-max { font-weight: 700; }
.ae-comparateur__table td.is-max::after { content: " ▲"; color: var(--wp--preset--color--bronze); font-size: .7em; }
.ae-outil__liens { font-size: .9375rem; margin: .5rem 0 0; }

.ae-diag__questions { list-style: none; padding: 0; margin: 0; counter-reset: diag; display: grid; gap: .75rem; }
.ae-diag__q { counter-increment: diag; border: 1px solid var(--wp--preset--color--line); border-radius: 16px; padding: 1.125rem 1.25rem; transition: border-color var(--ae-t), background var(--ae-t); }
.ae-diag__q.is-repondue { background: var(--wp--preset--color--paper); }
.ae-diag__q.is-attendue { border-color: var(--wp--preset--color--bronze); }
.ae-diag__libelle { margin: 0 0 .75rem; font-weight: 600; line-height: 1.4; }
.ae-diag__libelle::before { content: counter(diag) ". "; color: var(--wp--preset--color--bronze); font-family: var(--wp--preset--font-family--display); font-weight: 800; }
.ae-diag__reponses { display: flex; flex-wrap: wrap; gap: .5rem; }
.ae-diag__reponses label { position: relative; cursor: pointer; }
.ae-diag__reponses input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ae-diag__reponses span {
  display: inline-block; padding: .55rem 1rem; border-radius: 999px; border: 1.5px solid var(--wp--preset--color--line);
  font-size: .9375rem; font-weight: 600; transition: background var(--ae-t), color var(--ae-t), border-color var(--ae-t);
}
.ae-diag__reponses input:checked + span { background: var(--wp--preset--color--ink); color: #fff; border-color: var(--wp--preset--color--ink); }
.ae-diag__reponses input:focus-visible + span { outline: 2px solid var(--wp--preset--color--bronze); outline-offset: 2px; }
.ae-diag__note { margin: .75rem 0 0; font-size: .9375rem; color: #4a4740; border-left: 2px solid var(--wp--preset--color--bronze); padding-left: .85rem; }
.ae-diag__pied { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: 1.25rem; }
.ae-diag__reste { margin: 0; font-size: .9375rem; color: #6c675e; }
.ae-diag__resultat h3 { margin: 0 0 .75rem; font-size: clamp(1.5rem, 2.5vw, 2rem); }
.ae-diag__resultat p { max-width: 60ch; }

/* Sommaire */
.ae-sommaire {
  background: var(--wp--preset--color--sand); border-radius: 18px; padding: 1.25rem 1.5rem; margin-block: 2rem;
  max-width: var(--ae-col); margin-inline: auto;
}
.ae-sommaire__titre { margin: 0 0 .6rem; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--wp--preset--color--bronze); }
.ae-sommaire ol { margin: 0; padding: 0; list-style: none; columns: 2; column-gap: 2rem; }
.ae-sommaire li { break-inside: avoid; margin: 0 0 .35rem; font-size: .9375rem; }
.ae-sommaire a { text-decoration: none; color: var(--wp--preset--color--ink); border-bottom: 1px solid transparent; }
.ae-sommaire a:hover, .ae-sommaire a.is-actif { color: var(--wp--preset--color--bronze); border-bottom-color: currentColor; }
@media (max-width: 600px) { .ae-sommaire ol { columns: 1; } }
/* Le sommaire n'est pas une liste d'étapes : pas de rail numéroté. */
.entry-content .ae-sommaire ol > li { padding: 0; }
.entry-content .ae-sommaire ol > li::before, .entry-content .ae-sommaire ol > li::after { display: none; }

/* Vidéos de l'accueil */
.ae-home-videos { display: grid; gap: 1rem; }
.ae-home-videos .ae-figure, .ae-home-videos .ae-slot { margin: 0; }
.ae-home-videos__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.ae-home__section--ink .ae-slot { background: rgba(251,248,243,.06); border-color: rgba(251,248,243,.25); color: var(--wp--preset--color--paper); }
.ae-home__section--ink .ae-reseaux { margin-top: 1.5rem; }
@media (max-width: 599px) { .ae-home-videos__grille { grid-template-columns: 1fr; } }

/* Grille des prix : barre proportionnelle animée à l'apparition */
.ae-prix a { position: relative; padding-bottom: 1.6rem; }
.ae-prix__barre {
  position: absolute; left: 1.375rem; right: 1.375rem; bottom: .9rem; height: 3px; border-radius: 2px;
  background: var(--wp--preset--color--line); overflow: hidden;
}
.ae-prix__barre::after {
  content: ""; position: absolute; inset: 0; width: calc(var(--part, 0) * 100%); background: var(--wp--preset--color--bronze);
  transform: scaleX(0); transform-origin: left; transition: transform 1.1s cubic-bezier(.2,.6,.2,1) .15s;
}
.ae-vu .ae-prix__barre::after, .no-js .ae-prix__barre::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .ae-prix__barre::after { transform: scaleX(1); transition: none; } }
.ae-footer__engagement { font-size: .8125rem !important; color: #8d897f !important; border-left: 2px solid var(--wp--preset--color--bronze); padding-left: .75rem; }

/* ------------------------------------------------------------------
   29. Accueil : niveaux de service, emplacement du hero
------------------------------------------------------------------ */
.ae-niveaux { display: grid; gap: 1rem; margin-top: 2.5rem; }
@media (min-width: 900px) { .ae-niveaux { grid-template-columns: 1fr 1fr 1.4fr; } }
.ae-niveau { border: 1px solid rgba(251,248,243,.16); border-radius: 20px; padding: 1.5rem 1.6rem; }
.ae-niveau__titre { margin: 0 0 1rem; font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: 1.25rem; color: #d8d4cc; }
.ae-niveau ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.ae-niveau li { position: relative; padding-left: 1.25rem; font-size: .9875rem; line-height: 1.5; color: #a8a49c; }
.ae-niveau li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: #5d5a54; }
.ae-niveau--nous { background: var(--wp--preset--color--paper); border-color: var(--wp--preset--color--paper); }
.ae-niveau--nous .ae-niveau__titre { color: var(--wp--preset--color--bronze); }
.ae-niveau--nous li { color: var(--wp--preset--color--ink); }
.ae-niveau--nous li::before { background: var(--wp--preset--color--bronze); }
.ae-home-hero__visuel .ae-slot { margin: 0; border-radius: 22px; }
.ae-home .ae-home__deux > div > .ae-lede:last-child { margin-bottom: 0; }
.ae-nav__externe { color: var(--wp--preset--color--bronze) !important; }
.ae-nav__externe::after { content: " ↗"; font-size: .8em; }
@media (max-width: 1180px) and (min-width: 1061px) { .ae-nav { gap: 1.1rem; } .ae-nav > a, .ae-nav__menu > summary { font-size: .875rem; } }

/* ------------------------------------------------------------------
   30. Pages intérieures sur ordinateur
   Sur grand écran, la page ne doit pas ressembler à un téléphone
   agrandi : le hero passe sur deux colonnes, la colonne de texte
   s'élargit, et le sommaire devient une barre de navigation qui
   reste visible en haut de l'écran pendant la lecture.
------------------------------------------------------------------ */
@media (min-width: 1000px) {
  :root { --ae-col: 44rem; }
  .ae-hero > .ae-wrap {
    display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: 4rem; align-items: end;
  }
  .ae-hero > .ae-wrap > .ae-eyebrow { grid-column: 1 / -1; max-width: none; margin-inline: 0; }
  .ae-hero > .ae-wrap > h1 { grid-column: 1; grid-row: 2 / span 2; max-width: none; margin: 0; align-self: start; font-size: clamp(2.75rem, 4.6vw, 4rem); }
  .ae-hero > .ae-wrap > .ae-hero__lede { grid-column: 2; max-width: none; margin: 0 0 1.5rem; }
  .ae-hero > .ae-wrap > .ae-hero__actions { grid-column: 2; max-width: none; margin: 0; }

  .ae-sommaire {
    position: sticky; top: 72px; z-index: 50; max-width: none; margin: 0 0 2.5rem;
    width: auto; border-radius: 0;
    background: rgba(239, 233, 223, .96); backdrop-filter: blur(8px);
    padding: .7rem max(var(--ae-gutter), calc((100vw - var(--ae-max)) / 2));
    display: flex; align-items: center; gap: 1.5rem; border-bottom: 1px solid var(--wp--preset--color--line);
  }
  .ae-sommaire[hidden] { display: none; }
  .ae-sommaire__titre { margin: 0; white-space: nowrap; }
  .ae-sommaire ol { columns: auto; display: flex; gap: 1.5rem; overflow-x: auto; scrollbar-width: none; white-space: nowrap; }
  .ae-sommaire li { margin: 0; font-size: .875rem; }
}
.ae-sit p { flex-grow: 0; }
.ae-sit .ae-home-hero__actions { margin-top: auto; padding-top: .5rem; margin-bottom: 0; }
.ae-home-hero h1 { max-width: 17ch; }
@media (min-width: 1000px) {
  .ae-sommaire__titre { white-space: nowrap; flex: none; }
  .entry-content > :where(.ae-slot, .ae-figure, .ae-video, .ae-outil, .ae-table-wrap, .ae-vgrid) { max-width: 62rem; margin-inline: auto; }
  .ae-hero__actions .ae-btn { padding: .85rem 1.3rem; }
}
.ae-slot { box-sizing: border-box; min-width: 0; max-width: 100%; }
.ae-home-videos, .ae-home-videos__grille, .ae-home__deux > * { min-width: 0; }
/* Le style « primary » des anciennes pages équivaut au bouton plein. */
.ae-btn--primary { background: var(--wp--preset--color--ink); color: #fff; border-color: var(--wp--preset--color--ink); }
.ae-btn--primary:hover { background: var(--wp--preset--color--bronze); border-color: var(--wp--preset--color--bronze); color: #fff; }
.ae-section > .ae-wrap > .ae-table-wrap { max-width: 62rem; margin-inline: auto; }
.entry-content .ae-card > :first-child, .entry-content .ae-etape > :first-child, .entry-content .ae-sit > :first-child { margin-top: 0; }

/* ------------------------------------------------------------------
   31. Corrections du 2 octobre
------------------------------------------------------------------ */
/* Bouton d'en-tête : hauteur fixe et texte centré, quels que soient
   les styles hérités (éditeur, extensions, cache). */
.ae-header__cta {
  display: inline-flex !important; align-items: center; justify-content: center;
  height: 44px; padding: 0 1.25rem !important; box-sizing: border-box; flex: none;
  line-height: 1 !important; margin: 0; vertical-align: middle;
}
.ae-header__cta span { display: block; line-height: 1; }
.ae-nav > a, .ae-nav__menu > summary { line-height: 1.2; }

/* Bandeau recrutement : un simple liseré. */
.ae-footer__recrute { padding-block: .7rem; }
.ae-footer__recrute .ae-wrap { justify-content: flex-end; gap: 1rem; }
.ae-footer__recrute span { font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: #6c675e; }
.ae-footer__recrute a {
  display: inline-flex; align-items: center; height: 34px; padding: 0 1rem; border-radius: 999px;
  border: 1.5px solid var(--wp--preset--color--ink); text-decoration: none !important; font-size: .875rem;
}
.ae-footer__recrute a:hover { background: var(--wp--preset--color--ink); color: #fff !important; }

/* Emplacements photo / vidéo à fournir : masqués aux visiteurs en
   production, mais toujours visibles pour vous lorsque vous êtes
   connecté à WordPress. Vous voyez ainsi ce qui manque. */
body.ae-prod.logged-in .ae-slot { display: flex; }
body.ae-prod.logged-in .ae-todo { display: inline; }

/* ------------------------------------------------------------------
   32. Visuels des pages principales
------------------------------------------------------------------ */
/* Fiche d'analyse (hero Vendre) */
.ae-fa {
  background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 24px;
  padding: 1.75rem 1.75rem 1.25rem; box-shadow: 0 40px 60px -40px rgba(20,20,19,.35);
  max-width: 440px; margin-inline: auto; transform: rotate(-1.2deg);
}
.ae-fa__titre { margin: 0 0 1.1rem; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--wp--preset--color--bronze); }
.ae-fa ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .85rem; }
.ae-fa li { display: grid; grid-template-columns: 22px 1fr; gap: .75rem; align-items: start; font-size: .9375rem; line-height: 1.45; color: #4a4740; }
.ae-fa li strong { display: block; color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--display); font-size: 1.0625rem; }
.ae-fa__check { width: 22px; height: 22px; border-radius: 50%; background: var(--wp--preset--color--ink); position: relative; margin-top: .1rem; }
.ae-fa__check::after { content: ""; position: absolute; left: 7px; top: 4px; width: 6px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.ae-fa__pied { margin: 1.25rem -1.75rem -1.25rem; padding: 1rem 1.75rem; border-top: 1px dashed var(--wp--preset--color--line); font-size: .875rem; color: #6c675e; border-radius: 0 0 24px 24px; background: var(--wp--preset--color--paper); }

/* Échelle des approches : les deux premières s'effacent */
.ae-ech { display: grid; gap: 1rem; margin-top: 2.5rem; align-items: end; }
@media (min-width: 900px) { .ae-ech { grid-template-columns: .8fr .9fr 1.5fr; } }
.ae-ech__col {
  border-radius: 22px; padding: 1.5rem; border: 1px solid rgba(251,248,243,.12);
  opacity: .55; filter: saturate(.4);
  min-height: calc(220px + var(--h) * 60px);
}
.ae-ech__col h3 { margin: .2rem 0 1rem; font-size: 1.25rem; color: #c9c5bd; }
.ae-ech__niveau { margin: 0; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; color: #8d897f; }
.ae-ech__chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .45rem; }
.ae-ech__chips li { font-size: .8125rem; padding: .35rem .7rem; border-radius: 999px; border: 1px solid rgba(251,248,243,.2); color: #c9c5bd; }
.ae-ech__col--nous {
  opacity: 1; filter: none; background: var(--wp--preset--color--paper); border-color: var(--wp--preset--color--paper);
  padding: 2rem; box-shadow: 0 40px 70px -40px rgba(0,0,0,.6);
}
.ae-ech__col--nous h3 { color: var(--wp--preset--color--ink); font-size: 1.625rem; }
.ae-ech__col--nous .ae-ech__niveau { color: var(--wp--preset--color--bronze); }
.ae-ech__col--nous .ae-ech__chips li { background: var(--wp--preset--color--ink); color: #fff; border-color: var(--wp--preset--color--ink); font-weight: 600; }
.ae-ech__col--nous .ae-ech__chips--selon li { background: transparent; color: var(--wp--preset--color--ink); border: 1.5px dashed var(--wp--preset--color--bronze); font-weight: 500; }
.ae-ech__selon { margin: 1.1rem 0 .5rem; font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--bronze); font-weight: 600; }
.ae-ech-fleche { display: none; }
@media (min-width: 900px) {
  .ae-ech { position: relative; }
  .ae-ech::before {
    content: ""; position: absolute; left: 0; right: 40%; top: 50%; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(251,248,243,.25)); z-index: -1;
  }
}

/* Entonnoir (Vous achetez) */
.ae-ent { display: grid; gap: .5rem; justify-items: center; max-width: 480px; margin-inline: auto; }
.ae-ent__etage {
  width: calc(100% - var(--i) * (60% / var(--n))); box-sizing: border-box; text-align: center;
  padding: .9rem 1rem; border-radius: 14px; background: color-mix(in srgb, var(--wp--preset--color--ink) calc(18% + var(--i) * 20%), var(--wp--preset--color--sand));
  color: #fff;
}
.ae-ent__etage:first-child { color: var(--wp--preset--color--ink); }
.ae-ent__etage:last-of-type { background: var(--wp--preset--color--bronze); }
.ae-ent__etage strong { display: block; font-family: var(--wp--preset--font-family--display); font-size: 1.0625rem; }
.ae-ent__etage span { display: block; font-size: .8125rem; opacity: .85; margin-top: .15rem; }
.ae-ent__legende { margin: .75rem 0 0; font-size: .8125rem; color: #6c675e; text-align: center; }

/* Duel de parcours (Vous louez) */
.ae-duel { display: grid; gap: 1rem; }
@media (min-width: 700px) { .ae-duel { grid-template-columns: 1fr 1fr; } }
.ae-duel__col { border: 1px solid var(--wp--preset--color--line); border-radius: 22px; padding: 1.5rem; background: #fff; opacity: .7; }
.ae-duel__col--nous { opacity: 1; background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper); border-color: var(--wp--preset--color--ink); }
.ae-duel__titre { margin: 0 0 1rem; font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: 1.25rem; }
.ae-duel ol { list-style: none; margin: 0; padding: 0; counter-reset: duel; display: grid; gap: .75rem; }
.ae-duel li { counter-increment: duel; position: relative; padding-left: 2.25rem; font-size: .9375rem; line-height: 1.45; }
.ae-duel li::before {
  content: counter(duel); position: absolute; left: 0; top: -.05rem; width: 1.6rem; height: 1.6rem; border-radius: 50%;
  display: grid; place-items: center; font-size: .75rem; font-weight: 700; border: 1.5px solid currentColor; opacity: .7;
}
.ae-duel__col--nous li::before { border-color: var(--wp--preset--color--bronze); color: #e0a08a; opacity: 1; }
.ae-duel__legende { margin: .75rem 0 0; font-size: .8125rem; color: #6c675e; }
.entry-content .ae-duel ol > li::after { display: none; }

/* Frise d'étapes */
.ae-frise { list-style: none; margin: 2.5rem 0 0; padding: 0; display: grid; gap: 1.25rem; counter-reset: none; }
@media (min-width: 900px) {
  .ae-frise { grid-template-columns: repeat(var(--n, 6), minmax(0, 1fr)); gap: 0; position: relative; }
  .ae-frise::before { content: ""; position: absolute; left: 0; right: 0; top: 1.15rem; height: 2px; background: var(--wp--preset--color--line); }
  .ae-frise li { padding-right: 1.25rem; }
}
.ae-frise li { position: relative; display: flex; flex-direction: column; gap: .4rem; }
.ae-frise__n {
  position: relative; z-index: 1; width: 2.3rem; height: 2.3rem; border-radius: 50%; display: grid; place-items: center;
  background: var(--wp--preset--color--paper); border: 2px solid var(--wp--preset--color--bronze);
  font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: .8125rem; color: var(--wp--preset--color--bronze);
  margin-bottom: .5rem;
}
.ae-home__section--sand .ae-frise__n { background: var(--wp--preset--color--sand); }
.ae-frise li strong { font-family: var(--wp--preset--font-family--display); font-size: 1.125rem; }
.ae-frise li > span:last-child { font-size: .9375rem; color: #4a4740; line-height: 1.45; }
.entry-content .ae-frise > li::before, .entry-content .ae-frise > li::after { display: none; }
.entry-content .ae-frise > li { padding-left: 0; padding-bottom: 0; }

/* Attentes / réponses */
.ae-atts { display: grid; gap: 1rem; margin-top: 2.5rem; }
@media (min-width: 760px) { .ae-atts { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .ae-atts { grid-template-columns: repeat(4, 1fr); } }
.ae-att { border-radius: 22px; overflow: hidden; border: 1px solid var(--wp--preset--color--line); background: #fff; display: flex; flex-direction: column; }
.ae-att__q { margin: 0; padding: 1.25rem 1.4rem; background: var(--wp--preset--color--sand); font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: 1.125rem; line-height: 1.2; }
.ae-att__r { margin: 0; padding: 1.25rem 1.4rem 1.5rem; font-size: .9375rem; line-height: 1.5; color: #4a4740; }

/* Objections */
.ae-objs { display: grid; gap: 1rem; }
@media (min-width: 760px) { .ae-objs { grid-template-columns: 1fr 1fr; } }
.ae-obj { border-left: 3px solid var(--wp--preset--color--bronze); padding: .25rem 0 .25rem 1.25rem; }
.ae-obj__q { margin: 0 0 .5rem; font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: 1.25rem; line-height: 1.2; }
.ae-obj__r { margin: 0; font-size: .9875rem; line-height: 1.55; color: #4a4740; }
.ae-home__section--ink .ae-obj__r { color: #c9c5bd; }

/* Téléphone */
.ae-tel { margin: 0 auto; width: min(300px, 80%); }
.ae-tel__ecran {
  position: relative; aspect-ratio: 9 / 19; border-radius: 40px; overflow: hidden; background: #000;
  border: 10px solid #232321; box-shadow: 0 50px 80px -40px rgba(0,0,0,.7), inset 0 0 0 1px #3a3936;
}
.ae-tel__ecran::before { content: ""; position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 34%; height: 22px; border-radius: 999px; background: #000; z-index: 2; }
.ae-tel__ecran img, .ae-tel__ecran picture { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.05); }
.ae-tel__ecran picture img { position: static; width: 100%; height: 100%; }
.ae-tel__play {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; border-radius: 50%;
  background: rgba(251,248,243,.92); z-index: 2;
}
.ae-tel__play::after { content: ""; position: absolute; left: 26px; top: 20px; border-style: solid; border-width: 12px 0 12px 19px; border-color: transparent transparent transparent var(--wp--preset--color--ink); }
.ae-tel__badge {
  position: absolute; left: 12px; right: 12px; bottom: 16px; z-index: 2; text-align: center; padding: .55rem .75rem; border-radius: 999px;
  background: var(--wp--preset--color--bronze); color: #fff; font-size: .75rem; font-weight: 700; letter-spacing: .04em;
}
.ae-tel figcaption { margin-top: 1rem; text-align: center; font-size: .875rem; color: #a8a49c; }
.ae-home__section:not(.ae-home__section--ink) .ae-tel figcaption { color: #6c675e; }

/* Cartes à deux boutons */
.ae-sit__bloc { padding-top: .9rem; border-top: 1px solid var(--wp--preset--color--line); display: flex; flex-direction: column; gap: .7rem; }
.ae-sit__bloc p { flex-grow: 0; margin: 0; }
.ae-sit__bloc .ae-btn { align-self: flex-start; }

/* Grilles complémentaires */
.ae-etapes--deux { grid-template-columns: 1fr; }
@media (min-width: 760px) { .ae-etapes--deux { grid-template-columns: 1fr 1fr; } }
@media (min-width: 760px) { .ae-etapes--communes { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 1100px) { .ae-etapes--communes { grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ae-etapes--communes .ae-etape { padding: 1.25rem 1.4rem; gap: .35rem; }
.ae-etapes--communes .ae-etape h3 { font-size: 1.125rem; }
.ae-etape p .ae-btn { margin-top: .25rem; }
.ae-etape > p:last-child:has(.ae-btn) { margin-top: auto; }
.ae-home-videos__grille--4 { display: grid; gap: 1rem; margin-top: 2.5rem; grid-template-columns: repeat(2, minmax(0,1fr)); }
@media (min-width: 900px) { .ae-home-videos__grille--4 { grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ae-home-videos__grille--4 .ae-slot { margin: 0; }
.ae-ech-note { margin: 1.25rem 0 0; font-size: .875rem; color: #a8a49c; max-width: 70ch; }
.ae-home .ae-home__deux > div > .ae-slot { margin: 1.5rem 0 0; }

/* Sommaire : des pastilles numérotées, plutôt qu'une liste */
.ae-sommaire ol { counter-reset: som; }
.ae-sommaire li { counter-increment: som; }
.ae-sommaire a {
  display: inline-flex; align-items: center; gap: .5rem; padding: .4rem .85rem .4rem .45rem; border-radius: 999px;
  background: #fff; border: 1px solid var(--wp--preset--color--line) !important; color: var(--wp--preset--color--ink);
  font-size: .8125rem; font-weight: 600; white-space: nowrap; transition: background var(--ae-t), color var(--ae-t);
}
.ae-sommaire a::before {
  content: counter(som, decimal-leading-zero); display: grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%;
  background: var(--wp--preset--color--sand); color: var(--wp--preset--color--bronze); font-size: .6875rem; font-weight: 800;
}
.ae-sommaire a:hover, .ae-sommaire a.is-actif { background: var(--wp--preset--color--ink); color: #fff; }
.ae-sommaire a.is-actif::before, .ae-sommaire a:hover::before { background: var(--wp--preset--color--bronze); color: #fff; }
.ae-sommaire ol { display: flex; flex-wrap: wrap; gap: .5rem; columns: auto; }
@media (max-width: 999px) { .ae-sommaire ol { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: .25rem; } }
@media (max-width: 1060px) { .ae-header__cta { display: none !important; } }
.entry-content .ae-ech__chips, .entry-content .ae-fa ul, .entry-content .ae-duel ol, .entry-content .ae-frise, .entry-content .ae-paris__card ol { padding-left: 0; }
.entry-content .ae-ech__chips li, .entry-content .ae-fa li { margin: 0; }
.entry-content .ae-ech__chips li::marker { content: none; }
.ae-att__q { min-height: 4.6rem; display: flex; align-items: center; }
.entry-content > .alignfull:has(> .ae-home) { margin-block: 0; }
.ae-duel { margin-top: 2.5rem; }
.ae-home__section--ink .ae-frise li > span:last-child { color: #c9c5bd; }
.ae-home__section--ink .ae-frise__n { background: var(--wp--preset--color--ink); }
.ae-home__section--ink .ae-frise::before { background: #3a3936; }

/* ------------------------------------------------------------------
   33. Sections interactives : expertise, exclusivité, Paris
   Les états masqués ne s'appliquent que sous .ae-anim, posé par le
   script : sans lui, tout reste visible.
------------------------------------------------------------------ */
:root { --ae-ease: cubic-bezier(.22,.8,.24,1); }

/* En-tête deux colonnes */
.ae-home .ae-tete { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(1.5rem, 5vw, 4rem); align-items: end; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.ae-home .ae-tete h2, .ae-home .ae-tete h3 { max-width: none; margin: 0; font-size: clamp(2.25rem, 4.6vw, 4rem); line-height: 1.03; letter-spacing: -.025em; }
.ae-home .ae-tete--md h2, .ae-home .ae-tete--md h3 { font-size: clamp(1.75rem, 3.2vw, 2.75rem); }
.ae-tete__chapeau { margin: 0; font-size: clamp(1.0625rem, 1.4vw, 1.1875rem); line-height: 1.7; color: #4b4743; }
.ae-home__section--ink .ae-tete__chapeau { color: #a8a199; }
@media (max-width: 760px) { .ae-home .ae-tete { grid-template-columns: 1fr; gap: 1.1rem; align-items: start; } }

/* Mots qui montent, blocs qui apparaissent */
.ae-split .ae-w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .06em; }
.ae-split .ae-w > span { display: inline-block; }
.ae-anim .ae-split .ae-w > span { transform: translateY(105%); transition: transform .9s var(--ae-ease); }
.ae-anim .ae-split.is-in .ae-w > span { transform: none; }
.ae-anim [data-rv] { opacity: 0; transform: translateY(24px); transition: opacity .9s var(--ae-ease), transform .9s var(--ae-ease); }
.ae-anim [data-rv].is-in { opacity: 1; transform: none; }

/* ---- Expertise ---- */
.ae-xp__piste { position: relative; height: 2px; background: var(--wp--preset--color--line); margin: 0 0 2.5rem; }
.ae-xp__rempli { position: absolute; inset: 0 auto 0 0; width: 0; background: var(--wp--preset--color--bronze); transition: width .8s var(--ae-ease); }
.ae-xp__point { position: absolute; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%; background: var(--wp--preset--color--paper); border: 2px solid var(--wp--preset--color--line); transition: border-color .4s, background .4s, transform .4s var(--ae-ease); }
.ae-xp__point.is-on { border-color: var(--wp--preset--color--bronze); background: var(--wp--preset--color--bronze); }
.ae-xp__point.is-cur { transform: scale(1.35); }
.ae-xp__cartes { display: flex; gap: 1.25rem; min-height: 30rem; }
.ae-xp__carte {
  position: relative; flex: 1 1 0; min-width: 0; display: flex; flex-direction: column;
  background: var(--wp--preset--color--sand); border: 1px solid var(--wp--preset--color--line); border-radius: 26px;
  padding: 2.5rem 2.25rem 3.75rem; cursor: pointer; overflow: hidden;
  transition: flex-grow .7s var(--ae-ease), border-color .4s, box-shadow .5s, background .4s;
}
.ae-xp__carte:hover { border-color: #cdbfae; }
.ae-xp__carte:focus-visible { outline: 2px solid var(--wp--preset--color--bronze); outline-offset: 4px; }
.ae-xp__carte.is-actif { flex-grow: 2.3; background: #fff; border-color: var(--wp--preset--color--bronze); box-shadow: 0 24px 60px -30px rgba(120,60,30,.35); cursor: default; }
.ae-xp__num { display: flex; align-items: center; gap: .875rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .9375rem; letter-spacing: .12em; color: var(--wp--preset--color--bronze); }
.ae-xp__ico { width: 42px; height: 42px; border-radius: 50%; border: 1.5px solid var(--wp--preset--color--bronze); display: grid; place-items: center; flex: none; transition: background .4s, color .4s; }
.ae-xp__ico svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ae-xp__carte.is-actif .ae-xp__ico { background: var(--wp--preset--color--bronze); color: #fff; }
.ae-home .ae-xp__carte h3 { font-size: clamp(1.375rem, 2vw, 1.875rem); line-height: 1.12; letter-spacing: -.015em; margin: 2rem 0 1rem; max-width: 16ch; }
.ae-xp__carte.is-actif h3 { max-width: none; }
.ae-xp__accroche { margin: 0; font-size: 1rem; line-height: 1.6; color: #4b4743; }
.ae-xp__texte { margin: 0; font-size: 1.0625rem; line-height: 1.7; color: #4b4743; max-width: 36rem; display: none; }
.ae-xp__carte.is-actif .ae-xp__accroche { display: none; }
.ae-xp__carte.is-actif .ae-xp__texte { display: block; animation: ae-monte .6s .25s var(--ae-ease) both; }
@keyframes ae-monte { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.ae-xp__plus { position: absolute; left: 2.25rem; bottom: 2rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--wp--preset--color--bronze); display: flex; gap: .5rem; }
.ae-xp__plus::after { content: "→"; transition: transform .3s; }
.ae-xp__carte:hover .ae-xp__plus::after { transform: translateX(4px); }
.ae-xp__carte.is-actif .ae-xp__plus { display: none; }
.ae-xp__minuteur { position: absolute; left: 2.25rem; right: 2.25rem; bottom: 2rem; height: 2px; background: var(--wp--preset--color--line); opacity: 0; transition: opacity .3s; }
.ae-xp__minuteur span { display: block; height: 100%; width: 0; background: var(--wp--preset--color--bronze); }
.ae-xp.is-auto .ae-xp__carte.is-actif .ae-xp__minuteur { opacity: 1; }
.ae-xp.is-auto .ae-xp__carte.is-actif .ae-xp__minuteur span.is-run { animation: ae-remplit var(--dur, 7s) linear forwards; }
@keyframes ae-remplit { to { width: 100%; } }
.ae-anim .ae-xp__carte { opacity: 0; transform: translateY(32px); transition: flex-grow .7s var(--ae-ease), border-color .4s, box-shadow .5s, background .4s, opacity .8s var(--ae-ease), transform .8s var(--ae-ease); }
.ae-anim.is-in .ae-xp__carte { opacity: 1; transform: none; }
.ae-anim.is-in .ae-xp__carte:nth-child(2) { transition-delay: 0s, 0s, 0s, 0s, .12s, .12s; }
.ae-anim.is-in .ae-xp__carte:nth-child(3) { transition-delay: 0s, 0s, 0s, 0s, .24s, .24s; }
@media (max-width: 860px) {
  .ae-xp__piste { display: none; }
  .ae-xp__cartes { flex-direction: column; min-height: 0; gap: .875rem; }
  .ae-xp__carte { flex: none; padding: 1.5rem 1.375rem; border-radius: 20px; cursor: pointer; }
  .ae-xp__carte.is-actif { flex-grow: 0; cursor: pointer; }
  .ae-xp__num { font-size: .875rem; }
  .ae-xp__ico { width: 36px; height: 36px; }
  .ae-home .ae-xp__carte h3 { margin: 1rem 2rem .5rem 0; max-width: none; font-size: 1.375rem; }
  .ae-xp__carte::after { content: "+"; position: absolute; right: 1.25rem; top: 1.5rem; width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--wp--preset--color--line); display: grid; place-items: center; font-size: 1.25rem; line-height: 1; color: var(--wp--preset--color--bronze); transition: transform .3s var(--ae-ease); }
  .ae-xp__carte.is-actif::after { transform: rotate(45deg); border-color: var(--wp--preset--color--bronze); }
  .ae-xp__texte { font-size: 1rem; }
  .ae-xp__plus, .ae-xp__minuteur { display: none; }
}

/* ---- Exclusivité (sur bande sombre) ---- */
.ae-home__section--ex { --ex-panel: #1c1b19; --ex-panel2: #24221f; --ex-line: #2f2c28; --ex-warm: #5a3524; --ex-accent: #d0704b; --ex-muted: #a8a199; --ex-dim: #77706a; }
.ae-ex .ae-eyebrow { color: var(--ex-accent); }
.ae-ex h3 { color: var(--wp--preset--color--paper); }
.ae-ex__n { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .875rem; letter-spacing: .14em; color: var(--ex-accent); }
.ae-ex__raisons { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ex-line); border-bottom: 1px solid var(--ex-line); margin-bottom: clamp(4.5rem, 9vw, 8rem); }
.ae-ex__raison { position: relative; padding: 2.5rem 2.25rem 2.75rem 0; }
.ae-ex__raison + .ae-ex__raison { padding-left: 2.25rem; border-left: 1px solid var(--ex-line); }
.ae-ex__raison::before { content: ""; position: absolute; top: -1px; left: 0; height: 2px; width: 48px; background: var(--ex-accent); }
.ae-ex__raison + .ae-ex__raison::before { left: -1px; }
.ae-anim .ae-ex__raison::before { width: 0; transition: width 1s .2s var(--ae-ease); }
.ae-anim .ae-ex__raison.is-in::before { width: 48px; }
.ae-home .ae-ex__raison h3 { font-size: clamp(1.3rem, 1.9vw, 1.625rem); line-height: 1.2; margin: 1.1rem 0 .875rem; }
.ae-ex__raison p, .ae-ex__etape p { margin: 0; font-size: 1rem; line-height: 1.7; color: var(--ex-muted); }

.ae-ex__cols { display: grid; grid-template-columns: 1fr 1fr 1.4fr; gap: 1.125rem; align-items: end; margin-bottom: clamp(4.5rem, 9vw, 8.5rem); }
.ae-ex__col { background: var(--ex-panel); border: 1px solid var(--ex-line); border-radius: 24px; padding: 2.1rem 1.9rem 2rem; }
.ae-ex__col--1 { min-height: 20rem; }
.ae-ex__col--2 { min-height: 25rem; }
.ae-ex__col--3 { background: linear-gradient(180deg, #2a1d17 0%, var(--ex-panel2) 60%); border-color: var(--ex-warm); padding: 2.4rem 2.1rem 2.1rem; }
.ae-ex__label { margin: 0 0 .875rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ex-dim); }
.ae-ex__col--3 .ae-ex__label { color: var(--ex-accent); }
.ae-home .ae-ex__col h3 { font-size: clamp(1.375rem, 2vw, 1.75rem); line-height: 1.15; margin: 0 0 .6rem; }
.ae-ex__tag { margin: 0 0 1.5rem; font-size: .9375rem; line-height: 1.55; color: var(--ex-muted); min-height: 2.9em; }
.ae-ex__niveau { display: flex; gap: 5px; margin-bottom: 1.5rem; }
.ae-ex__niveau i { flex: 1; height: 3px; border-radius: 2px; background: var(--ex-line); position: relative; overflow: hidden; }
.ae-ex__niveau i::after { content: ""; position: absolute; inset: 0; background: var(--ex-dim); transform: scaleX(0); transform-origin: left; }
.ae-ex__niveau i.f::after { transform: scaleX(1); }
.ae-ex__col--3 .ae-ex__niveau i::after { background: var(--ex-accent); }
.ae-anim .ae-ex__niveau i::after { transition: transform .7s var(--ae-ease); }
.ae-anim .ae-ex__col:not(.is-in) .ae-ex__niveau i.f::after { transform: scaleX(0); }
.ae-ex__niveau i:nth-child(2)::after { transition-delay: .15s; }
.ae-ex__niveau i:nth-child(3)::after { transition-delay: .3s; }
.ae-ex__col ul { list-style: none; margin: 0; padding: 0; }
.ae-ex__col li { display: flex; gap: .75rem; align-items: baseline; padding: .7rem 0; border-top: 1px solid var(--ex-line); font-size: 1rem; line-height: 1.4; color: #d8d2ca; }
.ae-ex__col li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ex-dim); flex: none; transform: translateY(-2px); }
.ae-ex__col--3 li { border-color: #3a2e27; color: var(--wp--preset--color--paper); }
.ae-ex__col--3 li::before { background: var(--ex-accent); }
.ae-ex__saut { display: inline-flex; gap: .6rem; margin-top: 1.5rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ex-accent); text-decoration: none; }
.ae-ex__saut::after { content: "↓"; transition: transform .3s var(--ae-ease); }
.ae-ex__saut:hover { color: #f0a283; }
.ae-ex__saut:hover::after { transform: translateY(3px); }
.ae-anim .ae-ex__col:nth-child(2) { transition-delay: .15s; }
.ae-anim .ae-ex__col:nth-child(3) { transition-delay: .3s; }

.ae-ex [id] { scroll-margin-top: 96px; }
.ae-ex__methode { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.125rem; margin-bottom: clamp(4.5rem, 9vw, 7.5rem); }
.ae-ex__etape { position: relative; overflow: hidden; background: var(--ex-panel); border: 1px solid var(--ex-line); border-radius: 22px; padding: 2rem 1.75rem 2.1rem; }
.ae-ex__etape::after { content: ""; position: absolute; left: 0; top: 0; height: 3px; width: 100%; background: var(--ex-accent); transform-origin: left; }
.ae-anim .ae-ex__etape::after { transform: scaleX(0); transition: transform .9s .4s var(--ae-ease); }
.ae-anim .ae-ex__etape.is-in::after { transform: scaleX(1); }
.ae-anim .ae-ex__etape:nth-child(2) { transition-delay: .1s; }
.ae-anim .ae-ex__etape:nth-child(3) { transition-delay: .2s; }
.ae-anim .ae-ex__etape:nth-child(4) { transition-delay: .3s; }
.ae-home .ae-ex__etape h3 { font-size: 1.3125rem; line-height: 1.2; margin: 1rem 0 .875rem; }
.ae-ex__etape p { font-size: .96875rem; }
.ae-ex__etape em { font-style: normal; color: var(--wp--preset--color--paper); }

.ae-ex__profils { display: grid; grid-template-columns: .85fr 1.6fr; gap: 1.375rem; }
.ae-ex__onglets { display: flex; flex-direction: column; gap: .75rem; }
.ae-ex__onglet { display: block; width: 100%; text-align: left; font: inherit; color: var(--wp--preset--color--paper); background: var(--ex-panel); border: 1px solid var(--ex-line); border-radius: 18px; padding: 1.4rem 1.6rem; cursor: pointer; transition: border-color .35s, background .35s; }
.ae-ex__onglet:hover { border-color: #4a3a30; }
.ae-ex__onglet:focus-visible { outline: 2px solid var(--ex-accent); outline-offset: 3px; }
.ae-ex__onglet-t { display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1.25rem; }
.ae-ex__onglet-t::after { content: "→"; color: var(--ex-dim); transition: transform .35s var(--ae-ease), color .35s; }
.ae-ex__onglet-s { display: block; margin-top: .35rem; font-size: .90625rem; line-height: 1.5; color: var(--ex-muted); }
.ae-ex__onglet[aria-selected="true"] { background: #2a1d17; border-color: var(--ex-accent); }
.ae-ex__onglet[aria-selected="true"] .ae-ex__onglet-t::after { color: var(--ex-accent); transform: translateX(4px); }
.ae-ex__panneaux { background: linear-gradient(160deg, #2a1d17 0%, var(--ex-panel2) 55%); border: 1px solid var(--ex-warm); border-radius: 24px; padding: 2.75rem 2.75rem 2.5rem; min-height: 29rem; }
.ae-ex__panneau[hidden] { display: none; }
.ae-ex__panneau.is-on { animation: ae-monte .6s var(--ae-ease); }
.ae-ex__citation { margin: 0 0 1.375rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: clamp(1.375rem, 2.3vw, 1.875rem); line-height: 1.25; letter-spacing: -.01em; color: var(--wp--preset--color--paper); }
.ae-ex__intro { margin: 0 0 1.9rem; font-size: 1.03rem; line-height: 1.7; color: var(--ex-muted); max-width: 40rem; }
.ae-ex__outils { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem 1.75rem; }
.ae-ex__outil { border-top: 1px solid #3a2e27; padding: .875rem 0 .25rem; }
.ae-ex__outil b { display: flex; gap: .6rem; align-items: center; font-weight: 600; font-size: .96875rem; color: var(--wp--preset--color--paper); }
.ae-ex__outil b::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--ex-accent); flex: none; }
.ae-ex__outil span { display: block; margin: .35rem 0 0 1.05rem; font-size: .875rem; line-height: 1.6; color: var(--ex-muted); }
.ae-ex__principe { display: flex; gap: .875rem; align-items: baseline; margin: 1.9rem 0 0; padding-top: 1.375rem; border-top: 1px solid var(--ex-warm); font-size: .96875rem; line-height: 1.6; color: var(--wp--preset--color--paper); }
.ae-ex__principe span { flex: none; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ex-accent); }
.ae-ex__note { margin: 2.1rem 0 0; max-width: 49rem; font-size: .9375rem; line-height: 1.7; color: var(--ex-muted); }
.ae-ex__note strong { color: var(--wp--preset--color--paper); font-weight: 600; }

@media (max-width: 1040px) {
  .ae-ex__methode { grid-template-columns: 1fr 1fr; }
  .ae-ex__profils { grid-template-columns: 1fr; }
  .ae-ex__onglets { flex-direction: row; }
  .ae-ex__onglet { flex: 1 1 0; }
  .ae-ex__panneaux { min-height: 0; }
}
@media (max-width: 980px) {
  .ae-ex__cols { grid-template-columns: 1fr 1fr; }
  .ae-ex__col--3 { grid-column: 1 / -1; }
  .ae-ex__raisons { grid-template-columns: 1fr; }
  .ae-ex__raison, .ae-ex__raison + .ae-ex__raison { padding: 2.1rem 0 2.25rem; border-left: 0; }
  .ae-ex__raison + .ae-ex__raison { border-top: 1px solid var(--ex-line); }
  .ae-ex__raison + .ae-ex__raison::before { left: 0; }
}
/* Téléphone : les profils deviennent un accordéon, chaque panneau sous son onglet */
@media (max-width: 680px) {
  .ae-ex__cols { grid-template-columns: 1fr; }
  .ae-ex__col--1, .ae-ex__col--2 { min-height: 0; }
  .ae-ex__col { padding: 1.6rem 1.4rem; border-radius: 20px; }
  .ae-ex__tag { min-height: 0; }
  .ae-ex__methode { grid-template-columns: 1fr; }
  .ae-ex__etape { padding: 1.6rem 1.4rem; }
  .ae-ex__profils { display: flex; flex-direction: column; gap: .75rem; }
  .ae-ex__onglets, .ae-ex__panneaux { display: contents; }
  .ae-ex__onglet { padding: 1.15rem 1.25rem; border-radius: 16px; }
  .ae-ex__onglet-t { font-size: 1.125rem; }
  .ae-ex__onglet-t::after { content: "+"; font-size: 1.375rem; line-height: 1; }
  .ae-ex__onglet[aria-selected="true"] .ae-ex__onglet-t::after { content: "–"; transform: none; }
  .ae-ex__panneau { background: linear-gradient(160deg, #2a1d17 0%, var(--ex-panel2) 55%); border: 1px solid var(--ex-warm); border-radius: 18px; padding: 1.6rem 1.35rem; margin-bottom: .5rem; }
  .ae-ex__outils { grid-template-columns: 1fr; }
  .ae-ex__principe { flex-direction: column; gap: .35rem; }
}

/* ---- Paris ---- */
.ae-home .ae-pa__titre { max-width: 15ch; font-size: clamp(2.25rem, 4.6vw, 4rem); line-height: 1.03; letter-spacing: -.025em; margin: 0; }
.ae-pa__chapeau { max-width: 45rem; margin: 1.75rem 0 0; font-size: clamp(1.0625rem, 1.4vw, 1.1875rem); line-height: 1.7; color: #55504a; }
.ae-pa__idees { margin: clamp(2.75rem, 5vw, 4rem) 0 clamp(4.5rem, 8vw, 7.5rem); border-top: 1px solid var(--wp--preset--color--line); }
.ae-pa__idee { position: relative; display: grid; grid-template-columns: 1fr 56px 1.35fr; gap: 1.5rem; align-items: center; padding: 1.9rem 0; border-bottom: 1px solid var(--wp--preset--color--line); }
.ae-pa__idee::before { content: ""; position: absolute; left: 0; bottom: -1px; height: 1px; width: 100%; background: var(--wp--preset--color--bronze); }
.ae-anim .ae-pa__idee::before { width: 0; transition: width .9s .2s var(--ae-ease); }
.ae-anim .ae-pa__idee.is-in::before { width: 100%; }
.ae-pa__lbl { display: block; margin-bottom: .6rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; }
.ae-pa__de .ae-pa__lbl { color: #8e877e; }
.ae-pa__vers .ae-pa__lbl { color: var(--wp--preset--color--bronze); }
.ae-pa__de p { margin: 0; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: clamp(1.125rem, 1.7vw, 1.375rem); line-height: 1.3; color: #8e877e; }
.ae-pa__vers p { margin: 0; font-size: 1.03rem; line-height: 1.7; color: #55504a; }
.ae-pa__vers strong { color: var(--wp--preset--color--ink); font-weight: 600; }
.ae-pa__fleche { width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid var(--wp--preset--color--bronze); color: var(--wp--preset--color--bronze); display: grid; place-items: center; transition: background .4s, color .4s, border-color .5s; }
.ae-anim .ae-pa__idee:not(.is-in) .ae-pa__fleche { border-color: var(--wp--preset--color--line); color: #8e877e; }
.ae-anim .ae-pa__idee.is-in .ae-pa__fleche { transition-delay: .5s; }
.ae-pa__idee:hover .ae-pa__fleche { background: var(--wp--preset--color--bronze); color: #fff; }
.ae-pa__fleche svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ae-pa__bas { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(2.5rem, 6vw, 4.5rem); align-items: center; }
.ae-home .ae-pa__txt h3 { font-size: clamp(1.625rem, 2.8vw, 2.25rem); line-height: 1.12; margin: 0 0 1.25rem; }
.ae-pa__txt p { margin: 0 0 1.1rem; font-size: 1.0625rem; line-height: 1.7; color: #55504a; }
.ae-pa__cta { display: inline-flex; align-items: center; gap: .75rem; margin-top: .9rem; padding: 1.1rem 2rem; border: 1.5px solid var(--wp--preset--color--ink); border-radius: 999px; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1.0625rem; color: var(--wp--preset--color--ink); text-decoration: none; transition: background .35s, color .35s; }
.ae-pa__cta::after { content: "→"; transition: transform .35s var(--ae-ease); }
.ae-pa__cta:hover { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper); }
.ae-pa__cta:hover::after { transform: translateX(4px); }
.ae-pa__carte { background: var(--wp--preset--color--ink); color: #f4efe8; border-radius: 28px; padding: 3rem 3rem 2.75rem; }
.ae-pa__k { margin: 0 0 .6rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .8125rem; letter-spacing: .2em; text-transform: uppercase; color: #d99a7e; }
.ae-pa__q { margin: 0 0 2.1rem; font-size: .96875rem; line-height: 1.6; color: #a8a199; }
.ae-pa__etapes { position: relative; }
.ae-pa__prog { display: none; }
.ae-pa__etapes li::before, .ae-pa__etapes li::after { content: ""; position: absolute; left: 23px; top: 24px; bottom: -24px; width: 1.5px; background: #34312d; }
.ae-pa__etapes li::after { background: var(--wp--preset--color--bronze); transform-origin: top; }
.ae-pa__etapes li:last-child::before, .ae-pa__etapes li:last-child::after { display: none; }
.ae-anim .ae-pa__etapes li::after { transform: scaleY(0); transition: transform .7s var(--ae-ease); }
.ae-anim .ae-pa__carte.is-in li::after { transform: none; }
.ae-anim .ae-pa__carte.is-in li:nth-child(1)::after { transition-delay: .4s; }
.ae-anim .ae-pa__carte.is-in li:nth-child(2)::after { transition-delay: .9s; }
.ae-pa__etapes ol { list-style: none; margin: 0; padding: 0; }
.ae-pa__etapes li { position: relative; display: grid; grid-template-columns: 48px 1fr; gap: 1.375rem; padding-bottom: 1.9rem; }
.ae-pa__etapes li:last-child { padding-bottom: 0; }
.ae-pa__c { position: relative; z-index: 1; width: 48px; height: 48px; border-radius: 50%; border: 1.5px solid var(--wp--preset--color--bronze); background: var(--wp--preset--color--ink); display: grid; place-items: center; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1rem; transition: border-color .5s; }
.ae-anim .ae-pa__carte:not(.is-in) .ae-pa__c { border-color: #5a564f; }
.ae-anim .ae-pa__carte.is-in li:nth-child(2) .ae-pa__c { transition-delay: .7s; }
.ae-anim .ae-pa__carte.is-in li:nth-child(3) .ae-pa__c { transition-delay: 1.2s; }
.ae-pa__etapes h4 { margin: .6rem 0 .5rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: clamp(1.1875rem, 1.7vw, 1.4375rem); line-height: 1.25; color: #f4efe8; }
.ae-pa__etapes p { margin: 0; font-size: .96875rem; line-height: 1.6; color: #b9b2a9; }
@media (max-width: 900px) { .ae-pa__bas { grid-template-columns: 1fr; } }
@media (max-width: 680px) {
  .ae-pa__idee { grid-template-columns: 1fr; gap: .75rem; padding: 1.6rem 0; }
  .ae-pa__fleche { width: 34px; height: 34px; transform: rotate(90deg); }
  .ae-pa__carte { padding: 2.1rem 1.4rem 2rem; border-radius: 22px; }
  .ae-pa__etapes li { grid-template-columns: 40px 1fr; gap: 1rem; }
  .ae-pa__c { width: 40px; height: 40px; }
  .ae-pa__etapes li::before, .ae-pa__etapes li::after { left: 19px; top: 20px; bottom: -20px; }
  .ae-pa__cta { padding: 1rem 1.5rem; font-size: 1rem; }
}

/* Hero d'accueil : trois paragraphes */
.ae-home-hero__lede:has(+ .ae-home-hero__lede) { margin-bottom: .9rem; }
.ae-home-hero__lede strong { color: var(--wp--preset--color--ink); font-weight: 600; }

@media (prefers-reduced-motion: reduce) {
  .ae-xp__carte.is-actif .ae-xp__texte, .ae-ex__panneau.is-on { animation: none; }
}
.ae-xp__texte { text-wrap: wrap; }

/* ------------------------------------------------------------------
   34. Recrutement : grilles et simulateur
------------------------------------------------------------------ */
.ae-grilles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin-top: 2.5rem; }
.ae-grille { background: #1c1b19; border: 1px solid #2f2c28; border-radius: 24px; padding: 2rem 2rem 1.75rem; }
.ae-grille__sous { margin: 0 0 .5rem; font-size: .875rem; line-height: 1.5; color: #a8a199; }
.ae-home .ae-grille h3 { font-size: 1.625rem; margin: 0 0 1.25rem; color: var(--wp--preset--color--paper); }
.ae-grille ul { list-style: none; margin: 0; padding: 0; }
.ae-grille li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .95rem 0; border-top: 1px solid #2f2c28; color: #d8d2ca; }
.ae-grille li strong { font-family: var(--wp--preset--font-family--display); font-size: 1.375rem; color: var(--wp--preset--color--paper); }
.ae-grille li.is-haut strong { color: #e0a08a; }
.ae-grille__pied { margin: 1.25rem 0 0; padding: 1rem 1.1rem; border-radius: 14px; background: rgba(251,248,243,.05); font-size: .9375rem; line-height: 1.6; color: #c9c5bd; }
.ae-grille__pied strong { color: var(--wp--preset--color--paper); }
@media (max-width: 760px) { .ae-grilles { grid-template-columns: 1fr; } .ae-grille { padding: 1.5rem 1.25rem; } }

.ae-simu { display: grid; grid-template-columns: 5fr 7fr; gap: 1.25rem; margin-top: 2.5rem; }
.ae-simu__params, .ae-simu__res { background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 24px; padding: 2rem; }
.ae-home .ae-simu h3 { font-size: 1.25rem; margin: 0 0 1.5rem; }
.ae-simu__champ { margin-bottom: 1.6rem; }
.ae-simu__champ label { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; margin-bottom: .6rem; font-size: .9375rem; color: #4b4743; }
.ae-simu__champ output { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1.125rem; color: var(--wp--preset--color--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.ae-simu__champ input[type=range] { width: 100%; height: 28px; margin: 0; accent-color: var(--wp--preset--color--bronze); cursor: pointer; }
.ae-simu__bornes { display: flex; justify-content: space-between; font-size: .75rem; color: #8e877e; }
.ae-simu__champ.is-off { opacity: .4; }
.ae-simu__k { margin: 0; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--wp--preset--color--bronze); }
.ae-simu__total { margin: .5rem 0 1.5rem; font-family: var(--wp--preset--font-family--display); font-weight: 800; font-size: clamp(2.5rem, 5vw, 3.75rem); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ae-simu__detail { list-style: none; margin: 0 0 1.25rem; padding: 0; }
.ae-simu__detail li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .9rem 0; border-top: 1px solid var(--wp--preset--color--line); }
.ae-simu__detail small { display: block; font-size: .8125rem; color: #8e877e; margin-top: .15rem; }
.ae-simu__detail strong { font-family: var(--wp--preset--font-family--display); font-size: 1.375rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ae-simu__barre { display: flex; height: 10px; border-radius: 6px; overflow: hidden; background: var(--wp--preset--color--sand); margin-bottom: 1.25rem; }
.ae-simu__barre span { display: block; height: 100%; transition: width .5s var(--ae-ease, ease); }
.ae-simu__barre span:first-child { background: var(--wp--preset--color--ink); }
.ae-simu__barre span:last-child { background: var(--wp--preset--color--bronze); }
.ae-simu__note { font-size: .8125rem; line-height: 1.55; color: #8e877e; }
@media (max-width: 900px) { .ae-simu { grid-template-columns: 1fr; } .ae-simu__params, .ae-simu__res { padding: 1.5rem 1.25rem; } }

.ae-liste-check { list-style: none; margin: 0 0 1.5rem; padding: 0; }
.ae-liste-check li { position: relative; padding: .45rem 0 .45rem 1.75rem; }
.ae-liste-check li::before { content: ""; position: absolute; left: 0; top: .85rem; width: 12px; height: 7px; border-left: 2px solid var(--wp--preset--color--bronze); border-bottom: 2px solid var(--wp--preset--color--bronze); transform: rotate(-45deg); }
.ae-home [id="remuneration"], .ae-home [id="simulateur"], .ae-home [id="candidature"] { scroll-margin-top: 96px; }
.ae-home__section--ink .ae-att__q { color: var(--wp--preset--color--ink); }
.ae-home ul.ae-simu__detail, .ae-home .ae-grille ul, .ae-home .ae-ex__col ul, .ae-home .ae-pa__etapes ol, .ae-home ul.ae-liste-check { padding-left: 0; margin-left: 0; }

/* ==================================================================
   35. REFONTE OCTOBRE 2026 — ÉPURÉ, SCHÉMAS, VISUELS
   ==================================================================
   Trois décisions. Moins de cadres : les cartes gardent un seul rayon
   et une bordure légère, les bandes respirent davantage. Des schémas
   en traits à la place des listes quand le contenu a une forme
   (méthode, parcours, carte, entonnoir). Une seule action principale
   par écran : l'estimation en ligne devient un lien, sauf là où elle
   est le sujet.
   ================================================================== */
:root {
  --ae-r-sm: 8px;
  --ae-r-md: 14px;
  --ae-r-lg: 22px;
  --ae-sch-ease: cubic-bezier(.22, .8, .24, 1);
}

/* --- Rayons unifiés ---------------------------------------------- */
.ae-card, .ae-etape, .ae-att, .ae-niveau, .ae-xp__carte, .ae-ex__col, .ae-ex__etape,
.ae-ex__onglet, .ae-ex__panneaux, .ae-pa__carte, .ae-paris__card, .ae-sit, .ae-prix,
.ae-engagement, .ae-home-form__panel, .ae-outil, .ae-fa, .ae-ech__col, .ae-duel__col,
.ae-grille, .ae-simu__params, .ae-simu__res, .ae-video, .ae-comp__cadre, .ae-sommaire,
.ae-home-hero__card, .ae-home .ae-media, .ae-home-hero__visuel .ae-slot, .ae-media-fill {
  border-radius: var(--ae-r-lg);
}
.ae-field input, .ae-field select, .ae-field textarea, .ae-home-form__panel .ae-form input,
.ae-home-form__panel .ae-form select, .ae-home-form__panel .ae-form textarea,
.ae-outil__champ select, .ae-diag__q, .ae-nav__panel, .ae-ent__etage, .ae-grille__pied,
.ae-sit__box, .ae-form__msg, .ae-encadre, .ae-fa__pied {
  border-radius: var(--ae-r-md);
}
.ae-nav__panel a, .ae-tags li { border-radius: var(--ae-r-sm); }
@media (max-width: 680px) {
  .ae-xp__carte, .ae-ex__col, .ae-ex__onglet, .ae-ex__panneau, .ae-pa__carte, .ae-sit, .ae-etape { border-radius: var(--ae-r-md); }
}

/* --- Moins de cadres : bordures plus légères, pas d'inclinaison ----- */
.ae-card, .ae-etape, .ae-sit, .ae-att, .ae-xp__carte, .ae-home-form__panel, .ae-engagement {
  border-color: color-mix(in srgb, var(--wp--preset--color--line) 70%, transparent);
}
.ae-fa { transform: none; box-shadow: none; overflow: hidden; }
.ae-xp__carte.is-actif { box-shadow: 0 30px 60px -40px rgba(20, 20, 19, .25); }
.ae-ech__col--nous { box-shadow: none; }

/* --- Hiérarchie des actions : un seul bouton plein par écran ---------- */
.ae-lien {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1rem;
  color: var(--wp--preset--color--ink); text-decoration: none;
  border-bottom: 1.5px solid var(--wp--preset--color--bronze); padding-bottom: .15rem;
  transition: color var(--ae-t), border-color var(--ae-t);
}
.ae-lien::after { content: "→"; transition: transform .3s var(--ae-sch-ease); }
.ae-lien:hover { color: var(--wp--preset--color--bronze); }
.ae-lien:hover::after { transform: translateX(4px); }
.ae-home__section--ink .ae-lien, .ae-section--ink .ae-lien { color: var(--wp--preset--color--paper); }
.ae-home-hero__actions .ae-lien { align-self: center; margin-left: .5rem; }

/* --- Hero d'accueil : le schéma à la place de la photo manquante ------ */
.ae-home-hero__inner { align-items: center; }
@media (min-width: 900px) { .ae-home-hero__inner { grid-template-columns: 6fr 6fr; gap: clamp(2rem, 5vw, 5rem); } }
.ae-home-hero__visuel .ae-schema { margin: 0; max-width: 620px; margin-inline: auto; }
.ae-home-hero__lede { max-width: 50ch; }
.ae-home-hero__note { margin-top: .5rem; }

/* --- Équipe : photo du duo, portraits sobres -------------------------- */
.ae-equipe { display: grid; gap: clamp(1.5rem, 4vw, 3rem); align-items: center; }
@media (min-width: 900px) { .ae-equipe { grid-template-columns: 5fr 7fr; } }
.ae-equipe .ae-figure { margin: 0; }
.ae-equipe .ae-media { border-radius: var(--ae-r-lg); }
.ae-personnes { margin-top: clamp(1.5rem, 3vw, 2.5rem); gap: clamp(1.25rem, 3vw, 2rem); }
.ae-equipe .ae-personnes { grid-template-columns: 1fr; max-width: 30rem; }
.ae-personne { display: grid; grid-template-columns: 96px 1fr; gap: 1.1rem; align-items: center; }
.ae-personne .ae-figure { margin: 0; max-width: none; }
.ae-personne .ae-media { border-radius: 50%; aspect-ratio: 1 / 1; }
.ae-personne h3 { margin: 0 0 .15rem; font-size: 1.25rem; }
.ae-personne__role { margin: 0 0 .35rem; font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--bronze); font-weight: 600; }
.ae-personne__note { margin: 0; font-size: .9375rem; line-height: 1.5; color: #4a4740; }

/* --- Marché : la carte à droite, le texte à gauche --------------------- */
.ae-marche { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
@media (min-width: 900px) { .ae-marche { grid-template-columns: 5fr 6fr; } }
.ae-marche .ae-schema { margin: 0; }
.ae-marche .ae-schema--carte { margin-inline: auto; }
.ae-marche__liste { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .1rem 1.5rem; }
.ae-marche__liste li { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; padding: .55rem 0; border-bottom: 1px solid var(--wp--preset--color--line); font-size: .9375rem; }
.ae-marche__liste a { text-decoration: none; color: var(--wp--preset--color--ink); }
.ae-marche__liste a:hover { color: var(--wp--preset--color--bronze); }
.ae-marche__liste strong { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 480px) { .ae-marche__liste { grid-template-columns: 1fr; } }

/* --- Exclusivité : quatre raisons sur grand écran ---------------------- */
@media (min-width: 981px) { .ae-ex__raisons--4 { grid-template-columns: repeat(4, 1fr); } }
.ae-ex .ae-schema { margin: clamp(2rem, 4vw, 3rem) 0 0; }
.ae-ex__suite { margin: 2rem 0 0; }

/* --- Paris : le parcours dessiné remplace la carte sombre --------------- */
.ae-pa__bas--schema { grid-template-columns: 1fr; gap: 1.5rem; }
.ae-pa__bas--schema .ae-schema { margin: 0; }
.ae-pa__bas--schema .ae-pa__txt { max-width: 62ch; }
.ae-pa__bas--schema .ae-pa__txt h3 { max-width: 20ch; }

/* --- Sommaire collant : pleine largeur via alignfull, sans calcul en vw --- */
@media (min-width: 1000px) {
  .entry-content > .ae-sommaire.alignfull { max-width: none; margin-left: calc(var(--wp--style--root--padding-left, var(--ae-gutter)) * -1) !important; margin-right: calc(var(--wp--style--root--padding-right, var(--ae-gutter)) * -1) !important; }
}
@media (max-width: 999px) {
  .entry-content > .ae-sommaire.alignfull { max-width: var(--ae-col); margin-inline: auto !important; }
}

/* --- Vendre : hero avec la fiche d'analyse, droite ---------------------- */
.ae-fa { max-width: 420px; }
.ae-hero .ae-schema { margin: 0; }

/* ==================================================================
   36. SCHÉMAS VECTORIELS
   ================================================================== */
.ae-schema {
  margin: clamp(2rem, 4vw, 3rem) auto;
  color: inherit;
  --sch-accent: var(--wp--preset--color--bronze);
  --sch-plein: var(--wp--preset--color--bronze);
  --sch-fill: #fff;
  --sch-line: var(--wp--preset--color--line);
}
.ae-home__section--ink .ae-schema, .ae-section--ink .ae-schema, .ae-schema--sombre {
  color: var(--wp--preset--color--paper);
  --sch-accent: #e0a08a;
  --sch-fill: #1c1b19;
  --sch-line: #3a3936;
}
.entry-content > .ae-schema { max-width: 62rem; margin-inline: auto; }
.ae-schema__svg svg { width: 100%; height: auto; display: block; overflow: visible; }
.ae-schema text { font-family: var(--wp--preset--font-family--sans); fill: currentColor; }
.ae-schema .t { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 17px; letter-spacing: -.01em; }
.ae-schema .t--grand { font-size: 23px; }
.ae-schema .t--moyen { font-size: 20px; }
.ae-schema .s--moyen { font-size: 15px; }
.ae-schema .t--accent { fill: var(--sch-accent); }
.ae-schema .s { font-size: 14px; opacity: .7; }
.ae-schema .s--fort { opacity: .85; }
.ae-schema .num { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 13px; letter-spacing: .16em; fill: var(--sch-accent); }
.ae-schema .lbl { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; opacity: .6; }
.ae-schema .lbl--accent { fill: var(--sch-accent); opacity: 1; }
.ae-schema .l { fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; opacity: .4; }
.ae-schema .l--pointille { stroke-dasharray: 2 7; }
.ae-schema .l--accent { stroke: var(--sch-accent); opacity: 1; stroke-width: 2; }
.ae-schema .l--fin { stroke-width: 1; opacity: .3; }
.ae-schema .disque { fill: var(--sch-fill); stroke: currentColor; stroke-width: 1.5; }
.ae-schema .disque--plein { fill: currentColor; }
.ae-schema .ico { fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ae-schema .centre .ico { stroke: var(--sch-fill); }
.ae-schema .n--accent .disque { stroke: var(--sch-accent); stroke-width: 2; }
.ae-schema .n--accent .ico { stroke: var(--sch-accent); }
.ae-schema .n--plein .disque { fill: var(--sch-plein); stroke: var(--sch-plein); }
.ae-schema .n--plein .ico { stroke: #fff; }
.ae-schema .n--fin .disque { stroke-opacity: .35; }
.ae-schema .n--fin .ico { opacity: .45; }
.ae-schema .n--grand .disque { stroke-width: 1.5; }
/* Carte : voir § 40 */
/* Entonnoir */
.ae-schema--entonnoir .etage { fill: currentColor; opacity: .07; stroke: currentColor; stroke-opacity: .35; stroke-width: 1.2; stroke-linejoin: round; }
.ae-schema--entonnoir .etage--fin { fill: var(--sch-plein); opacity: 1; stroke: none; }
.ae-schema--entonnoir .etage-t { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 18px; }
.ae-schema--entonnoir .etage-t--fin { fill: #fff; }
.ae-schema--entonnoir .etage-s--fin { fill: #fff; opacity: .9; }
.ae-schema--compact { max-width: 520px; margin-inline: auto; }
/* Niveaux */
.ae-schema--niveaux .marche { fill: currentColor; opacity: .06; stroke: currentColor; stroke-opacity: .3; stroke-width: 1; }
.ae-schema--niveaux .marche--nous { fill: var(--sch-plein); opacity: 1; stroke: none; }
.ae-schema--niveaux .lev { font-size: 13.5px; opacity: .75; }
.ae-schema--niveaux .lev--nous { fill: #fff; opacity: 1; font-weight: 600; }

/* Animation : les traits se tracent, les repères apparaissent. */
.ae-schema .d { stroke-dasharray: 1; stroke-dashoffset: 1; }
.ae-schema .n { opacity: 0; transform: translateY(6px); }
.ae-schema.is-in .d { stroke-dashoffset: 0; transition: stroke-dashoffset 1.3s var(--ae-sch-ease) calc(var(--i, 0) * .16s); }
.ae-schema.is-in .n { opacity: 1; transform: none; transition: opacity .7s ease calc(.3s + var(--i, 0) * .13s), transform .7s var(--ae-sch-ease) calc(.3s + var(--i, 0) * .13s); }
.no-js .ae-schema .d, .ae-schema.is-static .d { stroke-dashoffset: 0; }
.no-js .ae-schema .n, .ae-schema.is-static .n { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ae-schema .d { stroke-dashoffset: 0 !important; transition: none !important; }
  .ae-schema .n { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* Liste de repli : lue par les lecteurs d'écran, affichée sur téléphone. */
.ae-schema__liste {
  list-style: none; margin: 0; padding: 0; counter-reset: sch;
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%);
}
.ae-schema__liste li { counter-increment: sch; display: grid; grid-template-columns: 2rem 1fr; gap: .15rem .75rem; padding: .8rem 0; border-top: 1px solid var(--sch-line); }
.ae-schema__liste li::before { content: counter(sch, decimal-leading-zero); font-family: var(--wp--preset--font-family--display); font-weight: 700; color: var(--sch-accent); font-size: .8125rem; padding-top: .25rem; }
.ae-schema__liste strong { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1.0625rem; }
.ae-schema__liste span { grid-column: 2; font-size: .9375rem; opacity: .75; }
.ae-schema figcaption { margin-top: .75rem; font-size: .8125rem; line-height: 1.5; opacity: .65; }
@media (max-width: 700px) {
  .ae-schema:not(.ae-schema--carte) .ae-schema__svg { display: none; }
  .ae-schema:not(.ae-schema--carte) .ae-schema__liste { position: static; width: auto; height: auto; clip-path: none; overflow: visible; }
}

/* ==================================================================
   37. Encart simulateur de travaux (Martto)
   ================================================================== */
.ae-travaux {
  display: grid; grid-template-columns: auto 1fr auto; gap: 1.25rem 1.5rem; align-items: center;
  margin: clamp(2rem, 4vw, 3rem) auto; padding: 1.5rem 1.75rem;
  background: #fff; border: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 70%, transparent);
  border-left: 3px solid var(--wp--preset--color--bronze); border-radius: var(--ae-r-lg, 22px);
}
.entry-content > .ae-travaux { max-width: var(--ae-col); }
.ae-travaux__ico { width: 48px; height: 48px; border-radius: 50%; border: 1.5px solid var(--wp--preset--color--bronze); color: var(--wp--preset--color--bronze); display: grid; place-items: center; }
.ae-travaux__ico svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ae-travaux p { margin: 0; font-size: .96875rem; line-height: 1.55; color: #4a4740; }
.ae-travaux .ae-travaux__titre { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: 1.1875rem; color: var(--wp--preset--color--ink); margin-bottom: .3rem; }
.ae-travaux .ae-travaux__note { margin-top: .4rem; font-size: .8125rem; color: #8e877e; }
.ae-travaux .ae-btn { white-space: nowrap; }
.ae-home__section--sand .ae-travaux { margin-bottom: 0; }
@media (max-width: 720px) {
  .ae-travaux { grid-template-columns: 1fr; padding: 1.4rem 1.25rem; }
  .ae-travaux__ico { width: 40px; height: 40px; }
  .ae-travaux .ae-btn { justify-self: start; }
}

/* ==================================================================
   38. En-tête : menu centré, lien outil aligné
   ================================================================== */
.ae-header .ae-nav a, .ae-header .ae-nav a:hover, .ae-header .ae-nav a:visited { text-decoration: none !important; }
.ae-header .ae-nav a:focus:not(:focus-visible) { outline: none; }
.ae-nav__outil {
  display: inline-flex !important; align-items: center; gap: .4rem;
  color: var(--wp--preset--color--ink) !important;
}
.ae-nav__outil svg { flex: none; color: var(--wp--preset--color--bronze); transition: transform var(--ae-t); }
.ae-nav__outil:hover { color: var(--wp--preset--color--bronze) !important; }
.ae-nav__outil:hover svg { transform: translate(2px, -2px); }
/* Filet de sécurité : si un filtre de mise en forme insère des <p> ou des <br>
   dans l'en-tête, ils ne doivent ni occuper une case ni décaler les liens. */
.ae-header__inner > p { display: contents; }
.ae-header__inner > p:empty, .ae-header br { display: none; }
@media (min-width: 1061px) {
  /* Logo à gauche, bouton à droite, menu centré : chaque élément a sa case. */
  .ae-header__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); column-gap: 2rem; }
  .ae-logo { grid-area: 1 / 1; justify-self: start; }
  .ae-nav { grid-area: 1 / 2; justify-self: center; gap: 2rem; }
  .ae-header__cta { grid-area: 1 / 3; justify-self: end; white-space: nowrap; }
  .ae-burger { display: none !important; }
  .ae-nav > a:not(.ae-nav__mobile-cta) { display: inline-flex; align-items: center; height: 44px; }
  .ae-nav > .ae-nav__mobile-cta { display: none !important; }
  .ae-logo img { min-width: 128px; }
  /* Le lien outil est séparé des trois entrées par un filet discret. */
  .ae-nav__outil { padding-left: 2rem; border-left: 1px solid var(--wp--preset--color--line); height: 20px !important; }
}
@media (min-width: 1061px) and (max-width: 1279px) {
  /* Écrans intermédiaires : le menu occupe l'espace entre logo et bouton. */
  .ae-header__inner { grid-template-columns: auto minmax(0, 1fr) auto; }
  .ae-nav { gap: 1.25rem; }
  .ae-nav > a, .ae-nav__menu > summary { font-size: .875rem; }
  .ae-nav__outil { padding-left: 1.25rem; }
}
@media (max-width: 1060px) {
  .ae-nav__outil { justify-content: space-between; }
}

/* ==================================================================
   39. Accueil : comparatif exclusivité, équipe en duo
   ================================================================== */
.ae-home__section--ex .ae-ex__raisons + .ae-ex__cols { margin-top: clamp(3rem, 6vw, 5rem); margin-bottom: 0; }
.ae-ex__saut--page::after { content: "→"; }
.ae-ex__saut--page:hover::after { transform: translateX(3px); }

@media (min-width: 900px) { .ae-equipe--duo { grid-template-columns: 5fr 6fr; gap: clamp(3rem, 6vw, 6rem); } }
.ae-equipe--duo .ae-personnes { margin-top: 0; max-width: none; grid-template-columns: 1fr; gap: 0; }
.ae-equipe--duo .ae-personne { grid-template-columns: 136px 1fr; gap: 1.6rem; padding: 1.6rem 0; }
.ae-equipe--duo .ae-personne + .ae-personne { border-top: 1px solid var(--wp--preset--color--line); }
.ae-equipe--duo .ae-personne h3 { font-size: 1.5rem; }
.ae-personne .ae-media img { object-fit: cover; object-position: 50% 35%; }
@media (max-width: 560px) {
  .ae-equipe--duo .ae-personne { grid-template-columns: 96px 1fr; gap: 1.1rem; padding: 1.25rem 0; }
}

/* ==================================================================
   40. Carte de la boucle de Seine (accueil, « Le marché »)
   La Seine se trace dans le sens du courant, les communes prennent leur
   teinte de la moins chère à la plus chère, puis les prix s'affichent.
   ================================================================== */
.ae-schema--carte {
  --c-neutre: #EFE9DF;
  --c-rive: #9DB3BA;
  --c-lit: #D6E2E5;
  --c-trait: var(--wp--preset--color--paper);
  max-width: 580px; margin-inline: auto;
}
.ae-marche .ae-schema--carte { max-width: 580px; }
.ae-schema--carte .hachure-fond { fill: var(--wp--preset--color--paper); }
.ae-schema--carte .hachure { stroke: var(--wp--preset--color--line); stroke-width: 2; }
.ae-schema--carte .voisine { stroke: var(--c-trait); stroke-width: 3; stroke-linejoin: round; }
.ae-schema--carte .forme {
  fill: var(--f); stroke: var(--c-trait); stroke-width: 3; stroke-linejoin: round;
  transition: fill .9s ease calc(1.1s + var(--i, 0) * .14s), filter .25s ease;
}
.ae-schema--carte a.zone { cursor: pointer; outline: none; }
.ae-schema--carte .zone:hover .forme, .ae-schema--carte .zone.is-survol .forme { filter: brightness(.92) saturate(1.15); }
.ae-schema--carte .eau path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.ae-schema--carte .rive { stroke: var(--c-rive); stroke-width: 30; }
.ae-schema--carte .lit { stroke: var(--c-lit); stroke-width: 25; }
.ae-schema--carte .rive.ru { stroke-width: 13; }
.ae-schema--carte .lit.ru { stroke-width: 8.5; }
.ae-schema--carte .courant { stroke: #fff; stroke-width: 2.5; stroke-dasharray: .006 .026; opacity: .85; }
.ae-schema--carte .ile { fill: var(--wp--preset--color--paper); stroke: var(--c-rive); stroke-width: 2.5; }
.ae-schema--carte .anneau { fill: var(--wp--preset--color--paper); stroke: var(--wp--preset--color--ink); stroke-width: 3; }
.ae-schema--carte .pastille { fill: var(--wp--preset--color--ink); }
.ae-schema--carte .onde { fill: none; stroke: var(--wp--preset--color--bronze); stroke-width: 3; opacity: 0; transform-box: fill-box; transform-origin: center; }
.ae-schema--carte .etiquette { font-size: 30px; }
.ae-schema--carte .nom { font-family: var(--wp--preset--font-family--display); font-weight: 700; letter-spacing: -.01em; fill: var(--wp--preset--color--ink); }
.ae-schema--carte .prix { font-size: 24px; font-weight: 600; font-variant-numeric: tabular-nums; fill: var(--wp--preset--color--ink); opacity: .78; }
.ae-schema--carte .rep--voisine .etiquette { font-size: 25px; }
.ae-schema--carte .rep--voisine .nom { font-weight: 600; opacity: .5; }
.ae-schema--carte .rep--voisine .anneau { stroke-opacity: .4; }
.ae-schema--carte .rep--voisine .pastille { opacity: .4; }
.ae-schema--carte .rep { pointer-events: none; }
.ae-schema--carte .leg-t { font-size: 17px; font-weight: 600; letter-spacing: .16em; opacity: .65; }
.ae-schema--carte .leg-v { font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Animation (le CSS de base montre tout : sans JS ou en mouvement réduit). */
.ae-schema--carte .eau .d { transition-duration: 2.2s !important; transition-timing-function: cubic-bezier(.45, .05, .25, 1) !important; }
.ae-schema--carte .eau .bras { --i: 9; }
.ae-schema--carte .eau .ru { --i: 2; }
.ae-schema--carte .eau .bras.d, .ae-schema--carte .eau .ru.d { transition-duration: .7s !important; }
.ae-schema--carte:not(.is-in):not(.is-static) .forme { fill: var(--c-neutre); }
.ae-schema--carte:not(.is-in):not(.is-static) .terres,
.ae-schema--carte:not(.is-in):not(.is-static) .communes { opacity: 0; }
.ae-schema--carte .terres, .ae-schema--carte .communes { transition: opacity 1s ease .25s; }
.ae-schema--carte:not(.is-in):not(.is-static) .ile,
.ae-schema--carte:not(.is-in):not(.is-static) .courant { opacity: 0; }
.ae-schema--carte .ile { transition: opacity .6s ease 1.6s; }
.ae-schema--carte .courant { transition: opacity 1s ease 2.4s; }
.ae-schema--carte.is-in .courant { animation: ae-courant 9s linear infinite; }
@keyframes ae-courant { to { stroke-dashoffset: -.32; } }
.ae-schema--carte .rep { transition: opacity .6s ease calc(1.5s + var(--i, 0) * .14s), transform .6s cubic-bezier(.2, .8, .2, 1) calc(1.5s + var(--i, 0) * .14s); }
.ae-schema--carte:not(.is-in):not(.is-static) .rep { opacity: 0; transform: translateY(10px); }
.ae-schema--carte.is-in .rep--max .onde { animation: ae-onde 2.8s ease-out 3s infinite; }
@keyframes ae-onde { 0% { opacity: .9; transform: scale(1); } 100% { opacity: 0; transform: scale(3.2); } }
.ae-schema--carte .legende { transition: opacity .8s ease 2.6s; }
.ae-schema--carte:not(.is-in):not(.is-static) .legende { opacity: 0; }
.no-js .ae-schema--carte .forme { fill: var(--f) !important; }
.no-js .ae-schema--carte .terres, .no-js .ae-schema--carte .communes, .no-js .ae-schema--carte .rep,
.no-js .ae-schema--carte .ile, .no-js .ae-schema--carte .courant, .no-js .ae-schema--carte .legende { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
  .ae-schema--carte .forme { fill: var(--f) !important; transition: none !important; }
  .ae-schema--carte .terres, .ae-schema--carte .communes, .ae-schema--carte .rep,
  .ae-schema--carte .ile, .ae-schema--carte .legende { opacity: 1 !important; transform: none !important; transition: none !important; }
  .ae-schema--carte .courant { animation: none !important; opacity: 0 !important; }
  .ae-schema--carte .onde { animation: none !important; }
}
@media (min-width: 701px) { .ae-schema--carte figcaption { display: none; } }
.ae-marche__liste li.is-survol a { color: var(--wp--preset--color--bronze); }
@media (max-width: 700px) {
  /* Sur téléphone, la liste à gauche donne les prix ; la carte garde les noms. */
  .ae-schema--carte .prix, .ae-schema--carte .legende { display: none; }
  .ae-schema--carte .etiquette { font-size: 40px; }
  .ae-schema--carte .rep--voisine .etiquette { font-size: 32px; }
}

/* ==================================================================
   41. Engagement vendeur : le prix, nos moyens, notre imagination
   [ae_engagement] — remplace le comparatif des trois approches.
   ================================================================== */
.ae-eng .ae-tete { margin-bottom: clamp(2.5rem, 5vw, 3.75rem); }
.ae-eng__temps {
  list-style: none; margin: 0 0 clamp(3rem, 6vw, 4.5rem); padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; position: relative;
}
.ae-eng__temps::before, .ae-eng__temps::after {
  content: ""; position: absolute; top: 10px; left: 11px; right: 0; height: 1px; background: var(--ex-line);
}
.ae-eng__temps::after { background: var(--ex-accent); transform-origin: left center; }
.ae-anim .ae-eng__temps::after { transition: transform 1.8s var(--ae-ease) .25s; }
.ae-anim .ae-eng__temps:not(.is-in)::after { transform: scaleX(0); }
.ae-eng__t { position: relative; padding-top: 2.6rem; }
.ae-eng__pt {
  position: absolute; top: 0; left: 0; z-index: 1; width: 22px; height: 22px; border-radius: 50%;
  background: var(--wp--preset--color--ink); border: 2px solid var(--ex-accent);
}
.ae-eng__pt::after { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: var(--ex-accent); }
.ae-home .ae-eng__t h3 { margin: .55rem 0 .65rem; font-size: clamp(1.3rem, 1.9vw, 1.625rem); line-height: 1.15; color: var(--wp--preset--color--paper); }
.ae-eng__t p { margin: 0; font-size: 1rem; line-height: 1.7; color: var(--ex-muted); max-width: 34ch; }
.ae-anim .ae-eng__temps[data-rv] { opacity: 1; transform: none; }
.ae-anim .ae-eng__t { opacity: 0; transform: translateY(14px); transition: opacity .7s ease calc(.35s + var(--i, 0) * .4s), transform .7s var(--ae-ease) calc(.35s + var(--i, 0) * .4s); }
.ae-anim .ae-eng__temps.is-in .ae-eng__t { opacity: 1; transform: none; }

.ae-eng__moyens { margin-bottom: clamp(3rem, 6vw, 4.5rem); }
.ae-eng__moyens ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .75rem; }
.ae-eng__moyens li {
  display: flex; flex-direction: column; gap: 1rem; min-height: 8.75rem; padding: 1.25rem 1rem 1.1rem;
  background: var(--ex-panel); border: 1px solid var(--ex-line); border-radius: var(--ae-r-md, 14px);
  font-size: .9375rem; line-height: 1.35; color: var(--wp--preset--color--paper);
}
.ae-eng__moyens li:hover { border-color: var(--ex-warm); }
.ae-picto { flex: none; color: var(--ex-accent, var(--wp--preset--color--bronze)); }
.ae-picto .ico { fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.ae-eng__note { margin: 1.1rem 0 0; font-size: .875rem; line-height: 1.6; color: var(--ex-dim); }

.ae-eng__cas {
  display: grid; grid-template-columns: 5fr 7fr; gap: clamp(2rem, 5vw, 4rem); align-items: center;
  padding: clamp(1.75rem, 4vw, 3rem); border: 1px solid var(--ex-warm); border-radius: var(--ae-r-lg, 22px);
  background: linear-gradient(160deg, #2a1d17 0%, var(--ex-panel2) 65%);
}
.ae-eng__cas .ae-eng__label { color: var(--ex-accent); }
.ae-home .ae-eng__cas h3 { margin: 0 0 1rem; font-size: clamp(1.6rem, 2.6vw, 2.125rem); line-height: 1.1; color: var(--wp--preset--color--paper); }
.ae-eng__cas p { margin: 0 0 1rem; font-size: 1rem; line-height: 1.7; color: #cfc8bf; }
.ae-eng__cas .ae-ex__saut { margin-top: .5rem; }
.ae-eng__cas .ae-schema { margin: 0; }
.ae-schema--projets .t--moyen { font-size: 27px; }
.ae-schema--projets .s { font-size: 16.5px; }

.ae-eng__cas { grid-template-columns: 6fr 6fr; }
.ae-eng__recit { list-style: none; margin: .5rem 0 1.5rem; padding: 0; }
.ae-eng__recit li { position: relative; display: grid; grid-template-columns: 28px 1fr; gap: 1rem; padding-bottom: 1.15rem; }
.ae-eng__recit li:not(:last-child)::before {
  content: ""; position: absolute; left: 13.5px; top: 30px; bottom: 2px; width: 1px; background: var(--ex-warm);
}
.ae-eng__recit-n {
  width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center;
  border: 1.5px solid var(--ex-accent); color: var(--ex-accent);
  font-family: var(--wp--preset--font-family--display); font-weight: 700; font-size: .8125rem;
}
.ae-eng__recit li:last-child .ae-eng__recit-n { background: var(--ex-accent); color: var(--wp--preset--color--ink); }
.ae-eng__recit strong { display: block; margin: .2rem 0 .25rem; font-family: var(--wp--preset--font-family--display); font-size: 1.0625rem; color: var(--wp--preset--color--paper); }
.ae-eng__cas .ae-eng__recit p { margin: 0; font-size: .9688rem; line-height: 1.6; }
.ae-anim .ae-eng__recit li { opacity: 0; transform: translateY(10px); transition: opacity .6s ease calc(.3s + var(--i, 0) * .22s), transform .6s var(--ae-ease) calc(.3s + var(--i, 0) * .22s); }
.ae-anim .ae-eng__cas.is-in .ae-eng__recit li { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .ae-anim .ae-eng__recit li { opacity: 1 !important; transform: none !important; transition: none !important; } }
@media (max-width: 1180px) { .ae-eng__moyens ul { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px) { .ae-eng__cas { grid-template-columns: 1fr; } }
@media (max-width: 760px) {
  .ae-eng__temps { grid-template-columns: 1fr; gap: 1.9rem; }
  .ae-eng__temps::before, .ae-eng__temps::after { top: 4px; bottom: 4px; left: 10px; right: auto; width: 1px; height: auto; }
  .ae-eng__temps::after { transform-origin: center top; }
  .ae-anim .ae-eng__temps:not(.is-in)::after { transform: scaleY(0); }
  .ae-eng__t { padding: 0 0 0 2.6rem; }
  .ae-eng__moyens ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ae-eng__moyens li { min-height: 0; gap: .7rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ae-anim .ae-eng__t, .ae-anim .ae-eng__temps::after { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* 42. Sommaire des pages longues : barre à la largeur du contenu.
   L'ancien calcul de marge supposait une barre pleine largeur d'écran ;
   sur grand écran le titre était repoussé à droite et la liste écrasée à zéro. */
@media (min-width: 1000px) {
  .entry-content > .ae-sommaire,
  .ae-sommaire {
    box-sizing: border-box; width: auto; max-width: none; margin-top: 0; margin-bottom: 2.5rem;
    padding: .75rem 1.5rem; border-radius: 18px; border: 1px solid var(--wp--preset--color--line);
  }
  .ae-sommaire ol { flex: 1 1 auto; min-width: 0; }
}

/* 43. Photo de la commune (image mise en avant des pages communes) */
.ae-ville-photo { margin: 0 auto 3rem; max-width: 62rem; }
.ae-ville-photo__img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 18px; }
.ae-ville-photo figcaption { margin-top: .5rem; font-size: .75rem; color: #6c675e; text-align: right; }
