/* Orée Immobilier : direction architecturale. Grotesque d'affichage (Space Grotesk), texte en Inter,
   grille rigoureuse, filets fins, grands chiffres. Clair : blanc cassé, pierre, ardoise, vert sapin.
   Sombre : ardoise profonde, béton, cuivre. */

@font-face {
  font-family: "Space Grotesk Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 300 700;
  src: url(/fonts/space-grotesk-latin-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Space Grotesk Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 300 700;
  src: url(/fonts/space-grotesk-latin-ext-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/fonts/inter-latin-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- Couleurs ---------- */
:root {
  --kit-bg: #f3f0e9;
  --kit-fg: #1c2227;
  --kit-surface: #fbfaf6;
  --kit-line: #d8d1c4;
  --kit-muted: #565e66;
  --kit-accent: #1f4d3a;
  --accent-ink: #ffffff;
  --accent-doux: #dfe8e1;
  --pierre: #e8e2d6;
  --pierre-2: #ddd5c6;
  --terre: #a3472a;
  --terre-doux: #f2ddd2;
  --ombre: 0 30px 60px -36px rgba(28, 34, 39, 0.35);
  --grain-op: 0.05;
  --danger: #a3301f;
  --danger-ink: #fff;
  /* Illustration d'ouverture */
  --h-ciel-1: #dbe6ea;
  --h-ciel-2: #f3eee3;
  --h-soleil: #f2c98a;
  --h-granit: #c9c1b3;
  --h-clair: #efe9dc;
  --h-toit: #59636d;
  --h-zinc: #8c979f;
  --h-bois: #b1825a;
  --h-verre-1: #b9d0dc;
  --h-verre-2: #e8eef0;
  --h-porte: #1f4d3a;
  --h-feuille: #6f8b5c;
  /* Carte */
  --c-mer: #dce4e3;
  --c-houle: #c5d2d2;
  --c-terre: #f7f4ed;
  --c-terre-ombre: #c2cbca;
  --c-voisin: #ebe7de;
  /* Plan */
  --p-fond: #f6f3ec;
  --p-grille: #e3ddd1;
  --p-piece: #fdfcf8;
  --p-jour: #efe8da;
  --p-mur: #1c2227;
  --p-meuble: #9aa1a7;
  --p-cote: #1f4d3a;
  --font-titre: "Space Grotesk Variable", "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --font-texte: "Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --gouttiere: clamp(16px, 4vw, 48px);
  --max: 1360px;
  --entete-h: 76px;
}
:root[data-theme="dark"] {
  --kit-bg: #14181b;
  --kit-fg: #ece7de;
  --kit-surface: #1c2125;
  --kit-line: #30383e;
  --kit-muted: #a6acb0;
  --kit-accent: #d4955f;
  --accent-ink: #14181b;
  --accent-doux: #3a2e24;
  --pierre: #22282c;
  --pierre-2: #2a3136;
  --terre: #e0a47a;
  --terre-doux: #3a2a22;
  --ombre: 0 30px 60px -30px rgba(0, 0, 0, 0.7);
  --grain-op: 0.07;
  --danger: #f08a75;
  --danger-ink: #14181b;
  --h-ciel-1: #0f1a2c;
  --h-ciel-2: #243049;
  --h-soleil: #efe6cf;
  --h-granit: #5a5f63;
  --h-clair: #6d6b66;
  --h-toit: #2a3036;
  --h-zinc: #3c454c;
  --h-bois: #7a5638;
  --h-verre-1: #f3c472;
  --h-verre-2: #d98e45;
  --h-porte: #d4955f;
  --h-feuille: #2e4031;
  --c-mer: #172026;
  --c-houle: #1f2b32;
  --c-terre: #262d32;
  --c-terre-ombre: #0d1114;
  --c-voisin: #1d2327;
  --p-fond: #1a1f23;
  --p-grille: #242b30;
  --p-piece: #20262a;
  --p-jour: #2a2621;
  --p-mur: #ece7de;
  --p-meuble: #6e767c;
  --p-cote: #d4955f;
}

/* ---------- Base ---------- */
[hidden] {
  display: none !important;
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
body {
  margin: 0;
  background: var(--kit-bg);
  color: var(--kit-fg);
  font-family: var(--font-texte);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
  transition:
    background-color 0.4s ease,
    color 0.4s ease;
}
/* Grain très léger sur toute la page */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 70;
  pointer-events: none;
  opacity: var(--grain-op);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
img,
svg {
  max-width: 100%;
}
a {
  color: inherit;
}
h1,
h2,
h3,
h4 {
  font-family: var(--font-titre);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 0;
}
p {
  margin: 0;
}
button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}
::selection {
  background: var(--kit-accent);
  color: var(--accent-ink);
}
.conteneur {
  width: 100%;
  max-width: var(--max);
  margin-inline: auto;
  padding-inline: var(--gouttiere);
}
.ico {
  width: 20px;
  height: 20px;
  flex: none;
}
.note-discrete {
  font-size: 13px;
  color: var(--kit-muted);
}
.index {
  font-family: var(--font-titre);
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--kit-muted);
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 18px;
}
.index::before {
  content: "";
  width: 28px;
  height: 1px;
  background: currentColor;
}
.titre-section {
  font-size: clamp(34px, 5vw, 64px);
  letter-spacing: -0.035em;
}
.titre-page {
  font-size: clamp(44px, 8vw, 112px);
  letter-spacing: -0.045em;
  line-height: 0.95;
}
.surtitre {
  font-size: 13px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--kit-muted);
  display: flex;
  align-items: center;
  gap: 10px;
}
.pastille {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--kit-accent);
  box-shadow: 0 0 0 0 var(--kit-accent);
}
.motion .pastille {
  animation: respire 2.4s ease-in-out infinite;
}
@keyframes respire {
  0%,
  100% {
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--kit-accent) 50%, transparent);
  }
  50% {
    box-shadow: 0 0 0 7px color-mix(in srgb, var(--kit-accent) 0%, transparent);
  }
}

/* ---------- Boutons ---------- */
.btn {
  --h: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: var(--h);
  padding: 0 26px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 16px;
  letter-spacing: -0.005em;
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease,
    transform 0.35s var(--kit-ease),
    box-shadow 0.3s ease;
  white-space: nowrap;
}
.btn .ico {
  transition: transform 0.35s var(--kit-ease);
}
.btn:hover .ico {
  transform: translateX(4px);
}
.btn--plein {
  background: var(--kit-accent);
  color: var(--accent-ink);
}
.btn--plein:hover {
  box-shadow: 0 14px 30px -14px var(--kit-accent);
}
.btn--contour {
  border-color: var(--kit-fg);
  background: transparent;
}
.btn--contour:hover {
  background: var(--kit-fg);
  color: var(--kit-bg);
}
.btn--clair {
  background: #f3f0e9;
  color: #1c2227;
}
.btn--danger {
  background: var(--danger);
  color: var(--danger-ink);
}
.btn--petit {
  --h: 44px;
  padding: 0 18px;
  font-size: 15px;
}
.btn--large {
  width: 100%;
}
.btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.lien-btn {
  background: none;
  border: 0;
  padding: 10px 4px;
  min-height: 44px;
  font-size: 14px;
  font-weight: 500;
  color: var(--kit-fg);
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-color: var(--kit-line);
  cursor: pointer;
  transition: text-decoration-color 0.2s ease;
}
.lien-btn:hover {
  text-decoration-color: currentColor;
}
.rond {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--kit-line);
  background: var(--kit-surface);
  color: var(--kit-fg);
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease;
}
.rond:hover:not(:disabled) {
  background: var(--kit-fg);
  color: var(--kit-bg);
  border-color: var(--kit-fg);
}
.rond:disabled {
  opacity: 0.4;
  cursor: default;
}

/* Lien souligné qui se trace */
.trace-lien,
.nav a,
.pied a,
.carte-bien__titre a {
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
  transition: background-size 0.45s var(--kit-ease);
}
.trace-lien:hover,
.nav a:hover,
.pied a:hover,
.carte-bien__titre a:hover {
  background-size: 100% 1px;
}

/* ---------- En-tête ---------- */
.entete {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in srgb, var(--kit-bg) 82%, transparent);
  backdrop-filter: saturate(1.4) blur(14px);
  -webkit-backdrop-filter: saturate(1.4) blur(14px);
  border-bottom: 1px solid transparent;
  transition:
    border-color 0.3s ease,
    background-color 0.3s ease;
}
.entete.is-serre {
  border-bottom-color: var(--kit-line);
}
.entete__in {
  max-width: var(--max);
  margin-inline: auto;
  padding-inline: var(--gouttiere);
  height: var(--entete-h);
  display: flex;
  align-items: center;
  gap: 32px;
  transition: height 0.35s var(--kit-ease);
}
.entete.is-serre .entete__in {
  height: 60px;
}
.logo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  margin-right: auto;
  min-height: 44px;
}
.logo__mark {
  width: 34px;
  height: 34px;
  color: var(--kit-fg);
}
.logo__point {
  fill: var(--kit-accent);
}
.logo__nom {
  font-family: var(--font-titre);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1;
  display: flex;
  flex-direction: column;
}
.logo__nom small {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--kit-muted);
  margin-top: 4px;
}
.nav {
  display: flex;
  gap: 30px;
  font-size: 15px;
  font-weight: 500;
}
.nav a {
  padding: 10px 0;
  background-position: 0 calc(100% - 6px);
}
.nav a[aria-current="page"] {
  background-size: 100% 1px;
}
.badge-fav {
  display: inline-grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  margin-left: 4px;
  border-radius: 999px;
  background: var(--kit-accent);
  color: var(--accent-ink);
  font-size: 11px;
  font-weight: 700;
  vertical-align: 2px;
  transition: opacity 0.3s ease;
}
.badge-fav.is-vide {
  opacity: 0;
}
.entete__actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.kit-theme {
  width: 44px;
  height: 44px;
}
.burger {
  display: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--kit-line);
  background: var(--kit-surface);
  cursor: pointer;
  position: relative;
}
.burger span {
  position: absolute;
  left: 13px;
  right: 13px;
  height: 1.6px;
  background: var(--kit-fg);
  transition: transform 0.35s var(--kit-ease);
}
.burger span:first-child {
  top: 17px;
}
.burger span:last-child {
  top: 25px;
}
.burger[aria-expanded="true"] span:first-child {
  transform: translateY(4px) rotate(45deg);
}
.burger[aria-expanded="true"] span:last-child {
  transform: translateY(-4px) rotate(-45deg);
}
.menu-mobile {
  overflow: hidden;
  border-top: 1px solid var(--kit-line);
}
.menu-mobile nav {
  display: grid;
  padding: 8px var(--gouttiere) 20px;
}
.menu-mobile a {
  font-family: var(--font-titre);
  font-size: 28px;
  letter-spacing: -0.03em;
  padding: 10px 0;
  text-decoration: none;
  border-bottom: 1px solid var(--kit-line);
}
@media (max-width: 899px) {
  .nav,
  .entete__cta {
    display: none;
  }
  .burger {
    display: inline-block;
  }
  .entete__in {
    gap: 12px;
    height: 64px;
  }
}

