/* Polaris — feuille unique du modèle. Jetons sur :root, aucune couleur ailleurs.
   Préfixe pl- (p- est celui de Pionnier). Coins 2 px, cercles pour pastilles et
   portraits. Les bandes .pl-nuit redéfinissent les jetons de texte localement. */
[hidden] { display: none !important; }

@font-face { font-family: 'InstrumentSerifPolaris'; src: url('../fonts/instrument-serif-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'InstrumentSerifPolaris'; src: url('../fonts/instrument-serif-400i.woff2') format('woff2'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'ManropePolaris'; src: url('../fonts/manrope-var.woff2') format('woff2'); font-weight: 200 800; font-style: normal; font-display: swap; }

:root {
    --pl-fond: #F6F4EF;
    --pl-pierre: #ECE8E0;
    --pl-trait: #DCD6CB;
    --pl-encre: #1E2229;
    --pl-doux: #5E626A;
    --pl-blanc: #FFFFFF;
    --pl-nuit: var(--color-primary);
    --pl-sur-nuit: var(--color-on-primary);
    /* Fond du pied : la primaire mêlée à l'inverse de sa couleur de texte (lu sous @supports). */
    --pl-nuit-profonde: color-mix(in srgb, var(--color-primary) 65%, rgb(from var(--color-on-primary) calc(255 - r) calc(255 - g) calc(255 - b)));
    --pl-bronze: var(--color-secondary);
    --pl-sur-bronze: var(--color-on-secondary);
    --pl-bronze-texte: var(--color-secondary-sur-clair);
    --pl-focus: var(--color-secondary-sur-clair);
    --pl-vigilance: #8A4B1F;
    --pl-dpe-a: #2E7D32;
    --pl-dpe-b: #558B2F;
    --pl-dpe-c: #9E9D24;
    --pl-dpe-d: #F9A825;
    --pl-dpe-e: #EF6C00;
    --pl-dpe-f: #D84315;
    --pl-dpe-g: #B71C1C;
    --pl-ombre: rgba(20, 24, 33, 0.08);
    --pl-voile: rgba(20, 24, 33, 0.55);
    --pl-serif: 'InstrumentSerifPolaris', Georgia, 'Times New Roman', serif;
    --pl-sans: 'ManropePolaris', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --pl-rayon: 2px;
    --pl-largeur: 1240px;
    --pl-gouttiere: 16px;
}

/* Bande sombre : la primaire en fond, texte calculé par theme.php (WCAG). */
.pl-nuit {
    background-color: var(--pl-nuit);
    color: var(--pl-sur-nuit);
    --pl-encre: var(--color-on-primary);
    --pl-doux: color-mix(in srgb, var(--color-on-primary) 78%, var(--color-primary));
    --pl-trait: color-mix(in srgb, var(--color-on-primary) 22%, var(--color-primary));
    --pl-bronze-texte: var(--color-secondary-sur-sombre);
    --pl-focus: var(--color-secondary-sur-sombre);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; animation: none !important; } }
body { margin: 0; background-color: var(--pl-fond); color: var(--pl-encre); font-family: var(--pl-sans); font-size: 16px; line-height: 1.6; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--pl-focus); outline-offset: 3px; }
button, input, select, textarea { font: inherit; color: inherit; }
table { border-collapse: collapse; }
.pl-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.pl-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pl-evitement { position: absolute; left: var(--pl-gouttiere); top: -100px; z-index: 100; padding: 10px 16px; background: var(--pl-blanc); color: var(--pl-encre); }
.pl-evitement:focus { top: 8px; }
.pl-icone { display: inline-block; flex: none; vertical-align: middle; }
.pl-chiffre, .pl-prix, td, .pl-tuile-valeur { font-variant-numeric: tabular-nums; }

/* Mise en page */
.pl-contenu { width: 100%; max-width: var(--pl-largeur); margin: 0 auto; padding: 0 var(--pl-gouttiere); }
.pl-section { padding: 64px 0; }
.pl-section--pierre { background-color: var(--pl-pierre); }
@media (max-width: 720px) { .pl-section { padding: 44px 0; } }

/* Typographie */
.pl-surtitre { margin: 0 0 12px; font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--pl-bronze-texte); }
.pl-titre-1, .pl-titre-2, .pl-titre-3 { font-family: var(--pl-serif); font-weight: 400; line-height: 1.08; margin: 0 0 16px; letter-spacing: -0.01em; }
.pl-titre-1 { font-size: clamp(2.6rem, 6vw, 4.6rem); }
.pl-titre-2 { font-size: clamp(1.9rem, 3.6vw, 2.6rem); }
.pl-titre-3 { font-size: 1.45rem; }
.pl-texte-doux { color: var(--pl-doux); }
.pl-chapo { font-size: 1.08rem; max-width: 40rem; }

/* Boutons : réaction par le FOND, jamais par la couleur du texte (CLAUDE.md §9). */
.pl-bouton { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 44px; padding: 10px 22px; border: 1px solid transparent; border-radius: var(--pl-rayon); font-size: 0.92rem; font-weight: 600; text-decoration: none; cursor: pointer; transition: background-color 0.2s ease, border-color 0.2s ease; background: none; }
.pl-bouton--compact { min-height: 38px; padding: 8px 16px; font-size: 0.86rem; }
.pl-bouton.pl-bouton--bronze { background-color: var(--pl-bronze); color: var(--pl-sur-bronze); }
.pl-bouton.pl-bouton--bronze:hover { background-color: color-mix(in srgb, var(--pl-bronze) 86%, var(--pl-encre)); color: var(--pl-sur-bronze); }
.pl-bouton.pl-bouton--nuit { background-color: var(--pl-nuit); color: var(--pl-sur-nuit); }
.pl-bouton.pl-bouton--nuit:hover { background-color: var(--color-primary-hover); color: var(--pl-sur-nuit); }
.pl-bouton.pl-bouton--contour { border-color: currentColor; color: var(--pl-encre); }
.pl-bouton.pl-bouton--contour:hover { background-color: color-mix(in srgb, var(--pl-encre) 8%, transparent); color: var(--pl-encre); }
.pl-bouton[disabled] { opacity: 0.55; cursor: not-allowed; }
.pl-lien-fleche { display: inline-flex; align-items: center; gap: 8px; font-size: 0.9rem; font-weight: 600; text-decoration: none; }
.pl-lien-fleche:hover { text-decoration: underline; text-underline-offset: 4px; }

