/* ========================================================================
   SAAFKA Conseiller Template: style.css
   Spec: docs/superpowers/specs/2026-05-28-saafka-template-design.md
   Rules: §8.7.5 AI-slop kill list (binding), §8.2 motion budget,
          §8.7.1 OKLCH palette, §8.7.2 spacing, §8.7.3 type
   ======================================================================== */

/* ───── Tokens (§8.7.1 / 8.7.2 / 8.7.3 / 8.1) ───── */
:root {
  /* Brand blue ramp: SAAFKA brand lock (source of truth: references/) */
  --brand-700:  #1D4ED8;   /* primary hover (darker) */
  --brand-600:  #2563EB;   /* PRIMARY: CTAs, logo, liens forts, accents */
  --brand-press:#1E40AF;   /* primary press */
  --brand-200:  #DBEAFE;   /* surface: light blue fields, card tints, borders */
  --brand-50:   #EEF4FF;   /* very light blue: subtle section backgrounds */
  --surface-green: #DCF7E2; /* soft mint tint: green section backgrounds (W/B/G rotation) */

  /* Secondary: SAAFKA mint (signature accent, e.g. the hero badge) */
  --secondary:       #B1FFBA;
  --secondary-press: #9DF4A8;

  /* Titles #020713 · Text #212B41 · muted = text at lower opacity (blue-tinted, never raw grey) */
  --ink-950:    #020713;   /* titles H1→H6 */
  --ink-800:    #111A2E;
  --ink-700:    #212B41;   /* body text */
  --ink-500:    #6A7286;   /* muted (~60%): ledes, captions */
  --ink-400:    #99A0AE;   /* subtle (~45%) */
  --ink-300:    #CCD2DC;   /* dividers / light border */
  --ink-200:    #E3E7EE;   /* borders */
  --ink-100:    #F1F4FA;   /* very light surface */
  --paper:      #FFFFFF;
  --canvas:     #FFFFFF;

  /* Functional: SAAFKA exact */
  --success:    #79F083;
  --warning:    #FDCC62;
  --danger:     #FF6875;

  /* Spacing scale */
  --s-1:  4px;
  --s-2:  8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 24px;
  --s-6: 32px;
  --s-7: 48px;
  --s-8: 64px;
  --s-9: 96px;
  --s-10: 128px;

  /* Radii */
  --r-1: 6px;
  --r-2: 10px;
  --r-3: 14px;
  --r-4: 20px;
  --r-5: 28px;
  --r-pill: 999px;

  /* Shadows: SAAFKA: light, border-first elevation (no heavy drop shadows) */
  --sh-1: 0 1px 2px rgba(2,7,19,0.04), 0 1px 1px rgba(2,7,19,0.04);
  --sh-2: 0 4px 12px rgba(2,7,19,0.06);
  --sh-3: 0 12px 32px rgba(2,7,19,0.08);
  --sh-focus: 0 0 0 4px rgba(37,99,235,0.20);

  /* Typography */
  --font-sans: 'Commissioner', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --t-display: clamp(40px, 5vw, 72px);
  --t-h1:      clamp(32px, 4vw, 56px);
  --t-h2:      clamp(26px, 3vw, 40px);
  --t-h3:      clamp(20px, 2vw, 28px);
  --t-lead:    19px;
  --t-body:    16px;
  --t-small:   14px;
  --t-eyebrow: 12px;

  /* Easings: never ease-in */
  --ease-out:    cubic-bezier(0.23, 1,    0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0,    0.175, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0,     1);

  /* Container */
  --container: 1200px;
  --gutter-x: var(--s-6);
}

/* ───── Base reset ───── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--font-sans);
  font-size: var(--t-body);
  line-height: 1.6;
  color: var(--ink-700);
  background: var(--canvas);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; border: 0; background: transparent; }
a { color: var(--brand-600); text-decoration: none; transition: color 160ms var(--ease-out); }
a:hover { color: var(--brand-700); }
ul, ol { list-style: none; }
:focus-visible { outline: 2px solid var(--brand-600); outline-offset: 2px; border-radius: var(--r-1); }

/* ───── Layout primitives ───── */
.container { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter-x); }
.section { padding-block: var(--s-9); }
.section--canvas { background: var(--ink-100); }
.section--paper { background: var(--paper); }
.section--brand-50 { background: var(--brand-50); }
.section--blue  { background: var(--brand-200); }      /* #DBEAFE: blue in the rotation */
.section--green { background: var(--surface-green); }  /* soft mint: green in the rotation */
.measure { max-width: 65ch; }

/* ───── Typography utilities ───── */
.eyebrow {
  display: inline-flex; align-items: center; gap: var(--s-2);
  font-size: var(--t-eyebrow); font-weight: 700; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--brand-600);
  background: var(--paper); padding: var(--s-2) var(--s-4); border-radius: var(--r-pill);
  box-shadow: var(--sh-1);
}
.h1, .h2, .h3 { color: var(--ink-950); font-weight: 800; letter-spacing: -0.04em; line-height: 1.05; }
.h1 { font-size: var(--t-h1); }
.h2 { font-size: var(--t-h2); }
.h3 { font-size: var(--t-h3); font-weight: 700; letter-spacing: -0.03em; line-height: 1.2; }
.lede { font-size: var(--t-lead); color: var(--ink-500); margin-top: var(--s-3); line-height: 1.5; }
.num { font-weight: 800; color: var(--ink-950); font-variant-numeric: tabular-nums; }

/* ───── Buttons (§8.2 press feedback mandatory) ───── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
  padding: var(--s-3) var(--s-5);
  border-radius: var(--r-pill);
  font-weight: 600; font-size: var(--t-small);
  background: var(--ink-950); color: var(--paper);
  transition: transform 120ms var(--ease-out), background-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
  will-change: transform;
}
.btn--primary { background: var(--brand-600); color: var(--paper); }
.btn--primary:hover { background: var(--brand-700); }
.btn--ghost { background: transparent; color: var(--ink-950); box-shadow: inset 0 0 0 1px var(--ink-200); }
.btn--ghost:hover { background: var(--ink-100); }
.btn--lg { padding: var(--s-4) var(--s-6); font-size: var(--t-body); }
.btn--sm { padding: var(--s-2) var(--s-4); font-size: var(--t-eyebrow); letter-spacing: 0.04em; }
.btn:active { transform: scale(0.97); }
.btn .icon { width: 16px; height: 16px; }

/* ───── Icons ───── */
.icon { width: 18px; height: 18px; flex-shrink: 0; stroke-width: 1.5; }
.icon--sm { width: 14px; height: 14px; }
.icon--lg { width: 24px; height: 24px; }

/* ───── Chips ───── */
.chip {
  display: inline-flex; align-items: center; gap: var(--s-2);
  padding: var(--s-2) var(--s-3); border-radius: var(--r-pill);
  font-size: var(--t-small); font-weight: 500; color: var(--ink-700);
  background: var(--ink-100); border: 1px solid var(--ink-200);
}
.chip--brand { background: var(--brand-50); color: var(--brand-700); border-color: var(--brand-200); }
.chip-row { display: flex; flex-wrap: wrap; gap: var(--s-2); }

/* ═════════════════════════════════════════════════════════════════
   Section 1: Header
   ═════════════════════════════════════════════════════════════════ */
.header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,0.85);
  backdrop-filter: saturate(180%) blur(8px);
  -webkit-backdrop-filter: saturate(180%) blur(8px);
  border-bottom: 1px solid transparent;
  transition: padding 200ms var(--ease-out), border-color 200ms var(--ease-out);
}
.header__inner {
  max-width: var(--container); margin-inline: auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--s-5) var(--gutter-x);
  transition: padding 200ms var(--ease-out);
}
.header.is-stuck { border-bottom-color: var(--ink-200); }
.header.is-stuck .header__inner { padding-block: var(--s-3); }
.header.is-stuck .header__logo { transform: scale(0.92); }
.header__brand { display: flex; align-items: center; gap: var(--s-3); }
.header__logo {
  height: 28px; width: auto;
  transition: transform 200ms var(--ease-out);
  transform-origin: left center;
}
.header__nav { display: flex; align-items: center; gap: var(--s-6); }
.header__nav a {
  color: var(--ink-700); font-size: var(--t-small); font-weight: 500;
}
.header__nav a:hover { color: var(--ink-950); }
.header__cta { display: flex; gap: var(--s-3); }
@media (max-width: 880px) {
  .header__nav { display: none; }
}

/* ═════════════════════════════════════════════════════════════════
   Section 2: Hero (type-led, no floating shapes)
   ═════════════════════════════════════════════════════════════════ */
.hero {
  padding-block: var(--s-9) clamp(180px, 22vw, 320px);
  background: var(--canvas);
  text-align: center; position: relative;
  overflow: clip; isolation: isolate;
}
/* ── Hero signature: flat-geometric SAAFKA Casablanca skyline as a bottom band ── */
.hero__skyline {
  position: absolute; left: 0; right: 0; bottom: 0;
  width: 100%; height: clamp(150px, 20vw, 280px);
  object-fit: cover; object-position: center bottom;
  z-index: 0; pointer-events: none; user-select: none;
  animation: skyline-rise 800ms var(--ease-out) 150ms both;
}
@keyframes skyline-rise {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero__inner { max-width: 980px; margin-inline: auto; padding-inline: var(--gutter-x); position: relative; z-index: 1; }
.hero__eyebrow {
  margin-bottom: var(--s-5);
  background: var(--secondary); color: var(--ink-950); box-shadow: none;
}
.hero__title {
  font-size: clamp(40px, 5vw, 72px); font-weight: 800;
  color: var(--ink-950); letter-spacing: -0.04em; line-height: 1.03;
  max-width: 16ch; margin-inline: auto;
  text-wrap: balance;
}
.accent { color: var(--brand-600); }
.hero__tagline {
  margin: var(--s-4) auto 0;
  font-size: 16px;
  font-weight: 500;
  color: var(--brand-600);
  letter-spacing: -0.01em;
  font-style: italic;
}
.hero__cta {
  margin-top: var(--s-7);
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: center;
  gap: var(--s-3);
}
.hero__intents {
  margin-top: var(--s-7);
  display: inline-flex; gap: var(--s-1);
  padding: var(--s-1); background: var(--paper);
  border-radius: var(--r-pill); box-shadow: var(--sh-2);
}
.hero__intent {
  padding: var(--s-3) var(--s-5); border-radius: var(--r-pill);
  font-size: var(--t-small); font-weight: 600; color: var(--ink-700);
  transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), transform 120ms var(--ease-out);
}
.hero__intent:hover { background: var(--ink-100); }
.hero__intent:active { transform: scale(0.97); }
.hero__intent.is-active { background: var(--brand-600); color: var(--paper); }
.hero__search {
  margin: var(--s-6) auto 0; max-width: 720px;
  display: flex; align-items: center; gap: var(--s-3);
  padding: var(--s-2) var(--s-2) var(--s-2) var(--s-5);
  background: var(--paper); border-radius: var(--r-pill);
  box-shadow: var(--sh-3);
}
.hero__search input {
  flex: 1; border: 0; outline: 0; font-size: var(--t-body); color: var(--ink-950);
  background: transparent; min-width: 0;
}
.hero__search input::placeholder { color: var(--ink-400); }
.hero__trending {
  margin-top: var(--s-5); display: flex; flex-wrap: wrap;
  align-items: center; justify-content: center; gap: var(--s-2);
  font-size: var(--t-small); color: var(--ink-500);
}

/* ═════════════════════════════════════════════════════════════════
   Property card + asymmetric grid (§3 Mes biens, §4 Réseau)
   ═════════════════════════════════════════════════════════════════ */
.grid-asym {
  display: grid; gap: var(--s-5);
  grid-template-columns: repeat(3, 1fr);
}
.grid-asym__feature,
.grid-asym__item    { grid-column: span 1; }
@media (max-width: 880px) {
  .grid-asym { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .grid-asym { grid-template-columns: 1fr; }
}

.property {
  background: var(--paper); border-radius: var(--r-5);
  overflow: hidden; box-shadow: var(--sh-1);
  transition: transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out);
  display: flex; flex-direction: column;
}
@media (hover: hover) and (pointer: fine) {
  .property:hover { transform: translateY(-2px); box-shadow: var(--sh-3); }
}
.property__media {
  position: relative; aspect-ratio: 4 / 3; background: var(--ink-100);
  overflow: hidden;
}
.property__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 600ms var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .property:hover .property__media img { transform: scale(1.05); }
}
.property__badge {
  position: absolute; top: var(--s-3); left: var(--s-3);
  background: var(--ink-950); color: var(--paper);
  padding: var(--s-1) var(--s-3); border-radius: var(--r-pill);
  font-size: 11px; font-weight: 600; letter-spacing: 0.04em;
  display: inline-flex; align-items: center; gap: var(--s-1);
}
.property__badge--brand { background: var(--brand-600); }
.property__badge--louer { background: var(--success); }
.property__meta-text { font-size: var(--t-small); color: var(--ink-500); margin-top: auto; }
.property__fav {
  position: absolute; top: var(--s-3); right: var(--s-3);
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(255,255,255,0.92);
  display: grid; place-items: center; color: var(--ink-700);
  transition: transform 120ms var(--ease-out), background-color 160ms var(--ease-out);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
}
.property__fav:hover { background: var(--paper); color: var(--danger); }
.property__fav:active { transform: scale(0.92); }
.property__body { padding: var(--s-5); display: flex; flex-direction: column; gap: var(--s-3); flex: 1; }
.property__type { font-size: var(--t-eyebrow); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-500); }
.property__title { font-size: var(--t-h3); font-weight: 700; color: var(--ink-950); letter-spacing: -0.01em; line-height: 1.25; }
.property__price { font-size: 22px; font-weight: 800; color: var(--ink-950); }
.property__meta { display: flex; flex-wrap: wrap; gap: var(--s-4); font-size: var(--t-small); color: var(--ink-500); margin-top: auto; }
.property__meta span { display: inline-flex; align-items: center; gap: var(--s-2); }
.property__advisor {
  display: flex; align-items: center; gap: var(--s-2);
  padding-top: var(--s-3); border-top: 1px solid var(--ink-100);
  font-size: var(--t-small); color: var(--ink-700);
}
.property__avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--brand-200); color: var(--brand-700);
  display: grid; place-items: center; font-size: 11px; font-weight: 700;
}