/* ---------- Ouverture ---------- */
.hero {
  position: relative;
  padding: clamp(28px, 5vw, 64px) 0 40px;
  overflow-x: clip;
}
.hero::before {
  /* Dégradé lumineux qui respire derrière le dessin */
  content: "";
  position: absolute;
  width: 70vmax;
  height: 70vmax;
  right: -20vmax;
  top: -30vmax;
  border-radius: 50%;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--kit-accent) 16%, transparent), transparent);
  pointer-events: none;
}
.motion .hero::before {
  animation: halo 9s ease-in-out infinite alternate;
}
@keyframes halo {
  to {
    transform: translate(-6vmax, 4vmax) scale(1.08);
  }
}
.hero__grille {
  position: relative;
  display: grid;
  grid-template-columns: 1.02fr 1fr;
  gap: clamp(24px, 4vw, 64px);
  align-items: center;
}
.hero__titre {
  font-size: clamp(52px, 8.2vw, 128px);
  letter-spacing: -0.055em;
  line-height: 0.9;
  font-weight: 500;
  margin: 22px 0 28px;
}
.hero__titre .ligne {
  display: block;
  overflow: hidden;
  padding-bottom: 0.06em;
}
.hero__titre .ligne > span {
  display: inline-block;
}
.hero__titre em {
  font-style: normal;
  color: var(--kit-accent);
}
.motion .hero__titre .ligne > span {
  animation: monte 1.1s var(--kit-ease) backwards;
}
.motion .hero__titre .ligne:nth-child(1) > span {
  animation-delay: 0.25s;
}
.motion .hero__titre .ligne:nth-child(2) > span {
  animation-delay: 0.42s;
}
.motion .hero__titre .ligne:nth-child(3) > span {
  animation-delay: 0.59s;
}
@keyframes monte {
  from {
    transform: translateY(105%);
  }
}
.motion .hero__sur,
.motion .hero__chapo {
  animation: kit-rise 0.9s var(--kit-ease) backwards;
}
.motion .hero__sur {
  animation-delay: 0.1s;
}
.motion .hero__chapo {
  animation-delay: 0.9s;
}
.hero__chapo {
  font-size: clamp(17px, 1.5vw, 20px);
  max-width: 34em;
  color: var(--kit-muted);
}
.hero__dessin {
  position: relative;
}
.hero-art {
  width: 100%;
  height: auto;
  display: block;
}
.h-ciel-1 {
  stop-color: var(--h-ciel-1);
}
.h-ciel-2 {
  stop-color: var(--h-ciel-2);
}
.h-verre-1 {
  stop-color: var(--h-verre-1);
}
.h-verre-2 {
  stop-color: var(--h-verre-2);
}
.h-soleil {
  fill: var(--h-soleil);
}
.h-mur-granit {
  fill: var(--h-granit);
}
.h-mur-clair {
  fill: var(--h-clair);
}
.h-toit {
  fill: var(--h-toit);
}
.h-zinc {
  fill: var(--h-zinc);
}
.h-bois {
  fill: var(--h-bois);
}
.h-porte {
  fill: var(--h-porte);
}
.h-feuillage {
  fill: var(--h-feuille);
}
.hero-art .trace {
  fill: none;
  stroke: var(--kit-fg);
  stroke-width: 1.4;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.hero-art .trace.fin {
  stroke-width: 1;
}
.hero-art .trace.guide {
  stroke: var(--kit-muted);
  stroke-width: 0.6;
  stroke-dasharray: 3 5;
  opacity: 0.6;
}
.hero-art .trace.cote {
  stroke: var(--kit-accent);
  stroke-width: 1;
}
.h-legendes text {
  font-family: var(--font-titre);
  font-size: 11px;
  letter-spacing: 0.12em;
  fill: var(--kit-muted);
}
/* Le dessin se construit trait par trait, puis les matières apparaissent. */
.motion .hero-art .trace:not(.guide) {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: tracer 1.3s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}
.motion .hero-art .trace.guide {
  animation: kit-fade 0.8s ease backwards;
}
.motion .hero-art .phase-2 .trace {
  animation-delay: 0.3s;
}
.motion .hero-art .phase-3 .trace {
  animation-delay: 0.7s;
}
.motion .hero-art .phase-4 .trace {
  animation-delay: 1.1s;
}
.motion .hero-art .phase-5 .trace {
  animation-delay: 1.5s;
  animation-duration: 1.6s;
}
.motion .hero-art .phase-6 .trace {
  animation-delay: 1.9s;
}
.motion .h-remplissage {
  animation: remplir 1.4s ease 2.2s backwards;
}
.motion .h-legendes {
  animation: kit-fade 1s ease 2.6s backwards;
}
@keyframes tracer {
  to {
    stroke-dashoffset: 0;
  }
}
@keyframes remplir {
  from {
    opacity: 0;
    clip-path: inset(100% 0 0 0);
  }
  to {
    opacity: 1;
    clip-path: inset(0 0 0 0);
  }
}

/* Recherche */
.recherche {
  position: relative;
  margin-top: clamp(28px, 4vw, 48px);
  background: var(--kit-surface);
  border: 1px solid var(--kit-line);
  border-radius: 22px;
  padding: 10px;
  box-shadow: var(--ombre);
}
.motion .recherche {
  animation: kit-rise 0.9s var(--kit-ease) 1.1s backwards;
}
.recherche__onglets {
  position: relative;
  display: inline-grid;
  grid-template-columns: 1fr 1fr;
  padding: 4px;
  margin: 4px 4px 10px;
  border-radius: 999px;
  background: var(--pierre);
}
.recherche__onglets button {
  position: relative;
  z-index: 1;
  min-width: 110px;
  min-height: 44px;
  border: 0;
  background: none;
  border-radius: 999px;
  font-family: var(--font-titre);
  font-weight: 500;
  cursor: pointer;
  color: var(--kit-muted);
  transition: color 0.3s ease;
}
.recherche__onglets button[aria-selected="true"] {
  color: var(--accent-ink);
}
.recherche__curseur {
  position: absolute;
  top: 4px;
  bottom: 4px;
  left: 4px;
  width: calc(50% - 4px);
  border-radius: 999px;
  background: var(--kit-accent);
  transition: transform 0.45s var(--kit-ease);
}
.recherche[data-mode="location"] .recherche__curseur {
  transform: translateX(100%);
}
.recherche__champs {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr auto;
  gap: 8px;
  align-items: end;
}
.champ {
  display: grid;
  gap: 6px;
  font-size: 13px;
  font-weight: 500;
  color: var(--kit-muted);
}
.champ > span {
  padding-left: 4px;
}
.champ small {
  font-weight: 400;
}
select,
input[type="text"],
input[type="tel"],
input[type="email"],
input[type="number"],
input:not([type]),
textarea {
  width: 100%;
  min-height: 52px;
  padding: 12px 16px;
  border-radius: 14px;
  border: 1px solid var(--kit-line);
  background: var(--kit-bg);
  color: var(--kit-fg);
  font-size: 16px;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}
select {
  appearance: none;
  padding-right: 40px;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position:
    calc(100% - 22px) 50%,
    calc(100% - 17px) 50%;
  background-size: 5px 5px;
  background-repeat: no-repeat;
  cursor: pointer;
}
textarea {
  resize: vertical;
  min-height: 80px;
}
select:hover,
input:hover,
textarea:hover {
  border-color: var(--kit-muted);
}
select:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: none;
  border-color: var(--kit-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--kit-accent) 30%, transparent);
}
[aria-invalid="true"] {
  border-color: var(--danger) !important;
}
.erreur {
  font-style: normal;
  font-size: 13px;
  color: var(--danger);
  min-height: 0;
}
.erreur:empty {
  display: none;
}
.recherche__go {
  min-height: 52px;
}
.recherche__go [data-recherche-nb] {
  font-variant-numeric: tabular-nums;
  opacity: 0.8;
}
@media (max-width: 899px) {
  .hero__grille {
    grid-template-columns: 1fr;
  }
  .hero__dessin {
    order: 2;
  }
  .recherche__champs {
    grid-template-columns: 1fr 1fr;
  }
  .recherche__go {
    grid-column: 1 / -1;
  }
}
@media (max-width: 520px) {
  .recherche__champs {
    grid-template-columns: 1fr;
  }
  .recherche__onglets {
    display: grid;
  }
  .une__tete {
    grid-template-columns: 1fr;
  }
  .une__progres {
    flex: 1;
  }
}