/* Champs */
.pl-etiquette { display: block; margin-bottom: 6px; font-size: 0.82rem; font-weight: 600; }
.pl-champ { width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); background-color: var(--pl-blanc); color: var(--pl-encre); }
.pl-nuit .pl-champ { background-color: color-mix(in srgb, var(--color-on-primary) 6%, var(--color-primary)); color: var(--pl-sur-nuit); }
textarea.pl-champ { min-height: 120px; resize: vertical; }
/* Liste déroulante dessinée (polaris.js) : le <select> reste dans le formulaire, masqué à l'œil. */
.pl-liste { position: relative; }
.pl-liste-natif { position: absolute; left: 0; bottom: 0; width: 1px; height: 1px; min-height: 0; padding: 0; border: 0; opacity: 0; pointer-events: none; }
.pl-liste-bouton { display: flex; align-items: center; justify-content: space-between; gap: 10px; text-align: left; cursor: pointer; transition: border-color 0.2s ease; }
.pl-liste-bouton:hover { border-color: color-mix(in srgb, var(--pl-encre) 40%, var(--pl-trait)); }
.pl-liste-bouton[aria-expanded="true"] { border-color: var(--pl-nuit); box-shadow: inset 0 0 0 1px var(--pl-nuit); }
.pl-liste-bouton--vide .pl-liste-valeur { color: var(--pl-doux); }
.pl-liste-valeur { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pl-liste-chevron { color: var(--pl-bronze-texte); transition: transform 0.2s ease; }
.pl-liste-bouton[aria-expanded="true"] .pl-liste-chevron { transform: rotate(180deg); }
.pl-liste-options { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 45; min-width: 100%; max-height: 288px; margin: 0; padding: 6px; list-style: none; overflow-y: auto; background-color: var(--pl-blanc); color: var(--pl-encre); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); box-shadow: 0 16px 36px var(--pl-ombre); }
.pl-liste--haut .pl-liste-options { top: auto; bottom: calc(100% + 6px); }
.pl-liste-options:focus { outline: none; }
.pl-liste-option { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 12px; border-radius: var(--pl-rayon); font-size: 0.92rem; line-height: 1.35; cursor: pointer; }
.pl-liste-option.pl-actif { background-color: var(--pl-pierre); }
.pl-liste-options:focus-visible .pl-liste-option.pl-actif { box-shadow: inset 2px 0 0 var(--pl-bronze); }
.pl-liste-option[aria-selected="true"] { font-weight: 600; }
.pl-liste-coche { visibility: hidden; color: var(--pl-bronze-texte); }
.pl-liste-option[aria-selected="true"] .pl-liste-coche { visibility: visible; }
.pl-liste-option[aria-disabled="true"] { opacity: 0.5; cursor: default; }
.pl-liste--invalide .pl-liste-bouton { border-color: var(--pl-vigilance); box-shadow: inset 0 0 0 1px var(--pl-vigilance); }
.pl-nuit .pl-liste-options { background-color: color-mix(in srgb, var(--color-on-primary) 6%, var(--color-primary)); color: var(--pl-sur-nuit); }
.pl-nuit .pl-liste-option.pl-actif { background-color: color-mix(in srgb, var(--color-on-primary) 16%, var(--color-primary)); }
.pl-case { display: flex; gap: 10px; align-items: flex-start; font-size: 0.86rem; }
.pl-case input { margin-top: 4px; accent-color: var(--pl-nuit); }
.pl-piege { position: absolute; left: -10000px; }

/* Pastilles, badges */
/* Fond ET texte fixés ensemble : --pl-encre vire au clair dans .pl-nuit (l'en-tête),
   un texte d'encre sur fond blanc y devenait blanc sur blanc. */
.pl-pastille { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background-color: var(--pl-bronze); color: var(--pl-sur-bronze); font-size: 0.72rem; font-weight: 700; }
.pl-badge { display: inline-block; padding: 4px 9px; border-radius: var(--pl-rayon); background-color: var(--pl-fond); color: var(--pl-encre); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }

/* En-tête */
.pl-entete { position: sticky; top: 0; z-index: 50; }
.pl-entete-barre { display: flex; align-items: center; gap: 24px; min-height: 72px; }
.pl-logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.pl-logo img { width: auto; max-height: 48px; }
.pl-logo-etoile { color: var(--pl-bronze-texte); }
.pl-logo-texte { display: flex; flex-direction: column; line-height: 1.1; }
.pl-logo-nom { font-family: var(--pl-serif); font-size: 1.5rem; letter-spacing: 0.12em; text-transform: uppercase; }
.pl-logo-signature { font-size: 0.6rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--pl-doux); }
.pl-nav { margin-left: auto; }
.pl-nav ul { display: flex; gap: 28px; list-style: none; margin: 0; padding: 0; }
.pl-nav a { font-size: 0.92rem; text-decoration: none; padding: 6px 0; border-bottom: 1px solid transparent; }
.pl-nav a:hover, .pl-nav a[aria-current] { border-bottom-color: var(--pl-bronze-texte); }
/* Sous-menu « Nos opportunités » : ouvert au survol et au clavier (focus-within).
   La bordure transparente fait le pont entre le lien et le panneau, sans quoi le
   survol se perdait dans l'interstice. Les entrées sont des boutons de formulaire
   (POST vers /recherche) habillés en liens. */
.pl-nav-groupe { position: relative; }
.pl-sous-menu { display: none; position: absolute; left: -20px; top: 100%; z-index: 60; min-width: 200px; margin: 0; padding: 8px 0; list-style: none; border-top: 14px solid transparent; background-clip: padding-box; background-color: var(--pl-nuit); color: var(--pl-sur-nuit); box-shadow: 0 16px 36px var(--pl-ombre); }
.pl-nav ul.pl-sous-menu { display: none; flex-direction: column; gap: 0; }
.pl-nav-groupe:hover > .pl-sous-menu, .pl-nav-groupe:focus-within > .pl-sous-menu { display: flex; }
.pl-sous-menu form, .pl-menu-sous form { margin: 0; }
.pl-sous-menu button, .pl-menu-sous button { display: block; width: 100%; padding: 10px 20px; border: 0; background: none; color: inherit; font: inherit; font-size: 0.9rem; text-align: left; cursor: pointer; }
.pl-sous-menu button:hover, .pl-sous-menu button:focus-visible { background-color: color-mix(in srgb, var(--color-on-primary) 10%, var(--pl-nuit)); }
.pl-menu-sous { list-style: none; margin: 0; padding: 0 0 6px 16px; }
.pl-menu-sous button { padding: 8px 20px; font-size: 0.88rem; color: var(--pl-doux); }
.pl-entete-actions { display: flex; align-items: center; gap: 18px; }
.pl-entete-outil { display: inline-flex; align-items: center; gap: 8px; font-size: 0.88rem; text-decoration: none; }
.pl-menu { display: none; position: relative; }
.pl-menu-bouton { list-style: none; cursor: pointer; display: grid; place-items: center; width: 44px; height: 44px; }
.pl-menu-bouton::-webkit-details-marker { display: none; }
.pl-menu-panneau { position: absolute; right: 0; top: calc(100% + 12px); min-width: 240px; padding: 12px 0; background-color: var(--pl-nuit); color: var(--pl-sur-nuit); box-shadow: 0 12px 30px var(--pl-ombre); }
.pl-menu-panneau ul { list-style: none; margin: 0; padding: 0; }
.pl-menu-panneau a { display: block; padding: 12px 20px; text-decoration: none; }
@media (max-width: 1023px) {
    .pl-nav, .pl-entete-outil-libelle { display: none; }
    .pl-menu { display: block; }
    .pl-entete-actions { margin-left: auto; gap: 10px; }
}
@media (max-width: 520px) { .pl-entete-actions .pl-bouton { display: none; } }

/* Pied de page */
.pl-pied { padding: 56px 0 24px; font-size: 0.9rem; }
/* Pied plus profond que les bandes nuit qui le précèdent (engagements) : la primaire est
   mêlée à l'INVERSE de sa couleur de texte — vers le noir sous un texte clair, vers le blanc
   sous un texte sombre —, donc le contraste du texte et du bronze ne peut que monter.
   Sous @supports : une syntaxe relative inconnue rendrait le fond transparent. */