.empty-state {
  background: var(--paper); border: 1px dashed var(--ink-200);
  border-radius: var(--r-5); padding: var(--s-7) var(--s-5);
  text-align: center; color: var(--ink-500);
  grid-column: 1 / -1;
}
.empty-state .h3 { color: var(--ink-700); margin-bottom: var(--s-3); }

/* ───── Section head with right-aligned CTA ───── */
.section-head {
  display: flex; align-items: end; justify-content: space-between;
  gap: var(--s-6); flex-wrap: wrap;
}
.section-head__cta {
  display: inline-flex; align-items: center; gap: var(--s-2);
  font-weight: 600; font-size: var(--t-small); color: var(--brand-600);
  white-space: nowrap;
  transition: gap 200ms var(--ease-out), color 160ms var(--ease-out);
}
.section-head__cta:hover { color: var(--brand-700); gap: var(--s-3); }
.section-head__cta .icon { transition: transform 200ms var(--ease-out); }
.section-head__cta:hover .icon { transform: translateX(2px); }

/* ───── Stat tiles (§7): exemple.html-style 4-tile grid ───── */
.stats-tiles {
  display: grid; gap: var(--s-4);
  grid-template-columns: repeat(4, 1fr);
}
@media (max-width: 768px) {
  .stats-tiles { grid-template-columns: repeat(2, 1fr); }
}
.stat-tile {
  background: var(--paper); border-radius: var(--r-4);
  padding: var(--s-6) var(--s-5);
  text-align: center;
  box-shadow: var(--sh-1);
  transition: transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .stat-tile:hover { transform: translateY(-2px); box-shadow: var(--sh-2); }
}
.stat-tile__num {
  font-size: clamp(32px, 3.5vw, 44px);
  font-weight: 800;
  color: var(--brand-600);
  letter-spacing: -0.02em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.stat-tile__label {
  margin-top: var(--s-3);
  font-size: var(--t-small);
  color: var(--ink-500);
  font-weight: 500;
}

/* ═════════════════════════════════════════════════════════════════
   Section 5: Profil (editorial 2-col, portrait + bio)
   ═════════════════════════════════════════════════════════════════ */
.profil {
  display: grid; gap: var(--s-8);
  grid-template-columns: minmax(320px, 420px) 1fr;
  align-items: center;
}
.profil__portrait {
  border-radius: var(--r-5); overflow: hidden;
  aspect-ratio: 1; background: var(--ink-100);
  box-shadow: var(--sh-2);
}
.profil__portrait img { width: 100%; height: 100%; object-fit: cover; }
.profil__body { padding-top: var(--s-3); }
.profil__name { margin-bottom: var(--s-3); }
.profil__role { color: var(--ink-500); font-size: var(--t-lead); margin-bottom: var(--s-6); }
.profil__bio { max-width: 65ch; }
.profil__bio p { margin-bottom: var(--s-4); }
.profil__meta { margin-top: var(--s-6); display: flex; flex-wrap: wrap; gap: var(--s-3); }
@media (max-width: 768px) {
  .profil { grid-template-columns: 1fr; }
  .profil__portrait { max-width: 340px; }
}

/* ═════════════════════════════════════════════════════════════════
   Section 6: Expertise (pure typography)
   ═════════════════════════════════════════════════════════════════ */
.expertise { max-width: 760px; }
.expertise .h2 { margin-bottom: var(--s-5); }
.expertise p { font-size: var(--t-lead); color: var(--ink-700); }
.expertise p + p { margin-top: var(--s-4); }
.expertise .cta-inline {
  margin-top: var(--s-6); display: inline-flex; align-items: center; gap: var(--s-2);
  font-weight: 600;
}

/* ═════════════════════════════════════════════════════════════════
   Section 7: Stats (editorial prose, NOT metric tiles)
   ═════════════════════════════════════════════════════════════════ */
.stats-prose {
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.4;
  color: var(--ink-700);
  font-weight: 400;
  max-width: 880px;
  letter-spacing: -0.01em;
}
.stats-prose .num {
  color: var(--brand-600);
  font-weight: 800;
  white-space: nowrap;
}

/* ═════════════════════════════════════════════════════════════════
   Section 8: vs-Agence (two-col editorial, NOT 4 identical cards)
   ═════════════════════════════════════════════════════════════════ */
.vs {
  display: grid; gap: var(--s-1);
  grid-template-columns: 1fr 1fr;
  border-radius: var(--r-5); overflow: hidden;
  box-shadow: var(--sh-2);
}
.vs__col { padding: var(--s-7) var(--s-6); }
.vs__col--legacy { background: var(--ink-100); color: var(--ink-500); }
.vs__col--saafka { background: var(--brand-600); color: var(--paper); }
.vs__col h3 {
  font-size: var(--t-h3); font-weight: 700; margin-bottom: var(--s-5);
  letter-spacing: -0.015em;
}
.vs__col--saafka h3 { color: var(--paper); }
.vs__list { display: flex; flex-direction: column; gap: var(--s-4); }
.vs__list li {
  display: flex; gap: var(--s-3); align-items: start;
  font-size: var(--t-body); line-height: 1.5;
}
.vs__col--legacy .vs__list li::before {
  content: ""; width: 16px; height: 16px; flex-shrink: 0; margin-top: 4px;
  background: currentColor; opacity: 0.45;
  mask: url('/icons.svg#x') center / contain no-repeat;
}
.vs__col--legacy .vs__list li {
  position: relative; padding-left: var(--s-5);
}
.vs__col--legacy .vs__list li::before {
  position: absolute; left: 0; top: 6px;
  content: "·"; font-size: 24px; line-height: 0.5; background: none; mask: none; opacity: 0.6;
}
.vs__col--saafka .vs__list li {
  position: relative; padding-left: var(--s-6);
}
.vs__col--saafka .vs__list li::before {
  content: ""; position: absolute; left: 0; top: 5px;
  width: 18px; height: 18px;
  background: currentColor;
  mask: url('/icons.svg#check') center / contain no-repeat;
  -webkit-mask: url('/icons.svg#check') center / contain no-repeat;
}
@media (max-width: 768px) {
  .vs { grid-template-columns: 1fr; }
}

/* ═════════════════════════════════════════════════════════════════
   Section 9: Blog
   ═════════════════════════════════════════════════════════════════ */
.blog-grid {
  display: grid; gap: var(--s-5);
  grid-template-columns: 1.5fr 1fr 1fr;
}
@media (max-width: 1024px) { .blog-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px)  { .blog-grid { grid-template-columns: 1fr; } }

.article {
  background: var(--paper); border-radius: var(--r-5);
  overflow: hidden; box-shadow: var(--sh-1);
  display: flex; flex-direction: column;
  transition: transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .article:hover { transform: translateY(-2px); box-shadow: var(--sh-3); }
}
.article__media {
  aspect-ratio: 16 / 10; background: var(--ink-100); overflow: hidden;
}
.article__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 600ms var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .article:hover .article__media img { transform: scale(1.05); }
}
.article__body { padding: var(--s-5); display: flex; flex-direction: column; gap: var(--s-3); flex: 1; }
.article__cat { font-size: var(--t-eyebrow); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--brand-600); }
.article__title { font-size: var(--t-h3); font-weight: 700; color: var(--ink-950); line-height: 1.25; letter-spacing: -0.01em; }
.article__excerpt { color: var(--ink-500); font-size: var(--t-small); }
.article__byline {
  margin-top: auto; padding-top: var(--s-3); border-top: 1px solid var(--ink-100);
  font-size: var(--t-small); color: var(--ink-500);
}

/* ═════════════════════════════════════════════════════════════════
   Section 10: FAQ (grid-row animation trick)
   ═════════════════════════════════════════════════════════════════ */
.faq { max-width: 820px; margin-inline: auto; }
.faq details {
  border-bottom: 1px solid var(--ink-200);
  padding: var(--s-5) 0;
}
.faq details:first-of-type { border-top: 1px solid var(--ink-200); }
.faq summary {
  list-style: none;
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--s-4); cursor: pointer;
  font-size: var(--t-lead); font-weight: 600; color: var(--ink-950);
  letter-spacing: -0.005em;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: ""; flex-shrink: 0;
  width: 22px; height: 22px;
  background: currentColor;
  mask: url('/icons.svg#chevron-down') center / contain no-repeat;
  -webkit-mask: url('/icons.svg#chevron-down') center / contain no-repeat;
  transition: transform 240ms var(--ease-in-out);
}
.faq details[open] summary::after { transform: rotate(-180deg); }
.faq__a {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 240ms var(--ease-in-out);
}
.faq details[open] .faq__a { grid-template-rows: 1fr; }
.faq__a > div {
  overflow: hidden; padding-top: var(--s-3);
  color: var(--ink-500); font-size: var(--t-body); line-height: 1.6;
  max-width: 65ch;
}

/* ═════════════════════════════════════════════════════════════════
   Section 11: Zones
   ═════════════════════════════════════════════════════════════════ */
.zone-tags {
  display: flex; flex-wrap: wrap; gap: var(--s-3);
  max-width: 900px;
}
.zone-tag {
  display: inline-flex; align-items: center; gap: var(--s-2);
  padding: var(--s-3) var(--s-4);
  border-radius: var(--r-pill);
  background: var(--paper); color: var(--ink-700);
  font-size: var(--t-small); font-weight: 600;
  border: 1px solid var(--ink-200);
  transition: color 160ms var(--ease-out), border-color 160ms var(--ease-out),
              transform 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
/* leading dot: surface-blue at rest, primary-blue + pop on hover */
.zone-tag::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--brand-200); flex: 0 0 auto;
  transition: background-color 160ms var(--ease-out), transform 160ms var(--ease-out);
}
.zone-tag:hover {
  color: var(--ink-950); border-color: var(--brand-600);
  transform: translateY(-2px); box-shadow: var(--sh-2);
}
.zone-tag:hover::before { background: var(--brand-600); transform: scale(1.25); }
.zone-tag:active { transform: translateY(0) scale(0.98); }

/* ═════════════════════════════════════════════════════════════════
   Section 12: Contact form
   ═════════════════════════════════════════════════════════════════ */
.contact-wrap {
  display: grid; gap: var(--s-8);
  grid-template-columns: 1fr 1.2fr; align-items: center;
}
@media (max-width: 880px) {
  .contact-wrap { grid-template-columns: 1fr; }
}
.contact-form {
  background: var(--paper); border-radius: var(--r-5);
  padding: var(--s-6); box-shadow: var(--sh-2);
  display: flex; flex-direction: column; gap: var(--s-4);
}
.form-tabs {
  display: flex; gap: var(--s-1); padding: var(--s-1);
  background: var(--ink-100); border-radius: var(--r-pill);
  overflow-x: auto;
}
.form-tab {
  padding: var(--s-2) var(--s-4); border-radius: var(--r-pill);
  font-size: var(--t-small); font-weight: 600; color: var(--ink-500);
  white-space: nowrap;
  transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), transform 120ms var(--ease-out);
}
.form-tab:hover { color: var(--ink-950); }
.form-tab:active { transform: scale(0.97); }
.form-tab.is-active { background: var(--paper); color: var(--brand-700); box-shadow: var(--sh-1); }
.form-row { display: grid; gap: var(--s-3); grid-template-columns: repeat(2, 1fr); }
@media (max-width: 560px) { .form-row { grid-template-columns: 1fr; } }
.form-row--full { grid-template-columns: 1fr; }
.form-field {
  display: flex; flex-direction: column; gap: var(--s-1);
}
.form-field label {
  font-size: var(--t-small); font-weight: 500; color: var(--ink-700);
}
.form-field input,
.form-field select,
.form-field textarea {
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--ink-200); border-radius: var(--r-2);
  background: var(--canvas); color: var(--ink-950);
  font-size: var(--t-body);
  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
.form-field input::placeholder,
.form-field textarea::placeholder { color: var(--ink-400); }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline: 0; border-color: var(--brand-600);
  box-shadow: 0 0 0 4px var(--brand-50);
}
.form-field textarea { min-height: 100px; resize: vertical; }
.form-hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.contact-intro h2 { margin-bottom: var(--s-4); }
.contact-intro p { color: var(--ink-500); font-size: var(--t-lead); max-width: 38ch; }
.contact-intro .chip-row { margin-top: var(--s-5); }

/* ═════════════════════════════════════════════════════════════════
   Section 13: Footer
   ═════════════════════════════════════════════════════════════════ */
.footer {
  background: var(--ink-950); color: var(--ink-300);
  padding-block: var(--s-9) var(--s-7);
}
.footer__cols {
  display: grid; gap: var(--s-7);
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
}
@media (max-width: 880px) {
  .footer__cols { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .footer__cols { grid-template-columns: 1fr; }
}
.footer__brand .footer__logo { height: 32px; width: auto; margin-bottom: var(--s-3); filter: brightness(0) invert(1); }
.footer__brand p { color: var(--ink-400); max-width: 40ch; font-size: var(--t-small); }
.footer__brand .footer__socials { margin-top: var(--s-5); display: flex; gap: var(--s-3); }
.footer__brand .footer__socials a {
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(255,255,255,0.08);
  display: grid; place-items: center; color: var(--ink-200);
  transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out);
}
.footer__brand .footer__socials a:hover { background: var(--brand-600); color: var(--paper); }
.footer__col h4 {
  font-size: var(--t-eyebrow); font-weight: 700; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--paper); margin-bottom: var(--s-4);
}
.footer__col ul { display: flex; flex-direction: column; gap: var(--s-3); }
.footer__col a { color: var(--ink-300); font-size: var(--t-small); }
.footer__col a:hover { color: var(--paper); }
.footer__mentions {
  margin-top: var(--s-8); padding-top: var(--s-5);
  border-top: 1px solid rgba(255,255,255,0.08);
  display: flex; flex-wrap: wrap; gap: var(--s-5);
  font-size: var(--t-small); color: var(--ink-400);
}
.footer__mentions a { color: var(--ink-400); }
.footer__mentions a:hover { color: var(--paper); }