/* Bandeau de villes qui défile */
.defile {
  border-block: 1px solid var(--kit-line);
  overflow: hidden;
  padding: 18px 0;
  margin-top: 40px;
}
.defile__piste {
  display: flex;
  width: max-content;
  gap: 56px;
  font-family: var(--font-titre);
  font-size: clamp(26px, 3.4vw, 44px);
  letter-spacing: -0.03em;
  color: var(--kit-muted);
}
.defile__piste span {
  display: inline-flex;
  align-items: center;
  gap: 56px;
}
.defile__piste span::after {
  content: "";
  width: 10px;
  height: 10px;
  border: 1.5px solid var(--kit-accent);
  transform: rotate(45deg);
}
.motion .defile__piste {
  animation: defile 40s linear infinite;
}
@keyframes defile {
  to {
    transform: translateX(-50%);
  }
}

/* ---------- Biens à la une : défilement horizontal ---------- */
.une {
  position: relative;
  padding: clamp(64px, 9vw, 120px) 0 clamp(48px, 6vw, 80px);
}
.une__tete {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 16px 32px;
  margin-bottom: 36px;
}
.une__tete .index {
  grid-column: 1 / -1;
  margin: 0;
}
.une__nav {
  display: flex;
  align-items: center;
  gap: 10px;
}
.une__progres {
  width: 120px;
  height: 2px;
  background: var(--kit-line);
  margin-right: 14px;
  overflow: hidden;
}
.une__progres span {
  display: block;
  height: 100%;
  background: var(--kit-fg);
  transform-origin: 0 50%;
  transform: scaleX(0.1);
  transition: transform 0.2s linear;
}
.une__fenetre {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.une__fenetre::-webkit-scrollbar {
  display: none;
}
.une__piste {
  list-style: none;
  margin: 0;
  display: flex;
  gap: clamp(16px, 2vw, 28px);
  padding: 4px max(var(--gouttiere), calc((100vw - var(--max)) / 2 + var(--gouttiere)));
  width: max-content;
}
.une__piste > li {
  width: clamp(280px, 30vw, 430px);
  scroll-snap-align: start;
  scroll-margin-left: var(--gouttiere);
}
/* Mode épinglé (ordinateur) : le défilement vertical fait glisser la piste. */
.une.is-epingle .une__collant {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
}
.une.is-epingle .une__fenetre {
  overflow: visible;
  scroll-snap-type: none;
}
.une.is-epingle .une__piste {
  will-change: transform;
}
.une.is-epingle {
  padding: 0;
}

/* ---------- Carte d'un bien ---------- */
.carte-bien {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--kit-surface);
  border: 1px solid var(--kit-line);
  border-radius: 20px;
  overflow: hidden;
  transition:
    border-color 0.3s ease,
    box-shadow 0.4s ease,
    transform 0.5s var(--kit-ease);
}
.carte-bien:hover {
  border-color: color-mix(in srgb, var(--kit-fg) 30%, var(--kit-line));
  box-shadow: var(--ombre);
}
.carte-bien__visuel {
  display: block;
  aspect-ratio: 480 / 340;
  overflow: hidden;
  background: var(--pierre);
}
.ill {
  display: block;
  width: 100%;
  height: 100%;
}
.carte-bien__visuel .ill {
  transition: transform 1.2s var(--kit-ease);
}
.carte-bien:hover .carte-bien__visuel .ill {
  transform: scale(1.06);
}
.carte-bien__etiquette {
  position: absolute;
  top: 14px;
  left: 14px;
  padding: 6px 12px;
  border-radius: 999px;
  background: color-mix(in srgb, #fbfaf6 92%, transparent);
  color: #1c2227;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  backdrop-filter: blur(6px);
}
.dpe-pastille {
  position: absolute;
  top: 14px;
  right: 14px;
  padding: 5px 10px;
  border-radius: 8px;
  font-family: var(--font-titre);
  font-size: 12px;
  font-weight: 700;
}
.dpe-pastille--inline {
  position: static;
  display: inline-block;
  min-width: 32px;
  text-align: center;
}
.dpe-A {
  --dpe: #007a52;
  background: var(--dpe);
  color: #fff;
}
.dpe-B {
  --dpe: #4fae55;
  background: var(--dpe);
  color: #10210f;
}
.dpe-C {
  --dpe: #b2cd47;
  background: var(--dpe);
  color: #1c2410;
}
.dpe-D {
  --dpe: #f3d43a;
  background: var(--dpe);
  color: #2a2208;
}
.dpe-E {
  --dpe: #f2a94a;
  background: var(--dpe);
  color: #2a1b06;
}
.dpe-F {
  --dpe: #ea7a3a;
  background: var(--dpe);
  color: #24120a;
}
.dpe-G {
  --dpe: #c9312a;
  background: var(--dpe);
  color: #fff;
}
.carte-bien__corps {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 20px 16px;
  flex: 1;
}
.carte-bien__lieu {
  font-size: 13px;
  color: var(--kit-muted);
}
.carte-bien__titre {
  font-size: 21px;
  line-height: 1.15;
  letter-spacing: -0.02em;
}
.carte-bien__titre a::after {
  /* Toute la carte est cliquable */
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}
.carte-bien__caracs {
  font-size: 14px;
  color: var(--kit-muted);
}
.carte-bien__pied {
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--kit-line);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.carte-bien__prix {
  font-family: var(--font-titre);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.02em;
}
.carte-bien__actions {
  position: relative;
  z-index: 2;
  display: flex;
  gap: 6px;
}
.act {
  position: relative;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  border: 1px solid var(--kit-line);
  background: var(--kit-surface);
  color: var(--kit-fg);
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease;
}
.act:hover {
  border-color: var(--kit-fg);
}
.ico--coeur path {
  fill: transparent;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linejoin: round;
  transition:
    fill 0.3s ease,
    stroke 0.3s ease;
}
.act--fav.is-on {
  color: var(--terre);
  border-color: color-mix(in srgb, var(--terre) 50%, var(--kit-line));
}
.act--fav.is-on .ico--coeur path {
  fill: currentColor;
}
.act--cmp.is-on {
  background: var(--kit-fg);
  color: var(--kit-bg);
  border-color: var(--kit-fg);
}
.motion .act.is-pop .ico {
  animation: pop 0.5s var(--kit-ease);
}
@keyframes pop {
  30% {
    transform: scale(1.35);
  }
}
.eclat {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 5px;
  height: 5px;
  margin: -2.5px;
  border-radius: 50%;
  background: var(--terre);
  pointer-events: none;
  animation: eclat 0.6s var(--kit-ease) forwards;
}
@keyframes eclat {
  to {
    transform: translate(var(--dx), var(--dy)) scale(0.3);
    opacity: 0;
  }
}

/* ---------- Chiffres ---------- */
.chiffres {
  padding-block: clamp(64px, 9vw, 120px);
}
.chiffres__grille {
  margin: 48px 0 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--kit-fg);
}
.chiffres__grille > div {
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-end;
  gap: 10px;
  padding: 28px 24px 8px 0;
  border-right: 1px solid var(--kit-line);
}
.chiffres__grille > div + div {
  padding-left: 24px;
}
.chiffres__grille > div:last-child {
  border-right: 0;
}
.chiffres__grille dd {
  margin: 0;
  font-family: var(--font-titre);
  font-size: clamp(56px, 7vw, 108px);
  font-weight: 400;
  letter-spacing: -0.06em;
  line-height: 0.9;
  font-variant-numeric: tabular-nums;
}
.chiffres__grille dt {
  font-size: 14px;
  color: var(--kit-muted);
  max-width: 16em;
}
@media (max-width: 899px) {
  .chiffres__grille {
    grid-template-columns: 1fr 1fr;
  }
  .chiffres__grille > div {
    padding: 22px 12px 22px 0 !important;
    border-right: 0;
    border-bottom: 1px solid var(--kit-line);
  }
  .chiffres__grille > div:nth-child(even) {
    padding-left: 16px !important;
    border-left: 1px solid var(--kit-line);
  }
}

/* ---------- Méthode ---------- */
.methode {
  background: var(--pierre);
  padding-block: clamp(64px, 9vw, 120px);
}
.methode__etapes {
  list-style: none;
  padding: 0;
  margin: 48px 0 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid var(--kit-fg);
}
.methode__etapes li {
  padding: 28px 28px 8px 0;
  position: relative;
}
.methode__etapes li + li {
  padding-left: 28px;
  border-left: 1px solid var(--kit-line);
}
.methode__num {
  display: block;
  font-family: var(--font-titre);
  font-size: 64px;
  letter-spacing: -0.06em;
  line-height: 1;
  color: var(--kit-accent);
  margin-bottom: 28px;
}
.methode__etapes h3 {
  font-size: 24px;
  margin-bottom: 10px;
}
.methode__etapes p {
  color: var(--kit-muted);
}
@media (max-width: 899px) {
  .methode__etapes {
    grid-template-columns: 1fr 1fr;
  }
  .methode__etapes li:nth-child(3) {
    border-left: 0;
    padding-left: 0;
  }
}
@media (max-width: 560px) {
  .methode__etapes {
    grid-template-columns: 1fr;
  }
  .methode__etapes li,
  .methode__etapes li + li {
    padding: 24px 0;
    border-left: 0;
    border-bottom: 1px solid var(--kit-line);
    display: grid;
    grid-template-columns: 64px 1fr;
    column-gap: 12px;
  }
  .methode__num {
    font-size: 40px;
    grid-row: span 2;
    margin: 0;
  }
}

