/*
 * Portail (M6) : en-tête, pied de page, briques et pages (accueil, fiche bien, page pro,
 * page agence). Uniquement des variables de la charte (thème enfant, assets/charte.css).
 * Mesures des maquettes validées : marges de 64 px, sections espacées de 88 px,
 * gouttière de 16 px, étiquettes en petites majuscules, ni ombre ni arrondi.
 */

/* ---------- Éléments communs ---------- */
.cpn-brique { box-sizing: border-box; }
.cpn-brique *, .cpn-brique *::before, .cpn-brique *::after { box-sizing: border-box; }
.cpn-etiquette-texte, .cpn-etiquette {
	font-size: var(--cpn-etiquette-taille);
	letter-spacing: var(--cpn-etiquette-espacement);
	text-transform: uppercase;
	color: var(--cpn-couleur-texte-doux);
	font-weight: 500;
}
.cpn-etiquette { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); padding: 4px 8px; letter-spacing: .06em; }
.cpn-bouton, .cpn-brique button.cpn-bouton, a.cpn-bouton {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	border: 1px solid var(--cpn-couleur-primaire); background: var(--cpn-couleur-primaire); color: var(--cpn-couleur-primaire-contraste);
	font: inherit; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
	padding: 16px 22px; cursor: pointer; text-decoration: none; border-radius: 0; line-height: 1.2;
}
.cpn-bouton:hover, .cpn-bouton:focus { background: #2a2a28; color: var(--cpn-couleur-primaire-contraste); }
.cpn-bouton--contour, a.cpn-bouton--contour, button.cpn-bouton--contour { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); }
.cpn-bouton--contour:hover, .cpn-bouton--contour:focus { background: var(--cpn-couleur-fond-doux); color: var(--cpn-couleur-texte); }
.cpn-lien-souligne { font-size: 13px; text-decoration: underline; text-underline-offset: 4px; color: var(--cpn-couleur-texte); }
.cpn-emplacement { background: var(--cpn-couleur-emplacement); display: flex; align-items: flex-end; padding: 12px; color: var(--cpn-couleur-texte-2); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.cpn-emplacement--sombre { background: #4e5a5c; color: var(--cpn-couleur-texte-clair); }
.cpn-filet { border: 0; height: 1px; background: var(--cpn-couleur-filet); margin: 0; }
.cpn-grille { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--cpn-gouttiere); }
.cpn-grille--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cpn-grille--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cpn-section__tete { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; margin-bottom: 28px; }
.cpn-section__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 40px; line-height: 1.1; color: var(--cpn-couleur-texte); }
.cpn-section__titre--seul { margin-bottom: 28px; }
.cpn-section__note { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-section__chapeau { margin: -16px 0 28px; color: var(--cpn-couleur-texte-doux); }
.cpn-compteur { font-variant-numeric: tabular-nums; }

/* Sections des pages composées dans Elementor : marges et espacement des maquettes. */
.cpn-page .e-con, .cpn-page .elementor-section { --padding-left: 0; --padding-right: 0; }
/* Conteneurs Elementor : les variables d'Elementor portent les marges de la maquette. */
.e-con.cpn-section, .cpn-section { --padding-top: var(--cpn-marge-section); --padding-right: var(--cpn-marge-page); --padding-bottom: 0px; --padding-left: var(--cpn-marge-page); --gap: 0px; --row-gap: 0px; --column-gap: 0px; padding: var(--cpn-marge-section) var(--cpn-marge-page) 0; max-width: var(--cpn-largeur-max); margin-left: auto; margin-right: auto; }
.e-con.cpn-section--bas, .cpn-section--bas { --padding-bottom: var(--cpn-marge-section); padding-bottom: var(--cpn-marge-section); }
.e-con.cpn-section--plein, .cpn-section--plein { --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; --gap: 0px; padding: 0; max-width: none; }
.e-con.cpn-section--64 { --padding-top: 64px; }
.e-con.cpn-section--72 { --padding-top: 72px; }
.e-con.cpn-bloc-agences__texte { --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; }
.e-con > .elementor-widget { width: 100%; }

/* Le kit Elementor stylise tous les liens, boutons et champs du site (.elementor-kit-N a, button…) :
   les composants du portail gardent leur propre style (sélecteurs préfixés par body). */
html body .cpn-pied a { color: #d9d6ce; }
html body .cpn-pied a:hover { color: #fff; }
html body .cpn-theme, html body .cpn-theme:hover, html body .cpn-article-une, html body .cpn-article-une:hover, html body .cpn-une-bandeau a.cpn-une-bandeau__filtres { color: #fff; }
html body .cpn-carte__lien, html body .cpn-carte-pro a, html body .cpn-article-ligne, html body .cpn-menu a, html body .cpn-entete__nom { color: var(--cpn-couleur-texte); }
html body .cpn-liens__colonne a, html body .cpn-fil a { color: var(--cpn-couleur-texte-doux); }
html body .cpn-carte .cpn-carte__titre { font-family: var(--cpn-police-texte); font-size: 14px; font-weight: 400; color: var(--cpn-couleur-texte-2); line-height: 1.4; margin: 0; }
html body .cpn-entete button.cpn-entete__burger { display: none; background: transparent; border: 0; padding: 0; }
html body .cpn-bandeau input, html body .cpn-bandeau select { border: 0 !important; box-shadow: none !important; padding: 2px 0 !important; background: transparent !important; border-radius: 0 !important; }
html body .cpn-barre select { border: 0 !important; padding: 2px 0 !important; background: transparent !important; }
html body .cpn-brique button.cpn-bouton, html body .cpn-brique .cpn-bouton { background: var(--cpn-couleur-primaire); color: #fff; border: 1px solid var(--cpn-couleur-primaire); border-radius: 0; }
html body .cpn-brique .cpn-bouton--contour, html body .cpn-brique button.cpn-bouton--contour { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); }
html body .cpn-visionneuse button { background: transparent; border: 0; color: #fff; }
html body .cpn-brique :is(.cpn-carte__visuel, .cpn-carte-pro__visuel, .cpn-article-ligne__visuel, .cpn-mosaique__case, .cpn-pro-couverture__visuel, .cpn-une-bandeau__visuel, .cpn-annonceur__photo, .cpn-membre__photo) img { width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; }
html body .cpn-brique :is(.cpn-theme__image, .cpn-article-une__image) { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; }
html body .cpn-article-une .cpn-article-une__titre { color: #fff; }
html body .cpn-article-une .cpn-article-une__chapeau, html body .cpn-article-une .cpn-etiquette-texte { color: #e9e6df; }
html body .cpn-lien-souligne { text-decoration: underline; text-underline-offset: 4px; }
html body .cpn-une-bandeau a.cpn-lien-souligne { color: #fff; }
html body .cpn-entete a.cpn-bouton-contact { color: var(--cpn-couleur-texte); border: 0; border-radius: 0; padding: 0; text-decoration: none; } /* Décision d'Armand du 13/10 : « Contact » sans cadre, lien simple comme « Pour les agences » (« Rechercher avec Oriane » reste le seul bouton encadré). */
html body .cpn-themes li:nth-child(1) .cpn-theme--attente { background: #4e5a5c; }
html body .cpn-themes li:nth-child(2) .cpn-theme--attente { background: #5e574f; }
html body .cpn-themes li:nth-child(3) .cpn-theme--attente { background: #4f4f4b; }
.cpn-theme--attente::after { display: none; }
.cpn-etiquette-texte { font-weight: 400; }
/* Bloc « Agences » : texte et étapes à parts égales, bouton calé à droite (maquette). */
html body .cpn-bloc-agences > .elementor-widget, html body .cpn-bloc-agences > .e-con { width: auto; }
html body .cpn-bloc-agences > .cpn-bloc-agences__texte, html body .cpn-bloc-agences > .cpn-bloc-agences__etapes { flex: 1 1 0; min-width: 0; }
html body .cpn-bloc-agences > .cpn-bloc-agences__bouton { flex: 0 0 auto; }
html body .cpn-bloc-agences__bouton .elementor-button { font-family: var(--cpn-police-texte); font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; padding: 16px 28px; border-radius: 0; background: var(--cpn-couleur-primaire); color: #fff; }
html body .cpn-entete button.cpn-entete__burger { width: 44px; height: 44px; min-width: 44px; padding: 0; position: relative; flex-shrink: 0; }

/* ---------- En-tête et menu principal (lot Navigation, 0.6.73) ----------
   Maquettes MAQUETTE-NAVIGATION-MENU.html et MAQUETTE-NAVIGATION-MOBILE.html (bordures grises arrondies validées).
   Bureau : chaque entrée ouvre un grand panneau sous l'en-tête (survol, clic, clavier ; sans JavaScript, au
   survol et au focus). En dessous de 1 280 px, ou si l'en-tête déborde (classe « is-compact » posée par
   portail.js), bouton « Menu » et menu plein écran en accordéon. Cibles d'au moins 44 px. */
.cpn-entete {
	position: relative; z-index: 100; height: 76px; display: flex; align-items: center; gap: 32px; box-sizing: border-box;
	padding: 0 var(--cpn-marge-page); border-bottom: 1px solid var(--cpn-couleur-bordure); background: var(--cpn-couleur-fond);
	max-width: var(--cpn-largeur-max); margin: 0 auto;
}
/* 0.7.5.48 : fond blanc et filet du bas sur toute la largeur de la fenêtre (l'en-tête fixe ne laisse plus passer la photo
   sur les côtés) ; le contenu reste centré dans .cpn-entete. Ombre intérieure : même filet, sans changer la hauteur. */
.cpn-brique--entete { background: var(--cpn-couleur-fond); box-shadow: inset 0 -1px 0 var(--cpn-couleur-bordure); }
.cpn-entete__nom { font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 600; letter-spacing: .04em; text-decoration: none; color: var(--cpn-couleur-texte); white-space: nowrap; }
.cpn-nav__principal { align-self: stretch; display: flex; flex-shrink: 0; } /* Ne rétrécit pas : un menu trop long pousse les liens de droite et portail.js passe en mode compact. */
.cpn-nav__entrees { list-style: none; margin: 0; padding: 0; display: flex; align-items: stretch; gap: 22px; }
.cpn-nav__entree, .cpn-nav__direct { display: flex; align-items: center; }
html body .cpn-entete .cpn-nav__bouton {
	display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin: 0; padding: 2px 0 0; box-shadow: none; -webkit-tap-highlight-color: transparent;
	background: transparent; border: 0; border-bottom: 2px solid transparent; border-radius: 0; cursor: pointer;
	font-family: var(--cpn-police-texte); font-size: 14px; font-weight: 400; line-height: 1.2; letter-spacing: 0; text-transform: none;
	color: var(--cpn-couleur-texte); white-space: nowrap;
}
html body .cpn-entete a.cpn-nav__bouton--lien { text-decoration: none; box-sizing: border-box; }
html body .cpn-entete .cpn-nav__bouton:hover, html body .cpn-entete .cpn-nav__bouton:focus { background: transparent; color: var(--cpn-couleur-texte); }
html body .cpn-entete a.cpn-nav__bouton--lien:hover { border-bottom-color: var(--cpn-couleur-texte); }
html body .cpn-entete .cpn-nav__bouton:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 2px; }
html body .cpn-entete .cpn-nav__bouton[aria-expanded="true"], .cpn-entete:not(.cpn-nav-js) .cpn-nav__entree:is(:hover, :focus-within) > .cpn-nav__bouton { border-bottom-color: var(--cpn-couleur-texte); }
.cpn-nav__fleche { flex-shrink: 0; transition: transform .15s ease; }
.cpn-nav__bouton[aria-expanded="true"] .cpn-nav__fleche { transform: rotate(180deg); }
.cpn-nav__panneau {
	display: none; position: absolute; top: calc(100% + 1px); left: var(--cpn-marge-page); right: var(--cpn-marge-page); z-index: 100;
	box-sizing: border-box; max-height: calc(100vh - 96px); overflow-y: auto; padding: 32px;
	background: var(--cpn-couleur-fond); border: 1px solid var(--cpn-couleur-bordure); border-top: 0; border-radius: 0; /* Coins droits : la charte réserve les coins arrondis à Oriane. */
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 32px;
}
.cpn-nav__entree.is-ouvert > .cpn-nav__panneau, .cpn-entete:not(.cpn-nav-js) .cpn-nav__entree:is(:hover, :focus-within) > .cpn-nav__panneau { display: grid; }
.cpn-nav__colonne { display: flex; flex-direction: column; min-width: 0; }
.cpn-nav p.cpn-nav__titre { margin: 0 0 8px; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); line-height: 1.4; }
.cpn-nav p.cpn-nav__texte { margin: 0 0 4px; font-size: 12px; line-height: 1.5; color: var(--cpn-couleur-texte-doux); }
.cpn-nav__liens { list-style: none; margin: 0; padding: 0; }
html body .cpn-nav__liens a { display: flex; align-items: center; min-height: 44px; font-size: 14px; line-height: 1.3; color: var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-nav__liens a:hover, html body .cpn-nav__liens a:focus { color: var(--cpn-couleur-texte-doux); text-decoration: underline; text-underline-offset: 3px; }
.cpn-nav__encadre { display: flex; flex-direction: column; gap: 10px; padding: 24px; border-radius: 0; background: var(--cpn-couleur-fond-doux); }
.cpn-nav__encadre p.cpn-nav__titre { margin: 0; }
.cpn-nav p.cpn-nav__encadre-titre { margin: 0; font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 500; line-height: 1.15; color: var(--cpn-couleur-texte); }
.cpn-nav p.cpn-nav__encadre-texte { margin: 0; font-size: 13px; line-height: 1.5; color: var(--cpn-couleur-texte-2); }
html body .cpn-nav a.cpn-nav__encadre-lien { display: inline-flex; align-items: center; align-self: flex-start; min-height: 44px; font-size: 13px; color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
.cpn-entete__droite { margin-left: auto; display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
html body .cpn-entete a.cpn-nav__droite { display: inline-flex; align-items: center; min-height: 44px; font-size: 13px; color: var(--cpn-couleur-texte); text-decoration: none; white-space: nowrap; }
html body .cpn-entete a.cpn-nav__droite:hover { color: var(--cpn-couleur-texte-doux); }
html body .cpn-entete a.cpn-bouton-contact { display: inline-flex; align-items: center; min-height: 44px; box-sizing: border-box; padding: 0; font-size: 13px; white-space: nowrap; }
html body .cpn-entete a.cpn-bouton-contact:hover { color: var(--cpn-couleur-texte-doux); }
.cpn-entete__burger { display: none; margin-left: auto; width: 44px; height: 44px; border: 0; background: transparent; cursor: pointer; position: relative; }
.cpn-entete__burger span[aria-hidden], .cpn-entete__burger span[aria-hidden]::before, .cpn-entete__burger span[aria-hidden]::after { position: absolute; left: 11px; width: 22px; height: 1.5px; background: var(--cpn-couleur-texte); content: ""; }
.cpn-entete__burger span[aria-hidden] { top: 21px; }
.cpn-entete__burger span[aria-hidden]::before { left: 0; top: -7px; }
.cpn-entete__burger span[aria-hidden]::after { left: 0; top: 7px; }
/* Menu plein écran (mobile, tablette, en-tête qui déborde). */
.cpn-nav-mobile { display: none; position: fixed; inset: 0; z-index: 1000; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; background: var(--cpn-couleur-fond); }
.cpn-nav-mobile__tete { position: sticky; top: 0; z-index: 1; display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 76px; box-sizing: border-box; padding: 0 20px; border-bottom: 1px solid var(--cpn-couleur-bordure); background: var(--cpn-couleur-fond); }
.cpn-nav-mobile__tete .cpn-entete__nom, .cpn-entete > .cpn-entete__nom { display: inline-flex; align-items: center; min-height: 44px; }
.cpn-nav-mobile__tete .cpn-entete__nom { font-size: 24px; }
html body .cpn-nav-mobile button.cpn-nav-mobile__fermer { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0 -10px 0 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--cpn-couleur-texte); font-size: 30px; font-weight: 300; line-height: 1; cursor: pointer; }
.cpn-nav-mobile__corps { padding: 8px 20px 32px; }
.cpn-nav-mobile__section { border-bottom: 1px solid var(--cpn-couleur-bordure); }
html body .cpn-nav-mobile button.cpn-nav-mobile__bouton {
	display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 56px; margin: 0; padding: 16px 0;
	border: 0; border-radius: 0; background: transparent; box-shadow: none; cursor: pointer; text-align: left;
	font-family: var(--cpn-police-texte); font-size: 17px; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--cpn-couleur-texte);
}
html body .cpn-nav-mobile a.cpn-nav-mobile__direct {
	display: flex; align-items: center; width: 100%; min-height: 56px; box-sizing: border-box; padding: 16px 0; text-decoration: none;
	font-family: var(--cpn-police-texte); font-size: 17px; font-weight: 500; letter-spacing: 0; color: var(--cpn-couleur-texte);
}
html body .cpn-nav-mobile a.cpn-nav-mobile__direct:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: -2px; }
html body .cpn-nav-mobile button.cpn-nav-mobile__bouton:hover, html body .cpn-nav-mobile button.cpn-nav-mobile__bouton:focus, html body .cpn-nav-mobile button.cpn-nav-mobile__fermer:hover, html body .cpn-nav-mobile button.cpn-nav-mobile__fermer:focus, html body .cpn-entete button.cpn-entete__burger:hover, html body .cpn-entete button.cpn-entete__burger:focus { background: transparent; color: var(--cpn-couleur-texte); }
.cpn-nav-mobile button, .cpn-entete__burger { -webkit-tap-highlight-color: transparent; }
html body .cpn-nav-mobile button.cpn-nav-mobile__bouton:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: -2px; }
.cpn-nav-mobile__signe::before { content: "+"; font-size: 20px; font-weight: 400; }
.cpn-nav-mobile__bouton[aria-expanded="true"] .cpn-nav-mobile__signe::before { content: "\2212"; }
.cpn-nav-mobile__liens { list-style: none; margin: 0; padding: 0 0 12px; }
.cpn-nav-mobile__liens[hidden] { display: none; }
html body .cpn-nav-mobile__liens a { display: flex; align-items: center; min-height: 44px; padding: 0 0 0 12px; font-size: 15px; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-nav-mobile__boutons { display: flex; flex-direction: column; gap: 12px; margin-top: 24px; }
html body .cpn-nav-mobile__boutons a { display: flex; align-items: center; justify-content: center; min-height: 48px; box-sizing: border-box; padding: 12px; border: 1px solid var(--cpn-couleur-texte); font-size: 14px; color: var(--cpn-couleur-texte); text-decoration: none; text-align: center; }
html body .cpn-nav-mobile__boutons a.cpn-nav-mobile__contact { background: var(--cpn-couleur-texte); color: var(--cpn-couleur-primaire-contraste); }
html.cpn-nav-ouverte, html.cpn-nav-ouverte body { overflow: hidden; }
/* Recherche plein écran ouverte (mobile) : l'en-tête ne passe pas au-dessus du panneau des filtres, placé dans le bandeau. */
html.cpn-filtres-ouverts .cpn-entete { z-index: auto; }
@media (max-width: 1279px) {
	.cpn-entete { gap: 16px; }
	.cpn-entete .cpn-nav__principal, .cpn-entete .cpn-entete__droite { display: none; }
	html body .cpn-entete button.cpn-entete__burger { display: block; }
	.cpn-entete .cpn-entete__nom { font-size: 22px; }
	.cpn-entete.is-ouvert .cpn-nav-mobile { display: flex; }
}
.cpn-entete.is-compact { gap: 16px; }
.cpn-entete.is-compact .cpn-nav__principal, .cpn-entete.is-compact .cpn-entete__droite { display: none; }
html body .cpn-entete.is-compact button.cpn-entete__burger { display: block; }
.cpn-entete.is-compact .cpn-entete__nom { font-size: 22px; }
.cpn-entete.is-compact.is-ouvert .cpn-nav-mobile { display: flex; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

/* ---------- Pied de page ---------- */
.cpn-pied { background: var(--cpn-couleur-fond-sombre); color: #d9d6ce; font-size: 14px; }
.cpn-pied a { color: #d9d6ce; text-decoration: none; }
.cpn-pied a:hover { color: #fff; }
.cpn-pied__nom { font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 600; letter-spacing: .04em; color: #fff; }
.cpn-pied--complet { padding: 56px var(--cpn-marge-page); display: flex; flex-direction: column; gap: 40px; }
.cpn-pied__haut { display: flex; gap: 80px; }
.cpn-pied--complet .cpn-pied__nom { width: 320px; flex-shrink: 0; }
.cpn-pied__colonne { display: flex; flex-direction: column; gap: 10px; }
.cpn-pied__titre { color: #fff; font-weight: 600; }
.cpn-pied__bas { margin: 0; font-size: 12px; color: #a9a69f; border-top: 1px solid #2e2e2c; padding-top: 20px; }
.cpn-pied--ligne { padding: 40px var(--cpn-marge-page); display: flex; justify-content: space-between; align-items: center; gap: 24px; font-size: 13px; }
.cpn-pied--ligne .cpn-pied__nom { font-size: 22px; }

/* ---------- Fil d'Ariane ---------- */
.cpn-fil { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 20px var(--cpn-marge-page) 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-fil a { color: var(--cpn-couleur-texte-doux); text-decoration: none; }
.cpn-fil__outils { display: flex; gap: 18px; }
.cpn-fil__outils a { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Bandeau de recherche ---------- */
.cpn-bandeau { display: flex; align-items: stretch; background: var(--cpn-couleur-fond); height: 68px; width: 1080px; max-width: 100%; color: var(--cpn-couleur-texte); border-radius: 4px; }
.cpn-bandeau__champ { flex: 1 1 0; display: flex; flex-direction: column; justify-content: center; padding: 0 20px; border-right: 1px solid var(--cpn-couleur-bordure); min-width: 0; margin: 0; }
.cpn-bandeau__champ--ou { flex: 2 1 0; }
.cpn-bandeau__champ:last-of-type { border-right: 0; }
.cpn-bandeau input, .cpn-bandeau select { border: 0; outline: none; font: inherit; font-size: 15px; padding: 2px 0; background: transparent; color: var(--cpn-couleur-texte); width: 100%; min-height: 0; box-shadow: none; }
.cpn-bandeau__bouton { border-radius: 0 4px 4px 0; padding: 0 32px; }

/* ---------- Réalisations à la une (grand visuel) ---------- */
/* Le bandeau ne coupe rien (la liste « Où » passe au-dessus de la section suivante) : seules les photos sont recadrées. */
.cpn-une-bandeau { position: relative; z-index: 20; min-height: 680px; background: var(--cpn-couleur-emplacement-sombre); color: #fff; display: flex; flex-direction: column; justify-content: flex-end; overflow: visible; }
.cpn-une-bandeau__visuels, .cpn-une-bandeau__visuel { position: absolute; inset: 0; margin: 0; }
.cpn-une-bandeau__visuels { overflow: hidden; }
.cpn-une-bandeau__visuel { opacity: 0; transition: opacity var(--cpn-fondu, .8s) ease; }
.cpn-une-bandeau__visuel.is-actif { opacity: 1; }
.cpn-une-bandeau__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Voile sombre réglable (--cpn-voile, 0 à 0,8) : plus léger en haut, plein en bas, derrière le titre. */
.cpn-une-bandeau__visuels::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(17,17,17,calc(var(--cpn-voile, .4) * .35)) 0%, rgba(17,17,17,var(--cpn-voile, .4)) 100%); }
/* Point focal choisi pour chaque image, sur mobile (cadrage vertical). */
@media (max-width: 767px) { .cpn-une-bandeau__visuel img { object-position: var(--cpn-focal, 50% 50%); } }
.cpn-une-bandeau__credit { position: absolute; top: 24px; right: var(--cpn-marge-page); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: #d9d6ce; z-index: 2; }
.cpn-une-bandeau__attente { position: absolute; top: 24px; right: var(--cpn-marge-page); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: #d9d6ce; }
.cpn-une-bandeau__contenu { position: relative; z-index: 1; padding: 0 var(--cpn-marge-page) 56px; }
.cpn-une-bandeau__titre { margin: 0 0 12px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 76px; line-height: 1; max-width: 820px; color: #fff; }
.cpn-une-bandeau__compteurs { margin: 0 0 32px; font-size: 13px; letter-spacing: .1em; color: #e9e6df; }
.cpn-une-bandeau__pied { display: flex; justify-content: space-between; align-items: center; margin-top: 28px; gap: 16px; flex-wrap: wrap; }
.cpn-une-bandeau__filtres { color: #fff; }
.cpn-une-bandeau__filtres:hover { color: #e9e6df; }
.cpn-une-bandeau__credit-pro { display: flex; align-items: center; gap: 20px; }
.cpn-une-bandeau__credit-pro .cpn-etiquette-texte { font-size: 12px; letter-spacing: .08em; color: #e9e6df; }
.cpn-une-bandeau__points { display: flex; gap: 6px; }
.cpn-une-bandeau__points span { width: 28px; height: 2px; background: #8c8a84; cursor: pointer; }
.cpn-une-bandeau__points span.is-actif { background: #fff; }

/* ---------- Grille de thèmes ---------- */
.cpn-theme { position: relative; height: 300px; display: flex; flex-direction: column; justify-content: flex-end; padding: 20px 22px; text-decoration: none; color: #fff; background: #5b5a53; overflow: hidden; }
.cpn-themes li:nth-child(2) .cpn-theme { background: #6b6961; }
.cpn-themes li:nth-child(3) .cpn-theme { background: #57554e; }
.cpn-theme__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.cpn-theme::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(17,17,17,0) 45%, rgba(17,17,17,.6) 100%); }
.cpn-theme:hover .cpn-theme__image { transform: scale(1.03); }
.cpn-theme__titre, .cpn-theme__compteur { position: relative; z-index: 1; }
.cpn-theme__titre { font-family: var(--cpn-police-titres); font-size: 30px; font-weight: 500; line-height: 1.15; }
.cpn-theme .cpn-theme__compteur { color: #e9e6df; font-size: 11px; }
.cpn-theme:hover { color: #fff; }

/* ---------- Cartes de biens ---------- */
.cpn-carte { list-style: none; position: relative; --cpn-carte-h: 240px; }
.cpn-carte__lien { display: flex; flex-direction: column; gap: 10px; text-decoration: none; color: var(--cpn-couleur-texte); }
.cpn-carte__visuel { position: relative; height: var(--cpn-carte-h); background: var(--cpn-couleur-emplacement); overflow: hidden; }
.cpn-carte__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.cpn-carte__lien:hover .cpn-carte__visuel img { transform: scale(1.03); }
.cpn-carte__sans-photo { position: absolute; inset: auto 12px 12px 12px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-2); }
.cpn-carte__nature { color: var(--cpn-couleur-texte); }
.cpn-carte__prix { margin: 0; font-size: 17px; font-weight: 600; }
.cpn-carte__titre { margin: 0; font-family: var(--cpn-police-texte); font-size: 14px; font-weight: 400; color: var(--cpn-couleur-texte-2); line-height: 1.4; }
.cpn-carte__lieu { margin: 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }

/* ---------- Cartes de pros et de réalisations ---------- */
.cpn-carte-pro a { display: flex; flex-direction: column; gap: 10px; text-decoration: none; color: var(--cpn-couleur-texte); }
.cpn-carte-pro__visuel { height: 240px; overflow: hidden; background: var(--cpn-couleur-emplacement); }
.cpn-carte-pro__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpn-carte-pro__nom { font-size: 16px; font-weight: 600; }

/* ---------- Articles (Inspirations) ---------- */
.cpn-articles--une { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 32px; }
.cpn-article-une { position: relative; height: 420px; display: flex; flex-direction: column; justify-content: flex-end; padding: 28px; text-decoration: none; color: #fff; background: #4a4943; overflow: hidden; }
.cpn-article-une.cpn-emplacement { align-items: stretch; font-size: inherit; letter-spacing: normal; text-transform: none; }
.cpn-article-une__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cpn-article-une::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(17,17,17,0) 40%, rgba(17,17,17,.6) 100%); }
.cpn-article-une > span { position: relative; z-index: 1; }
.cpn-article-une .cpn-etiquette-texte { color: #e9e6df; font-size: 12px; letter-spacing: .08em; }
.cpn-article-une__titre { font-family: var(--cpn-police-titres); font-size: 34px; line-height: 1.1; margin-top: 8px; }
.cpn-article-une__chapeau { font-size: 14px; color: #e9e6df; margin-top: 8px; }
.cpn-articles__liste { display: flex; flex-direction: column; gap: 20px; }
.cpn-article-ligne { display: flex; gap: 18px; text-decoration: none; color: var(--cpn-couleur-texte); }
.cpn-article-ligne__visuel { width: 160px; height: 120px; flex-shrink: 0; background: var(--cpn-couleur-emplacement); overflow: hidden; }
.cpn-articles__liste .cpn-article-ligne:nth-child(1) .cpn-article-ligne__visuel.cpn-emplacement { background: #cfcbc2; }
.cpn-articles__liste .cpn-article-ligne:nth-child(3) .cpn-article-ligne__visuel.cpn-emplacement { background: #c9c5bc; }
.cpn-article-ligne__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpn-article-ligne__texte { display: flex; flex-direction: column; gap: 6px; min-width: 0; overflow-wrap: anywhere; }
.cpn-article-ligne .cpn-etiquette-texte { font-size: 12px; letter-spacing: .08em; }
.cpn-article-ligne__titre { font-size: 16px; font-weight: 600; line-height: 1.35; }
.cpn-articles.cpn-grille--3 .cpn-article-ligne__visuel { width: 150px; height: 110px; }

/* ---------- Liens populaires ---------- */
.cpn-liens { gap: 32px; }
.cpn-liens__colonne { display: flex; flex-direction: column; gap: 10px; }
.cpn-liens__titre { font-weight: 600; font-size: 14px; }
.cpn-liens__colonne a { font-size: 14px; color: var(--cpn-couleur-texte-doux); text-decoration: none; }
.cpn-liens__colonne a:hover { color: var(--cpn-couleur-texte); }
html body .cpn-liens__colonne a.cpn-liens__tout { margin-top: 4px; color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Bloc « Agences : diffusez vos annonces » (éléments Elementor standards) ---------- */
.cpn-bloc-agences.e-con { background: var(--cpn-couleur-fond-doux); padding: 48px 56px !important; display: flex; flex-direction: row; align-items: center; gap: 56px; }
.cpn-bloc-agences__texte.e-con { flex: 1 1 0; display: flex; flex-direction: column; gap: 12px; }
.cpn-bloc-agences .elementor-widget { margin: 0; }
html body .cpn-etiquette-texte .elementor-heading-title { font-family: var(--cpn-police-texte); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); font-weight: 500; }
.cpn-bloc-agences__titre .elementor-heading-title { font-size: 38px; line-height: 1.1; }
.cpn-bloc-agences p { margin: 0; color: var(--cpn-couleur-texte-2); line-height: 1.6; }
.cpn-bloc-agences__etapes { flex: 1 1 0; }
.cpn-etapes { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 14px; }
.cpn-etapes li { display: flex; gap: 14px; align-items: baseline; }
.cpn-etapes li > span:first-child { font-family: var(--cpn-police-titres); font-size: 26px; }
.cpn-bloc-agences__bouton { flex-shrink: 0; }
.cpn-bloc-agences__bouton .elementor-button { padding: 16px 28px; font-size: 13px; }
.cpn-section--64 { padding-top: 64px; }
.cpn-section--72 { padding-top: 72px; }
.cpn-titre-page .elementor-heading-title { font-size: 52px; line-height: 1.05; margin: 8px 0; }
.cpn-section .elementor-widget-text-editor p.cpn-etiquette-texte { font-size: 13px; }

/* ---------- Pages de texte (éditeur classique, thème Hello) : même gabarit que le portail ---------- */
body.page:not(.elementor-page) .site-main, body.single-post .site-main, body.single-cintu_agent .site-main { max-width: 880px; margin: 0 auto; padding: 56px var(--cpn-marge-page) var(--cpn-marge-section); }
body.page:not(.elementor-page) .page-header .entry-title, body.single-post .page-header .entry-title { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 48px; line-height: 1.05; margin: 0 0 28px; }
body.page:not(.elementor-page) .page-content h2, body.single-post .page-content h2 { font-size: 28px; margin: 32px 0 10px; }
body.page:not(.elementor-page) .page-content p, body.single-post .page-content p { line-height: 1.75; color: #2a2926; }

/* ---------- Deux colonnes (fiche bien, page pro) ---------- */
.cpn-deux-colonnes { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 64px; align-items: start; padding: 40px var(--cpn-marge-page) 0; max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-deux-colonnes__principal { display: flex; flex-direction: column; gap: 44px; min-width: 0; }
.cpn-colonne-contact { position: sticky; top: 24px; border: 1px solid var(--cpn-couleur-bordure); padding: 26px; display: flex; flex-direction: column; gap: 18px; background: var(--cpn-couleur-fond); }
.admin-bar .cpn-colonne-contact { top: 56px; }
.cpn-colonne-contact__titre { font-family: var(--cpn-police-titres); font-size: 24px; font-weight: 500; }
/* « Voir le numéro » : bouton en contour sur toute la largeur (maquettes). */
.cpn-numero { margin: 0; }
.cpn-numero a { display: flex; align-items: center; justify-content: center; width: 100%; border: 1px solid var(--cpn-couleur-texte); background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; padding: 16px 22px; text-decoration: none; }
.cpn-numero a:hover { background: var(--cpn-couleur-fond-doux); }
.cpn-annonceur { display: flex; align-items: center; gap: 14px; }
.cpn-annonceur__photo { width: 56px; height: 56px; border-radius: 50%; overflow: hidden; flex-shrink: 0; background: #cfcbc2; padding: 0; }
.cpn-annonceur__photo img { width: 100%; height: 100%; object-fit: cover; }
.cpn-annonceur__texte { display: flex; flex-direction: column; gap: 2px; }
.cpn-annonceur__nom { font-weight: 600; }
.cpn-annonceur__agence { font-size: 13px; color: var(--cpn-couleur-texte-doux); }

/* Formulaire de contact dans une colonne */
.cpn-colonne-contact .cpn-contact { display: flex; flex-direction: column; gap: 18px; margin: 0; padding: 0; border: 0; background: none; }
.cpn-colonne-contact .cpn-contact__champ { margin: 0; }
.cpn-colonne-contact .cpn-contact label, .cpn-colonne-contact .cpn-contact legend { display: block; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); margin-bottom: 6px; }
.cpn-colonne-contact .cpn-contact input:not([type=radio]), .cpn-colonne-contact .cpn-contact textarea, .cpn-colonne-contact .cpn-contact select { width: 100%; font: inherit; font-size: 14px; color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-bordure-forte); border-radius: 2px; padding: 12px; background: var(--cpn-couleur-fond); }
.cpn-colonne-contact .cpn-contact button[type=submit] { width: 100%; }
.cpn-colonne-contact .cpn-contact__rgpd { margin: 0; font-size: 11px; line-height: 1.5; color: var(--cpn-couleur-texte-doux); }
.cpn-colonne-contact .cpn-contact__vous-etes { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.cpn-colonne-contact .cpn-contact__vous-etes legend { grid-column: 1 / -1; }
.cpn-colonne-contact .cpn-contact__vous-etes label { border: 1px solid var(--cpn-couleur-bordure-forte); padding: 12px; display: flex; gap: 8px; align-items: center; cursor: pointer; font-size: 14px; letter-spacing: normal; text-transform: none; color: var(--cpn-couleur-texte); margin: 0; }
.cpn-colonne-contact .cpn-contact__vous-etes label:has(input:checked) { border-color: var(--cpn-couleur-texte); }
.cpn-colonne-contact .cpn-contact__erreur { color: var(--cpn-couleur-erreur); font-size: 12px; }
/* Page Contact du portail : même formulaire, cadre non collant, trois choix « Vous êtes ». */
.cpn-contact-portail { position: static; max-width: 640px; margin: 8px 0 0; }
.cpn-colonne-contact .cpn-contact input[type=radio] { accent-color: var(--cpn-couleur-texte); }
.cpn-contact-portail .cpn-contact__vous-etes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 600px) { .cpn-contact-portail .cpn-contact__vous-etes { grid-template-columns: 1fr; } }

/* ---------- Fiche bien ---------- */
.cpn-bien-entete { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; padding: 24px var(--cpn-marge-page) 0; max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-bien-entete__texte { display: flex; flex-direction: column; gap: 8px; }
.cpn-bien-entete__titre { margin: 0; font-family: var(--cpn-police-titres); font-size: 48px; font-weight: 500; line-height: 1.05; }
.cpn-bien-entete__lieu { color: var(--cpn-couleur-texte-2); }
.cpn-bien-entete__prix { text-align: right; display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
.cpn-bien-entete__montant { font-size: 34px; font-weight: 600; }
.cpn-bien-entete .cpn-honoraires { list-style: none; margin: 0; padding: 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }

.cpn-mosaique { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: 260px 260px; gap: 8px; padding: 28px var(--cpn-marge-page) 0; position: relative; max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-mosaique__case { display: block; overflow: hidden; background: var(--cpn-couleur-emplacement); }
.cpn-mosaique__case img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpn-mosaique__case:first-child { grid-row: 1 / 3; }
.cpn-mosaique__case--cachee { display: none; }
.cpn-mosaique--1 { grid-template-columns: 1fr; }
.cpn-mosaique--2 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.cpn-mosaique--3 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.cpn-mosaique--4 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); }
.cpn-mosaique--4 .cpn-mosaique__case:nth-child(4) { grid-column: 2 / 4; }
.cpn-mosaique__tout { position: absolute; right: calc(var(--cpn-marge-page) + 14px); bottom: 14px; padding: 12px 16px; }

.cpn-chiffres { display: grid; grid-template-columns: repeat(var(--cpn-colonnes, 5), minmax(0, 1fr)); border-top: 1px solid var(--cpn-couleur-bordure); border-bottom: 1px solid var(--cpn-couleur-bordure); margin: 0; }
.cpn-chiffres > div { padding: 18px 0; display: flex; flex-direction: column; gap: 4px; }
.cpn-chiffres dd { margin: 0; font-size: 20px; }
.cpn-fiche-section { display: flex; flex-direction: column; gap: 14px; }
.cpn-fiche-section__titre, .cpn-fiche-section .cpn-section__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 32px; }
.cpn-fiche-section .cpn-section__tete { margin-bottom: 0; }
.cpn-fiche-section__texte { line-height: 1.75; color: #2a2926; }
.cpn-fiche-section__texte p { margin: 0 0 1em; }
.cpn-fiche-section__note { margin: 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-masque, .cpn-coordonnees-masquees { background: var(--cpn-couleur-fond-doux); padding: 2px 6px; font-size: 14px; }
.cpn-caracteristiques { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 48px; margin: 0; }
.cpn-caracteristiques > div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--cpn-couleur-filet); }
.cpn-caracteristiques dt { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-caracteristiques dd { margin: 0; text-align: right; }
.cpn-energie--echelles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; }
.cpn-energie__echelle { display: flex; flex-direction: column; gap: 10px; }
.cpn-energie__barres { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.cpn-energie__barre { width: var(--cpn-largeur); height: 22px; display: flex; align-items: center; justify-content: space-between; padding: 0 10px; color: #fff; font-size: 12px; font-weight: 600; opacity: .9; }
.cpn-energie__barre em { font-style: normal; font-weight: 500; font-size: 11px; }
.cpn-energie__barre.is-active { height: 30px; opacity: 1; outline: 2px solid var(--cpn-couleur-texte); outline-offset: 1px; font-size: 14px; }
.cpn-energie__echelle--dpe .cpn-energie__barre--a { background: #2e7d4f; }
.cpn-energie__echelle--dpe .cpn-energie__barre--b { background: #4e9a45; }
.cpn-energie__echelle--dpe .cpn-energie__barre--c { background: #8dba3f; }
.cpn-energie__echelle--dpe .cpn-energie__barre--d { background: #d8c23a; color: #111; }
.cpn-energie__echelle--dpe .cpn-energie__barre--e { background: #e6a03b; color: #111; }
.cpn-energie__echelle--dpe .cpn-energie__barre--f { background: #d86a33; }
.cpn-energie__echelle--dpe .cpn-energie__barre--g { background: #c2392e; }
.cpn-energie__echelle--ges .cpn-energie__barre--a { background: #c9c1de; color: #111; }
.cpn-energie__echelle--ges .cpn-energie__barre--b { background: #b3a6d1; color: #111; }
.cpn-energie__echelle--ges .cpn-energie__barre--c { background: #9c8bc3; }
.cpn-energie__echelle--ges .cpn-energie__barre--d { background: #8570b4; }
.cpn-energie__echelle--ges .cpn-energie__barre--e { background: #6e56a4; }
.cpn-energie__echelle--ges .cpn-energie__barre--f { background: #573d92; }
.cpn-energie__echelle--ges .cpn-energie__barre--g { background: #40277f; }
.cpn-energie__note, .cpn-energie__couts { margin: 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-carte-secteur { width: 100%; height: 320px; border: 0; display: block; background: #e4e1da; }

/* ---------- Page pro ---------- */
.cpn-pro-couverture { padding: 20px var(--cpn-marge-page) 0; max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-pro-couverture__visuel { height: 440px; overflow: hidden; }
.cpn-pro-couverture__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpn-pro-couverture__bandeau { display: flex; align-items: flex-start; gap: 28px; padding: 0 40px; position: relative; }
/* Seul le logo chevauche la photo ; métier, zone et nom sont sous la photo (lisibles sur le fond de page). */
.cpn-pro-couverture__bandeau .cpn-pro-couverture__logo { margin-top: -64px; }
/* Cadre du logo à la forme du logo : largeur fixe, hauteur selon ses proportions, marges égales (pas de bandes vides). */
.cpn-pro-couverture__logo { width: 160px; height: auto; padding: 14px; box-sizing: border-box; background: var(--cpn-couleur-fond); border: 1px solid var(--cpn-couleur-bordure); display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; }
.cpn-pro-couverture__logo img { display: block; width: 100%; height: auto; max-height: 160px; object-fit: contain; }
.cpn-pro-couverture__texte { display: flex; flex-direction: column; gap: 8px; padding-top: 22px; }
.cpn-pro-couverture__nom { margin: 0; font-family: var(--cpn-police-titres); font-size: 46px; font-weight: 500; line-height: 1.05; }
.cpn-pro-couverture__boutons { margin-left: auto; display: flex; gap: 10px; padding-top: 26px; }
.cpn-partie--pro-corps .cpn-deux-colonnes { padding-top: 56px; }
.cpn-partie--pro-corps .cpn-deux-colonnes__principal { gap: 56px; }
.cpn-reperes { display: flex; gap: 40px; padding-top: 8px; margin: 0; flex-wrap: wrap; }
.cpn-reperes > div { display: flex; flex-direction: column; gap: 4px; }
.cpn-reperes dd { margin: 0; font-size: 20px; }
.cpn-services { list-style: none; margin: 0; padding: 0; }
.cpn-service { display: flex; justify-content: space-between; gap: 24px; padding: 18px 0; border-bottom: 1px solid var(--cpn-couleur-filet); }
.cpn-service > div { display: flex; flex-direction: column; gap: 4px; }
.cpn-service__nom { font-weight: 600; }
.cpn-service__description { font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-tag { align-self: flex-start; white-space: nowrap; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; padding: 4px 8px; border: 1px solid var(--cpn-couleur-bordure-forte); color: var(--cpn-couleur-texte-2); }
.cpn-tag--fonce { background: var(--cpn-couleur-texte); color: #fff; border-color: var(--cpn-couleur-texte); }
.cpn-deux-colonnes .cpn-cartes-realisations .cpn-carte-pro__visuel { height: 240px; }
.cpn-deux-colonnes .cpn-articles.cpn-grille--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }

/* ---------- Page agence ---------- */
.cpn-agence-entete { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 64px; align-items: start; padding: 28px var(--cpn-marge-page) 0; max-width: var(--cpn-largeur-max); margin: 0 auto; }
.cpn-agence-entete__identite { display: flex; gap: 28px; align-items: flex-start; }
.cpn-agence-entete__logo { width: 180px; height: auto; padding: 14px; box-sizing: border-box; align-self: flex-start; border: 1px solid var(--cpn-couleur-bordure); display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; }
.cpn-agence-entete__logo img { display: block; width: 100%; height: auto; max-height: 160px; object-fit: contain; }
.cpn-agence-entete__texte { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.cpn-agence-entete__nom { margin: 0; font-family: var(--cpn-police-titres); font-size: 52px; font-weight: 500; line-height: 1.02; }
.cpn-agence-entete__presentation { line-height: 1.75; color: #2a2926; max-width: 640px; }
.cpn-agence-entete__presentation p { margin: 0 0 .75em; }
.cpn-colonne-contact--agence { position: static; padding: 24px; gap: 14px; }
.cpn-agence-entete__adresse { margin: 0; font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-agence-entete__horaires { font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-agence-entete__horaires p { margin: 4px 0 0; }
.cpn-message-agence > summary { list-style: none; width: 100%; }
.cpn-message-agence > summary::-webkit-details-marker { display: none; }
.cpn-message-agence[open] > summary { margin-bottom: 18px; }
/* Fenêtre par-dessus la page (message à l'agence) : cadre centré sur fond assombri ; plein écran sur mobile. */
.cpn-fenetre { --_bord: var(--cpn-couleur-bordure, #dcdad3); --_primaire: var(--cpn-couleur-primaire, #1f4e5f); padding: 0; border: 0; width: min(560px, calc(100vw - 32px)); max-height: calc(100dvh - 48px); background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); box-shadow: 0 24px 64px rgba(0, 0, 0, .25); }
.cpn-fenetre::backdrop { background: rgba(17, 17, 17, .6); }
.cpn-fenetre__cadre { padding: 24px 28px 28px; }
.cpn-fenetre__tete { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.cpn-fenetre__titre { margin: 0; font-size: 24px; line-height: 1.2; }
html body .cpn-fenetre__fermer { flex: 0 0 auto; width: 44px; height: 44px; margin: -8px -12px 0 0; padding: 0; border: 0; background: transparent; color: var(--cpn-couleur-texte); font-size: 30px; line-height: 1; cursor: pointer; }
html body .cpn-fenetre__fermer:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 2px; }
@media (max-width: 767px) {
	.cpn-fenetre { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; box-shadow: none; }
	.cpn-fenetre__cadre { padding: calc(16px + env(safe-area-inset-top, 0px)) 20px calc(24px + env(safe-area-inset-bottom, 0px)); }
}
.cpn-equipe { gap: 16px; }
.cpn-membre { display: flex; align-items: center; gap: 14px; padding: 14px; border: 1px solid var(--cpn-couleur-bordure); }
.cpn-membre__photo { width: 56px; height: 56px; border-radius: 50%; overflow: hidden; flex-shrink: 0; background: #cfcbc2; padding: 0; }
.cpn-membre__photo img { width: 100%; height: 100%; object-fit: cover; }
.cpn-membre__texte { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cpn-membre__nom { font-weight: 600; }
.cpn-membre__texte a { font-size: 13px; }
.cpn-biens-carte { display: flex; gap: 20px; align-items: flex-start; }
.cpn-biens-carte__liste { flex: 1 1 0; min-width: 0; }
.cpn-biens-carte__carte { width: 380px; height: 760px; flex-shrink: 0; position: sticky; top: 24px; background: #e4e1da; }
.cpn-biens-carte__carte iframe, .cpn-biens-carte__fond { width: 100%; height: 100%; border: 0; display: block; }

/* Recherche en barre (page agence) */
.cpn-recherche--barre { display: flex; flex-direction: column; gap: 20px; }
.cpn-barre { display: flex; align-items: stretch; border: 1px solid var(--cpn-couleur-bordure-forte); min-height: 60px; margin: 0; padding: 0; background: var(--cpn-couleur-fond); flex-wrap: wrap; }
.cpn-barre__champ { flex: 1 1 0; display: flex; flex-direction: column; justify-content: center; padding: 6px 16px; border-right: 1px solid var(--cpn-couleur-bordure); margin: 0; min-width: 120px; }
.cpn-barre__champ.cpn-champ--ville { flex: 2 1 0; }
.cpn-barre select { border: 0; padding: 2px 0; font: inherit; font-size: 14px; background: transparent; color: var(--cpn-couleur-texte); width: 100%; }
.cpn-barre__bouton { padding: 0 28px; }
.cpn-recherche--barre .cpn-resultats__compte { display: none; }
.cpn-recherche--barre .cpn-resultats__grille { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.cpn-recherche--barre .cpn-carte { --cpn-carte-h: 210px; }
.cpn-recherche--barre .cpn-pagination { display: flex; gap: 8px; justify-content: center; padding-top: 16px; font-size: 14px; }
.cpn-recherche--barre .cpn-pagination a, .cpn-recherche--barre .cpn-pagination span { padding: 10px 14px; text-decoration: none; color: var(--cpn-couleur-texte); }
.cpn-recherche--barre .cpn-pagination .cpn-pagination__courante { background: var(--cpn-couleur-texte); color: #fff; }

/* ---------- Écrans moyens et mobiles ---------- */
@media (max-width: 1100px) {
	.cpn-grille--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-deux-colonnes, .cpn-agence-entete { grid-template-columns: 1fr; gap: 40px; }
	.cpn-colonne-contact { position: static; }
	.cpn-biens-carte { flex-direction: column; }
	.cpn-biens-carte__carte { width: 100%; height: 360px; position: static; }
	.cpn-une-bandeau__titre { font-size: 56px; }
	.cpn-pied__haut { flex-wrap: wrap; gap: 40px; }
	.cpn-pied--complet .cpn-pied__nom { width: 100%; }
}
@media (max-width: 900px) {
	.cpn-bloc-agences.e-con { flex-direction: column; align-items: flex-start; padding: 32px 24px !important; gap: 28px; }
	.cpn-bandeau { flex-direction: column; height: auto; border-radius: 0; }
	.cpn-bandeau__champ { border-right: 0; border-bottom: 1px solid var(--cpn-couleur-bordure); padding: 12px 16px; }
	.cpn-bandeau__bouton { border-radius: 0; padding: 18px; }
	.cpn-articles--une { grid-template-columns: 1fr; }
	.cpn-grille--3, .cpn-deux-colonnes .cpn-articles.cpn-grille--3 { grid-template-columns: 1fr; }
	.cpn-liens { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-bien-entete { flex-direction: column; align-items: flex-start; gap: 16px; }
	.cpn-bien-entete__prix { text-align: left; }
	.cpn-mosaique { grid-template-columns: 1fr 1fr; grid-template-rows: 240px 120px; }
	.cpn-mosaique__case:first-child { grid-column: 1 / 3; grid-row: 1; }
	.cpn-mosaique__case:nth-child(n+4) { display: none; }
	.cpn-mosaique--4 .cpn-mosaique__case:nth-child(4) { grid-column: auto; }
	.cpn-chiffres { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-caracteristiques, .cpn-energie--echelles { grid-template-columns: 1fr; gap: 24px; }
	.cpn-pro-couverture__bandeau { flex-wrap: wrap; padding: 0 16px; }
	.cpn-pro-couverture__boutons { margin-left: 0; }
	.cpn-agence-entete__identite { flex-direction: column; }
	.cpn-recherche--barre .cpn-resultats__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-fil { flex-direction: column; align-items: flex-start; }
	.cpn-pied--ligne { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 640px) {
	.cpn-grille--4, .cpn-recherche--barre .cpn-resultats__grille { grid-template-columns: 1fr; }
	html body .cpn-section__titre, html body .cpn-fiche-section__titre, html body .cpn-bloc-agences__titre .elementor-heading-title { font-size: 32px; }
	.cpn-section__tete { flex-direction: column; gap: 8px; }
	.cpn-une-bandeau { min-height: 620px; }
	.cpn-une-bandeau__titre { font-size: 44px; }
	.cpn-une-bandeau__contenu { padding-top: 72px; }
	.cpn-bien-entete__titre { font-size: 34px; }
	.cpn-pro-couverture__visuel { height: 260px; }
	.cpn-pro-couverture__nom, .cpn-agence-entete__nom { font-size: 36px; }
	.cpn-theme { height: 220px; }
	.cpn-pied__haut { flex-direction: column; gap: 28px; }
	.cpn-barre__champ { flex: 1 1 45%; border-bottom: 1px solid var(--cpn-couleur-bordure); }
	.cpn-barre__bouton { flex: 1 1 100%; padding: 16px; }
	.cpn-energie__barre em { display: none; }
}

/* ---------- Impression (bouton « Imprimer » de la fiche) ---------- */
@media print {
	.cpn-entete, .cpn-pied, .cpn-fil__outils, .cpn-colonne-contact form, .cpn-mosaique__tout, .cpn-partie--bien-pros, .cpn-partie--bien-similaires, .cpn-partie--bien-inspirations { display: none !important; }
	.cpn-deux-colonnes { grid-template-columns: 1fr; }
}

/* ---------- Corrections issues de DESIGN-REVIEW.md ---------- */
html body .cpn-etiquette { font-weight: 400; }
html body .cpn-fil__outils a { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
html body .cpn-fiche-section__titre, html body .cpn-fiche-section .cpn-section__titre { font-size: 32px; }
html body .cpn-partie--bien-pros .cpn-section__titre, html body .cpn-partie--bien-similaires .cpn-section__titre, html body .cpn-partie--bien-inspirations .cpn-section__titre { font-size: 38px; }
html body .cpn-partie--pro-autres .cpn-section__titre, html body [class*="cpn-partie--agence"] .cpn-section__titre, html body .cpn-partie--pro-corps .cpn-section__titre { font-size: 36px; }
html body .cpn-caracteristiques dd { font-weight: 400; }
html body .cpn-caracteristiques dt { font-weight: 400; }
html body .cpn-carte .cpn-carte__lieu { font-size: 13px; color: var(--cpn-couleur-texte-doux); margin: 0; }
html body .cpn-membre__texte a { text-decoration: underline; text-underline-offset: 3px; color: var(--cpn-couleur-texte); }
.e-con.cpn-section--64, .cpn-section--64 { padding-top: 64px; }
.e-con.cpn-section--72, .cpn-section--72 { padding-top: 72px; }
html body .cpn-contact__vous-etes input[type=radio] { width: auto; height: auto; margin: 0; flex: 0 0 auto; }
html body .cpn-colonne-contact .cpn-contact__vous-etes label { padding: 12px; min-height: 44px; line-height: 1.2; }
/* Page agence : barre de filtres sur toute la largeur, puis grille et carte fixe. */
.cpn-biens-carte { display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: 20px; align-items: start; }
.cpn-biens-carte--sans-carte { grid-template-columns: minmax(0, 1fr); }
.cpn-biens-carte__liste, .cpn-biens-carte .cpn-recherche--agence { display: contents; }
.cpn-biens-carte .cpn-barre-recherche { grid-column: 1 / -1; grid-row: 1; margin-bottom: 20px; }
.cpn-biens-carte .cpn-carte { --cpn-carte-h: 210px; } /* Page agence validée : 3 colonnes à côté de la carte. */
.cpn-biens-carte .cpn-resultats { grid-column: 1; grid-row: 2; margin-top: 0; }
.cpn-biens-carte__carte { grid-column: 2; grid-row: 2; }
@media (max-width: 1100px) {
	.cpn-biens-carte { grid-template-columns: minmax(0, 1fr); }
	.cpn-biens-carte__carte { grid-column: 1; grid-row: 3; margin-top: 24px; }
}
@media (max-width: 900px) {
	html body .cpn-bloc-agences.e-con { --flex-direction: column; flex-direction: column; align-items: stretch; }
	html body .cpn-bloc-agences > .cpn-bloc-agences__texte, html body .cpn-bloc-agences > .cpn-bloc-agences__etapes, html body .cpn-bloc-agences > .cpn-bloc-agences__bouton { flex: 0 0 auto; width: 100%; }
	html body .cpn-barre__champ { min-width: 45%; }
	.cpn-mosaique__tout { right: calc(var(--cpn-marge-page) + 8px); bottom: 8px; padding: 10px 12px; }
}

/* Passe finale DESIGN-REVIEW.md */
html body .cpn-partie--pro-corps .cpn-fiche-section__titre { font-size: 36px; }
html body .cpn-bandeau__bouton { min-width: 160px; }
.e-con .elementor-widget-heading + .elementor-widget-text-editor { margin-top: 14px; }
/* Pages courtes : le pied de page reste en bas de l'écran. */
html, body { min-height: 100vh; }
body > .elementor-location-footer { position: sticky; top: 100vh; }
@media (max-width: 900px) {
	html body .cpn-mosaique__tout { position: static; grid-column: 1 / -1; justify-self: end; margin-top: 4px; }
}
/* Section dont la brique n'a rien à montrer (aucun pro dans la zone…) : Elementor retire le widget vide et laisse le conteneur ; on retire aussi son espace. */
.e-con.cpn-section:not(:has(*)) { display: none; }
/* Bandeau des pros (résultats) et appel aux professionnels (partout où la section des pros existe). */
.cpn-recherche__pros { display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; background: var(--cpn-couleur-fond-doux); padding: 36px 40px; margin-top: 56px; }
html body .cpn-recherche__pros-titre { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 30px; margin: 0 0 6px; color: var(--cpn-couleur-texte); }
.cpn-recherche__pros p { margin: 0; font-size: 14px; color: var(--cpn-couleur-texte-2); }
html body .cpn-recherche__pros .cpn-bouton { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); border-radius: 0; padding: 16px 24px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
@media (max-width: 767px) { .cpn-recherche__pros { padding: 28px 24px; } }
/* Cartes du secteur (Leaflet) : mention d'attribution discrète, fond neutre au chargement. */
.cpn-carte-fond { position: relative; z-index: 0; background: #e4e1da; }
/* Espace net entre la fin du contenu et le pied de page noir, sur toutes les pages. */
.elementor-location-footer { margin-top: 120px; }
@media (max-width: 767px) { .elementor-location-footer { margin-top: 72px; } }
/* Avantages (page « Pour les agences ») : liste sobre, petit carré de la charte. */
.cpn-avantages { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 8px; }
.cpn-avantages li { position: relative; padding-left: 20px; }
.cpn-avantages li::before { content: ""; position: absolute; left: 0; top: .6em; width: 7px; height: 7px; background: var(--cpn-couleur-texte); }
/* Annuaires : même marge latérale que l'en-tête (gabarits du plugin et modèles Elementor d'archive). */
main.cpn-archive { padding-left: var(--cpn-marge-page); padding-right: var(--cpn-marge-page); max-width: var(--cpn-largeur-max); margin-left: auto; margin-right: auto; box-sizing: border-box; }
.elementor-location-archive > .e-con.e-parent:not([class*="cpn-section"]) { --padding-left: var(--cpn-marge-page); --padding-right: var(--cpn-marge-page); }
/* Coordonnées du portail (pavé « Nous joindre ») : seul, ou texte à gauche et pavé à droite. */
.cpn-coordonnees { display: grid; gap: 40px; align-items: center; }
.cpn-coordonnees--avec-texte { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
html body .cpn-coordonnees__titre { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 40px; margin: 0 0 10px; }
.cpn-coordonnees__texte p { font-size: 17px; margin: 0; }
.cpn-coordonnees__pave { background: var(--cpn-couleur-fond-doux); padding: 28px 30px; margin: 0; display: grid; gap: 16px; }
.cpn-coordonnees__pave dt { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-2); }
.cpn-coordonnees__pave dd { margin: 4px 0 0; font-size: 17px; }
.cpn-coordonnees__pave a { color: var(--cpn-couleur-texte); text-decoration: none; border-bottom: 1px solid var(--cpn-couleur-bordure); }
@media (max-width: 900px) { .cpn-coordonnees--avec-texte { grid-template-columns: 1fr; gap: 24px; } }
/* Page Contact (correction du 13/10), qu'elle soit marquée Elementor ou non : contenu dans le conteneur du site, aligné sur le logo de l'en-tête, marges de page en mobile. */
body.page.cpn-page-contact .site-main { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 56px var(--cpn-marge-page) var(--cpn-marge-section); box-sizing: border-box; }
body.page.cpn-page-contact .page-header .entry-title { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 48px; line-height: 1.05; margin: 0 0 28px; max-width: none; padding: 0; }
body.page.cpn-page-contact .page-content p { line-height: 1.75; max-width: 720px; }
@media (max-width: 600px) { body.page.cpn-page-contact .page-header .entry-title { font-size: 36px; } }
.cpn-contact-deux { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 40px; align-items: start; }
.cpn-contact-deux .cpn-contact-portail { max-width: none; }
@media (max-width: 900px) { .cpn-contact-deux { grid-template-columns: 1fr; gap: 24px; } .cpn-contact-deux > .cpn-brique--coordonnees { order: -1; } }
/* ---------- Page « Pour les agences » (texte d'Armand du 26/09, sections Elementor modifiables) ---------- */
.cpn-agences-heros .cpn-titre-page { max-width: 900px; }
html body .cpn-chapeau { font-size: 19px; color: var(--cpn-couleur-texte-2); margin: 0 0 28px; max-width: 720px; }
.e-con.cpn-boutons { flex-direction: row; flex-wrap: wrap; gap: 12px; }
html body .cpn-bouton-plein .elementor-button, html body .cpn-bouton-contour .elementor-button { border-radius: 0; padding: 15px 24px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; border: 1px solid var(--cpn-couleur-texte); }
html body .cpn-bouton-plein .elementor-button { background: var(--cpn-couleur-texte); color: #fff; }
html body .cpn-bouton-contour .elementor-button { background: transparent; color: var(--cpn-couleur-texte); }
.e-con.cpn-avantages-grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 24px; }
.e-con.cpn-avantage { border: 1px solid var(--cpn-couleur-bordure); padding: 26px; background: var(--cpn-couleur-fond); }
html body .cpn-avantage h3 { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 24px; margin: 0 0 8px; }
.cpn-avantage p { font-size: 15px; color: var(--cpn-couleur-texte-2); line-height: 1.55; margin: 0; }
.cpn-etapes-seules .elementor-widget-text-editor { background: var(--cpn-couleur-fond-doux); padding: 36px 40px; }
.cpn-etapes--ligne { flex-direction: row; justify-content: space-between; gap: 28px; }
.e-con.cpn-deux-cols { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 48px; align-items: start; margin-top: 8px; }
.cpn-encart { background: var(--cpn-couleur-fond-doux); padding: 26px 30px; }
.cpn-encart ol { margin: 0; padding-left: 20px; display: grid; gap: 10px; }
html body .cpn-faq .elementor-toggle-item { border-bottom: 1px solid var(--cpn-couleur-bordure); }
html body .cpn-faq .elementor-tab-title { border: 0; padding: 18px 0; font-size: 18px; font-weight: 400; }
html body .cpn-faq .elementor-tab-title a { color: var(--cpn-couleur-texte); }
html body .cpn-faq .elementor-tab-content { border: 0; padding: 0 0 18px; color: var(--cpn-couleur-texte-2); }
.cpn-prevenez { position: static; }
@media (max-width: 900px) {
	.e-con.cpn-avantages-grille, .e-con.cpn-deux-cols { grid-template-columns: 1fr; }
	.cpn-etapes--ligne { flex-direction: column; }
	.cpn-etapes-seules .elementor-widget-text-editor { padding: 28px 24px; }
}


/* ---------- Lot 1 (26/09) : calculateur de prêt ---------- */
/* Cartes : « Estimez vos mensualités » à droite du prix, hors du lien de la carte (hauteur de la photo en variable). */
.cpn-carte:has(.cpn-carte__estimer) .cpn-carte__prix { padding-right: 170px; }
.cpn-carte__estimer { position: absolute; right: 0; top: calc(var(--cpn-carte-h) + 10px); line-height: 25px; font-size: 13px; }
/* Partie C du lot des bandeaux (retour d'Armand du 12/10, point 4) : quand la place manque (carte de 300 px au plus, ou
   texte agrandi : « 410 000 €stimez » à 150 % en 360 px), le lien passe sous le prix. Seuil en em de la carte : il suit
   la taille du texte. Hauteurs en em : le prix (17 px, interligne 1,5) laisse sous lui la ligne du lien (13 px,
   interligne 25 px), quelle que soit la taille du texte. */
.cpn-carte:has(.cpn-carte__estimer) { container-type: inline-size; }
@container (max-width: 300px) or (max-width: 17em) {
	.cpn-carte:has(.cpn-carte__estimer) .cpn-carte__prix { padding-right: 0; line-height: 1.5; }
	.cpn-carte:has(.cpn-carte__estimer) .cpn-carte__prix::after { content: ""; display: block; height: 1.4706em; }
	.cpn-carte .cpn-carte__estimer { left: 0; right: auto; top: calc(var(--cpn-carte-h) + 10px + 1.9615em); line-height: 1.923em; }
}
a.cpn-estimer { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
a.cpn-estimer:hover { color: var(--cpn-couleur-texte-doux); }
.cpn-bien-entete__mois { margin: 6px 0 4px; font-size: 15px; color: var(--cpn-couleur-texte-2); }
.cpn-financer { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: center; background: var(--cpn-couleur-fond-doux); padding: 32px 36px; margin: 48px 0 0; }
html body .cpn-financer__titre { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 32px; margin: 0 0 8px; }
.cpn-financer__somme { font-family: var(--cpn-police-titres); font-size: 38px; margin: 0 0 6px; color: var(--cpn-couleur-texte); }
.cpn-financer__mention { margin: 0; font-size: 15px; color: var(--cpn-couleur-texte-2); }
html body .cpn-financer .cpn-bouton { background: var(--cpn-couleur-texte); color: #fff; border: 1px solid var(--cpn-couleur-texte); border-radius: 0; padding: 15px 24px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; text-decoration: none; white-space: nowrap; }
.cpn-calc-page .cpn-titre-page .elementor-heading-title { max-width: 820px; }
.cpn-calc { max-width: 1100px; margin: 8px 0 0; font-family: var(--cpn-police-texte); color: var(--cpn-couleur-texte); }
.cpn-calc__modes { display: flex; gap: 28px; border-bottom: 1px solid var(--cpn-couleur-bordure); margin: 0 0 28px; }
html body .cpn-calc__mode { all: unset; box-sizing: border-box; cursor: pointer; padding: 12px 0; border-bottom: 2px solid transparent; font: 500 15px var(--cpn-police-texte); color: var(--cpn-couleur-texte-doux); }
html body .cpn-calc__mode[aria-selected="true"] { color: var(--cpn-couleur-texte); border-bottom-color: var(--cpn-couleur-texte); }
html body .cpn-calc__mode:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 4px; }
/* Retour téléphone du 28/09 : le style commun des boutons (fond sombre au toucher, au survol, au focus)
   rendait l'onglet choisi illisible. États neutralisés ; un libellé trop long passe à la ligne au lieu d'être coupé. */
html body .cpn-calc__mode, html body .cpn-calc__mode:hover, html body .cpn-calc__mode:focus, html body .cpn-calc__mode:active { background: transparent; color: var(--cpn-couleur-texte-doux); box-shadow: none; text-decoration: none; -webkit-tap-highlight-color: transparent; flex: 0 1 auto; min-width: 0; white-space: normal; text-align: left; }
html body .cpn-calc__mode[aria-selected="true"], html body .cpn-calc__mode[aria-selected="true"]:hover, html body .cpn-calc__mode[aria-selected="true"]:focus, html body .cpn-calc__mode[aria-selected="true"]:active { background: transparent; color: var(--cpn-couleur-texte); border-bottom-color: var(--cpn-couleur-texte); }
@media (max-width: 400px) { .cpn-calc__modes { gap: 20px; } }
.cpn-calc__grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px; align-items: start; }
.cpn-calc__champ { margin: 0 0 18px; }
.cpn-calc__champ label { display: block; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); margin: 0 0 6px; }
.cpn-calc__saisie { display: flex; border: 1px solid var(--cpn-couleur-bordure-forte); background: var(--cpn-couleur-fond); }
html body .cpn-calc__saisie input { flex: 1; min-width: 0; border: 0; border-radius: 0; padding: 13px 14px; font: 16px var(--cpn-police-texte); background: transparent; }
.cpn-calc__saisie span { padding: 13px 14px; color: var(--cpn-couleur-texte-doux); background: var(--cpn-couleur-fond-doux); }
.cpn-calc__aide { font-size: 12px; color: var(--cpn-couleur-texte-doux); margin: 6px 0 0; }
.cpn-calc__resultat { background: var(--cpn-couleur-fond-doux); padding: 32px; }
.cpn-calc__etiquette { display: block; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); margin: 0 0 6px; }
.cpn-calc__gros { font-family: var(--cpn-police-titres); font-size: 54px; line-height: 1; margin: 0 0 22px; }
.cpn-calc__gros small { font-size: 22px; }
.cpn-calc__ligne { display: flex; justify-content: space-between; gap: 12px; border-top: 1px solid var(--cpn-couleur-bordure-forte); padding: 11px 0; font-size: 15px; font-variant-numeric: tabular-nums; }
.cpn-calc__mention { font-size: 12px; color: var(--cpn-couleur-texte-doux); margin: 12px 0 0; line-height: 1.5; }
.cpn-calc__alerte { background: #fbeae8; color: var(--cpn-couleur-erreur); padding: 12px 14px; font-size: 14px; margin: 12px 0 0; }
.cpn-calc__amort { margin: 32px 0 0; border-top: 1px solid var(--cpn-couleur-bordure); }
.cpn-calc__amort summary { cursor: pointer; padding: 16px 0; font-weight: 500; list-style: none; display: flex; justify-content: space-between; }
.cpn-calc__amort summary::-webkit-details-marker { display: none; }
.cpn-calc__amort summary::after { content: "+"; font-size: 20px; line-height: 1; }
.cpn-calc__amort[open] summary::after { content: "–"; }
.cpn-calc__table { overflow-x: auto; }
.cpn-calc__table table { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.cpn-calc__table th, .cpn-calc__table td { text-align: right; padding: 8px 10px; border-bottom: 1px solid var(--cpn-couleur-bordure); font-weight: 400; white-space: nowrap; }
.cpn-calc__table thead th { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); font-weight: 500; border-bottom: 1px solid var(--cpn-couleur-texte); }
.cpn-calc__table th:first-child, .cpn-calc__table td:first-child { text-align: left; }
.cpn-calc__suite { margin: 36px 0 0; padding: 22px 0; border-top: 1px solid var(--cpn-couleur-bordure); border-bottom: 1px solid var(--cpn-couleur-bordure); display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
html body .cpn-calc__suite .cpn-bouton { background: transparent; color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); border-radius: 0; padding: 14px 22px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; text-decoration: none; }
/* Lot 1 bis : page du calculateur centrée dans une même largeur, textes en largeur de lecture. */
.e-con.cpn-calc-page > .elementor-element, .e-con.cpn-calc-page > .e-con-inner > .elementor-element { width: 100%; max-width: 1180px; margin-left: auto; margin-right: auto; }
.cpn-calc:not(.cpn-calc--fenetre) { max-width: none; display: grid; grid-template-columns: minmax(0, 1fr) 340px; column-gap: 56px; align-items: start; }
.cpn-calc:not(.cpn-calc--fenetre) > * { grid-column: 1; }
.cpn-calc:not(.cpn-calc--fenetre) > .cpn-calc-budget { grid-column: 2; grid-row: 1 / span 3; position: sticky; top: 24px; }
.cpn-calc-budget { border-top: 1px solid var(--cpn-couleur-texte); padding-top: 18px; }
html body .cpn-calc-budget__titre { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 26px; line-height: 1.15; margin: 6px 0 4px; }
.cpn-calc-budget__sous { font-size: 13px; color: var(--cpn-couleur-texte-2); margin: 0 0 14px; }
.cpn-calc-budget__liste { list-style: none; margin: 0; padding: 0; }
html body .cpn-calc-budget__bien { display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: 14px; padding: 14px 0; border-top: 1px solid var(--cpn-couleur-filet); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-calc-budget__photo { width: 116px; height: 86px; background: var(--cpn-couleur-fond-doux); overflow: hidden; }
.cpn-calc-budget__photo img { width: 116px; height: 86px; object-fit: cover; display: block; }
.cpn-calc-budget__texte { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cpn-calc-budget__prix { font-weight: 600; font-size: 15px; }
.cpn-calc-budget__ligne { font-size: 13px; line-height: 1.35; }
.cpn-calc-budget__lieu { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-calc-budget__vide { font-size: 14px; color: var(--cpn-couleur-texte-2); }
html body .cpn-calc-budget__lien { display: inline-block; margin-top: 14px; font-size: 13px; color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
.cpn-calc-texte { max-width: 760px; margin-top: 56px; }
.cpn-calc-texte p, .cpn-calc-texte h2 { max-width: 700px; }
html body .cpn-calc-texte h2 { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 28px; margin: 32px 0 10px; }
.cpn-calc-texte p { font-size: 16px; line-height: 1.7; color: var(--cpn-couleur-texte-2); margin: 0 0 12px; }
.cpn-calc-texte .cpn-calc-texte__petit { font-size: 13px; color: var(--cpn-couleur-texte-doux); margin-top: 24px; }
dialog.cpn-calc-fenetre { border: 0; padding: 0; max-width: 980px; width: calc(100% - 32px); max-height: calc(100% - 48px); background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); }
dialog.cpn-calc-fenetre::backdrop { background: rgba(17, 17, 17, .55); }
.cpn-calc-fenetre__in { padding: 32px 36px; }
.cpn-calc-fenetre__tete { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin: 0 0 20px; padding: 0 0 14px; border-bottom: 1px solid var(--cpn-couleur-bordure); }
html body .cpn-calc-fenetre__tete h2 { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 30px; margin: 0; }
html body dialog.cpn-calc-fenetre button.cpn-calc-fenetre__fermer, html body dialog.cpn-calc-fenetre button.cpn-calc-fenetre__fermer:hover, html body dialog.cpn-calc-fenetre button.cpn-calc-fenetre__fermer:focus { all: unset; cursor: pointer; font-size: 28px; line-height: 1; padding: 0 4px; color: var(--cpn-couleur-texte); background: transparent; border: 0; }
html body dialog.cpn-calc-fenetre button.cpn-calc-fenetre__fermer:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 2px; }
.cpn-calc--fenetre { margin: 0; }
.cpn-calc--fenetre .cpn-calc__gros { font-size: 44px; }
.cpn-calc-fenetre__pied { margin: 20px 0 0; }
html body .cpn-calc-fenetre__pied .cpn-bouton { display: inline-block; background: transparent; color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); border-radius: 0; padding: 14px 22px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; text-decoration: none; }
@media (max-width: 1100px) {
	/* Bloc « Des biens dans votre budget » sous le calculateur (tablette et mobile). */
	.cpn-calc:not(.cpn-calc--fenetre) { display: block; }
	.cpn-calc:not(.cpn-calc--fenetre) > .cpn-calc-budget { position: static; margin: 32px 0 0; }
}
@media (max-width: 800px) {
	.cpn-calc__grille, .cpn-financer { grid-template-columns: 1fr; gap: 24px; }
	.cpn-calc__gros { font-size: 42px; }
	.cpn-calc__resultat, .cpn-financer { padding: 24px; }
	.cpn-calc-fenetre__in { padding: 22px 18px; }
}

/* ---------- Lot 1 : annuaires (option B), bandeau des agences ---------- */
.cpn-partenaires__grille:has(.cpn-carte-annuaire) { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.cpn-carte-annuaire a { align-items: stretch; gap: 0; padding: 0; min-height: 150px; border-radius: 0; }
.cpn-carte-annuaire .cpn-partenaire-carte__logo { flex: 0 0 38%; height: auto; padding: 18px; box-sizing: border-box; background: var(--cpn-couleur-fond-doux); border-radius: 0; }
.cpn-annuaire .cpn-carte-annuaire .cpn-partenaire-carte__logo { background: var(--cpn-couleur-fond-doux); }
.cpn-carte-annuaire .cpn-partenaire-carte__logo > span { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; min-height: 96px; background: #fff; padding: 12px; box-sizing: border-box; }
.cpn-carte-annuaire .cpn-partenaire-carte__logo img { max-width: 100%; max-height: 96px; width: auto; height: auto; object-fit: contain; }
.cpn-initiales { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; min-height: 72px; background: var(--cpn-couleur-texte); color: #fff; font-family: var(--cpn-police-titres); font-size: 34px; letter-spacing: .06em; }
.cpn-carte-annuaire .cpn-partenaire-carte__logo > span:has(.cpn-initiales) { padding: 0; }
.cpn-carte-annuaire__texte { padding: 18px 20px; display: flex; flex-direction: column; justify-content: center; gap: 6px; }
html body .cpn-carte-annuaire .cpn-partenaire-carte__nom { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 22px; line-height: 1.15; }
.cpn-carte-annuaire .cpn-partenaire-carte__metiers { font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-carte-annuaire .cpn-partenaire-carte__services { font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--cpn-couleur-texte); }
.cpn-appel-agences { margin-top: 56px; }
@media (max-width: 900px) { .cpn-partenaires__grille:has(.cpn-carte-annuaire) { grid-template-columns: minmax(0, 1fr); gap: 16px; } }
/* Complément d'Armand (12/10, C2) : carte d'agence entière dans l'écran, texte agrandi compris (un mot trop long passe
   à la ligne au lieu de pousser la carte hors de l'écran). */
.cpn-carte-annuaire a { min-width: 0; }
.cpn-carte-annuaire__texte { min-width: 0; overflow-wrap: break-word; }
/* Partie C du lot des bandeaux (retour d'Armand du 12/10, point 2) : à 150 % en 360 px, des mots étaient coupés en plein
   milieu (« Chemin / ée », « NÉGOCIATEURS »). Carte étroite pour la taille du texte (seuil en em : il suit le texte
   agrandi) : logo au-dessus du texte, texte sur toute la largeur, aucun mot coupé. Écran large ou texte normal :
   inchangé (logo à gauche). */
.cpn-carte-annuaire { container-type: inline-size; }
@container (max-width: 17em) {
	.cpn-carte-annuaire a { flex-direction: column; }
	.cpn-carte-annuaire .cpn-partenaire-carte__logo { flex: none; width: 100%; }
	.cpn-carte-annuaire__texte { flex: none; }
}

/* ---------- Pied de page (lot Navigation, 0.6.73, maquette MAQUETTE-NAVIGATION-PIED.html) ----------
   Bloc du portail (nom, deux phrases, téléphone), colonnes Rechercher, Le marché, Professionnels et [nom du portail],
   ligne du bas : phrase de gratuité, pages légales publiées, Plan du site. Liens d'au moins 44 px de haut. */
.cpn-pied--complet { padding: 0; display: block; }
.cpn-pied__in { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 64px var(--cpn-marge-page) 0; box-sizing: border-box; }
.cpn-pied--complet .cpn-pied__haut { display: grid; grid-template-columns: minmax(0, 1.3fr) repeat(4, minmax(0, .8fr)) minmax(0, 1.7fr); gap: 32px; }
.cpn-pied--complet .cpn-pied__nom { width: auto; display: block; font-size: 30px; font-weight: 400; letter-spacing: .1em; line-height: 1; margin: 0 0 14px; }
.cpn-pied__marque { display: flex; flex-direction: column; }
.cpn-pied__phrase { margin: 0 0 16px; font-size: 14px; line-height: 1.6; max-width: 340px; color: #d9d6ce; }
.cpn-pied__phrase-ligne { display: block; }
.cpn-pied__phrase-ligne + .cpn-pied__phrase-ligne { margin-top: 10px; }
.cpn-pied__joindre { margin: 0; color: #fff; font-size: 14px; line-height: 1.6; }
html body .cpn-pied__joindre, html body .cpn-pied__joindre a { color: #fff; font-weight: 400; } /* Même couleur et même graisse sur toute la ligne ; seul « WhatsApp » est un lien (retour d'Armand du 07/10). */
html body .cpn-pied__joindre a { text-decoration: underline; text-underline-offset: 3px; }
.cpn-pied--complet .cpn-pied__colonne { display: flex; flex-direction: column; gap: 0; min-width: 0; }
.cpn-pied--complet .cpn-pied__titre { margin: 0 0 6px; font-size: 11px; font-weight: 400; letter-spacing: .14em; text-transform: uppercase; color: #b8b4aa; }
html body .cpn-pied--complet .cpn-pied__colonne a { display: flex; align-items: center; min-height: 44px; font-size: 14px; line-height: 1.3; color: #fff; text-decoration: none; }
html body .cpn-pied--complet .cpn-pied__colonne a:hover, html body .cpn-pied--complet .cpn-pied__colonne a:focus { color: #d9d6ce; text-decoration: underline; text-underline-offset: 3px; }
/* « Rechercher par région » (gardée par Armand le 07/10) : ordre alphabétique de haut en bas, colonne par colonne
   (comme en 0.6.72) ; bloc details ouvert, repliable sur mobile (portail.js le replie au chargement en mobile). */
.cpn-pied__regions { min-width: 0; }
.cpn-pied__regions > summary { list-style: none; cursor: default; }
@media (min-width: 641px) { .cpn-pied__regions > summary { pointer-events: none; } } /* Ordinateur : un simple titre. */
.cpn-pied__regions > summary::-webkit-details-marker { display: none; }
.cpn-pied__regions-liste { display: block; column-count: 2; column-gap: 20px; }
html body .cpn-pied__regions-liste > a { display: flex; align-items: center; min-height: 44px; break-inside: avoid; font-size: 14px; line-height: 1.3; color: #fff; text-decoration: none; }
html body .cpn-pied__regions-liste > a:hover, html body .cpn-pied__regions-liste > a:focus { color: #d9d6ce; text-decoration: underline; text-underline-offset: 3px; }
.cpn-pied--complet .cpn-pied__bas { margin: 48px 0 0; border-top: 1px solid #3a3935; padding: 12px 72px 24px 0; /* À droite : place du bouton « Revenir en haut ». */ display: flex; justify-content: space-between; align-items: center; gap: 0 16px; flex-wrap: wrap; font-size: 12px; color: #b8b4aa; }
.cpn-pied__gratuit { padding: 12px 0; }
.cpn-pied__legales { display: flex; gap: 0 20px; flex-wrap: wrap; }
html body .cpn-pied__legales a { display: inline-flex; align-items: center; min-height: 44px; color: #b8b4aa; text-decoration: underline; text-underline-offset: 3px; }
html body .cpn-pied__legales a:hover { color: #fff; }
/* Colonnes et régions du pied (demande d'Armand, 0.6.86) : à partir de 1024 px, environ 10 px entre deux liens, sans
   hauteur minimale ; interligne serré gardé pour un libellé sur deux lignes. En dessous : zones tactiles de 44 px. */
@media (min-width: 1024px) {
	html body .cpn-pied--complet .cpn-pied__colonne a, html body .cpn-pied__regions-liste > a { min-height: 0; line-height: 1.3; }
	html body .cpn-pied--complet .cpn-pied__colonne a + a { margin-top: 10px; }
	html body .cpn-pied__regions-liste > a { margin: 0 0 10px; }
	.cpn-pied--complet .cpn-pied__titre { margin-bottom: 10px; }
}
@media (max-width: 1100px) {
	.cpn-pied--complet .cpn-pied__haut { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-pied__marque, .cpn-pied__regions { grid-column: 1 / -1; }
	.cpn-pied__regions-liste { column-count: 3; }
}
@media (max-width: 640px) {
	.cpn-pied__in { padding-top: 48px; }
	.cpn-pied--complet .cpn-pied__haut { gap: 32px 20px; }
	.cpn-pied__regions-liste { column-count: 1; }
	html body .cpn-pied--complet .cpn-pied__regions > summary { display: flex; justify-content: space-between; align-items: center; min-height: 44px; margin: 0; cursor: pointer; border-bottom: 1px solid #3a3935; }
	.cpn-pied__regions > summary::after { content: "+"; font-size: 18px; letter-spacing: 0; color: #fff; }
	.cpn-pied__regions[open] > summary::after { content: "\2212"; }
	.cpn-pied--complet .cpn-pied__bas { flex-direction: column; align-items: flex-start; padding-right: 0; padding-bottom: 76px; } /* En bas : place du bouton « Revenir en haut ». */
}

/* ---------- Lot 1 : page « Pour les agences » (maquette validée) ---------- */
.e-con.cpn-ag-heros { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 56px; align-items: center; --padding-top: 56px; padding-top: 56px; }
.cpn-ag-heros .cpn-titre-page .elementor-heading-title { font-size: 60px; line-height: 1.03; }
.cpn-ag-heros .cpn-chapeau { font-size: 18px; max-width: 460px; }
.cpn-ordi .elementor-widget-container { margin: 0; }
.cpn-ordi img { display: block; width: 100%; background: #1d1d1b; padding: 14px 14px 18px; border-radius: 14px 14px 0 0; box-sizing: border-box; box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .35); }
.cpn-ordi figure { margin: 0; position: relative; }
.cpn-ordi figure::after { content: ""; display: block; height: 14px; margin: 0 -5%; background: linear-gradient(#d9d6ce, #bdb9b0); border-radius: 0 0 12px 12px; }
.cpn-ordi figcaption, .cpn-ordi .widget-image-caption { font-size: 12px; color: var(--cpn-couleur-texte-doux); margin: 14px 0 0; text-align: center; font-style: normal; order: 2; }
.cpn-ordi figure { display: flex; flex-direction: column; }
.e-con.cpn-section--serre { --padding-top: 64px; padding-top: 64px; }
.cpn-chiffres-portail { display: grid; grid-template-columns: repeat(var(--n, 2), minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--cpn-couleur-texte); border-bottom: 1px solid var(--cpn-couleur-bordure); }
.cpn-chiffres-portail--3 { --n: 3; }
.cpn-chiffres-portail--4 { --n: 4; }
.cpn-chiffres-portail > div { padding: 26px 0; }
.cpn-chiffres-portail > div + div { padding-left: 32px; border-left: 1px solid var(--cpn-couleur-bordure); }
.cpn-chiffres-portail dt { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 104px; line-height: .95; margin: 0 0 8px; font-variant-numeric: lining-nums; }
.cpn-chiffres-portail dd { margin: 0; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body .cpn-logos__titre { font-family: var(--cpn-police-texte); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); text-align: center; margin: 0 0 28px; }
.cpn-logos__grille { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--cpn-couleur-bordure); border: 1px solid var(--cpn-couleur-bordure); }
.cpn-logos__grille li { background: #fff; }
/* Lot 1 bis : logos en couleur, plus grands (8 au plus). */
.cpn-logos__grille a { display: flex; align-items: center; justify-content: center; height: 150px; padding: 24px 40px; box-sizing: border-box; }
.cpn-logos__grille img { max-width: 100%; max-height: 92px; width: auto; height: auto; object-fit: contain; }
.e-con.cpn-arguments { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px; }
.e-con.cpn-argument { display: flex; flex-direction: column; }
/* Lot 1 bis : arguments sans captures (pictogramme fin, titre, phrase, trois lignes en petites capitales). */
.e-con.cpn-argument { border-top: 1px solid var(--cpn-couleur-texte); padding-top: 28px; }
.cpn-picto { width: 40px; height: 40px; stroke: var(--cpn-couleur-texte); stroke-width: 1; fill: none; stroke-linecap: round; stroke-linejoin: round; display: block; margin: 0 0 24px; }
html body .cpn-argument__titre .elementor-heading-title { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 32px; line-height: 1.1; margin: 0 0 12px; }
.cpn-argument__phrase p { font-size: 16px; line-height: 1.6; color: var(--cpn-couleur-texte-2); margin: 0 0 22px; }
.cpn-argument__lignes { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--cpn-couleur-bordure); }
.cpn-argument__lignes li { font-size: 15px; font-weight: 500; font-variant: all-small-caps; letter-spacing: .08em; padding: 10px 0; border-bottom: 1px solid var(--cpn-couleur-bordure); }
.cpn-argument__visuel { margin-top: 28px; }
.cpn-argument__visuel, .cpn-argument__visuel > .elementor-widget-container { background: var(--cpn-couleur-fond-doux); height: 300px; display: flex; align-items: center; justify-content: center; padding: 24px; box-sizing: border-box; }
.cpn-argument__visuel > .elementor-widget-container { padding: 0; width: 100%; }
.cpn-argument__visuel img { max-width: 100%; max-height: 252px; width: auto; height: auto; object-fit: contain; box-shadow: 0 14px 30px -20px rgba(0, 0, 0, .35); background: #fff; }
.cpn-exemple { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 28px; align-items: center; border: 1px solid var(--cpn-couleur-bordure); padding: 26px 30px; }
/* Lot 1 bis : photo d'ambiance en haut de page ; « Voir un exemple » avec la capture de la fiche. */
.e-con.cpn-ag-heros { align-items: stretch; }
.cpn-ag-heros__texte { align-self: center; }
.cpn-ag-photo, .cpn-ag-photo > .elementor-widget-container { height: 100%; margin: 0; }
.cpn-ag-photo img { display: block; width: 100%; height: 100%; min-height: 560px; object-fit: cover; }
.cpn-exemple-cadre { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 56px; align-items: center; background: var(--cpn-couleur-fond-doux); padding: 48px; }
.cpn-exemple.cpn-exemple--capture { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; border: 0; padding: 0; }
.cpn-exemple__capture img { width: 100%; height: auto; }
.cpn-exemple__capture figcaption { text-align: left; font-size: 12px; color: var(--cpn-couleur-texte-doux); margin: 14px 0 0; order: 2; }
.cpn-exemple__logo { width: 120px; height: 80px; display: flex; align-items: center; justify-content: center; }
.cpn-exemple__logo img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.cpn-exemple__nom { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 26px; margin: 4px 0 2px; }
.cpn-exemple__lieu { margin: 0; color: var(--cpn-couleur-texte-2); font-size: 15px; }
html body .cpn-exemple .cpn-bouton { background: transparent; color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); border-radius: 0; padding: 14px 22px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; text-decoration: none; white-space: nowrap; }
.cpn-grandes-etapes { list-style: none; margin: 28px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--cpn-couleur-texte); }
.cpn-grandes-etapes li { padding: 24px 28px 0 0; display: flex; flex-direction: column; gap: 6px; }
.cpn-grandes-etapes__n { font-family: var(--cpn-police-titres); font-size: 128px; line-height: .9; margin: 0 0 12px; }
.cpn-grandes-etapes strong { font-size: 17px; font-weight: 600; }
.cpn-grandes-etapes li > span:last-child { font-size: 15px; color: var(--cpn-couleur-texte-2); line-height: 1.55; }
.cpn-grandes-etapes__logiciel { margin: 22px 0 0; font-size: 14px; color: var(--cpn-couleur-texte-doux); }
.cpn-faq-liste { margin-top: 20px; }
.cpn-faq-item { border-bottom: 1px solid var(--cpn-couleur-bordure); padding: 20px 0; }
.cpn-faq-item:first-child { border-top: 1px solid var(--cpn-couleur-bordure); }
.cpn-faq-item summary { cursor: pointer; font-family: var(--cpn-police-titres); font-size: 22px; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
.cpn-faq-item summary::-webkit-details-marker { display: none; }
.cpn-faq-item summary::after { content: "+"; font-family: var(--cpn-police-texte); font-size: 20px; }
.cpn-faq-item[open] summary::after { content: "–"; }
.cpn-faq-item p { margin: 10px 0 0; color: var(--cpn-couleur-texte-2); line-height: 1.65; max-width: 820px; font-size: 16px; }
.e-con.cpn-ag-final { background: var(--cpn-couleur-fond-sombre); color: #fff; margin-top: 96px; padding: 80px 0; }
.e-con.cpn-ag-final__in { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 56px; align-items: start; max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page); box-sizing: border-box; width: 100%; }
html body .cpn-ag-final h2.elementor-heading-title { color: #fff; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 46px; line-height: 1.08; margin: 0 0 16px; }
.cpn-ag-final .elementor-widget-text-editor p { color: #bdb9b0; font-size: 17px; margin: 0 0 28px; line-height: 1.6; }
html body .cpn-bouton-blanc .elementor-button { background: #fff; color: var(--cpn-couleur-texte); border: 1px solid #fff; border-radius: 0; padding: 15px 24px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.cpn-ag-final .cpn-joindre { margin: 40px 0 0; font-size: 14px; color: #bdb9b0; }
html body .cpn-ag-final .cpn-joindre a { color: #fff; }
.e-con.cpn-ag-final__autre { border-left: 1px solid #2e2d2a; padding-left: 40px; }
html body .cpn-ag-final h3.elementor-heading-title { font-family: var(--cpn-police-texte); font-size: 15px; font-weight: 600; color: #fff; margin: 0 0 6px; }
.cpn-ag-final__autre .elementor-widget-text-editor p { font-size: 14px; margin: 0 0 16px; }
.cpn-ag-final .cpn-prevenez { background: transparent; border: 0; padding: 0; box-shadow: none; }
.cpn-ag-final .cpn-prevenez .cpn-contact { display: grid; gap: 10px; }
.cpn-ag-final .cpn-prevenez .cpn-contact__champ { margin: 0; }
.cpn-ag-final .cpn-prevenez label { color: #8f8b82; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
html body .cpn-ag-final .cpn-prevenez input[type="text"], html body .cpn-ag-final .cpn-prevenez input[type="email"] { background: transparent; border: 1px solid #4a4944; color: #fff; border-radius: 0; padding: 11px 12px; }
html body .cpn-ag-final .cpn-prevenez .cpn-bouton { justify-self: start; background: transparent; color: #fff; border: 1px solid #fff; border-radius: 0; padding: 11px 18px; font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; width: auto; }
.cpn-ag-final .cpn-contact__rgpd, .cpn-ag-final .cpn-contact__retour { color: #8f8b82; font-size: 11px; line-height: 1.5; }
/* Lot 1 bis : logiciel en liste (« Autre » ouvre un champ), téléphone facultatif à côté de l'e-mail. */
html body .cpn-ag-final .cpn-prevenez input[type="tel"], html body .cpn-ag-final .cpn-prevenez select { width: 100%; box-sizing: border-box; background-color: transparent; border: 1px solid #4a4944; color: #fff; border-radius: 0; padding: 11px 12px; font: inherit; font-size: 15px; }
html body .cpn-ag-final .cpn-prevenez select { appearance: none; -webkit-appearance: none; padding-right: 36px; background-image: linear-gradient(45deg, transparent 50%, #fff 50%), linear-gradient(135deg, #fff 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 15px) 50%; background-size: 5px 5px; background-repeat: no-repeat; }
.cpn-ag-final .cpn-prevenez select option, .cpn-ag-final .cpn-prevenez select optgroup { color: #111; background: #fff; }
.cpn-prevenez [data-cpn-logiciel-autre][hidden] { display: none; }
.cpn-prevenez__paire { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 16px; }
.cpn-prevenez__facultatif { text-transform: none; letter-spacing: 0; opacity: .8; }
@media (max-width: 767px) { .cpn-prevenez__paire { grid-template-columns: 1fr; } }
/* Page qui finit sur le bandeau sombre : pas de bande blanche avant le pied, un filet les sépare. */
body:has(.cpn-ag-final) .elementor-location-footer { margin-top: 0; }
body:has(.cpn-ag-final) .cpn-pied { border-top: 1px solid #2e2d2a; }
@media (max-width: 900px) {
	.e-con.cpn-ag-heros, .e-con.cpn-arguments, .e-con.cpn-ag-final__in { grid-template-columns: 1fr; gap: 40px; }
	.cpn-ag-heros .cpn-titre-page .elementor-heading-title { font-size: 40px; }
	.cpn-ordi figure::after { margin: 0 -2%; } /* Le socle ne dépasse jamais la marge de la page (768 px). */
	.cpn-chiffres-portail dt { font-size: 60px; }
	.cpn-chiffres-portail > div + div { padding-left: 20px; }
	.cpn-logos__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cpn-logos__grille a { height: 104px; padding: 16px 24px; }
	.cpn-logos__grille img { max-height: 64px; }
	.cpn-exemple { grid-template-columns: 1fr; gap: 14px; }
	.cpn-exemple-cadre { grid-template-columns: 1fr; gap: 28px; padding: 28px 20px; }
	.cpn-ag-photo img { min-height: 0; height: 300px; }
	.cpn-grandes-etapes { grid-template-columns: 1fr; gap: 28px; }
	.cpn-grandes-etapes__n { font-size: 88px; }
	.e-con.cpn-ag-final { padding: 56px 0; }
	html body .cpn-ag-final h2.elementor-heading-title { font-size: 34px; }
	.e-con.cpn-ag-final__autre { border-left: 0; padding-left: 0; border-top: 1px solid #2e2d2a; padding-top: 28px; }
	.cpn-argument__visuel, .cpn-argument__visuel > .elementor-widget-container { height: 260px; }
}

/* Nom du portail : réglage écrit normalement (« Cintu Immobilier », 26/09) ; en-tête et pied le
   présentent en capitales, comme un logo. Les phrases (étapes, textes, e-mails) gardent l'écriture du réglage. */
.cpn-entete__nom, .cpn-pied__nom { text-transform: uppercase; }
@media (max-width: 767px) {
	.cpn-ag-photo { margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important; width: 100vw !important; max-width: 100vw !important; }
}

/*
 * Bouton « Revenir en haut » (28/09/2026) : petit rond en bas à droite, flèche fine ; apparaît en
 * fondu après environ un écran de défilement. Blanc à filet noir, lisible sur fond clair comme sur
 * photo ; au survol (ordinateur) les couleurs s'inversent. Caché pendant les filtres plein écran et
 * le menu mobile ouvert ; sous les fenêtres (visionneuse, calculateur), qui passent au premier plan.
 */
html body .cpn-haut { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 90; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; padding: 0; box-sizing: border-box; border: 1px solid var(--cpn-couleur-texte); border-radius: 50%; background: rgba(255, 255, 255, .94); color: var(--cpn-couleur-texte); box-shadow: 0 4px 14px rgba(17, 17, 17, .18); cursor: pointer; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s ease, visibility .25s ease, transform .25s ease, background-color .2s ease, color .2s ease; -webkit-tap-highlight-color: transparent; }
html body .cpn-haut[hidden] { display: none; }
html body .cpn-haut.is-visible { opacity: 1; visibility: visible; transform: none; }
html body .cpn-haut:focus { background: rgba(255, 255, 255, .94); color: var(--cpn-couleur-texte); }
html body .cpn-haut:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
	html body .cpn-haut:hover { background: var(--cpn-couleur-texte); color: #fff; border-color: var(--cpn-couleur-texte); }
}
@media (min-width: 768px) {
	html body .cpn-haut { right: 24px; bottom: 24px; width: 48px; height: 48px; }
}
html.cpn-filtres-ouverts .cpn-haut { display: none; }
@media (prefers-reduced-motion: reduce) {
	html body .cpn-haut { transition: none; transform: none; }
}
@media print {
	html body .cpn-haut { display: none; }
}

/* ---------- Lot Carte : fond Protomaps (MapLibre) ---------- */
.cpn-carte-fond .maplibregl-ctrl-attrib { font-size: 11px; }
.cpn-carte-fond .maplibregl-ctrl-group { border-radius: 0; box-shadow: 0 0 0 1px var(--cpn-couleur-bordure-forte); }
.cpn-carte-note { margin-top: 10px; }
.cpn-carte-zone { position: absolute; top: 12px; left: 50%; transform: translateX(-50%); z-index: 2; background: var(--cpn-couleur-primaire); color: var(--cpn-couleur-primaire-contraste) !important; font-size: 13px; font-weight: 600; padding: 10px 18px; text-decoration: none; white-space: nowrap; box-shadow: 0 2px 8px rgba(0,0,0,.2); }
.cpn-carte-zone:hover { background: #333; }
.cpn-carte-popup .maplibregl-popup-content { padding: 0; border-radius: 0; overflow: hidden; }
.cpn-carte-popup .maplibregl-popup-close-button { z-index: 1; background: #fff; width: 24px; height: 24px; font-size: 18px; }
.cpn-carte-bulle { display: flex; flex-direction: column; text-decoration: none; color: var(--cpn-couleur-texte) !important; }
.cpn-carte-bulle img { width: 100%; height: 150px; object-fit: cover; display: block; }
.cpn-carte-bulle__prix { font-weight: 700; font-size: 15px; padding: 10px 12px 2px; }
.cpn-carte-bulle__titre, .cpn-carte-bulle__lieu { font-size: 13px; padding: 0 12px; }
.cpn-carte-bulle__lieu { color: var(--cpn-couleur-texte-doux); padding-bottom: 10px; }
.cpn-carte-bulle__attente { margin: 0; padding: 14px; font-size: 13px; }

/* ---------- Tâche 6 : champ téléphone avec sélecteur de pays ---------- */
.cpn-tel { display: flex; position: relative; width: 100%; align-items: stretch; }
.cpn-tel__pays { flex: 0 0 auto; max-width: 42%; }
html body .cpn-tel > input[type=tel] { flex: 1 1 auto; min-width: 0; width: auto; }
html body .cpn-tel.is-enrichi > input[type=tel] { border-left: 0; }
html body .cpn-tel__bouton { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; padding: 0 10px; font: inherit; font-size: 14px; color: var(--cpn-couleur-texte); background: var(--cpn-couleur-fond-doux, #f6f5f2); border: 1px solid var(--cpn-couleur-bordure-forte, #bbb); border-radius: 2px 0 0 2px; cursor: pointer; min-height: 44px; letter-spacing: 0; text-transform: none; }
html body .cpn-tel__bouton::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); margin-left: 2px; }
html body .cpn-tel__bouton:is(:hover, :focus, :focus-visible, :active) { background: var(--cpn-couleur-fond, #fff); color: var(--cpn-couleur-texte, #111); } /* Le thème met le texte des boutons en blanc au focus. */
.cpn-tel__drapeau { width: 20px; height: 15px; object-fit: cover; box-shadow: 0 0 0 1px rgba(0,0,0,.12); flex: 0 0 auto; }
.cpn-tel__panneau { position: absolute; z-index: 50; top: calc(100% + 4px); left: 0; width: min(340px, 100%); background: #fff; border: 1px solid var(--cpn-couleur-bordure-forte, #bbb); box-shadow: 0 10px 30px rgba(0,0,0,.14); }
html body .cpn-tel__recherche { width: 100%; box-sizing: border-box; border: 0; border-bottom: 1px solid var(--cpn-couleur-bordure, #ddd); padding: 12px; font: inherit; font-size: 16px; border-radius: 0; }
.cpn-tel__liste { list-style: none; margin: 0; padding: 4px 0; max-height: 260px; overflow-y: auto; }
.cpn-tel__option { display: flex; align-items: center; gap: 10px; padding: 8px 12px; cursor: pointer; font-size: 14px; }
.cpn-tel__option.is-actif, .cpn-tel__option:hover { background: var(--cpn-couleur-fond-doux, #f6f5f2); }
.cpn-tel__option[aria-selected="true"] .cpn-tel__nom { font-weight: 600; }
.cpn-tel__nom { flex: 1 1 auto; min-width: 0; }
.cpn-tel__code { color: var(--cpn-couleur-texte-doux, #666); font-variant-numeric: tabular-nums; }
.cpn-tel__vide { padding: 12px; font-size: 14px; color: var(--cpn-couleur-texte-doux, #666); }

/* ---------- Tâche 9 : page Inspirations en magazine ---------- */
.cpn-magazine { margin-top: 72px; }
.cpn-magazine__titre { font-family: var(--cpn-police-titres); font-size: 30px; font-weight: 500; margin: 0 0 28px; padding-top: 28px; border-top: 1px solid var(--cpn-couleur-filet, #e5e2dc); }
.cpn-magazine__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 28px; }
.cpn-mag-carte { display: flex; flex-direction: column; min-width: 0; }
.cpn-mag-carte__visuel { display: block; position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: #ece9e3; margin-bottom: 16px; }
.cpn-mag-carte__visuel img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; }
.cpn-mag-carte:hover .cpn-mag-carte__visuel img { transform: scale(1.03); }
/* Sans image : aplat sombre, filet intérieur, rubrique en petites capitales. */
.cpn-mag-carte__visuel--vide { background: linear-gradient(135deg, #1c1c1c 0%, #2c2a27 100%); display: flex; align-items: center; justify-content: center; }
.cpn-mag-carte__visuel--vide::before { content: ""; position: absolute; inset: 14px; border: 1px solid rgba(255,255,255,.22); }
.cpn-mag-carte__marque { position: relative; color: #f3efe7; font-family: var(--cpn-police-titres); font-size: 26px; font-style: italic; letter-spacing: .01em; text-align: center; padding: 0 28px; }
.cpn-mag-carte__marque::after { content: ""; display: block; width: 32px; height: 1px; background: rgba(243,239,231,.6); margin: 14px auto 0; }
.cpn-mag-carte__meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0 0 8px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux, #6b6b6b); }
.cpn-mag-carte__rubrique { color: var(--cpn-couleur-texte, #111); font-weight: 600; }
.cpn-mag-carte__titre { font-family: var(--cpn-police-titres); font-size: 23px; font-weight: 500; line-height: 1.2; margin: 0 0 8px; overflow-wrap: anywhere; }
html body .cpn-mag-carte__titre a { color: var(--cpn-couleur-texte, #111); text-decoration: none; }
.cpn-mag-carte__titre a:hover { text-decoration: underline; text-underline-offset: 3px; }
.cpn-mag-carte__extrait { margin: 0; font-size: 15px; line-height: 1.55; color: var(--cpn-couleur-texte-2, #444); }
.cpn-magazine__suite { text-align: center; margin: 48px 0 0; }
@media (max-width: 1100px) {
	.cpn-magazine__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px 24px; }
}
@media (max-width: 767px) {
	.cpn-magazine { margin-top: 48px; }
	.cpn-magazine__grille { grid-template-columns: 1fr; gap: 36px; }
	.cpn-mag-carte__titre { font-size: 21px; }
}


/* Contrôles des cartes isolés du style des boutons du kit Elementor (fond #2A2A28 au survol et au
   focus, qui rendait le signe « − » invisible) : boutons blancs à signe noir, pas de contour après un
   clic, contour visible seulement au clavier. Même règle pour la fermeture des bulles. */
html body .cpn-carte-fond .maplibregl-ctrl-group button,
html body .cpn-carte-fond .maplibregl-popup-close-button {
	background-color: #fff; color: #111; border: 0; border-radius: 0; box-shadow: none; outline: none;
	padding: 0; margin: 0; min-height: 0; font-family: inherit; text-transform: none; letter-spacing: normal;
}
html body .cpn-carte-fond .maplibregl-ctrl-group button { width: 29px; height: 29px; }
html body .cpn-carte-fond .maplibregl-ctrl-group button + button { border-top: 1px solid #ddd; }
html body .cpn-carte-fond .maplibregl-ctrl-group button:is(:hover, :focus, :active),
html body .cpn-carte-fond .maplibregl-popup-close-button:is(:hover, :focus, :active) { background-color: #f2f1ed; color: #111; outline: none; box-shadow: none; }
html body .cpn-carte-fond .maplibregl-ctrl-group button:focus:not(:focus-visible),
html body .cpn-carte-fond .maplibregl-popup-close-button:focus:not(:focus-visible) { background-color: #fff; }
html body .cpn-carte-fond .maplibregl-ctrl-group button:focus-visible,
html body .cpn-carte-fond .maplibregl-popup-close-button:focus-visible { outline: 2px solid #111; outline-offset: -2px; }
html body .cpn-carte-fond .maplibregl-ctrl-group button .maplibregl-ctrl-icon { opacity: 1; }
html body .cpn-carte-fond .maplibregl-popup-close-button { width: 24px; height: 24px; font-size: 18px; line-height: 24px; text-align: center; }


/*
 * Documents internes en page privée (« Stratégie commerciale », 06/10/2026) : contenu WordPress simple,
 * enveloppé dans .cpn-doc, aux couleurs et polices du portail ; tableaux à filets, défilants sur téléphone.
 */
.cpn-doc { max-width: 820px; margin: 0 auto; padding: 8px 0 72px; color: var(--cpn-couleur-texte); font-family: var(--cpn-police-texte); font-size: 16px; line-height: 1.65; }
.cpn-doc__note { margin: 0 0 32px; padding: 12px 16px; background: var(--cpn-couleur-fond-doux); color: var(--cpn-couleur-texte-2); font-size: 14px; }
html body .cpn-doc h2 { margin: 48px 0 14px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 32px; line-height: 1.15; color: var(--cpn-couleur-texte); }
html body .cpn-doc h3 { margin: 28px 0 10px; font-family: var(--cpn-police-texte); font-weight: 600; font-size: 18px; color: var(--cpn-couleur-texte); }
.cpn-doc p { margin: 0 0 14px; }
.cpn-doc ul, .cpn-doc ol { margin: 0 0 18px; padding-left: 22px; }
.cpn-doc li { margin: 0 0 6px; }
.cpn-doc__tableau { overflow-x: auto; margin: 6px 0 22px; }
.cpn-doc table { width: 100%; border-collapse: collapse; font-size: 15px; }
.cpn-doc th, .cpn-doc td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--cpn-couleur-bordure); }
.cpn-doc thead th { border-bottom: 1px solid var(--cpn-couleur-texte); font-weight: 600; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
@media (max-width: 767px) {
	.cpn-doc { padding: 0 0 48px; font-size: 15px; }
	html body .cpn-doc h2 { font-size: 26px; margin-top: 36px; }
	.cpn-doc table { min-width: 520px; }
}
/* Étiquettes de source des documents internes : « Décidé » (plein) et « À valider » (contour). */
.cpn-doc__etiquette { display: inline-block; margin: 0 6px 2px 0; padding: 2px 8px; border: 1px solid var(--cpn-couleur-texte); font-size: 11px; font-weight: 600; letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; vertical-align: 1px; white-space: nowrap; }
.cpn-doc__etiquette--decide { background: var(--cpn-couleur-texte); color: #fff; }
.cpn-doc__etiquette--a-valider { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); border-style: dashed; }
.cpn-doc em { color: var(--cpn-couleur-texte-doux); }
/* Cases à cocher de la feuille de route (07/10/2026) : carré vide = à faire, carré plein coché = fait. */
.cpn-doc li.cpn-doc__case { position: relative; list-style: none; margin-left: -22px; padding-left: 30px; }
.cpn-doc__coche { position: absolute; left: 0; top: .3em; width: 16px; height: 16px; border: 1.5px solid var(--cpn-couleur-texte); background: var(--cpn-couleur-fond); box-sizing: border-box; }
.cpn-doc__case--fait .cpn-doc__coche { background: var(--cpn-couleur-texte); }
.cpn-doc__case--fait .cpn-doc__coche::after { content: ""; position: absolute; left: 4px; top: 0; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.cpn-doc__case--fait { color: var(--cpn-couleur-texte-doux); }

/* Le marché en direct (lot du 07/10/2026) : page complète et extraits (accueil, départements, villes). */
.cpn-marche { display: flex; flex-direction: column; gap: 44px; }
.cpn-marche--page { padding-bottom: 72px; } /* Marges : conteneur .cpn-section. */
.cpn-marche--extrait { gap: 28px; }
.cpn-marche .cpn-titre-page { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 52px; line-height: 1.05; color: var(--cpn-couleur-texte); }
.cpn-marche__chapeau { margin: 14px 0 0; max-width: 720px; font-size: 17px; line-height: 1.55; color: var(--cpn-couleur-texte-doux); }
.cpn-marche__compteurs { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; padding: 0; list-style: none; }
.cpn-marche__compteurs li { padding: 14px 18px; border: 1px solid var(--cpn-couleur-bordure); background: var(--cpn-couleur-fond); font-size: 15px; color: var(--cpn-couleur-texte); }
.cpn-marche__bloc { display: flex; flex-direction: column; gap: 20px; }
.cpn-marche__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 30px; line-height: 1.15; color: var(--cpn-couleur-texte); }
.cpn-marche--extrait .cpn-marche__titre { font-size: 22px; }
.cpn-marche .cpn-cartes { margin: 0; padding: 0; list-style: none; }
.cpn-carte__avant { margin: 2px 0 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche__agences { display: flex; flex-wrap: wrap; gap: 10px 24px; margin: 0; padding: 0; list-style: none; }
.cpn-marche__agences a { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
.cpn-marche__tableau { width: 100%; border-collapse: collapse; font-size: 15px; }
html body .cpn-marche__tableau th, html body .cpn-marche__tableau td { padding: 10px 12px; border: 0; border-bottom: 1px solid var(--cpn-couleur-bordure); background: transparent; text-align: right; font-weight: 400; } /* Sans les bordures verticales du thème. */
html body .cpn-marche__tableau { border: 0; }
.cpn-marche__tableau th:first-child { text-align: left; }
.cpn-marche__tableau thead th { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-marche__tableau .cpn-marche__region th { padding-top: 22px; text-align: left; font-family: var(--cpn-police-titres); font-size: 20px; }
.cpn-marche__tableau a { color: var(--cpn-couleur-texte); }
.cpn-marche__cherche { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.cpn-marche__cherche h3 { margin: 0 0 10px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-marche__cherche ol { margin: 0; padding-left: 20px; line-height: 1.8; }
.cpn-marche__note, .cpn-marche__attente { margin: 0; font-size: 14px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche .cpn-pagination { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 12px 0 0; font-size: 14px; }
.cpn-marche .cpn-pagination a, .cpn-marche .cpn-pagination span { padding: 10px 14px; text-decoration: none; color: var(--cpn-couleur-texte); }
.cpn-marche .cpn-pagination .cpn-pagination__courante { background: var(--cpn-couleur-primaire); color: var(--cpn-couleur-primaire-contraste, #fff); }
.cpn-marche-secteur { padding-top: 0; }
@media (max-width: 767px) {
	.cpn-marche { gap: 32px; }
	.cpn-marche--page { padding-bottom: 48px; }
	.cpn-marche .cpn-titre-page { font-size: 36px; }
	.cpn-marche__titre { font-size: 24px; }
	.cpn-marche__compteurs li { flex: 1 1 100%; }
	.cpn-marche__tableau { font-size: 14px; }
	html body .cpn-marche__tableau th, html body .cpn-marche__tableau td { padding: 8px 6px; }
	.cpn-marche__cherche { grid-template-columns: 1fr; gap: 20px; }
}

/* Pages de ville (lot du 07/10/2026, maquette MAQUETTE-PAGE-VILLE.html). */
.cpn-ville__tete { background: var(--cpn-couleur-fond-doux); }
.cpn-ville__fil, .cpn-ville__tete-in { max-width: var(--cpn-largeur-max); margin: 0 auto; padding-left: var(--cpn-marge-page); padding-right: var(--cpn-marge-page); }
.cpn-ville__fil { padding-top: 24px; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__fil a { color: var(--cpn-couleur-texte-doux); }
.cpn-ville__tete-in { display: flex; flex-wrap: wrap; gap: 48px; align-items: stretch; padding-top: 32px; padding-bottom: 56px; }
.cpn-ville__tete-texte { flex: 1 1 480px; display: flex; flex-direction: column; gap: 20px; justify-content: center; }
.cpn-ville__surtitre, .cpn-ville__etiquette { margin: 0; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 64px; line-height: 1.05; color: var(--cpn-couleur-texte); }
.cpn-ville__chapeau { margin: 0; max-width: 520px; font-size: 17px; line-height: 1.6; color: var(--cpn-couleur-texte); }
.cpn-ville__chiffres { display: flex; flex-wrap: wrap; gap: 32px; margin: 0; padding-top: 8px; }
.cpn-ville__chiffres div { margin: 0; }
.cpn-ville__chiffres dt { font-family: var(--cpn-police-titres); font-size: 40px; font-weight: 500; line-height: 1.1; }
.cpn-ville__chiffres dd { margin: 0; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__boutons { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding-top: 8px; }
html body .cpn-ville a.cpn-bouton { background: var(--cpn-couleur-texte); color: var(--cpn-couleur-fond); border: 1px solid var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-ville a.cpn-bouton:hover, html body .cpn-ville a.cpn-bouton:focus { background: #333; color: var(--cpn-couleur-fond); }
html body .cpn-ville a.cpn-bouton--contour { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); }
html body .cpn-ville a.cpn-bouton--contour:hover, html body .cpn-ville a.cpn-bouton--contour:focus { background: var(--cpn-couleur-fond-doux); color: var(--cpn-couleur-texte); }
html body .cpn-ville__vendre a.cpn-bouton--clair { background: #fff; color: var(--cpn-couleur-texte); border-color: #fff; }
.cpn-ville__inspirations .cpn-brique { margin: 0; }
.cpn-ville__lien { padding: 14px 4px; font-size: 14px; color: var(--cpn-couleur-texte); text-decoration: underline; }
/* Point 41 allumé (0.6.93) : le même lien, en bouton qui ouvre le panneau d'Oriane. */
button.cpn-ville__lien { margin: 0; border: 0; border-radius: 0; background: none; font-family: inherit; line-height: inherit; cursor: pointer; }
.cpn-ville__photo { flex: 1 1 420px; margin: 0; position: relative; min-height: 380px; }
.cpn-ville__photo img { width: 100%; height: 100%; min-height: 380px; object-fit: cover; display: block; }
.cpn-ville__photo figcaption { position: absolute; left: 12px; bottom: 12px; padding: 4px 8px; font-size: 11px; background: rgba(255,255,255,.85); color: var(--cpn-couleur-texte); }
.cpn-ville__onglets { display: flex; width: fit-content; border: 1px solid var(--cpn-couleur-texte); margin-top: 12px; }
html body .cpn-ville__onglets button { border: 0; border-radius: 0; padding: 10px 18px; font: inherit; font-size: 13px; background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); cursor: pointer; }
html body .cpn-ville__onglets button[aria-selected="true"] { background: var(--cpn-couleur-texte); color: var(--cpn-couleur-fond); }
.cpn-ville .cpn-cartes { margin: 0; padding: 0; list-style: none; }
.cpn-ville__colonnes { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.cpn-ville__colonne { border-top: 2px solid var(--cpn-couleur-texte); padding-top: 18px; display: flex; flex-direction: column; gap: 14px; }
.cpn-ville__compte { margin: 0; font-family: var(--cpn-police-titres); font-size: 36px; line-height: 1; }
.cpn-ville__compte span { font-family: var(--cpn-police-texte); font-size: 14px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__colonne ul, .cpn-ville__barres, .cpn-ville__agences-grille, .cpn-ville__conseillers ul, .cpn-ville__voisines ul { margin: 0; padding: 0; list-style: none; }
.cpn-ville__colonne li { font-size: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--cpn-couleur-bordure); margin-bottom: 10px; }
.cpn-ville__colonne li:last-child { border-bottom: 0; margin-bottom: 0; }
.cpn-ville__colonne a, .cpn-ville__conseillers a { color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-ville__colonne s { color: var(--cpn-couleur-texte-doux); }
.cpn-ville__bande { background: var(--cpn-couleur-fond-doux); margin-top: var(--cpn-marge-section); }
.cpn-ville__bande-in { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 64px var(--cpn-marge-page); display: flex; flex-wrap: wrap; gap: 48px; }
.cpn-ville__ici, .cpn-ville__prix { flex: 1 1 420px; display: flex; flex-direction: column; gap: 18px; }
.cpn-ville__note { margin: 0; font-size: 14px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__barres li { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.cpn-ville__barre-texte { display: flex; justify-content: space-between; font-size: 14px; }
.cpn-ville__barre-texte span + span { color: var(--cpn-couleur-texte-doux); }
.cpn-ville__barre { display: block; height: 8px; background: var(--cpn-couleur-bordure); }
.cpn-ville__barre span { display: block; height: 8px; background: var(--cpn-couleur-texte); }
.cpn-ville__prix-grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.cpn-ville__prix-grille div { background: var(--cpn-couleur-fond); padding: 24px; display: flex; flex-direction: column; }
.cpn-ville__prix-grille strong { font-family: var(--cpn-police-titres); font-size: 34px; font-weight: 500; }
.cpn-ville__agences-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; } /* Une agence seule ne s'étire pas sur toute la largeur. */
.cpn-ville__agence { display: flex; flex-direction: column; gap: 12px; padding: 24px; border: 1px solid var(--cpn-couleur-bordure); color: var(--cpn-couleur-texte); text-decoration: none; height: 100%; box-sizing: border-box; }
.cpn-ville__agence-logo { width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--cpn-couleur-fond-doux); overflow: hidden; }
.cpn-ville__agence-logo img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.cpn-ville__agence-nom { font-family: var(--cpn-police-titres); font-size: 24px; font-weight: 500; }
.cpn-ville__agence-biens { font-size: 14px; }
.cpn-ville__conseillers { margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--cpn-couleur-bordure); }
html body .cpn-ville__conseillers h3, html body .cpn-ville__petit-titre { margin: 0 0 12px; font-family: var(--cpn-police-texte); font-size: 15px; font-weight: 600; line-height: 1.4; }
.cpn-ville__conseillers ul { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 14px; }
/* Pages de ville, Inspirations (maquette v2) : sans image, thème, titre, deux lignes d'extrait. */
.cpn-ville__articles { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
.cpn-ville__articles a { display: flex; flex-direction: column; gap: 8px; padding-top: 18px; border-top: 1px solid var(--cpn-couleur-bordure); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-ville__article-theme { font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__article-titre { font-family: var(--cpn-police-titres); font-size: 22px; font-weight: 500; line-height: 1.2; }
.cpn-ville__article-texte { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 14px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-ville__articles a:hover .cpn-ville__article-titre { text-decoration: underline; }
/* Annuaire : conseillers des réseaux de mandataires, à part des agences (07/10/2026) ; repliés sans filtre. */
.cpn-annuaire__conseillers { margin: 48px 0; }
.cpn-annuaire__reseau { margin: 16px 0 8px 26px; font-weight: 600; } /* 0.7.5.48 : « Réseau Cimm Mandataires : N biens, N conseillers ». */
.cpn-annuaire__conseillers summary { display: grid; grid-template-columns: 14px minmax(0, 1fr); overflow-wrap: break-word; align-items: baseline; gap: 4px 12px; cursor: pointer; list-style: none; }
.cpn-annuaire__conseillers summary span { grid-column: 2; }
.cpn-annuaire__conseillers summary::-webkit-details-marker { display: none; }
.cpn-annuaire__conseillers summary::before { content: "+"; font-size: 18px; width: 14px; }
.cpn-annuaire__conseillers[open] summary::before { content: "–"; }
.cpn-annuaire__conseillers summary h2 { margin: 0; }
.cpn-annuaire__conseillers summary span { font-size: 14px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__pros .cpn-appel-pros { margin-top: 0; }
.cpn-ville__conseillers--seuls { margin-top: 0; padding-top: 0; border-top: 0; }
.cpn-annuaire__conseillers ul { display: flex; flex-wrap: wrap; gap: 8px 24px; margin: 20px 0 0; padding: 0; list-style: none; font-size: 14px; }
.cpn-annuaire__conseillers a { color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-annuaire__conseillers a:hover { text-decoration: underline; }
.cpn-ville__vendre-ligne { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; margin: 0; padding: 16px 0 0; border-top: 1px solid var(--cpn-couleur-bordure); font-size: 15px; color: var(--cpn-couleur-texte); }
.cpn-ville__vendre-ligne span { flex: 1 1 320px; }
.cpn-ville__vendre { background: var(--cpn-couleur-texte); color: #fff; margin-top: var(--cpn-marge-section); }
.cpn-ville__vendre-in { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 56px var(--cpn-marge-page); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; }
.cpn-ville__vendre h2 { margin: 0 0 8px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 40px; color: #fff; }
.cpn-ville__vendre p { margin: 0; color: #d6d3cc; }
.cpn-ville__voisines ul { display: flex; flex-wrap: wrap; gap: 10px; padding-bottom: 72px; }
.cpn-ville__voisines a { display: inline-block; padding: 8px 14px; border: 1px solid var(--cpn-couleur-bordure); color: var(--cpn-couleur-texte); text-decoration: none; font-size: 14px; }
.cpn-ville-lien-page { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 16px var(--cpn-marge-page) 0; font-size: 14px; }
.cpn-ville__voir-tout { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.cpn-villes-departement ul { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.cpn-villes-departement a { display: inline-block; padding: 8px 14px; border: 1px solid var(--cpn-couleur-bordure); color: var(--cpn-couleur-texte); text-decoration: none; font-size: 14px; }
.cpn-listes-lieu ul { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.cpn-listes-lieu li { display: inline-flex; align-items: baseline; gap: 8px; padding: 8px 14px; border: 1px solid var(--cpn-couleur-bordure); font-size: 14px; }
.cpn-listes-lieu a { color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-listes-lieu li span { color: var(--cpn-couleur-texte); opacity: .7; font-size: 13px; }
@media (max-width: 767px) {
	.cpn-ville__titre { font-size: 40px; }
	.cpn-ville__tete-in { gap: 28px; padding-bottom: 40px; }
	.cpn-ville__tete-texte, .cpn-ville__photo, .cpn-ville__ici, .cpn-ville__prix { flex-basis: 100%; }
	.cpn-ville__photo, .cpn-ville__photo img { min-height: 240px; }
	.cpn-ville__chiffres { gap: 20px; }
	.cpn-ville__chiffres dt { font-size: 32px; }
	.cpn-ville__bande-in { padding: 44px var(--cpn-marge-page); gap: 36px; }
	.cpn-ville__vendre h2 { font-size: 30px; }
	.cpn-ville__agences-grille, .cpn-ville__colonnes { grid-template-columns: 1fr; }
}

/* Accueil v2 (maquette MAQUETTE-ACCUEIL-BLOCS.html, 07/10/2026) : coins arrondis et liserés gris validés par Armand pour ces blocs. */
.cpn-reperes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: 24px; align-items: stretch; } /* Pavés de même hauteur (Armand, 07/10). */
.cpn-pave { display: flex; flex-direction: column; padding: 32px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; background: var(--cpn-couleur-fond); }
.cpn-pave__tete { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 12px; }
html body .cpn-pave__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 30px; line-height: 1.15; color: var(--cpn-couleur-texte); }
html body .cpn-pave__lien { font-size: 13px; color: var(--cpn-couleur-texte); white-space: nowrap; text-decoration: underline; }
.cpn-pave__ligne { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 0; border-top: 1px solid var(--cpn-couleur-filet); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-pave__ligne > span { display: flex; flex-direction: column; gap: 4px; }
.cpn-pave__ligne-titre { font-size: 16px; font-weight: 500; }
.cpn-pave__ligne-texte { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-pave__ligne svg { flex: none; }
.cpn-pave__ligne:hover .cpn-pave__ligne-titre { text-decoration: underline; }
html body @media (max-width: 767px) {
	.cpn-pave, 	html body .cpn-pave__titre { font-size: 26px; }
	html body }
/* Index « L'immobilier par ville » (/immobilier/). */
.cpn-villes-index { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page) 80px; }
.cpn-villes-index .cpn-fil { padding-left: 0; padding-right: 0; }
.cpn-villes-index .cpn-titre-page { margin: 24px 0 12px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 52px; line-height: 1.05; }
.cpn-villes-index__chapeau { max-width: 640px; margin: 0 0 40px; font-size: 16px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-villes-index__regions { column-count: 4; column-gap: 24px; } /* Colonnes maçonnées : sans trou, lues colonne par colonne. */
.cpn-villes-index__region { display: inline-block; width: 100%; box-sizing: border-box; margin: 0 0 24px; padding: 28px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid; }
.cpn-villes-index__carte { margin: 0 0 40px; }
@media (max-width: 1199px) { .cpn-villes-index__regions { column-count: 2; } }
@media (max-width: 767px) { .cpn-villes-index__regions { column-count: 1; } }
html body .cpn-villes-index__region h2 { margin: 0 0 12px; font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 500; line-height: 1.15; }
.cpn-villes-index__region ul { margin: 0; padding: 0; list-style: none; }
.cpn-villes-index__dep { padding: 10px 0; border-top: 1px solid var(--cpn-couleur-filet); font-size: 15px; }
.cpn-villes-index__dep > a { font-weight: 500; color: var(--cpn-couleur-texte); }
html body .cpn-villes-index__dep--discret > a { font-weight: 400; color: var(--cpn-couleur-texte-doux); } /* Moins de 5 annonces. */
.cpn-villes-index__region span { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-villes-index__region .cpn-villes-index__villes { margin-top: 6px; padding-left: 14px; font-size: 14px; line-height: 1.9; }
.cpn-villes-index__villes a { color: var(--cpn-couleur-texte-2); }
@media (max-width: 767px) { .cpn-villes-index .cpn-titre-page { font-size: 36px; } }

/* Pages de ville v2 (maquettes MAQUETTE-VILLE-V2-*.html, 07/10/2026). */
/* « Vivre à » en trois parties, à côté de la carte (point 34, 0.6.88 ; remplace « en bref »). Coins droits. */
.cpn-ville__vivre { display: flex; flex-wrap: wrap; gap: 48px; align-items: stretch; }
.cpn-ville__vivre-texte { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.cpn-ville__vivre-texte .cpn-section__titre { margin: 0; }
.cpn-ville__vivre-faits, .cpn-ville__vivre-texte-ia { margin: 0; font-size: 16px; line-height: 1.7; color: var(--cpn-couleur-texte-2); }
.cpn-ville__vivre-portail { display: flex; flex-direction: column; gap: 10px; padding-top: 18px; border-top: 1px solid var(--cpn-couleur-bordure); }
html body .cpn-ville__vivre-portail h3.cpn-ville__etiquette { margin: 0; font-family: var(--cpn-police-texte); font-size: 12px; font-weight: 500; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__vivre-chiffres { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 15px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-ville__vivre-chiffres strong { font-weight: 600; color: var(--cpn-couleur-texte); }
.cpn-ville__vivre-prix strong { white-space: nowrap; } /* « 5 221 €/m² » jamais coupé. */
.cpn-ville__vivre-texte-ia { padding-top: 18px; border-top: 1px solid var(--cpn-couleur-bordure); }
.cpn-ville__vivre-carte { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.cpn-ville__carte { min-height: 340px; flex: 1; background: var(--cpn-couleur-fond-doux); }
.cpn-ville__carte-note { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin: 0; font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__carte-note a { font-size: 14px; color: var(--cpn-couleur-texte); }
.cpn-ville__offre, .cpn-ville__prix-m2 { flex: 1 1 340px; display: flex; flex-direction: column; gap: 18px; }
.cpn-ville__ici { flex: 1 1 340px; }
.cpn-ville__offre .cpn-ville__etiquette { margin: 4px 0 -6px; }
.cpn-ville__barres a { display: flex; flex-direction: column; gap: 6px; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-ville__barres a:hover .cpn-ville__barre-texte span:first-child { text-decoration: underline; }
.cpn-ville__prix-m2-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.cpn-ville__prix-m2-grille div { display: flex; flex-direction: column; gap: 4px; padding: 20px; border-radius: 12px; background: var(--cpn-couleur-fond); }
.cpn-ville__prix-m2-grille span { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__prix-m2-grille span + strong + span { font-size: 12px; }
.cpn-ville__prix-m2-grille strong { font-family: var(--cpn-police-titres); font-size: 30px; font-weight: 500; }
.cpn-ville__marche-repli { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; text-align: right; }
@media (max-width: 767px) {
	.cpn-ville__carte { min-height: 280px; }
	.cpn-ville__marche-repli { align-items: flex-start; text-align: left; }
}

/* Pages de ville : agences installées ailleurs qui ont des biens dans la commune (correction du 07/10/2026). */
.cpn-ville__ailleurs { margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--cpn-couleur-bordure); }
.cpn-ville__ailleurs--seules { margin-top: 0; padding-top: 0; border-top: 0; }
html body .cpn-ville__ailleurs h3 { margin: 0 0 14px; font-family: var(--cpn-police-texte); font-size: 15px; font-weight: 600; }
.cpn-ville__ailleurs ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 12px 24px; margin: 0; padding: 0; list-style: none; }
.cpn-ville__ailleurs a { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-top: 1px solid var(--cpn-couleur-filet); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-ville__ailleurs-logo { flex: none; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: var(--cpn-couleur-fond-doux); overflow: hidden; }
.cpn-ville__ailleurs-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.cpn-ville__ailleurs-logo .cpn-initiales { font-size: 12px; }
.cpn-ville__ailleurs-texte { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cpn-ville__ailleurs-nom { font-size: 15px; }
.cpn-ville__ailleurs-lieu { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-ville__ailleurs-n { font-size: 13px; white-space: nowrap; color: var(--cpn-couleur-texte-2); }
.cpn-ville__ailleurs a:hover .cpn-ville__ailleurs-nom { text-decoration: underline; }
/* Page « Le marché en direct » v2 (maquette MAQUETTE-MARCHE-EN-DIRECT.html, 07/10/2026) : coins arrondis et liserés gris validés. */
.cpn-marche-v2 { display: flex; flex-direction: column; gap: 24px; }
.cpn-marche-v2__entete { display: flex; flex-direction: column; gap: 10px; padding-bottom: 8px; }
.cpn-marche-v2__maj { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--cpn-couleur-texte-2); }
.cpn-marche-v2__maj span { width: 8px; height: 8px; border-radius: 4px; background: #2F7D4F; }
.cpn-marche-v2 .cpn-titre-page { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 60px; line-height: 1.05; color: var(--cpn-couleur-texte); }
.cpn-marche-v2__chapeau { max-width: 640px; margin: 0 0 18px; font-size: 16px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-marche-v2__cles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; }
.cpn-marche-v2__cle { display: flex; flex-direction: column; gap: 6px; padding: 24px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-marche-v2__cle strong { font-family: var(--cpn-police-titres); font-size: 44px; font-weight: 500; line-height: 1; }
.cpn-marche-v2__cle span { font-size: 14px; }
.cpn-marche-v2__cle small { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__cle:hover span { text-decoration: underline; }
.cpn-marche-v2__deux { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.cpn-marche-v2__deux--egal { align-items: stretch; }
.cpn-marche-v2__deux--egal > .cpn-marche-v2__pave { flex: 1 1 480px; }
.cpn-marche-v2__pave { padding: 32px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; display: flex; flex-direction: column; gap: 14px; }
html body .cpn-marche-v2__pave h2 { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 28px; line-height: 1.15; color: var(--cpn-couleur-texte); }
.cpn-marche-v2__fil { flex: 3 1 560px; min-width: 0; gap: 8px; }
.cpn-marche-v2__principal { flex: 3 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 24px; }
.cpn-marche-v2__principal > .cpn-marche-v2__fil { flex: none; }
html body .cpn-marche-v2__fil h2 { font-size: 32px; }
.cpn-marche-v2__fil-tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 8px; }
.cpn-marche-v2__fil-tete p { max-width: 460px; margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--cpn-couleur-texte-2); }
.cpn-marche-v2__pastilles { display: flex; flex-wrap: wrap; gap: 8px; }
.cpn-marche-v2__pastilles a { padding: 8px 14px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 999px; font-size: 13px; color: var(--cpn-couleur-texte); text-decoration: none; background: var(--cpn-couleur-fond); }
.cpn-marche-v2__pastilles a[aria-current] { background: var(--cpn-couleur-texte); border-color: var(--cpn-couleur-texte); color: #fff; }
.cpn-marche-v2__mouvements { margin: 0; padding: 0; list-style: none; }
.cpn-marche-v2__mouvements a { display: flex; align-items: center; gap: 16px; padding: 14px 0; border-top: 1px solid var(--cpn-couleur-filet); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-marche-v2__vignette { flex: none; width: 72px; height: 54px; overflow: hidden; border-radius: 6px; background: var(--cpn-couleur-bordure); display: flex; align-items: center; justify-content: center; }
.cpn-marche-v2__vignette img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cpn-marche-v2__vignette .cpn-initiales { font-size: 13px; }
.cpn-marche-v2__mvt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cpn-marche-v2__mvt-type { font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__mvt-titre { font-size: 15px; }
.cpn-marche-v2__mvt-lieu { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__mvt-prix { font-size: 15px; font-weight: 500; text-align: right; white-space: nowrap; }
.cpn-marche-v2__mvt-prix s { display: block; font-size: 12px; font-weight: 400; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__mouvements a:hover .cpn-marche-v2__mvt-titre { text-decoration: underline; }
.cpn-marche-v2__plus { align-self: flex-start; margin-top: 8px; font-size: 14px; }
.cpn-marche-v2__cote { flex: 2 1 380px; display: flex; flex-direction: column; gap: 24px; }
.cpn-marche-v2__barres { display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; list-style: none; }
.cpn-marche-v2__barres a { display: flex; flex-direction: column; gap: 6px; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-marche-v2__barre-texte { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; }
.cpn-marche-v2__barre-texte span + span { color: var(--cpn-couleur-texte-doux); white-space: nowrap; }
.cpn-marche-v2__barre { display: block; height: 8px; border-radius: 4px; background: var(--cpn-couleur-filet); }
.cpn-marche-v2__barre span { display: block; height: 8px; border-radius: 4px; background: var(--cpn-couleur-texte); }
.cpn-marche-v2__barres a:hover .cpn-marche-v2__barre-texte span:first-child { text-decoration: underline; }
.cpn-marche-v2__etiquette { margin: 6px 0 0; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__note { margin: 0; font-size: 13px; line-height: 1.5; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__prix { display: flex; justify-content: space-between; align-items: baseline; padding: 12px 0; border-top: 1px solid var(--cpn-couleur-filet); font-size: 14px; }
.cpn-marche-v2__prix > span:last-child { display: flex; flex-direction: column; align-items: flex-end; }
.cpn-marche-v2__prix strong { font-family: var(--cpn-police-titres); font-size: 24px; font-weight: 500; }
.cpn-marche-v2__prix small { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__liste { margin: 0; padding: 0; list-style: none; font-size: 14px; }
.cpn-marche-v2__liste li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid var(--cpn-couleur-filet); }
.cpn-marche-v2__liste li span + span { color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__carte { position: relative; min-height: 420px; border-radius: 8px; background: var(--cpn-couleur-fond-doux); display: flex; align-items: center; justify-content: center; padding: 16px; }
.cpn-marche-v2__carte svg { width: 100%; height: auto; max-height: 520px; }
.cpn-marche-v2__carte path[data-dep] { stroke: #FFFFFF; stroke-width: .8; }
.cpn-marche-v2__carte path[role="link"]:hover, .cpn-marche-v2__carte path[role="link"]:focus { stroke: #111111; stroke-width: 1.4; outline: none; }
.cpn-marche-v2__bulle { position: absolute; z-index: 2; padding: 6px 10px; border-radius: 6px; background: #111111; color: #fff; font-size: 12px; white-space: nowrap; pointer-events: none; }
.cpn-marche-v2__legende { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--cpn-couleur-texte-2); }
.cpn-marche-v2__degrade { width: 120px; height: 8px; border-radius: 4px; background: linear-gradient(90deg, #E4E2DC, #111111); }
.cpn-marche-v2__ligne { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 13px 0; border-top: 1px solid var(--cpn-couleur-filet); color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-marche-v2__ligne > span:first-child { display: flex; flex-direction: column; gap: 2px; }
.cpn-marche-v2__ligne-titre { font-size: 15px; font-weight: 500; }
.cpn-marche-v2__ligne-texte { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__ligne-n { display: flex; align-items: center; gap: 12px; font-size: 14px; white-space: nowrap; }
.cpn-marche-v2__ligne:hover .cpn-marche-v2__ligne-titre { text-decoration: underline; }
.cpn-marche-v2__tous { padding: 24px 32px; }
.cpn-marche-v2__tous summary { cursor: pointer; font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 500; }
.cpn-marche-v2__regions { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; margin-top: 20px; font-size: 14px; }
html body .cpn-marche-v2__regions h3 { margin: 0 0 8px; font-family: var(--cpn-police-texte); font-size: 14px; font-weight: 600; }
.cpn-marche-v2__regions ul { margin: 0; padding: 0; list-style: none; line-height: 1.9; color: var(--cpn-couleur-texte-2); }
.cpn-marche-v2__regions a { color: var(--cpn-couleur-texte); }
@media (max-width: 767px) {
	.cpn-marche-v2 .cpn-titre-page { font-size: 38px; }
	.cpn-marche-v2__pave { padding: 24px; }
	.cpn-marche-v2__cle strong { font-size: 36px; }
	.cpn-marche-v2__carte { min-height: 300px; }
	.cpn-marche-v2__deux > * { flex-basis: 100%; min-width: 0; }
	.cpn-marche-v2__mouvements a { flex-wrap: wrap; row-gap: 4px; }
	.cpn-marche-v2__mvt { flex: 1 1 calc(100% - 88px); }
	.cpn-marche-v2__mvt-prix { flex-basis: 100%; padding-left: 88px; text-align: left; }
}

/* Pages « Prix demandés au m² » (maquette MAQUETTE-PRIX-M2.html, 07/10/2026) : coins arrondis et liserés gris validés. */
.cpn-prix-page { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page) 80px; display: flex; flex-direction: column; gap: 24px; }
.cpn-prix-page .cpn-fil { padding-left: 0; padding-right: 0; }
.cpn-prix-page__tete { display: flex; flex-direction: column; gap: 18px; }
.cpn-prix-page .cpn-titre-page { margin: 8px 0 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 56px; line-height: 1.05; }
.cpn-prix-page__tete p { max-width: 720px; margin: 0; font-size: 15px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-prix-page__paves { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 16px; }
.cpn-prix-page__pave { display: flex; flex-direction: column; gap: 6px; padding: 28px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; }
.cpn-prix-page__pave > span:first-child { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-prix-page__pave strong { font-family: var(--cpn-police-titres); font-size: 48px; font-weight: 500; line-height: 1; }
.cpn-prix-page__pave > span { font-size: 13px; color: var(--cpn-couleur-texte-2); }
.cpn-prix-page__pave a { margin-top: 8px; font-size: 13px; }
.cpn-prix-page__repli { margin-top: 8px; font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-prix-page__vide { margin: 0; font-size: 15px; color: var(--cpn-couleur-texte-2); }
.cpn-prix-page__deux { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.cpn-prix-page__deux--egal { align-items: stretch; }
.cpn-prix-page__deux--egal > * { flex: 1 1 480px; }
.cpn-prix-page__detail { flex: 3 1 560px; }
.cpn-prix-page__cote { flex: 2 1 360px; display: flex; flex-direction: column; gap: 24px; }
.cpn-prix-page__boite { padding: 32px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; display: flex; flex-direction: column; gap: 6px; }
html body .cpn-prix-page__boite h2, html body .cpn-prix-page__methode h2 { margin: 0 0 6px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 28px; line-height: 1.15; }
html body .cpn-prix-page__detail h2 { font-size: 32px; }
.cpn-prix-page__note { margin: 0 0 10px; font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-prix-page__tableau { overflow-x: auto; }
.cpn-prix-page__tableau table { width: 100%; min-width: 480px; border-collapse: collapse; font-size: 14px; }
.cpn-prix-page__tableau thead th { padding: 10px 8px 10px 0; text-align: left; font-size: 12px; font-weight: 500; letter-spacing: 1px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-prix-page__tableau tbody th, .cpn-prix-page__tableau td { padding: 14px 8px 14px 0; text-align: left; font-weight: 400; border-top: 1px solid var(--cpn-couleur-filet); }
.cpn-prix-page__tableau a { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
html body .cpn-prix-page__tableau table { border: 0; }
html body .cpn-prix-page__tableau th, html body .cpn-prix-page__tableau td, html body .cpn-prix-page__tableau tbody > tr:nth-child(odd) > td, html body .cpn-prix-page__tableau tbody > tr:nth-child(odd) > th, html body .cpn-marche-v2__prix-dep tbody > tr:nth-child(odd) > td, html body .cpn-marche-v2__prix-dep tbody > tr:nth-child(odd) > th { border: 0; background: transparent; } /* Sans la grille ni les lignes grisées du thème. */
html body .cpn-prix-page__tableau tbody th, html body .cpn-prix-page__tableau tbody td { border-top: 1px solid var(--cpn-couleur-filet); }
.cpn-prix-page__deux > * { min-width: 0; }
.cpn-marche-v2__prix-dep { overflow-x: auto; }
.cpn-marche-v2__prix-dep table { width: 100%; border-collapse: collapse; font-size: 14px; }
html body .cpn-marche-v2__prix-dep table { border: 0; }
html body .cpn-marche-v2__prix-dep th, html body .cpn-marche-v2__prix-dep td { padding: 10px 8px 10px 0; border: 0; background: transparent; text-align: right; font-weight: 400; white-space: nowrap; }
html body .cpn-marche-v2__prix-dep tbody th, html body .cpn-marche-v2__prix-dep tbody td { border-top: 1px solid var(--cpn-couleur-filet); }
html body .cpn-marche-v2__prix-dep th:first-child { text-align: left; white-space: normal; }
.cpn-marche-v2__prix-dep thead th { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-marche-v2__prix-dep a { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; } /* Le tableau défile dans sa boîte au lieu d'élargir la page sur mobile. */
.cpn-prix-page .cpn-fil { margin: 0; max-width: none; }
.cpn-prix-page__ligne { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid var(--cpn-couleur-filet); font-size: 14px; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-prix-page__ligne:hover span:first-child { text-decoration: underline; }
.cpn-prix-page__attente { margin: 0; padding: 16px; border-radius: 8px; background: var(--cpn-couleur-fond-doux); font-size: 13px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-prix-page__methode { padding: 32px 40px; border-radius: 12px; background: var(--cpn-couleur-fond-doux); display: flex; flex-direction: column; gap: 10px; }
.cpn-prix-page__methode p { max-width: 860px; margin: 0; font-size: 14px; line-height: 1.7; color: var(--cpn-couleur-texte-2); }
.cpn-prix-page__tout { justify-content: center; gap: 12px; }
.cpn-prix-page__tout p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
@media (max-width: 767px) {
	.cpn-prix-page .cpn-titre-page { font-size: 36px; }
	.cpn-prix-page__boite, .cpn-prix-page__methode, .cpn-prix-page__pave { padding: 24px; }
	.cpn-prix-page__pave strong { font-size: 40px; }
}

.cpn-recherche__prix { margin: 8px 0 0; font-size: 14px; }
.cpn-articles--liens { margin: 16px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
/* À la une (maquettes MAQUETTE-A-LA-UNE*.html, 07/10/2026) : coins arrondis et liserés gris validés. */
.cpn-une__tete { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 20px; }
.cpn-une__tete .cpn-section__titre { margin: 0 0 6px; }
.cpn-une__phrase { font-size: 13px; color: var(--cpn-couleur-texte-doux); }
.cpn-une__nav { display: flex; align-items: center; gap: 12px; }
.cpn-une__compte { font-size: 13px; color: var(--cpn-couleur-texte-2); min-width: 36px; text-align: right; }
html body .cpn-une__fleche:hover, html body .cpn-une__fleche:focus { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); border-color: var(--cpn-couleur-bordure); }
html body .cpn-une__fleche--suiv:hover, html body .cpn-une__fleche--suiv:focus { background: var(--cpn-couleur-texte); color: #fff; border-color: var(--cpn-couleur-texte); }
html body .cpn-une__fleche { width: 44px; min-height: 0; line-height: 0; box-shadow: none; border-style: solid; height: 44px; padding: 0; border-radius: 22px; border: 1px solid var(--cpn-couleur-bordure); background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); display: flex; align-items: center; justify-content: center; cursor: pointer; }
html body .cpn-une__fleche--suiv { border-color: var(--cpn-couleur-texte); background: var(--cpn-couleur-texte); color: #fff; }
.cpn-une__fleche:focus-visible, .cpn-une__repere:focus-visible, .cpn-une__diapos:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 3px; }
.cpn-une__diapo { display: flex; flex-wrap: wrap; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; overflow: hidden; }
.cpn-une__diapo[hidden] { display: none; }
.cpn-une__photo { flex: 2 1 560px; min-height: 460px; position: relative; display: block; background: var(--cpn-couleur-emplacement); overflow: hidden; }
html body .cpn-une__photo img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.cpn-une__avant { position: absolute; left: 16px; top: 16px; padding: 7px 12px; border-radius: 999px; background: #fff; color: #111; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; }
.cpn-une__nb { position: absolute; right: 16px; bottom: 16px; padding: 6px 10px; border-radius: 999px; background: rgba(17, 17, 17, .75); color: #fff; font-size: 12px; }
.cpn-une__panneau { flex: 1 1 340px; padding: 40px; display: flex; flex-direction: column; justify-content: center; gap: 18px; background: var(--cpn-couleur-fond); }
.cpn-une__panneau p { margin: 0; }
.cpn-une__sur { font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body .cpn-une__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 38px; line-height: 1.1; color: var(--cpn-couleur-texte); }
.cpn-une__lieu { font-size: 15px; color: var(--cpn-couleur-texte-2); }
.cpn-une__prix { font-family: var(--cpn-police-titres); font-size: 34px; font-weight: 500; }
.cpn-une__carac { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--cpn-couleur-bordure); border-bottom: 1px solid var(--cpn-couleur-bordure); }
.cpn-une__carac div { padding: 14px 0; }
.cpn-une__carac dt { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-une__carac dd { margin: 2px 0 0; font-size: 16px; }
.cpn-une__agence { display: flex; align-items: center; gap: 12px; }
.cpn-une__logo { width: 40px; height: 40px; flex: none; border-radius: 20px; background: var(--cpn-couleur-fond-doux); display: flex; align-items: center; justify-content: center; overflow: hidden; font-size: 12px; color: var(--cpn-couleur-texte-2); }
.cpn-une__logo img { width: 100%; height: 100%; object-fit: contain; }
.cpn-une__agence-texte { display: flex; flex-direction: column; font-size: 14px; }
.cpn-une__agence-lieu { font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-une__voir { text-align: center; }
/* « Voir le bien » : texte clair au repos et au survol, sinon la couleur des liens du kit Elementor (#111) le rend invisible
   sur fond noir hors des briques et des pages de ville (pages de département, communes, recherches ; 17/10). */
html body .cpn-une a.cpn-une__voir, html body .cpn-une a.cpn-une__voir:hover, html body .cpn-une a.cpn-une__voir:focus { color: var(--cpn-couleur-primaire-contraste, #fff); }
.cpn-une__reperes { display: flex; justify-content: center; gap: 8px; margin-top: 18px; }
html body .cpn-une__repere { min-height: 0; min-width: 0; line-height: 0; box-shadow: none; width: 12px; height: 4px; padding: 0; border: 0; border-radius: 2px; background: var(--cpn-couleur-emplacement); cursor: pointer; }
html body .cpn-une__repere[aria-current="true"] { width: 24px; background: var(--cpn-couleur-texte); }
.cpn-une__tout { margin: 16px 0 0; text-align: center; font-size: 14px; }
@media (max-width: 767px) {
	.cpn-une__photo { min-height: 260px; flex-basis: 100%; }
	.cpn-une__panneau { padding: 24px; gap: 14px; }
	html body .cpn-une__titre { font-size: 28px; }
	.cpn-une__prix { font-size: 28px; }
	.cpn-une__tete { flex-wrap: wrap; align-items: flex-start; }
}
/* Page « Les biens à la une ». */
.cpn-une-page { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page) 80px; }
.cpn-une-page .cpn-fil { padding-left: 0; padding-right: 0; }
.cpn-une-page .cpn-titre-page { margin: 24px 0 14px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 56px; line-height: 1.05; }
.cpn-une-page__chapeau { max-width: 680px; margin: 0; font-size: 15px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-une-page__filtres { display: flex; flex-wrap: wrap; gap: 10px; margin: 22px 0 28px; }
.cpn-une-page__filtres label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-une-page__filtres select { font-family: inherit; font-size: 14px; padding: 10px 12px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 8px; background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); text-transform: none; letter-spacing: 0; }
.cpn-une-page__nombre { margin: 0 0 16px; font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-une-page__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
.cpn-une-carte { display: flex; flex-direction: column; height: 100%; border: 1px solid var(--cpn-couleur-bordure); border-radius: 12px; overflow: hidden; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-une-carte__photo { position: relative; aspect-ratio: 3 / 2; background: var(--cpn-couleur-emplacement); overflow: hidden; }
.cpn-une-carte__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpn-une-carte__avant { position: absolute; left: 12px; top: 12px; padding: 6px 10px; border-radius: 999px; background: #fff; color: #111; font-size: 10px; letter-spacing: 1.5px; text-transform: uppercase; }
.cpn-une-carte__texte { padding: 20px; display: flex; flex-direction: column; gap: 6px; }
.cpn-une-carte__sur { font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-une-carte__prix { font-family: var(--cpn-police-titres); font-size: 24px; font-weight: 500; }
.cpn-une-carte__ligne { font-size: 14px; color: var(--cpn-couleur-texte-2); }
.cpn-une-carte__agence { margin-top: 6px; font-size: 12px; color: var(--cpn-couleur-texte-doux); }
.cpn-une-carte:hover .cpn-une-carte__prix { text-decoration: underline; }
.cpn-une-page__pages { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; font-size: 14px; }
.cpn-une-page__pages a, .cpn-une-page__pages span { min-width: 36px; padding: 8px 12px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 8px; text-align: center; color: var(--cpn-couleur-texte); text-decoration: none; }
.cpn-une-page__pages span[aria-current] { background: var(--cpn-couleur-texte); border-color: var(--cpn-couleur-texte); color: #fff; }
@media (max-width: 767px) { .cpn-une-page .cpn-titre-page { font-size: 36px; } }

/* Page d'un article Inspirations : présentation du point 30 d'Armand (0.6.87, maquette du 08/10/2026), qui remplace
   celle de la 0.6.82. Colonnes centrées : en-tête 760 px ; photo, bloc du professionnel et articles voisins 1040 px ;
   « L'essentiel » et texte 680 px ; citation 860 px ; « À lire aussi » en bande pleine largeur. Coins droits partout. */
@font-face { /* Vraie italique de la citation seule (Cormorant Garamond v4.002, SIL OFL : assets/fonts/OFL-Cormorant.txt) :
	nom à part, pour qu'aucun autre texte en italique du site ne la télécharge (relecture 0.6.87, m1). */
	font-family: 'Cormorant Garamond Citation';
	font-style: italic;
	font-weight: 500;
	font-display: swap;
	src: url(../fonts/CormorantGaramond-MediumItalic-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
.cpn-article { --cpn-article-filet: #e4e2dc; --cpn-article-fond: #f4f3ef; --cpn-article-corps: #2b2a27; max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page) 80px; display: flex; flex-direction: column; gap: 32px; }
html body .cpn-article .cpn-fil, html body .cpn-article__tete { width: 100%; max-width: 760px; margin-left: auto; margin-right: auto; box-sizing: border-box; }
html body .cpn-article .cpn-fil { margin-top: 0; margin-bottom: -8px; padding-left: 0; padding-right: 0; }
html body .cpn-article__image, html body .cpn-article__pro, html body .cpn-article__suite, html body .cpn-article__aussi-in { width: 100%; max-width: 1040px; margin-left: auto; margin-right: auto; box-sizing: border-box; }
html body .cpn-article__essentiel, html body .cpn-article__texte, html body .cpn-article__retour { width: 100%; max-width: 680px; margin-left: auto; margin-right: auto; box-sizing: border-box; }
/* Blocs du bas : 64 px entre deux blocs et sous le texte (écart de 32 px de la colonne + 32 px), 40 px sur téléphone. */
html body .cpn-article__pro, html body .cpn-article__aussi, html body .cpn-article__suite, html body .cpn-article__retour { margin-top: 32px; margin-bottom: 0; }
/* En-tête : ligne grise en petites capitales, titre Cormorant 58 px serré, chapô 21 px #3A3935. */
.cpn-article__tete { display: flex; flex-direction: column; gap: 16px; }
html body p.cpn-article__sur { margin: 0; font-family: var(--cpn-police-texte); font-size: 12px; line-height: 1.5; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body h1.cpn-article__titre, html body .cpn-article .cpn-article__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 58px; line-height: 1.04; letter-spacing: 0; color: var(--cpn-couleur-texte); }
html body p.cpn-article__chapeau { margin: 0; font-family: var(--cpn-police-texte); font-size: 21px; line-height: 1.55; color: #3a3935; }
/* Photo principale : 1040 x 560 px, recadrage centré (même proportion en dessous de 1040 px) ; crédit en 12 px. */
html body .cpn-article__image { margin-top: 8px; margin-bottom: 0; }
html body .cpn-article__image img { display: block; width: 100%; max-width: none; height: auto; aspect-ratio: 1040 / 560; object-fit: cover; object-position: center; border-radius: 0; }
html body .cpn-article__image figcaption { margin: 10px 0 0; font-family: var(--cpn-police-texte); font-size: 12px; line-height: 1.4; color: var(--cpn-couleur-texte-doux); }
/* « L'essentiel » : fond #F4F3EF, trois lignes courtes. */
html body .cpn-article__essentiel { margin-top: 16px; margin-bottom: 0; padding: 28px 32px; background: var(--cpn-article-fond); }
html body p.cpn-article__essentiel-titre { margin: 0 0 12px; font-family: var(--cpn-police-texte); font-size: 12px; font-weight: 600; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte); }
html body .cpn-article__essentiel ul { margin: 0; padding: 0; list-style: none; }
html body .cpn-article__essentiel li { position: relative; margin: 0; padding: 0 0 0 20px; font-family: var(--cpn-police-texte); font-size: 16px; line-height: 1.6; color: var(--cpn-article-corps); }
html body .cpn-article__essentiel li + li { margin-top: 8px; }
.cpn-article__essentiel li::before { content: ""; position: absolute; left: 0; top: .7em; width: 6px; height: 6px; background: var(--cpn-couleur-texte); }
/* Texte : 680 px, corps 18 px #2B2A27, interligne 1,78 ; intertitres Cormorant 34 px ; gras en noir. */
html body .cpn-article__texte { font-family: var(--cpn-police-texte); font-size: 18px; line-height: 1.78; color: var(--cpn-article-corps); }
html body .cpn-article__texte p { margin: 0 0 24px; font-size: inherit; line-height: inherit; color: inherit; }
html body .cpn-article__texte h2 { margin: 48px 0 16px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 34px; line-height: 1.2; letter-spacing: 0; color: var(--cpn-couleur-texte); }
html body .cpn-article__texte > :first-child { margin-top: 0; }
html body .cpn-article__texte > :last-child, html body .cpn-article__texte > :last-child > :last-child { margin-bottom: 0; } /* Écart visible sous le texte = écart entre les blocs (relecture 0.6.82, M3). */
html body .cpn-article__texte ul, html body .cpn-article__texte ol { margin: 0 0 24px; padding-left: 22px; }
html body .cpn-article__texte li { margin: 0 0 10px; }
html body .cpn-article__texte strong, html body .cpn-article__texte b { color: var(--cpn-couleur-texte); font-weight: 600; }
/* Lettrine Cormorant sur la première lettre du premier paragraphe (classe posée par le serveur : jamais sur un
   paragraphe qui commence par une image ou un lien), sur trois lignes. */
html body .cpn-article__texte p.cpn-article__lettrine { display: flow-root; } /* Paragraphe court : la lettrine reste dans son paragraphe, l'intertitre suivant n'est pas décalé (relecture 0.6.87, M2). */
html body .cpn-article__texte p.cpn-article__lettrine::first-letter { float: left; margin: 9px 12px 0 -2px; font-family: var(--cpn-police-titres); font-style: normal; font-weight: 500; font-size: 110px; line-height: .74; color: var(--cpn-couleur-texte); }
/* Citation : 860 px, centrée sur le texte, Cormorant italique 34 px, filet noir au-dessus, filet gris en dessous. */
html body .cpn-article__texte .cpn-article__citation { --cpn-citation-l: min(860px, calc(100vw - 2 * var(--cpn-marge-page))); box-sizing: border-box; width: var(--cpn-citation-l); max-width: none; margin: 48px 0 48px calc((100% - var(--cpn-citation-l)) / 2); padding: 36px 0 32px; border-top: 1px solid var(--cpn-couleur-texte); border-bottom: 1px solid var(--cpn-article-filet); border-left: 0; border-right: 0; background: none; text-align: center; }
html body .cpn-article__texte > .cpn-article__citation:last-child { margin-bottom: 0; } /* Citation en fin de texte : même écart sous le texte. */
html body .cpn-article__citation blockquote { margin: 0; padding: 0; border: 0; background: none; quotes: none; }
html body .cpn-article__citation blockquote::before, html body .cpn-article__citation blockquote::after { content: none; }
html body .cpn-article__texte .cpn-article__citation p { margin: 0; font-family: 'Cormorant Garamond Citation', var(--cpn-police-titres); font-style: italic; font-weight: 500; font-size: 34px; line-height: 1.3; color: var(--cpn-couleur-texte); text-wrap: balance; }
/* Bloc du professionnel : 1040 px, deux colonnes sur fond #F4F3EF (photo d'une réalisation à gauche) ; sans photo,
   une seule colonne. Ni cadre ni pastille. */
html body .cpn-article__pro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: 0; background: var(--cpn-article-fond); border: 0; border-radius: 0; }
html body .cpn-article__pro--seul { grid-template-columns: minmax(0, 1fr); }
html body .cpn-article__pro-photo { position: relative; min-height: 420px; margin: 0; overflow: hidden; background: var(--cpn-couleur-emplacement); }
html body .cpn-article__pro-photo img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; margin: 0; object-fit: cover; object-position: center; border-radius: 0; }
/* Crédit de la photo du pro sur un bandeau sombre : blanc à au moins 4,5:1 même sur une photo blanche (relecture 0.6.87, M3). */
html body .cpn-article__pro-photo figcaption { position: absolute; left: 0; bottom: 0; z-index: 1; max-width: 100%; margin: 0; padding: 4px 10px; box-sizing: border-box; background: rgba(17, 17, 17, .75); font-family: var(--cpn-police-texte); font-size: 12px; line-height: 1.4; color: #fff; }
.cpn-article__pro-corps { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 12px; padding: 56px; box-sizing: border-box; min-width: 0; }
html body h2.cpn-article__pro-sur { margin: 0; font-family: var(--cpn-police-texte); font-size: 12px; font-weight: 600; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body p.cpn-article__pro-nom { margin: 4px 0 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 34px; line-height: 1.15; color: var(--cpn-couleur-texte); }
html body p.cpn-article__pro-metier { margin: 0; font-family: var(--cpn-police-texte); font-size: 14px; line-height: 1.5; color: var(--cpn-couleur-texte-doux); }
html body .cpn-article__pro-texte { margin-top: 4px; font-family: var(--cpn-police-texte); font-size: 16px; line-height: 1.7; color: var(--cpn-article-corps); }
html body .cpn-article__pro-texte p { margin: 0 0 12px; }
html body .cpn-article__pro-texte > :last-child { margin-bottom: 0; }
html body .cpn-article__pro--seul .cpn-article__pro-texte { max-width: 36em; } /* Une colonne : environ 70 caractères par ligne (relecture 0.6.87, m8). */
html body a.cpn-article__pro-bouton { margin-top: 12px; display: inline-flex; align-items: center; padding: 16px 24px; border: 1px solid var(--cpn-couleur-texte); border-radius: 0; background: var(--cpn-couleur-texte); color: #fff; font-family: var(--cpn-police-texte); font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
html body a.cpn-article__pro-bouton:hover, html body a.cpn-article__pro-bouton:focus { background: #2a2a28; border-color: #2a2a28; color: #fff; }
html body a.cpn-article__pro-bouton:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 3px; }
/* « À lire aussi » : bande pleine largeur fond #F4F3EF ; titre Cormorant 38 px et « Toutes les Inspirations » à
   droite ; trois cartes : photo 4:3, rubrique et date en petites capitales, titre Figtree 18 px gras. */
html:has(.cpn-article__aussi) { overflow-x: clip; } /* Barre de défilement classique : 100vw la compte, rien ne dépasse. */
html body .cpn-article__aussi { width: auto; max-width: none; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); padding: 72px var(--cpn-marge-page) 80px; background: var(--cpn-article-fond); box-sizing: border-box; }
html body .cpn-article__aussi .cpn-section__tete { margin-bottom: 32px; align-items: baseline; }
html body .cpn-article__aussi .cpn-section__titre { margin: 0; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 38px; line-height: 1.1; color: var(--cpn-couleur-texte); }
html body .cpn-article__aussi a.cpn-lien-souligne { flex-shrink: 0; font-family: var(--cpn-police-texte); font-size: 14px; color: var(--cpn-couleur-texte); }
html body ul.cpn-article__aussi-liste { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; margin: 0; padding: 0; list-style: none; }
html body ul.cpn-article__aussi-liste--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } /* Moins de 3 cartes : pas de colonne vide. */
html body li.cpn-article__carte { position: relative; display: flex; flex-direction: column; margin: 0; padding: 0; }
.cpn-article__carte-photo { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--cpn-couleur-emplacement); }
.cpn-article__carte-photo picture { display: block; width: 100%; height: 100%; }
html body .cpn-article__carte-photo img { display: block; width: 100%; height: 100%; max-width: none; margin: 0; object-fit: cover; object-position: center; border-radius: 0; }
html body p.cpn-article__carte-sur { margin: 16px 0 8px; font-family: var(--cpn-police-texte); font-size: 12px; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body h3.cpn-article__carte-titre { margin: 0; font-family: var(--cpn-police-texte); font-weight: 600; font-size: 18px; line-height: 1.4; letter-spacing: normal; text-transform: none; color: var(--cpn-couleur-texte); }
/* Un seul lien par carte (le titre), étendu à toute la carte ; souligné au survol et au focus clavier. */
html body .cpn-article__carte-titre a, html body .cpn-article__carte-titre a:link, html body .cpn-article__carte-titre a:visited { font: inherit; color: var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-article__carte-titre a::after { content: ""; position: absolute; inset: 0; }
html body .cpn-article__carte-titre a:hover, html body .cpn-article__carte-titre a:focus-visible { color: var(--cpn-couleur-texte); text-decoration: underline; text-underline-offset: 3px; }
html body .cpn-article__carte-titre a:focus-visible { outline: 2px solid var(--cpn-couleur-texte); outline-offset: 3px; }
/* Articles précédent et suivant : côte à côte sur 1040 px, séparés par un filet vertical ; titres Cormorant 22 px. */
html body .cpn-article__suite { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0; padding: 0; border: 0; }
html body a.cpn-article__voisin { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 8px 40px 8px 0; border: 0; border-radius: 0; text-decoration: none; color: var(--cpn-couleur-texte); }
html body a.cpn-article__voisin--suiv { grid-column: 2; align-items: flex-end; padding: 8px 0 8px 40px; text-align: right; }
html body .cpn-article__suite--deux a.cpn-article__voisin--suiv { border-left: 1px solid var(--cpn-article-filet); }
html body .cpn-article__voisin-sur { font-family: var(--cpn-police-texte); font-size: 12px; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
html body .cpn-article__voisin-titre { font-family: var(--cpn-police-titres); font-weight: 500; font-size: 22px; line-height: 1.25; color: var(--cpn-couleur-texte); }
html body a.cpn-article__voisin:hover .cpn-article__voisin-titre, html body a.cpn-article__voisin:focus-visible .cpn-article__voisin-titre { text-decoration: underline; text-underline-offset: 3px; }
html body .cpn-article__retour { font-size: 14px; }
@media (max-width: 1024px) {
	.cpn-article__pro-corps { padding: 40px; }
}
@media (max-width: 767px) {
	html body h1.cpn-article__titre, html body .cpn-article .cpn-article__titre { font-size: 36px; line-height: 1.08; }
	html body p.cpn-article__chapeau { font-size: 19px; }
	/* Photo principale bord à bord, en 4:3. */
	html body .cpn-article__image { width: auto; max-width: none; margin-left: calc(-1 * var(--cpn-marge-page)); margin-right: calc(-1 * var(--cpn-marge-page)); }
	html body .cpn-article__image img { aspect-ratio: 4 / 3; }
	html body .cpn-article__image figcaption { padding: 0 var(--cpn-marge-page); }
	html body .cpn-article__essentiel { padding: 24px 20px; }
	html body .cpn-article__texte h2 { margin-top: 40px; font-size: 28px; }
	html body .cpn-article__texte p.cpn-article__lettrine::first-letter { font-size: 96px; margin-top: 8px; }
	html body .cpn-article__texte .cpn-article__citation { margin-top: 40px; margin-bottom: 40px; padding: 28px 0 24px; }
	html body .cpn-article__texte .cpn-article__citation p { font-size: 27px; }
	/* Blocs empilés : 40 px entre deux blocs. */
	html body .cpn-article__pro, html body .cpn-article__aussi, html body .cpn-article__suite, html body .cpn-article__retour { margin-top: 8px; }
	html body .cpn-article__pro { grid-template-columns: minmax(0, 1fr); }
	html body .cpn-article__pro-photo { min-height: 0; aspect-ratio: 4 / 3; }
	.cpn-article__pro-corps { padding: 28px 20px 32px; }
	html body p.cpn-article__pro-nom { font-size: 30px; }
	html body .cpn-article__aussi { padding: 48px var(--cpn-marge-page) 56px; }
	html body .cpn-article__aussi .cpn-section__titre { font-size: 30px; }
	html body ul.cpn-article__aussi-liste { grid-template-columns: minmax(0, 1fr); }
	html body .cpn-article__suite { grid-template-columns: minmax(0, 1fr); }
	html body .cpn-article__voisin-vide { display: none; }
	html body a.cpn-article__voisin, html body a.cpn-article__voisin--suiv { grid-column: auto; align-items: flex-start; padding: 20px 0; text-align: left; }
	html body .cpn-article__suite--deux a.cpn-article__voisin--suiv { border-left: 0; border-top: 1px solid var(--cpn-article-filet); }
}
/* Grande carte d'Inspirations (accueil, rubrique) : l'image remplit toute la carte quelle que soit sa proportion. */
html body .cpn-article-une > img.cpn-article-une__image, html body .cpn-brique .cpn-article-une .cpn-article-une__image { position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; min-width: 100%; min-height: 100%; max-width: none; max-height: none; object-fit: cover; object-position: center; margin: 0; }
/* Fil du marché : même aspect pour tous les titres, visités ou non ; soulignés seulement au survol (retour d'Armand du 07/10). */
html body .cpn-marche-v2__mouvements a, html body .cpn-marche-v2__mouvements a:visited, html body .cpn-marche-v2__mouvements a:link { color: var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-marche-v2__mouvements a * { text-decoration: none; }
html body .cpn-marche-v2__mouvements a:hover .cpn-marche-v2__mvt strong, html body .cpn-marche-v2__mouvements a:focus-visible .cpn-marche-v2__mvt strong, html body .cpn-marche-v2__mouvements a:hover .cpn-marche-v2__mvt-titre, html body .cpn-marche-v2__mouvements a:focus-visible .cpn-marche-v2__mvt-titre { text-decoration: underline; text-underline-offset: 3px; }
.cpn-bien-entete__ville { display: inline-block; margin-top: 6px; font-size: 14px; }

/* Page « Plan du site » (/plan-du-site/, lot Navigation 0.6.73) : rubriques en cases à bordure grise, puis
   départements et villes par région en colonnes maçonnées (comme « L'immobilier en France »). Liens de 44 px. */
.cpn-plan { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: 0 var(--cpn-marge-page) 80px; box-sizing: border-box; }
.cpn-plan .cpn-fil { padding-left: 0; padding-right: 0; }
.cpn-plan .cpn-titre-page { margin: 24px 0 12px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 52px; line-height: 1.05; }
.cpn-plan__chapeau { max-width: 680px; margin: 0 0 40px; font-size: 16px; line-height: 1.6; color: var(--cpn-couleur-texte-2); }
.cpn-plan__rubriques { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px; margin: 0 0 56px; }
.cpn-plan__rubrique, .cpn-plan__region { box-sizing: border-box; padding: 24px 28px; border: 1px solid var(--cpn-couleur-bordure); border-radius: 0; } /* Coins droits : la charte réserve les arrondis à Oriane. */
html body .cpn-plan h3 a.cpn-plan__region-lien { display: inline-flex; align-items: center; min-height: 44px; font: inherit; color: var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-plan h3 a.cpn-plan__region-lien:hover { text-decoration: underline; text-underline-offset: 4px; }
html body .cpn-plan h2, html body .cpn-plan h3 { margin: 0 0 8px; font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 500; line-height: 1.15; }
html body .cpn-plan__geo > h2 { margin: 0 0 24px; font-size: 36px; }
.cpn-plan ul { margin: 0; padding: 0; list-style: none; }
html body .cpn-plan li > a, html body .cpn-plan .cpn-plan__prix a { display: inline-flex; align-items: center; min-height: 44px; font-size: 15px; color: var(--cpn-couleur-texte); text-decoration: none; }
html body .cpn-plan li > a:hover, html body .cpn-plan .cpn-plan__prix a:hover { text-decoration: underline; text-underline-offset: 3px; }
.cpn-plan__regions { column-count: 3; column-gap: 24px; }
.cpn-plan__region { display: inline-block; width: 100%; margin: 0 0 24px; break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid; }
.cpn-plan__dep { border-top: 1px solid var(--cpn-couleur-filet); }
.cpn-plan__dep > a { font-weight: 500; }
html body .cpn-plan .cpn-plan__prix a { margin-left: 10px; font-size: 13px; color: var(--cpn-couleur-texte-doux); text-decoration: underline; text-underline-offset: 3px; }
.cpn-plan .cpn-plan__villes { padding-left: 14px; margin-bottom: 8px; }
html body .cpn-plan__villes li > a { font-size: 14px; color: var(--cpn-couleur-texte-2); }
@media (max-width: 1199px) { .cpn-plan__regions { column-count: 2; } }
@media (max-width: 767px) {
	.cpn-plan__regions { column-count: 1; }
	.cpn-plan .cpn-titre-page { font-size: 36px; }
}

/* Bandes photo (point 20, 0.6.83 ; point 31, 0.6.89) : une par page, jamais en haut. Photo décorative, calque noir
   (45 % par défaut, réglé par emplacement : --cpn-bande-calque), photo placée selon l'élément à montrer
   (--cpn-bande-position ; sur téléphone, recadrage propre et --cpn-bande-position-mobile), accroche blanche centrée, ligne et bouton blanc plein sans arrondi facultatifs. Bord à bord
   (--pleine) ou largeur du contenu (--contenu, annuaire des agences). 420 px de haut, 360 px sous 768 px. */
.cpn-bande { position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box; height: 420px; margin-top: var(--cpn-marge-section, 64px); overflow: hidden; background: #3a3a37; color: #fff; text-align: center; border-radius: 0; }
.cpn-bande--pleine { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.cpn-bande--contenu { margin-top: 56px; }
html:has(.cpn-bande--pleine) { overflow-x: clip; } /* Barre de défilement classique : 100vw la compte, rien ne dépasse. */
html body .cpn-bande img.cpn-bande__photo { position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; margin: 0; object-fit: cover; object-position: var(--cpn-bande-position, 50% 50%); border-radius: 0; }
.cpn-bande::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, var(--cpn-bande-calque, .45)); }
.cpn-bande picture.cpn-bande__cadre { display: contents; } /* Recadrage du téléphone : l'image reste placée sur la bande. */
.cpn-bande__in { position: relative; z-index: 1; box-sizing: border-box; width: 100%; max-width: 820px; padding: 0 var(--cpn-marge-page, 20px); }
/* Sélecteurs plus forts que ceux du contenu des pages sans Elementor (« .page-content h2 », « .page-content p » : page
   Vendre). */
html body section.cpn-bande .cpn-bande__in h2.cpn-bande__titre, html body section.cpn-bande .cpn-bande__in h1.cpn-bande__titre { margin: 0 0 14px; font-family: var(--cpn-police-titres); font-weight: 500; font-size: 48px; line-height: 1.12; letter-spacing: 0; color: #fff; text-wrap: balance; text-shadow: 0 1px 3px rgba(0, 0, 0, .3); }
html body section.cpn-bande .cpn-bande__in p.cpn-bande__texte { margin: 0 0 28px; font-family: var(--cpn-police-texte); font-size: 18px; font-weight: 500; line-height: 1.5; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
html body .cpn-bande .cpn-bande__bouton { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-height: 48px; padding: 12px 28px; background: #fff; color: #111; border: 0; border-radius: 0; box-shadow: none; font-family: var(--cpn-police-texte); font-size: 16px; font-weight: 600; line-height: 1.2; letter-spacing: 0; text-transform: none; text-decoration: none; cursor: pointer; }
html body .cpn-bande .cpn-bande__bouton:hover, html body .cpn-bande .cpn-bande__bouton:focus { background: #ecebe6; color: #111; }
html body .cpn-bande .cpn-bande__bouton:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
html body .cpn-bande .cpn-bande__bouton[hidden] { display: none; } /* Point 41 : masqué tant que le panneau d'Oriane est ouvert. */
html body section.cpn-bande .cpn-bande__in h2.cpn-bande__titre:last-child, html body section.cpn-bande .cpn-bande__in h1.cpn-bande__titre:last-child, html body section.cpn-bande .cpn-bande__in p.cpn-bande__texte:last-child { margin-bottom: 0; } /* Sans ligne ni bouton. */
@media (max-width: 767px) {
	.cpn-bande { height: 360px; }
	html body .cpn-bande img.cpn-bande__photo { object-position: var(--cpn-bande-position-mobile, var(--cpn-bande-position, 50% 50%)); } /* Point de cadrage du téléphone. */
	.cpn-bande--contenu { margin-top: 40px; }
	html body section.cpn-bande .cpn-bande__in h2.cpn-bande__titre, html body section.cpn-bande .cpn-bande__in h1.cpn-bande__titre { font-size: 34px; }
	html body section.cpn-bande .cpn-bande__in p.cpn-bande__texte { font-size: 16px; margin-bottom: 24px; }
	/* Élément demandé en bas du recadrage du téléphone (église de l'accueil, salon de Pour les agences) : texte en haut. */
	.cpn-bande--texte-haut { align-items: flex-start; padding-top: 16px; }
}
/* Recadrage du téléphone servi aussi à la tablette (Maison & travaux : les deux fauteuils) : son point de cadrage. */
@media (min-width: 768px) and (max-width: 1023px) {
	html body .cpn-bande.cpn-bande--tablette img.cpn-bande__photo { object-position: var(--cpn-bande-position-mobile, 50% 50%); }
}
.cpn-bande + .cpn-partenaires__grille--suite { margin-top: var(--cpn-marge-section, 64px); }
/* Page de département : bande dans la liste des biens ; panneau d'Oriane ouvert à côté : largeur de la liste. */
/* Bande dans la grille des biens (après la 6e carte dans le HTML) : toute une rangée ; les cartes suivantes remontent
   compléter la rangée au-dessus, la bande tombe sur une rangée entière à 4, 3, 2 ou 1 colonne. */
/* Page de département : bande après la liste et la pagination, avant « À la une » (17/10), un espace de section au-dessus. */
.cpn-resultats > .cpn-bande { margin-top: var(--cpn-marge-section, 64px); }
/* Accueil : bande d'Oriane en bas de page, après « Recherches populaires » (17/10). L'espace au-dessus est celui du bas
   de la section (88, 64 ou 48 px), sans marge en plus ; le pied de page suit la bande sans espace. */
.cpn-section--bas + .cpn-bande[data-cpn-bande="accueil"] { margin-top: 0; }
body:has(.cpn-section--bas + .cpn-bande[data-cpn-bande="accueil"]:last-child) .elementor-location-footer { margin-top: 0; }
/* « À la une » après une liste (pages de département, communes, recherches) : même espace de section au-dessus, avec ou
   sans pagination ni bande (88, 64 ou 48 px selon la largeur, comme sur les pages de ville ; 17/10). */
.cpn-recherche > .cpn-une { margin-top: var(--cpn-marge-section, 64px); }
.cpn-oriane-cote[data-etat="ouvert"] .cpn-bande--pleine { margin-left: 0; margin-right: 0; }

/* Lettre mensuelle (point 28, 0.6.86) : formulaire d'inscription dans le pied de page (fond sombre) et en bas des pages
   de ville (fond clair). Coins droits, champs et bouton de 48 px, suggestions du champ secteur sous le champ. */
.cpn-lettre { box-sizing: border-box; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 16px 48px; align-items: start; }
.cpn-lettre *, .cpn-lettre *::before, .cpn-lettre *::after { box-sizing: border-box; }
html body .cpn-lettre p { margin: 0; }
html body .cpn-lettre .cpn-lettre__titre { font-family: var(--cpn-police-titres); font-size: 26px; font-weight: 400; line-height: 1.15; margin: 0 0 8px; }
.cpn-lettre__chapeau { font-size: 14px; line-height: 1.6; }
.cpn-lettre__ligne { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: 12px; align-items: end; }
.cpn-lettre__champ { display: flex; flex-direction: column; gap: 6px; min-width: 0; position: relative; }
.cpn-lettre__aide { margin: 8px 0 0; font-size: 13px; line-height: 1.4; }
.cpn-lettre__libelle { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
html body .cpn-lettre input[type="email"], html body .cpn-lettre input[type="text"] { width: 100%; min-height: 48px; margin: 0; padding: 12px 14px; font: inherit; font-size: 15px; border-radius: 0; box-shadow: none; }
html body .cpn-lettre button.cpn-lettre__bouton { min-height: 48px; padding: 0 24px; border-radius: 0; font: inherit; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; white-space: nowrap; }
html body .cpn-lettre button.cpn-lettre__bouton:disabled { opacity: .6; cursor: default; }
.cpn-lettre__accord { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0 0; font-size: 13px; line-height: 1.5; cursor: pointer; }
html body .cpn-lettre .cpn-lettre__accord input { width: 18px; height: 18px; margin: 1px 0 0; flex-shrink: 0; border-radius: 0; accent-color: currentColor; }
html body .cpn-lettre .cpn-lettre__accord a { text-decoration: underline; text-underline-offset: 3px; }
.cpn-lettre__piege { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; } /* Champ piège : hors de l'écran, jamais rempli par un visiteur. */
.cpn-lettre__message { min-height: 1.5em; margin: 10px 0 0 !important; font-size: 14px; line-height: 1.5; }
.cpn-lettre--envoye .cpn-lettre__ligne, .cpn-lettre--envoye .cpn-lettre__accord, .cpn-lettre--envoye .cpn-lettre__aide { display: none; }
.cpn-lettre__suggestions { position: absolute; top: 100%; left: 0; right: 0; z-index: 30; max-height: 300px; overflow: auto; background: #fff; color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); border-top: 0; text-align: left; }
.cpn-lettre__groupe { padding: 8px 14px 4px; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--cpn-couleur-texte-doux); }
.cpn-lettre__option { display: flex; align-items: center; min-height: 44px; padding: 8px 14px; cursor: pointer; font-size: 15px; }
.cpn-lettre__option[aria-selected="true"], .cpn-lettre__option:hover { background: var(--cpn-couleur-fond-doux); }
html body .cpn-lettre [aria-invalid="true"] { outline: 2px solid var(--cpn-couleur-erreur); outline-offset: 1px; }
/* Pied de page (fond sombre). */
.cpn-pied__lettre { margin: 40px 0 0; border-top: 1px solid #3a3935; padding: 36px 0 0; }
.cpn-lettre--pied { color: #d9d6ce; }
html body .cpn-lettre--pied .cpn-lettre__titre { color: #fff; }
.cpn-lettre--pied .cpn-lettre__libelle { color: #b8b4aa; }
html body .cpn-lettre--pied input[type="email"], html body .cpn-lettre--pied input[type="text"] { background: transparent; color: #fff; border: 1px solid #8a877f; }
html body .cpn-lettre--pied input::placeholder { color: #8a877f; }
html body .cpn-lettre--pied button.cpn-lettre__bouton { background: transparent; color: #fff; border: 1px solid #fff; }
html body .cpn-lettre--pied button.cpn-lettre__bouton:hover, html body .cpn-lettre--pied button.cpn-lettre__bouton:focus { background: #fff; color: var(--cpn-couleur-texte); }
html body .cpn-lettre--pied .cpn-lettre__accord a { color: #fff; }
.cpn-lettre--pied .cpn-lettre__message { color: #fff; }
.cpn-lettre--pied .cpn-lettre__message--erreur { color: #ffb4a8; }
/* Bas des pages de ville (fond clair). */
.cpn-ville__lettre { max-width: var(--cpn-largeur-max); margin: 0 auto; padding: var(--cpn-marge-section) var(--cpn-marge-page) var(--cpn-marge-section); box-sizing: border-box; }
.cpn-ville__lettre-in { border-top: 1px solid var(--cpn-couleur-filet); padding-top: 40px; }
.cpn-lettre--ville { color: var(--cpn-couleur-texte); }
.cpn-lettre--ville .cpn-lettre__chapeau, .cpn-lettre--ville .cpn-lettre__libelle { color: var(--cpn-couleur-texte-doux); }
html body .cpn-lettre--ville input[type="email"], html body .cpn-lettre--ville input[type="text"] { background: var(--cpn-couleur-fond); color: var(--cpn-couleur-texte); border: 1px solid var(--cpn-couleur-texte); }
html body .cpn-lettre--ville button.cpn-lettre__bouton { background: var(--cpn-couleur-texte); color: var(--cpn-couleur-fond); border: 1px solid var(--cpn-couleur-texte); }
html body .cpn-lettre--ville button.cpn-lettre__bouton:hover, html body .cpn-lettre--ville button.cpn-lettre__bouton:focus { background: #333; }
html body .cpn-lettre--ville .cpn-lettre__accord a { color: var(--cpn-couleur-texte); }
.cpn-lettre--ville .cpn-lettre__message--erreur { color: var(--cpn-couleur-erreur); }
@media (max-width: 1023px) {
	.cpn-lettre { grid-template-columns: minmax(0, 1fr); gap: 16px; }
}
@media (max-width: 640px) {
	.cpn-lettre__ligne { grid-template-columns: minmax(0, 1fr); }
	html body .cpn-lettre button.cpn-lettre__bouton { width: 100%; }
	html body .cpn-lettre .cpn-lettre__titre { font-size: 24px; }
}
/* Complément d'Armand (12/10, C6) : un numéro de téléphone en lien se touche facilement sur un téléphone (cible d'au
   moins 24 px de haut, WCAG 2.2 2.5.8), sans changer la hauteur de la ligne (marges négatives). Liens sans classe
   seulement : les boutons « Appeler » gardent leur style. */
:where(a[href^="tel:"]:not([class])) { display: inline-block; padding: 6px 0; margin: -6px 0; }