@supports (color: oklch(from white l c h)) {
    .pl-pied { background-color: var(--pl-nuit-profonde); }
}
.pl-pied-grille { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 32px; }
.pl-pied-titre { margin: 0 0 14px; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--pl-bronze-texte); }
.pl-pied ul { list-style: none; margin: 0; padding: 0; }
.pl-pied li { margin-bottom: 8px; }
.pl-pied a { text-decoration: none; }
.pl-pied a:hover { text-decoration: underline; }
.pl-pied-texte { color: var(--pl-doux); max-width: 22rem; }
.pl-pied-reseaux { display: flex; gap: 16px; }
.pl-pied address { font-style: normal; margin-bottom: 8px; }
.pl-pied-bas { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--pl-trait); color: var(--pl-doux); font-size: 0.82rem; }
.pl-pied-bas ul { display: flex; gap: 20px; }
@media (max-width: 860px) { .pl-pied-grille { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .pl-pied-grille { grid-template-columns: 1fr; } }

/* Filigrane de constellation : décor abstrait des bandes nuit. */
.pl-constellation { position: absolute; inset: 0; width: 100%; height: 100%; color: var(--pl-trait); pointer-events: none; }

/* Révélation : sans script, tout est visible ; polaris.js pose .pl-js sur <html>. */
.pl-js [data-reveler] { opacity: 0; transform: translateY(8px); transition: opacity 0.5s ease, transform 0.5s ease; }
.pl-js [data-reveler].pl-revele { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .pl-js [data-reveler] { opacity: 1; transform: none; } }

/* Carte de bien */
.pl-carte { display: flex; flex-direction: column; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); overflow: hidden; transition: box-shadow 0.2s ease, transform 0.2s ease; }
.pl-carte:hover, .pl-carte.pl-carte--active { box-shadow: 0 14px 34px var(--pl-ombre); transform: translateY(-2px); }
/* La photo est sortie du flux : ses attributs width/height ne dictent plus la hauteur du cadre,
   qui tient à son seul rapport — toutes les cartes d'une ligne ont la même vignette. */
.pl-carte-media { position: relative; flex: none; aspect-ratio: 1024 / 682; overflow: hidden; background-color: var(--pl-pierre); }
.pl-carte-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Une carte occupe toute la hauteur de sa cellule : même hauteur sur une ligne, pied aligné. */
.pl-grille-biens > li, .pl-grille-selection > li { display: flex; }
.pl-grille-biens > li > .pl-carte, .pl-grille-selection > li > .pl-carte { flex: 1; min-width: 0; }
.pl-carte-media .pl-badge { position: absolute; top: 12px; right: 12px; }
.pl-carte-favori { position: absolute; top: 10px; left: 10px; display: grid; place-items: center; width: 38px; height: 38px; border: 0; border-radius: 50%; background-color: var(--pl-voile); color: var(--pl-blanc); cursor: pointer; }
.pl-carte-favori[aria-pressed="true"] { background-color: var(--pl-bronze); color: var(--pl-sur-bronze); }
.pl-carte-corps { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px 18px; flex: 1; }
.pl-carte-role { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 4px; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.06em; color: var(--pl-bronze-texte); }
.pl-carte-commune { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 0.8rem; color: var(--pl-doux); }
.pl-carte-titre { margin: 2px 0; font-family: var(--pl-serif); font-size: 1.35rem; font-weight: 400; line-height: 1.2; }
.pl-carte-titre a { text-decoration: none; }
.pl-carte-titre a:hover { text-decoration: underline; text-underline-offset: 4px; }
.pl-carte-chiffres { margin: 0; font-size: 0.84rem; color: var(--pl-doux); }
.pl-carte-prix { margin: 6px 0 0; font-weight: 700; font-size: 1.05rem; }
.pl-carte-pourquoi { margin: 6px 0 0; padding-top: 8px; border-top: 1px solid var(--pl-trait); font-size: 0.84rem; color: var(--pl-doux); }
.pl-carte-pied { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: auto; padding-top: 12px; }
.pl-carte-comparer { display: inline-flex; align-items: center; gap: 6px; font-size: 0.82rem; cursor: pointer; }
.pl-carte-comparer input { accent-color: var(--pl-nuit); width: 16px; height: 16px; }
.pl-badge--vendu { background-color: var(--pl-nuit); color: var(--pl-sur-nuit); }
.pl-grille-biens { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; list-style: none; margin: 0; padding: 0; }

/* Carrousel (piste défilante) */
.pl-carrousel { position: relative; }
.pl-carrousel-piste { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, calc((100% - 72px) / 4)); gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; list-style: none; margin: 0; padding: 0 0 8px; }
.pl-carrousel-piste > * { scroll-snap-align: start; }
.pl-carrousel-bouton { position: absolute; top: 40%; z-index: 2; display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--pl-trait); border-radius: 50%; background-color: var(--pl-blanc); color: var(--pl-encre); cursor: pointer; }
.pl-carrousel-bouton[disabled] { opacity: 0.4; cursor: default; }
.pl-carrousel-bouton--precedent { left: -22px; }
.pl-carrousel-bouton--suivant { right: -22px; }
@media (max-width: 720px) { .pl-carrousel-piste { grid-auto-columns: 82%; } .pl-carrousel-bouton { display: none; } }

/* Tiroir de comparaison */
.pl-tiroir { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; box-shadow: 0 -10px 30px var(--pl-ombre); }
.pl-tiroir-barre { display: flex; align-items: center; gap: 20px; min-height: 92px; padding-top: 12px; padding-bottom: 12px; }
.pl-tiroir-titre { display: flex; flex-direction: column; margin: 0; font-size: 0.82rem; color: var(--pl-doux); }
.pl-tiroir-titre strong { font-family: var(--pl-serif); font-weight: 400; font-size: 1.5rem; color: var(--pl-encre); }
.pl-tiroir-liste { display: flex; gap: 18px; flex: 1; list-style: none; margin: 0; padding: 0; overflow-x: auto; }
.pl-tiroir-element { display: flex; align-items: center; gap: 10px; min-width: 210px; font-size: 0.8rem; }
.pl-tiroir-element img { width: 72px; height: 48px; object-fit: cover; border-radius: var(--pl-rayon); }
.pl-tiroir-element-texte { display: flex; flex-direction: column; }
.pl-tiroir-element-titre { font-weight: 600; }
.pl-tiroir-element-commune { color: var(--pl-doux); }
.pl-tiroir-vider { display: grid; place-items: center; width: 44px; height: 44px; border: 0; background: none; color: inherit; cursor: pointer; }
@media (max-width: 720px) { .pl-tiroir-liste { display: none; } .pl-tiroir-barre { justify-content: space-between; min-height: 72px; } }
body:has(.pl-tiroir:not([hidden])) { padding-bottom: 96px; }

/* Héros d'accueil */
/* Pas d'« overflow: hidden » : le fond est borné par inset: 0, et la coupure tranchait
   la liste dessinée des communes au bas du héros. z-index : la liste passe
   au-dessus de la section suivante. */