/* ---------- Appel à l'estimation ---------- */
.appel-estim {
  padding-block: clamp(64px, 9vw, 120px);
}
.appel-estim__carte {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 48px;
  align-items: center;
  padding: clamp(32px, 6vw, 80px);
  border-radius: 28px;
  background: #1f4d3a;
  color: #f3f0e9;
}
:root[data-theme="dark"] .appel-estim__carte {
  background: #23302b;
}
.appel-estim__carte::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.05) 0 1px, transparent 1px 64px),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.05) 0 1px, transparent 1px 64px);
  pointer-events: none;
}
.appel-estim__carte > * {
  position: relative;
}
.appel-estim__carte p {
  margin: 20px 0 32px;
  max-width: 32em;
  color: #d9e2dc;
}
.index--clair {
  color: #c9d6ce;
}
.appel-estim__jauge {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 16px;
  font-family: var(--font-titre);
  font-size: 18px;
}
.appel-estim__piste {
  position: relative;
  height: 2px;
  background: rgba(255, 255, 255, 0.25);
}
.appel-estim__plage {
  position: absolute;
  inset: -3px 18% -3px 22%;
  background: #e6a26e;
  border-radius: 4px;
}
.appel-estim__point {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 18px;
  height: 18px;
  margin: -9px;
  border-radius: 50%;
  background: #f3f0e9;
  box-shadow: 0 0 0 6px rgba(243, 240, 233, 0.2);
}
.motion .appel-estim__carte.is-in .appel-estim__plage {
  animation: plage 1.4s var(--kit-ease) 0.3s backwards;
}
.motion .appel-estim__point {
  animation: flotte 3.2s ease-in-out infinite;
}
@keyframes plage {
  from {
    inset: -3px 50% -3px 50%;
  }
}
@keyframes flotte {
  50% {
    left: 46%;
  }
}
.appel-estim__exemple {
  grid-column: 1 / -1;
  text-align: center;
  font-family: var(--font-texte);
  font-size: 13px;
  color: #c9d6ce;
}
@media (max-width: 899px) {
  .appel-estim__carte {
    grid-template-columns: 1fr;
  }
  .appel-estim__jauge {
    font-size: 15px;
    gap: 10px;
  }
}

