/* Fichier généré par bin/assembler.sh, ne pas le modifier : éditer assets/css/src/. */
/* ==========================================================================
   Jetons de la charte Fontan Immobilier
   Toute couleur, taille, rayon, ombre ou durée du thème passe par ces variables.
   La palette est recopiée dans theme.json pour l'éditeur : garder les deux alignés.
   ========================================================================== */

@font-face { font-family: "Poppins"; font-style: normal; font-weight: 300; font-display: swap; src: url("../fonts/poppins-latin-300.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/poppins-latin-400.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/poppins-latin-500.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/poppins-latin-600.woff2") format("woff2"); }

/* Police de repli calée sur les métriques de Poppins : le texte ne saute pas quand la vraie police arrive. */
@font-face {
	font-family: "Poppins Repli";
	src: local("Arial");
	size-adjust: 112.16%;
	ascent-override: 93.62%;
	descent-override: 31.21%;
	line-gap-override: 8.92%;
}

:root {
	/* Bleus : l'encre des titres et du pied de page, puis des gris teintés de bleu pour le texte et les filets. */
	--f-encre: #0e2239;
	--f-encre-survol: #1a3657;
	--f-texte: #2b3e55;
	--f-texte-doux: #4d6079;
	--f-libelle: #5f7289;
	--f-indice: #93a3b8;
	--f-filet-fonce: #b9c6d6;
	--f-filet: #dde5ee;
	--f-fond-doux: #f1f5f9;
	--f-blanc: #fff;

	/* Bleu d'accent : surtitres, liens, en-têtes de tableau, sélection. */
	--f-accent: #1e5aa8;
	--f-accent-fonce: #174782;
	--f-accent-clair: #e4edf8;

	/* Jaune du logo FNAIM, relevé sur le logo (#FFE033). En aplat uniquement, avec du texte en encre :
	   en texte sur fond blanc, il est illisible. Réservé à l'estimation, aux surtitres sur fond sombre
	   et aux mises en avant. */
	--f-jaune: #ffe033;
	--f-jaune-fonce: #ebca27;
	--f-jaune-clair: #fff6c2;

	/* Couleurs fonctionnelles. Seule exception au « pas de rouge » de la charte : les évolutions de prix
	   et de population, en vert quand elles montent, en rouge quand elles baissent (choix de Lucas). */
	--f-hausse: #17804a;
	--f-hausse-clair: #e1f3e8;
	--f-baisse: #c62f25;
	--f-baisse-clair: #fce8e6;
	--f-favori: var(--f-accent);
	--f-focus: #1e5aa8;

	/* Typographie */
	--f-police: "Poppins", "Poppins Repli", system-ui, sans-serif;
	--f-taille-hero: clamp(2.5rem, 1.75rem + 3vw, 4rem);
	--f-taille-titre: clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);
	--f-taille-corps: 1rem;
	--f-taille-petit: .875rem;
	--f-taille-mini: .8125rem;
	--f-taille-surtitre: .75rem;
	--f-taille-libelle: .6875rem;
	--f-espacement-surtitre: .24em;
	--f-espacement-libelle: .14em;
	--f-espacement-bouton: .12em;

	/* Formes */
	--f-rayon-xs: 2px;
	--f-rayon-s: 4px;
	--f-rayon-m: 6px;
	--f-rayon-l: 10px; /* cartes de biens */
	--f-rayon-pilule: 999px;
	--f-ombre-carte: 0 1px 2px rgba(20, 24, 31, .06), 0 8px 24px rgba(20, 24, 31, .06);
	--f-ombre-barre: 0 12px 40px rgba(20, 24, 31, .25);
	--f-ombre-panneau: 0 24px 60px rgba(20, 24, 31, .22), 0 2px 6px rgba(20, 24, 31, .08);

	/* Mouvement : rapide et précis, jamais de rebond */
	--f-duree: 180ms;
	--f-courbe: cubic-bezier(.2, 0, 0, 1);

	/* Grille */
	--f-largeur: 1200px;
	--f-largeur-texte: 760px;
	--f-goutiere: clamp(1rem, 4vw, 3rem);
	--f-section: clamp(3.5rem, 8vw, 6.875rem);
	--f-hauteur-entete: 64px;
}

@media (min-width: 1100px) {
	:root { --f-hauteur-entete: 80px; }
}
/* ==========================================================================
   Base : remise à zéro, éléments HTML, accessibilité
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc(var(--f-hauteur-entete) + 1rem);
}

body {
	margin: 0;
	background: var(--f-blanc);
	color: var(--f-encre);
	font-family: var(--f-police);
	font-size: var(--f-taille-corps);
	font-weight: 400;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
	margin: 0;
	color: var(--f-encre);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -.01em;
	text-wrap: balance;
}

p, ul, ol, dl, dd, figure, blockquote { margin: 0; }
p { text-wrap: pretty; }

a {
	color: inherit;
	text-decoration: none;
	transition: color var(--f-duree) var(--f-courbe);
}

img, svg, video, canvas { display: block; max-width: 100%; }
img { height: auto; }

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }

code {
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: .875em;
}

:focus-visible {
	outline: 2px solid var(--f-focus);
	outline-offset: 2px;
}

::selection { background: var(--f-accent-clair); color: var(--f-encre); }

.icone {
	width: 1.375rem;
	height: 1.375rem;
	flex: none;
	fill: currentColor;
}

/* Un élément marqué hidden reste masqué, quel que soit le display de son composant (bouton, carte, champ…). */
[hidden] { display: none !important; }