/* ═════════════════════════════════════════════════════════════════
   Reveal animations: page-load stagger (CSS-only, no JS gate)
   + IntersectionObserver for below-fold sections
   ═════════════════════════════════════════════════════════════════ */

/* Page-load reveals: hero + first visible section, no JS needed */
@keyframes load-fade-up {
  from { opacity: 0; transform: translateY(40px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.hero__eyebrow,
.hero__title,
.hero__tagline,
.hero__cta,
.hero__intents,
.hero__search,
.hero__trending {
  animation: load-fade-up 700ms var(--ease-out) backwards;
}
.hero__eyebrow  { animation-delay: 80ms; }
.hero__title    { animation-delay: 160ms; }
.hero__tagline  { animation-delay: 280ms; }
.hero__cta      { animation-delay: 380ms; }
.hero__intents  { animation-delay: 360ms; }
.hero__search   { animation-delay: 460ms; }
.hero__trending { animation-delay: 560ms; }

/* Scroll-triggered section reveals.
   Only hidden when JS is present (html.js). Without JS, content shows
   normally: no FOUC, no permanently-invisible sections. IntersectionObserver
   adds .is-visible as each section scrolls into view. */
/* Container reveal (fade + rise). Containers aren't interactive, so the
   :not(.is-visible) hidden state + natural end state is all we need. */
html.js [data-reveal] {
  transition: opacity 650ms var(--ease-out), transform 650ms var(--ease-out);
}
html.js [data-reveal]:not(.is-visible) {
  opacity: 0;
  transform: translateY(40px);
}
/* Stagger children via a ONE-SHOT animation with fill-mode:backwards. After it
   ends, each child reverts to its NATURAL transform (nothing is pinned), so
   card/tile/pill :hover and :active transforms keep working. */
html.js [data-reveal]:not(.is-visible) > * { opacity: 0; }
html.js [data-reveal].is-visible > * { animation: reveal-up 650ms var(--ease-out) backwards; }
html.js [data-reveal].is-visible > *:nth-child(1) { animation-delay: 60ms; }
html.js [data-reveal].is-visible > *:nth-child(2) { animation-delay: 140ms; }
html.js [data-reveal].is-visible > *:nth-child(3) { animation-delay: 220ms; }
html.js [data-reveal].is-visible > *:nth-child(4) { animation-delay: 300ms; }
html.js [data-reveal].is-visible > *:nth-child(5) { animation-delay: 380ms; }
html.js [data-reveal].is-visible > *:nth-child(6) { animation-delay: 460ms; }
@keyframes reveal-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Scroll progress stripe: top of viewport, fills as you scroll */
.scroll-progress {
  position: fixed; top: 0; left: 0; z-index: 100;
  height: 3px; width: 0;
  background: linear-gradient(90deg, var(--brand-600), var(--brand-700));
  transition: width 80ms linear;
  pointer-events: none;
}

/* ═════════════════════════════════════════════════════════════════
   biens.html: dedicated listings page
   ═════════════════════════════════════════════════════════════════ */
.biens-hero {
  padding-block: var(--s-8) var(--s-6);
  background: linear-gradient(180deg, var(--brand-50) 0%, var(--canvas) 100%);
}
.breadcrumb {
  display: flex; align-items: center; gap: var(--s-2);
  font-size: var(--t-small); color: var(--ink-500);
}
.breadcrumb a { color: var(--ink-500); }
.breadcrumb a:hover { color: var(--brand-600); }
.breadcrumb span[aria-hidden] { color: var(--ink-300); }

.filter-bar {
  display: flex; flex-wrap: wrap; gap: var(--s-2);
}
.filter-chip {
  padding: var(--s-2) var(--s-4); border-radius: var(--r-pill);
  font-size: var(--t-small); font-weight: 600; color: var(--ink-700);
  background: var(--paper); border: 1px solid var(--ink-200);
  transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), border-color 160ms var(--ease-out), transform 120ms var(--ease-out);
}
.filter-chip:hover { background: var(--ink-100); }
.filter-chip:active { transform: scale(0.97); }
.filter-chip.is-active { background: var(--brand-600); color: var(--paper); border-color: var(--brand-600); }

.biens-empty {
  text-align: center; padding: var(--s-9) var(--s-5);
  color: var(--ink-500);
}
.biens-empty .h3 { color: var(--ink-700); margin-bottom: var(--s-3); }

.property[hidden] { display: none; }

/* Live-biens skeleton (shown while fetching the Softnex API) */
.property--skeleton { pointer-events: none; }
.property--skeleton .property__media { background: var(--ink-100); }
.property--skeleton .property__body { gap: var(--s-2); }
.sk { display: block; height: 14px; border-radius: var(--r-1); background: var(--ink-100); }
.sk--sm { width: 30%; } .sk--md { width: 55%; } .sk--lg { width: 80%; height: 20px; }
@keyframes sk-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }
.property--skeleton .property__media,
.property--skeleton .sk { animation: sk-pulse 1.2s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .property--skeleton .property__media,
  .property--skeleton .sk { animation: none; }
}

/* Header slides down on first paint */
@keyframes header-drop {
  from { opacity: 0; transform: translateY(-100%); }
  to   { opacity: 1; transform: translateY(0); }
}
.header { animation: header-drop 500ms var(--ease-out) backwards; }

/* ═════════════════════════════════════════════════════════════════
   Reduced motion: soften, don't kill. Opacity fades stay, position
   movement removed. Users still see something happen, just less.
   ═════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 200ms !important;
    animation-duration: 300ms !important;
    scroll-behavior: auto !important;
  }
  /* Remove the movement, keep the fade */
  html.js [data-reveal] { transform: none !important; }
  html.js [data-reveal] > * { transform: none !important; }
  .hero__eyebrow, .hero__title, .hero__tagline, .hero__cta,
  .header { transform: none !important; animation-name: fade-only; }
  .hero__skyline { animation: none !important; opacity: 1; transform: none; }
  @keyframes fade-only {
    from { opacity: 0; }
    to   { opacity: 1; }
  }
  .header.is-stuck .header__logo { transform: none; }
}

/* ═════════════════════════════════════════════════════════════════
   Responsive section padding
   ═════════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .section { padding-block: var(--s-7); }
  .hero    { padding-block: var(--s-7) var(--s-8); }
}


/* ===== ZELLIGE HORIZON: immersive redesign (workflow synthesis) ===== */
/* ╔══════════════════════════════════════════════════════════════╗
   ║ SAAFKA ZELLIGE HORIZON: immersive section backgrounds        ║
   ║ 3 planes: (0) woven zellige field · (1) one arch bleed ·      ║
   ║ content @ z-index:2 with a clear centre channel. All deco is  ║
   ║ pointer-events:none + aria-hidden, animates NOTHING.          ║
   ╚══════════════════════════════════════════════════════════════╝ */

:root{
  /* zellige star tile field: primary blue stroke; ALL # are %23-encoded */
  --zellige: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%232563EB' stroke-width='1.2'%3E%3Crect x='24' y='24' width='32' height='32' transform='rotate(45 40 40)'/%3E%3Crect x='24' y='24' width='32' height='32'/%3E%3Cpath d='M40 4V18M40 62V76M4 40H18M62 40H76M14 14L24 24M66 14L56 24M14 66L24 56M66 66L56 56'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3C/g%3E%3C/svg%3E");
  /* mint-stroke variant for green sections (uses #79F083 ramp for visible stroke on mint) */
  --zellige-mint: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%2300A86B' stroke-width='1.2'%3E%3Crect x='24' y='24' width='32' height='32' transform='rotate(45 40 40)'/%3E%3Crect x='24' y='24' width='32' height='32'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3C/g%3E%3C/svg%3E");
  /* keyhole-arch mask, %23-safe (no # inside; pure path) */
  --arch-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 420'%3E%3Cpath d='M150 0C70 0 18 54 18 140c0 38 12 66 12 100v180h60V270c0-38 24-64 60-64s60 26 60 64v150h60V240c0-34 12-62 12-100C282 54 230 0 150 0Z'/%3E%3C/svg%3E");
  --frame: 1px solid rgba(37,99,235,.16);
}

/* every section becomes a positioned, clipped stage; content lifts above */
.section{ position: relative; isolation: isolate; overflow: clip; }
.section > .container{ position: relative; z-index: 2; }

/* ── PLANE 0 · woven zellige field (per-rotation opacity so it is visible
      on white AND on blue/mint, never noisy). Top-band gradient mask keeps
      it in the OUTER 25%, leaving the inner copy channel clean. ── */