/* ---------- Avis ---------- */
.avis {
  padding-bottom: clamp(64px, 9vw, 120px);
}
.avis .note-discrete {
  margin-top: 12px;
}
.avis__grille {
  margin-top: 40px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.avis figure {
  margin: 0;
  padding: 32px;
  border: 1px solid var(--kit-line);
  border-radius: 20px;
  background: var(--kit-surface);
  display: flex;
  flex-direction: column;
  gap: 24px;
  justify-content: space-between;
}
.avis blockquote {
  margin: 0;
  font-family: var(--font-titre);
  font-size: 22px;
  line-height: 1.3;
  letter-spacing: -0.02em;
}
.avis figcaption {
  font-size: 14px;
  color: var(--kit-muted);
}
.avis figcaption strong {
  color: var(--kit-fg);
}
@media (max-width: 899px) {
  .avis__grille {
    grid-template-columns: 1fr;
  }
}

/* ---------- Équipe ---------- */
.equipe {
  padding-bottom: clamp(64px, 9vw, 120px);
}
.equipe__grille {
  list-style: none;
  padding: 0;
  margin: 40px 0 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.equipe__grille li {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.portrait {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 18px;
  margin-bottom: 12px;
  transition: transform 0.8s var(--kit-ease);
}
.equipe__grille li:hover .portrait {
  transform: translateY(-6px);
}
.equipe__grille h3 {
  font-size: 22px;
}
.equipe__role {
  font-size: 14px;
  color: var(--kit-muted);
}
.equipe__bio {
  font-size: 15px;
}
.equipe__tel {
  font-size: 14px;
  font-weight: 600;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  width: fit-content;
}
@media (max-width: 1099px) {
  .equipe__grille {
    grid-template-columns: 1fr 1fr;
  }
}

/* ---------- Pied de page ---------- */
.pied {
  margin-top: 40px;
  padding: 72px 0 110px;
  background: #1a1f23;
  color: #e9e4da;
}
:root[data-theme="dark"] .pied {
  background: #0e1113;
  border-top: 1px solid var(--kit-line);
}
.pied__haut {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1.3fr 1fr;
  gap: 40px;
}
.pied .pied__mot {
  font-family: var(--font-titre);
  font-size: clamp(80px, 12vw, 180px);
  letter-spacing: -0.07em;
  line-height: 0.8;
  margin-bottom: 20px;
  color: #f3f0e9;
}
.pied p {
  color: #b9bbb8;
  font-size: 15px;
}
.pied h2 {
  font-size: 13px;
  font-family: var(--font-titre);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #b9bbb8;
  margin-bottom: 16px;
  font-weight: 500;
}
.pied ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 6px;
  font-size: 15px;
}
.pied a {
  color: #f3f0e9;
  display: inline-block;
  padding: 6px 0;
}
.pied__demo {
  margin-top: 56px;
  padding: 22px 0;
  border-block: 1px solid #343b40;
  font-size: 16px !important;
  color: #e9e4da !important;
}
.pied__demo a {
  font-weight: 600;
  color: #e6a26e;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.pied__bas {
  margin-top: 22px;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
.pied .signe-binuxlabs {
  opacity: 1;
  color: #b9bbb8;
}
@media (max-width: 899px) {
  .pied__haut {
    grid-template-columns: 1fr 1fr;
  }
  .pied__marque {
    grid-column: 1 / -1;
  }
}
@media (max-width: 560px) {
  .pied__haut {
    grid-template-columns: 1fr;
  }
}

/* Appel BinuxLabs et tiroir de comparaison */
.avec-tiroir .binux-cta {
  bottom: 100px;
}
@media (max-width: 560px) {
  .avec-tiroir .binux-cta {
    bottom: 132px;
  }
}

/* ---------- En-tête de page intérieure ---------- */
.page-tete {
  padding-top: clamp(32px, 6vw, 72px);
  padding-bottom: 32px;
}
.page-tete__chapo {
  margin-top: 22px;
  max-width: 40em;
  font-size: 18px;
  color: var(--kit-muted);
}

/* ---------- Catalogue ---------- */
.catalogue {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 40px;
  align-items: start;
  padding-bottom: 80px;
}
.filtres {
  position: sticky;
  top: 80px;
  border-top: 1px solid var(--kit-fg);
  padding-top: 16px;
}
.filtres__tete {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.filtres__tete h2 {
  font-size: 22px;
}
.filtres__bascule {
  display: none;
}
.filtres__corps {
  display: grid;
  gap: 4px;
  overflow: hidden;
}
.filtre {
  border: 0;
  margin: 0;
  padding: 18px 0;
  border-bottom: 1px solid var(--kit-line);
  min-width: 0;
}
.filtre legend,
.filtre__titre {
  font-family: var(--font-titre);
  font-size: 15px;
  font-weight: 500;
  margin-bottom: 12px;
  padding: 0;
  display: flex;
  justify-content: space-between;
  width: 100%;
}
.filtre__titre output,
.filtre__valeur {
  font-family: var(--font-texte);
  font-size: 14px;
  color: var(--kit-muted);
  font-variant-numeric: tabular-nums;
}
.filtre__valeur {
  margin: -4px 0 8px;
}
.segment {
  border: 0;
  margin: 0 0 8px;
  padding: 4px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: var(--pierre);
  border-radius: 999px;
}
.segment label {
  position: relative;
}
.segment input,
.puce input,
.jour input,
.creneau input,
.choix input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.segment span {
  display: grid;
  place-items: center;
  min-height: 44px;
  border-radius: 999px;
  font-family: var(--font-titre);
  font-weight: 500;
  cursor: pointer;
  color: var(--kit-muted);
  transition:
    background-color 0.35s var(--kit-ease),
    color 0.35s ease;
}
.segment input:checked + span {
  background: var(--kit-accent);
  color: var(--accent-ink);
}
.segment input:focus-visible + span,
.puce input:focus-visible + span,
.jour input:focus-visible + span,
.creneau input:focus-visible + span,
.choix input:focus-visible + span {
  outline: 2px solid var(--kit-accent);
  outline-offset: 2px;
}
.puces {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.puce span {
  display: inline-grid;
  place-items: center;
  min-height: 40px;
  min-width: 44px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--kit-line);
  font-size: 14px;
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease;
}
.puce:hover span {
  border-color: var(--kit-fg);
}
.puce input:checked + span {
  background: var(--kit-fg);
  border-color: var(--kit-fg);
  color: var(--kit-bg);
}
.puces--dpe .puce span {
  min-width: 40px;
  padding: 0 10px;
}

/* Curseurs */
input[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 44px;
  background: transparent;
  margin: 0;
  cursor: pointer;
}
input[type="range"]::-webkit-slider-runnable-track {
  height: 2px;
  background: var(--kit-line);
}
input[type="range"]::-moz-range-track {
  height: 2px;
  background: var(--kit-line);
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 24px;
  height: 24px;
  margin-top: -11px;
  border-radius: 50%;
  background: var(--kit-surface);
  border: 2px solid var(--kit-fg);
  box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.35);
  transition: transform 0.2s var(--kit-ease);
}
input[type="range"]::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--kit-surface);
  border: 2px solid var(--kit-fg);
}
input[type="range"]:active::-webkit-slider-thumb {
  transform: scale(1.18);
}
input[type="range"]:focus-visible {
  outline: none;
}
input[type="range"]:focus-visible::-webkit-slider-thumb {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--kit-accent) 45%, transparent);
}
.curseur {
  background: linear-gradient(var(--kit-fg), var(--kit-fg)) 0 50% / var(--rempli, 0%) 2px no-repeat;
}
.double {
  position: relative;
  height: 44px;
}
.double__piste {
  position: absolute;
  left: 0;
  right: 0;
  top: 21px;
  height: 2px;
  background: var(--kit-line);
}
.double__plage {
  position: absolute;
  top: 0;
  bottom: 0;
  background: var(--kit-fg);
}
.double input[type="range"] {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.double input[type="range"]::-webkit-slider-runnable-track {
  background: transparent;
}
.double input[type="range"]::-moz-range-track {
  background: transparent;
}
.double input[type="range"]::-webkit-slider-thumb {
  pointer-events: auto;
}
.double input[type="range"]::-moz-range-thumb {
  pointer-events: auto;
}

.resultats__barre {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
  border-top: 1px solid var(--kit-fg);
  padding: 14px 0 22px;
}
.resultats__nb {
  font-size: clamp(28px, 3vw, 40px);
  letter-spacing: -0.04em;
}
.resultats__nb [data-nb] {
  font-variant-numeric: tabular-nums;
  display: inline-block;
  min-width: 1ch;
}
.resultats__outils {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.tri select {
  min-height: 44px;
  border-radius: 999px;
  font-size: 15px;
  padding-block: 8px;
}
.vue {
  display: inline-flex;
  padding: 3px;
  border-radius: 999px;
  border: 1px solid var(--kit-line);
}
.vue button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 14px;
  border: 0;
  border-radius: 999px;
  background: none;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--kit-muted);
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}
.vue button .ico {
  width: 18px;
  height: 18px;
}
.vue button[aria-pressed="true"] {
  background: var(--kit-fg);
  color: var(--kit-bg);
}
.vues {
  position: relative;
}
.grille-biens {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 22px;
}
.grille-biens > li {
  min-width: 0;
}
.vue-fondu {
  transition:
    opacity 0.3s ease,
    transform 0.4s var(--kit-ease);
}
.vue-fondu.is-sortie {
  opacity: 0;
  transform: translateY(10px);
}
.vide {
  display: grid;
  justify-items: start;
  gap: 10px;
  padding: 48px;
  border: 1px dashed var(--kit-line);
  border-radius: 20px;
}
.vide--petit {
  padding: 32px;
}
.vide__titre {
  font-family: var(--font-titre);
  font-size: 26px;
  letter-spacing: -0.03em;
}
.vide p:not(.vide__titre) {
  color: var(--kit-muted);
}
.vide .btn {
  margin-top: 8px;
}
@media (max-width: 899px) {
  .catalogue {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .filtres {
    position: static;
  }
  .filtres__bascule {
    display: inline-flex;
  }
  .filtres__tete h2 {
    margin-right: auto;
  }
}

/* Vue carte */
.vue-carte {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 20px;
  align-items: start;
}
.vue-carte__carte {
  border-radius: 20px;
  overflow: hidden;
  border: 1px solid var(--kit-line);
}
.vue-carte__apercu {
  position: sticky;
  top: 90px;
}
.vue-carte__aide {
  padding: 24px;
  border: 1px dashed var(--kit-line);
  border-radius: 20px;
  color: var(--kit-muted);
}
@media (max-width: 1099px) {
  .vue-carte {
    grid-template-columns: 1fr;
  }
}
.carte {
  display: block;
  width: 100%;
  height: auto;
}
.carte-mer {
  fill: var(--c-mer);
}
.carte-houle {
  stroke: var(--c-houle);
  fill: none;
  stroke-width: 1;
}
.carte-grille {
  stroke: var(--c-houle);
  stroke-dasharray: 2 5;
}
.carte-terre {
  fill: var(--c-terre);
}
.carte-voisin {
  fill: var(--c-voisin);
}
.carte-terre-ombre {
  fill: var(--c-terre-ombre);
  opacity: 0.7;
}
.carte-cote {
  fill: none;
  stroke: var(--kit-fg);
  stroke-width: 1.3;
}
.carte-cote--2 {
  stroke-opacity: 0.25;
}
.carte-ville circle {
  fill: var(--kit-fg);
}
.carte-ville text {
  font-size: 17px;
  font-weight: 500;
  fill: var(--kit-fg);
  paint-order: stroke;
  stroke: var(--c-terre);
  stroke-width: 5px;
  stroke-linejoin: round;
}
.carte-ville.is-active text {
  fill: var(--kit-accent);
}
.carte-rose circle {
  fill: none;
  stroke: var(--kit-muted);
}
.carte-rose path,
.carte-rose text {
  fill: var(--kit-muted);
}
.carte-rose text,
.carte-mer-nom {
  font-size: 14px;
  letter-spacing: 0.4em;
  fill: var(--kit-muted);
}
.epingle {
  cursor: pointer;
  outline: none;
}
.epingle__forme {
  fill: var(--kit-accent);
  stroke: var(--kit-bg);
  stroke-width: 1.5;
  transition: fill 0.25s ease;
}
.epingle__point {
  fill: var(--kit-bg);
}
.epingle__pulse {
  fill: var(--kit-accent);
  opacity: 0.2;
}
.epingle__zone {
  fill: transparent;
}
@media (max-width: 700px) {
  .epingle__corps {
    scale: 1.9;
  }
  .carte-ville text {
    font-size: 26px;
  }
}
.epingle__corps {
  transform-box: fill-box;
  transform-origin: 50% 100%;
  transition: transform 0.35s var(--kit-ease);
}
.epingle:hover .epingle__corps,
.epingle:focus-visible .epingle__corps,
.epingle.is-active .epingle__corps {
  transform: scale(1.35);
}
.epingle.is-active .epingle__forme,
.epingle:focus-visible .epingle__forme {
  fill: var(--terre);
}
.motion .epingle__corps {
  animation: tombe 0.7s var(--kit-ease) backwards;
  animation-delay: calc(var(--i, 0) * 50ms + 0.15s);
}
.motion .epingle__pulse {
  transform-box: fill-box;
  transform-origin: center;
  animation: pulse 2.6s ease-out infinite;
  animation-delay: calc(var(--i, 0) * 180ms);
}
@keyframes tombe {
  from {
    transform: translateY(-40px);
    opacity: 0;
  }
}
@keyframes pulse {
  from {
    transform: scale(0.6);
    opacity: 0.45;
  }
  to {
    transform: scale(2.4);
    opacity: 0;
  }
}

/* Tiroir de comparaison */
.tiroir {
  position: fixed;
  left: 50%;
  bottom: 18px;
  z-index: 54;
  width: min(720px, calc(100vw - 32px));
  translate: -50% 0;
  transform: translateY(140%);
  opacity: 0;
  transition:
    transform 0.5s var(--kit-ease),
    opacity 0.4s ease;
}
.tiroir.is-in {
  transform: none;
  opacity: 1;
}
.tiroir__in {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 10px 10px 20px;
  border-radius: 999px;
  background: var(--kit-fg);
  color: var(--kit-bg);
  box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.55);
}
.tiroir__titre {
  font-size: 14px;
  white-space: nowrap;
}
.tiroir__liste {
  list-style: none;
  padding: 0;
  margin: 0 auto 0 0;
  display: flex;
  gap: 6px;
  min-width: 0;
}
.tiroir__liste li {
  position: relative;
  display: flex;
  align-items: center;
  animation: kit-rise 0.4s var(--kit-ease) backwards;
}
.tiroir__vignette {
  display: block;
  width: 52px;
  height: 38px;
  border-radius: 8px;
  overflow: hidden;
}
.tiroir__nom {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}
.tiroir__retirer {
  position: absolute;
  top: -8px;
  right: -8px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 0;
  display: grid;
  place-items: center;
  background: var(--kit-bg);
  color: var(--kit-fg);
  cursor: pointer;
}
.tiroir__retirer .ico {
  width: 14px;
  height: 14px;
}
.tiroir .btn--plein {
  background: var(--kit-bg);
  color: var(--kit-fg);
}
.tiroir .lien-btn {
  color: var(--kit-bg);
  text-decoration-color: currentColor;
}
@media (max-width: 560px) {
  .tiroir__in {
    flex-wrap: wrap;
    border-radius: 20px;
    padding: 12px 14px;
    gap: 10px;
  }
  .tiroir__liste {
    order: 3;
    width: 100%;
  }
  .tiroir__titre {
    margin-right: auto;
  }
}

/* ---------- Fenêtres ---------- */
dialog.dialogue[open] {
  display: flex;
  flex-direction: column;
}
.dialogue--large {
  max-width: min(1040px, calc(100vw - 32px)) !important;
}
.dialogue--petit {
  max-width: min(460px, calc(100vw - 32px)) !important;
}
.dialogue__tete {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 20px 14px 28px;
  border-bottom: 1px solid var(--kit-line);
}
.dialogue__tete h2 {
  font-size: 26px;
}
.dialogue__corps {
  padding: 24px 28px 28px;
  overflow: auto;
}
.dialogue__corps > h2 {
  font-size: 28px;
  margin-bottom: 12px;
}
.dialogue__corps > p {
  color: var(--kit-muted);
}
.dialogue__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 24px;
}
@media (max-width: 560px) {
  .dialogue__corps {
    padding: 20px 18px 22px;
  }
  .dialogue__tete {
    padding: 14px 14px 12px 18px;
  }
  .dialogue__actions .btn {
    flex: 1;
  }
}