.pl-heros { position: relative; z-index: 2; padding: 96px 0 64px; isolation: isolate; }
.pl-heros-photo { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.pl-heros::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, color-mix(in srgb, var(--pl-nuit) 88%, transparent) 0%, color-mix(in srgb, var(--pl-nuit) 35%, transparent) 70%); }
.pl-heros-contenu .pl-chapo { margin-bottom: 40px; }
.pl-heros-panneau { padding: 28px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-heros-champs { display: grid; grid-template-columns: repeat(4, 1fr) auto; gap: 16px; align-items: end; }
.pl-heros-champs p { margin: 0; }
.pl-heros-champs .pl-etiquette { display: flex; align-items: center; gap: 8px; }
.pl-heros-liens { display: flex; justify-content: space-between; gap: 16px; margin: 20px 0 0; padding-top: 16px; border-top: 1px solid var(--pl-trait); font-size: 0.86rem; }
@media (max-width: 960px) { .pl-heros-champs { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .pl-heros-champs { grid-template-columns: 1fr; } .pl-heros { padding-top: 56px; } }

.pl-entete-section { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 28px; flex-wrap: wrap; }
.pl-grille-selection { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; list-style: none; margin: 0; padding: 0; }
@media (max-width: 1199.98px) { .pl-grille-selection { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 991.98px) { .pl-grille-selection { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767.98px) { .pl-grille-selection { grid-template-columns: 1fr; } }

/* Recommandations : une ligne de quatre au plus */
.pl-grille-biens.pl-grille-recos { grid-template-columns: repeat(4, 1fr); gap: 18px; }
@media (max-width: 1199.98px) { .pl-grille-biens.pl-grille-recos { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 991.98px) { .pl-grille-biens.pl-grille-recos { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767.98px) { .pl-grille-biens.pl-grille-recos { grid-template-columns: 1fr; } }

/* Méthode */
.pl-methode { position: relative; overflow: hidden; padding: 64px 0; }
.pl-methode-grille { position: relative; display: grid; grid-template-columns: 1fr 2.2fr; gap: 48px; align-items: center; }
.pl-methode-fil { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; list-style: none; margin: 0; padding: 0; counter-reset: etape; }
.pl-methode-etape { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; }
.pl-methode-etape + .pl-methode-etape::before { content: ''; position: absolute; top: 30px; right: calc(50% + 34px); width: calc(100% - 56px); border-top: 1px dashed var(--pl-trait); }
.pl-methode-cercle { display: grid; place-items: center; width: 60px; height: 60px; border: 1px solid var(--pl-trait); border-radius: 50%; }
.pl-methode-etape--cap .pl-methode-cercle { background-color: var(--pl-bronze); color: var(--pl-sur-bronze); border-color: var(--pl-bronze); }
.pl-methode-titre { font-family: var(--pl-serif); font-size: 1.2rem; }
.pl-methode-texte { font-size: 0.82rem; color: var(--pl-doux); }
@media (max-width: 960px) { .pl-methode-grille { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .pl-methode-fil { grid-template-columns: 1fr; } .pl-methode-etape { flex-direction: row; text-align: left; } .pl-methode-etape + .pl-methode-etape::before { display: none; } }

/* Comparaison (aperçu d'accueil et page /comparer) */
.pl-comparer-accueil { display: grid; grid-template-columns: 1fr 2.4fr; gap: 40px; align-items: center; }
.pl-apercu-comparaison { overflow-x: auto; }
.pl-tableau-comparaison { width: 100%; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); font-size: 0.88rem; }
.pl-tableau-comparaison th, .pl-tableau-comparaison td { padding: 11px 14px; border-bottom: 1px solid var(--pl-trait); text-align: center; vertical-align: middle; }
.pl-tableau-comparaison th[scope="row"] { text-align: left; font-weight: 600; white-space: nowrap; position: sticky; left: 0; background-color: var(--pl-blanc); }
.pl-tableau-comparaison thead th { font-weight: 600; }
.pl-tableau-comparaison td .pl-icone { margin-left: 6px; color: var(--pl-bronze-texte); }
.pl-meilleur { font-weight: 700; background-color: color-mix(in srgb, var(--pl-bronze) 10%, var(--pl-blanc)); }
@media (max-width: 960px) { .pl-comparer-accueil { grid-template-columns: 1fr; } }

/* Conseiller mis en avant */
.pl-conseiller-accueil { background-color: var(--pl-pierre); padding: 88px 0; }
.pl-conseiller-accueil-grille { display: grid; grid-template-columns: 240px 1fr 1.2fr; gap: 48px; align-items: center; }
.pl-conseiller-accueil-portrait { width: 240px; height: 300px; object-fit: cover; }
.pl-conseiller-accueil .pl-texte-doux { margin-bottom: 24px; }
.pl-encart-echange { padding: 32px; background-color: var(--pl-fond); border: 1px solid var(--pl-trait); }
@media (max-width: 960px) { .pl-conseiller-accueil-grille { grid-template-columns: 1fr; gap: 32px; } .pl-conseiller-accueil { padding: 56px 0; } }

/* Engagements */
.pl-engagements { padding: 28px 0; }
.pl-engagements-liste { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; list-style: none; margin: 0 auto; }
.pl-engagement { display: flex; gap: 14px; align-items: center; }
.pl-engagement-icone { display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid var(--pl-trait); border-radius: 50%; color: var(--pl-bronze-texte); flex: none; }
.pl-engagement-titre { display: block; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--pl-bronze-texte); }
.pl-engagement-texte { display: block; font-size: 0.84rem; color: var(--pl-doux); }
@media (max-width: 960px) { .pl-engagements-liste { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .pl-engagements-liste { grid-template-columns: 1fr; } }

/* Parcours guidé */
.pl-parcours { padding: 48px 0; }
.pl-parcours-form { max-width: 860px; margin: 0 auto; padding: 0 var(--pl-gouttiere); }
.pl-parcours-etape { margin: 0 0 24px; padding: 0; border: 0; }
.pl-parcours-indicateur { display: flex; gap: 10px; list-style: none; margin: 0 0 20px; padding: 0; color: var(--pl-trait); }
.pl-parcours-indicateur [aria-current], .pl-parcours-indicateur .pl-fait { color: var(--pl-bronze-texte); }
.pl-choix { display: flex; flex-wrap: wrap; gap: 10px; }
.pl-choix--communes { max-height: 260px; overflow-y: auto; }
.pl-choix-tuile { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); background-color: var(--pl-blanc); cursor: pointer; font-size: 0.9rem; }
.pl-choix-tuile:has(input:checked) { border-color: var(--pl-nuit); box-shadow: inset 0 0 0 1px var(--pl-nuit); }
.pl-choix-tuile input { accent-color: var(--pl-nuit); }
.pl-deux-champs { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.pl-parcours-compteur { margin: 0 0 16px; font-weight: 600; color: var(--pl-bronze-texte); }
.pl-parcours-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-end; }
.pl-parcours-dialogue { width: min(920px, calc(100% - 32px)); max-height: calc(100vh - 48px); padding: 24px 0; border: 0; border-radius: var(--pl-rayon); background-color: var(--pl-fond); color: var(--pl-encre); }
.pl-parcours-dialogue::backdrop { background-color: var(--pl-voile); }
.pl-parcours-dialogue .pl-parcours { padding: 0; }
.pl-dialogue-fermer { position: absolute; top: 12px; right: 12px; display: grid; place-items: center; width: 44px; height: 44px; border: 0; background: none; cursor: pointer; color: inherit; }
@media (max-width: 560px) { .pl-deux-champs { grid-template-columns: 1fr; } }

/* Annonces */
.pl-sous-nav { border-bottom: 1px solid var(--pl-trait); background-color: var(--pl-fond); }
.pl-sous-nav ul { display: flex; gap: 32px; list-style: none; margin: 0 auto; overflow-x: auto; }
.pl-sous-nav a { display: inline-flex; align-items: center; gap: 8px; padding: 16px 0; font-size: 0.9rem; text-decoration: none; color: var(--pl-doux); border-bottom: 2px solid transparent; white-space: nowrap; }
.pl-sous-nav a[aria-current] { color: var(--pl-encre); border-bottom-color: var(--pl-bronze); }
.pl-annonces { display: grid; grid-template-columns: 280px 1fr; gap: 36px; padding-top: 32px; padding-bottom: 64px; }
/* Colonne bornée à la hauteur de l'écran, défilement propre, pied d'actions toujours visible :
   plus besoin de descendre toute la page pour atteindre « Voir les biens ». */
.pl-affinage-form { position: sticky; top: 96px; display: flex; flex-direction: column; gap: 20px; max-height: calc(100vh - 176px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--pl-trait) transparent; margin: 0 -8px 0 -4px; padding: 4px 8px 0 4px; }
.pl-affinage-bloc { margin: 0; padding: 0; border: 0; }
.pl-affinage-bloc legend.pl-etiquette, .pl-affinage-bloc .pl-etiquette { display: flex; align-items: center; gap: 8px; }
.pl-affinage-communes { display: flex; flex-direction: column; gap: 6px; max-height: 200px; overflow-y: auto; padding: 8px 10px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); background-color: var(--pl-blanc); }
.pl-tuiles-familles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.pl-tuile-famille { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 4px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); background-color: var(--pl-blanc); font-size: 0.72rem; text-align: center; cursor: pointer; }
.pl-tuile-famille input { position: absolute; opacity: 0; pointer-events: none; }
.pl-tuile-famille:has(input:checked) { border-color: var(--pl-nuit); box-shadow: inset 0 0 0 1px var(--pl-nuit); }
.pl-tuile-famille:has(input:focus-visible) { outline: 2px solid var(--pl-focus); outline-offset: 2px; }
.pl-choix--compact .pl-choix-tuile { padding: 8px 12px; }
.pl-affinage-actions { position: sticky; bottom: 0; z-index: 2; display: flex; flex-direction: column; gap: 12px; margin-top: auto; padding: 16px 0 24px; border-top: 1px solid var(--pl-trait); background-color: var(--pl-fond); }
.pl-annonces-entete { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.pl-annonces-outils { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.pl-modes { display: inline-flex; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); overflow: hidden; }
.pl-mode { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border: 0; background-color: var(--pl-blanc); cursor: pointer; font-size: 0.86rem; }
.pl-mode + .pl-mode { border-left: 1px solid var(--pl-trait); }
.pl-mode[aria-pressed="true"] { background-color: var(--pl-pierre); font-weight: 600; }
.pl-tri { display: flex; gap: 8px; }
.pl-tri .pl-champ { min-width: 230px; }
.pl-puces { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0 0 20px; padding: 0; }
.pl-puce-form { margin: 0; }
.pl-puce { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border: 1px solid var(--pl-trait); border-radius: 999px; background-color: var(--pl-blanc); font-size: 0.82rem; cursor: pointer; }
.pl-puce:hover { border-color: var(--pl-encre); }
.pl-bandeau-selection { display: flex; align-items: center; gap: 20px; margin-bottom: 20px; padding: 18px 22px; background-color: var(--pl-pierre); border-radius: var(--pl-rayon); }
.pl-bandeau-selection p { flex: 1; margin: 0; display: flex; flex-direction: column; }
.pl-bandeau-etoile { color: var(--pl-nuit); }
.pl-onglets-annonces ul { display: flex; gap: 24px; list-style: none; margin: 0 0 20px; padding: 0; border-bottom: 1px solid var(--pl-trait); }
.pl-onglets-annonces a { display: block; padding: 10px 0; text-decoration: none; color: var(--pl-doux); border-bottom: 2px solid transparent; }
.pl-onglets-annonces a[aria-selected="true"] { color: var(--pl-encre); border-bottom-color: var(--pl-bronze); }
.pl-aucun { padding: 40px; text-align: center; background-color: var(--pl-pierre); border-radius: var(--pl-rayon); }
.pl-afficher-plus { text-align: center; margin: 28px 0 0; }

/* Modes : liste et carte */
.pl-resultats[data-mode="liste"] .pl-grille-biens { grid-template-columns: 1fr; }
.pl-resultats[data-mode="liste"] .pl-carte { flex-direction: row; }
.pl-resultats[data-mode="liste"] .pl-carte-media { width: 240px; flex: none; aspect-ratio: auto; }
.pl-resultats[data-mode="carte"] { display: grid; grid-template-columns: 1.3fr 1fr; gap: 20px; align-items: start; }
.pl-resultats[data-mode="carte"] .pl-grille-biens { grid-template-columns: 1fr; max-height: 72vh; overflow-y: auto; padding-right: 6px; }
.pl-resultats[data-mode="carte"] .pl-carte { flex-direction: row; }
.pl-resultats[data-mode="carte"] .pl-carte-media { width: 150px; flex: none; aspect-ratio: auto; }
.pl-carte-annonces { position: sticky; top: 96px; height: 72vh; border-radius: var(--pl-rayon); background-color: var(--pl-pierre); }
.pl-bulle { display: flex; flex-direction: column; gap: 2px; font-family: var(--pl-sans); }
.pl-epingle { color: var(--pl-bronze); }
@media (max-width: 1023px) {
    .pl-annonces { grid-template-columns: 1fr; }
    .pl-affinage-form { position: static; max-height: none; overflow: visible; margin: 0; padding: 0; }
    .pl-affinage-actions { position: static; }
    .pl-resultats[data-mode="carte"] { grid-template-columns: 1fr; }
    .pl-carte-annonces { position: relative; top: 0; height: 56vh; }
}
@media (max-width: 560px) { .pl-resultats[data-mode="liste"] .pl-carte { flex-direction: column; } .pl-resultats[data-mode="liste"] .pl-carte-media { width: 100%; aspect-ratio: 1024 / 682; } .pl-tri .pl-champ { min-width: 0; } }

/* Fil d'Ariane */
.pl-ariane ol { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 20px 0; font-size: 0.82rem; color: var(--pl-doux); }
.pl-ariane li + li::before { content: '›'; margin-right: 8px; }
.pl-ariane a { text-decoration: none; }
.pl-ariane a:hover { text-decoration: underline; }

/* Page de comparaison */
.pl-comparaison-page { padding-bottom: 56px; }
.pl-comparaison-entete { margin-bottom: 28px; }
.pl-avertissement { padding: 12px 16px; border-left: 3px solid var(--pl-bronze); background-color: var(--pl-pierre); }
.pl-comparaison { overflow-x: auto; margin-bottom: 40px; }
.pl-tableau-comparaison--page { min-width: 640px; }
.pl-tableau-comparaison--page thead th { vertical-align: top; text-align: left; min-width: 200px; }
.pl-comparaison-bien { display: table-cell; }
.pl-comparaison-photo { position: relative; display: block; margin-bottom: 10px; aspect-ratio: 1024 / 682; overflow: hidden; border-radius: var(--pl-rayon); }
.pl-comparaison-photo img { width: 100%; height: 100%; object-fit: cover; }
.pl-comparaison-photo .pl-badge { position: absolute; top: 8px; right: 8px; }
.pl-comparaison-commune { display: block; font-size: 0.78rem; font-weight: 400; color: var(--pl-doux); }
.pl-comparaison-titre { display: block; font-family: var(--pl-serif); font-size: 1.2rem; font-weight: 400; text-decoration: none; }
.pl-comparaison-prix { display: block; margin-top: 4px; font-weight: 700; }
.pl-comparaison-retirer { display: inline-block; margin-top: 6px; font-size: 0.78rem; font-weight: 400; color: var(--pl-doux); }
.pl-absent { color: var(--pl-doux); font-style: italic; }
.pl-constats-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; list-style: none; margin: 0; padding: 0; }
.pl-constats-bien { padding: 22px; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-constats-liste { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 0.9rem; }
.pl-constat { display: flex; gap: 8px; align-items: flex-start; }
.pl-constat--atout .pl-icone { color: var(--pl-bronze-texte); }
.pl-constat--vigilance .pl-icone { color: var(--pl-vigilance); }
.pl-constats-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0; }
.pl-encart-invitation { margin-top: 32px; padding: 28px; background-color: var(--pl-pierre); text-align: center; }

/* Bande finale (comparaison, fiche, conseiller, contact) */
.pl-bande-finale { position: relative; overflow: hidden; padding: 40px 0; }
.pl-bande-finale-grille { display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: center; }
.pl-bande-etoile { color: var(--pl-bronze-texte); }
.pl-bande-finale .pl-titre-2 { margin-bottom: 6px; }
.pl-bande-finale-actions { display: flex; flex-wrap: wrap; gap: 12px; }
@media (max-width: 720px) { .pl-bande-finale-grille { grid-template-columns: 1fr; } }

/* Fiche : haut de page */
.pl-fiche-haut { display: grid; grid-template-columns: 1.75fr 1fr; gap: 28px; align-items: start; }
.pl-galerie-principale { position: relative; display: block; width: 100%; padding: 0; border: 0; cursor: zoom-in; background: none; aspect-ratio: 1024 / 682; overflow: hidden; border-radius: var(--pl-rayon); }
.pl-galerie-principale img { width: 100%; height: 100%; object-fit: cover; }
.pl-galerie-principale .pl-badge { position: absolute; top: 14px; left: 14px; }
.pl-galerie-vignettes { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; list-style: none; margin: 8px 0 0; padding: 0; }
.pl-galerie-vignettes button { position: relative; display: block; width: 100%; padding: 0; border: 0; cursor: zoom-in; aspect-ratio: 1024 / 682; overflow: hidden; border-radius: var(--pl-rayon); }
.pl-galerie-vignettes img { width: 100%; height: 100%; object-fit: cover; }
.pl-galerie-cachee { display: none; }
.pl-galerie-plus { position: absolute; inset: 0; display: grid; place-items: center; background-color: var(--pl-voile); color: var(--pl-blanc); font-size: 1.3rem; font-weight: 600; }
.pl-visionneuse { width: min(1100px, calc(100% - 32px)); padding: 0; border: 0; background-color: var(--pl-encre); color: var(--pl-blanc); }
.pl-visionneuse::backdrop { background-color: var(--pl-voile); }
.pl-visionneuse img { width: 100%; max-height: 80vh; object-fit: contain; }
.pl-visionneuse-compte { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); margin: 0; font-size: 0.85rem; }
.pl-visionneuse-bouton, .pl-visionneuse-fermer { position: absolute; display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background-color: var(--pl-voile); color: var(--pl-blanc); cursor: pointer; }
.pl-visionneuse-bouton { top: 50%; transform: translateY(-50%); }
.pl-visionneuse-bouton--precedent { left: 12px; }
.pl-visionneuse-bouton--suivant { right: 12px; }
.pl-visionneuse-fermer { top: 12px; right: 12px; }
.pl-decision { padding: 26px; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-decision-prix { margin: 0; font-size: 1.5rem; font-weight: 700; }
.pl-decision-honoraires { margin: 4px 0 0; font-size: 0.8rem; }
.pl-tuiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin: 20px 0; padding: 0; list-style: none; background-color: var(--pl-trait); border: 1px solid var(--pl-trait); }
.pl-tuile { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 14px 6px; background-color: var(--pl-blanc); text-align: center; }
.pl-tuile .pl-icone { color: var(--pl-bronze-texte); }
.pl-tuile-valeur { font-weight: 600; font-size: 0.9rem; }
.pl-tuile-libelle { font-size: 0.72rem; color: var(--pl-doux); }
.pl-decision-contact { width: 100%; }
.pl-decision-outils { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
.pl-decision-outils [aria-pressed="true"] { background-color: var(--pl-pierre); }
@media (max-width: 960px) { .pl-fiche-haut { grid-template-columns: 1fr; } .pl-galerie-vignettes { grid-template-columns: repeat(4, 1fr); } .pl-galerie-vignettes li:nth-child(n+5) { display: none; } }

/* Fiche : corps */
.pl-fiche-corps { display: grid; grid-template-columns: 1.75fr 1fr; gap: 28px; padding-top: 36px; padding-bottom: 56px; align-items: start; }
.pl-onglets-fiche ul { display: flex; gap: 28px; list-style: none; margin: 0 0 28px; padding: 0; border-bottom: 1px solid var(--pl-trait); overflow-x: auto; }
.pl-onglets-fiche a { display: block; padding: 12px 0; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; color: var(--pl-doux); border-bottom: 2px solid transparent; white-space: nowrap; }
.pl-onglets-fiche a[aria-selected="true"] { color: var(--pl-encre); border-bottom-color: var(--pl-bronze); }
.pl-fiche-panneau { padding-bottom: 32px; }
.pl-prose { max-width: 44rem; }
.pl-puces-fiche { display: flex; flex-wrap: wrap; gap: 10px 22px; list-style: none; margin: 20px 0 0; padding: 0; font-size: 0.86rem; }
.pl-puce-fiche { display: inline-flex; align-items: center; gap: 8px; }
.pl-puce-fiche .pl-icone { color: var(--pl-bronze-texte); }
.pl-caracteristiques { margin: 0 0 24px; }
.pl-caracteristiques div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--pl-trait); font-size: 0.9rem; }
.pl-caracteristiques dt { color: var(--pl-doux); }
.pl-caracteristiques dd { margin: 0; font-weight: 600; text-align: right; }
.pl-zone-toile { height: 360px; border-radius: var(--pl-rayon); background-color: var(--pl-pierre); }
.pl-zone-note { font-size: 0.86rem; color: var(--pl-doux); }
.pl-fiche-colonne { display: flex; flex-direction: column; gap: 22px; position: sticky; top: 96px; }
.pl-encart-conseiller { display: grid; grid-template-columns: 110px 1fr; gap: 16px; padding: 22px; border-radius: var(--pl-rayon); }
.pl-encart-conseiller img { width: 110px; height: 138px; object-fit: cover; }
.pl-encart-conseiller-nom { margin: 0; font-family: var(--pl-serif); font-size: 1.4rem; }
.pl-encart-conseiller-contacts { grid-column: 1 / -1; list-style: none; margin: 0; padding: 14px 0 0; border-top: 1px solid var(--pl-trait); display: flex; flex-direction: column; gap: 8px; }
.pl-encart-conseiller-contacts li { display: flex; gap: 10px; align-items: center; }
.pl-encart-conseiller-contacts a { text-decoration: none; }
.pl-encart-caracteristiques, .pl-encart-formulaire { padding: 22px; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
@media (max-width: 960px) { .pl-fiche-corps { grid-template-columns: 1fr; } .pl-fiche-colonne { position: static; } }

/* Dossier Situation */
.pl-situation-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.pl-situation-bloc { padding: 20px; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-situation-bloc--marche { grid-column: 1 / -1; }
.pl-situation-titre { margin: 0 0 12px; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--pl-bronze-texte); }
.pl-situation-mediane strong { font-family: var(--pl-serif); font-size: 2rem; font-weight: 400; }
.pl-situation-liste div { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--pl-trait); font-size: 0.86rem; }
.pl-situation-liste dd { margin: 0; font-weight: 600; }
.pl-risque--identifie dd { color: var(--pl-vigilance); }
.pl-risque--inconnu dd { color: var(--pl-doux); font-style: italic; }
.pl-situation-barres { width: 100%; font-size: 0.82rem; }
.pl-situation-barres th { width: 24px; text-align: left; }
.pl-situation-piste { width: 100%; }
.pl-situation-barre { display: block; height: 10px; border-radius: var(--pl-rayon); }
.pl-situation-note { margin: 12px 0 0; font-size: 0.78rem; color: var(--pl-doux); }
.pl-lettre-dpe { display: inline-grid; place-items: center; width: 26px; height: 26px; color: var(--pl-blanc); font-weight: 700; }
.pl-lettre-dpe--a { background-color: var(--pl-dpe-a); } .pl-lettre-dpe--b { background-color: var(--pl-dpe-b); } .pl-lettre-dpe--c { background-color: var(--pl-dpe-c); }
.pl-lettre-dpe--d { background-color: var(--pl-dpe-d); } .pl-lettre-dpe--e { background-color: var(--pl-dpe-e); } .pl-lettre-dpe--f { background-color: var(--pl-dpe-f); } .pl-lettre-dpe--g { background-color: var(--pl-dpe-g); }
.pl-squelette { min-height: 120px; background: linear-gradient(90deg, var(--pl-pierre), var(--pl-fond), var(--pl-pierre)); background-size: 200% 100%; animation: pl-chargement 1.4s ease-in-out infinite; }
@keyframes pl-chargement { from { background-position: 200% 0; } to { background-position: -200% 0; } }
@media (max-width: 720px) { .pl-situation-grille { grid-template-columns: 1fr; } }

/* Formulaires */
.pl-formulaire-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pl-formulaire-grille p { margin: 0; }
.pl-formulaire-large { grid-column: 1 / -1; }
.pl-retour-formulaire { padding: 10px 14px; background-color: var(--pl-pierre); }
@media (max-width: 560px) { .pl-formulaire-grille { grid-template-columns: 1fr; } }

/* Bloc DPE du bien (repris d'Atlas, jetons Polaris) */
.pl-dpe-cadre { position: relative; background: var(--pl-blanc); color: var(--pl-encre); padding: 20px; overflow-x: auto; }
.pl-dpe-cadre--vide { overflow: hidden; min-height: 160px; }
.pl-dpe-vide { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; opacity: 0.35; }
.pl-dpe-vide-titre { font-size: 10px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 8px; }
.pl-dpe-vide-barre { display: block; margin: 3px 0; padding: 2px 8px; border: 1px solid currentColor; font-size: 11px; }
.pl-dpe-filigrane { position: absolute; inset: 0; display: grid; place-items: center; transform: rotate(-10deg); font: 400 clamp(20px, 2.4vw, 28px)/1.2 var(--pl-serif); text-align: center; margin: 0; }
/* Le moteur émet les étiquettes DPE/GES à leur taille de fichier (1241 × 1448) :
   images bornées en hauteur, grille à deux colonnes, valeurs sous un filet. */
.pl-dpe-cadre img { display: block; width: auto; height: auto; max-width: 100%; max-height: 240px; margin: 10px auto; }
.pl-dpe-cadre .dpe2021 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 28px; align-items: start; }
.pl-dpe-cadre .dpe2021-col { min-width: 0; }
.pl-dpe-cadre .dpe2021-top-label,
.pl-dpe-cadre .dpe2021-bottom-label { margin: 0; font-size: 11px; color: var(--pl-doux); text-align: center; }
.pl-dpe-cadre .dpe2021-values { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 10px 28px; padding-top: 14px; border-top: 1px solid var(--pl-trait); font-size: 13px; }
.pl-dpe-cadre .dpe2021-value { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.pl-dpe-cadre .dpe2021-value-label { font: 500 10px/1.8 var(--pl-sans); letter-spacing: 0.12em; text-transform: uppercase; }
.pl-dpe-cadre .dpe2021-value-sub,
.pl-dpe-cadre .dpe2021-value-unit { color: var(--pl-doux); }
.pl-dpe-cadre .dpe2021-value-num { font: 400 24px/1 var(--pl-serif); }
.pl-dpe-cadre .dpe2021-costs { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 4px 8px; }
.pl-dpe-cadre .dpe2021-cost-ref { flex-basis: 100%; font-size: 11px; color: var(--pl-doux); }
@media (max-width: 560px) { .pl-dpe-cadre .dpe2021 { grid-template-columns: 1fr; } }

/* Conseiller */
.pl-conseiller-heros { padding-bottom: 48px; }
.pl-conseiller-heros-grille { display: grid; grid-template-columns: 280px 1fr 320px; gap: 40px; align-items: center; }
.pl-conseiller-portrait img { width: 280px; height: 350px; object-fit: cover; }
.pl-conseiller-fonction { margin: 0 0 16px; color: var(--pl-doux); }
.pl-conseiller-citation { margin: 0 0 20px; padding: 0; font-family: var(--pl-serif); font-style: italic; font-size: 1.35rem; line-height: 1.35; }
.pl-conseiller-citation p { margin: 0; }
.pl-conseiller-secteur { display: flex; gap: 10px; align-items: center; color: var(--pl-doux); }
.pl-conseiller-secteur .pl-icone { color: var(--pl-bronze-texte); }
.pl-conseiller-chiffres { display: flex; gap: 32px; list-style: none; margin: 20px 0 0; padding: 20px 0 0; border-top: 1px solid var(--pl-trait); }
.pl-conseiller-chiffres strong { display: block; font-family: var(--pl-serif); font-size: 2rem; font-weight: 400; }
.pl-conseiller-contact { padding: 26px; border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-conseiller-contact ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.pl-conseiller-contact li { display: flex; gap: 12px; align-items: center; }
.pl-conseiller-contact .pl-icone { color: var(--pl-bronze-texte); }
.pl-conseiller-corps { padding-top: 32px; padding-bottom: 48px; }
/* Corps du conseiller : portefeuille à gauche, formulaire à droite. La liste est sortie du
   flux : sa hauteur suit la ligne (celle du formulaire), pas son contenu, et elle défile. */
.pl-conseiller-espace { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 48px; }
.pl-conseiller-espace--seul { grid-template-columns: minmax(0, 760px); }
.pl-conseiller-formulaire { align-self: start; }
.pl-conseiller-portefeuille { display: flex; flex-direction: column; }
.pl-conseiller-portefeuille .pl-entete-section { margin-bottom: 20px; }
.pl-conseiller-liste-cadre { position: relative; flex: 1 1 auto; min-height: 420px; }
.pl-conseiller-liste { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 20px; margin: 0; padding: 0 10px 4px 0; list-style: none; overflow-y: auto; overscroll-behavior: contain; }
@media (max-width: 1023px) { .pl-conseiller-heros-grille { grid-template-columns: 1fr; } .pl-conseiller-portrait img { width: 200px; height: 250px; } .pl-conseiller-espace { grid-template-columns: minmax(0, 1fr); } .pl-conseiller-liste-cadre { min-height: 0; } .pl-conseiller-liste { position: static; max-height: 70vh; } }
@media (max-width: 640px) { .pl-conseiller-liste { grid-template-columns: minmax(0, 1fr); } }

/* En-têtes de page (contact, agence, estimation) */
.pl-page-heros { position: relative; z-index: 2; padding: 24px 0 64px; isolation: isolate; }
.pl-page-heros::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, color-mix(in srgb, var(--pl-nuit) 90%, transparent) 0%, color-mix(in srgb, var(--pl-nuit) 40%, transparent) 75%); }
.pl-page-heros .pl-titre-1 { max-width: 16ch; }