.section::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background: var(--zellige) center / 140px;
  opacity:.04;                                   /* white sections: texture only */
  -webkit-mask: linear-gradient(180deg,#000 0 30%, transparent 62%);
          mask: linear-gradient(180deg,#000 0 30%, transparent 62%);
}
.section--blue::before{ opacity:.07; }           /* blue-on-blue: lift to stay visible */
.section--green::before{ opacity:.07; background-image: var(--zellige-mint); }

/* ── PLANE 1 · ONE oversized keyhole arch, bled off ONE edge, tone-on-tone.
      Alternates side per rotation for composed rhythm; always corner-anchored
      so the centre stays a clear legible channel. ── */
.section::after{
  content:""; position:absolute; z-index:1; pointer-events:none;
  width:min(46vw,560px); aspect-ratio:300 / 420;
  right:-9%; top:-10%;
  color: var(--brand-600); opacity:.07; background: currentColor;
  -webkit-mask: var(--arch-mask) center / contain no-repeat;
          mask: var(--arch-mask) center / contain no-repeat;
}
.section--blue::after { color: var(--brand-600); opacity:.09; right:-9%; left:auto; top:-10%; bottom:auto; }
.section--green::after{ color: var(--secondary); opacity:.14; left:-10%; right:auto; bottom:-12%; top:auto; }

/* ── PLANE 2 · continuous HORIZON SEAM (neutral, section-color-agnostic so it
      survives hidden sections). Pinned to the bottom of seam-bearing sections;
      drawn as a mask recolored by currentColor. ── */
.has-seam{ padding-bottom: calc(var(--s-9) + 72px); }
.has-seam .seam{
  content:""; position:absolute; left:0; right:0; bottom:0; height:72px; z-index:1;
  pointer-events:none; color: var(--paper);     /* neutral white silhouette */
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1440' height='90' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cpath d='M0 90V58h70V40h60v18h90V30h70v28h120V20l40-12 40 12v38h120V46h80v12h110V34h70v24h120V50h90v8h120V38h70v20h120V60h90V90z'/%3E%3C/svg%3E") bottom / cover no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1440' height='90' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cpath d='M0 90V58h70V40h60v18h90V30h70v28h120V20l40-12 40 12v38h120V46h80v12h110V34h70v24h120V50h90v8h120V38h70v20h120V60h90V90z'/%3E%3C/svg%3E") bottom / cover no-repeat;
}
.seam--paper{ color: var(--paper); }             /* INTO white sections */
.seam--ink  { color: var(--ink-950); opacity:.06; } /* faint variant if desired */

/* ── HERO · faint field behind type + the new inline-SVG generic skyline.
      Replaces the <img> rules; swap is mechanically complete below. ── */
.hero{ position:relative; isolation:isolate; overflow:clip; }
.hero::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background: var(--zellige) center / 150px; opacity:.05;
  -webkit-mask: linear-gradient(180deg,#000 0 22%, transparent 55%);
          mask: linear-gradient(180deg,#000 0 22%, transparent 55%);
}
/* signature: giant keyhole arch hugging the headline, bled from the top */
.hero__inner::before{
  content:""; position:absolute; z-index:-1; left:50%; top:-6%; transform:translateX(-50%);
  width:min(70vw,640px); aspect-ratio:300 / 420; opacity:.06;
  color:var(--brand-600); background:currentColor;
  -webkit-mask: var(--arch-mask) top / contain no-repeat;
          mask: var(--arch-mask) top / contain no-repeat;
}
/* inline <svg class="hero__skyline"> keeps the SAME box the <img> had */
.hero__skyline{
  position:absolute; left:0; right:0; bottom:0;
  width:100%; height:clamp(150px,20vw,280px);
  z-index:0; pointer-events:none; user-select:none;
  animation: skyline-rise 800ms var(--ease-out) 150ms both;
}
/* (object-fit no longer needed; preserveAspectRatio='slice' on the svg handles it) */

/* ── DARK FOOTER closes the loop: invert the star field to white @8% ── */
.footer{ position:relative; isolation:isolate; overflow:clip; }
.footer::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.08;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%23FFFFFF' stroke-width='1.2'%3E%3Crect x='24' y='24' width='32' height='32' transform='rotate(45 40 40)'/%3E%3Crect x='24' y='24' width='32' height='32'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3C/g%3E%3C/svg%3E") center / 140px;
}
.footer > *{ position:relative; z-index:1; }

/* ╔══════════════════════════════════════════════════════════════╗
   ║ ZELLIGE HORIZON: bold component redesigns (token-driven).    ║
   ║ Append AFTER the existing rules so these override cleanly.    ║
   ╚══════════════════════════════════════════════════════════════╝ */

/* ── 1 · BIENS / PROPERTY CARD: framed tile, mint↔blue seam under photo ── */
.property{
  border: var(--frame);
  position: relative;
  background: var(--zellige) -20px -20px / 120px, var(--paper);
}
.property::before{               /* 96% paper veil keeps the price crisp (AA+) */
  content:""; position:absolute; inset:0; background:var(--paper);
  opacity:.96; border-radius:inherit; z-index:0; pointer-events:none;
}
.property > *{ position:relative; z-index:1; }
.property__media{ position:relative; }
.property__media::after{         /* thin blue→mint zellige seam under the photo */
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background: linear-gradient(90deg,var(--brand-600),var(--secondary)); opacity:.9;
}
.property__price{ color: var(--brand-700); }     /* price reads as the card hero */
@media (hover:hover){ .property:hover{ border-color: rgba(37,99,235,.40); } }

/* ── 2 · BLOG CARD: solve the EMPTY media box. The inline building-cluster
      SVG (see svgAssets + htmlChanges) fills it; here we frame the card and
      vary the spot hue per card via --spot, with NO extra files. ── */
.article{ border: var(--frame); }
.article__media{
  position: relative;
  background: var(--brand-50);   /* fallback sky behind the inline svg */
}
.article__media .spot{ width:100%; height:100%; display:block; }
.article:nth-child(1) .article__media{ --spot:#2563EB; }  /* blue dome  */
.article:nth-child(2) .article__media{ --spot:#B1FFBA; }  /* mint dome  */
.article:nth-child(3) .article__media{ --spot:#79F083; }  /* green dome */
.article__cat{                   /* category becomes an on-palette pill */
  align-self:flex-start; padding: var(--s-1) var(--s-3);
  background: var(--brand-50); border:1px solid var(--brand-200);
  border-radius: var(--r-pill);
}

/* ── 3 · STAT TILE: framed zellige tile + keyhole-arch watermark + big blue num ── */
.stat-tile{
  border: var(--frame); position: relative; overflow: hidden;
  background: var(--zellige) center / 100px, var(--paper);
}
.stat-tile::before{              /* 94% paper veil for full-ink contrast */
  content:""; position:absolute; inset:0; background:var(--paper); opacity:.94; z-index:0;
}
.stat-tile::after{               /* keyhole-arch watermark bleeding from the top */
  content:""; position:absolute; top:-30px; left:50%; transform:translateX(-50%);
  width:90px; height:120px; opacity:.10; color:var(--brand-600);
  background:currentColor; z-index:0;
  -webkit-mask: var(--arch-mask) center / contain no-repeat;
          mask: var(--arch-mask) center / contain no-repeat;
}
.stat-tile > *{ position:relative; z-index:1; }
/* .stat-tile__num already var(--brand-600): keep */

/* ── 4 · ZONE TAGS: zellige-framed pills + a tiny zellige-STAR dot ── */
.zone-tag{ border: var(--frame); background: var(--paper); }
.zone-tag::before{               /* swap the round dot for a star glyph mask */
  content:""; width:12px; height:12px; border-radius:0; background:none; flex:0 0 auto;
  background-color: var(--brand-200);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1l3 6 6 .5-4.5 4 1.5 6-6-3.2L6 18l1.5-6L3 7.5 9 7z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1l3 6 6 .5-4.5 4 1.5 6-6-3.2L6 18l1.5-6L3 7.5 9 7z'/%3E%3C/svg%3E") center/contain no-repeat;
  transition: background-color 160ms var(--ease-out), transform 160ms var(--ease-out);
}
.zone-tag:hover{ border-color: var(--brand-600); }
.zone-tag:hover::before{ background-color: var(--brand-600); transform: rotate(72deg) scale(1.1); }

/* ── 5 · VS CARD: keyhole-arch watermark on the solid blue column (optional polish) ── */
.vs-card--brand{ position:relative; overflow:hidden; }
.vs-card--brand::after{
  content:""; position:absolute; right:-12%; bottom:-14%; z-index:0;
  width:240px; height:336px; opacity:.10; color:#FFFFFF; background:currentColor;
  -webkit-mask: var(--arch-mask) center / contain no-repeat;
          mask: var(--arch-mask) center / contain no-repeat;
}
.vs-card--brand > *{ position:relative; z-index:1; }

@media (prefers-reduced-motion: reduce){
  .zone-tag:hover::before{ transform: none !important; }
  .section::before, .section::after, .hero::before, .hero__inner::before,
  .stat-tile::after, .footer::before, .has-seam .seam{ animation: none !important; }
}

/* ===== BOLD BIENS CARD: premium photo-forward listing card ===== */
.property{ background: var(--paper); border: 1px solid var(--ink-200); box-shadow: var(--sh-1); }
.property::before{ display: none; }              /* drop the zellige veil: clean card */
.property > *{ position: relative; z-index: 1; }
.property__media{ aspect-ratio: 3 / 2; }
.property__media::after{ display: none; }        /* drop the seam line */
.property__badge{ background: var(--brand-600); box-shadow: var(--sh-1); font-size: 12px; }
.property__badge--louer{ background: var(--success); color: var(--ink-950); }
.property__price-chip{
  position: absolute; left: var(--s-3); bottom: var(--s-3); z-index: 2;
  background: rgba(255,255,255,0.94);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  color: var(--ink-950); font-weight: 800; font-size: 16px;
  padding: var(--s-2) var(--s-4); border-radius: var(--r-pill);
  box-shadow: var(--sh-1);
}
.property__body{ padding: var(--s-5); gap: var(--s-2); }
.property__title{ font-size: 19px; line-height: 1.3; }
.property__loc{ display: flex; align-items: center; gap: var(--s-2); color: var(--ink-500); font-size: var(--t-small); }
.property__loc .icon{ width: 15px; height: 15px; color: var(--brand-600); flex: 0 0 auto; }
.property__meta{ margin-top: var(--s-3); padding-top: var(--s-3); border-top: 1px solid var(--ink-100); gap: var(--s-5); }
.property__meta span{ color: var(--ink-700); font-weight: 600; }
.property__meta .icon{ width: 16px; height: 16px; color: var(--brand-600); }
@media (hover: hover) and (pointer: fine){
  .property:hover{ transform: translateY(-4px); box-shadow: var(--sh-3); border-color: var(--brand-200); }
}


/* ===== INNOVATE 3 SECTIONS (workflow synthesis) ===== */
/* ═══ STATS: one solid-blue feature slab: 4 huge white numerals, mint accents ═══
   Contract kept: .stats-card carries data-stats-counter; each figure stays a
   <span data-count="N" [data-format="space"]>0</span> inside .stat__num (JS untouched).
   Reveal: .stats-card IS the [data-reveal] element, so the SHIPPED global engine
   (style.css 754-771) fades+rises the card and staggers its DIRECT children (.stat,
   and the decorative .stats-card__arch) via reveal-up, then reverts to natural
   transform. No custom reveal classes => no .is-visible/.is-visible mismatch, never
   permanently invisible. */
.stats-card{
  position: relative; isolation: isolate; overflow: hidden;
  display: grid; grid-template-columns: repeat(var(--stats-cols, 4), 1fr);  /* 03/10 : nb de tuiles = chiffres reels */
  gap: var(--s-5);
  margin-top: var(--s-7);
  padding: clamp(28px, 4vw, var(--s-8));
  background: var(--brand-600);                 /* #2563EB: the page's bold color anchor */
  background-image:
    radial-gradient(120% 95% at 8% -20%, var(--brand-700) 0%, transparent 60%),
    radial-gradient(90% 80% at 106% -10%, rgb(177 255 186 / .16) 0%, transparent 55%);
  border-radius: var(--r-5);                    /* rounded-3xl */
  box-shadow: var(--sh-3), inset 0 0 0 1px rgb(255 255 255 / .10);
}
/* keyhole-arch watermark: same brand geometry as the rest of the page */
.stats-card__arch{
  position: absolute; right: -4%; bottom: -22%; z-index: -1; pointer-events: none;
  width: 240px; height: 320px; opacity: .12; background: #FFFFFF;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 132'%3E%3Cpath d='M50 4C25 4 8 22 8 52v76h84V52C92 22 75 4 50 4Z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 132'%3E%3Cpath d='M50 4C25 4 8 22 8 52v76h84V52C92 22 75 4 50 4Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.stat{
  position: relative;
  display: flex; flex-direction: column; align-items: flex-start;
  padding: var(--s-2) 0;
}
/* crisp hairline divider between numerals (white at low opacity, no grey) */
.stat + .stat::before{
  content: ""; position: absolute; left: calc(var(--s-5) * -.5); top: 6px; bottom: 6px;
  width: 1px; background: rgb(255 255 255 / .16);
}
.stat__icon{
  display: inline-grid; place-items: center;
  width: 38px; height: 38px; border-radius: var(--r-2);
  background: rgb(255 255 255 / .12);
  color: var(--secondary);                      /* mint icon glyph */
  margin-bottom: var(--s-5);
}
.stat__icon .icon{ width: 20px; height: 20px; }
.stat__num{
  display: flex; align-items: baseline; gap: 2px;
  color: #FFFFFF; font-weight: 800;
  font-size: clamp(40px, 5.4vw, 64px); line-height: .9;
  letter-spacing: -0.04em; font-variant-numeric: tabular-nums;
}
.stat__suffix{ color: var(--secondary); }       /* the "+" in mint */
/* signature mint underline rule under every number */
.stat__rule{
  width: 32px; height: 3px; border-radius: var(--r-pill);
  background: var(--secondary);
  margin: var(--s-4) 0 var(--s-3);
  transition: width 320ms var(--ease-out);
}
.stat__label{
  font-size: var(--t-small); font-weight: 500;
  color: rgb(255 255 255 / .82); letter-spacing: .01em; max-width: 16ch;
}
@media (hover: hover) and (pointer: fine){
  .stat:hover .stat__rule{ width: 52px; }
}
@media (max-width: 860px){
  .stats-card{ grid-template-columns: repeat(2, 1fr); gap: var(--s-7) var(--s-5); }
  .stat:nth-child(odd) + .stat::before,         /* re-key: vertical rule only between cols */
  .stat:nth-child(2) ~ .stat::before{ }         /* (kept simple; rules handled below) */
  .stat + .stat::before{ display: none; }
  .stat:nth-child(odd) ~ .stat:nth-child(even)::before{
    content: ""; display: block; position: absolute;
    left: calc(var(--s-5) * -.5); top: 6px; bottom: 6px;
    width: 1px; background: rgb(255 255 255 / .16);
  }
}
@media (max-width: 460px){
  .stats-card{ grid-template-columns: 1fr; }
  .stat:nth-child(odd) ~ .stat:nth-child(even)::before{ display: none; }
  .stat + .stat{ border-top: 1px solid rgb(255 255 255 / .14); padding-top: var(--s-5); }
}
@media (prefers-reduced-motion: reduce){
  .stat__rule{ transition: none; }
}

/* see vsCss field: single source */

/* ═══ FAQ: bordered accordion cards, chevron chip rotates+inverts, open row ignites ═══
   Contract kept VERBATIM: <details data-faq><summary>Q</summary>
   <div class="faq__a"><div><p>A</p></div></div></details>. Restyle only: native
   <details> works with JS off; script.js still toggles aria-expanded. No left stripe:
   the open row uses a full brand-50 tint + full brand keyline. */
.faq{
  max-width: 820px; margin-inline: auto; margin-top: var(--s-6);
  display: flex; flex-direction: column; gap: var(--s-3);
}
.faq details[data-faq]{
  border-radius: var(--r-4);
  background: var(--paper);
  box-shadow: inset 0 0 0 1px rgb(2 7 19 / .10);
  overflow: clip;
  transition: box-shadow 240ms var(--ease-out), background-color 240ms var(--ease-out);
}
@media (hover: hover) and (pointer: fine){
  .faq details[data-faq]:hover{ box-shadow: inset 0 0 0 1px var(--brand-200); }
}
/* open row ignites: very-light blue tint + full blue keyline (NO left stripe) */
.faq details[data-faq][open]{
  background: var(--brand-50);                   /* #EEF4FF */
  box-shadow: inset 0 0 0 1.5px var(--brand-600), var(--sh-2);
}
.faq summary{
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-4);
  padding: var(--s-5);
  font-size: var(--t-lead); font-weight: 600; color: var(--ink-950);
  letter-spacing: -0.015em;
}
.faq summary::-webkit-details-marker{ display: none; }
.faq details[data-faq][open] summary{ color: var(--brand-700); }

/* marker: chevron in a chip that rotates AND inverts on [open].
   background-color = chip; background-image = chevron glyph (data-URI, %23 for #). */
.faq summary::after{
  content: ""; flex-shrink: 0; display: block;
  width: 34px; height: 34px; border-radius: var(--r-2);
  background-color: var(--brand-50);
  box-shadow: inset 0 0 0 1px var(--brand-200);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 18px 18px;
  transition: transform 280ms var(--ease-in-out),
              background-color 240ms var(--ease-out),
              box-shadow 240ms var(--ease-out);
}
.faq details[data-faq][open] summary::after{
  transform: rotate(180deg);
  background-color: var(--brand-600);
  box-shadow: inset 0 0 0 1px var(--brand-700);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}

/* smooth height reveal: grid-template-rows trick (matches current structure) */
.faq__a{
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 280ms var(--ease-in-out);
}
.faq details[data-faq][open] .faq__a{ grid-template-rows: 1fr; }
.faq__a > div{
  overflow: hidden;
  padding: 0 var(--s-5) var(--s-5);
  color: rgb(33 43 65 / .80);                    /* muting = ink-700 opacity */
  font-size: var(--t-body); line-height: 1.65; max-width: 65ch;
}
/* signature mint accent: a short rule above the answer on the open row */
.faq details[data-faq][open] .faq__a > div{
  border-top: 3px solid var(--secondary);
  padding-top: var(--s-4); margin-top: var(--s-1);
}
.faq__a p{ margin: 0; }

@media (max-width: 560px){
  .faq summary{ font-size: var(--t-body); padding: var(--s-4); gap: var(--s-3); }
  .faq summary::after{ width: 30px; height: 30px; }
  .faq__a > div{ padding: 0 var(--s-4) var(--s-4); }
}
@media (prefers-reduced-motion: reduce){
  .faq details[data-faq],
  .faq summary::after,
  .faq__a{ transition-duration: 200ms; }
}


/* ===== Blueprint vs-agence styling ===== */
/* ── VS: quiet legacy column vs dominant lifted blue SAAFKA card, with VS pivot ── */
.vs{
  position:relative; margin-top:var(--s-7);
  display:grid; align-items:center;
  grid-template-columns:1fr auto 1fr;
  gap:var(--s-5);
}
.vs__col{
  border-radius:var(--r-5);
  padding:clamp(24px,3vw,var(--s-7));
}
/* LEGACY: deliberately secondary: white card, faint keyline, muted ink (no new greys) */
.vs__col--legacy{
  background:#fff;
  box-shadow:inset 0 0 0 1px oklch(13% 0.005 258 / .10);
  color:oklch(13% 0.005 258 / .60);
}
.vs__tag{
  display:inline-block; font-size:var(--t-eyebrow); font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
  color:oklch(13% 0.005 258 / .42);
}
.vs__col--legacy h3{
  font-size:var(--t-h3); font-weight:700; letter-spacing:-0.03em;
  margin:var(--s-2) 0 var(--s-5); color:oklch(13% 0.005 258 / .70);
}
/* SAAFKA: the winner: solid blue, lifted, scaled, bold shadow */
.vs__col--saafka{
  position:relative;
  background:var(--brand-600);
  color:#fff;
  box-shadow:0 24px 60px oklch(48% 0.18 256 / .30), inset 0 0 0 1px oklch(100% 0 0 / .12);
  transform:scale(1.03);
}
.vs__badge{
  display:inline-flex; align-items:center; gap:var(--s-2);
  padding:var(--s-1) var(--s-3); border-radius:var(--r-pill);
  background:var(--secondary); color:var(--ink-950);
  font-size:var(--t-eyebrow); font-weight:700; letter-spacing:.04em;
}
.vs__badge .icon{ width:14px; height:14px; }
.vs__col--saafka h3{
  font-size:var(--t-h3); font-weight:800; letter-spacing:-0.04em;
  margin:var(--s-3) 0 var(--s-5); color:#fff;
}
/* VS pivot: round token bridging the two columns */
.vs__pivot{
  z-index:2; display:grid; place-items:center;
  width:56px; height:56px; border-radius:var(--r-pill);
  background:#fff; color:var(--brand-700);
  font-weight:800; font-size:15px; letter-spacing:.02em;
  box-shadow:0 8px 24px oklch(48% 0.18 256 / .18), inset 0 0 0 1px var(--brand-200);
}
.vs__list{ display:flex; flex-direction:column; gap:var(--s-4); }
.vs__list li{
  position:relative; padding-left:var(--s-6);
  font-size:var(--t-body); line-height:1.5;
}
/* legacy markers: muted ✗ at low opacity */
.vs__col--legacy .vs__list li::before{
  content:""; position:absolute; left:0; top:3px;
  width:18px; height:18px; flex-shrink:0;
  background:oklch(13% 0.005 258 / .35);
  -webkit-mask:url('/icons.svg#x') center / contain no-repeat;
          mask:url('/icons.svg#x') center / contain no-repeat;
}
/* saafka markers: confident green success-check in a soft chip */
.vs__col--saafka .vs__list li{ padding-left:30px; }
.vs__col--saafka .vs__list li::before{
  content:""; position:absolute; left:0; top:2px;
  width:20px; height:20px; border-radius:6px;
  background:var(--secondary);                  /* mint chip */
  -webkit-mask:none; mask:none;
}
.vs__col--saafka .vs__list li::after{
  content:""; position:absolute; left:3px; top:5px;
  width:14px; height:14px;
  background:var(--ink-950);                     /* dark check on mint = max legibility */
  -webkit-mask:url('/icons.svg#check') center / contain no-repeat;
          mask:url('/icons.svg#check') center / contain no-repeat;
}
@media (max-width:860px){
  .vs{ grid-template-columns:1fr; gap:var(--s-2); }
  .vs__col--saafka{ transform:none; }            /* drop scale so it can't clip on mobile */
  .vs__pivot{ margin:var(--s-1) auto; }
}

/* ===== tweaks: drop arch shapes; tighten hero skyline to the bottom edge ===== */
.section::after, .hero__inner::before,
.stat-tile::after, .vs-card--brand::after { content: none !important; display: none !important; }
.hero { padding-block: var(--s-9) clamp(140px, 16vw, 230px); }
.hero__skyline { height: clamp(120px, 15vw, 220px); }

/* ===== Motifs: all 4, distributed per section by theme (user: use all) ===== */
.section::after{
  content:"" !important; display:block !important;
  position:absolute; z-index:0; pointer-events:none;
  width:clamp(150px,17vw,240px); height:clamp(150px,17vw,240px);
  right:-1%; bottom:0;
  background-repeat:no-repeat; background-size:contain; background-position:right bottom;
  opacity:.42;
}
.section:nth-of-type(even)::after{ right:auto; left:-1%; background-position:left bottom; }
#mes-biens::after{ background-image:url('/brand/gen-motif-arch.png'); }
#profil::after{ background-image:url('/brand/gen-motif-plant.png'); }
#expertise::after{ background-image:url('/brand/gen-motif-zellige.png'); opacity:.30; }
#stats::after{ background-image:url('/brand/gen-motif-lantern.png'); }
#vs-agence::after{ background-image:url('/brand/gen-motif-zellige.png'); opacity:.30; }
#blog::after{ background-image:url('/brand/gen-motif-arch.png'); }
#faq::after{ background-image:url('/brand/gen-motif-zellige.png'); opacity:.30; }
#zones::after{ background-image:url('/brand/gen-motif-plant.png'); }
#contact::after{ background-image:url('/brand/gen-motif-lantern.png'); }

/* ===== GSAP motif-parallax hook + upgraded footer "perfect ending" ===== */
.section::after{ transform: translateY(var(--motif-y, 0)); will-change: transform; }

.footer{ background-image: linear-gradient(90deg, var(--brand-600), var(--secondary)); background-size:100% 3px; background-repeat:no-repeat; background-position:top; }
.footer::before{
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%232563EB' stroke-width='1.2'%3E%3Crect x='24' y='24' width='32' height='32' transform='rotate(45 40 40)'/%3E%3Crect x='24' y='24' width='32' height='32'/%3E%3Cpath d='M40 4V18M40 62V76M4 40H18M62 40H76'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3C/g%3E%3C/svg%3E") center / 150px,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cpath d='M40 10 L54 30 L40 50 L26 30 Z' fill='none' stroke='%23B1FFBA' stroke-width='1'/%3E%3C/svg%3E") 40px 40px / 96px !important;
  opacity:.17 !important;
  -webkit-mask: linear-gradient(180deg,#000 0 48%, transparent 94%) !important;
          mask: linear-gradient(180deg,#000 0 48%, transparent 94%) !important;
}

/* ===== footer: tiled zellige motif image (repeat x+y), faint ===== */
.footer::before{
  background: url('/brand/gen-motif-zellige.png') repeat 0 0 / 110px !important;
  opacity:.07 !important;
  -webkit-mask:none !important; mask:none !important;
}
/* ===== motifs: bleed into the corners (less sticker-like), a touch fainter ===== */
.section::after{
  width:clamp(190px,21vw,310px) !important; height:clamp(190px,21vw,310px) !important;
  right:-8% !important; bottom:-10% !important; opacity:.30 !important;
}
.section:nth-of-type(even)::after{ left:-8% !important; right:auto !important; }

/* ===== hero skyline: infinite horizontal marquee ===== */
.hero__skyline{
  background-image: url('/brand/gen-skyline-generic.png') !important;
  background-repeat: repeat-x !important;
  background-size: 392px auto !important;
  animation: skylineMarquee 16s linear infinite !important;
}
@keyframes skylineMarquee{ from{ background-position-x: 0; } to{ background-position-x: -392px; } }
@media (prefers-reduced-motion: reduce){ .hero__skyline{ animation: none !important; } }

/* footer: tile the TRANSPARENT zellige medallion (stars only, no white box) */
.footer::before{
  background: url('/brand/gen-motif-zellige-t.png') repeat 0 0 / 100px !important;
  opacity:.13 !important;
}

/* ============ batch tweaks (round) ============ */
/* transparent motif versions (clean on any background) */
#mes-biens::after{ background-image:url('/brand/gen-motif-arch-t.png') !important; }
#blog::after{ background-image:url('/brand/gen-motif-arch-t.png') !important; }
#profil::after{ background-image:url('/brand/gen-motif-plant-t.png') !important; }
#zones::after{ background-image:url('/brand/gen-motif-plant-t.png') !important; }
#vs-agence::after{ background-image:url('/brand/gen-motif-zellige-t.png') !important; }
#contact::after{ background-image:url('/brand/gen-motif-lantern-t.png') !important; }

/* STATS: leaf on the right side of the blue card */
#stats::after{
  background-image:url('/brand/gen-motif-plant-t.png') !important;
  width:clamp(170px,16vw,280px) !important; height:clamp(250px,25vw,410px) !important;
  top:50% !important; bottom:auto !important; right:-1% !important; left:auto !important;
  transform:translateY(-50%) translateY(var(--motif-y,0)) !important;
  opacity:.5 !important;
}
/* STATS: card starts wide in X, GSAP contracts it to origin on scroll */
.stats-card{ margin-inline: var(--stats-w, 0) !important; }

/* FAQ: lantern hanging top-right + tighter, finished cards */
#faq::after{
  background-image:url('/brand/gen-motif-lantern-t.png') !important;
  width:clamp(110px,11vw,180px) !important; height:clamp(170px,17vw,280px) !important;
  top:0 !important; bottom:auto !important; right:3% !important; left:auto !important;
  transform:translateY(var(--motif-y,0)) !important; opacity:.55 !important;
}
.faq{ gap:var(--s-2) !important; max-width:760px !important; }
.faq summary{ padding:var(--s-4) var(--s-5) !important; font-size:var(--t-body) !important; }

/* CONTACT: arch-shaped form (keyhole-arch top) */
.contact-form{
  border-radius: 48% 48% var(--r-5) var(--r-5) / 95px 95px var(--r-5) var(--r-5) !important;
  padding-top: clamp(78px, 9vw, 120px) !important;
  overflow: clip;
}

/* EXPERTISE: strong green background + leaf behind (depth via bg switch) */
#expertise{ background: var(--success) !important; }
#expertise::after{
  background-image:url('/brand/gen-motif-plant-t.png') !important;
  width:clamp(220px,27vw,400px) !important; height:clamp(220px,27vw,400px) !important;
  opacity:.55 !important;
}

/* HERO: more padding above the skyline + marquee moves left -> right */
.hero{ padding-bottom: clamp(230px, 23vw, 340px) !important; }
@keyframes skylineMarquee{ from{ background-position: 0 100%; } to{ background-position: 392px 100%; } }

/* contact form: translucent blue edge + soft blue glow shadow so it stands out */
.contact-form{
  border: 1.5px solid rgba(37,99,235,0.22) !important;
  box-shadow: 0 28px 64px rgba(37,99,235,0.16), 0 6px 18px rgba(2,7,19,0.07) !important;
}

/* STATS: replace the door-like glow with the arch motif on the right of the card */
#stats::after{ display:none !important; }
.stats-card__glow{
  background: url('/brand/gen-motif-arch-t.png') right bottom / contain no-repeat !important;
  inset: auto 0 0 auto !important;
  width: clamp(150px,17vw,260px) !important; height: 88% !important; opacity:.5 !important;
}

/* HERO band: bigger skyline + taller band, bottom buildings flush to the section edge */
.hero__skyline{ height: clamp(200px, 21vw, 320px) !important; background-size: 480px auto !important; }
@keyframes skylineMarquee{ from{ background-position: 0 calc(100% + 16px); } to{ background-position: 480px calc(100% + 16px); } }

/* CONTACT form: very faint zellige texture for contrast */
.contact-form{ position: relative !important; }
.contact-form > *{ position: relative; z-index: 1; }
.contact-form::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none; border-radius: inherit;
  background: url('/brand/gen-motif-zellige-t.png') repeat 0 0 / 86px; opacity:.05;
}

/* STATS: the on-card arch element -> the actual arch motif image */
.stats-card__arch{
  background: url('/brand/gen-motif-arch-t.png') right bottom / contain no-repeat !important;
  -webkit-mask: none !important; mask: none !important;
  inset: auto 0 0 auto !important;
  width: clamp(160px,18vw,290px) !important; height: 92% !important; opacity:.5 !important;
}

/* hero skyline: crop more of the image's bottom white so buildings sit flush */
@keyframes skylineMarquee{ from{ background-position: 0 calc(100% + 36px); } to{ background-position: 480px calc(100% + 36px); } }
/* stats arch: nudge a bit to the right */
.stats-card__arch{ right: -3% !important; }

/* hero skyline: precise bottom crop (PNG white margin = 16.6px at scale) */
@keyframes skylineMarquee{ from{ background-position: 0 calc(100% + 22px); } to{ background-position: 480px calc(100% + 22px); } }

/* faint zellige texture (same as the form overlay) on form fields + FAQ items */
.form-field input,
.form-field select,
.form-field textarea{
  background: url('/brand/gen-motif-zellige-t06.png') repeat 0 0 / 78px, var(--canvas);
}
.faq details[data-faq]{
  background: url('/brand/gen-motif-zellige-t06.png') repeat 0 0 / 78px, var(--paper);
}

/* ===== BIENS + PROFIL: blue background (user pick: both) ===== */
#mes-biens, #profil{ background: var(--brand-600) !important; }

/* headings + body text -> light */
#mes-biens .h2, #profil .h2, #profil .profil__name{ color:#fff !important; }
#mes-biens .lede, #profil .profil__role{ color: rgba(255,255,255,0.82) !important; }
#profil .profil__bio, #profil .profil__bio p{ color: rgba(255,255,255,0.88) !important; }

/* main eyebrows -> translucent white pill */
#mes-biens .section-head .eyebrow,
#profil .profil__body > .eyebrow{
  background: rgba(255,255,255,0.16) !important; color:#fff !important; box-shadow:none !important;
}
/* meta labels (Spécialités / Langues) -> light */
#profil .profil__meta .eyebrow{ color: rgba(255,255,255,0.92) !important; }