.sr-only,
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.lien-evitement {
	position: absolute;
	top: -100px;
	left: 1rem;
	z-index: 100;
	padding: .75rem 1rem;
	border-radius: var(--f-rayon-s);
	background: var(--f-encre);
	color: #fff;
}
.lien-evitement:focus { top: 1rem; color: #fff; }

.principal:focus { outline: none; }

/* Noms composés qui ne doivent pas se couper au trait d'union (Brive-la-Gaillarde). */
.sans-coupure { white-space: nowrap; }

/* Donnée manquante, visible uniquement hors production (voir inc/agence.php). */
.a-renseigner {
	padding: 0 .25em;
	outline: 1px dashed currentColor;
	color: var(--f-jaune);
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
/* ==========================================================================
   Mise en page : conteneurs, sections, grilles
   ========================================================================== */

.conteneur {
	width: 100%;
	max-width: calc(var(--f-largeur) + 2 * var(--f-goutiere));
	margin-inline: auto;
	padding-inline: var(--f-goutiere);
}
.conteneur--texte { max-width: calc(var(--f-largeur-texte) + 2 * var(--f-goutiere)); }

.section { padding-block: var(--f-section); }
.section--serree { padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.section--douce { background: var(--f-fond-doux); }

.pile {
	display: flex;
	flex-direction: column;
	gap: var(--pile-ecart, 1rem);
}

.grille {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--grille-ecart, 1.25rem);
}
@media (min-width: 640px) {
	.grille--2, .grille--3, .grille--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 960px) {
	.grille--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.grille--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.entete-section {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.25rem 2rem;
	margin-bottom: clamp(1.75rem, 3vw, 2.75rem);
}

/* En-tête des pages intérieures */
.entete-page { padding-block: clamp(2rem, 5vw, 3.5rem) 0; }
.entete-page__titre {
	margin-top: 1rem;
	font-size: var(--f-taille-titre);
	font-weight: 300;
	line-height: 1.1;
	letter-spacing: -.02em;
}
.entete-page__intro {
	max-width: 62ch;
	margin-top: 1rem;
	color: var(--f-texte-doux);
	font-size: 1.0625rem;
}
.entete-page__meta {
	margin-top: 1rem;
	color: var(--f-libelle);
	font-size: var(--f-taille-mini);
}

/* Liste d'articles (index.php) */
.liste-articles { display: grid; gap: 2.5rem; }
.resume { display: flex; flex-direction: column; gap: .5rem; padding-bottom: 2.5rem; border-bottom: 1px solid var(--f-filet); }
.resume__date { color: var(--f-libelle); font-size: var(--f-taille-mini); }
.resume__titre { font-size: 1.375rem; font-weight: 500; }
.resume__titre a:hover { color: var(--f-accent); }
.resume__extrait { color: var(--f-texte-doux); }

.pagination .nav-links { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2.5rem; }
.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	font-size: var(--f-taille-petit);
}
.pagination .page-numbers.current { background: var(--f-encre); border-color: var(--f-encre); color: #fff; }
/* ==========================================================================
   Composants de la maquette
   ========================================================================== */

/* Surtitre et titres ------------------------------------------------------ */

.surtitre {
	color: var(--f-accent);
	font-size: var(--f-taille-surtitre);
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: var(--f-espacement-surtitre);
	text-transform: uppercase;
}
.surtitre--clair { color: var(--f-jaune); }

.titre-section { display: flex; flex-direction: column; gap: .75rem; }
.titre-section__titre {
	font-size: var(--f-taille-titre);
	font-weight: 300;
	line-height: 1.1;
	letter-spacing: -.02em;
}
.titre-section__fort { font-weight: 600; }

.titre-hero {
	color: #fff;
	font-size: var(--f-taille-hero);
	font-weight: 300;
	line-height: 1.05;
	letter-spacing: -.02em;
	text-wrap: balance;
}
.titre-hero__fort { font-weight: 600; }

/* Boutons et liens -------------------------------------------------------- */

.bouton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	min-height: 44px;
	padding: .75rem 1.375rem;
	border: 1px solid transparent;
	border-radius: var(--f-rayon-s);
	font-size: .75rem;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: var(--f-espacement-bouton);
	text-align: center;
	text-transform: uppercase;
	white-space: nowrap;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.bouton--plein { background: var(--f-encre); color: #fff; }
.bouton--plein:hover { background: var(--f-encre-survol); color: #fff; }
.bouton--contour { border-color: var(--f-encre); color: var(--f-encre); }
.bouton--contour:hover { background: var(--f-encre); color: #fff; }
.bouton--clair { background: #fff; color: var(--f-encre); }
.bouton--clair:hover { background: var(--f-fond-doux); color: var(--f-encre); }
.bouton--jaune { background: var(--f-jaune); color: var(--f-encre); }
.bouton--jaune:hover { background: var(--f-jaune-fonce); color: var(--f-encre); }
.bouton--large { width: 100%; }

.lien-fleche {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	color: var(--f-encre);
	font-size: .75rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.lien-fleche .icone {
	width: 1.125rem;
	height: 1.125rem;
	transition: transform var(--f-duree) var(--f-courbe);
}
.lien-fleche:hover .icone { transform: translateX(3px); }

.lien-discret {
	padding: 0;
	border: 0;
	background: none;
	color: var(--f-texte);
	font-size: var(--f-taille-mini);
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

/* Puces (filtres) et étiquettes -------------------------------------------- */

.puce {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 36px;
	padding: .4375rem .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: .75rem;
	line-height: 1.2;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.puce:hover { border-color: var(--f-encre); }
.puce[aria-pressed="true"],
.puce[aria-checked="true"] { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.puce--carree { min-width: 52px; min-height: 44px; border-radius: var(--f-rayon-s); font-size: var(--f-taille-petit); }

.etiquette {
	display: inline-block;
	padding: .3125rem .5625rem;
	border-radius: var(--f-rayon-xs);
	background: #fff;
	color: var(--f-encre);
	font-size: .625rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.etiquette--jaune { background: var(--f-jaune); }
.etiquette--encre { background: var(--f-encre); color: #fff; }

/* Onglets ----------------------------------------------------------------- */

.onglets {
	display: flex;
	gap: 2rem;
	overflow-x: auto;
	border-bottom: 1px solid var(--f-filet);
	scrollbar-width: none;
}
.onglets::-webkit-scrollbar { display: none; }
.onglet {
	flex: none;
	margin-bottom: -1px;
	padding: 0 0 .875rem;
	border: 0;
	border-bottom: 2px solid transparent;
	background: none;
	color: var(--f-libelle);
	font-size: var(--f-taille-mini);
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}
.onglet:hover { color: var(--f-encre); }
.onglet[aria-selected="true"],
.onglet[aria-current="page"] { border-bottom-color: var(--f-encre); color: var(--f-encre); font-weight: 600; }

/* Champs de formulaire ---------------------------------------------------- */

.champ { display: flex; flex-direction: column; gap: .375rem; }
.champ__libelle {
	color: var(--f-libelle);
	font-size: var(--f-taille-libelle);
	font-weight: 500;
	letter-spacing: var(--f-espacement-libelle);
	text-transform: uppercase;
}
.champ__saisie {
	width: 100%;
	min-height: 44px;
	padding: 0 .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	background: #fff;
	color: var(--f-encre);
	font-size: 1rem; /* 16 px minimum : en dessous, iOS zoome sur le champ */
	transition: border-color var(--f-duree) var(--f-courbe);
}
.champ__saisie::placeholder { color: var(--f-indice); }
.champ__saisie:hover { border-color: var(--f-filet-fonce); }
.champ__saisie:focus { border-color: transparent; outline: 2px solid var(--f-focus); outline-offset: 0; }
textarea.champ__saisie { min-height: 120px; padding: .75rem; resize: vertical; }

.champ__groupe {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding-inline: .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	background: #fff;
}
.champ__groupe:focus-within { border-color: transparent; outline: 2px solid var(--f-focus); }
.champ__groupe .champ__saisie { min-height: 42px; padding: 0; border: 0; outline: 0; }
.champ__unite { color: var(--f-libelle); font-size: var(--f-taille-mini); }
.champ__aide { color: var(--f-libelle); font-size: .75rem; }

/* Cartes ------------------------------------------------------------------ */

.carte {
	padding: clamp(1.5rem, 3vw, 2.25rem);
	border-radius: var(--f-rayon-m);
	background: #fff;
	box-shadow: var(--f-ombre-carte);
}
.carte__titre { font-size: 1.125rem; font-weight: 600; }

/* Carte métier : filet de 3 px en haut, le motif « Nos métiers » */
.carte-metier {
	display: flex;
	flex-direction: column;
	gap: .875rem;
	padding-top: 1.5rem;
	border-top: 3px solid var(--f-encre);
}
.carte-metier > .icone { width: 1.75rem; height: 1.75rem; }
.carte-metier__titre { font-size: 1.125rem; font-weight: 600; }
.carte-metier__texte { color: var(--f-texte-doux); font-size: var(--f-taille-petit); line-height: 1.6; }
.carte-metier .lien-fleche { margin-top: auto; }

/* Carte type de bien : badge carré, libellé, compteur, flèche */
.carte-type {
	display: flex;
	align-items: center;
	gap: 1.25rem;
	padding: 1.5rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
	color: var(--f-encre);
	transition: border-color var(--f-duree) var(--f-courbe);
}
.carte-type:hover { border-color: var(--f-encre); color: var(--f-encre); }
.carte-type__badge {
	display: flex;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: var(--f-rayon-m);
	background: var(--f-encre);
	color: #fff;
}
.carte-type__badge .icone { width: 1.625rem; height: 1.625rem; }
.carte-type__corps { display: flex; flex: 1; flex-direction: column; gap: .25rem; min-width: 0; }
.carte-type__titre { font-size: 1.0625rem; font-weight: 500; }
.carte-type__compte { color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.carte-type > .icone:last-child { color: var(--f-libelle); }

/* Visuels : réservent leur place avant le chargement de l'image (pas de décalage de mise en page) */
.visuel { position: relative; overflow: hidden; background: var(--f-fond-doux); }
.visuel > img { width: 100%; height: 100%; object-fit: cover; }
.visuel--4-5 { aspect-ratio: 4 / 5; }
.visuel--4-3 { aspect-ratio: 4 / 3; }
.visuel--5-4 { aspect-ratio: 5 / 4; }
.section--douce .visuel--vide { background: var(--f-filet); color: var(--f-libelle); }
.visuel--vide {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	color: var(--f-indice);
	font-size: .6875rem;
	letter-spacing: .14em;
	text-align: center;
	text-transform: uppercase;
}

/* Étapes numérotées ------------------------------------------------------- */

.etapes { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--f-filet-fonce); }
.etape {
	display: flex;
	gap: 1.25rem;
	padding-block: 1.125rem;
	border-bottom: 1px solid var(--f-filet-fonce);
	font-size: var(--f-taille-petit);
}
.etape__numero { flex: none; width: 1.5rem; color: var(--f-accent); font-size: var(--f-taille-mini); font-weight: 600; }

/* Tableau de données ------------------------------------------------------ */

.tableau-cadre { overflow-x: auto; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-m); background: #fff; }
.tableau { width: 100%; border-collapse: collapse; font-size: var(--f-taille-petit); }
.tableau thead th {
	padding: .875rem 1.25rem;
	background: var(--f-accent);
	color: #fff;
	font-size: var(--f-taille-libelle);
	font-weight: 500;
	letter-spacing: var(--f-espacement-libelle);
	text-align: left;
	text-transform: uppercase;
	white-space: nowrap;
}
.tableau td,
.tableau tbody th { padding: .875rem 1.25rem; border-top: 1px solid var(--f-filet); color: var(--f-texte); text-align: left; }
.tableau tbody th { color: var(--f-encre); font-weight: 500; }
.tableau .nombre { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hausse { color: var(--f-hausse); font-weight: 600; }
.baisse { color: var(--f-baisse); font-weight: 600; }

/* Pastille d'évolution : +3,5 % en vert, −0,7 % en rouge */
.evolution {
	display: inline-block;
	padding: .1875rem .5rem;
	border-radius: var(--f-rayon-pilule);
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.3;
	white-space: nowrap;
}
.evolution--hausse { background: var(--f-hausse-clair); color: var(--f-hausse); }
.evolution--baisse { background: var(--f-baisse-clair); color: var(--f-baisse); }
.tuile-prix--maison .evolution--hausse { background: rgba(92, 214, 140, .16); color: #8fe3b0; }
.tuile-prix--maison .evolution--baisse { background: rgba(240, 96, 80, .2); color: #ffb3aa; }
.tableau caption {
	caption-side: bottom;
	padding: .75rem 1.25rem;
	border-top: 1px solid var(--f-filet);
	color: var(--f-libelle);
	font-size: .75rem;
	text-align: left;
}

/* Encadré (alerte e-mail) : filet accent en haut, jamais sur le côté ------ */

.encadre {
	padding: clamp(1.5rem, 4vw, 3rem) clamp(1.25rem, 4vw, 3.5rem);
	border: 1px solid var(--f-filet);
	border-top: 3px solid var(--f-jaune);
	border-radius: var(--f-rayon-m);
	background: #fff;
}
.encadre__titre { font-size: clamp(1.25rem, 1rem + 1vw, 1.625rem); font-weight: 300; line-height: 1.2; letter-spacing: -.01em; }

/* Panneau déroulant (recherche) ------------------------------------------- */

.panneau { border-radius: var(--f-rayon-m); background: #fff; color: var(--f-encre); box-shadow: var(--f-ombre-panneau); }
.panneau__pied {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .875rem 1.5rem;
	border-top: 1px solid var(--f-filet);
}

/* Notification temporaire ------------------------------------------------- */

.notification {
	position: fixed;
	bottom: 1.75rem;
	left: 50%;
	z-index: 60;
	max-width: calc(100% - 2rem);
	padding: .875rem 1.25rem;
	border-radius: var(--f-rayon-s);
	background: var(--f-encre);
	color: #fff;
	font-size: var(--f-taille-mini);
	box-shadow: 0 12px 32px rgba(20, 24, 31, .3);
	transform: translateX(-50%);
}

/* Note en étoiles : cinq étoiles grises, recouvertes en jaune à hauteur de la note (--note sur 5) */
.etoiles { position: relative; display: inline-block; color: rgba(255, 255, 255, .3); font-size: .875rem; line-height: 1; letter-spacing: .04em; white-space: nowrap; }
.etoiles::before { content: "★★★★★"; }
.etoiles::after { content: "★★★★★"; position: absolute; top: 0; left: 0; width: calc(var(--note, 5) / 5 * 100%); overflow: hidden; color: var(--f-jaune-fonce); }
.etoiles--clair { color: var(--f-filet-fonce); }

/* Fil d'Ariane ------------------------------------------------------------ */

.fil-ariane ol {
	display: flex;
	flex-wrap: wrap;
	gap: .25rem .5rem;
	margin: 0;
	padding: 0;
	list-style: none;
	color: var(--f-libelle);
	font-size: .75rem;
	letter-spacing: .04em;
}
.fil-ariane li:not(:last-child)::after { content: "/"; margin-left: .5rem; color: var(--f-filet-fonce); }
.fil-ariane a:hover { color: var(--f-encre); }
.fil-ariane [aria-current] { color: var(--f-texte); }
/* ==========================================================================
   Contenu éditorial (pages, articles, guides de secteur)
   ========================================================================== */

.contenu > * + * { margin-top: 1.25em; }
.contenu > h2 { margin-top: 2.25em; font-size: 1.75rem; font-weight: 500; letter-spacing: -.01em; }
.contenu > h3 { margin-top: 1.9em; font-size: 1.25rem; font-weight: 600; }
.contenu > h2 + *,
.contenu > h3 + * { margin-top: .75em; }

.contenu p,
.contenu li { color: var(--f-texte); font-size: 1.0625rem; line-height: 1.7; }
.contenu strong { color: var(--f-encre); font-weight: 600; }

.contenu a {
	color: var(--f-accent);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}
.contenu a:hover { color: var(--f-accent-fonce); }

.contenu ul,
.contenu ol { padding-left: 1.25em; }
.contenu li + li { margin-top: .4em; }
.contenu li::marker { color: var(--f-accent); }

.contenu blockquote {
	margin-inline: 0;
	padding-block: .25em;
	color: var(--f-encre);
	font-size: 1.25rem;
	font-weight: 300;
	line-height: 1.55;
}

.contenu figcaption,
.contenu .wp-element-caption { margin-top: .5rem; color: var(--f-libelle); font-size: var(--f-taille-mini); }

.contenu table { width: 100%; border-collapse: collapse; font-size: var(--f-taille-petit); }
.contenu th,
.contenu td { padding: .75rem 1rem; border-bottom: 1px solid var(--f-filet); text-align: left; }
.contenu thead th { border-bottom: 2px solid var(--f-encre); color: var(--f-encre); font-weight: 600; }
/* Bloc tableau de l'éditeur : ses bordures sur chaque cellule sont remplacées par les filets du thème */
.contenu .wp-block-table { margin-inline: 0; overflow-x: auto; }
.contenu .wp-block-table table { border: 0; }
.contenu .wp-block-table th,
.contenu .wp-block-table td { border: 0; border-bottom: 1px solid var(--f-filet); }
.contenu .wp-block-table thead { border-bottom: 0; }
.contenu .wp-block-table thead th { border-bottom: 2px solid var(--f-encre); }
.contenu .wp-block-table td + td { color: var(--f-encre); font-weight: 600; font-variant-numeric: tabular-nums; }

.contenu hr { height: 1px; margin-block: 2.5em; border: 0; background: var(--f-filet); }
/* ==========================================================================
   En-tête
   Plein et collant par défaut ; transparent sur les pages à héros, puis plein au défilement.
   ========================================================================== */

.admin-bar { --decalage-admin: 32px; }
@media (max-width: 782px) { .admin-bar { --decalage-admin: 46px; } }
@media (max-width: 600px) { .admin-bar { --decalage-admin: 0px; } }

html.menu-ouvert { overflow: hidden; }

.entete {
	position: sticky;
	top: var(--decalage-admin, 0px);
	z-index: 50;
	border-bottom: 1px solid var(--f-filet);
	background: var(--f-blanc);
	color: var(--f-encre);
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.entete--transparent {
	position: fixed;
	right: 0;
	left: 0;
	border-bottom-color: transparent;
	background: transparent;
	color: #fff;
}
.entete--transparent.entete--defile,
.entete.est-ouvert { border-bottom-color: var(--f-filet); background: var(--f-blanc); color: var(--f-encre); }

.entete a:hover { color: inherit; }

.entete__barre {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	min-height: var(--f-hauteur-entete);
	padding-inline: clamp(1rem, 3vw, 2.5rem);
}

/* Logo : image couleur, ou claire sur le héros de l'accueil tant que l'en-tête est transparent */
.logo { display: inline-flex; flex: none; align-items: center; margin-right: auto; }
.logo__image { display: block; width: auto; height: 34px; }
@media (min-width: 1100px) { .logo__image { height: 42px; } }
.logo--double .logo__image--clair { display: none; }
.entete--transparent:not(.entete--defile):not(.est-ouvert) .logo--double .logo__image--couleur { display: none; }
.entete--transparent:not(.entete--defile):not(.est-ouvert) .logo--double .logo__image--clair { display: block; }

.entete__menu {
	display: flex;
	gap: 1.375rem;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: .875rem;
	letter-spacing: .02em;
	white-space: nowrap;
}
.entete__menu a { position: relative; display: block; padding-block: .5rem; }
.entete__menu a::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: .25rem;
	left: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--f-duree) var(--f-courbe);
}
.entete__menu a:hover::after,
.entete__menu a[aria-current]::after { transform: scaleX(1); }

.entete__nav-plus { display: none; }

.entete__actions { display: flex; flex: none; align-items: center; gap: 1rem; }
.entete__tel { display: inline-flex; align-items: center; gap: .5rem; font-size: var(--f-taille-mini); letter-spacing: .06em; white-space: nowrap; }
.entete__favoris { position: relative; display: inline-flex; align-items: center; }
.entete__compteur {
	position: absolute;
	top: -6px;
	right: -9px;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: var(--f-rayon-pilule);
	background: var(--f-favori);
	color: #fff;
	font-size: .625rem;
	font-weight: 600;
	line-height: 18px;
	text-align: center;
}

.bouton--entete { min-height: 40px; padding: .625rem 1rem; }
.entete--transparent:not(.entete--defile):not(.est-ouvert) :focus-visible { outline-color: var(--f-jaune); }

.entete__burger {
	display: none;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-right: -10px;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
}
.entete__burger .icone { width: 1.625rem; height: 1.625rem; }
.entete__burger-fermer,
.est-ouvert .entete__burger-ouvrir { display: none; }
.est-ouvert .entete__burger-fermer { display: block; }

/* Écrans intermédiaires : le numéro se réduit à son icône ; en dessous de 1 280 px, le menu se resserre
   et le bouton se raccourcit à « Estimer », pour que les huit entrées tiennent sur une ligne dès 1 100 px. */
@media (min-width: 1100px) and (max-width: 1439.98px) {
	.entete__tel-numero { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
}
@media (min-width: 1100px) and (max-width: 1279.98px) {
	.entete__menu { gap: .75rem; font-size: .8125rem; letter-spacing: .01em; }
	.bouton--entete .bouton__suite { display: none; }
}

/* Mobile et tablette : la navigation devient un panneau plein écran */
@media (max-width: 1099.98px) {
	.entete__barre { gap: .5rem; }
	.entete__actions { gap: 0; }
	.entete__tel,
	.entete__favoris { justify-content: center; width: 44px; height: 44px; }
	.entete__tel-numero { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
	.entete__compteur { top: 4px; right: 2px; }
	.bouton--entete { display: none; }
	.entete__burger { display: inline-flex; }

	.entete__nav {
		position: fixed;
		inset: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete)) 0 0 0;
		z-index: 49;
		display: flex;
		flex-direction: column;
		gap: 2rem;
		padding: .5rem var(--f-goutiere) 2.5rem;
		overflow-y: auto;
		overscroll-behavior: contain;
		background: var(--f-blanc);
		color: var(--f-encre);
		visibility: hidden;
		opacity: 0;
		transform: translateY(-8px);
		transition: opacity var(--f-duree) var(--f-courbe), transform var(--f-duree) var(--f-courbe), visibility 0s linear var(--f-duree);
	}
	.est-ouvert .entete__nav { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }

	.entete__menu { flex-direction: column; gap: 0; font-size: 1.25rem; font-weight: 500; letter-spacing: 0; white-space: normal; }
	.entete__menu li { border-bottom: 1px solid var(--f-filet); }
	.entete__menu a { padding-block: 1rem; }
	.entete__menu a::after { display: none; }
	.entete__menu a[aria-current] { color: var(--f-accent); }

	.entete__nav-plus { display: flex; flex-direction: column; gap: 1.25rem; }
	.entete__nav-contact { display: flex; flex-direction: column; gap: .75rem; font-size: .9375rem; }
	.entete__nav-contact a { display: inline-flex; align-items: center; gap: .625rem; }
	.entete__nav-adresse { color: var(--f-texte-doux); font-size: var(--f-taille-petit); }
}
/* ==========================================================================
   Pied de page
   ========================================================================== */

.pied { background: var(--f-encre); color: var(--f-filet-fonce); font-size: var(--f-taille-mini); }
.pied a { color: var(--f-filet-fonce); }
.pied a:hover { color: #fff; }
.pied :focus-visible { outline-color: var(--f-jaune); }

.pied__grille {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 2.5rem;
	padding-block: clamp(3rem, 6vw, 4.5rem) 2.5rem;
}
@media (min-width: 640px) { .pied__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) { .pied__grille { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }

.pied__marque { display: flex; flex-direction: column; align-items: flex-start; gap: 1.25rem; }
.pied .logo { margin-right: 0; }
.pied .logo__image { height: 48px; }
.pied__adresse { font-style: normal; line-height: 1.8; }
/* Réassurance : logo FNAIM et note Google */
.pied__confiance { display: flex; flex-direction: column; gap: .75rem; margin: 0; padding: 0; list-style: none; color: rgba(255, 255, 255, .8); font-size: .8125rem; }
.pied__confiance li,
.pied__confiance a { display: flex; align-items: center; gap: .625rem; color: inherit; }
.pied__confiance a { gap: .5rem; }
.pied__confiance a:hover { color: #fff; }
.pied__confiance strong { color: #fff; font-weight: 600; }
.pied__logo { flex: none; width: auto; }

.pied__titre { margin-bottom: .875rem; color: var(--f-jaune); font-size: var(--f-taille-libelle); letter-spacing: .16em; text-transform: uppercase; }
.pied__menu { display: flex; flex-direction: column; gap: .75rem; margin: 0; padding: 0; list-style: none; }

.pied__bas {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1.5rem;
	padding-block: 1.25rem 2rem;
	border-top: 1px solid var(--f-encre-survol);
	color: var(--f-indice);
	font-size: .75rem;
}
/* ==========================================================================
   Page d'accueil : héros et recherche
   ========================================================================== */

/* Le héros n'ouvre pas de contexte d'empilement : le volet plein écran du moteur (mobile) doit pouvoir
   passer au-dessus de l'en-tête fixe. Le fond est donc porté par .heros__fond. */
.heros {
	position: relative;
	display: flex;
	align-items: center;
	min-height: clamp(640px, 92vh, 820px);
	padding-block: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 2rem) 3.5rem;
	color: #fff;
}
.heros__fond { position: absolute; inset: 0; z-index: -1; overflow: hidden; background: var(--f-encre); }
.heros__image { width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; animation: fontan-heros-zoom 14s var(--f-courbe) both; } /* vue aérienne : le centre-ville reste dans le cadre en mobile */
/* Voile renforcé, plus dense derrière le texte : le titre et les onglets se détachent de la photo. */
.heros__fond::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(70% 55% at 50% 42%, rgba(14, 34, 57, .45) 0%, rgba(14, 34, 57, 0) 70%),
		linear-gradient(180deg, rgba(14, 34, 57, .76) 0%, rgba(14, 34, 57, .6) 45%, rgba(14, 34, 57, .86) 100%);
}
/* Sans photo : dégradé de bleus, en attendant l'image de l'agence. */
.heros--sans-photo .heros__fond {
	background:
		radial-gradient(110% 90% at 85% 0%, rgba(30, 90, 168, .9) 0%, rgba(30, 90, 168, 0) 60%),
		radial-gradient(80% 80% at 0% 100%, rgba(23, 71, 130, .8) 0%, rgba(23, 71, 130, 0) 55%),
		var(--f-encre);
}
.heros--sans-photo .heros__fond::after { display: none; }
@keyframes fontan-heros-zoom { from { transform: scale(1.08); } }

.heros__contenu { display: flex; flex-direction: column; align-items: center; gap: 2.25rem; }
.heros__titres { display: flex; flex-direction: column; align-items: center; gap: .875rem; max-width: 860px; text-align: center; text-shadow: 0 2px 24px rgba(0, 0, 0, .3); }
.heros__texte { max-width: 60ch; color: rgba(255, 255, 255, .9); font-weight: 300; }

/* Moteur (parts/moteur.php, styles dans 12-moteur.css) centré sous le titre */
.heros .moteur { display: flex; flex-direction: column; align-items: center; width: 100%; max-width: 1140px; margin-inline: auto; }
.heros .moteur__barre { width: 100%; }

/* Preuves de confiance sous le moteur */
.heros__confiance { display: flex; flex-wrap: wrap; justify-content: center; gap: .625rem; margin: -.75rem 0 0; padding: 0; list-style: none; }
.heros__preuve {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 40px;
	padding: .5rem 1rem;
	border: 1px solid rgba(255, 255, 255, .2);
	border-radius: var(--f-rayon-pilule);
	background: rgba(14, 34, 57, .45);
	color: #fff;
	font-size: .8125rem;
	font-weight: 500;
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	transition: background-color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
a.heros__preuve:hover { border-color: rgba(255, 255, 255, .45); background: rgba(255, 255, 255, .14); color: #fff; }
.heros__preuve .icone { flex: none; width: 1.125rem; height: 1.125rem; color: var(--f-jaune); }
.heros__preuve strong { font-weight: 600; }
.heros__losange { flex: none; width: 10px; height: 10px; background: var(--f-jaune); transform: rotate(45deg); }
.heros__logo { flex: none; width: auto; }

/* Puces à choix (formulaire d'estimation, fiches) */
.groupe { min-width: 0; margin: 0; padding: 0; border: 0; }
label.puce { cursor: pointer; }
.puce:has(input:checked) { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.puce:has(input:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 2px; }

@media (max-width: 899.98px) {
	.heros { align-items: flex-start; min-height: 0; padding-block: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 2.5rem) 2.5rem; }
	.heros__contenu { gap: 1.75rem; }
	.heros .moteur { align-items: stretch; }
	.heros__confiance { margin-top: -.25rem; gap: .5rem; }
	.heros__preuve { min-height: 36px; padding: .375rem .875rem; font-size: .75rem; }
}

@media (prefers-reduced-motion: reduce) {
	.heros__image { animation: none; }
}

/* ==========================================================================
   Biens et sections de l'accueil
   ========================================================================== */

.liste-nue { margin: 0; padding: 0; list-style: none; }
.section--haut-seul { padding-top: 0; }
.entete-section__texte { max-width: 380px; color: var(--f-texte-doux); font-size: var(--f-taille-petit); line-height: 1.6; }
.rangee-boutons { display: flex; flex-wrap: wrap; gap: .75rem; }
.piege { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Carte d'un bien -------------------------------------------------------------- */

.selection__onglets { margin-bottom: 2rem; }
.selection__panneau[hidden] { display: none; }

/* Mobile : les cartes défilent à l'horizontale, la suivante dépasse pour inviter à glisser */
@media (max-width: 639.98px) {
	.selection__panneau:not([hidden]) {
		display: flex;
		gap: .875rem;
		margin-inline: calc(-1 * var(--f-goutiere));
		padding: .25rem var(--f-goutiere) 1rem;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--f-goutiere);
		scrollbar-width: none;
	}
	.selection__panneau::-webkit-scrollbar { display: none; }
	.selection__panneau > .carte-bien { flex: 0 0 82%; height: auto; scroll-snap-align: start; }
	.selection__panneau > .carte-bien:hover { transform: none; }
}

.carte-bien {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
	box-shadow: 0 1px 2px rgba(14, 34, 57, .05);
	transition: transform 320ms var(--f-courbe), box-shadow 320ms var(--f-courbe), border-color 320ms var(--f-courbe);
}
.carte-bien:hover { border-color: transparent; box-shadow: 0 18px 40px rgba(14, 34, 57, .14), 0 2px 6px rgba(14, 34, 57, .06); transform: translateY(-4px); }
.carte-bien:has(.carte-bien__lien:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 3px; }

.carte-bien__visuel { position: relative; flex: none; aspect-ratio: 4 / 3; overflow: hidden; background: var(--f-fond-doux); }
.carte-bien__visuel > img { width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--f-courbe), filter 320ms var(--f-courbe); }
.carte-bien:hover .carte-bien__visuel > img { transform: scale(1.05); }
.carte-bien__visuel .visuel--vide { position: absolute; inset: 0; }
.carte-bien__etiquette { position: absolute; top: .75rem; left: .75rem; z-index: 2; pointer-events: none; }
.carte-bien__favori {
	position: absolute;
	top: .625rem;
	right: .625rem;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #fff;
	color: var(--f-encre);
	box-shadow: 0 1px 3px rgba(14, 34, 57, .16);
	cursor: pointer;
	transition: transform var(--f-duree) var(--f-courbe);
}
.carte-bien__favori:hover { transform: scale(1.08); }
.carte-bien__favori[aria-pressed="true"] { color: var(--f-favori); }
.carte-bien__favori .icone { width: 1.25rem; height: 1.25rem; }

.carte-bien__corps { display: flex; flex: 1; flex-direction: column; gap: .5rem; padding: 1rem 1.125rem 1.125rem; }
.carte-bien__lieu { display: flex; align-items: center; gap: .25rem; color: var(--f-libelle); font-size: .75rem; font-weight: 500; letter-spacing: .02em; }
.carte-bien__lieu .icone { flex: none; width: .9375rem; height: .9375rem; color: var(--f-accent); }
.carte-bien__titre { color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; line-height: 1.3; letter-spacing: 0; }
.carte-bien__lien { color: inherit; }
.carte-bien__lien::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.carte-bien__lien:focus-visible { outline: none; }
.carte-bien__chiffres { display: flex; flex-wrap: wrap; gap: .375rem .875rem; margin: 0; padding: 0; list-style: none; color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.carte-bien__chiffres li { display: inline-flex; align-items: center; gap: .3125rem; }
.carte-bien__chiffres .icone { flex: none; width: 1rem; height: 1rem; color: var(--f-libelle); }
.carte-bien__pied { display: flex; align-items: flex-end; justify-content: space-between; gap: .75rem; margin-top: auto; padding-top: .875rem; border-top: 1px solid var(--f-filet); }
.carte-bien__corps > .carte-bien__pied { margin-top: auto; }
.carte-bien__chiffres + .carte-bien__pied,
.carte-bien__titre + .carte-bien__pied { margin-top: auto; }
.carte-bien__prix { display: flex; flex-direction: column; color: var(--f-encre); font-size: 1.1875rem; font-weight: 600; line-height: 1.2; }
.carte-bien__mention { margin-top: .1875rem; color: var(--f-libelle); font-size: .6875rem; font-weight: 400; }
.carte-bien__fleche {
	display: flex;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
	background: var(--f-fond-doux);
	color: var(--f-encre);
	transition: background-color 320ms var(--f-courbe), transform 320ms var(--f-courbe);
}
.carte-bien__fleche .icone { width: 1.125rem; height: 1.125rem; }
.carte-bien:hover .carte-bien__fleche { background: var(--f-jaune); transform: translateX(2px); }

/* Bien vendu ou loué (bloc de l'accueil) : photo adoucie, prix en retrait */
.carte-bien--vendue .carte-bien__visuel > img { filter: saturate(.6); }
.carte-bien--vendue:hover .carte-bien__visuel > img { filter: none; }
.carte-bien--vendue .carte-bien__prix { color: var(--f-texte-doux); font-weight: 500; }

/* Sur fond gris, la carte blanche se détache sans ombre */
.section--douce .carte-bien { border-color: transparent; }

@media (prefers-reduced-motion: reduce) {
	.carte-bien,
	.carte-bien__visuel > img,
	.carte-bien__fleche { transition: none; }
	.carte-bien:hover,
	.carte-bien:hover .carte-bien__visuel > img { transform: none; }
}

/* Secteurs ------------------------------------------------------------------ */

.secteurs { --grille-ecart: 2.5rem 1.25rem; }
.carte-secteur-lien { display: flex; flex-direction: column; gap: 1rem; color: var(--f-encre); }
.carte-secteur-lien:hover { color: var(--f-encre); }
.carte-secteur-lien .visuel { border-radius: var(--f-rayon-l); }
.carte-secteur-lien .visuel > img { transition: transform 700ms var(--f-courbe); }
.carte-secteur-lien:hover .visuel > img { transform: scale(1.05); }
.carte-secteur-lien .visuel--vide .icone { width: 2.5rem; height: 2.5rem; color: var(--f-filet-fonce); }
@media (prefers-reduced-motion: reduce) { .carte-secteur-lien:hover .visuel > img { transform: none; } }
.carte-secteur-lien__corps { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; }
.carte-secteur-lien__corps > span:first-child { display: flex; flex-direction: column; gap: .25rem; }
.carte-secteur-lien__nom { font-size: 1.0625rem; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; }
.carte-secteur-lien:hover .carte-secteur-lien__nom { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.carte-secteur-lien__lieu { color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.carte-secteur-lien__compte { color: var(--f-accent); font-size: var(--f-taille-mini); white-space: nowrap; }

/* Estimation ---------------------------------------------------------------- */

.estimation { display: grid; gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
@media (min-width: 960px) { .estimation { grid-template-columns: minmax(0, 1fr) minmax(0, 480px); } }
.estimation__intro { max-width: 460px; color: var(--f-texte); font-size: .9375rem; line-height: 1.65; }
.grille-quatre { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .375rem; }
.grille-quatre .puce { width: 100%; min-width: 0; padding-inline: .25rem; font-size: var(--f-taille-mini); }
@media (max-width: 479.98px) { .grille-quatre { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.groupe > .champ__libelle { display: block; margin-bottom: .375rem; padding: 0; }

.confirmation { display: flex; flex-direction: column; gap: .875rem; padding-block: 1.5rem; }
.confirmation__icone { width: 2.25rem; height: 2.25rem; color: var(--f-accent); }
.confirmation--ligne { flex-direction: row; align-items: center; padding: 0; font-size: .9375rem; }
.confirmation--ligne .confirmation__icone { width: 1.75rem; height: 1.75rem; }
.alerte-formulaire { padding: .75rem 1rem; border-radius: var(--f-rayon-s); background: var(--f-jaune-clair); color: var(--f-encre); font-size: var(--f-taille-mini); }

/* Marché -------------------------------------------------------------------- */

.marche { display: grid; gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
@media (min-width: 960px) { .marche { grid-template-columns: minmax(0, 360px) minmax(0, 1fr); } }
.marche__texte > p { color: var(--f-texte-doux); font-size: var(--f-taille-petit); line-height: 1.65; }
.tableau__evolution { display: block; margin-top: .125rem; font-size: .6875rem; font-weight: 500; }
.tableau__vide { color: var(--f-indice); }
@media (max-width: 639.98px) {
	.marche .tableau { font-size: var(--f-taille-mini); }
	.marche .tableau th,
	.marche .tableau td { padding: .75rem .625rem; }
	.marche .tableau thead th { letter-spacing: .08em; }
	.marche .tableau__secondaire { display: none; }
}

/* Agence -------------------------------------------------------------------- */

.agence { display: grid; gap: clamp(2rem, 6vw, 4.5rem); align-items: center; }
.agence .visuel { border-radius: var(--f-rayon-l); }
.agence .visuel > img { object-position: 50% 75%; } /* devanture : l'enseigne et le store restent dans le cadre */
@media (min-width: 960px) { .agence { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.agence__texte { color: var(--f-texte); font-size: .9375rem; line-height: 1.65; }
.agence__reseau { display: inline-flex; align-items: center; gap: .75rem; color: var(--f-encre); font-size: var(--f-taille-mini); font-weight: 500; }
/* Losange jaune : un clin d'œil au logo FNAIM, sans reproduire la marque. */
.agence__losange { width: 12px; height: 12px; flex: none; background: var(--f-jaune); transform: rotate(45deg); }
.agence__logo { flex: none; width: auto; height: 28px; }

/* Alerte -------------------------------------------------------------------- */

.alerte { display: grid; gap: 1.5rem 3.5rem; align-items: center; }
@media (min-width: 960px) { .alerte { grid-template-columns: minmax(0, 1fr) minmax(0, 520px); } }
.alerte__portee { color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.alerte__formulaire { display: flex; flex-direction: column; gap: .875rem; }
.alerte__ligne { display: flex; min-height: 52px; overflow: hidden; border: 1px solid var(--f-encre); border-radius: var(--f-rayon-s); }
.alerte__ligne:focus-within { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.alerte__saisie { flex: 1; min-width: 0; padding: 0 1rem; border: 0; outline: 0; background: transparent; font-size: 1rem; }
.alerte__bouton { border-radius: 0; }
.case { display: flex; align-items: flex-start; gap: .625rem; color: var(--f-texte-doux); font-size: .75rem; line-height: 1.5; cursor: pointer; }
.case input { flex: none; width: 16px; height: 16px; margin-top: .15rem; accent-color: var(--f-encre); }
@media (max-width: 479.98px) {
	.alerte__ligne { flex-direction: column; gap: .5rem; overflow: visible; border: 0; }
	.alerte__ligne:focus-within { outline: none; }
	.alerte__saisie { min-height: 48px; border: 1px solid var(--f-encre); border-radius: var(--f-rayon-s); }
	.alerte__saisie:focus { outline: 2px solid var(--f-focus); outline-offset: 2px; }
	.alerte__bouton { border-radius: var(--f-rayon-s); }
}

/* Avis clients ----------------------------------------------------------------- */

.avis__note { display: flex; align-items: baseline; gap: .5rem; color: var(--f-texte); font-size: var(--f-taille-petit); }
.avis__valeur { color: var(--f-encre); font-size: 1.75rem; font-weight: 600; }
.avis { display: flex; flex-direction: column; gap: 1.25rem; height: 100%; margin: 0; padding: 2rem; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-m); }
.avis__etoiles { color: var(--f-jaune-fonce); font-size: 1rem; letter-spacing: .12em; }
.avis__texte { flex: 1; margin: 0; color: var(--f-encre); font-size: 1rem; font-weight: 300; line-height: 1.6; }
.avis__auteur { display: flex; flex-direction: column; gap: .25rem; font-size: var(--f-taille-petit); font-weight: 600; }
.avis__date { color: var(--f-libelle); font-size: .75rem; font-weight: 400; letter-spacing: .08em; text-transform: uppercase; }
.avis__mention { margin-top: 1.5rem; color: var(--f-libelle); font-size: .75rem; }
.avis__mention a { color: var(--f-accent); text-decoration: underline; text-underline-offset: 3px; }
/* ==========================================================================
   Pages de résultats : bandeau, facettes, liste et carte en option, maillage, texte
   ========================================================================== */

.conteneur--large { max-width: calc(1440px + 2 * var(--f-goutiere)); }

/* Bandeau --------------------------------------------------------------------- */

.bandeau-recherche { padding-block: clamp(1.25rem, 3vw, 2rem) clamp(1.5rem, 3vw, 2.25rem); background: var(--f-fond-doux); }
.bandeau-recherche__titre { margin-top: .875rem; font-size: var(--f-taille-titre); font-weight: 300; line-height: 1.1; letter-spacing: -.02em; }
.bandeau-recherche__sous-titre { margin-top: .5rem; color: var(--f-texte-doux); font-size: 1rem; }

/* Grille : facettes à gauche, résultats à droite -------------------------------- */

.page-resultats { display: grid; gap: 1.5rem; padding-block: 1.5rem clamp(3rem, 6vw, 4.5rem); }

@media (min-width: 1100px) {
	.page-resultats { grid-template-columns: 288px minmax(0, 1fr); gap: 2.25rem; align-items: start; padding-top: 2rem; }
	.page-resultats__filtres {
		position: sticky;
		top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 1rem);
		max-height: calc(100vh - var(--decalage-admin, 0px) - var(--f-hauteur-entete) - 2rem);
		overflow-y: auto;
		overscroll-behavior: contain;
		padding-right: 1rem;
		scrollbar-width: thin;
		scrollbar-color: transparent transparent; /* ascenseur discret, visible au survol */
		transition: scrollbar-color var(--f-duree) var(--f-courbe);
	}
	.page-resultats__filtres:hover { scrollbar-color: var(--f-filet-fonce) transparent; }
}

/* Facettes -------------------------------------------------------------------- */

.facettes { display: flex; flex-direction: column; background: #fff; }
.facettes__entete { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-bottom: .875rem; }
.facettes__titre { color: var(--f-encre); font-size: 1.125rem; font-weight: 600; }
.facettes__fermer {
	display: none;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-right: -.625rem;
	border: 0;
	border-radius: 50%;
	background: none;
	color: var(--f-encre);
	cursor: pointer;
}
.facettes__fermer:hover { background: var(--f-fond-doux); }
.facettes__pied { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1rem; border-top: 1px solid var(--f-filet); }
.js .facettes__pied .bouton { display: none; } /* avec script, chaque choix s'applique tout seul */

/* Achat, location, locaux pro : sélecteur segmenté */
.facette--transaction {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 2px;
	margin-bottom: .5rem;
	padding: 3px;
	border-radius: var(--f-rayon-m);
	background: var(--f-fond-doux);
}
.facette__onglet {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .0625rem;
	min-height: 48px;
	padding: .375rem .25rem;
	border-radius: var(--f-rayon-s);
	color: var(--f-texte-doux);
	font-size: var(--f-taille-mini);
	font-weight: 500;
	line-height: 1.2;
	text-align: center;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), box-shadow var(--f-duree) var(--f-courbe);
}
.facette__onglet:hover { color: var(--f-encre); }
.facette__onglet[aria-current] { background: #fff; color: var(--f-encre); box-shadow: 0 1px 3px rgba(14, 34, 57, .14); }
.facette__onglet-compte { color: var(--f-libelle); font-size: .6875rem; font-weight: 400; }

/* Groupes repliables */
.facette { border-top: 1px solid var(--f-filet); }
.facette--transaction { border-top: 0; }
.facette__titre {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 52px;
	color: var(--f-encre);
	font-size: .9375rem;
	font-weight: 600;
	list-style: none;
	cursor: pointer;
}
.facette__titre::-webkit-details-marker { display: none; }
.facette__titre::after {
	content: "";
	flex: none;
	width: 11px;
	height: 8px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230e2239' stroke-width='1.5'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform var(--f-duree) var(--f-courbe);
}
.facette[open] > .facette__titre::after { transform: rotate(180deg); }
.facette__titre:focus-visible { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.facette__options { display: flex; flex-direction: column; gap: .125rem; padding-bottom: 1.125rem; }
.facette__sous-titre { margin: .25rem 0 .5rem; color: var(--f-libelle); font-size: var(--f-taille-libelle); font-weight: 500; letter-spacing: var(--f-espacement-libelle); text-transform: uppercase; }
.facette__sous-titre ~ .facette__sous-titre { margin-top: 1rem; }

/* Case à cocher avec icône et compteur */
.option-facette {
	position: relative;
	display: flex;
	align-items: center;
	gap: .625rem;
	min-height: 38px;
	margin-inline: -.5rem;
	padding: .25rem .5rem;
	border-radius: var(--f-rayon-s);
	color: var(--f-texte);
	font-size: var(--f-taille-petit);
	cursor: pointer;
	transition: background-color var(--f-duree) var(--f-courbe);
}
.option-facette:hover { background: var(--f-fond-doux); }
.option-facette input { position: absolute; opacity: 0; pointer-events: none; }
.option-facette__case {
	flex: none;
	width: 18px;
	height: 18px;
	border: 1.5px solid var(--f-filet-fonce);
	border-radius: 4px;
	background: #fff center / 12px no-repeat;
	transition: background-color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.option-facette__icone { flex: none; width: 1.125rem; height: 1.125rem; color: var(--f-libelle); transition: color var(--f-duree) var(--f-courbe); }
.option-facette__libelle { flex: 1; min-width: 0; }
.option-facette__compte { color: var(--f-libelle); font-size: .75rem; font-variant-numeric: tabular-nums; }
.option-facette input:checked + .option-facette__case {
	border-color: var(--f-encre);
	background-color: var(--f-encre);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5.2l3.3 3.3L11 1.5' fill='none' stroke='%23fff' stroke-width='1.8'/%3E%3C/svg%3E");
}
.option-facette:has(input:checked) { color: var(--f-encre); font-weight: 500; }
.option-facette:has(input:checked) .option-facette__icone { color: var(--f-accent); }
.option-facette input:focus-visible + .option-facette__case { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.option-facette.est-inactive { opacity: .42; cursor: default; }
.option-facette.est-inactive:hover { background: none; }

/* Communes : recherche, liste défilante, rayon */
.facette__filtre {
	display: flex;
	align-items: center;
	gap: .5rem;
	min-height: 40px;
	margin-bottom: .5rem;
	padding: 0 .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	color: var(--f-libelle);
	transition: border-color var(--f-duree) var(--f-courbe);
}
.facette__filtre:focus-within { border-color: var(--f-accent); }
.facette__filtre .icone { flex: none; width: 1.125rem; height: 1.125rem; }
.facette__filtre input { flex: 1; min-width: 0; border: 0; background: none; color: var(--f-encre); font-size: var(--f-taille-petit); outline: none; }
.facette__defilement {
	display: flex;
	flex-direction: column;
	gap: .125rem;
	max-height: 17.5rem;
	margin-inline: -.5rem;
	padding-inline: .5rem;
	overflow-y: auto;
	scrollbar-width: thin;
	scrollbar-color: var(--f-filet-fonce) transparent;
}
.facette__rayon {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	margin-top: .75rem;
	padding-top: .75rem;
	border-top: 1px dashed var(--f-filet);
	color: var(--f-texte-doux);
	font-size: var(--f-taille-mini);
}
.facette__select,
.tri__choix {
	min-height: 40px;
	padding: 0 2.25rem 0 .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230e2239' stroke-width='1.5'/%3E%3C/svg%3E") right .75rem center / 11px no-repeat;
	color: var(--f-encre);
	font-size: var(--f-taille-petit);
	appearance: none;
	cursor: pointer;
}

/* Budget et surface */
.facette__bornes {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto;
	align-items: center;
	gap: .5rem;
	color: var(--f-libelle);
	font-size: var(--f-taille-mini);
}
.facette__nombre {
	width: 100%;
	min-height: 40px;
	padding: 0 .625rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	color: var(--f-encre);
	font-size: var(--f-taille-petit);
	font-variant-numeric: tabular-nums;
	-moz-appearance: textfield;
	appearance: textfield;
}
.facette__nombre::-webkit-inner-spin-button,
.facette__nombre::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.facette__nombre:focus { border-color: var(--f-accent); outline: none; }
.facette__tranches { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .75rem; }
.facette__tranches .puce { gap: .375rem; }
.puce__compte { color: var(--f-libelle); font-size: .6875rem; }
.puce[aria-pressed="true"] .puce__compte { color: rgba(255, 255, 255, .7); }
.puce.est-inactive { opacity: .42; pointer-events: none; }

/* Pièces et chambres : cases carrées */
.facette__cases-carrees { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .375rem; }
.case-carree {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 50px;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-s);
	color: var(--f-encre);
	font-size: var(--f-taille-petit);
	font-weight: 500;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe);
}
.case-carree input { position: absolute; opacity: 0; pointer-events: none; }
.case-carree small { color: var(--f-libelle); font-size: .6875rem; font-weight: 400; }
.case-carree:hover { border-color: var(--f-encre); }
.case-carree:has(input:checked) { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.case-carree:has(input:checked) small { color: rgba(255, 255, 255, .7); }
.case-carree:has(input:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.case-carree.est-inactive { opacity: .42; cursor: default; }
.case-carree.est-inactive:hover { border-color: var(--f-filet); }

/* Mobile et tablette : les facettes deviennent un panneau latéral (avec script seulement) */
@media (max-width: 1099.98px) {
	.js .page-resultats__filtres {
		position: fixed;
		inset: 0;
		z-index: 80;
		visibility: hidden;
		transition: visibility 0s linear 260ms;
	}
	.js .page-resultats__filtres::before {
		content: "";
		position: absolute;
		inset: 0;
		background: rgba(14, 34, 57, .5);
		opacity: 0;
		transition: opacity 260ms var(--f-courbe);
	}
	.js .facettes {
		position: relative;
		width: min(420px, 100%);
		height: 100%;
		box-shadow: var(--f-ombre-panneau);
		transform: translateX(-100%);
		transition: transform 260ms var(--f-courbe);
	}
	.js .facettes__entete { padding: .75rem 1.25rem; border-bottom: 1px solid var(--f-filet); }
	.js .facettes__fermer { display: inline-flex; }
	.js .facettes__corps { flex: 1; padding: .75rem 1.25rem 0; overflow-y: auto; overscroll-behavior: contain; }
	.js .facettes__pied { padding: .75rem 1.25rem calc(.75rem + env(safe-area-inset-bottom)); box-shadow: 0 -8px 24px rgba(14, 34, 57, .08); }
	.js .facettes__pied .bouton { display: inline-flex; flex: 1; max-width: 260px; }

	.facettes-ouvertes { overflow: hidden; }
	.facettes-ouvertes .page-resultats__filtres { visibility: visible; transition-delay: 0s; }
	.facettes-ouvertes .page-resultats__filtres::before { opacity: 1; }
	.facettes-ouvertes .facettes { transform: none; }
}

/* Barre au-dessus des résultats ---------------------------------------------------- */

.barre-resultats { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--f-filet); }
.barre-resultats__filtrer { display: none; gap: .5rem; min-height: 44px; }
.barre-resultats__filtrer .icone { width: 1.125rem; height: 1.125rem; }
.barre-resultats__pastille {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.25rem;
	height: 1.25rem;
	padding: 0 .3125rem;
	border-radius: var(--f-rayon-pilule);
	background: var(--f-jaune);
	color: var(--f-encre);
	font-size: .6875rem;
	letter-spacing: 0;
}
.barre-resultats__nombre { color: var(--f-texte-doux); font-size: var(--f-taille-petit); }
.barre-resultats__nombre strong { color: var(--f-encre); font-size: 1.125rem; font-weight: 600; }
.puces-actives { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; margin: 0; padding: 0; list-style: none; }
.puce--active { gap: .375rem; border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.puce--active:hover { background: var(--f-encre-survol); color: #fff; }
.puce__retirer { width: 1rem; height: 1rem; }
.barre-resultats__outils { display: flex; align-items: center; gap: .625rem; margin-left: auto; }
.tri { display: flex; align-items: center; gap: .625rem; }
.tri__libelle { color: var(--f-libelle); font-size: var(--f-taille-libelle); font-weight: 500; letter-spacing: var(--f-espacement-libelle); text-transform: uppercase; }

/* Interrupteur « Carte » */
.interrupteur-carte {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 40px;
	padding: 0 .625rem 0 .875rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: var(--f-taille-petit);
	font-weight: 500;
	cursor: pointer;
	transition: border-color var(--f-duree) var(--f-courbe);
}
.interrupteur-carte:hover,
.interrupteur-carte[aria-pressed="true"] { border-color: var(--f-encre); }
.interrupteur-carte .icone { width: 1.125rem; height: 1.125rem; }
.interrupteur-carte__glissiere { position: relative; flex: none; width: 34px; height: 20px; border-radius: var(--f-rayon-pilule); background: var(--f-filet-fonce); transition: background-color var(--f-duree) var(--f-courbe); }
.interrupteur-carte__glissiere::after {
	content: "";
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 3px rgba(14, 34, 57, .3);
	transition: transform var(--f-duree) var(--f-courbe);
}
.interrupteur-carte[aria-pressed="true"] .interrupteur-carte__glissiere { background: var(--f-accent); }
.interrupteur-carte[aria-pressed="true"] .interrupteur-carte__glissiere::after { transform: translateX(14px); }

@media (max-width: 1099.98px) {
	.js .barre-resultats__filtrer { display: inline-flex; }
	.barre-resultats__nombre { margin-right: auto; }
	.puces-actives { order: 5; width: 100%; }
}
@media (max-width: 639.98px) {
	.barre-resultats__outils { width: 100%; margin-left: 0; }
	.tri { flex: 1; min-width: 0; }
	.tri__libelle { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
	.tri__choix { width: 100%; }
	.puces-actives { order: 0; }
}

/* Chargement d'une nouvelle sélection */
.principal.est-en-chargement .resultats,
.principal.est-en-chargement .barre-resultats__nombre { opacity: .45; transition: opacity var(--f-duree) var(--f-courbe); }
.principal.est-en-chargement::before {
	content: "";
	position: fixed;
	top: var(--decalage-admin, 0px);
	left: 0;
	z-index: 90;
	width: 100%;
	height: 3px;
	background: var(--f-jaune);
	transform-origin: left;
	animation: fontan-chargement 1.2s var(--f-courbe) forwards;
}
@keyframes fontan-chargement { from { transform: scaleX(0); } to { transform: scaleX(.85); } }

/* Liste et carte ------------------------------------------------------------- */

.resultats { display: grid; gap: 1.5rem; padding-top: 1.75rem; }
.grille-biens { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 1.5rem 1.25rem; }
.resultats__aucun { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; max-width: 62ch; padding: 2.5rem 0; color: var(--f-texte-doux); }
.resultats__aucun-icone { width: 2.5rem; height: 2.5rem; color: var(--f-filet-fonce); }
.resultats__aucun-titre { color: var(--f-encre); font-size: 1.25rem; font-weight: 500; }

.carte-bien.est-active { border-color: var(--f-accent); box-shadow: 0 0 0 1px var(--f-accent), 0 12px 28px rgba(14, 34, 57, .12); }

.resultats__carte { display: flex; flex-direction: column; }
.resultats__carte[hidden] { display: none; }
.carte-resultats { flex: 1; width: 100%; min-height: 360px; border-radius: var(--f-rayon-m); background: var(--f-fond-doux); }
.resultats__legende { margin-top: .625rem; color: var(--f-libelle); font-size: .75rem; }

/* Carte ouverte sur ordinateur : liste en cartes horizontales à gauche, carte collante à droite */
@media (min-width: 1100px) {
	.resultats.avec-carte { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); align-items: start; }
	.resultats.avec-carte .resultats__carte {
		position: sticky;
		top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 1rem);
		height: calc(100vh - var(--decalage-admin, 0px) - var(--f-hauteur-entete) - 2rem);
	}
	.resultats.avec-carte .grille-biens { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
	.resultats.avec-carte .carte-bien { flex-direction: row; height: auto; }
	.resultats.avec-carte .carte-bien:hover { transform: none; }
	.resultats.avec-carte .carte-bien__visuel { flex: 0 0 40%; aspect-ratio: auto; min-height: 180px; }
	.resultats.avec-carte .carte-bien__corps { padding: .875rem 1rem; }
}

/* Mobile et tablette : la carte prend la place de la liste */
@media (max-width: 1099.98px) {
	.resultats.avec-carte .resultats__liste { display: none; }
	.resultats.avec-carte .carte-resultats { flex: none; height: 68vh; height: 68svh; }
}

/* Marqueurs prix (Leaflet) --------------------------------------------------- */

.leaflet-container { font-family: var(--f-police); }
.leaflet-div-icon.marqueur-prix { border: 0; background: none; }
.marqueur-prix span {
	position: absolute;
	display: inline-block;
	padding: .3125rem .625rem;
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
	box-shadow: 0 2px 6px rgba(14, 34, 57, .25);
	transform: translate(-50%, calc(-100% - 6px));
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe);
}
.marqueur-prix span::after {
	content: "";
	position: absolute;
	bottom: -5px;
	left: 50%;
	border: 5px solid transparent;
	border-top-color: #fff;
	border-bottom: 0;
	transform: translateX(-50%);
}
.marqueur-prix--zone span { transform: translate(-50%, -50%); }
.marqueur-prix--zone span::after { display: none; }
.marqueur-prix:hover span,
.marqueur-prix.est-actif span { background: var(--f-encre); color: #fff; }
.marqueur-prix:hover span::after,
.marqueur-prix.est-actif span::after { border-top-color: var(--f-encre); }
.zone-approximative { fill: var(--f-accent); fill-opacity: .1; stroke: var(--f-accent); stroke-width: 1.5; stroke-dasharray: 5 4; }

.leaflet-popup-content { margin: .75rem; }
.popup-bien { display: flex; flex-direction: column; gap: .25rem; color: var(--f-encre); font-size: var(--f-taille-mini); }
.popup-bien img { width: 100%; aspect-ratio: 4 / 3; margin-bottom: .375rem; border-radius: var(--f-rayon-s); object-fit: cover; }
.popup-bien__titre { font-size: var(--f-taille-petit); font-weight: 600; }
.popup-bien__lieu { color: var(--f-texte-doux); }
.popup-bien__prix { font-size: .9375rem; }

/* Maillage : « poursuivre la recherche » ------------------------------------------ */

.maillage { padding-bottom: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--f-filet); }
.maillage__groupe + .maillage__groupe { margin-top: clamp(2.5rem, 5vw, 3.5rem); }
.maillage__intitule {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1.25rem;
	color: var(--f-encre);
	font-size: .9375rem;
	font-weight: 600;
}
.maillage__intitule::after { content: ""; flex: 1; height: 1px; background: var(--f-filet); }

/* Communes : cartes photo */
.liens-communes { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
.lien-commune {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
	transition: transform 320ms var(--f-courbe), box-shadow 320ms var(--f-courbe), border-color 320ms var(--f-courbe);
}
.lien-commune:hover,
.lien-commune:focus-within { border-color: transparent; box-shadow: 0 18px 40px rgba(14, 34, 57, .16), 0 2px 6px rgba(14, 34, 57, .06); transform: translateY(-4px); }
.lien-commune:has(.lien-commune__ancre:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 3px; }
.lien-commune__visuel {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background:
		radial-gradient(120% 90% at 100% 0%, rgba(30, 90, 168, .85) 0%, rgba(30, 90, 168, 0) 60%),
		var(--f-encre);
}
.lien-commune__visuel img { width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--f-courbe); }
.lien-commune:hover .lien-commune__visuel img { transform: scale(1.06); }
.lien-commune__visuel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(14, 34, 57, .55) 0%, rgba(14, 34, 57, 0) 55%); pointer-events: none; }
.lien-commune__sans-photo { display: flex; align-items: center; justify-content: center; height: 100%; color: rgba(255, 255, 255, .28); }
.lien-commune__sans-photo .icone { width: 3.5rem; height: 3.5rem; transition: transform 700ms var(--f-courbe); }
.lien-commune:hover .lien-commune__sans-photo .icone { transform: translateY(-4px) scale(1.08); }
.lien-commune__compte {
	position: absolute;
	bottom: .75rem;
	left: .75rem;
	z-index: 1;
	padding: .25rem .625rem;
	border-radius: var(--f-rayon-pilule);
	background: var(--f-jaune);
	color: var(--f-encre);
	font-size: .75rem;
	font-weight: 600;
}
.lien-commune__corps { display: flex; flex-direction: column; gap: .3125rem; padding: 1rem 4rem 1.125rem 1.125rem; }
.lien-commune__ancre { color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; line-height: 1.3; }
.lien-commune__ancre::after { content: ""; position: absolute; inset: 0; z-index: 2; }
.lien-commune__ancre:focus-visible { outline: none; }
.lien-commune__detail { display: flex; align-items: center; gap: .25rem; color: var(--f-libelle); font-size: var(--f-taille-mini); }
.lien-commune__detail .icone { flex: none; width: .9375rem; height: .9375rem; }
.lien-commune__fleche {
	position: absolute;
	right: 1rem;
	bottom: 1.125rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.375rem;
	height: 2.375rem;
	border-radius: 50%;
	background: var(--f-fond-doux);
	color: var(--f-encre);
	transition: background-color 320ms var(--f-courbe), transform 320ms var(--f-courbe);
}
.lien-commune__fleche .icone { width: 1.125rem; height: 1.125rem; }
.lien-commune:hover .lien-commune__fleche { background: var(--f-jaune); transform: translateX(3px); }

/* Types de bien : tuiles à icône */
.liens-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: .75rem; margin: 0; padding: 0; list-style: none; }
.lien-type {
	position: relative;
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1rem 1.125rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
	transition: background-color 280ms var(--f-courbe), border-color 280ms var(--f-courbe);
}
.lien-type:hover,
.lien-type:focus-within { border-color: var(--f-encre); background: var(--f-encre); }
.lien-type:has(.lien-type__ancre:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 3px; }
.lien-type__badge {
	display: flex;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: var(--f-rayon-m);
	background: var(--f-accent-clair);
	color: var(--f-accent);
	transition: background-color 280ms var(--f-courbe), color 280ms var(--f-courbe), transform 280ms var(--f-courbe);
}
.lien-type__badge .icone { width: 1.5rem; height: 1.5rem; }
.lien-type:hover .lien-type__badge,
.lien-type:focus-within .lien-type__badge { background: var(--f-jaune); color: var(--f-encre); transform: rotate(-6deg); }
.lien-type__corps { display: flex; flex: 1; flex-direction: column; gap: .125rem; min-width: 0; }
.lien-type__ancre { color: var(--f-encre); font-size: .9375rem; font-weight: 600; line-height: 1.3; transition: color 280ms var(--f-courbe); }
.lien-type__ancre::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.lien-type__ancre:focus-visible { outline: none; }
.lien-type__compte { color: var(--f-libelle); font-size: var(--f-taille-mini); transition: color 280ms var(--f-courbe); }
.lien-type__fleche { flex: none; color: var(--f-libelle); transition: color 280ms var(--f-courbe), transform 280ms var(--f-courbe); }
.lien-type__fleche .icone { width: 1.125rem; height: 1.125rem; }
.lien-type:hover .lien-type__ancre,
.lien-type:focus-within .lien-type__ancre { color: #fff; }
.lien-type:hover .lien-type__compte,
.lien-type:focus-within .lien-type__compte { color: rgba(255, 255, 255, .7); }
.lien-type:hover .lien-type__fleche,
.lien-type:focus-within .lien-type__fleche { color: var(--f-jaune); transform: translate(2px, -2px); }

/* Bandeau : élargir, basculer achat / location, estimer */
.bandeau-maillage {
	position: relative;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	gap: 2rem 2.5rem;
	margin-top: clamp(2.5rem, 5vw, 3.5rem);
	padding: clamp(1.5rem, 4vw, 2.5rem);
	overflow: hidden;
	border-radius: var(--f-rayon-m);
	background:
		radial-gradient(70% 120% at 100% 0%, rgba(30, 90, 168, .7) 0%, rgba(30, 90, 168, 0) 60%),
		var(--f-encre);
	color: #fff;
}
.bandeau-maillage__bloc .surtitre { margin-bottom: .875rem; }
.bandeau-maillage__action { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 1rem; }
.bandeau-maillage__question { font-size: 1.25rem; font-weight: 300; line-height: 1.3; }
.pastilles { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.pastille {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 40px;
	padding: .3125rem .375rem .3125rem .875rem;
	border: 1px solid rgba(255, 255, 255, .24);
	border-radius: var(--f-rayon-pilule);
	transition: background-color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.pastille a { color: #fff; font-size: var(--f-taille-petit); font-weight: 500; transition: color var(--f-duree) var(--f-courbe); }
.pastille a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.pastille a:focus-visible { outline: none; }
.pastille:has(a:focus-visible) { outline: 2px solid var(--f-jaune); outline-offset: 2px; }
.pastille__compte {
	min-width: 1.625rem;
	padding: .125rem .4375rem;
	border-radius: var(--f-rayon-pilule);
	background: rgba(255, 255, 255, .14);
	font-size: .75rem;
	font-weight: 600;
	text-align: center;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe);
}
.pastille:hover { border-color: #fff; background: #fff; }
.pastille:hover a { color: var(--f-encre); }
.pastille:hover .pastille__compte { background: var(--f-jaune); color: var(--f-encre); }

/* Apparition au défilement (classe posée par l'en-tête, retirée si le visiteur réduit les animations) */
.js-revele .revele:not(.est-visible) { opacity: 0; }
.js-revele .revele.est-visible { animation: fontan-revele 640ms var(--f-courbe) backwards; animation-delay: calc(min(var(--rang, 0), 7) * 70ms); }
@keyframes fontan-revele { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: reduce) {
	.lien-commune,
	.lien-commune__visuel img,
	.lien-type__badge,
	.lien-commune__fleche { transition: none; }
	.lien-commune:hover,
	.lien-commune:focus-within,
	.lien-commune:hover .lien-commune__visuel img,
	.lien-type:hover .lien-type__badge { transform: none; }
	.principal.est-en-chargement::before { animation: none; transform: scaleX(.85); }
}

/* Texte de la page et chiffres du marché (fin de page) ------------------------------ */

.texte-marche { display: grid; gap: 2.5rem; align-items: start; }
@media (min-width: 960px) { .texte-marche { grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 4rem; } }
.texte-marche__texte { max-width: 68ch; }
.chiffres-cles { display: flex; flex-direction: column; gap: 1.25rem; }
.chiffres-cles__liste { display: flex; flex-direction: column; margin: 0; }
.chiffre { display: flex; flex-direction: column; gap: .25rem; padding-block: 1rem; border-top: 1px solid var(--f-filet); }
.chiffre dt { color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.chiffre dd { display: flex; flex-direction: column; margin: 0; }
.chiffre__valeur { color: var(--f-encre); font-size: 1.625rem; font-weight: 600; line-height: 1.2; }
.chiffre--principal .chiffre__valeur { color: var(--f-accent); }
.chiffre__detail { color: var(--f-libelle); font-size: .75rem; }
.chiffres-cles__source { color: var(--f-libelle); font-size: .6875rem; line-height: 1.5; }

.tableau--compact { font-size: var(--f-taille-mini); }
.tableau--compact thead th { padding: .5rem 0; border-bottom: 1px solid var(--f-filet); background: none; color: var(--f-libelle); }
.tableau--compact td,
.tableau--compact tbody th { padding: .5rem 0; }
.tableau--compact .nombre { padding-left: .75rem; }
/* ==========================================================================
   Fiche d'un bien : galerie, titre et chiffres clés, carte de prix, sections,
   diagnostics, repère du marché, demande de visite, visionneuse, impression
   ========================================================================== */

/* Haut de page : fil d'Ariane et outils ------------------------------------------ */

.fiche__haut { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding-block: 1.25rem 1rem; }
.fiche__outils { display: flex; gap: .5rem; }
.outil {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	min-height: 40px;
	padding: 0 .875rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: var(--f-taille-mini);
	font-weight: 500;
	cursor: pointer;
	transition: border-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe);
}
.outil:hover { border-color: var(--f-encre); }
.outil .icone { width: 1.125rem; height: 1.125rem; }
.outil--favori[aria-pressed="true"] { border-color: var(--f-accent); color: var(--f-accent); }
@media (max-width: 639.98px) {
	.fiche__haut .fil-ariane { width: 100%; }
	.outil { width: 40px; padding: 0; justify-content: center; }
	.outil span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
	.outil--ordinateur { display: none; }
}

/* Bien vendu ou loué */
.bandeau-vendu {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.5rem;
	margin-bottom: 1rem;
	padding: 1.25rem 1.5rem;
	border-radius: var(--f-rayon-m);
	background: var(--f-encre);
	color: rgba(255, 255, 255, .8);
	font-size: var(--f-taille-petit);
}
.bandeau-vendu__icone { flex: none; width: 2rem; height: 2rem; color: var(--f-jaune); }
.bandeau-vendu__texte { flex: 1; min-width: 220px; }
.bandeau-vendu__titre { color: #fff; font-size: 1.125rem; font-weight: 500; }
.bandeau-vendu__actions { display: flex; flex-wrap: wrap; gap: .625rem; }

/* Galerie ------------------------------------------------------------------------ */

.galerie { position: relative; }
.galerie__photo { position: relative; display: block; overflow: hidden; background: var(--f-fond-doux); }
.galerie__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--f-courbe); }
.galerie__photo::after { content: ""; position: absolute; inset: 0; background: rgba(14, 34, 57, 0); transition: background-color 320ms var(--f-courbe); pointer-events: none; }
.galerie__photo:hover img { transform: scale(1.04); }
.galerie__photo:hover::after { background: rgba(14, 34, 57, .12); }
.galerie__photo:focus-visible { outline: 3px solid var(--f-focus); outline-offset: -3px; }
.galerie__etiquettes { position: absolute; top: 1rem; left: 1rem; z-index: 2; display: flex; gap: .375rem; margin: 0; pointer-events: none; }
.galerie__tout {
	position: absolute;
	right: 1rem;
	bottom: 1rem;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 40px;
	padding: 0 1rem;
	border: 0;
	border-radius: var(--f-rayon-s);
	background: #fff;
	color: var(--f-encre);
	font-size: var(--f-taille-mini);
	font-weight: 500;
	box-shadow: 0 4px 16px rgba(14, 34, 57, .2);
	cursor: pointer;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe);
}
.galerie__tout:hover { background: var(--f-encre); color: #fff; }
.galerie__tout .icone { width: 1.125rem; height: 1.125rem; }
.galerie__compteur {
	position: absolute;
	right: .75rem;
	bottom: .75rem;
	z-index: 2;
	padding: .25rem .625rem;
	border-radius: var(--f-rayon-pilule);
	background: rgba(14, 34, 57, .72);
	color: #fff;
	font-size: .75rem;
	font-weight: 500;
	font-variant-numeric: tabular-nums;
	pointer-events: none;
}

/* Ordinateur et tablette : mosaïque de cinq photos au plus */
@media (min-width: 768px) {
	.galerie__piste {
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		grid-template-rows: repeat(2, minmax(0, 1fr));
		gap: .5rem;
		height: clamp(340px, 46vw, 600px);
		overflow: hidden;
		border-radius: var(--f-rayon-m);
	}
	.galerie__photo:nth-child(n + 6) { display: none; }
	.galerie__photo:first-child { grid-column: 1 / 3; grid-row: 1 / 3; }
	.galerie--1 .galerie__photo:first-child { grid-column: 1 / -1; }
	.galerie--2 .galerie__photo:nth-child(2) { grid-column: 3 / 5; grid-row: 1 / 3; }
	.galerie--3 .galerie__photo:nth-child(n + 2) { grid-column: 3 / 5; }
	.galerie--4 .galerie__photo:nth-child(2) { grid-column: 3 / 5; }
	.galerie__compteur { display: none; }
}

/* Mobile : bandeau pleine largeur, une photo à la fois, défilement au doigt */
@media (max-width: 767.98px) {
	.galerie { margin-inline: calc(-1 * var(--f-goutiere)); }
	.galerie__piste {
		display: flex;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.galerie__piste::-webkit-scrollbar { display: none; }
	.galerie__photo { flex: 0 0 100%; aspect-ratio: 4 / 3; scroll-snap-align: start; }
	.galerie__photo:hover img { transform: none; }
	.galerie__tout { display: none; }
	.galerie__etiquettes { top: .75rem; left: .75rem; }
}

/* Corps : titre, carte de prix, contenu ------------------------------------------ */

.fiche__corps {
	display: grid;
	grid-template-areas: "entete" "aside" "principal";
	gap: 1.75rem;
	padding-block: 1.75rem clamp(3rem, 6vw, 5rem);
}
.fiche__entete { grid-area: entete; }
.fiche__aside { grid-area: aside; }
.fiche__principal { grid-area: principal; min-width: 0; }
@media (min-width: 1100px) {
	.fiche__corps {
		grid-template-columns: minmax(0, 1fr) 380px;
		grid-template-rows: auto 1fr;
		grid-template-areas: "entete aside" "principal aside";
		column-gap: clamp(3rem, 5vw, 5.5rem);
		row-gap: 0;
		padding-top: 2.5rem;
	}
	.fiche__aside { position: sticky; top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 1.5rem); align-self: start; }
}

.fiche__genre { color: var(--f-libelle); font-size: var(--f-taille-libelle); font-weight: 500; letter-spacing: var(--f-espacement-libelle); text-transform: uppercase; }
.fiche__titre { margin-top: .625rem; color: var(--f-encre); font-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.625rem); font-weight: 300; line-height: 1.12; letter-spacing: -.02em; }
.fiche__titre-lieu { font-weight: 600; }

/* Chiffres clés */
.chiffres-bien { display: flex; flex-wrap: wrap; gap: .625rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.chiffre-bien {
	display: flex;
	align-items: center;
	gap: .625rem;
	padding: .625rem 1rem .625rem .625rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	color: var(--f-texte-doux);
	font-size: var(--f-taille-mini);
	line-height: 1.3;
}
.chiffre-bien__icone {
	flex: none;
	width: 2.25rem;
	height: 2.25rem;
	padding: .4375rem;
	border-radius: 50%;
	background: var(--f-accent-clair);
	color: var(--f-accent);
}
.chiffre-bien strong { display: block; color: var(--f-encre); font-size: 1rem; font-weight: 600; }
@media (max-width: 479.98px) {
	.chiffres-bien { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Sections */
.fiche__section { margin-top: clamp(2rem, 4vw, 2.75rem); padding-top: clamp(2rem, 4vw, 2.75rem); border-top: 1px solid var(--f-filet); }
.fiche__principal > .fiche__section:first-child { margin-top: 0; }
@media (min-width: 1100px) { .fiche__principal > .fiche__section:first-child { margin-top: 2.5rem; } }
.fiche__intertitre { margin-bottom: 1.25rem; color: var(--f-encre); font-size: 1.375rem; font-weight: 500; letter-spacing: -.01em; }
.fiche__description { max-width: 70ch; font-size: 1rem; line-height: 1.75; }
.fiche__note { display: flex; align-items: flex-start; gap: .625rem; margin-top: 1.25rem; color: var(--f-texte); font-size: var(--f-taille-petit); line-height: 1.6; }
.fiche__note .icone { flex: none; width: 1.25rem; height: 1.25rem; margin-top: .125rem; color: var(--f-accent); }
.fiche__source { margin-top: .75rem; color: var(--f-libelle); font-size: .75rem; line-height: 1.5; }

/* Prestations */
.prestations { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.prestation {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem 1rem .5rem .75rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	color: var(--f-encre);
	font-size: var(--f-taille-petit);
	font-weight: 500;
}
.prestation__icone { width: 1.25rem; height: 1.25rem; color: var(--f-accent); }

/* Caractéristiques détaillées */
.details-bien { display: grid; gap: 1.75rem 3rem; }
@media (min-width: 640px) { .details-bien { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.details-bien__titre { margin-bottom: .375rem; color: var(--f-accent); font-size: var(--f-taille-libelle); font-weight: 600; letter-spacing: var(--f-espacement-libelle); text-transform: uppercase; }
.details-bien__liste,
.detail-prix { margin: 0; }
.details-bien__liste div,
.detail-prix div { display: flex; justify-content: space-between; gap: 1rem; padding-block: .6875rem; border-bottom: 1px solid var(--f-filet); font-size: var(--f-taille-petit); }
.details-bien__liste dt,
.detail-prix dt { color: var(--f-texte-doux); }
.details-bien__liste dd,
.detail-prix dd { margin: 0; color: var(--f-encre); font-weight: 500; text-align: right; }
.detail-prix { max-width: 560px; }
.detail-prix div:first-child dd { font-size: 1rem; font-weight: 600; }

/* Mentions obligatoires */
.mentions-bien { display: flex; flex-direction: column; gap: .5rem; margin: 1.5rem 0 0; padding: 0; list-style: none; color: var(--f-texte-doux); font-size: var(--f-taille-mini); line-height: 1.6; }
.mentions-bien li { padding-left: .875rem; border-left: 2px solid var(--f-filet); }
.mentions-bien a { color: var(--f-accent); text-decoration: underline; text-underline-offset: 3px; }
.mentions-bien .a-renseigner { background: var(--f-jaune-clair); color: var(--f-encre); }

/* Diagnostics : échelles aux couleurs officielles du DPE */
.diagnostics { display: grid; gap: 2rem 3rem; }
@media (min-width: 640px) { .diagnostics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.diagnostic { margin: 0; }
.diagnostic__titre { margin-bottom: .875rem; color: var(--f-encre); font-size: var(--f-taille-petit); font-weight: 600; }
.echelle { display: flex; flex-direction: column; gap: 3px; }
.echelle__classe { display: flex; align-items: center; gap: .75rem; min-height: 22px; }
.echelle__lettre {
	display: flex;
	flex: none;
	align-items: center;
	width: calc(2.75rem + var(--rang, 0) * 1.5rem);
	height: 22px;
	padding-left: .5rem;
	background: var(--echelle-fond);
	color: var(--echelle-texte, #fff);
	font-size: .6875rem;
	font-weight: 600;
	clip-path: polygon(0 0, calc(100% - 9px) 0, 100% 50%, calc(100% - 9px) 100%, 0 100%);
	transform-origin: left center;
}
.echelle__classe.est-active .echelle__lettre { height: 38px; padding-left: .75rem; font-size: 1.125rem; clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%); }
.echelle__valeur { color: var(--f-texte-doux); font-size: var(--f-taille-mini); line-height: 1.3; }
.echelle__valeur strong { color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.echelle--dpe .echelle__classe--a { --echelle-fond: #009c6d; }
.echelle--dpe .echelle__classe--b { --echelle-fond: #52b153; }
.echelle--dpe .echelle__classe--c { --echelle-fond: #a3cf3e; --echelle-texte: var(--f-encre); }
.echelle--dpe .echelle__classe--d { --echelle-fond: #f6e804; --echelle-texte: var(--f-encre); }
.echelle--dpe .echelle__classe--e { --echelle-fond: #f0b50f; --echelle-texte: var(--f-encre); }
.echelle--dpe .echelle__classe--f { --echelle-fond: #eb8235; }
.echelle--dpe .echelle__classe--g { --echelle-fond: #d7221f; }
.echelle--ges .echelle__classe--a { --echelle-fond: #a4dbf8; --echelle-texte: var(--f-encre); }
.echelle--ges .echelle__classe--b { --echelle-fond: #8cb4d3; --echelle-texte: var(--f-encre); }
.echelle--ges .echelle__classe--c { --echelle-fond: #7792b1; }
.echelle--ges .echelle__classe--d { --echelle-fond: #5f7090; }
.echelle--ges .echelle__classe--e { --echelle-fond: #4a5073; }
.echelle--ges .echelle__classe--f { --echelle-fond: #373453; }
.echelle--ges .echelle__classe--g { --echelle-fond: #281b35; }
.js-revele .revele.est-visible .echelle__lettre { animation: fontan-echelle 640ms var(--f-courbe) backwards; animation-delay: calc(200ms + var(--rang, 0) * 60ms); }
@keyframes fontan-echelle { from { opacity: 0; transform: scaleX(.3); } }

/* Localisation et repère du marché */
.fiche__lieu { display: flex; align-items: center; gap: .5rem; color: var(--f-encre); font-size: var(--f-taille-petit); font-weight: 500; }
.fiche__lieu .icone { flex: none; width: 1.25rem; height: 1.25rem; color: var(--f-accent); }
.carte-fiche { height: clamp(280px, 38vw, 400px); margin-top: 1rem; overflow: hidden; border-radius: var(--f-rayon-m); background: var(--f-fond-doux); }
.carte-fiche.est-indisponible { display: flex; align-items: center; justify-content: center; color: var(--f-libelle); font-size: var(--f-taille-mini); }
.leaflet-div-icon.marqueur-fiche { border: 0; background: none; }
.marqueur-fiche span {
	display: block;
	width: 28px;
	height: 28px;
	border: 3px solid #fff;
	border-radius: 50% 50% 50% 0;
	background: var(--f-encre);
	box-shadow: 0 3px 10px rgba(14, 34, 57, .35);
	transform: rotate(-45deg);
}
.marqueur-fiche span::after { content: ""; position: absolute; top: 50%; left: 50%; width: 8px; height: 8px; background: var(--f-jaune); transform: translate(-50%, -50%) rotate(45deg); }

.repere-marche { margin-top: 1.75rem; padding: clamp(1.25rem, 3vw, 1.75rem); border: 1px solid var(--f-filet); border-radius: var(--f-rayon-m); }
.repere-marche__titre { color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.repere-marche__barres { display: flex; flex-direction: column; gap: 1rem; margin-block: 1.25rem; }
.barre-prix { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .375rem 1rem; }
.barre-prix__libelle { grid-column: 1 / -1; color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.barre-prix__piste { height: 10px; overflow: hidden; border-radius: var(--f-rayon-pilule); background: var(--f-fond-doux); }
.barre-prix__jauge { display: block; width: calc(var(--part, 1) * 100%); height: 100%; border-radius: inherit; background: var(--f-indice); transform-origin: left center; }
.barre-prix--bien .barre-prix__jauge { background: var(--f-accent); }
.barre-prix__valeur { color: var(--f-encre); font-size: var(--f-taille-petit); font-weight: 600; white-space: nowrap; }
.repere-marche__texte { color: var(--f-texte); font-size: var(--f-taille-petit); line-height: 1.6; }
.js-revele .revele.est-visible .barre-prix__jauge { animation: fontan-jauge 900ms var(--f-courbe) backwards 250ms; }
@keyframes fontan-jauge { from { transform: scaleX(0); } }

/* Demande de visite */
.fiche__section.contact-bien { display: grid; gap: 1.75rem 3rem; padding: clamp(1.5rem, 4vw, 2.5rem); border-top: 0; border-radius: var(--f-rayon-m); background: var(--f-fond-doux); }
@media (min-width: 900px) { .fiche__section.contact-bien { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); } }
.contact-bien__intro { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; color: var(--f-texte); font-size: var(--f-taille-petit); line-height: 1.6; }
.contact-bien__intro .fiche__intertitre { margin-bottom: 0; }
.contact-bien__telephone { display: inline-flex; align-items: center; gap: .625rem; color: var(--f-encre); font-size: 1.375rem; font-weight: 600; letter-spacing: -.01em; }
.contact-bien__telephone .icone { width: 1.5rem; height: 1.5rem; color: var(--f-accent); }
.contact-bien__telephone:hover { color: var(--f-accent); }
.contact-bien__agence { display: flex; align-items: baseline; gap: .625rem; color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.contact-bien__agence .agence__losange { width: 8px; height: 8px; }
.formulaire-visite { display: flex; flex-direction: column; gap: 1rem; }
.formulaire-visite .champ__saisie { background: #fff; }
.formulaire-visite__ligne { display: grid; gap: 1rem; }
@media (min-width: 560px) { .formulaire-visite__ligne { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.formulaire-visite__objet { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; border: 0; }
.puce-choix { position: relative; cursor: pointer; }
.puce-choix input { position: absolute; opacity: 0; pointer-events: none; }
.puce-choix span {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 1rem;
	border: 1px solid var(--f-filet-fonce);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: var(--f-taille-mini);
	font-weight: 500;
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.puce-choix input:checked + span { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.puce-choix input:focus-visible + span { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.formulaire-visite .bouton { align-self: flex-start; }
.formulaire-visite__rgpd { color: var(--f-libelle); font-size: .75rem; line-height: 1.5; }
@media (max-width: 559.98px) { .formulaire-visite .bouton { align-self: stretch; } }

/* Carte de prix ------------------------------------------------------------------ */

.carte-prix {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .5rem;
	padding: clamp(1.25rem, 3vw, 1.75rem);
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
	box-shadow: var(--f-ombre-carte);
}
.carte-prix__montant { color: var(--f-encre); font-size: 2rem; font-weight: 600; line-height: 1.1; letter-spacing: -.01em; }
.carte-prix__precision { color: var(--f-texte-doux); font-size: var(--f-taille-mini); line-height: 1.5; }
.carte-prix__m2 { color: var(--f-libelle); font-size: var(--f-taille-mini); }
.carte-prix__actions { display: flex; flex-direction: column; gap: .625rem; width: 100%; margin-top: .75rem; }
.carte-prix__actions .bouton { gap: .5rem; }
.carte-prix__actions .icone { width: 1.125rem; height: 1.125rem; }
.carte-prix__confiance { display: flex; flex-direction: column; gap: .5rem; width: 100%; margin: .75rem 0 0; padding: 1rem 0 0; border-top: 1px solid var(--f-filet); list-style: none; color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.carte-prix__confiance li { display: flex; align-items: center; gap: .5rem; }
.carte-prix__confiance .icone { flex: none; width: 1.125rem; height: 1.125rem; color: var(--f-accent); }
.carte-prix__confiance a { display: inline-flex; align-items: center; gap: .375rem; color: inherit; }
.carte-prix__confiance a:hover { color: var(--f-encre); }
.carte-prix__confiance strong { color: var(--f-encre); font-weight: 600; }
.carte-prix__logo { flex: none; width: auto; }

/* Biens similaires et liens --------------------------------------------------------- */

@media (min-width: 1100px) { .grille-biens--quatre { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.liens-fiche { padding-block: clamp(2.5rem, 5vw, 3.5rem); }
.liens-fiche__liste { display: flex; flex-wrap: wrap; gap: .5rem; margin: .875rem 0 0; padding: 0; list-style: none; }
.lien-fiche {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 44px;
	padding: .375rem .625rem .375rem 1rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	transition: background-color var(--f-duree) var(--f-courbe), border-color var(--f-duree) var(--f-courbe);
}
.lien-fiche a { color: var(--f-encre); font-size: var(--f-taille-petit); font-weight: 500; transition: color var(--f-duree) var(--f-courbe); }
.lien-fiche a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.lien-fiche a:focus-visible { outline: none; }
.lien-fiche:has(a:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.lien-fiche__compte { min-width: 1.625rem; padding: .125rem .4375rem; border-radius: var(--f-rayon-pilule); background: var(--f-fond-doux); color: var(--f-texte-doux); font-size: .75rem; font-weight: 600; text-align: center; transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe); }
.lien-fiche__fleche { width: 1rem; height: 1rem; color: var(--f-libelle); transition: color var(--f-duree) var(--f-courbe), transform var(--f-duree) var(--f-courbe); }
.lien-fiche:hover { border-color: var(--f-encre); background: var(--f-encre); }
.lien-fiche:hover a { color: #fff; }
.lien-fiche:hover .lien-fiche__compte { background: var(--f-jaune); color: var(--f-encre); }
.lien-fiche:hover .lien-fiche__fleche { color: var(--f-jaune); transform: translate(2px, -2px); }

/* Barre de contact (mobile et tablette) --------------------------------------------- */

.barre-contact { display: none; }
@media (max-width: 1099.98px) {
	.barre-contact {
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 45;
		display: flex;
		align-items: center;
		gap: .75rem;
		padding: .625rem var(--f-goutiere) calc(.625rem + env(safe-area-inset-bottom));
		border-top: 1px solid var(--f-filet);
		background: #fff;
		box-shadow: 0 -8px 24px rgba(14, 34, 57, .1);
		transform: translateY(110%);
		transition: transform 280ms var(--f-courbe);
	}
	.barre-contact.est-visible { transform: none; }
	.barre-contact__prix { display: flex; flex: 1; flex-direction: column; min-width: 0; line-height: 1.25; }
	.barre-contact__prix strong { color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; }
	.barre-contact__prix span { overflow: hidden; color: var(--f-libelle); font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
	.barre-contact__appel { display: flex; flex: none; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--f-filet); border-radius: 50%; color: var(--f-encre); }
	.barre-contact .bouton { flex: none; }
	.single-fontan_bien .pied { padding-bottom: calc(var(--f-section) + 72px); }
}

/* Visionneuse plein écran ------------------------------------------------------------ */

html.visionneuse-ouverte { overflow: hidden; }
.visionneuse {
	width: 100vw;
	max-width: none;
	height: 100vh;
	height: 100dvh;
	max-height: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: rgba(8, 18, 31, .97);
	color: #fff;
}
.visionneuse[open] { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.visionneuse::backdrop { background: transparent; }
.visionneuse__barre { display: flex; align-items: center; justify-content: space-between; padding: .75rem clamp(1rem, 3vw, 2rem); }
.visionneuse__compteur { color: rgba(255, 255, 255, .8); font-size: var(--f-taille-mini); font-variant-numeric: tabular-nums; }
.visionneuse__fermer,
.visionneuse__fleche {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .1);
	color: #fff;
	cursor: pointer;
	transition: background-color var(--f-duree) var(--f-courbe);
}
.visionneuse__fermer:hover,
.visionneuse__fleche:hover { background: rgba(255, 255, 255, .22); }
.visionneuse__fermer .icone,
.visionneuse__fleche .icone { width: 1.625rem; height: 1.625rem; }
.visionneuse__scene { display: flex; align-items: center; justify-content: center; min-height: 0; margin: 0; padding: 0 clamp(0rem, 7vw, 6rem) clamp(1rem, 3vw, 2rem); }
.visionneuse__scene img { max-width: 100%; max-height: 100%; object-fit: contain; opacity: 0; transition: opacity 240ms var(--f-courbe); user-select: none; }
.visionneuse__scene img.est-chargee { opacity: 1; }
.visionneuse__fleche { position: absolute; top: 50%; transform: translateY(-50%); }
.visionneuse__fleche--precedente { left: clamp(.5rem, 2vw, 1.5rem); }
.visionneuse__fleche--suivante { right: clamp(.5rem, 2vw, 1.5rem); }
@media (max-width: 767.98px) {
	.visionneuse__fleche { top: auto; bottom: 1rem; transform: none; }
	.visionneuse__scene { padding-bottom: 5rem; }
}

@media (prefers-reduced-motion: reduce) {
	.galerie__photo img,
	.visionneuse__scene img,
	.barre-contact { transition: none; }
	.galerie__photo:hover img { transform: none; }
}

/* Impression : la fiche seule, sans navigation ni formulaires ----------------------- */

@media print {
	.entete, .pied, .lien-evitement, .fiche__haut, .galerie__tout, .galerie__compteur, .galerie__etiquettes,
	.barre-contact, .carte-prix__actions, .contact-bien, .similaires, .liens-fiche, .carte-fiche,
	.visionneuse, .bandeau-vendu__actions, [id^="cookieadmin"], [class^="cookieadmin"] { display: none !important; }
	.galerie__piste { display: block; height: auto; }
	.galerie__photo:not(:first-child) { display: none; }
	.galerie__photo:first-child { height: 9cm; }
	.fiche__corps { display: block; padding: 0; }
	.fiche__aside { position: static; margin-block: 1rem; }
	.carte-prix { box-shadow: none; }
	.fiche__section { break-inside: avoid; }
	.revele { opacity: 1 !important; animation: none !important; }
	.echelle__lettre { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}
/* ==========================================================================
   Moteur de recherche de l'accueil (parts/moteur.php, assets/js/moteur.js)
   et variante du héros gardée en réserve (gabarit « Accueil, héros de test »)
   Composition centrée : texte et moteur sur l'aplat bleu nuit, photo panoramique dessous,
   barre de recherche à cheval sur son bord haut. Moteur à volet unique.
   ========================================================================== */

.heros-v2 {
	position: relative;
	display: flex;
	flex-direction: column;
	padding-block: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + clamp(1.75rem, 6vh, 3.75rem)) clamp(2rem, 5vh, 3.5rem);
	background:
		radial-gradient(60% 55% at 50% 0%, rgba(30, 90, 168, .42) 0%, rgba(30, 90, 168, 0) 70%),
		var(--f-encre);
	color: #fff;
}
.heros-v2--sans-photo { padding-bottom: clamp(3rem, 8vh, 5rem); }

/* Texte centré, sur l'aplat : lisible quelle que soit la photo */
.heros-v2__texte { display: flex; flex-direction: column; align-items: center; gap: 1.125rem; max-width: 980px; margin-inline: auto; text-align: center; }
.heros-v2__texte > * { animation: fontan-heros-entree 700ms var(--f-courbe) backwards; }
.heros-v2__texte > :nth-child(2) { animation-delay: 90ms; }
.heros-v2__texte > :nth-child(3) { animation-delay: 180ms; }
@keyframes fontan-heros-entree { from { opacity: 0; transform: translateY(14px); } }
@keyframes fontan-heros-zoom { from { transform: scale(1.08); } }

.heros-v2__surtitre { display: flex; align-items: center; gap: .875rem; color: var(--f-jaune); font-size: .8125rem; font-weight: 600; letter-spacing: .2em; line-height: 1.4; text-transform: uppercase; }
.heros-v2__surtitre::before,
.heros-v2__surtitre::after { content: ""; flex: none; width: 28px; height: 2px; background: currentColor; }
.heros-v2__titre { font-size: clamp(2.5rem, 1.4rem + 3.6vw, 4.375rem); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; }
.heros-v2__titre-fort { font-weight: 600; }
.heros-v2__chapo { max-width: 58ch; color: rgba(255, 255, 255, .84); font-size: 1.0625rem; line-height: 1.6; }

/* Moteur centré ; sur ordinateur, il passe au-dessus de la photo qu'il chevauche */
.heros-v2 .moteur {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	max-width: 1180px;
	margin: clamp(1.75rem, 4.5vh, 2.75rem) auto 0;
	animation: fontan-heros-entree 700ms var(--f-courbe) 260ms backwards;
}
.heros-v2 .moteur__barre { width: 100%; }

/* Photo panoramique : la barre de recherche mord sur son bord haut */
.heros-v2__scene { margin-top: -40px; }
.heros-v2__photo {
	position: relative;
	z-index: 0;
	height: clamp(300px, 40vh, 470px);
	overflow: hidden;
	border-radius: 22px;
	background: var(--f-encre-survol);
	animation: fontan-heros-entree 800ms var(--f-courbe) 180ms backwards;
}
.heros-v2__image { width: 100%; height: 100%; object-fit: cover; object-position: 50% 42%; animation: fontan-heros-zoom 14s var(--f-courbe) both; }
.heros-v2__photo::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg, rgba(14, 34, 57, .4) 0%, rgba(14, 34, 57, 0) 32%, rgba(14, 34, 57, 0) 58%, rgba(14, 34, 57, .55) 100%);
	pointer-events: none;
}

.heros-v2__reperes { position: absolute; bottom: clamp(1rem, 3vh, 1.5rem); left: clamp(1rem, 2.5vw, 1.75rem); z-index: 2; display: flex; flex-wrap: wrap; gap: .5rem; max-width: calc(100% - 360px); margin: 0; padding: 0; list-style: none; }
.heros-v2__reperes li { display: flex; }
.heros-v2__reperes li,
.heros-v2__reperes a { align-items: center; gap: .5rem; color: var(--f-encre); }
.heros-v2__reperes > li { padding: .5rem .875rem; border-radius: var(--f-rayon-pilule); background: rgba(255, 255, 255, .92); font-size: .8125rem; font-weight: 500; box-shadow: 0 6px 18px rgba(0, 0, 0, .18); }
.heros-v2__reperes a { display: inline-flex; }
.heros-v2__reperes .icone { width: 1.125rem; height: 1.125rem; color: var(--f-accent); }

.heros-v2__vignette {
	position: absolute;
	right: clamp(1rem, 2.5vw, 1.75rem);
	bottom: clamp(1rem, 3vh, 1.5rem);
	z-index: 2;
	display: flex;
	align-items: center;
	gap: .875rem;
	max-width: 300px;
	margin: 0;
	padding: .875rem 1.125rem;
	border-radius: 14px;
	background: rgba(255, 255, 255, .95);
	color: var(--f-texte-doux);
	font-size: .8125rem;
	line-height: 1.4;
	box-shadow: 0 14px 36px rgba(0, 0, 0, .28);
	animation: fontan-heros-entree 700ms var(--f-courbe) 700ms backwards;
}
.heros-v2__vignette strong { display: block; color: var(--f-encre); font-size: .9375rem; font-weight: 600; }
.heros-v2__vignette-losange { flex: none; width: 12px; height: 12px; background: var(--f-jaune); transform: rotate(45deg); }

@media (min-width: 900px) {
	/* Le moteur passe devant la photo. Pas en mobile : la pile qu'il créerait enfermerait le volet plein écran sous l'en-tête. */
	.heros-v2 .moteur { position: relative; z-index: 5; }
}

/* Moteur --------------------------------------------------------------------------- */

.moteur { position: relative; }
.moteur :focus-visible { outline: 2px solid var(--f-focus); outline-offset: 2px; }

/* Onglets : sélecteur segmenté, le curseur blanc glisse d'un projet à l'autre */
.moteur__onglets {
	position: relative;
	display: inline-flex;
	max-width: 100%;
	margin-bottom: .875rem;
	padding: 4px;
	overflow-x: auto;
	border-radius: var(--f-rayon-pilule);
	background: rgba(255, 255, 255, .1);
	scrollbar-width: none;
}
.moteur__onglets::-webkit-scrollbar { display: none; }
.moteur__curseur {
	position: absolute;
	top: 4px;
	bottom: 4px;
	left: 0;
	width: var(--cl, 0);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	transform: translateX(var(--cx, 0));
	transition: transform 340ms var(--f-courbe), width 340ms var(--f-courbe);
}
.moteur__onglet {
	position: relative;
	z-index: 1;
	flex: none;
	padding: .625rem 1.125rem;
	border: 0;
	border-radius: var(--f-rayon-pilule);
	background: none;
	color: rgba(255, 255, 255, .86);
	font-size: .8125rem;
	font-weight: 500;
	white-space: nowrap;
	cursor: pointer;
	transition: color 260ms var(--f-courbe);
}
.moteur__onglet:hover { color: #fff; }
.moteur__onglet[aria-selected="true"] { color: var(--f-encre); }
.moteur__onglets :focus-visible { outline-color: var(--f-jaune); }
.moteur__onglet-court { display: none; }
@media (max-width: 479.98px) {
	.moteur__onglet-long { display: none; }
	.moteur__onglet-court { display: inline; }
}

/* Barre */
.moteur__barre {
	position: relative;
	display: flex;
	align-items: stretch;
	min-height: 76px;
	padding: 6px;
	border-radius: 16px;
	background: #fff;
	color: var(--f-encre);
	box-shadow: 0 22px 54px rgba(0, 0, 0, .3);
	transition: background-color 260ms var(--f-courbe);
}
.moteur__barre[hidden] { display: none; }
.moteur.est-ouvert .moteur__barre { background: var(--f-fond-doux); }
.moteur__segments { position: relative; display: flex; flex: 1; min-width: 0; }
.moteur__segment {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 1 1 0;
	flex-direction: column;
	justify-content: center;
	gap: .25rem;
	min-width: 0;
	padding: .625rem 1.25rem;
	border: 0;
	border-radius: 12px;
	background: none;
	text-align: left;
	cursor: pointer;
	transition: background-color 200ms var(--f-courbe);
}
.moteur__segment[hidden] { display: none; }
.moteur__segment[data-segment="lieu"] { flex-grow: 1.45; }
.moteur__segment:not(:first-of-type)::before { content: ""; position: absolute; top: 24%; bottom: 24%; left: 0; width: 1px; background: var(--f-filet); transition: opacity 200ms var(--f-courbe); }
.moteur.est-ouvert .moteur__segment::before { opacity: 0; }
.moteur__segment:hover { background: rgba(14, 34, 57, .04); }
.moteur.est-ouvert .moteur__segment:hover { background: rgba(255, 255, 255, .55); }
.moteur__libelle { color: var(--f-libelle); font-size: .6875rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.moteur__valeur { overflow: hidden; color: var(--f-indice); font-size: .9375rem; text-overflow: ellipsis; white-space: nowrap; }
.moteur__valeur.est-rempli { color: var(--f-encre); font-weight: 500; }

/* Surlignage du critère ouvert : il glisse sous le segment actif */
.moteur__surligne {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: var(--sl, 0);
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 6px 20px rgba(14, 34, 57, .12);
	opacity: 0;
	transform: translateX(var(--sx, 0));
	transition: transform 360ms var(--f-courbe), width 360ms var(--f-courbe), opacity 200ms var(--f-courbe);
}
.moteur.est-ouvert .moteur__surligne { opacity: 1; }

.moteur__envoyer {
	position: relative;
	z-index: 1;
	display: flex;
	flex: none;
	align-items: center;
	gap: .75rem;
	margin-left: 6px;
	padding: 0 1.625rem 0 1.25rem;
	border: 0;
	border-radius: 12px;
	background: var(--f-encre);
	color: #fff;
	cursor: pointer;
	transition: background-color var(--f-duree) var(--f-courbe);
}
.moteur__envoyer:hover { background: var(--f-encre-survol); }
.moteur__envoyer > .icone { width: 1.375rem; height: 1.375rem; }
.moteur__envoyer-texte { display: flex; flex-direction: column; align-items: flex-start; font-size: .9375rem; font-weight: 600; line-height: 1.25; }
.moteur__compte { color: rgba(255, 255, 255, .7); font-size: .75rem; font-weight: 400; }
.moteur__envoyer--jaune { background: var(--f-jaune); color: var(--f-encre); }
.moteur__envoyer--jaune:hover { background: var(--f-jaune-fonce); }

/* Onglet « Vendre » */
.moteur__barre--vendre { gap: 6px; }
.moteur__adresse { display: flex; flex: 1; flex-direction: column; justify-content: center; gap: .25rem; min-width: 0; padding: .625rem 1.25rem; border-radius: 12px; }
.moteur__adresse:focus-within { box-shadow: inset 0 0 0 2px var(--f-focus); }
.moteur__adresse input { width: 100%; padding: 0; border: 0; outline: 0; background: none; color: var(--f-encre); font-size: 1rem; }
.moteur__types-vendre { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; padding: 0 .75rem; }

/* Volet unique : il glisse, s'élargit et change de hauteur d'un critère à l'autre */
.moteur__volet {
	position: absolute;
	top: calc(100% + 12px);
	left: 0;
	z-index: 30;
	display: flex;
	flex-direction: column;
	width: var(--l, 600px);
	overflow: hidden;
	border-radius: 16px;
	background: #fff;
	color: var(--f-encre);
	box-shadow: 0 26px 64px rgba(14, 34, 57, .3), 0 2px 8px rgba(14, 34, 57, .1);
	opacity: 0;
	transform: translateX(var(--x, 0)) translateY(-8px) scale(.985);
	transform-origin: top left;
	transition: transform 380ms var(--f-courbe), width 380ms var(--f-courbe), opacity 220ms var(--f-courbe);
}
.moteur__volet[hidden] { display: none; }
.moteur__volet.est-visible { opacity: 1; transform: translateX(var(--x, 0)); }
.moteur__volet-entete { display: none; }
.moteur__vues { position: relative; height: var(--h, 320px); transition: height 380ms var(--f-courbe); }
.moteur__vue {
	position: absolute;
	top: 0;
	left: 0;
	max-height: var(--h, 320px);
	overflow-y: auto;
	overscroll-behavior: contain;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateX(calc(var(--sens, 1) * 28px));
	transition: opacity 200ms var(--f-courbe), transform 380ms var(--f-courbe), visibility 0s linear 380ms;
	scrollbar-width: thin;
}
.moteur__vue.est-active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: none;
	transition: opacity 280ms var(--f-courbe) 90ms, transform 380ms var(--f-courbe), visibility 0s;
}
.sans-transition .moteur__volet,
.sans-transition .moteur__vues,
.sans-transition .moteur__surligne { transition: none !important; }
.moteur__pied { display: flex; flex: none; align-items: center; justify-content: space-between; gap: 1rem; padding: .875rem 1.25rem; border-top: 1px solid var(--f-filet); background: #fff; }

/* Éléments communs des vues */
.moteur__intertitre { margin-bottom: .5rem; color: var(--f-libelle); font-size: .6875rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.moteur__rangee { display: flex; flex-wrap: wrap; gap: .375rem; margin-bottom: 1.25rem; }
.moteur__rangee:last-child { margin-bottom: 0; }
.moteur__puce {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 38px;
	padding: 0 .875rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-size: .8125rem;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 200ms var(--f-courbe), color 200ms var(--f-courbe), border-color 200ms var(--f-courbe);
}
.moteur__puce:hover { border-color: var(--f-encre); }
.moteur__puce:has(input:checked),
.moteur__puce[aria-pressed="true"] { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.moteur__puce:has(input:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.moteur__puce--carree { min-width: 48px; padding: 0 .625rem; }

.moteur__options { margin: 0; padding: 0; list-style: none; }
.moteur__options li[hidden] { display: none; }
.moteur__option { position: relative; display: flex; align-items: center; gap: .75rem; padding: .5rem .625rem; border-radius: 8px; font-size: .875rem; cursor: pointer; transition: background-color 160ms var(--f-courbe); }
.moteur__option:hover { background: var(--f-fond-doux); }
.moteur__option input { position: absolute; opacity: 0; pointer-events: none; }
.moteur__case { flex: none; width: 18px; height: 18px; border: 1.5px solid var(--f-filet-fonce); border-radius: 4px; background: #fff center / 12px no-repeat; transition: background-color 160ms var(--f-courbe), border-color 160ms var(--f-courbe); }
.moteur__option input:checked + .moteur__case {
	border-color: var(--f-encre);
	background-color: var(--f-encre);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5.2l3.3 3.3L11 1.5' fill='none' stroke='%23fff' stroke-width='1.8'/%3E%3C/svg%3E");
}
.moteur__option input:focus-visible + .moteur__case { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.moteur__option:has(input:checked) .moteur__option-nom { font-weight: 600; }
.moteur__option-nom { flex: 1; min-width: 0; }
.moteur__option-detail { color: var(--f-libelle); font-size: .75rem; white-space: nowrap; }
.moteur__option-detail.a-des-biens { color: var(--f-accent); font-weight: 600; }
.moteur__option-icone { flex: none; width: 1.125rem; height: 1.125rem; color: var(--f-libelle); }
.moteur__options--grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .125rem .75rem; }

.moteur__filtre { display: flex; flex: none; align-items: center; gap: .5rem; min-height: 44px; margin-bottom: .625rem; padding: 0 .875rem; border: 1px solid var(--f-filet); border-radius: 10px; color: var(--f-libelle); transition: border-color 200ms var(--f-courbe), box-shadow 200ms var(--f-courbe); }
.moteur__filtre:focus-within { border-color: var(--f-accent); box-shadow: 0 0 0 3px var(--f-accent-clair); }
.moteur__filtre .icone { flex: none; width: 1.125rem; height: 1.125rem; }
.moteur__filtre input { flex: 1; min-width: 0; padding: 0; border: 0; outline: 0; background: none; color: var(--f-encre); font-size: .9375rem; }

.moteur__bornes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin-bottom: 1rem; }
.moteur__champ { display: flex; flex-direction: column; min-width: 0; }
.moteur__saisie { display: flex; align-items: center; gap: .5rem; min-height: 46px; padding: 0 .875rem; border: 1px solid var(--f-filet); border-radius: 10px; color: var(--f-libelle); font-size: .875rem; transition: border-color 200ms var(--f-courbe), box-shadow 200ms var(--f-courbe); }
.moteur__saisie:focus-within { border-color: var(--f-accent); box-shadow: 0 0 0 3px var(--f-accent-clair); }
.moteur__saisie input { flex: 1; min-width: 0; padding: 0; border: 0; outline: 0; background: none; color: var(--f-encre); font-size: 1rem; font-variant-numeric: tabular-nums; appearance: textfield; }
.moteur__saisie input::-webkit-inner-spin-button,
.moteur__saisie input::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.moteur__pastille { min-width: 1.75rem; padding: .125rem .5rem; border-radius: var(--f-rayon-pilule); background: var(--f-fond-doux); color: var(--f-texte-doux); font-size: .75rem; font-weight: 600; text-align: center; transition: background-color 200ms var(--f-courbe), color 200ms var(--f-courbe); }
.moteur__aide { margin-top: .875rem; color: var(--f-libelle); font-size: .75rem; }
.moteur__aide[hidden],
.moteur__tranches[hidden] { display: none; }

/* Vue Localisation : liste à gauche, carte à droite */
.moteur-lieu { display: grid; grid-template-columns: 320px minmax(0, 1fr); height: 440px; }
.moteur-lieu__liste { display: flex; flex-direction: column; min-height: 0; padding: 1.125rem .75rem 1rem 1.125rem; border-right: 1px solid var(--f-filet); }
.moteur-lieu__liste .moteur__options { flex: 1; min-height: 0; overflow-y: auto; scrollbar-width: thin; }
.moteur-lieu__carte { display: flex; flex-direction: column; gap: .75rem; min-width: 0; padding: 1rem; }
.moteur-lieu__rayon { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; }
.moteur-lieu__rayon .moteur__intertitre { margin: 0 .375rem 0 0; }
.moteur-lieu__rayon .moteur__puce { min-height: 34px; padding: 0 .75rem; font-size: .75rem; }

.moteur-carte { position: relative; flex: 1; min-height: 0; overflow: hidden; border-radius: 12px; background: var(--f-fond-doux); }
.moteur-carte.est-indisponible { display: flex; align-items: center; justify-content: center; color: var(--f-libelle); font-size: var(--f-taille-mini); }
.moteur-carte .leaflet-tile-pane { filter: saturate(.55) brightness(1.03); }
.leaflet-div-icon.moteur-repere { border: 0; background: none; }
.moteur-repere__point { position: absolute; width: 10px; height: 10px; border: 2px solid #fff; border-radius: 50%; background: var(--f-indice); box-shadow: 0 1px 3px rgba(14, 34, 57, .35); transform: translate(-50%, -50%); cursor: pointer; transition: transform 160ms var(--f-courbe); }
.moteur-repere:hover .moteur-repere__point { transform: translate(-50%, -50%) scale(1.4); }
.moteur-repere.est-dans-zone .moteur-repere__point { background: var(--f-accent); }
.moteur-repere__nom {
	position: absolute;
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	padding: .25rem .375rem .25rem .625rem;
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-encre);
	font-family: var(--f-police);
	font-size: .75rem;
	font-weight: 600;
	white-space: nowrap;
	box-shadow: 0 2px 10px rgba(14, 34, 57, .28);
	transform: translate(-50%, -50%);
	cursor: pointer;
	transition: background-color 160ms var(--f-courbe), color 160ms var(--f-courbe);
}
.moteur-repere:not(.a-des-biens) .moteur-repere__nom { padding-right: .625rem; }
.moteur-repere__nom b { min-width: 1.375rem; padding: .0625rem .3125rem; border-radius: var(--f-rayon-pilule); background: var(--f-jaune); color: var(--f-encre); font-size: .6875rem; text-align: center; }
.moteur-repere.est-dans-zone .moteur-repere__nom { box-shadow: 0 0 0 2px var(--f-accent), 0 2px 10px rgba(14, 34, 57, .28); }
.moteur-repere.est-choisie .moteur-repere__nom,
.moteur-repere:hover .moteur-repere__nom { background: var(--f-encre); color: #fff; }
.moteur-carte__rayon { fill: var(--f-accent); fill-opacity: .08; stroke: var(--f-accent); stroke-width: 1.5; stroke-dasharray: 6 5; }

/* Vue Type de bien : tuiles à icône et compteur */
.moteur-types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .625rem; margin: 0; padding: 1.25rem; list-style: none; }
.moteur-types li[hidden] { display: none; }
.moteur-type {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .5rem;
	height: 100%;
	padding: 1rem;
	border: 1px solid var(--f-filet);
	border-radius: 12px;
	cursor: pointer;
	transition: border-color 200ms var(--f-courbe), background-color 200ms var(--f-courbe), box-shadow 200ms var(--f-courbe);
}
.moteur-type:hover { border-color: var(--f-encre); }
.moteur-type__icone { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 10px; background: var(--f-accent-clair); color: var(--f-accent); transition: background-color 200ms var(--f-courbe), color 200ms var(--f-courbe), transform 260ms var(--f-courbe); }
.moteur-type__icone .icone { width: 1.5rem; height: 1.5rem; }
.moteur-type__nom { color: var(--f-encre); font-size: .9375rem; font-weight: 600; line-height: 1.25; }
.moteur-type__compte { color: var(--f-libelle); font-size: .75rem; }
.moteur-type:has(input:checked) { border-color: var(--f-encre); background: var(--f-fond-doux); box-shadow: inset 0 0 0 1px var(--f-encre); }
.moteur-type:has(input:checked) .moteur-type__icone { background: var(--f-jaune); color: var(--f-encre); transform: rotate(-6deg); }
.moteur-type:has(input:focus-visible) { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.moteur-type.est-vide:not(:has(input:checked)) { opacity: .5; }

/* Vue Budget */
.moteur__vue--budget { padding: 1.25rem; }
.moteur__tranches { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.moteur__tranche {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	min-height: 48px;
	padding: 0 .625rem 0 1rem;
	border: 1px solid var(--f-filet);
	border-radius: 10px;
	background: #fff;
	color: var(--f-encre);
	font-size: .875rem;
	font-weight: 500;
	text-align: left;
	cursor: pointer;
	transition: background-color 200ms var(--f-courbe), color 200ms var(--f-courbe), border-color 200ms var(--f-courbe);
}
.moteur__tranche:hover { border-color: var(--f-encre); }
.moteur__tranche[aria-pressed="true"] { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
.moteur__tranche[aria-pressed="true"] .moteur__pastille { background: var(--f-jaune); color: var(--f-encre); }
.moteur__tranche.est-vide:not([aria-pressed="true"]) { opacity: .5; }

/* Vue Critères */
.moteur-criteres { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 2rem; padding: 1.25rem 1.5rem; }
.moteur-criteres__colonne { min-width: 0; }

/* Moteur replié sous l'en-tête au défilement ------------------------------------------- */

/* L'ancre reste dans la page quand le moteur part dans la bande : elle garde sa place (et sa hauteur). */
.moteur-ancre { width: 100%; }

.moteur-dock {
	position: fixed;
	top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete));
	right: 0;
	left: 0;
	z-index: 48;
	border-bottom: 1px solid var(--f-filet);
	background: #fff;
	box-shadow: 0 12px 28px rgba(14, 34, 57, .08);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateY(-14px);
	transition: transform 300ms var(--f-courbe), opacity 220ms var(--f-courbe), visibility 0s linear 300ms;
}
.moteur-dock.est-visible { opacity: 1; visibility: visible; pointer-events: auto; transform: none; transition-delay: 0s; }
.moteur-docke .entete { border-bottom-color: transparent; }
.moteur-dock__interieur { display: flex; justify-content: center; padding-block: .5rem; }
.moteur-dock__bouton { display: none; }

.moteur.est-replie { flex-direction: row; align-items: center; gap: 1rem; width: 100%; max-width: 1280px; margin: 0; animation: none; }
.moteur.est-replie .moteur__onglets { flex: none; margin: 0; background: var(--f-fond-doux); }
.moteur.est-replie .moteur__onglet { padding: .5rem .875rem; color: var(--f-texte-doux); font-size: .75rem; }
.moteur.est-replie .moteur__onglet:hover,
.moteur.est-replie .moteur__onglet[aria-selected="true"] { color: var(--f-encre); }
.moteur.est-replie .moteur__onglet[data-onglet="vendre"]:not([aria-selected="true"]) { display: none; }
.moteur.est-replie .moteur__curseur { box-shadow: 0 1px 4px rgba(14, 34, 57, .16); }
.moteur.est-replie .moteur__onglets :focus-visible { outline-color: var(--f-focus); }
.moteur.est-replie .moteur__barre { flex: 1; width: auto; min-height: 54px; padding: 4px; border: 1px solid var(--f-filet); border-radius: 14px; box-shadow: none; }
.moteur.est-replie .moteur__segment { gap: .125rem; padding: .3125rem 1rem; border-radius: 10px; }
.moteur.est-replie .moteur__surligne { border-radius: 10px; }
.moteur.est-replie .moteur__libelle { font-size: .5625rem; }
.moteur.est-replie .moteur__valeur { font-size: .8125rem; }
.moteur.est-replie .moteur__envoyer { margin-left: 4px; padding: 0 1.125rem 0 .875rem; border-radius: 10px; }
.moteur.est-replie .moteur__envoyer > .icone { width: 1.125rem; height: 1.125rem; }
.moteur.est-replie .moteur__envoyer-texte { font-size: .8125rem; }
.moteur.est-replie .moteur__compte { display: none; }
.moteur.est-replie .moteur__adresse { padding-block: .3125rem; }

@media (max-width: 1199.98px) {
	.moteur.est-replie .moteur__onglet { padding-inline: .625rem; }
	.moteur.est-replie .moteur__segment { padding-inline: .75rem; }
}

/* Mobile : barre empilée, volet en plein écran avec navigation entre critères ---------- */

html.moteur-plein-ecran { overflow: hidden; }

@media (max-width: 899.98px) {
	.heros-v2 { padding-top: 0; }
	.heros-v2__scene { order: -1; margin-top: 0; padding-inline: 0; }
	.heros-v2__photo { height: clamp(240px, 38vh, 360px); border-radius: 0; animation: none; }
	.heros-v2__photo::before { background: linear-gradient(180deg, rgba(14, 34, 57, .7) 0%, rgba(14, 34, 57, 0) 32%, rgba(14, 34, 57, 0) 50%, var(--f-encre) 100%); }
	.heros-v2__reperes,
	.heros-v2__vignette { display: none; }
	/* Pas de chevauchement avec la photo : il faudrait un z-index sur le contenu, et le volet plein écran
	   se retrouverait sous l'en-tête. Le fondu de la photo fait la transition. */
	.heros-v2__contenu { margin-top: 0; }
	.heros-v2--sans-photo .heros-v2__contenu { margin-top: 0; padding-top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 2rem); }
	.heros-v2__texte { gap: .875rem; }
	.heros-v2__surtitre { font-size: .75rem; letter-spacing: .16em; }
	.heros-v2__surtitre::before,
	.heros-v2__surtitre::after { display: none; }
	.heros-v2__titre { font-size: clamp(2.25rem, 1.3rem + 5vw, 3.125rem); }
	.heros-v2__titre-fort { display: block; }
	.heros-v2__chapo { font-size: 1rem; }
	/* Pas d'animation d'entrée sur le moteur : tant qu'elle joue, sa transformation retiendrait le volet
	   plein écran à l'intérieur du moteur. */
	.heros-v2 .moteur { align-items: stretch; animation: none; }

	.moteur__onglets { display: flex; }
	.moteur__onglet { flex: 1 0 auto; padding-inline: .875rem; }
	.moteur__barre { flex-direction: column; min-height: 0; padding: 6px; }
	.moteur__segments { flex-direction: column; }
	.moteur__segment { flex-direction: row; align-items: center; justify-content: space-between; gap: 1rem; min-height: 56px; padding: .5rem 1rem; }
	.moteur__segment:not(:first-of-type)::before { top: 0; right: 1rem; bottom: auto; left: 1rem; width: auto; height: 1px; }
	.moteur__valeur { text-align: right; }
	.moteur__surligne { display: none; }
	.moteur__envoyer { justify-content: center; min-height: 56px; margin: 6px 0 0; }
	.moteur__envoyer-texte { flex-direction: row; align-items: baseline; gap: .625rem; }
	.moteur__barre--vendre { flex-direction: column; }
	.moteur__adresse { min-height: 64px; }
	.moteur__types-vendre { padding: .5rem 1rem; }

	.moteur-plein-ecran .moteur__volet {
		position: fixed;
		inset: 0;
		z-index: 90;
		width: auto;
		border-radius: 0;
		transform: translateY(28px);
		transition: transform 340ms var(--f-courbe), opacity 220ms var(--f-courbe);
	}
	.moteur-plein-ecran .moteur__volet.est-visible { transform: none; }
	.moteur__volet-entete { display: flex; flex: none; align-items: center; gap: .5rem; padding: .625rem .5rem .625rem var(--f-goutiere); border-bottom: 1px solid var(--f-filet); }
	.moteur__navigation { display: flex; flex: 1; gap: .375rem; min-width: 0; overflow-x: auto; scrollbar-width: none; }
	.moteur__navigation::-webkit-scrollbar { display: none; }
	.moteur__nav { flex: none; min-height: 38px; padding: 0 .875rem; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-pilule); background: #fff; color: var(--f-encre); font-size: .8125rem; font-weight: 500; transition: background-color 200ms var(--f-courbe), color 200ms var(--f-courbe); }
	.moteur__nav[hidden] { display: none; }
	.moteur__nav[aria-current="true"] { border-color: var(--f-encre); background: var(--f-encre); color: #fff; }
	.moteur__fermer { display: flex; flex: none; align-items: center; justify-content: center; width: 44px; height: 44px; border: 0; background: none; color: var(--f-encre); }
	.moteur__vues { flex: 1; height: auto; min-height: 0; }
	.moteur__vue { inset: 0; width: auto !important; max-height: none; }
	.moteur__pied { padding-bottom: calc(.875rem + env(safe-area-inset-bottom)); }

	/* Bande repliée : un bouton qui ouvre le volet en plein écran */
	.moteur-dock__interieur { padding-block: .5rem; }
	.moteur-dock__bouton {
		display: flex;
		align-items: center;
		gap: .75rem;
		width: 100%;
		min-height: 50px;
		padding: 0 .875rem 0 1rem;
		border: 1px solid var(--f-filet);
		border-radius: var(--f-rayon-pilule);
		background: #fff;
		color: var(--f-encre);
		text-align: left;
		box-shadow: 0 2px 10px rgba(14, 34, 57, .08);
	}
	.moteur-dock__bouton > .icone { flex: none; width: 1.25rem; height: 1.25rem; }
	.moteur-dock__texte { display: flex; flex: 1; flex-direction: column; min-width: 0; line-height: 1.25; }
	.moteur-dock__lieu { overflow: hidden; font-size: .875rem; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
	.moteur-dock__detail { overflow: hidden; color: var(--f-libelle); font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
	.moteur-dock__reglages { flex: none; width: 2.25rem; height: 2.25rem; padding: .5rem; border-radius: 50%; background: var(--f-fond-doux); color: var(--f-encre); }
	.moteur__pied .bouton { flex: 1; max-width: 260px; }

	.moteur-lieu { display: flex; flex-direction: column; height: auto; }
	.moteur-lieu__liste { padding: 1rem var(--f-goutiere) .5rem; border-right: 0; }
	.moteur-lieu__liste .moteur__options { max-height: 36vh; }
	.moteur-lieu__carte { padding: .75rem var(--f-goutiere) 1rem; border-top: 1px solid var(--f-filet); }
	.moteur-carte { flex: none; height: 300px; }
	.moteur-types { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 1rem var(--f-goutiere); }
	.moteur__vue--budget { padding: 1rem var(--f-goutiere); }
	.moteur__tranches { grid-template-columns: 1fr; }
	.moteur-criteres { grid-template-columns: 1fr; padding: 1rem var(--f-goutiere); }
}

@media (min-width: 900px) {
	.moteur__fermer { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.heros-v2__image,
	.heros-v2__photo,
	.heros-v2__vignette,
	.heros-v2__texte > *,
	.heros-v2 .moteur { animation: none; }
	.moteur__curseur,
	.moteur-dock,
	.moteur__surligne,
	.moteur__volet,
	.moteur__vues,
	.moteur__vue { transition-duration: 1ms !important; }
}
/* ==========================================================================
   Guides : « Prix du m² » et « Communes »
   ========================================================================== */

.guide__surtitre { margin-top: 1.25rem; }
.guide__surtitre + .entete-page__titre { margin-top: .75rem; }
.guide__reponse { max-width: 70ch; color: var(--f-texte); font-size: clamp(1.0625rem, 1rem + .25vw, 1.1875rem); line-height: 1.6; }
.guide__note { max-width: 52ch; color: var(--f-libelle); font-size: var(--f-taille-mini); line-height: 1.5; }
.guide__releve { max-width: 70ch; margin-bottom: 1.5rem; font-size: 1.0625rem; }
.guide__releve strong { color: var(--f-encre); font-weight: 600; }
.guide__tableau { margin-top: clamp(2rem, 4vw, 3rem); }
.guide__sous-titre { display: flex; align-items: center; gap: .5rem; color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; }
.guide__sous-titre .icone { width: 1.375rem; height: 1.375rem; color: var(--f-accent); }
.guide__grand-chiffre { color: var(--f-texte-doux); }
.guide__grand-chiffre strong { display: block; color: var(--f-encre); font-size: clamp(2.25rem, 1.75rem + 2vw, 3rem); font-weight: 300; line-height: 1.1; letter-spacing: -.02em; }

/* Texte + graphique côte à côte */
.guide__deux { display: grid; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
@media (min-width: 960px) {
	.guide__deux { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
}

/* Chiffres clés ------------------------------------------------------------ */

.indicateurs {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
@media (min-width: 1100px) {
	.indicateurs--six { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.indicateur {
	display: flex;
	flex-direction: column;
	gap: .375rem;
	padding: 1.25rem 1.375rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
}
.section--douce .indicateur { border-color: transparent; box-shadow: var(--f-ombre-carte); }
.indicateur__libelle { display: flex; align-items: center; gap: .5rem; color: var(--f-texte-doux); font-size: var(--f-taille-mini); font-weight: 500; }
.indicateur__libelle .icone { width: 1.25rem; height: 1.25rem; color: var(--f-accent); }
.indicateur__valeur { color: var(--f-encre); font-size: clamp(1.75rem, 1.4rem + 1vw, 2.125rem); font-weight: 300; line-height: 1.1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.indicateur__valeur--texte { font-size: 1.25rem; font-weight: 500; letter-spacing: 0; }
.indicateur__unite { color: var(--f-texte-doux); font-size: .875rem; font-weight: 400; letter-spacing: 0; }
.indicateur__detail { color: var(--f-libelle); font-size: .75rem; line-height: 1.5; }
.indicateur__pied { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem .625rem; margin-top: auto; padding-top: .375rem; color: var(--f-libelle); font-size: .75rem; }
.indicateurs + .guide__note { margin-top: 1rem; }
.guide__note--large { max-width: 90ch; margin-top: 1.25rem; }

/* Graphiques --------------------------------------------------------------- */

.graphique-cadre {
	margin: 0;
	padding: clamp(1rem, 2.5vw, 1.5rem);
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
}
.graphique { display: block; width: 100%; height: auto; overflow: visible; }
.graphique__grille { stroke: var(--f-filet); stroke-width: 1; }
.graphique__axe { fill: var(--f-libelle); font-family: var(--f-police); font-size: 12px; font-variant-numeric: tabular-nums; }
.graphique__courbe { fill: none; stroke: var(--f-encre); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.graphique__courbe--appartement,
.graphique__courbe--population { stroke: var(--f-accent); }
.graphique__point { fill: #fff; stroke: var(--f-encre); stroke-width: 2; }
.graphique__point--appartement { stroke: var(--f-accent); }
.graphique__valeur { fill: var(--f-encre); font-family: var(--f-police); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.graphique__valeur--appartement,
.graphique__valeur--population { fill: var(--f-accent); }
.graphique-cadre figcaption { margin-top: .75rem; color: var(--f-libelle); font-size: .75rem; }

.legende { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: 0 0 .75rem; padding: 0; list-style: none; font-size: var(--f-taille-mini); }
.legende__entree { display: inline-flex; align-items: center; gap: .5rem; color: var(--f-encre); font-weight: 500; }
.legende__entree::before { content: ""; width: 1.125rem; height: 3px; border-radius: 2px; background: var(--f-encre); }
.legende__entree--appartement::before,
.legende__entree--population::before { background: var(--f-accent); }

/* Tableaux ----------------------------------------------------------------- */

.tableau__periode {
	display: inline-block;
	margin-left: .375rem;
	padding: .0625rem .375rem;
	border-radius: var(--f-rayon-xs);
	background: var(--f-fond-doux);
	color: var(--f-libelle);
	font-size: .625rem;
	font-weight: 500;
	letter-spacing: .04em;
	vertical-align: .125em;
}
.tableau__detail { display: block; margin-top: .125rem; color: var(--f-libelle); font-size: .6875rem; font-weight: 400; }
.tableau__detail-colonne { color: var(--f-libelle); }
.tableau tbody th a,
.tableau td a { color: var(--f-accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.tableau tbody th a:hover,
.tableau td a:hover { color: var(--f-accent-fonce); }
@media (max-width: 639px) {
	.tableau--communes .tableau__secondaire { display: none; }
	.tableau td, .tableau tbody th, .tableau thead th { padding-inline: .875rem; }
}

/* Méthode, questions, sources ----------------------------------------------- */

.methode { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--f-filet-fonce); }
.methode li { padding-block: 1rem; border-bottom: 1px solid var(--f-filet-fonce); color: var(--f-texte); font-size: var(--f-taille-petit); line-height: 1.65; }
.methode strong { color: var(--f-encre); font-weight: 600; }

.faq { margin-top: clamp(1.75rem, 3vw, 2.5rem); border-top: 1px solid var(--f-filet-fonce); }
.faq__entree { border-bottom: 1px solid var(--f-filet-fonce); }
.faq__question {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.25rem;
	color: var(--f-encre);
	font-size: 1.0625rem;
	font-weight: 500;
	line-height: 1.4;
	list-style: none;
	cursor: pointer;
}
.faq__question::-webkit-details-marker { display: none; }
.faq__question .icone { flex: none; width: 1.5rem; height: 1.5rem; color: var(--f-libelle); transition: transform var(--f-duree) var(--f-courbe); }
.faq__entree[open] .faq__question .icone { transform: rotate(180deg); }
.faq__question:hover { color: var(--f-accent); }
.faq__reponse { padding-bottom: 1.375rem; }
.faq__reponse p { max-width: 68ch; color: var(--f-texte); line-height: 1.7; }

.guide__sources { color: var(--f-libelle); font-size: var(--f-taille-mini); }
.guide__sources summary { color: var(--f-texte); font-weight: 500; cursor: pointer; }
.sources { margin: .875rem 0 0; padding-left: 1.125rem; }
.sources li + li { margin-top: .375rem; }
.sources a { color: var(--f-accent); text-decoration: underline; text-underline-offset: 3px; }

/* Fin de page : lien vers l'autre rubrique et appel à l'estimation */
.guide__fin { display: grid; gap: 1.5rem; }
.appel-guide { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 2.5rem; }
.appel-guide .pile { max-width: 62ch; }
.appel-guide a:not(.bouton) { color: var(--f-accent); font-weight: 500; white-space: nowrap; }
.appel-guide .encadre__titre strong { font-weight: 600; }

/* Brouillons de l'agence (preprod) ----------------------------------------- */

.brouillon {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem .75rem;
	margin-bottom: 1.5rem;
	padding: .75rem 1rem;
	border-radius: var(--f-rayon-s);
	background: var(--f-jaune-clair);
	color: var(--f-encre);
	font-size: var(--f-taille-mini);
	line-height: 1.5;
}

/* Guide de commune : en-tête ----------------------------------------------- */

.guide__entete-commune { padding-top: clamp(2rem, 5vw, 3.5rem); }
.guide__entete-grille { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 960px) {
	.guide__entete-commune--photo .guide__entete-grille { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 3.5rem; }
}
.guide__photo { aspect-ratio: 4 / 3; border-radius: var(--f-rayon-l); }
.guide__photo-image { width: 100%; height: 100%; object-fit: cover; }
.guide__sommaire { margin-top: clamp(1.75rem, 3vw, 2.5rem); }
.guide__sommaire ul { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
@media (max-width: 639px) {
	.guide__sommaire ul { flex-wrap: nowrap; margin-inline: calc(-1 * var(--f-goutiere)); padding-inline: var(--f-goutiere); overflow-x: auto; scrollbar-width: none; }
	.guide__sommaire ul::-webkit-scrollbar { display: none; }
	.guide__sommaire .puce { white-space: nowrap; }
}
.guide--commune [id] { scroll-margin-top: calc(var(--f-hauteur-entete) + 1rem); }
.guide__redaction { padding-bottom: 0; }

/* Quartiers : trois par ligne, défilement horizontal sur mobile --------------- */

.quartiers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
@media (min-width: 960px) {
	.quartiers { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
	.quartiers {
		display: flex;
		gap: .875rem;
		margin-inline: calc(-1 * var(--f-goutiere));
		padding: .25rem var(--f-goutiere) 1rem;
		overflow-x: auto;
		scroll-padding-inline: var(--f-goutiere);
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.quartiers::-webkit-scrollbar { display: none; }
	.quartier { flex: 0 0 84%; scroll-snap-align: start; }
}
.quartier {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 1.5rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
	transition: border-color var(--f-duree) var(--f-courbe), box-shadow var(--f-duree) var(--f-courbe);
}
.quartier:hover { border-color: var(--f-filet-fonce); box-shadow: var(--f-ombre-carte); }
.quartier__titre { color: var(--f-encre); font-size: 1.25rem; font-weight: 600; line-height: 1.2; }
.quartier__texte { color: var(--f-texte-doux); font-size: .9375rem; line-height: 1.65; }
.quartier__prix { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: auto 0 0; overflow: hidden; border-radius: var(--f-rayon-m); background: var(--f-filet); }
.quartier__prix > div { padding: .75rem .875rem; background: var(--f-fond-doux); }
.quartier__prix dt { color: var(--f-libelle); font-size: .75rem; }
.quartier__prix dd { margin: .125rem 0 0; color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.quartier__prix dd.quartier__vide { color: var(--f-indice); font-size: .8125rem; font-weight: 400; white-space: normal; }
.quartier__equipements { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin: 0; padding: 0; list-style: none; color: var(--f-texte-doux); font-size: .8125rem; }
.quartier__equipements li { display: inline-flex; align-items: center; gap: .375rem; }
.quartier__equipements .icone { width: 1.125rem; height: 1.125rem; color: var(--f-accent); }

/* Écoles et équipements ---------------------------------------------------- */

.ecoles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 1.5rem 2.5rem; align-items: start; }
.ecoles__titre,
.equipements__titre { display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem; color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.ecoles__titre span { color: var(--f-libelle); font-weight: 400; }
.ecoles__titre .icone,
.equipements__titre .icone { flex: none; width: 1.375rem; height: 1.375rem; color: var(--f-accent); }
.ecoles__liste,
.equipements__liste { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--f-filet); }
.ecoles__liste li { display: flex; flex-direction: column; gap: .125rem; padding-block: .625rem; border-bottom: 1px solid var(--f-filet); }
.ecoles__nom { color: var(--f-encre); font-size: var(--f-taille-petit); font-weight: 500; }
.ecoles__detail { color: var(--f-libelle); font-size: .75rem; }

.equipements { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 1.5rem 2rem; align-items: start; }
.equipements__liste li { display: flex; justify-content: space-between; gap: 1rem; padding-block: .5625rem; border-bottom: 1px solid var(--f-filet); color: var(--f-texte); font-size: var(--f-taille-mini); }
.equipements__liste .nombre { color: var(--f-encre); font-weight: 600; font-variant-numeric: tabular-nums; }
.equipements__vide { color: var(--f-libelle); font-size: var(--f-taille-mini); }

.risques { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.risques li { padding: .375rem .75rem; border: 1px solid var(--f-filet-fonce); border-radius: var(--f-rayon-pilule); background: #fff; color: var(--f-encre); font-size: var(--f-taille-mini); }
.guide--commune #fiscalite p a { color: var(--f-accent); text-decoration: underline; text-underline-offset: 3px; }

.guide__liens { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }

/* Rubrique Communes : mosaïque pour choisir sa commune ----------------------------- */

.communes-entete .entete-page__titre { margin-top: 1.25rem; }
.mosaique-communes {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 150px;
	gap: .75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.tuile-commune--grande { grid-column: span 2; }
@media (min-width: 640px) {
	.mosaique-communes { grid-auto-rows: 190px; gap: 1rem; }
}
@media (min-width: 960px) {
	.mosaique-communes { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 200px; }
	.tuile-commune--grande { grid-row: span 2; }
}
.tuile-commune__lien {
	position: relative;
	display: flex;
	align-items: flex-end;
	height: 100%;
	overflow: hidden;
	border-radius: var(--f-rayon-l);
	background: var(--f-encre);
	color: #fff;
	isolation: isolate;
}
.tuile-commune__lien:hover { color: #fff; }
.tuile-commune__lien:focus-visible { outline: 3px solid var(--f-focus); outline-offset: 3px; }
.tuile-commune__image { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--f-courbe); }
.tuile-commune--photo .tuile-commune__lien::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgba(14, 34, 57, .88) 0%, rgba(14, 34, 57, .35) 45%, rgba(14, 34, 57, 0) 75%);
}
.tuile-commune__lien:hover .tuile-commune__image { transform: scale(1.05); }

/* Sans photo : la silhouette de la commune, tracée d'après ses contours */
.tuile-commune--plan .tuile-commune__lien { background: radial-gradient(120% 90% at 80% 10%, var(--f-encre-survol) 0%, var(--f-encre) 60%); }
.tuile-commune__silhouette {
	position: absolute;
	top: 9%;
	right: 22%;
	z-index: -1;
	width: 56%;
	height: 52%;
	fill: rgba(255, 255, 255, .07);
	stroke: var(--f-jaune);
	stroke-width: 1.2;
	stroke-linejoin: round;
	transition: transform 600ms var(--f-courbe), fill 600ms var(--f-courbe);
}
.tuile-commune__silhouette path { vector-effect: non-scaling-stroke; }
.tuile-commune__lien:hover .tuile-commune__silhouette { fill: rgba(255, 255, 255, .13); transform: scale(1.04); }
.tuile-commune--grande .tuile-commune__silhouette { top: 12%; right: 25%; width: 50%; height: 56%; }

.tuile-commune__texte { display: flex; flex-direction: column; gap: .25rem; padding: 1.125rem 1.25rem; }
.tuile-commune__nom { font-size: 1.125rem; font-weight: 600; line-height: 1.2; text-wrap: balance; }
.tuile-commune__detail { color: rgba(255, 255, 255, .78); font-size: var(--f-taille-mini); }
.tuile-commune--grande .tuile-commune__texte { padding: 1.5rem 1.75rem; }
.tuile-commune--grande .tuile-commune__nom { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem); font-weight: 300; letter-spacing: -.02em; }
.tuile-commune--grande .tuile-commune__detail { font-size: var(--f-taille-petit); }
.tuile-commune__fleche {
	position: absolute;
	top: 1rem;
	right: 1rem;
	width: 2.25rem;
	height: 2.25rem;
	padding: .5rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, .14);
	color: #fff;
	backdrop-filter: blur(4px);
	transition: background-color var(--f-duree) var(--f-courbe), color var(--f-duree) var(--f-courbe), transform var(--f-duree) var(--f-courbe);
}
.tuile-commune__lien:hover .tuile-commune__fleche { background: var(--f-jaune); color: var(--f-encre); transform: translateX(2px); }
@media (max-width: 639.98px) {
	.tuile-commune__texte { padding: .875rem 1rem; }
	.tuile-commune__nom { font-size: 1rem; }
	.tuile-commune__detail { font-size: .75rem; }
	.tuile-commune__fleche { top: .625rem; right: .625rem; width: 1.875rem; height: 1.875rem; padding: .4rem; }
	.tuile-commune__nom { font-size: .9375rem; }
	.tuile-commune__silhouette { top: 8%; right: 30%; width: 40%; height: 38%; }
}

/* Dernière tuile : vers le tableau comparatif */
.tuile-commune--comparer .tuile-commune__lien { background: var(--f-jaune); color: var(--f-encre); }
.tuile-commune--comparer .tuile-commune__lien:hover { background: var(--f-jaune-fonce); color: var(--f-encre); }
.tuile-commune--comparer .tuile-commune__detail { color: var(--f-texte); }
.tuile-commune--comparer .tuile-commune__fleche { background: rgba(14, 34, 57, .08); color: var(--f-encre); }
.tuile-commune--comparer .tuile-commune__lien:hover .tuile-commune__fleche { background: var(--f-encre); color: #fff; }
.tuile-commune__icone { position: absolute; top: 1.125rem; left: 1.25rem; width: 1.75rem; height: 1.75rem; }

/* Page mère « Prix du m² » : héros ------------------------------------------ */

.heros-prix { padding-block: clamp(1.75rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2.25rem); border-bottom: 1px solid var(--f-filet); background: var(--f-fond-doux); }
.heros-prix__grille { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 960px) {
	.heros-prix__grille { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 3.5rem; }
}
.heros-prix__titre { margin-top: 1.25rem; font-size: clamp(2.25rem, 1.6rem + 2.6vw, 3.5rem); font-weight: 300; line-height: 1.05; letter-spacing: -.02em; text-wrap: balance; }
.heros-prix__chapo { margin-top: .875rem; color: var(--f-texte-doux); font-size: clamp(1.0625rem, 1rem + .3vw, 1.25rem); }
.heros-prix__source { margin-top: 1.5rem; color: var(--f-libelle); font-size: .75rem; }

.recherche-commune { max-width: 520px; margin-top: clamp(1.5rem, 3vw, 2.25rem); }
.recherche-commune__libelle { display: block; margin-bottom: .5rem; color: var(--f-encre); font-size: var(--f-taille-mini); font-weight: 600; }
.recherche-commune__champ {
	display: flex;
	align-items: center;
	gap: .625rem;
	padding: .375rem .375rem .375rem 1rem;
	border: 1px solid var(--f-filet-fonce);
	border-radius: var(--f-rayon-m);
	background: #fff;
	box-shadow: var(--f-ombre-carte);
}
.recherche-commune__champ:focus-within { border-color: transparent; outline: 2px solid var(--f-focus); }
.recherche-commune__champ > .icone { flex: none; width: 1.25rem; height: 1.25rem; color: var(--f-libelle); }
.recherche-commune__saisie { flex: 1; min-width: 0; min-height: 44px; padding: 0; border: 0; background: none; color: var(--f-encre); font-size: 1rem; outline: 0; }
.recherche-commune__saisie::placeholder { color: var(--f-indice); }
.recherche-commune__saisie::-webkit-search-cancel-button { display: none; }
.recherche-commune .bouton { flex: none; }

/* Deux tuiles, deux couleurs : maison en encre, appartement en blanc */
.heros-prix__tuiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(.75rem, 2vw, 1.25rem); margin: 0; padding: 0; list-style: none; }
.tuile-prix {
	display: flex;
	flex-direction: column;
	gap: .25rem;
	padding: clamp(1.125rem, 2.5vw, 1.75rem);
	border-radius: var(--f-rayon-l);
}
.tuile-prix--maison { background: var(--f-encre); color: #fff; }
.tuile-prix--appartement,
.tuile-prix--local,
.tuile-prix--terrain { border: 1px solid var(--f-filet); background: #fff; color: var(--f-encre); box-shadow: var(--f-ombre-carte); }
.tuile-prix__icone { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin-bottom: .75rem; border-radius: 50%; }
.tuile-prix__icone .icone { width: 1.5rem; height: 1.5rem; }
.tuile-prix--maison .tuile-prix__icone { background: rgba(255, 255, 255, .1); color: var(--f-jaune); }
.tuile-prix--appartement .tuile-prix__icone,
.tuile-prix--local .tuile-prix__icone,
.tuile-prix--terrain .tuile-prix__icone { background: var(--f-accent-clair); color: var(--f-accent); }
.tuile-prix__type { font-size: 1rem; font-weight: 500; }
.tuile-prix__valeur { font-size: clamp(1.875rem, 1.3rem + 2.2vw, 2.875rem); font-weight: 300; line-height: 1.1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tuile-prix__valeur span { font-size: clamp(.8125rem, .75rem + .3vw, 1rem); font-weight: 400; letter-spacing: 0; }
.tuile-prix__detail { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem .5rem; margin-top: auto; padding-top: .75rem; font-size: .75rem; }
.tuile-prix--maison .tuile-prix__detail { color: rgba(255, 255, 255, .75); }
.tuile-prix--appartement .tuile-prix__detail,
.tuile-prix--local .tuile-prix__detail,
.tuile-prix--terrain .tuile-prix__detail { color: var(--f-libelle); }

/* Tableau des communes : suite repliée, ligne ciblée par la recherche */
.communes-suite { margin-top: 1rem; }
.communes-suite > summary { list-style: none; cursor: pointer; }
.communes-suite > summary::-webkit-details-marker { display: none; }
.communes-suite__fermer,
.communes-suite[open] > summary .communes-suite__ouvrir { display: none; }
.communes-suite[open] > summary .communes-suite__fermer { display: inline; }
.communes-suite[open] > .tableau-cadre { margin-top: 1rem; }
.tableau tr.est-ciblee > *,
.tableau tr:target > * { background: var(--f-jaune-clair); }

.prix-detailles { margin-top: clamp(2rem, 4vw, 2.75rem); padding-top: 1.75rem; border-top: 1px solid var(--f-filet); }
.prix-detailles__titre { margin-bottom: .875rem; color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.prix-detailles__liste { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }

/* Carte de chaleur (quartiers, communes) ------------------------------------ */

.carte-quartiers { margin: 0; overflow: hidden; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-m); background: #fff; box-shadow: var(--f-ombre-carte); }
.carte-quartiers__barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding: .875rem 1rem; border-bottom: 1px solid var(--f-filet); }
.carte-quartiers__choix { display: flex; gap: .5rem; }
.carte-quartiers__legende { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; color: var(--f-texte-doux); font-size: .75rem; font-variant-numeric: tabular-nums; }
.carte-quartiers__degrade { width: clamp(80px, 12vw, 140px); height: 10px; border-radius: var(--f-rayon-pilule); background: linear-gradient(90deg, rgb(26, 152, 80), rgb(145, 207, 96), rgb(254, 224, 139), rgb(252, 141, 89), rgb(215, 48, 39)); }
.carte-quartiers__sans { display: inline-flex; align-items: center; gap: .375rem; margin-left: .5rem; }
.carte-quartiers__sans::before { content: ""; width: 14px; height: 10px; border-radius: 2px; background: repeating-linear-gradient(45deg, var(--f-filet-fonce) 0 2px, var(--f-filet) 2px 5px); }
.carte-quartiers__carte { height: clamp(360px, 52vw, 540px); background: var(--f-fond-doux); }
.carte-quartiers--communes .carte-quartiers__carte { height: clamp(420px, 62vw, 660px); }
.carte-quartiers__carte .leaflet-tile-pane { filter: grayscale(1) brightness(1.04) contrast(.9); }
.carte-quartiers__carte.est-indisponible { display: flex; align-items: center; justify-content: center; padding: 2rem; color: var(--f-libelle); font-size: var(--f-taille-mini); text-align: center; }
.carte-quartiers__info { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem 1.25rem; min-height: 3.25rem; padding: .875rem 1rem; border-top: 1px solid var(--f-filet); color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.carte-quartiers__nom { color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.carte-quartiers__ligne strong { color: var(--f-encre); font-weight: 600; }
.carte-quartiers__ligne.est-active { color: var(--f-encre); }
.carte-quartiers__lien { color: var(--f-accent); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.carte-quartiers__etiquette span {
	position: absolute;
	color: var(--f-encre);
	font-family: var(--f-police);
	font-size: 11px;
	font-weight: 600;
	white-space: nowrap;
	text-shadow: 0 0 3px #fff, 0 0 3px #fff, 0 0 2px #fff;
	transform: translate(-50%, -50%);
	pointer-events: none;
}
.leaflet-tooltip.carte-quartiers__bulle { padding: .3125rem .5rem; border: 0; border-radius: var(--f-rayon-s); color: var(--f-encre); font-family: var(--f-police); font-size: .75rem; font-weight: 500; box-shadow: 0 4px 14px rgba(20, 24, 31, .18); }

.quartiers-tableau { margin-top: 1.25rem; }
.quartiers-tableau > summary {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	min-height: 44px;
	color: var(--f-encre);
	font-size: .75rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
	list-style: none;
	cursor: pointer;
}
.quartiers-tableau > summary::-webkit-details-marker { display: none; }
.quartiers-tableau > summary .icone { width: 1.25rem; height: 1.25rem; transition: transform var(--f-duree) var(--f-courbe); }
.quartiers-tableau[open] > summary .icone { transform: rotate(180deg); }
.quartiers-tableau[open] > .tableau-cadre { margin-top: .75rem; }

/* Héros des pages de prix : une seule tuile, ou aucune */
.heros-prix__tuiles { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
@media (min-width: 960px) {
	.heros-prix__grille--seule { grid-template-columns: minmax(0, 1fr); }
}
.heros-prix__autres { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.heros-prix__autres li {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem .875rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-texte-doux);
	font-size: var(--f-taille-mini);
}
.heros-prix__autres .icone { width: 1.125rem; height: 1.125rem; color: var(--f-accent); }
.heros-prix__autres strong { color: var(--f-encre); font-weight: 600; font-variant-numeric: tabular-nums; }

/* Loyers : deux cartes, le rendement en pied */
.loyers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
@media (min-width: 768px) {
	.loyers { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.loyer { display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-l); background: #fff; }
.loyer__corps { display: flex; flex: 1; flex-direction: column; gap: .375rem; padding: 1.5rem 1.5rem 1.25rem; }
.loyer__type { display: flex; align-items: center; gap: .75rem; margin-bottom: .5rem; color: var(--f-encre); font-size: 1rem; font-weight: 500; }
.loyer__type .tuile-prix__icone { margin: 0; background: var(--f-accent-clair); color: var(--f-accent); }
.loyer__valeur { color: var(--f-encre); font-size: clamp(2rem, 1.5rem + 1.6vw, 2.625rem); font-weight: 300; line-height: 1.1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.loyer__valeur span { color: var(--f-texte-doux); font-size: .9375rem; font-weight: 400; letter-spacing: 0; }
.loyer__fourchette { color: var(--f-libelle); font-size: var(--f-taille-mini); }
.loyer__details { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: .75rem 0 0; padding-top: .875rem; border-top: 1px solid var(--f-filet); }
.loyer__details dt { color: var(--f-libelle); font-size: .75rem; }
.loyer__details dd { margin: .125rem 0 0; color: var(--f-encre); font-size: 1rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.loyer__rendement { display: flex; align-items: baseline; gap: .5rem; padding: .875rem 1.5rem; background: var(--f-accent-clair); color: var(--f-texte); font-size: var(--f-taille-mini); }
.loyer__rendement strong { color: var(--f-encre); font-size: 1.375rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.loyer__rendement--neutre { background: var(--f-fond-doux); color: var(--f-libelle); }

/* Transports : carte de la gare et trajets */
.transports { display: grid; gap: 1.25rem; align-items: start; }
@media (min-width: 960px) {
	.transports { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 2rem; }
}
.carte-transports { height: clamp(300px, 40vw, 420px); overflow: hidden; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-l); background: var(--f-fond-doux); }
.carte-transports .leaflet-tile-pane { filter: grayscale(.85) brightness(1.03); }
.carte-transports.est-indisponible { display: flex; align-items: center; justify-content: center; color: var(--f-libelle); font-size: var(--f-taille-mini); }
.repere-carte { display: flex !important; align-items: center; justify-content: center; border-radius: 50%; box-shadow: 0 3px 10px rgba(20, 24, 31, .3); }
.repere-carte .icone { width: 1.25rem; height: 1.25rem; }
.repere-carte--gare { background: var(--f-encre); color: var(--f-jaune); }
.repere-carte--centre { border: 2px solid var(--f-encre); background: #fff; color: var(--f-encre); }
.leaflet-tooltip.repere-carte__nom { padding: .25rem .5rem; border: 0; border-radius: var(--f-rayon-s); color: var(--f-encre); font-family: var(--f-police); font-size: .75rem; font-weight: 600; box-shadow: 0 3px 10px rgba(20, 24, 31, .15); }
.leaflet-tooltip.repere-carte__nom::before { display: none; }
.trajets { display: flex; flex-direction: column; gap: .75rem; margin: 0; padding: 0; list-style: none; }
.trajet { display: flex; align-items: center; gap: 1rem; padding: 1.125rem 1.25rem; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-l); background: #fff; }
.trajet__icone { display: flex; flex: none; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--f-accent-clair); color: var(--f-accent); }
.trajet__icone .icone { width: 1.375rem; height: 1.375rem; }
.trajet__corps { display: flex; flex-direction: column; gap: .125rem; }
.trajet__titre { color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.trajet__detail { color: var(--f-libelle); font-size: var(--f-taille-mini); }

/* Immobilier : trois portes d'entrée vers les annonces de la commune */
.liens-biens { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) {
	.liens-biens { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.lien-biens {
	display: flex;
	align-items: center;
	gap: 1rem;
	height: 100%;
	padding: 1.25rem 1.375rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
	color: var(--f-encre);
	transition: border-color var(--f-duree) var(--f-courbe), box-shadow var(--f-duree) var(--f-courbe);
}
.lien-biens:hover { border-color: var(--f-encre); color: var(--f-encre); box-shadow: var(--f-ombre-carte); }
.lien-biens__icone { display: flex; flex: none; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: var(--f-rayon-m); background: var(--f-encre); color: #fff; }
.lien-biens__icone .icone { width: 1.625rem; height: 1.625rem; }
.lien-biens--vide .lien-biens__icone { background: var(--f-fond-doux); color: var(--f-libelle); }
.lien-biens__corps { display: flex; flex: 1; flex-direction: column; gap: .25rem; min-width: 0; }
.lien-biens__titre { font-size: 1.0625rem; font-weight: 600; line-height: 1.25; }
.lien-biens__detail { color: var(--f-texte-doux); font-size: var(--f-taille-mini); }
.lien-biens__fleche { flex: none; width: 1.25rem; height: 1.25rem; color: var(--f-libelle); transition: transform var(--f-duree) var(--f-courbe); }
.lien-biens:hover .lien-biens__fleche { color: var(--f-encre); transform: translateX(3px); }
.guide__sous-titre--biens { margin: clamp(2rem, 4vw, 2.75rem) 0 1.25rem; font-size: 1.25rem; }
/* ==========================================================================
   Estimation (page /estimation/) : questions une par une, résultat, avis de valeur
   ========================================================================== */

.heros-estimation__preuves { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.heros-estimation__preuves li {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem .875rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-pilule);
	background: #fff;
	color: var(--f-texte);
	font-size: var(--f-taille-mini);
}
.heros-estimation__preuves .icone { width: 1.125rem; height: 1.125rem; color: var(--f-accent); }
.heros-estimation__logo { width: auto; }

/* Carte de l'outil */
.estimateur {
	max-width: 780px;
	margin-inline: auto;
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
	box-shadow: var(--f-ombre-carte);
}
.estimateur__progression { height: 4px; overflow: hidden; border-radius: var(--f-rayon-pilule); background: var(--f-filet); }
.estimateur__progression span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--f-accent); transition: width 300ms var(--f-courbe); }
.estimateur__etape-numero { margin-top: .75rem; color: var(--f-libelle); font-size: .75rem; letter-spacing: .04em; }
.estimateur__formulaire { margin-top: 1.25rem; }
.estimateur__navigation { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 2rem; }
.estimateur__navigation [data-suivant] { margin-left: auto; }

.question { min-width: 0; margin: 0; padding: 0; border: 0; }
.question__titre { display: block; margin-bottom: .5rem; padding: 0; color: var(--f-encre); font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); font-weight: 300; line-height: 1.2; letter-spacing: -.01em; }
.question__titre:focus { outline: 0; }
.question__aide { margin-bottom: 1.25rem; color: var(--f-texte-doux); font-size: var(--f-taille-petit); }
.question__aide a { color: var(--f-accent); text-decoration: underline; text-underline-offset: 3px; }
.question__erreur { margin-top: .75rem; color: var(--f-baisse); font-size: var(--f-taille-mini); font-weight: 500; }
.question .champ__groupe > .icone { flex: none; width: 1.25rem; height: 1.25rem; color: var(--f-libelle); }
.question select.champ__saisie { padding-right: 2rem; }

/* Adresse proposée */
.adresse-auto { position: relative; }
.adresse-auto__liste {
	position: absolute;
	top: calc(100% + 4px);
	right: 0;
	left: 0;
	z-index: 5;
	margin: 0;
	padding: .375rem;
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-m);
	background: #fff;
	box-shadow: var(--f-ombre-panneau);
	list-style: none;
}
.adresse-auto__liste li { padding: .625rem .75rem; border-radius: var(--f-rayon-s); color: var(--f-encre); font-size: var(--f-taille-petit); cursor: pointer; }
.adresse-auto__liste li:hover,
.adresse-auto__liste li[aria-selected="true"] { background: var(--f-fond-doux); }

/* Choix en cartes */
.choix { display: grid; gap: .75rem; }
.choix--deux,
.choix--cases { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.choix--liste { grid-template-columns: minmax(0, 1fr); }
.choix__option { display: block; cursor: pointer; }
.choix__carte {
	display: flex;
	flex-direction: column;
	gap: .25rem;
	height: 100%;
	padding: 1rem 1.125rem;
	border: 1px solid var(--f-filet-fonce);
	border-radius: var(--f-rayon-m);
	background: #fff;
	transition: border-color var(--f-duree) var(--f-courbe), background-color var(--f-duree) var(--f-courbe), box-shadow var(--f-duree) var(--f-courbe);
}
.choix--deux .choix__carte { align-items: center; gap: .625rem; padding-block: 1.5rem; text-align: center; }
.choix--cases .choix__carte { flex-direction: row; align-items: center; gap: .75rem; }
.choix__option:hover .choix__carte { border-color: var(--f-encre); }
.choix__option input:checked + .choix__carte { border-color: var(--f-encre); background: var(--f-accent-clair); box-shadow: inset 0 0 0 1px var(--f-encre); }
.choix__option input:focus-visible + .choix__carte,
.choix__option input:focus-visible + .choix__lettre { outline: 2px solid var(--f-focus); outline-offset: 2px; }
.choix__icone { width: 2rem; height: 2rem; color: var(--f-accent); }
.choix--cases .choix__icone { width: 1.5rem; height: 1.5rem; }
.choix__titre { color: var(--f-encre); font-size: 1rem; font-weight: 600; }
.choix__detail { color: var(--f-texte-doux); font-size: var(--f-taille-mini); line-height: 1.5; }

/* Étiquette énergie : les couleurs officielles du DPE */
.choix--dpe { display: flex; flex-wrap: wrap; align-items: stretch; gap: .5rem; }
.choix__lettre {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: var(--f-rayon-m);
	color: #fff;
	font-size: 1.25rem;
	font-weight: 600;
	transition: transform var(--f-duree) var(--f-courbe), box-shadow var(--f-duree) var(--f-courbe);
}
.choix__lettre--a { background: #009c6d; }
.choix__lettre--b { background: #52b153; }
.choix__lettre--c { background: #a5cc74; color: var(--f-encre); }
.choix__lettre--d { background: #f4e70f; color: var(--f-encre); }
.choix__lettre--e { background: #f0b40f; color: var(--f-encre); }
.choix__lettre--f { background: #eb8235; }
.choix__lettre--g { background: #d7221f; }
.choix__option--dpe:hover .choix__lettre { transform: translateY(-2px); }
.choix__option--dpe input:checked + .choix__lettre { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--f-encre); transform: translateY(-2px); }
.choix__option--inconnu { flex: 1 1 160px; }
.choix__option--inconnu .choix__carte { justify-content: center; height: 52px; padding-block: 0; }

.case { display: inline-flex; align-items: center; gap: .625rem; min-height: 44px; color: var(--f-encre); font-size: var(--f-taille-petit); cursor: pointer; }
.case input { width: 1.125rem; height: 1.125rem; accent-color: var(--f-encre); }

@media (max-width: 479.98px) {
	.choix--cases { grid-template-columns: minmax(0, 1fr); }
	.choix__lettre { width: 44px; height: 44px; }
	.choix__option--inconnu .choix__carte { height: 44px; }
}

/* Résultat */
.estimateur__resultat:focus { outline: 0; }
.resultat { display: flex; flex-direction: column; gap: 1rem; }
.resultat__surtitre { color: var(--f-accent); font-size: var(--f-taille-surtitre); font-weight: 500; letter-spacing: var(--f-espacement-surtitre); text-transform: uppercase; }
.resultat__titre { color: var(--f-encre); font-size: 1.5rem; font-weight: 300; }
.resultat__fourchette { color: var(--f-encre); font-size: clamp(1.875rem, 1.3rem + 2.4vw, 3rem); font-weight: 300; line-height: 1.15; letter-spacing: -.02em; }
.resultat__fourchette strong { font-weight: 600; white-space: nowrap; }
.resultat__milieu { color: var(--f-texte); font-size: 1.0625rem; }
.resultat__milieu strong { color: var(--f-encre); }
.resultat__confiance { padding: .875rem 1rem; border-radius: var(--f-rayon-m); background: var(--f-fond-doux); color: var(--f-texte); font-size: var(--f-taille-mini); line-height: 1.6; }
.resultat__confiance span { display: inline-block; margin-right: .5rem; padding: .125rem .5rem; border-radius: var(--f-rayon-pilule); font-weight: 600; }
.resultat__confiance--bonne span { background: var(--f-hausse-clair); color: var(--f-hausse); }
.resultat__confiance--moyenne span { background: var(--f-jaune-clair); color: var(--f-encre); }
.resultat__confiance--faible span { background: var(--f-baisse-clair); color: var(--f-baisse); }
.resultat__facteurs { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.resultat__facteurs li { padding: .375rem .75rem; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-pilule); color: var(--f-texte); font-size: var(--f-taille-mini); }
.resultat__facteurs span { margin-left: .25rem; font-weight: 600; }
.resultat__ventes summary { color: var(--f-encre); font-size: var(--f-taille-mini); font-weight: 600; cursor: pointer; }
.resultat__ventes .tableau-cadre { margin-top: .75rem; }
.resultat__avertissement { color: var(--f-libelle); font-size: .75rem; line-height: 1.55; }
.resultat__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: .5rem; }
.resultat--vide p:not([class]) { color: var(--f-texte); }

/* Avis de valeur : masqué tant qu'aucune estimation n'est faite (visible sans JavaScript) */
.js [data-avis-cache] { display: none; }
.avis-valeur { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 960px) {
	.avis-valeur { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 4rem; }
}
.avis-valeur__tel { color: var(--f-accent); font-weight: 600; white-space: nowrap; }
/* ==========================================================================
   Pages de l'agence : gestion locative, syndic, « Gestion et syndic », « L'agence »
   ========================================================================== */

.heros-service__actions { margin-top: 1.5rem; }
.heros-service__actions .bouton--contour .icone { width: 1.125rem; height: 1.125rem; }

/* Contenu et carte de contact qui reste visible */
.service { display: grid; gap: 2.5rem; align-items: start; }
@media (min-width: 1024px) {
	.service { grid-template-columns: minmax(0, 1fr) 360px; gap: 4rem; }
	.service__aside { position: sticky; top: calc(var(--decalage-admin, 0px) + var(--f-hauteur-entete) + 1.5rem); }
}
.service__contenu { max-width: var(--f-largeur-texte); }
.service__contenu > h2:first-child { margin-top: 0; }

/* Questions fréquentes écrites dans l'éditeur (blocs « Détails ») */
.contenu .wp-block-details { border-bottom: 1px solid var(--f-filet-fonce); }
.contenu h2 + .wp-block-details,
.contenu .wp-block-details:first-of-type { border-top: 1px solid var(--f-filet-fonce); }
.contenu .wp-block-details + .wp-block-details { margin-top: 0; }
.contenu .wp-block-details summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.125rem;
	color: var(--f-encre);
	font-size: 1.0625rem;
	font-weight: 500;
	list-style: none;
	cursor: pointer;
}
.contenu .wp-block-details summary::-webkit-details-marker { display: none; }
.contenu .wp-block-details summary::after { content: "+"; flex: none; color: var(--f-libelle); font-size: 1.5rem; font-weight: 300; line-height: 1; }
.contenu .wp-block-details[open] summary::after { content: "−"; }
.contenu .wp-block-details summary:hover { color: var(--f-accent); }
.contenu .wp-block-details > p { margin: 0 0 1.25rem; }

.carte-contact { display: flex; flex-direction: column; gap: 1.125rem; }
.carte-contact__moyens { display: flex; flex-direction: column; gap: .625rem; margin: 0; padding: 0 0 1.125rem; border-bottom: 1px solid var(--f-filet); list-style: none; font-size: var(--f-taille-petit); }
.carte-contact__moyens li { display: flex; align-items: flex-start; gap: .625rem; color: var(--f-texte); }
.carte-contact__moyens .icone { flex: none; width: 1.25rem; height: 1.25rem; margin-top: .0625rem; color: var(--f-accent); }
.carte-contact__moyens a { color: var(--f-encre); font-weight: 500; overflow-wrap: anywhere; }
.carte-contact__moyens a:hover { color: var(--f-accent); }

/* Garanties */
.garanties__reseau { display: inline-flex; align-items: center; gap: .75rem; color: var(--f-encre); font-size: var(--f-taille-mini); font-weight: 500; }
.garanties__logo { width: auto; }
.garanties { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.garantie { display: flex; flex-direction: column; gap: .5rem; padding: 1.5rem; border-radius: var(--f-rayon-l); background: #fff; box-shadow: var(--f-ombre-carte); }
.garantie__icone { width: 1.75rem; height: 1.75rem; margin-bottom: .25rem; color: var(--f-accent); }
.garantie__titre { color: var(--f-encre); font-size: 1.0625rem; font-weight: 600; }
.garantie__texte { color: var(--f-texte-doux); font-size: var(--f-taille-petit); line-height: 1.6; }

/* « Gestion et syndic » : deux services en deux cartes */
.services { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) {
	.services { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.service-carte {
	display: flex;
	flex-direction: column;
	gap: .75rem;
	padding: clamp(1.5rem, 3vw, 2.25rem);
	border: 1px solid var(--f-filet);
	border-radius: var(--f-rayon-l);
	background: #fff;
	box-shadow: var(--f-ombre-carte);
}
.service-carte__icone { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; margin-bottom: .5rem; border-radius: var(--f-rayon-m); background: var(--f-encre); color: var(--f-jaune); }
.service-carte__icone .icone { width: 1.625rem; height: 1.625rem; }
.service-carte__public { color: var(--f-accent); font-size: var(--f-taille-surtitre); font-weight: 500; letter-spacing: var(--f-espacement-surtitre); text-transform: uppercase; }
.service-carte__titre { color: var(--f-encre); font-size: clamp(1.5rem, 1.2rem + 1vw, 1.875rem); font-weight: 300; letter-spacing: -.01em; }
.service-carte__points { display: flex; flex-direction: column; gap: .625rem; margin: .5rem 0 1rem; padding: 0; list-style: none; }
.service-carte__points li { display: flex; gap: .625rem; color: var(--f-texte); font-size: var(--f-taille-petit); line-height: 1.55; }
.service-carte__points .icone { flex: none; width: 1.25rem; height: 1.25rem; color: var(--f-hausse); }
.service-carte .bouton { align-self: flex-start; margin-top: auto; }

.service-contact,
.agence-acces { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 960px) {
	.service-contact { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 4rem; }
	.agence-acces { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 3rem; }
}

/* « L'agence » */
.heros-agence__grille { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 960px) {
	.heros-agence__grille { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 3.5rem; }
}
.heros-agence__photo { border-radius: var(--f-rayon-l); }
.heros-agence__photo img { object-position: 50% 75%; }

/* Plan Google : encart, puis carte au clic */
.carte-google { overflow: hidden; border: 1px solid var(--f-filet); border-radius: var(--f-rayon-l); background: var(--f-fond-doux); }
.carte-google__encart {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .75rem;
	min-height: 360px;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	background:
		linear-gradient(90deg, rgba(221, 229, 238, .7) 1px, transparent 1px) 0 0 / 40px 40px,
		linear-gradient(rgba(221, 229, 238, .7) 1px, transparent 1px) 0 0 / 40px 40px,
		var(--f-fond-doux);
}
.carte-google__icone { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; background: var(--f-encre); color: var(--f-jaune); }
.carte-google__icone .icone { width: 1.625rem; height: 1.625rem; }
.carte-google__titre { color: var(--f-encre); font-size: 1.25rem; font-weight: 600; }
.carte-google__adresse { color: var(--f-texte); line-height: 1.6; }
.carte-google__note { max-width: 44ch; color: var(--f-libelle); font-size: .75rem; }
.carte-google__cadre { display: block; width: 100%; height: clamp(360px, 45vw, 480px); border: 0; }

/* « Mes favoris » ------------------------------------------------------------ */

.heros-favoris__grille { display: grid; gap: 1.5rem; align-items: end; }
@media (min-width: 960px) {
	.heros-favoris__grille { grid-template-columns: minmax(0, 1fr) auto; gap: 3rem; }
}
.heros-favoris__actions { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; }
@media (min-width: 960px) {
	.heros-favoris__actions { align-items: flex-end; }
}
.heros-favoris__actions .bouton .icone { width: 1.125rem; height: 1.125rem; }
.heros-favoris__compte { color: var(--f-encre); font-size: 1.125rem; font-weight: 600; }

.favori { transition: opacity var(--f-duree) var(--f-courbe); }
.favori.est-retire { opacity: .45; }
.favori.est-retire:hover { opacity: .8; }
.favori > .carte-bien { height: 100%; }

.favoris__absents {
	margin-bottom: 1.5rem;
	padding: .875rem 1rem;
	border-radius: var(--f-rayon-m);
	background: var(--f-fond-doux);
	color: var(--f-texte);
	font-size: var(--f-taille-mini);
}
.favoris__absents .lien-discret { margin-left: .25rem; }

.carte-attente { display: flex; flex-direction: column; gap: .75rem; overflow: hidden; border-radius: var(--f-rayon-l); background: #fff; box-shadow: var(--f-ombre-carte); }
.carte-attente span { display: block; background: var(--f-fond-doux); }
.carte-attente span:nth-child(1) { aspect-ratio: 4 / 3; }
.carte-attente span:nth-child(2) { width: 70%; height: 1rem; margin-inline: 1rem; border-radius: var(--f-rayon-s); }
.carte-attente span:nth-child(3) { width: 40%; height: 1rem; margin: 0 1rem 1.25rem; border-radius: var(--f-rayon-s); }
@media (prefers-reduced-motion: no-preference) {
	.carte-attente span { animation: attente 1.4s ease-in-out infinite alternate; }
}
@keyframes attente { from { opacity: 1; } to { opacity: .5; } }

.favoris-vide { display: flex; flex-direction: column; align-items: center; gap: .875rem; max-width: 460px; margin-inline: auto; padding-block: 2rem; color: var(--f-texte-doux); text-align: center; }
.favoris-vide__icone { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 50%; background: var(--f-accent-clair); color: var(--f-accent); }
.favoris-vide__icone .icone { width: 1.875rem; height: 1.875rem; }
.favoris-vide__titre { color: var(--f-encre); font-size: 1.5rem; font-weight: 300; }
.favoris-vide .rangee-boutons { justify-content: center; margin-top: .5rem; }