/* Contact */
.pl-coordonnees { padding-top: 36px; padding-bottom: 36px; }
.pl-coordonnees-liste { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; list-style: none; margin: 0; padding: 0; }
.pl-coordonnees-liste li { display: flex; gap: 14px; align-items: flex-start; }
.pl-coordonnees-liste li > span { display: flex; flex-direction: column; gap: 2px; font-size: 0.9rem; }
.pl-coordonnees-liste a { text-decoration: none; font-weight: 600; }
.pl-contact-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding-bottom: 32px; }
.pl-approche { padding: 32px; border-radius: var(--pl-rayon); position: relative; overflow: hidden; }
.pl-approche-liste { list-style: none; margin: 24px 0 0; padding: 0; display: flex; flex-direction: column; gap: 22px; }
.pl-approche-etape { display: flex; gap: 16px; }
.pl-approche-etape > span:last-child { display: flex; flex-direction: column; gap: 4px; }
.pl-approche-icone { display: grid; place-items: center; width: 52px; height: 52px; flex: none; border: 1px solid var(--pl-trait); border-radius: 50%; color: var(--pl-bronze-texte); }
.pl-approche-titre { font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.pl-contact-bas { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 24px; padding-bottom: 48px; }
.pl-carte-agence { min-height: 320px; border-radius: var(--pl-rayon); background-color: var(--pl-pierre); }
.pl-rencontrer address { font-style: normal; margin-bottom: 8px; }
.pl-acces { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 0.9rem; }
.pl-acces li { display: flex; gap: 8px; align-items: center; }
.pl-faq-question { border-bottom: 1px solid var(--pl-trait); }
.pl-faq-question summary { padding: 12px 0; cursor: pointer; font-size: 0.92rem; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.pl-faq-question summary::after { content: '+'; font-size: 1.2rem; }
.pl-faq-question[open] summary::after { content: '–'; }
.pl-faq-question summary::-webkit-details-marker { display: none; }
.pl-faq-question p { margin: 0 0 14px; color: var(--pl-doux); }
@media (max-width: 1023px) { .pl-coordonnees-liste { grid-template-columns: 1fr 1fr; } .pl-contact-grille, .pl-contact-bas { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .pl-coordonnees-liste { grid-template-columns: 1fr; } }

/* Estimation */
.pl-estimation { display: grid; grid-template-columns: 1.4fr 1fr; gap: 32px; padding-top: 36px; padding-bottom: 56px; align-items: start; }
.pl-estimation-fil { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px 22px; list-style: none; margin: 0; padding: 0; color: var(--pl-doux); font-size: 0.82rem; }
.pl-estimation-fil li { display: inline-flex; align-items: center; gap: 6px; }
.pl-estimation-fil .pl-icone { color: var(--pl-trait); }
.pl-estimation-fil [aria-current] { color: var(--pl-encre); font-weight: 700; }
.pl-estimation-fil [aria-current] .pl-icone, .pl-estimation-fil .pl-fait .pl-icone { color: var(--pl-bronze-texte); }
.pl-estimation-form { padding: 28px; background-color: var(--pl-blanc); border: 1px solid var(--pl-trait); border-radius: var(--pl-rayon); }
.pl-estimation-etape { margin: 0 0 24px; padding: 0; border: 0; }
.pl-estimation-etape p { margin: 0 0 14px; }
.pl-estimation-actions { display: flex; gap: 12px; justify-content: space-between; margin-bottom: 14px; }
.pl-estimation-panneau { position: sticky; top: 96px; padding: 28px; background-color: var(--pl-pierre); border-radius: var(--pl-rayon); }
.pl-estimation-confirmation { font-family: var(--pl-serif); font-size: 1.3rem; }
@media (max-width: 960px) { .pl-estimation { grid-template-columns: 1fr; } .pl-estimation-panneau { position: static; } }

/* Résultat d'estimation approximative */
.pl-estimation-approx { color: var(--pl-bronze-texte); }
.pl-estimation-fourchette { font-family: var(--pl-serif); font-size: clamp(1.9rem, 3.4vw, 2.6rem); line-height: 1.1; margin: 0 0 8px; font-variant-numeric: lining-nums tabular-nums; }
.pl-estimation-fourchette span { white-space: nowrap; }
.pl-estimation-avertissement { font-size: 0.82rem; padding: 12px 14px; border-left: 2px solid var(--pl-bronze); background-color: var(--pl-blanc); margin: 18px 0; }
.pl-estimation-base { margin: 18px 0; border-top: 1px solid var(--pl-trait); }
.pl-estimation-base > div { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--pl-trait); font-size: 0.82rem; }
.pl-estimation-base dt { font-weight: 700; }
.pl-estimation-base dd { margin: 0; text-align: right; }
.pl-estimation-ajustements, .pl-estimation-comparables { display: grid; gap: 10px; list-style: none; margin: 8px 0 22px; padding: 0; font-size: 0.82rem; }
.pl-estimation-ajustements li { display: flex; justify-content: space-between; border-bottom: 1px solid var(--pl-trait); padding-bottom: 6px; }
.pl-estimation-comparables li { padding-bottom: 10px; border-bottom: 1px solid var(--pl-trait); }
.pl-estimation-comparables p { margin: 0; }
.pl-estimation-comparable-prix { font-family: var(--pl-serif); font-size: 1.25rem; line-height: 1.3; }
.pl-estimation-appel { padding: 20px; border: 1px solid var(--pl-trait); background-color: var(--pl-blanc); }

/* Agence */
.pl-agence-presentation { display: grid; grid-template-columns: 1.35fr 1fr; gap: 64px; align-items: start; }
/* Texte de bienvenue découpé par blocs_texte : paragraphes aérés, intitulé
   en surtitre, listes à repère bronze. */
.pl-agence-texte p { margin: 0 0 1.1em; line-height: 1.75; }
.pl-agence-texte .pl-agence-intitule { margin: 1.6em 0 0.6em; font-family: var(--pl-serif); font-size: 1.5rem; line-height: 1.25; }
.pl-liste-reperes { margin: 0 0 1.4em; padding: 0; list-style: none; }
.pl-liste-reperes li { position: relative; padding: 10px 0 10px 22px; border-bottom: 1px solid var(--pl-trait); line-height: 1.5; }
.pl-liste-reperes li:last-child { border-bottom: 0; }
.pl-liste-reperes li::before { content: ''; position: absolute; left: 0; top: 1.05em; width: 8px; height: 8px; border-radius: 50%; background-color: var(--pl-bronze); }
/* Visuel de présentation : image portrait, deux bulles qui débordent des angles
   (haut gauche, bas droit). Les marges laissent la place au débord. */
.pl-agence-visuel { position: sticky; top: 104px; margin: 24px 24px 24px 24px; }
.pl-agence-visuel img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: 62% center; border-radius: var(--pl-rayon); }
.pl-bulle { position: absolute; display: flex; flex-direction: column; gap: 2px; max-width: 220px; margin: 0; padding: 16px 20px; background-color: var(--pl-blanc); color: var(--pl-encre); border-radius: var(--pl-rayon); box-shadow: 0 18px 40px var(--pl-ombre), 0 4px 12px var(--pl-ombre); font-size: 0.86rem; line-height: 1.35; }
.pl-bulle--haut { top: -24px; left: -24px; border-top: 2px solid var(--pl-bronze); }
.pl-bulle--bas { right: -24px; bottom: -24px; border-bottom: 2px solid var(--pl-bronze); }
.pl-bulle-chiffre { font-family: var(--pl-serif); font-size: 2.6rem; font-weight: 400; line-height: 1; color: var(--pl-bronze-texte); }
.pl-bulle-precision { color: var(--pl-doux); font-size: 0.78rem; }
.pl-equipe { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 24px; list-style: none; margin: 24px 0 0; padding: 0; }
.pl-membre img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--pl-rayon); }
.pl-membre-nom { margin: 10px 0 2px; font-family: var(--pl-serif); font-size: 1.3rem; }
.pl-membre-nom a { text-decoration: none; }
@media (max-width: 960px) { .pl-agence-presentation { grid-template-columns: 1fr; gap: 48px; } .pl-agence-visuel { position: relative; top: auto; max-width: 440px; margin: 16px 16px 16px 16px; } .pl-agence-visuel img { aspect-ratio: 4 / 3; } .pl-bulle--haut { left: -12px; } .pl-bulle--bas { right: -12px; } }

/* Pages légales et erreur */
.pl-page-legale { padding: 48px 0 64px; }
.pl-colonne-lecture { max-width: 760px; }
.pl-page-legale h2 { font-family: var(--pl-serif); font-weight: 400; font-size: 1.5rem; margin: 32px 0 10px; }
.pl-erreur .pl-titre-1 { max-width: 14ch; }