/* "Voir tous les biens" CTA -> white */
#mes-biens .section-head__cta{ color:#fff !important; }

/* profil chips -> translucent white */
#profil .chip{
  background: rgba(255,255,255,0.14) !important; color:#fff !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.28) !important;
}

/* EXPERTISE: blue too (replaces the green) */
#expertise{ background: var(--brand-600) !important; }
#expertise .h2{ color:#fff !important; }
#expertise p{ color: rgba(255,255,255,0.88) !important; }
#expertise .eyebrow{ background: rgba(255,255,255,0.16) !important; color:#fff !important; box-shadow:none !important; }
#expertise .cta-inline{ color:#fff !important; }

/* ===== FAQ expanded state: finished, intentional look ===== */
/* answer: solid readable ink (was faded 80% gray) */
.faq__a > div{ color: var(--ink-700) !important; line-height: 1.72 !important; }
/* replace the abrupt full-width mint bar with a subtle hairline + comfortable spacing */
.faq details[data-faq][open] .faq__a > div{
  border-top: 1px solid var(--brand-200) !important;
  padding: var(--s-4) var(--s-5) var(--s-5) !important;
  margin-top: 0 !important;
}
/* open card: clean tint + soft blue lift */
.faq details[data-faq][open]{
  background: var(--brand-50) !important;
  box-shadow: inset 0 0 0 1.5px var(--brand-600), 0 10px 30px rgb(37 99 235 / .08) !important;
}