/* Comparaison */
.cmp {
  overflow-x: auto;
}
.cmp__table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  min-width: 560px;
  font-size: 15px;
}
.cmp__table th,
.cmp__table td {
  text-align: left;
  vertical-align: top;
  padding: 12px 14px;
  border-bottom: 1px solid var(--kit-line);
}
.cmp__table thead th,
.cmp__table thead td {
  border-bottom: 1px solid var(--kit-fg);
}
.cmp__table thead td {
  width: 150px;
}
.cmp__table tbody th {
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kit-muted);
  white-space: nowrap;
  width: 140px;
}
.cmp__table small {
  color: var(--kit-muted);
}
.cmp__visuel {
  display: block;
  aspect-ratio: 480 / 340;
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 10px;
}
.cmp__nom {
  display: block;
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 17px;
  line-height: 1.2;
  text-decoration: none;
}
.cmp__table .lien-btn {
  padding-left: 0;
}
.cmp__table td.is-meilleur {
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--kit-accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 5px;
}
.cmp-atouts {
  margin: 0;
  padding-left: 16px;
  font-size: 14px;
}

/* Formulaire de visite */
.visite {
  display: grid;
  gap: 20px;
}
.visite__bien {
  display: flex;
  gap: 14px;
  align-items: center;
}
.visite__vignette {
  width: 92px;
  height: 66px;
  flex: none;
  border-radius: 10px;
  overflow: hidden;
}
.visite__titre {
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 18px;
  line-height: 1.2;
}
.visite__lieu {
  font-size: 14px;
  color: var(--kit-muted);
}
.visite__groupe {
  border: 0;
  margin: 0;
  padding: 0;
  min-width: 0;
  display: grid;
  gap: 12px;
}
.visite__groupe legend {
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 16px;
  margin-bottom: 10px;
  padding: 0;
}
.jours {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 4px 2px 8px;
  scroll-snap-type: x proximity;
}
.jour {
  flex: none;
  scroll-snap-align: start;
}
.jour span {
  display: grid;
  justify-items: center;
  width: 64px;
  padding: 10px 0;
  border-radius: 14px;
  border: 1px solid var(--kit-line);
  cursor: pointer;
  line-height: 1.2;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease,
    transform 0.3s var(--kit-ease);
}
.jour span small {
  font-size: 12px;
  color: var(--kit-muted);
  transition: color 0.25s ease;
}
.jour span strong {
  font-family: var(--font-titre);
  font-size: 22px;
  font-weight: 500;
}
.jour:hover span {
  border-color: var(--kit-fg);
}
.jour input:checked + span {
  background: var(--kit-accent);
  border-color: var(--kit-accent);
  color: var(--accent-ink);
  transform: translateY(-2px);
}
.jour input:checked + span small {
  color: inherit;
}
.creneaux__aide {
  color: var(--kit-muted);
  font-size: 14px;
}
.creneaux__liste {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.creneau span {
  display: grid;
  place-items: center;
  min-height: 48px;
  border-radius: 12px;
  border: 1px solid var(--kit-line);
  cursor: pointer;
  font-weight: 500;
  line-height: 1.1;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease;
}
.creneau span small {
  font-size: 11px;
  font-weight: 400;
}
.creneau:hover:not(.is-pris) span {
  border-color: var(--kit-fg);
}
.creneau input:checked + span {
  background: var(--kit-fg);
  border-color: var(--kit-fg);
  color: var(--kit-bg);
}
.creneau.is-pris span {
  cursor: not-allowed;
  color: var(--kit-muted);
  background: repeating-linear-gradient(135deg, transparent 0 6px, var(--pierre) 6px 7px);
  text-decoration: line-through;
}
.champs-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 560px) {
  .champs-2 {
    grid-template-columns: 1fr;
  }
}
.erreur--bloc {
  font-weight: 600;
}