/* profil + expertise: plant motif pinned cleanly to the bottom-right (no parallax drift, no cross-section bleed) */
#profil::after, #expertise::after{
  background-image: url('/brand/gen-motif-plant-t.png') !important;
  width: clamp(200px, 21vw, 350px) !important;
  height: clamp(270px, 29vw, 460px) !important;
  right: -3% !important; left: auto !important;
  top: auto !important; bottom: 0 !important;
  background-position: right bottom !important;
  transform: none !important;
  opacity: .30 !important;
}

/* ===== vs-agence: converting close (completes the section) ===== */
.vs-close{
  margin-top: clamp(36px, 4.5vw, 64px);
  display: flex; flex-direction: column; align-items: center; gap: var(--s-5);
  text-align: center;
}
.vs-close__verdict{
  max-width: 56ch; margin: 0;
  font-size: var(--t-lead); line-height: 1.55; font-weight: 500;
  color: var(--ink-700);
}
.vs__col--legacy .vs__list li::before{ background: oklch(13% 0.005 258 / .46) !important; }

/* ===== profil: CTA (white on the blue section) + more presence ===== */
#profil{ padding-block: clamp(64px, 8vw, 120px) !important; }
.profil__cta{ margin-top: var(--s-7); }
#profil .profil__cta{
  background: #fff !important; color: var(--brand-700) !important;
  box-shadow: 0 12px 30px rgb(2 7 19 / .20) !important;
}
#profil .profil__cta:hover{ background: var(--brand-50) !important; }

/* keep only the bottom (expertise) leaf; drop the duplicate profil leaf + the biens arch */
#profil::after{ display: none !important; }
#mes-biens::after{ display: none !important; }
/* expertise leaf: inset from the right edge (padding on its right) */
#expertise::after{ right: clamp(28px, 4.5vw, 100px) !important; left: auto !important; }

/* ===== profil → hero treatment (bigger portrait, lead statement, key-facts) ===== */
.profil{
  grid-template-columns: minmax(380px, 520px) 1fr;
  gap: clamp(40px, 5vw, 80px);
  align-items: start;
}
.profil__body{ padding-top: 0; }
@media (max-width: 768px){ .profil{ grid-template-columns: 1fr; gap: var(--s-7); } }

/* lead statement: first bio paragraph pulled out larger + bright white */
#profil .profil__bio p:first-of-type{
  font-size: clamp(19px, 1.7vw, 24px) !important;
  line-height: 1.5 !important; font-weight: 500 !important;
  color: #fff !important; margin-bottom: var(--s-5) !important;
}

/* key-facts strip */
.profil__facts{
  display: flex; flex-wrap: wrap; gap: clamp(22px, 3vw, 48px);
  margin: var(--s-5) 0 var(--s-6); padding-top: var(--s-5);
  border-top: 1px solid rgba(255,255,255,0.18);
}
.profil__fact dt{
  font-size: clamp(18px, 1.7vw, 23px); font-weight: 800;
  letter-spacing: -0.02em; color: #fff; line-height: 1.15;
}
.profil__fact dd{
  margin: 6px 0 0; font-size: var(--t-small);
  color: rgba(255,255,255,0.72); line-height: 1.3;
}

/* ===== ZONES: 2-col layout + bold tactile pin-pills ===== */
.zones-wrap{
  display: grid; grid-template-columns: minmax(260px, 360px) 1fr;
  gap: clamp(36px, 5vw, 80px); align-items: start;
}
.zones-intro .lede{ color: var(--ink-500); max-width: 36ch; }
@media (max-width: 820px){ .zones-wrap{ grid-template-columns: 1fr; gap: var(--s-6); } }

.zone-tag{
  padding: var(--s-3) var(--s-5) !important;
  font-size: var(--t-body) !important; font-weight: 600 !important;
  color: var(--ink-800) !important; background: var(--paper) !important;
  border: 1px solid var(--ink-200) !important;
  transition: background-color 180ms var(--ease-out), color 180ms var(--ease-out),
              transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out),
              border-color 180ms var(--ease-out) !important;
}
.zone-tag::before{
  width: 15px !important; height: 15px !important; border-radius: 0 !important;
  background: none !important; background-color: var(--brand-600) !important;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.1 2 5 5.1 5 9c0 5.2 7 13 7 13s7-7.8 7-13c0-3.9-3.1-7-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat !important;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.1 2 5 5.1 5 9c0 5.2 7 13 7 13s7-7.8 7-13c0-3.9-3.1-7-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat !important;
}
.zone-tag:hover{
  background: var(--brand-600) !important; color: #fff !important;
  border-color: var(--brand-600) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 14px 30px rgb(37 99 235 / .28) !important;
}
.zone-tag:hover::before{ background-color: #fff !important; transform: none !important; }

/* ===== EXPERTISE: split layout + SAFKALCUL estimation card ===== */
.expertise--split{
  max-width: none;
  display: grid; grid-template-columns: 1fr minmax(300px, 380px);
  gap: clamp(40px, 5vw, 80px); align-items: center;
}
.expertise__para{ margin-top: var(--s-5); }
@media (max-width: 860px){ .expertise--split{ grid-template-columns: 1fr; } }
.expertise__card{
  background: #fff; border-radius: var(--r-5); padding: clamp(28px, 3vw, 40px);
  box-shadow: 0 24px 60px rgb(2 7 19 / .24);
  display: flex; flex-direction: column; gap: var(--s-3);
}
.expertise__card-icon{
  display: grid; place-items: center; width: 48px; height: 48px;
  border-radius: var(--r-3); background: var(--brand-50); color: var(--brand-600);
}
.expertise__card-icon .icon{ width: 24px; height: 24px; }
#expertise .expertise__card-title{
  font-size: var(--t-h3); font-weight: 800; letter-spacing: -0.03em;
  color: var(--ink-950) !important; margin: var(--s-2) 0 0;
}
#expertise .expertise__card-text{
  color: var(--ink-700) !important; font-size: var(--t-body);
  line-height: 1.6; margin: 0;
}
.expertise__card-cta{ margin-top: var(--s-3); width: 100%; justify-content: center; }

/* profil: portrait carré et centré (ticket Martin 31/07). L'étirement sur
   toute la hauteur de la colonne recadrait brutalement la photo (520x970 sur
   une source carrée) : retour au cadre 1:1 du design de base, la photo du
   conseiller s'affiche entière et bien dimensionnée. */
.profil{ align-items: center !important; }
.profil__portrait{ aspect-ratio: 1 !important; align-self: center; }
@media (max-width: 768px){ .profil__portrait{ max-width: 360px; } }

/* ===== clean white sections: kill the zellige weave + motif shapes ===== */
.section::before{ display: none !important; }
#stats::after, #vs-agence::after, #blog::after, #faq::after,
#zones::after, #contact::after, #reseau::after, #mes-biens::after{ display: none !important; }

/* clean hero too (it's .hero, not .section) */
.hero::before{ display: none !important; }

/* ===== FAQ → clean shadcn-style accordion (hairline rows, no boxes) ===== */
.faq{ gap: 0 !important; max-width: 760px !important; border-top: 1px solid var(--ink-200); }
.faq details[data-faq]{
  border-radius: 0 !important; background: transparent !important;
  box-shadow: none !important; overflow: visible !important;
  border-bottom: 1px solid var(--ink-200) !important;
}
.faq details[data-faq]:hover{ box-shadow: none !important; }
.faq details[data-faq][open]{ background: transparent !important; box-shadow: none !important; }
.faq summary{
  font-size: var(--t-body) !important; font-weight: 500 !important;
  color: var(--ink-950) !important; padding: var(--s-4) 0 !important;
}
.faq summary:hover{ text-decoration: underline !important; }
.faq details[data-faq][open] summary{ color: var(--ink-950) !important; }
/* plain muted chevron (no chip), rotates 180deg on open */
.faq summary::after{
  width: 20px !important; height: 20px !important; border-radius: 0 !important;
  background-color: transparent !important; box-shadow: none !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236A7286' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
  background-size: 20px 20px !important; background-position: center !important; background-repeat: no-repeat !important;
}
.faq details[data-faq][open] summary::after{
  transform: rotate(180deg) !important; background-color: transparent !important; box-shadow: none !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236A7286' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
}
/* answer: readable, aligned to the question's left edge, no inner border */
.faq__a > div,
.faq details[data-faq][open] .faq__a > div{
  border-top: 0 !important; margin-top: 0 !important;
  padding: 0 0 var(--s-5) !important; color: var(--ink-700) !important;
}

/* ===== estimation card: more compact + refined (badge + reassurance line) ===== */
.expertise__card{ padding: clamp(22px, 2.4vw, 30px) !important; gap: var(--s-2) !important; }
.expertise__card-top{ display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--s-1); }
.expertise__card-badge{
  font-size: var(--t-eyebrow); font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-950); background: var(--secondary);
  padding: 5px 12px; border-radius: var(--r-pill);
}
#expertise .expertise__card-title{ font-size: var(--t-lead) !important; margin-top: 0 !important; }
.expertise__card-foot{
  display: flex; align-items: center; gap: 7px; margin-top: var(--s-2);
  font-size: var(--t-small); color: var(--ink-500) !important;
}
.expertise__card-foot .icon{ width: 15px; height: 15px; color: var(--success); flex-shrink: 0; }

/* ===== leaf: move from expertise to the bottom of the (blue) biens section ===== */
#expertise::after{ display: none !important; }
#mes-biens::after{
  display: block !important;
  background-image: url('/brand/gen-motif-plant-t.png') !important;
  width: clamp(260px, 28vw, 460px) !important; height: clamp(200px, 22vw, 380px) !important;
  left: 50% !important; right: auto !important; transform: translateX(-50%) !important;
  top: auto !important; bottom: 0 !important;
  background-position: center bottom !important;
  opacity: .5 !important;
}

/* ===== vs-agence redesign: depth + consistent markers + animation ===== */
/* DEPTH: legacy recedes (flat grey panel), saafka lifts (strong shadow + scale) */
.vs__col--legacy{
  background: var(--ink-100) !important; box-shadow: none !important;
  color: oklch(13% 0.005 258 / .62) !important;
}
.vs__col--saafka{
  box-shadow: 0 34px 80px rgb(37 99 235 / .38), inset 0 0 0 1px rgb(255 255 255 / .14) !important;
  transform: scale(1.04) !important;
}

/* CONSISTENT circular markers (same shape, different colour) */
.vs__list li{ padding-left: 38px !important; position: relative !important; }
.vs__col--legacy .vs__list li::before,
.vs__col--saafka .vs__list li::before{
  content:"" !important; position:absolute !important; left:0 !important; top:1px !important;
  width:24px !important; height:24px !important; border-radius:50% !important;
  -webkit-mask:none !important; mask:none !important; transform:none !important;
}
.vs__col--legacy .vs__list li::before{ background:#fff !important; box-shadow:inset 0 0 0 1.5px oklch(13% 0.005 258 / .16) !important; }
.vs__col--saafka .vs__list li::before{ background:var(--secondary) !important; box-shadow:none !important; }
.vs__col--legacy .vs__list li::after,
.vs__col--saafka .vs__list li::after{
  content:"" !important; position:absolute !important; left:6px !important; top:7px !important;
  width:12px !important; height:12px !important; border-radius:0 !important; transform:none !important;
}
.vs__col--legacy .vs__list li::after{
  background: oklch(13% 0.005 258 / .42) !important;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center/contain no-repeat !important;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center/contain no-repeat !important;
}
.vs__col--saafka .vs__list li::after{
  background: var(--ink-950) !important;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E") center/contain no-repeat !important;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E") center/contain no-repeat !important;
}

/* ANIMATION: rows populate top-to-bottom on scroll (both sides together) */
.vs.is-visible > *{ animation: none !important; }
html.js .vs:not(.is-visible){ opacity: 1 !important; transform: none !important; }
html.js .vs:not(.is-visible) .vs__list li{ opacity: 0; transform: translateY(16px); }
.vs__list li{ transition: opacity .55s var(--ease-out), transform .55s var(--ease-out); }
.vs.is-visible .vs__list li{ opacity: 1; transform: translateY(0); }
.vs.is-visible .vs__list li:nth-child(1){ transition-delay: .08s }
.vs.is-visible .vs__list li:nth-child(2){ transition-delay: .15s }
.vs.is-visible .vs__list li:nth-child(3){ transition-delay: .22s }
.vs.is-visible .vs__list li:nth-child(4){ transition-delay: .29s }
.vs.is-visible .vs__list li:nth-child(5){ transition-delay: .36s }

/* leaf -> biens bottom-RIGHT (was centred) */
#mes-biens::after{
  left: auto !important; right: clamp(20px, 5vw, 120px) !important;
  transform: none !important; background-position: right bottom !important;
}

/* fix: estimation card footer was white-on-white; button full-width + centered content */
#expertise .expertise__card-foot{ color: var(--ink-500) !important; }
#expertise .expertise__card-foot .icon{ color: var(--success) !important; }
.expertise__card-cta{ width: 100% !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; }

/* re-apply the faint zellige weave (subtle Moroccan depth): keep motif corner shapes off */
.section::before{ display: block !important; }
.hero::before{ display: block !important; }

/* ════════════════ POLISH AUDIT (emil + impeccable) ════════════════ */

/* 1 · Contact form: own ease-out entrance, gated on the sibling intro's reveal */
html.js .contact-form{ transition: opacity 560ms var(--ease-out), transform 560ms var(--ease-out); }
html.js .contact-intro:not(.is-visible) ~ .contact-form{ opacity: 0; transform: translateY(28px) scale(0.985); }
html.js .contact-intro.is-visible ~ .contact-form{ opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce){ html.js .contact-intro:not(.is-visible) ~ .contact-form{ transform: none !important; } }

/* 2 · Extend the reveal stagger past child 6 (zone pills, profil CTA, blog) */
html.js [data-reveal].is-visible > *:nth-child(7){ animation-delay: 520ms; }
html.js [data-reveal].is-visible > *:nth-child(8){ animation-delay: 560ms; }
html.js [data-reveal].is-visible > *:nth-child(9){ animation-delay: 600ms; }
html.js [data-reveal].is-visible > *:nth-child(n+10){ animation-delay: 640ms; }

/* 3 · Live biens cards animate in on insert (independent of container is-visible) */
@keyframes biens-in{ from{ opacity:0; transform: translateY(20px) scale(0.98); } to{ opacity:1; transform:none; } }
[data-biens-grid] > .property:not(.property--skeleton),
[data-biens-grid].is-visible > .property:not(.property--skeleton){ animation: biens-in 460ms var(--ease-out) backwards; }
[data-biens-grid] > .property:nth-child(1){ animation-delay: 40ms; }
[data-biens-grid] > .property:nth-child(2){ animation-delay: 120ms; }
[data-biens-grid] > .property:nth-child(3){ animation-delay: 200ms; }
@media (prefers-reduced-motion: reduce){ [data-biens-grid] > .property{ animation: none !important; } }

/* 4 · Property card press feedback */
.property:active{ transform: scale(0.985); }
@media (hover: hover) and (pointer: fine){ .property:active{ transform: translateY(-4px) scale(0.985); } }
@media (prefers-reduced-motion: reduce){ .property:active{ transform: none; } }

/* 5 · Zone-tag press (beat the !important hover) */
.zone-tag:active{ transform: translateY(-1px) scale(0.97) !important; }
@media (prefers-reduced-motion: reduce){ .zone-tag:active{ transform: none !important; } }

/* 6 · FAQ summary: color + chevron press instead of weak underline */
.faq summary{ transition: color 160ms var(--ease-out), opacity 120ms var(--ease-out) !important; }
.faq summary:hover{ text-decoration: none !important; color: var(--brand-700) !important; }
.faq summary:active{ opacity: 0.7; }
.faq summary:active::after{ transform: scale(0.9) !important; }
@media (prefers-reduced-motion: reduce){ .faq summary:active::after{ transform: none !important; } }

/* 7 + 8 · vs-agence rows: no-JS-safe default + reduced-motion kills the slide */
.vs__list li{ opacity: 1; transform: none; }
html.js .vs:not(.is-visible) .vs__list li{ opacity: 0; transform: translateY(16px); }
@media (prefers-reduced-motion: reduce){
  html.js .vs:not(.is-visible) .vs__list li{ transform: none !important; }
  .vs.is-visible .vs__list li{ transform: none !important; }
}

/* 9 · Hairline seam between the stacked blue sections */
#expertise, #mes-biens{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.14); }

/* 10 · Press feedback for nav / section CTA / footer links + social icons */
.header__nav a, .footer__col a, .footer__mentions a{ transition: color 160ms var(--ease-out), opacity 120ms var(--ease-out); }
.header__nav a:active, .footer__col a:active, .footer__mentions a:active{ opacity: 0.65; }
.section-head__cta{ transition: gap 200ms var(--ease-out), color 160ms var(--ease-out), transform 120ms var(--ease-out); }
.section-head__cta:active{ transform: scale(0.97); }
.footer__brand .footer__socials a{ transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), transform 120ms var(--ease-out); }
.footer__brand .footer__socials a:active{ transform: scale(0.92); }
@media (prefers-reduced-motion: reduce){ .section-head__cta:active, .footer__brand .footer__socials a:active{ transform: none; } }

/* 11 · Arch contact-form clips focus rings -> inset (non-clipped) focus ring */
.contact-form .form-tab:focus-visible,
.contact-form .form-field input:focus-visible,
.contact-form .form-field select:focus-visible,
.contact-form .form-field textarea:focus-visible{
  outline: none; box-shadow: 0 0 0 3px var(--brand-50), 0 0 0 4px var(--brand-600);
}

/* 12 · Unify nested icon-tile radius (was r-2 vs r-3) */
.stat__icon{ border-radius: var(--r-3) !important; }
.expertise__card-icon{ border-radius: var(--r-3) !important; }

/* ════ HOVER-VANISH FIX: a:hover{color:brand-700} was recoloring <a> buttons to blue-on-blue ════ */
.btn--primary:hover, .btn--primary:focus, .btn--primary:focus-visible, .btn--primary:active{ color: var(--paper); }
.btn--ghost:hover, .btn--ghost:focus, .btn--ghost:focus-visible, .btn--ghost:active{ color: var(--ink-950); }
#profil .profil__cta:hover, #profil .profil__cta:focus, #profil .profil__cta:focus-visible{ color: var(--brand-700) !important; }
.property, .property:hover, .property:focus, .property:focus-visible{ color: var(--ink-700); }

/* profil chips: hover feedback (were dead) */
#profil .chip{ transition: background-color 180ms var(--ease-out), transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out) !important; }
#profil .chip:hover{ background: rgba(255,255,255,0.26) !important; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(2,7,19,0.18); }

/* "Vérifié SAAFKA" chip -> green (verified signal) */
.contact-intro .chip-row .chip:last-child{
  background: var(--secondary) !important; color: var(--ink-950) !important; box-shadow: none !important;
}

/* more breathing room between the contact form and the footer */
#contact{ padding-bottom: clamp(80px, 10vw, 150px) !important; }

/* vs markers: bigger, fuller ×/✓ so they read centered in the circle */
.vs__col--legacy .vs__list li::after,
.vs__col--saafka .vs__list li::after{ width:14px !important; height:14px !important; left:5px !important; top:6px !important; }
.vs__col--legacy .vs__list li::after{
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M5 5L19 19M19 5L5 19'/%3E%3C/svg%3E") center/contain no-repeat !important;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M5 5L19 19M19 5L5 19'/%3E%3C/svg%3E") center/contain no-repeat !important;
}

/* FAQ: kill the native-looking focus outline; keyboard focus rings the chevron instead */
.faq summary{ outline: none !important; }
.faq summary:focus-visible::after{ box-shadow: 0 0 0 3px var(--brand-200) !important; border-radius: 50% !important; }
.faq details[data-faq]:hover{ background: rgba(37,99,235,0.02) !important; }

/* ════ HOVER SWEEP: lock interactive content colors so a:hover{brand-700} can't recolor/vanish them ════ */
/* "Voir tous les biens" on the BLUE biens section was turning blue-on-blue on hover */
#mes-biens .section-head__cta:hover, #mes-biens .section-head__cta:focus-visible{ color: #fff !important; }
/* biens card: every piece keeps its colour on card hover */
.property:hover .property__title{ color: var(--ink-950) !important; }
.property:hover .property__loc{ color: var(--ink-500) !important; }
.property:hover .property__loc .icon{ color: var(--brand-600) !important; }
.property:hover .property__meta span{ color: var(--ink-700) !important; }
.property:hover .property__price-chip{ color: var(--ink-950) !important; }
.property:hover .property__fav{ color: var(--ink-700) !important; }
.property__badge{ color: var(--paper); }
.property:hover .property__badge{ color: var(--paper) !important; }
/* blog cards: keep titles/excerpts dark on hover */
.article:hover .article__title{ color: var(--ink-950); }
.article:hover .article__excerpt{ color: var(--ink-500); }

/* ════ vs-agence: both cards start blue; blue wipes off the LEFT card L->R to reveal the grey "agency" ════ */
.vs__col--legacy{ position: relative; overflow: clip; }
.vs__col--legacy::before{
  content:""; position:absolute; inset:0; z-index:6; pointer-events:none;
  background: var(--brand-600); border-radius: inherit;
  clip-path: inset(0 0 0 100%);                 /* default (no-JS): gone, card visible */
  transition: clip-path 1000ms var(--ease-in-out) 150ms;
}
html.js .vs:not(.is-visible) .vs__col--legacy::before{ clip-path: inset(0 0 0 0); }   /* before reveal: full blue */
.vs.is-visible .vs__col--legacy::before{ clip-path: inset(0 0 0 100%); }              /* sweep away L->R */
.vs__col--legacy .vs__list li{ opacity: 1 !important; transform: none !important; }    /* sweep reveals them */
@media (prefers-reduced-motion: reduce){ .vs__col--legacy::before{ display: none !important; } }

/* ════ FAQ: clear circular "+" expand widget on the right (rotates to × + fills blue when open) ════ */
.faq summary::after{
  width: 32px !important; height: 32px !important; border-radius: 50% !important;
  background-color: var(--brand-50) !important;
  box-shadow: inset 0 0 0 1px var(--brand-200) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 6v12M6 12h12'/%3E%3C/svg%3E") !important;
  background-size: 16px 16px !important; background-position: center !important; background-repeat: no-repeat !important;
  transition: transform 300ms var(--ease-in-out), background-color 240ms var(--ease-out), box-shadow 240ms var(--ease-out) !important;
}
.faq details[data-faq][open] summary::after{
  transform: rotate(135deg) !important;
  background-color: var(--brand-600) !important; box-shadow: inset 0 0 0 1px var(--brand-700) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 6v12M6 12h12'/%3E%3C/svg%3E") !important;
}

/* ════ vs-agence: blue covers the FULL width, retreats RIGHT as you scroll (scroll-linked) ════ */
.vs__col--legacy::before{ display: none !important; }   /* remove the earlier one-shot sweep */
.vs{ position: relative; }
.vs__col--legacy{ position: relative; z-index: 0 !important; }
.vs__col--saafka{ position: relative; z-index: 2 !important; }
.vs__pivot{ position: relative; z-index: 3 !important; }
.vs::before{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background: var(--brand-600); border-radius: var(--r-5);
  clip-path: inset(0 0 0 var(--vs-wipe, 100%));   /* default/no-JS: fully clipped (normal layout) */
}
@media (prefers-reduced-motion: reduce){ .vs::before{ display: none !important; } }
@media (max-width: 860px){ .vs::before{ display: none !important; } }

/* ════ vs markers: bake the ✗/✓ INTO the circle (background-position:center = guaranteed centered) ════ */
.vs__col--legacy .vs__list li::before{
  content:"" !important; position:absolute !important; left:0 !important; top:1px !important;
  width:24px !important; height:24px !important; border-radius:50% !important;
  background-color:#fff !important;
  box-shadow: inset 0 0 0 1.5px oklch(13% 0.005 258 / .16) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2399A0AE' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E") !important;
  background-size:15px 15px !important; background-position:center !important; background-repeat:no-repeat !important;
  -webkit-mask:none !important; mask:none !important; transform:none !important;
}
.vs__col--saafka .vs__list li::before{
  content:"" !important; position:absolute !important; left:0 !important; top:1px !important;
  width:24px !important; height:24px !important; border-radius:50% !important;
  background-color:var(--secondary) !important; box-shadow:none !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23020713' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12l4 4 8-8'/%3E%3C/svg%3E") !important;
  background-size:15px 15px !important; background-position:center !important; background-repeat:no-repeat !important;
  -webkit-mask:none !important; mask:none !important; transform:none !important;
}
.vs__col--legacy .vs__list li::after, .vs__col--saafka .vs__list li::after{ display:none !important; }

/* ════ vs-agence: a lantern hanging from the blue ceiling (top-left), thin chain from the top edge ════ */
#vs-agence::after{
  display: block !important; content:"" !important;
  background-image:
    url('/brand/gen-motif-lantern-t.png'),
    linear-gradient(var(--ink-300), var(--ink-300)) !important;
  background-position: center bottom, top center !important;
  background-size: auto 76%, 2px 24% !important;
  background-repeat: no-repeat, no-repeat !important;
  width: clamp(80px, 9vw, 150px) !important; height: clamp(200px, 24vw, 360px) !important;
  top: 0 !important; bottom: auto !important;
  left: clamp(16px, 4vw, 80px) !important; right: auto !important;
  transform: none !important; opacity: .55 !important; z-index: 0 !important;
}

/* form inputs: clean white (no zellige texture); the card keeps its subtle texture */
.form-field input, .form-field select, .form-field textarea{ background: var(--canvas) !important; }

/* vs-agence lantern: use the hand-drawn SVG (chain built in); single layer, no gradient merge */
#vs-agence::after{
  background-image: url('/brand/lantern.svg') !important;
  background-position: top center !important;
  background-size: contain !important;
  background-repeat: no-repeat !important;
  width: clamp(70px, 8vw, 130px) !important;
  height: clamp(190px, 23vw, 330px) !important;
  opacity: .6 !important;
}

/* vs-agence lantern: just the gen-motif-lantern-t png, top-left, no added chain */
#vs-agence::after{
  background-image: url('/brand/gen-motif-lantern-t.png') !important;
  background-position: top center !important;
  background-size: contain !important;
  background-repeat: no-repeat !important;
  width: clamp(100px, 12vw, 180px) !important;
  height: clamp(200px, 24vw, 340px) !important;
  opacity: .55 !important;
}