/* Confirmation */
.confirme {
  text-align: center;
  display: grid;
  justify-items: center;
  gap: 12px;
  padding: 12px 0;
  outline: none;
}
.confirme__sceau {
  width: 104px;
  height: 104px;
}
.confirme__cercle,
.confirme__coche {
  fill: none;
  stroke: var(--kit-accent);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.motion .confirme__cercle,
.motion .confirme__coche {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: tracer 0.9s var(--kit-ease) 0.15s forwards;
}
.motion .confirme__coche {
  animation-delay: 0.7s;
  animation-duration: 0.5s;
}
.confirme h3 {
  font-size: 30px;
}
.confirme__quand {
  font-family: var(--font-titre);
  font-size: 22px;
  line-height: 1.3;
}
.confirme > p:not(.confirme__quand) {
  color: var(--kit-muted);
  max-width: 30em;
}
.confirme .dialogue__actions {
  justify-content: center;
}

/* ---------- Fiche d'un bien ---------- */
.fil {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 14px;
  color: var(--kit-muted);
  padding: 24px 0 8px;
}
.fil a {
  color: var(--kit-muted);
  padding: 8px 0;
}
.fiche-tete {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 18px 40px;
  align-items: end;
  padding: 12px 0 28px;
}
.fiche-tete h1 {
  font-size: clamp(36px, 5.4vw, 78px);
  letter-spacing: -0.045em;
  line-height: 0.98;
  max-width: 14em;
}
.fiche-tete__lieu {
  margin-top: 14px;
  font-size: 17px;
  color: var(--kit-muted);
}
.fiche-tete__droite {
  text-align: right;
  display: grid;
  gap: 12px;
  justify-items: end;
}
.fiche-tete__prix {
  font-family: var(--font-titre);
  font-size: clamp(32px, 4vw, 54px);
  letter-spacing: -0.04em;
  line-height: 1;
}
.fiche-tete__m2 {
  font-size: 14px;
  color: var(--kit-muted);
}
.fiche-tete__actions {
  display: flex;
  gap: 8px;
}
.fiche-tete__actions .act {
  width: 52px;
  height: 52px;
}
@media (max-width: 760px) {
  .fiche-tete {
    grid-template-columns: 1fr;
  }
  .fiche-tete__droite {
    text-align: left;
    justify-items: start;
  }
}

/* Galerie en diaporama */
.galerie {
  position: relative;
}
.galerie__scene {
  position: relative;
  aspect-ratio: 480 / 300;
  border-radius: 24px;
  overflow: hidden;
  background: var(--pierre);
  touch-action: pan-y;
}
.galerie__diapo {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transform: scale(1.04);
  transition:
    opacity 0.7s ease,
    transform 1.2s var(--kit-ease),
    visibility 0s 0.7s;
}
.galerie__diapo.is-active {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition:
    opacity 0.7s ease,
    transform 1.2s var(--kit-ease),
    visibility 0s;
}
.galerie__diapo .ill {
  position: absolute;
  inset: 0;
}
.galerie__diapo .ill--plan {
  object-fit: contain;
}
.galerie__couche {
  position: absolute;
  inset: 0;
  transition: opacity 0.8s ease;
}
.galerie__couche.is-entree {
  opacity: 0;
}
.galerie__legende {
  position: absolute;
  left: 18px;
  bottom: 18px;
  padding: 8px 14px;
  border-radius: 999px;
  background: color-mix(in srgb, #14181b 70%, transparent);
  color: #f3f0e9;
  font-size: 13px;
  font-weight: 500;
  backdrop-filter: blur(8px);
  pointer-events: none;
}
.galerie__nav {
  position: absolute;
  right: 16px;
  bottom: 16px;
  display: flex;
  gap: 8px;
}
.galerie__nav .rond {
  background: color-mix(in srgb, var(--kit-surface) 90%, transparent);
  backdrop-filter: blur(8px);
}
.galerie__outils {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px 24px;
  margin-top: 14px;
}
.galerie__onglets {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.galerie__onglets button {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid var(--kit-line);
  background: none;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease;
}
.galerie__onglets button[aria-selected="true"] {
  background: var(--kit-fg);
  color: var(--kit-bg);
  border-color: var(--kit-fg);
}
.heure {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: min(380px, 100%);
  flex: 1;
  max-width: 460px;
}
.heure label {
  font-size: 14px;
  font-weight: 500;
  white-space: nowrap;
}
.heure output {
  font-family: var(--font-titre);
  font-size: 15px;
  font-variant-numeric: tabular-nums;
  min-width: 112px;
  text-align: right;
  color: var(--kit-muted);
}
.heure input[type="range"] {
  flex: 1;
}
.heure input[type="range"]::-webkit-slider-runnable-track {
  height: 6px;
  border-radius: 6px;
  background: linear-gradient(90deg, #0f1a2c, #4d6797 22%, #f6cba0 30%, #a9cbe3 45%, #a9cbe3 62%, #f3d3a4 74%, #f08b4d 84%, #2c3361 92%, #0f1a2c);
}
.heure input[type="range"]::-moz-range-track {
  height: 6px;
  border-radius: 6px;
  background: linear-gradient(90deg, #0f1a2c, #4d6797 22%, #f6cba0 30%, #a9cbe3 45%, #a9cbe3 62%, #f3d3a4 74%, #f08b4d 84%, #2c3361 92%, #0f1a2c);
}
.heure input[type="range"]::-webkit-slider-thumb {
  margin-top: -9px;
}
@media (max-width: 560px) {
  .galerie__scene {
    aspect-ratio: 4 / 3.4;
    border-radius: 18px;
  }
  .galerie__legende {
    display: none;
  }
  .heure {
    flex-wrap: wrap;
  }
  .heure input[type="range"] {
    flex-basis: 100%;
    order: 3;
  }
}

.fiche-grille {
  display: grid;
  grid-template-columns: 1fr 400px;
  gap: 56px;
  align-items: start;
  padding: 56px 0 40px;
}
.fiche-section + .fiche-section {
  margin-top: 64px;
}
.fiche-section > h2 {
  font-size: clamp(28px, 3.2vw, 40px);
  letter-spacing: -0.035em;
  margin-bottom: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--kit-fg);
}
.caracs {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-left: 1px solid var(--kit-line);
}
.caracs > div {
  padding: 18px 18px 18px 20px;
  border-right: 1px solid var(--kit-line);
  border-bottom: 1px solid var(--kit-line);
  display: flex;
  flex-direction: column-reverse;
  gap: 4px;
}
.caracs dd {
  margin: 0;
  font-family: var(--font-titre);
  font-size: clamp(30px, 3.2vw, 44px);
  letter-spacing: -0.05em;
  line-height: 1;
}
.caracs dd small {
  font-size: 0.45em;
  letter-spacing: 0;
  color: var(--kit-muted);
  margin-left: 4px;
}
.caracs dt {
  font-size: 13px;
  color: var(--kit-muted);
}
@media (max-width: 560px) {
  .caracs {
    grid-template-columns: 1fr 1fr;
  }
}
.fiche-desc {
  font-size: 19px;
  line-height: 1.65;
  max-width: 36em;
}
.atouts {
  list-style: none;
  padding: 0;
  margin: 24px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.atouts li {
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--pierre);
  font-size: 14px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.atouts li::before {
  content: "";
  width: 6px;
  height: 6px;
  background: var(--kit-accent);
  transform: rotate(45deg);
}

/* Étiquette DPE */
.dpe {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px 40px;
  align-items: center;
}
.dpe__barres {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 5px;
}
.dpe__barres li {
  display: flex;
  align-items: center;
  gap: 12px;
}
.dpe__barre {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 30px;
  padding: 0 12px;
  font-family: var(--font-titre);
  font-weight: 700;
  font-size: 15px;
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%);
  transform-origin: 0 50%;
}
.dpe__barre small {
  font-family: var(--font-texte);
  font-weight: 500;
  font-size: 11px;
  margin-right: 10px;
}
.dpe__barres li:not(.is-actif) .dpe__barre {
  background: color-mix(in srgb, var(--dpe) var(--dpe-mix, 40%), var(--kit-surface));
  color: var(--kit-fg);
}
:root[data-theme="dark"] {
  --dpe-mix: 30%;
}
.dpe__barres li.is-actif .dpe__barre {
  height: 40px;
  font-size: 20px;
}
.dpe__repere {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-titre);
  font-weight: 600;
  white-space: nowrap;
}
.dpe__repere::before {
  content: "";
  width: 0;
  height: 0;
  border: 8px solid transparent;
  border-right-color: var(--kit-fg);
  border-left: 0;
}
.motion .dpe.is-in .dpe__barre {
  animation: barre 0.8s var(--kit-ease) backwards;
}
.motion .dpe.is-in li:nth-child(2) .dpe__barre { animation-delay: 60ms; }
.motion .dpe.is-in li:nth-child(3) .dpe__barre { animation-delay: 120ms; }
.motion .dpe.is-in li:nth-child(4) .dpe__barre { animation-delay: 180ms; }
.motion .dpe.is-in li:nth-child(5) .dpe__barre { animation-delay: 240ms; }
.motion .dpe.is-in li:nth-child(6) .dpe__barre { animation-delay: 300ms; }
.motion .dpe.is-in li:nth-child(7) .dpe__barre { animation-delay: 360ms; }
@keyframes barre {
  from {
    transform: scaleX(0.2);
  }
}
.dpe__note {
  max-width: 15em;
  font-size: 14px;
  color: var(--kit-muted);
}
.dpe__note strong {
  display: block;
  font-family: var(--font-titre);
  font-size: 44px;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kit-fg);
  font-weight: 500;
  margin-bottom: 6px;
}
@media (max-width: 560px) {
  .dpe {
    grid-template-columns: 1fr;
  }
}

/* Simulateur de prêt */
.simu {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px 40px;
}
.simu__reglages {
  display: grid;
  gap: 18px;
}
.simu__reglage label,
.simu__reglage legend {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-weight: 500;
  font-size: 15px;
  padding: 0;
  width: 100%;
}
.simu__reglage output {
  font-family: var(--font-titre);
  font-variant-numeric: tabular-nums;
}
.simu__reglage {
  border: 0;
  margin: 0;
  padding: 0;
  min-width: 0;
}
.simu__durees {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin-top: 10px;
}
.simu__durees .puce span {
  width: 100%;
  min-height: 44px;
}
.simu__resultat {
  padding: 28px;
  border-radius: 22px;
  background: var(--kit-fg);
  color: var(--kit-bg);
  display: grid;
  gap: 18px;
  align-content: start;
}
.simu__mensu {
  font-family: var(--font-titre);
  font-size: clamp(44px, 5vw, 64px);
  letter-spacing: -0.05em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.simu__mensu small {
  display: block;
  font-size: 15px;
  letter-spacing: 0;
  opacity: 0.75;
  margin-top: 8px;
}
.simu__etiquette {
  font-size: 13px;
  opacity: 0.8;
  margin-bottom: 6px;
}
.simu__barre {
  display: flex;
  height: 10px;
  border-radius: 6px;
  overflow: hidden;
  background: color-mix(in srgb, var(--kit-bg) 25%, transparent);
}
.simu__barre span {
  transition: flex-grow 0.6s var(--kit-ease);
}
.simu__barre .b-capital {
  background: var(--kit-bg);
}
.simu__barre .b-interets {
  background: #e6a26e;
}
.simu__barre .b-notaire {
  background: color-mix(in srgb, var(--kit-bg) 45%, transparent);
}
.simu__details {
  margin: 0;
  display: grid;
  gap: 8px;
  font-size: 14px;
}
.simu__details div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--kit-bg) 18%, transparent);
}
.simu__details dt {
  display: flex;
  align-items: center;
  gap: 8px;
  opacity: 0.85;
}
.simu__details dd {
  margin: 0;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.pt {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex: none;
}
.pt-capital {
  background: var(--kit-bg);
}
.pt-interets {
  background: #e6a26e;
}
.pt-notaire {
  background: color-mix(in srgb, var(--kit-bg) 45%, transparent);
}
.simu__note {
  font-size: 12px;
  opacity: 0.75;
}
@media (max-width: 760px) {
  .simu {
    grid-template-columns: 1fr;
  }
}

/* Plan seul */
.ill--plan {
  height: auto;
}
.plan-fond {
  fill: var(--p-fond);
}
.plan-grille {
  stroke: var(--p-grille);
  stroke-width: 0.6;
}
.plan-piece {
  fill: var(--p-piece);
}
.plan-piece--jour {
  fill: var(--p-jour);
}
.plan-piece--couloir {
  fill: var(--p-piece);
}
.plan-mur-int {
  fill: none;
  stroke: var(--p-mur);
  stroke-width: 2;
}
.plan-mur-ext {
  fill: none;
  stroke: var(--p-mur);
  stroke-width: 6;
}
.plan-ouverture {
  stroke: var(--p-piece);
  stroke-width: 4;
}
.plan-porte {
  fill: none;
  stroke: var(--p-mur);
  stroke-width: 1;
}
.plan-fenetre {
  fill: var(--p-piece);
  stroke: var(--p-mur);
  stroke-width: 1;
}
.plan-meuble {
  fill: none;
  stroke: var(--p-meuble);
  stroke-width: 1;
}
.plan-nom {
  font-size: 11px;
  font-weight: 600;
  fill: var(--p-mur);
}
.plan-m2 {
  font-size: 10px;
  fill: var(--p-mur);
  opacity: 0.75;
}
.plan-cote {
  stroke: var(--p-cote);
  stroke-width: 1;
  fill: none;
}
.plan-cote-txt {
  font-size: 10px;
  fill: var(--p-cote);
}
.plan-titre {
  font-size: 11px;
  letter-spacing: 2px;
  fill: var(--p-mur);
}
.plan-nord {
  fill: var(--p-cote);
}
.plan-echelle {
  fill: var(--p-mur);
}
.plan-echelle-vide {
  fill: var(--p-piece);
}
.plan-entree {
  fill: #c0643a;
}
.galerie__diapo--plan {
  background: var(--p-fond);
  display: grid;
  place-items: center;
}
.galerie__diapo--plan .ill--plan {
  position: static;
  width: 100%;
  height: 100%;
}

/* Colonne de droite : conseiller et visite */
.aside-fiche {
  position: sticky;
  top: 84px;
  display: grid;
  gap: 16px;
}
.conseiller {
  padding: 24px;
  border-radius: 22px;
  border: 1px solid var(--kit-line);
  background: var(--kit-surface);
  display: grid;
  gap: 16px;
}
.conseiller__id {
  display: flex;
  gap: 14px;
  align-items: center;
}
.conseiller__id .portrait {
  width: 64px;
  height: 76px;
  margin: 0;
  border-radius: 12px;
}
.conseiller__nom {
  font-family: var(--font-titre);
  font-weight: 500;
  font-size: 20px;
  line-height: 1.15;
}
.conseiller__role {
  font-size: 13px;
  color: var(--kit-muted);
}
.conseiller__tel {
  font-weight: 600;
  font-size: 15px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
.visite-prevue {
  padding: 16px 18px;
  border-radius: 16px;
  background: var(--accent-doux);
  display: grid;
  gap: 6px;
  font-size: 14px;
}
.visite-prevue strong {
  font-family: var(--font-titre);
  font-size: 17px;
  font-weight: 500;
}
.visite-prevue .lien-btn {
  justify-self: start;
  padding-left: 0;
}
@media (max-width: 1023px) {
  .fiche-grille {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .aside-fiche {
    position: static;
  }
}
.similaires {
  padding-block: 40px 64px;
}
.similaires h2 {
  font-size: clamp(28px, 3.2vw, 40px);
  letter-spacing: -0.035em;
  margin-bottom: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--kit-fg);
}
.fiche-introuvable {
  padding: 80px var(--gouttiere);
  display: grid;
  gap: 20px;
  justify-items: start;
}

/* ---------- Mon espace ---------- */
.sommaire {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 28px;
}
.sommaire a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 0 8px 0 18px;
  border-radius: 999px;
  border: 1px solid var(--kit-line);
  text-decoration: none;
  font-weight: 500;
  font-size: 15px;
  transition: border-color 0.25s ease;
}
.sommaire a:hover {
  border-color: var(--kit-fg);
}
.sommaire span {
  display: inline-grid;
  place-items: center;
  min-width: 30px;
  height: 30px;
  padding: 0 8px;
  border-radius: 999px;
  background: var(--pierre);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.bloc-espace {
  padding-block: 32px;
  scroll-margin-top: 80px;
}
.bloc-espace__tete {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--kit-fg);
  margin-bottom: 24px;
}
.bloc-espace .titre-section {
  font-size: clamp(28px, 3.4vw, 44px);
}
.bloc-espace--effacer {
  padding-bottom: 72px;
}
.bloc-espace--effacer .titre-section {
  padding-top: 16px;
  border-top: 1px solid var(--kit-fg);
}
.bloc-espace--effacer p {
  margin: 14px 0 22px;
  color: var(--kit-muted);
  max-width: 40em;
}
.retrait {
  transition:
    opacity 0.35s ease,
    transform 0.45s var(--kit-ease);
}
.retrait.is-sortie {
  opacity: 0;
  transform: scale(0.96);
}
.visites,
.estimations {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 14px;
}
.visite-ligne {
  display: grid;
  grid-template-columns: 150px 1fr auto;
  gap: 22px;
  align-items: center;
  padding: 14px;
  border: 1px solid var(--kit-line);
  border-radius: 20px;
  background: var(--kit-surface);
}
.visite-ligne__visuel {
  display: block;
  aspect-ratio: 480 / 340;
  border-radius: 12px;
  overflow: hidden;
}
.visite-ligne__quand {
  font-family: var(--font-titre);
  font-size: 22px;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
.visite-ligne__bien {
  font-weight: 500;
}
.visite-ligne__meta {
  font-size: 14px;
  color: var(--kit-muted);
}
.visite-ligne__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
@media (max-width: 760px) {
  .visite-ligne {
    grid-template-columns: 96px 1fr;
    gap: 14px;
  }
  .visite-ligne__actions {
    grid-column: 1 / -1;
  }
  .visite-ligne__actions .btn {
    flex: 1;
  }
}
.estim-ligne {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px 22px;
  border: 1px solid var(--kit-line);
  border-radius: 18px;
  background: var(--kit-surface);
}
.estim-ligne__fourchette {
  font-family: var(--font-titre);
  font-size: 22px;
  letter-spacing: -0.02em;
}
.estim-ligne__detail {
  font-size: 14px;
  color: var(--kit-muted);
}

/* ---------- Estimation ---------- */
.estim {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  gap: clamp(32px, 5vw, 80px);
  padding-block: clamp(32px, 6vw, 72px) 80px;
  align-items: start;
}
.estim__intro .note-discrete {
  margin-top: 18px;
  max-width: 34em;
}
.estim__carte {
  position: relative;
  border: 1px solid var(--kit-line);
  border-radius: 26px;
  background: var(--kit-surface);
  overflow: hidden;
  box-shadow: var(--ombre);
}
.estim__progres {
  height: 3px;
  background: var(--kit-line);
}
.estim__progres span {
  display: block;
  height: 100%;
  background: var(--kit-accent);
  transform-origin: 0 50%;
  transform: scaleX(0.16);
  transition: transform 0.6s var(--kit-ease);
}
.estim__etape-num {
  padding: 22px 32px 0;
  font-family: var(--font-titre);
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--kit-muted);
}
.estim__form {
  overflow: hidden;
}
.estim__rail {
  display: flex;
  align-items: flex-start;
  transition:
    transform 0.6s var(--kit-ease),
    height 0.5s var(--kit-ease);
}
.etape {
  flex: 0 0 100%;
  min-width: 0;
  padding: 14px 32px 32px;
  display: grid;
  gap: 22px;
  transition: opacity 0.45s ease;
}
.etape[inert] {
  opacity: 0;
}
.etape h2 {
  font-size: clamp(28px, 3vw, 38px);
  letter-spacing: -0.035em;
  outline: none;
}
.etape__aide {
  color: var(--kit-muted);
  font-size: 15px;
  margin-top: -10px;
}
.etape fieldset {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.choix-grille {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
}
.choix span {
  display: grid;
  gap: 8px;
  align-content: start;
  min-height: 56px;
  height: 100%;
  padding: 16px;
  border-radius: 16px;
  border: 1px solid var(--kit-line);
  cursor: pointer;
  font-weight: 500;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease,
    transform 0.3s var(--kit-ease);
}
.choix span small {
  font-weight: 400;
  font-size: 13px;
  color: var(--kit-muted);
}
.choix svg {
  width: 44px;
  height: 36px;
}
.choix svg * {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linejoin: round;
}
.choix:hover span {
  border-color: var(--kit-fg);
}
.choix input:checked + span {
  border-color: var(--kit-accent);
  background: var(--accent-doux);
  box-shadow: inset 0 0 0 1px var(--kit-accent);
}
.etape__actions {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding-top: 8px;
}
.etape__actions .btn--plein {
  margin-left: auto;
}
.surface-champ {
  display: grid;
  grid-template-columns: 1fr 120px;
  gap: 16px;
  align-items: center;
}
.surface-champ input[type="number"] {
  font-family: var(--font-titre);
  font-size: 20px;
  text-align: right;
}
.grand-nombre {
  font-family: var(--font-titre);
  font-size: 64px;
  letter-spacing: -0.05em;
  line-height: 1;
}
.grand-nombre small {
  font-size: 0.35em;
  letter-spacing: 0;
  color: var(--kit-muted);
}
.resultat {
  display: grid;
  gap: 20px;
}
.fourchette {
  padding: 28px 0 8px;
}
.fourchette__piste {
  position: relative;
  height: 4px;
  background: var(--kit-line);
  border-radius: 4px;
  margin: 84px 0 36px;
}
.fourchette__plage {
  position: absolute;
  top: -6px;
  bottom: -6px;
  left: 18%;
  right: 18%;
  border-radius: 8px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--kit-accent) 55%, transparent), var(--kit-accent), color-mix(in srgb, var(--kit-accent) 55%, transparent));
}
.motion .fourchette.is-anime .fourchette__plage {
  animation: plage-estim 1.6s var(--kit-ease) 0.2s backwards;
}
@keyframes plage-estim {
  from {
    left: 50%;
    right: 50%;
  }
}
.fourchette__centre {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 14px);
  translate: -50% 0;
  font-family: var(--font-titre);
  font-size: clamp(34px, 4vw, 50px);
  letter-spacing: -0.05em;
  line-height: 1;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.fourchette__centre::after {
  content: "";
  position: absolute;
  left: 50%;
  top: calc(100% + 4px);
  width: 1px;
  height: 14px;
  background: var(--kit-fg);
}
.fourchette__bornes {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-variant-numeric: tabular-nums;
}
.fourchette__bornes span {
  display: grid;
  font-family: var(--font-titre);
  font-size: 20px;
}
.fourchette__bornes small {
  font-family: var(--font-texte);
  font-size: 12px;
  color: var(--kit-muted);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.fourchette__bornes span:last-child {
  text-align: right;
}
.calcul {
  margin: 0;
  padding: 18px 20px;
  border-radius: 16px;
  background: var(--pierre);
  font-size: 14px;
  display: grid;
  gap: 6px;
}
.calcul div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.calcul dt {
  color: var(--kit-muted);
}
.calcul dd {
  margin: 0;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.resultat__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
@media (max-width: 899px) {
  .estim {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .etape {
    padding: 12px 18px 24px;
  }
  .estim__etape-num {
    padding: 18px 18px 0;
  }
  .choix-grille {
    grid-template-columns: 1fr 1fr;
  }
  .grand-nombre {
    font-size: 48px;
  }
}

/* ---------- 404 ---------- */
.introuvable {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: center;
  padding-block: clamp(40px, 8vw, 110px);
}
.introuvable__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}
.plan-404 {
  width: 100%;
  height: auto;
  border-radius: 24px;
  display: block;
}
.p4-fond {
  fill: var(--p-fond);
}
.p4-grille line {
  stroke: var(--p-grille);
}
.p4-lot {
  fill: none;
  stroke: var(--p-mur);
  stroke-width: 2;
  stroke-dasharray: 10 6;
}
.p4-piquets circle {
  fill: var(--terre);
}
.p4-cote {
  fill: none;
  stroke: var(--p-cote);
}
.p4-txt,
.p4-titre {
  font-family: var(--font-titre);
  font-size: 12px;
  letter-spacing: 0.14em;
  fill: var(--p-cote);
}
.p4-titre {
  fill: var(--p-mur);
}
.p4-panneau rect {
  fill: var(--kit-accent);
}
.p4-panneau text {
  font-family: var(--font-titre);
  font-size: 34px;
  font-weight: 600;
  fill: var(--accent-ink);
}
.p4-panneau line {
  stroke: var(--p-mur);
  stroke-width: 3;
}
.motion .p4-panneau {
  transform-box: fill-box;
  transform-origin: 50% 100%;
  animation: panneau 3.4s ease-in-out infinite;
}
@keyframes panneau {
  50% {
    transform: rotate(-3deg);
  }
}
@media (max-width: 899px) {
  .introuvable {
    grid-template-columns: 1fr;
  }
}
.estim__form {
  transition: height 0.5s var(--kit-ease);
}
@media (max-width: 560px) {
  .cmp__table thead td,
  .cmp__table tbody th {
    width: 108px;
  }
}