/* ════ FAQ toggle = a HOUSE button (fills blue when open, presses on click) ════ */
.faq summary::after{
  content:"" !important; flex-shrink:0 !important;
  width:34px !important; height:34px !important; border-radius:50% !important;
  background-color: var(--brand-50) !important;
  box-shadow: inset 0 0 0 1px var(--brand-200) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 11.5L12 4l8.5 7.5'/%3E%3Cpath d='M5.5 10V20h13V10'/%3E%3Cpath d='M10 20v-6h4v6'/%3E%3C/svg%3E") !important;
  background-size:18px 18px !important; background-position:center !important; background-repeat:no-repeat !important;
  transform: none !important;
  transition: transform 200ms var(--ease-out), background-color 240ms var(--ease-out), box-shadow 240ms var(--ease-out) !important;
}
.faq details[data-faq][open] summary::after{
  transform: none !important;
  background-color: var(--brand-600) !important; box-shadow: inset 0 0 0 1px var(--brand-700) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 11.5L12 4l8.5 7.5'/%3E%3Cpath d='M5.5 10V20h13V10'/%3E%3Cpath d='M10 20v-6h4v6'/%3E%3C/svg%3E") !important;
}
.faq summary:active::after{ transform: scale(0.88) !important; }

/* ════ FIX: strip leftover motif MASKS that were reshaping the new content ════ */
/* lantern: kill the arch mask + the blue arch fill: leave only the lantern PNG */
#vs-agence::after{ -webkit-mask: none !important; mask: none !important; background-color: transparent !important; }
/* FAQ house: kill the old chevron mask that was clipping the house into a sliver */
.faq summary::after{ -webkit-mask: none !important; mask: none !important; }

/* biens leaf: strip the leftover arch mask + blue fill (the blob), nudge the leaf right */
#mes-biens::after{
  -webkit-mask: none !important; mask: none !important;
  background-color: transparent !important;
  right: clamp(-10px, 1.5vw, 30px) !important;
}

/* ════ stylish dropdowns (select) + calendar (date) ════ */
/* SELECT: kill native arrow, custom brand chevron, premium hover/focus */
.form-field select{
  -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important;
  cursor: pointer;
  padding-right: 46px !important;
  background-color: var(--canvas) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 16px center !important;
  background-size: 17px 17px !important;
  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out), background-color 160ms var(--ease-out) !important;
}
.form-field select:hover{ border-color: var(--brand-300) !important; }
.form-field select:focus, .form-field select:focus-visible{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231D4ED8' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
}
.form-field select option{ color: var(--ink-950); background: #fff; }

/* DATE (calendar): brand-tinted picker icon, bigger click target, hover pop */
.form-field input[type="date"]{ cursor: pointer; }
.form-field input[type="date"]::-webkit-calendar-picker-indicator{
  cursor: pointer; opacity: 0.95; padding: 2px; margin-left: 6px;
  border-radius: var(--r-2);
  filter: invert(29%) sepia(57%) saturate(2627%) hue-rotate(218deg) brightness(95%) contrast(101%);
  transition: opacity 140ms var(--ease-out), transform 140ms var(--ease-out), background-color 140ms var(--ease-out);
}
.form-field input[type="date"]::-webkit-calendar-picker-indicator:hover{
  opacity: 1; transform: scale(1.12); background-color: var(--brand-50);
}
.form-field input[type="date"]::-webkit-datetime-edit{ color: var(--ink-700); }
.form-field input[type="date"]:focus::-webkit-datetime-edit{ color: var(--ink-950); }

/* more breathing room between the FAQ title and the first question */
#faq .faq{ margin-top: clamp(52px, 6vw, 92px) !important; }

/* ════ custom stylish dropdown: replaces the native <select> open list ════ */
.select-wrap{ position: relative; width: 100%; }
.select-wrap > select{
  position: absolute !important; width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important; border: 0 !important;
  opacity: 0 !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; pointer-events: none !important;
}
.select-trigger{
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--ink-200); border-radius: var(--r-3);
  background: var(--canvas); color: var(--ink-950);
  font-family: inherit; font-size: var(--t-body); line-height: 1.4; text-align: left;
  cursor: pointer;
  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
.select-trigger:hover{ border-color: var(--brand-300); }
.select-trigger[aria-expanded="true"]{ border-color: var(--brand-600); box-shadow: 0 0 0 3px var(--brand-50); }
.select-trigger__label{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.select-trigger__label.is-placeholder{ color: var(--ink-400); }
.select-trigger__chevron{ flex: 0 0 auto; width: 18px; height: 18px; color: var(--brand-600); transition: transform 220ms var(--ease-out); }
.select-trigger[aria-expanded="true"] .select-trigger__chevron{ transform: rotate(180deg); }

.select-menu{
  position: fixed; z-index: 200;
  background: #fff; border: 1px solid var(--ink-200); border-radius: var(--r-4);
  box-shadow: 0 22px 50px -14px rgba(2,7,19,0.26), 0 4px 14px rgba(2,7,19,0.07);
  padding: 6px; max-height: 270px; overflow-y: auto;
  transform-origin: top center;
  opacity: 0; transform: scale(0.97) translateY(-6px); pointer-events: none;
  transition: opacity 150ms var(--ease-out), transform 180ms var(--ease-out);
}
.select-menu.is-open{ opacity: 1; transform: none; pointer-events: auto; }
.select-option{
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  padding: 10px 12px; border-radius: var(--r-2); cursor: pointer;
  color: var(--ink-700); font-size: var(--t-body); line-height: 1.3;
  transition: background-color 120ms var(--ease-out), color 120ms var(--ease-out);
}
.select-option:hover, .select-option.is-highlighted{ background: var(--brand-50); color: var(--brand-700); }
.select-option[aria-selected="true"]{ color: var(--brand-700); font-weight: 600; }
.select-option[aria-selected="true"]::after{
  content: ""; flex: 0 0 auto; width: 16px; height: 16px;
  background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231D4ED8' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-9'/%3E%3C/svg%3E");
}
.select-option:active{ transform: scale(0.99); }
@media (prefers-reduced-motion: reduce){
  .select-menu{ transition: opacity 120ms !important; transform: none !important; }
  .select-menu.is-open{ transform: none !important; }
  .select-trigger__chevron{ transition: none !important; }
}

/* ════ custom calendar (date picker): matches the dropdown ════ */
.date-wrap{ position: relative; width: 100%; }
.date-wrap > input[type="date"]{
  position: absolute !important; width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important; border: 0 !important;
  opacity: 0 !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; pointer-events: none !important;
}
.date-trigger{
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--ink-200); border-radius: var(--r-3);
  background: var(--canvas); color: var(--ink-950);
  font-family: inherit; font-size: var(--t-body); line-height: 1.4; text-align: left; cursor: pointer;
  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
.date-trigger:hover{ border-color: var(--brand-300); }
.date-trigger[aria-expanded="true"]{ border-color: var(--brand-600); box-shadow: 0 0 0 3px var(--brand-50); }
.date-trigger__label.is-placeholder{ color: var(--ink-400); }
.date-trigger__icon{ flex: 0 0 auto; width: 18px; height: 18px; color: var(--brand-600); }

.date-pop{
  position: fixed; z-index: 200; width: 300px;
  background: #fff; border: 1px solid var(--ink-200); border-radius: var(--r-4);
  box-shadow: 0 22px 50px -14px rgba(2,7,19,0.26), 0 4px 14px rgba(2,7,19,0.07);
  padding: 14px; transform-origin: top center;
  opacity: 0; transform: scale(0.97) translateY(-6px); pointer-events: none;
  transition: opacity 150ms var(--ease-out), transform 180ms var(--ease-out);
}
.date-pop.is-open{ opacity: 1; transform: none; pointer-events: auto; }
.date-pop__head{ display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.date-pop__title{ font-weight: 700; color: var(--ink-950); font-size: var(--t-body); text-transform: capitalize; }
.date-pop__nav{
  width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%;
  border: 1px solid var(--ink-200); background: #fff; color: var(--ink-700); cursor: pointer;
  transition: background-color 140ms var(--ease-out), border-color 140ms var(--ease-out), color 140ms var(--ease-out), transform 120ms var(--ease-out);
}
.date-pop__nav:hover{ background: var(--brand-50); border-color: var(--brand-200); color: var(--brand-700); }
.date-pop__nav:active{ transform: scale(0.9); }
.date-pop__nav svg{ width: 16px; height: 16px; }
.date-pop__grid{ display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.date-pop__dow{ text-align: center; font-size: 11px; font-weight: 700; color: var(--ink-400); text-transform: uppercase; padding: 2px 0 8px; letter-spacing: 0.04em; }
.date-pop__day{
  aspect-ratio: 1; display: grid; place-items: center; border: 0; background: transparent;
  border-radius: var(--r-2); font-size: 13px; color: var(--ink-700); cursor: pointer; font-family: inherit;
  transition: background-color 120ms var(--ease-out), color 120ms var(--ease-out), transform 100ms var(--ease-out);
}
.date-pop__day:hover{ background: var(--brand-50); color: var(--brand-700); }
.date-pop__day.is-other{ color: var(--ink-300); }
.date-pop__day.is-today{ box-shadow: inset 0 0 0 1.5px var(--brand-200); font-weight: 700; }
.date-pop__day.is-selected{ background: var(--brand-600) !important; color: #fff !important; font-weight: 700; }
.date-pop__day:active{ transform: scale(0.9); }
.date-pop__foot{ display: flex; justify-content: space-between; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--ink-100); }
.date-pop__action{ background: transparent; border: 0; font: inherit; font-size: var(--t-small); font-weight: 600; color: var(--brand-600); cursor: pointer; padding: 4px 8px; border-radius: var(--r-2); transition: background-color 120ms var(--ease-out); }
.date-pop__action:hover{ background: var(--brand-50); }
@media (prefers-reduced-motion: reduce){ .date-pop{ transition: opacity 120ms !important; transform: none !important; } .date-pop.is-open{ transform: none !important; } }

/* biens + article pages: clean reading surface: no section motifs (zellige weave + corner shapes) */
.page-biens .section::before, .page-biens .section::after,
.page-article .section::before, .page-article .section::after,
.page-blog .section::before, .page-blog .section::after{ display: none !important; }

/* ════ hero eyebrow: refined "verified advisor" chip (was a loud solid-mint pill) ════ */
.hero__eyebrow{
  background: #fff !important;
  color: var(--ink-700) !important;
  box-shadow: 0 8px 24px -10px rgba(2,7,19,0.16), inset 0 0 0 1px rgba(2,7,19,0.07) !important;
  border-radius: 999px !important;
  padding: 8px 18px 8px 14px !important;
  gap: 9px !important;
  font-weight: 700 !important;
  letter-spacing: 0.15em !important;
  font-size: 11.5px !important;
  text-transform: uppercase !important;
}
.hero__eyebrow .icon{
  width: 17px !important; height: 17px !important; flex: 0 0 auto;
  color: var(--success) !important;          /* mint verified mark */
}

/* ════ vs-agence lantern: bigger ════ */
#vs-agence::after{
  width: clamp(150px, 17vw, 268px) !important;
  height: clamp(280px, 32vw, 470px) !important;
}

/* ════ lead form: status states (success / error / field errors) ════ */
.form-status{
  border-radius: var(--r-3);
  padding: var(--s-4) var(--s-5);
  font-size: 15px; line-height: 1.55;
}
.form-status--success{
  background: var(--success-100, #E7FBEA); color: #0E5A1D;
  box-shadow: inset 0 0 0 1px rgba(14,90,29,0.18);
}
.form-status--error{
  background: #FDECEC; color: #8C1D1D;
  box-shadow: inset 0 0 0 1px rgba(140,29,29,0.18);
}
.form-status__again{
  margin-top: var(--s-3);
  background: none; border: 0; padding: 0;
  font: inherit; font-weight: 700; color: inherit;
  text-decoration: underline; cursor: pointer;
}
/* once sent, only the confirmation stays visible */
.contact-form.is-sent > :not([data-form-status]){ display: none !important; }

.form-field.has-error input,
.form-field.has-error select,
.form-field.has-error textarea{
  box-shadow: inset 0 0 0 2px #C33D3D !important;
}
.field-error{ margin-top: 6px; font-size: 13px; font-weight: 600; color: #8C1D1D; }

/* ═════════════════════════════════════════════════════════════════
   article.html : page article du blog conseiller
   ═════════════════════════════════════════════════════════════════ */
/* linked blog card: .article already sets display:flex (author rule beats
   the UA default `a{display:inline}`), so only the anchor's own color needs
   resetting; hover behaviour is inherited free via the existing
   .article:hover / .article__media img selectors (class-only, tag-agnostic). */
a.article { color: inherit; }

.article-hero {
  padding-block: var(--s-8) var(--s-6);
  background: linear-gradient(180deg, var(--brand-50) 0%, var(--canvas) 100%);
}
.article-hero .container { max-width: 820px; }
/* the pill is a flex item inside a card; here it sits in a plain block box */
.article-hero .article__cat { display: inline-block; margin-top: var(--s-4); }

/* blog index: an archive, not a teaser. The home page's featured-first ratio
   (1.5fr 1fr 1fr) only reads well with exactly 3 cards. */
.page-blog .blog-grid { grid-template-columns: repeat(3, 1fr); }
.page-blog .article-hero .container { max-width: none; }
@media (max-width: 1024px) { .page-blog .blog-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px)  { .page-blog .blog-grid { grid-template-columns: 1fr; } }
.article-hero h1 { color: var(--ink-950); font-weight: 800; letter-spacing: -0.04em; line-height: 1.05; font-size: var(--t-h1); }
.article-byline { color: var(--ink-500); font-size: var(--t-small); }

.article-media { max-width: 820px; margin-inline: auto; }
.article-media img {
  width: 100%; aspect-ratio: 16 / 9; object-fit: cover;
  border-radius: var(--r-5); border: var(--frame);
}

.article-body { max-width: 70ch; margin: var(--s-7) auto 0; font-size: var(--t-body); line-height: 1.7; color: var(--ink-700); }
.article-body > p + p { margin-top: var(--s-4); }
.article-body h2 { font-size: var(--t-h3); color: var(--ink-950); margin-top: var(--s-7); margin-bottom: var(--s-3); }

.article-cta {
  max-width: 820px; margin: var(--s-8) auto 0; padding: var(--s-6) var(--s-5);
  background: var(--brand-50); border-radius: var(--r-4); text-align: center;
}
.article-cta__actions { display: flex; gap: var(--s-3); justify-content: center; flex-wrap: wrap; margin-top: var(--s-4); }
