/* Les Commercialisateurs Île-de-France — prototype de refonte.
   Charte : bleu #0061B2, menthe #62D2AF, blanc. Proxima Nova (fichiers locaux de bureau : licence web à prévoir).
   Ce fichier deviendra assets/css/main.css du thème WordPress. */

/* Proxima Nova : déclarée par le thème (fichiers sous licence dans assets/fonts) ou par un kit Adobe Fonts.
   Remplacement provisoire : Montserrat (licence libre OFL, fournie avec le thème). */
@font-face { font-family: 'Montserrat'; src: url('../fonts/montserrat-400.woff2') format('woff2'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Montserrat'; src: url('../fonts/montserrat-600.woff2') format('woff2'); font-weight: 600; font-display: swap; }
@font-face { font-family: 'Montserrat'; src: url('../fonts/montserrat-700.woff2') format('woff2'); font-weight: 700; font-display: swap; }

:root {
  --lc-blue: #0061b2;
  --lc-blue-press: #004f91;
  --lc-blue-deep: #003a6b;
  --lc-night: #041f3a;            /* bleu nuit dérivé du bleu de marque, pour les sections photo */
  --lc-night-2: #062a4d;
  --lc-mint: #62d2af;
  --lc-mint-press: #4cc39d;
  --lc-mint-ink: #04314f;         /* texte posé sur la menthe */
  --lc-ink: #0d2b45;
  --lc-ink-soft: #4a5d70;
  --lc-paper: #ffffff;
  --lc-mist: #f1f5f8;
  --lc-mist-2: #e4ecf2;

  /* Verre */
  --lc-glass-bg: rgba(255, 255, 255, 0.13);
  --lc-glass-bg-strong: rgba(255, 255, 255, 0.2);
  --lc-glass-edge: rgba(255, 255, 255, 0.34);
  --lc-glass-blur: blur(18px) saturate(150%);
  --lc-glass-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35);
  --lc-glass-light-bg: rgba(255, 255, 255, 0.72);
  --lc-glass-light-edge: rgba(255, 255, 255, 0.9);
  --lc-glass-blue-bg: rgba(0, 97, 178, 0.26);

  --lc-radius: 22px;
  --lc-radius-s: 14px;
  --lc-gutter: clamp(16px, 3vw, 44px);
  --lc-max: 1360px;
  --lc-nav-h: 84px;
  --lc-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --lc-ease-io: cubic-bezier(0.65, 0, 0.35, 1);
  --lc-font: 'Proxima Nova', 'proxima-nova', 'Montserrat', 'Segoe UI', system-ui, sans-serif;
  --lc-z-nav: 40; --lc-z-menu: 50; --lc-z-skip: 60;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--lc-nav-h) + 12px); }
body {
  margin: 0; font-family: var(--lc-font); font-size: 18px; line-height: 1.55;
  color: var(--lc-ink); background: var(--lc-paper); -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
img, video { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote, dl, dd { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--lc-mint); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--lc-mint); color: var(--lc-mint-ink); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: var(--lc-gutter); top: -80px; z-index: var(--lc-z-skip); padding: 12px 18px; border-radius: 12px; background: var(--lc-blue); color: #fff; font-weight: 600; text-decoration: none; }
.skip:focus { top: 12px; }

.wrap { width: 100%; max-width: var(--lc-max); margin-inline: auto; padding-inline: var(--lc-gutter); }
.section { padding-block: clamp(80px, 11vw, 160px); }
.section--tight { padding-block: clamp(56px, 7vw, 96px); }
.section--mist { background: var(--lc-mist); }
.section--night { background: var(--lc-night); color: #fff; }

/* ---------- Typographie ---------- */
.display {
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.01em;
  font-size: clamp(2.5rem, 6.4vw, 6.6rem); line-height: 0.92;
}
.display .thin { display: block; font-weight: 400; letter-spacing: 0.06em; font-size: 0.56em; line-height: 1.1; }
.h2 { font-weight: 700; font-size: clamp(2rem, 4.2vw, 3.9rem); line-height: 0.98; letter-spacing: -0.02em; text-wrap: balance; }
.h2--caps { text-transform: uppercase; letter-spacing: 0.01em; }
.h3 { font-weight: 700; font-size: clamp(1.35rem, 2vw, 1.75rem); line-height: 1.1; letter-spacing: -0.01em; }
.lead { font-size: clamp(1.1rem, 1.5vw, 1.3rem); line-height: 1.5; max-width: 58ch; }
.muted { color: var(--lc-ink-soft); }
.on-dark .muted, .section--night .muted { color: rgba(255, 255, 255, 0.74); }
.kicker { font-size: 15px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--lc-blue); }
.on-dark .kicker, .section--night .kicker { color: var(--lc-mint); }
.prose p + p { margin-top: 1em; }
.prose { max-width: 68ch; }
.num { font-variant-numeric: tabular-nums; }
.blue { color: var(--lc-blue); }
.mint { color: var(--lc-mint); }

/* ---------- Boutons ---------- */
.btn {
  --bg: var(--lc-blue); --fg: #fff;
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 52px; padding: 0 10px 0 24px; border: 0; border-radius: 999px;
  background: var(--bg); color: var(--fg); font-weight: 600; font-size: 16px; text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background-color 240ms var(--lc-ease), transform 200ms var(--lc-ease), color 240ms var(--lc-ease);
}
@media (hover: hover) and (pointer: fine) { .btn:hover { background: var(--lc-blue-press); } }
.btn:active { transform: scale(0.98); }
.btn__icon {
  display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.18); transition: transform 300ms var(--lc-ease);
}
@media (hover: hover) and (pointer: fine) { .btn:hover .btn__icon { transform: translate(2px, -1px) scale(1.06); } }
.btn__icon svg { width: 14px; height: 14px; }
.btn--mint { --bg: var(--lc-mint); --fg: var(--lc-mint-ink); }
@media (hover: hover) and (pointer: fine) { .btn--mint:hover { background: var(--lc-mint-press); } }
.btn--mint .btn__icon { background: rgba(4, 49, 79, 0.12); }
.btn--glass {
  --bg: var(--lc-glass-bg-strong); --fg: #fff;
  border: 1px solid var(--lc-glass-edge); backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
}
@media (hover: hover) and (pointer: fine) { .btn--glass:hover { background: rgba(255, 255, 255, 0.3); } }
.btn--ghost { --bg: transparent; --fg: var(--lc-blue); box-shadow: inset 0 0 0 1.5px currentColor; }
@media (hover: hover) and (pointer: fine) { .btn--ghost:hover { background: rgba(0, 97, 178, 0.07); } }
.btn--plain { padding: 0 24px; }
.link {
  color: var(--lc-blue); font-weight: 600; text-decoration: underline; text-decoration-thickness: 2px;
  text-underline-offset: 5px; text-decoration-color: var(--lc-mint); transition: text-underline-offset 200ms var(--lc-ease);
}
@media (hover: hover) and (pointer: fine) { .link:hover { text-underline-offset: 3px; } }
.on-dark .link { color: #fff; }

/* ---------- Verre ---------- */
.glass {
  background: var(--lc-glass-bg); border: 1px solid var(--lc-glass-edge); border-radius: var(--lc-radius);
  backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
  box-shadow: var(--lc-glass-shadow); color: #fff;
}
.glass--strong { background: var(--lc-glass-bg-strong); }
.glass--blue { background: var(--lc-glass-blue-bg); }
.glass--light { background: var(--lc-glass-light-bg); border-color: var(--lc-glass-light-edge); color: var(--lc-ink); box-shadow: inset 0 1px 0 #fff; }
/* Puces posées sur les photos : sans flou d'arrière-plan. Chaque flou se recalcule à chaque image du
   défilement au-dessus de photos en mouvement (mesuré : principale source d'à-coups de l'accueil à
   l'ordinateur) ; à cette taille il ne se voit presque pas. Un fond bleu nuit léger sous le voile blanc garde
   le contraste du texte. Les étiquettes de programme (.xp-tag), plus grandes, gardent leur verre dépoli. */
.chip.glass { -webkit-backdrop-filter: none; backdrop-filter: none; background: linear-gradient(var(--lc-glass-bg), var(--lc-glass-bg)), rgba(4, 31, 58, 0.42); }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .glass { background: rgba(4, 31, 58, 0.78); }
  .glass--light { background: rgba(255, 255, 255, 0.95); }
}
/* Repères « + » aux angles, repris de la référence */
.marks { position: relative; }
.marks::before, .marks::after {
  content: '+'; position: absolute; font-weight: 400; font-size: 22px; line-height: 1; color: currentColor; opacity: 0.85; pointer-events: none;
}
.marks::before { top: 10px; right: 14px; }
.marks::after { bottom: 10px; left: 14px; }

/* ---------- En-tête ---------- */
.nav {
  position: fixed; inset: 14px var(--lc-gutter) auto; z-index: var(--lc-z-nav);
  height: 64px; display: flex; align-items: center; gap: 28px;
  padding: 0 10px 0 22px; border-radius: 999px; color: #fff;
  border: 1px solid transparent;
  transition: background-color 400ms var(--lc-ease), color 400ms var(--lc-ease), border-color 400ms var(--lc-ease), box-shadow 400ms var(--lc-ease), transform 500ms var(--lc-ease);
}
.nav.is-glass {
  background: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.3);
  backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
}
.nav.is-solid {
  background: rgba(255, 255, 255, 0.82); border-color: rgba(255, 255, 255, 0.95); color: var(--lc-ink);
  backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
  box-shadow: 0 18px 40px -28px rgba(4, 31, 58, 0.5);
}
.nav.is-hidden { transform: translateY(-120%); }
.nav__brand { display: block; flex: none; }
.nav__brand img { height: 38px; width: auto; }
.nav__brand .logo-color { display: none; }
.nav.is-solid .logo-white { display: none; }
.nav.is-solid .logo-color { display: block; }
.nav__links { display: flex; gap: 26px; margin-left: auto; }
.nav__links a, .nav__tel {
  position: relative; font-size: 15.5px; font-weight: 600; text-decoration: none; padding: 6px 0;
}
.nav__links a::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; border-radius: 2px;
  background: var(--lc-mint); transform: scaleX(0); transform-origin: left; transition: transform 300ms var(--lc-ease);
}
.nav__links a[aria-current='page']::after { transform: scaleX(1); }
@media (hover: hover) and (pointer: fine) { .nav__links a:hover::after { transform: scaleX(1); } }
.nav__actions { display: flex; align-items: center; gap: 18px; }
.nav__actions .btn { min-height: 46px; }
.nav__toggle {
  display: none; width: 46px; height: 46px; border-radius: 50%; border: 1px solid currentColor; background: transparent; cursor: pointer; position: relative;
}
.nav__toggle span { position: absolute; left: 13px; right: 13px; height: 2px; background: currentColor; border-radius: 2px; transition: transform 400ms var(--lc-ease), top 400ms var(--lc-ease); }
.nav__toggle span:first-child { top: 18px; }
.nav__toggle span:last-child { top: 26px; }
.menu-open .nav__toggle span:first-child { top: 22px; transform: rotate(45deg); }
.menu-open .nav__toggle span:last-child { top: 22px; transform: rotate(-45deg); }

.menu {
  position: fixed; inset: 0; z-index: var(--lc-z-menu); padding: 110px var(--lc-gutter) 40px;
  background: rgba(4, 31, 58, 0.72); backdrop-filter: blur(26px) saturate(140%); -webkit-backdrop-filter: blur(26px) saturate(140%);
  color: #fff; display: flex; flex-direction: column; gap: 6px;
  opacity: 0; visibility: hidden; transition: opacity 400ms var(--lc-ease), visibility 0s linear 400ms;
}
.menu-open .menu { opacity: 1; visibility: visible; transition: opacity 400ms var(--lc-ease); }
.menu a { font-size: clamp(2rem, 9vw, 3rem); font-weight: 700; text-decoration: none; line-height: 1.15; transform: translateY(24px); opacity: 0; transition: transform 600ms var(--lc-ease), opacity 600ms var(--lc-ease); }
.menu-open .menu a { transform: none; opacity: 1; }
.menu-open .menu a:nth-child(2) { transition-delay: 60ms; } .menu-open .menu a:nth-child(3) { transition-delay: 120ms; }
.menu-open .menu a:nth-child(4) { transition-delay: 180ms; } .menu-open .menu a:nth-child(5) { transition-delay: 240ms; }
.menu-open .menu a:nth-child(6) { transition-delay: 300ms; } .menu-open .menu a:nth-child(7) { transition-delay: 360ms; }
.menu__foot { margin-top: auto; display: grid; gap: 12px; font-size: 17px; }
.menu__foot a { font-size: 17px; font-weight: 600; transform: none; opacity: 1; }
.menu-open { overflow: hidden; }
.menu-open .nav { z-index: calc(var(--lc-z-menu) + 1); color: #fff; background: transparent; border-color: transparent; box-shadow: none; backdrop-filter: none; }
.menu-open .nav .logo-white { display: block; } .menu-open .nav .logo-color { display: none; }

/* ---------- Hero accueil ---------- */
.hero { position: relative; min-height: 100vh; min-height: 100svh; color: #fff; overflow: hidden; background: var(--lc-night); isolation: isolate; }
.hero__media { position: absolute; inset: 0; z-index: -2; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; transform-origin: 60% 40%; will-change: transform; }
.hero::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(180deg, rgba(4, 31, 58, 0.55) 0%, rgba(4, 31, 58, 0) 26%),
    linear-gradient(0deg, rgba(4, 31, 58, 0.88) 0%, rgba(4, 31, 58, 0.35) 42%, rgba(4, 31, 58, 0) 64%),
    linear-gradient(90deg, rgba(4, 31, 58, 0.55) 0%, rgba(4, 31, 58, 0) 55%);
}
.hero__inner {
  min-height: 100vh; min-height: 100svh; display: grid; align-content: end; gap: 28px;
  padding: calc(var(--lc-nav-h) + 40px) var(--lc-gutter) 28px; max-width: var(--lc-max); margin-inline: auto;
}
.hero__title { max-width: 14ch; }
.display-sub { margin-top: 10px; font-weight: 400; text-transform: uppercase; letter-spacing: 0.08em; font-size: clamp(1.15rem, 2.5vw, 2.4rem); line-height: 1.1; }
.hero__lead { max-width: 52ch; font-size: clamp(1.05rem, 1.4vw, 1.25rem); color: rgba(255, 255, 255, 0.9); }
.hero__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: end; }

.search { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)) auto; gap: 6px; padding: 8px; border-radius: 26px; }
.search__field { position: relative; display: grid; min-width: 0; padding: 10px 16px 10px; border-radius: 18px; background: rgba(255, 255, 255, 0.1); transition: background-color 240ms var(--lc-ease); }
.search__field:focus-within { background: rgba(255, 255, 255, 0.2); }
@media (hover: hover) and (pointer: fine) { .search__field:hover { background: rgba(255, 255, 255, 0.2); } }
.search__field label { font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.85; }
.search__field select, .search__field input {
  width: 100%; border: 0; background: transparent; padding: 2px 22px 2px 0; font-size: 17px; color: inherit; appearance: none; -webkit-appearance: none; cursor: pointer;
}
.search__field select option { color: var(--lc-ink); }
.search__field select:focus, .search__field input:focus { outline: none; }
.search__field:focus-within { box-shadow: inset 0 0 0 2px var(--lc-mint); }
.search__field::after {
  content: ''; position: absolute; right: 18px; bottom: 18px; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); opacity: 0.8; pointer-events: none;
}
.search__field--text::after { display: none; }
.search .btn { min-height: 100%; border-radius: 18px; padding: 0 12px 0 26px; }
.glass--light .search__field { background: var(--lc-mist); }
.glass--light .search__field:focus-within { background: var(--lc-mist-2); }
@media (hover: hover) and (pointer: fine) { .glass--light .search__field:hover { background: var(--lc-mist-2); } }
.glass--light .search__field label { color: var(--lc-ink-soft); opacity: 1; }

.facts { display: flex; gap: 6px; padding: 8px; border-radius: 26px; }
.fact { padding: 12px 18px; border-radius: 18px; background: rgba(255, 255, 255, 0.08); min-width: 112px; }
.fact strong { display: block; font-size: 30px; line-height: 1; font-weight: 700; }
.fact span { font-size: 14px; opacity: 0.85; }

/* Annotations posées sur la photo */
.pins { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.pin { position: absolute; display: flex; align-items: flex-start; gap: 10px; pointer-events: auto; }
.pin__dot {
  flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center;
  background: rgba(255, 255, 255, 0.18); border: 1px solid rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font-size: 22px; line-height: 1; color: #fff;
}
.pin__dot::before { content: '+'; transform: translateY(-1px); }
.pin__label { padding: 10px 14px; border-radius: 14px; font-size: 14.5px; line-height: 1.3; max-width: 250px; }
.pin__label b { display: block; font-size: 16px; }
.pin::after { content: ''; position: absolute; left: 16px; top: 34px; width: 1px; height: 60px; background: linear-gradient(rgba(255,255,255,0.7), rgba(255,255,255,0)); }

.scroll-cue { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; opacity: 0.85; }
.scroll-cue i { width: 1px; height: 36px; background: rgba(255,255,255,0.6); position: relative; overflow: hidden; }
.scroll-cue i::after { content: ''; position: absolute; left: 0; top: -40%; width: 1px; height: 40%; background: #fff; animation: cue 2.2s var(--lc-ease-io) infinite; }
@keyframes cue { to { top: 100%; } }

/* ---------- Pile d'exclusivités (sections collantes empilées) ---------- */
.stack { position: relative; background: var(--lc-night); }
.stack__intro { color: #fff; padding: clamp(80px, 10vw, 140px) 0 48px; }
.stack__intro .wrap { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 32px; align-items: end; }
.slide { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; color: #fff; isolation: isolate; }
.slide__media { position: absolute; inset: 0; z-index: -2; }
.slide__media img { width: 100%; height: 100%; object-fit: cover; }
.slide::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(4,31,58,0.78) 0%, rgba(4,31,58,0.25) 52%, rgba(4,31,58,0) 75%), linear-gradient(0deg, rgba(4,31,58,0.6), rgba(4,31,58,0) 45%); }
.slide__inner { height: 100%; display: grid; align-content: end; padding: 0 var(--lc-gutter) clamp(32px, 6vh, 64px); max-width: var(--lc-max); margin-inline: auto; }
.slide__card { max-width: 560px; padding: 30px 32px 28px; display: grid; gap: 16px; }
.slide__count { position: absolute; top: calc(var(--lc-nav-h) + 24px); right: var(--lc-gutter); font-size: clamp(4rem, 12vw, 10rem); font-weight: 700; line-height: 0.8; color: rgba(255, 255, 255, 0.16); letter-spacing: -0.04em; }
.slide__meta { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { display: inline-flex; align-items: center; min-height: 32px; padding: 0 14px; border-radius: 999px; font-size: 14px; font-weight: 600; background: rgba(255, 255, 255, 0.16); border: 1px solid rgba(255, 255, 255, 0.3); }
.chip--mint { background: var(--lc-mint); color: var(--lc-mint-ink); border-color: transparent; }
.chip--blue { background: rgba(0, 97, 178, 0.1); color: var(--lc-blue); border-color: transparent; }

/* ---------- Rail horizontal piloté par le défilement ---------- */
.rail { position: relative; }
.rail__sticky { position: sticky; top: 0; height: 100vh; height: 100svh; display: grid; grid-template-columns: 100%; align-content: center; gap: 40px; overflow: hidden; }
.rail__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 20px 24px; }
.rail__track { display: flex; gap: 24px; padding-inline: var(--lc-gutter); will-change: transform; }
.rail__item { flex: none; width: min(78vw, 520px); }
.rail.is-native .rail__sticky { position: static; height: auto; padding-block: 24px; }
.rail.is-native .rail__track { overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; scrollbar-width: thin; }
.rail.is-native .rail__item { scroll-snap-align: start; }

/* ---------- Cartes programme ---------- */
.card { position: relative; display: block; text-decoration: none; color: #fff; border-radius: var(--lc-radius); overflow: hidden; isolation: isolate; aspect-ratio: 4 / 5; background: var(--lc-night-2); }
.card--wide { aspect-ratio: 4 / 3; }
.card__img { position: absolute; inset: 0; z-index: -2; }
.card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1200ms var(--lc-ease); }
@media (hover: hover) and (pointer: fine) { .card:hover .card__img img { transform: scale(1.06); } }
.card::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(4,31,58,0.82) 0%, rgba(4,31,58,0.2) 46%, rgba(4,31,58,0) 70%); }
.card__top { position: absolute; top: 14px; left: 14px; right: 14px; display: flex; justify-content: space-between; gap: 8px; }
.card__body { position: absolute; left: 12px; right: 12px; bottom: 12px; padding: 18px 20px; display: grid; gap: 6px; border-radius: 16px; }
.card__title { font-size: 21px; font-weight: 700; line-height: 1.12; }
.card__place { font-size: 16px; line-height: 1.35; opacity: 0.92; }
.card__typo { font-size: 15px; line-height: 1.35; opacity: 0.82; margin-top: -2px; } /* typologies, sur leur propre ligne sous la ville */
.card__price { font-weight: 700; font-size: 16px; color: var(--lc-mint); }
.card__go {
  position: absolute; right: 16px; bottom: 16px; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
  background: #fff; color: var(--lc-blue); transform: scale(0.6); opacity: 0; transition: transform 400ms var(--lc-ease), opacity 300ms var(--lc-ease);
}
.card:focus-visible .card__go { transform: none; opacity: 1; }
@media (hover: hover) and (pointer: fine) { .card:hover .card__go { transform: none; opacity: 1; } }
.card__go svg { width: 14px; height: 14px; }

.grid-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.grid-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ---------- Accompagnement ---------- */
.journey { position: relative; color: #fff; overflow: hidden; isolation: isolate; background: var(--lc-night); }
.journey__bg { position: absolute; inset: -10% 0; z-index: -2; }
.journey__bg img { width: 100%; height: 100%; object-fit: cover; opacity: 0.5; }
.journey::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--lc-night) 0%, rgba(4,31,58,0.55) 30%, rgba(4,31,58,0.7) 75%, var(--lc-night) 100%); }
.journey__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 56px; }
.step { padding: 28px 24px 30px; display: grid; gap: 14px; align-content: start; min-height: 300px; }
.step__mark { font-size: 54px; font-weight: 700; line-height: 1; color: var(--lc-mint); letter-spacing: -0.04em; }
.step p { color: rgba(255, 255, 255, 0.85); font-size: 16.5px; }
.step:nth-child(2) { transform: translateY(40px); } .step:nth-child(4) { transform: translateY(40px); }

/* ---------- Bandeaux défilants ---------- */
.marquee { overflow: hidden; display: flex; gap: 0; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.marquee__run { display: flex; flex: none; gap: 14px; padding-right: 14px; animation: marquee var(--dur, 48s) linear infinite; }
.marquee--rev .marquee__run { animation-direction: reverse; }
@media (hover: hover) and (pointer: fine) { .marquee:hover .marquee__run { animation-play-state: paused; } }
@keyframes marquee { to { transform: translateX(-100%); } }
.tag { display: inline-flex; align-items: center; gap: 12px; padding: 14px 22px; border-radius: 999px; font-size: 19px; font-weight: 600; white-space: nowrap; background: var(--lc-paper); box-shadow: inset 0 0 0 1px var(--lc-mist-2); }
.tag::before { content: '+'; color: var(--lc-mint); font-weight: 700; }
.tag--blue { background: var(--lc-blue); color: #fff; box-shadow: none; }

/* ---------- Chiffres ---------- */
.figures { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.figure { padding: 28px; border-radius: var(--lc-radius); background: var(--lc-mist); }
.figure strong { display: block; font-size: clamp(3rem, 6vw, 5.4rem); line-height: 0.9; font-weight: 700; color: var(--lc-blue); letter-spacing: -0.03em; }
.figure span { font-size: 17px; color: var(--lc-ink-soft); }

/* ---------- FAQ ---------- */
.faq { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 96px); }
.faq__list { display: grid; gap: 10px; }
.qa { border-radius: 18px; background: var(--lc-mist); transition: background-color 300ms var(--lc-ease); }
.qa[open] { background: var(--lc-mist-2); }
.qa summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 22px 24px; font-weight: 700; font-size: 19px; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary::after { content: '+'; flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--lc-blue); font-size: 22px; font-weight: 400; transition: transform 400ms var(--lc-ease), background-color 300ms var(--lc-ease); }
.qa[open] summary::after { transform: rotate(45deg); background: var(--lc-mint); color: var(--lc-mint-ink); }
.qa__a { padding: 0 24px 24px; color: var(--lc-ink); max-width: 64ch; }
.qa__a p + p { margin-top: 0.8em; }

/* ---------- Formulaires ---------- */
.form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.form .full { grid-column: 1 / -1; }
.field { display: grid; gap: 6px; }
.field label, .field legend { font-size: 14px; font-weight: 600; }
.field input, .field select, .field textarea {
  width: 100%; min-height: 54px; padding: 14px 18px; border-radius: 14px; border: 1px solid transparent;
  background: rgba(255, 255, 255, 0.9); color: var(--lc-ink); font-size: 17px; transition: border-color 200ms var(--lc-ease), box-shadow 200ms var(--lc-ease);
}
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--lc-blue); box-shadow: 0 0 0 3px rgba(98, 210, 175, 0.55); }
.field input:user-invalid, .field textarea:user-invalid { border-color: #c4302b; }
.light-form .field input, .light-form .field select, .light-form .field textarea { background: var(--lc-mist); }
.segmented { display: flex; gap: 6px; padding: 5px; border-radius: 999px; background: rgba(255, 255, 255, 0.14); width: fit-content; border: 0; margin: 0; }
/* Taille fixée : sinon la règle de largeur des champs de formulaire (100 %) les fait déborder de la carte. */
.segmented input { position: absolute; opacity: 0; pointer-events: none; width: 1px !important; height: 1px; margin: 0; padding: 0; }
.segmented label { padding: 10px 20px; border-radius: 999px; cursor: pointer; font-weight: 600; font-size: 15px; transition: background-color 240ms var(--lc-ease), color 240ms var(--lc-ease); }
.segmented input:checked + label { background: #fff; color: var(--lc-blue); }
.segmented input:focus-visible + label { outline: 3px solid var(--lc-mint); outline-offset: 2px; }
.light-form .segmented { background: var(--lc-mist); }
.light-form .segmented input:checked + label { background: var(--lc-blue); color: #fff; }
.form__note { font-size: 14px; }
.form__status { grid-column: 1 / -1; padding: 14px 18px; border-radius: 14px; background: rgba(98, 210, 175, 0.18); font-size: 15.5px; }
.form__status[hidden] { display: none; }
.consent { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; }
.consent input { width: 20px; height: 20px; min-height: 0; margin-top: 2px; accent-color: var(--lc-blue); }

.contact-band { position: relative; color: #fff; isolation: isolate; overflow: hidden; }
.contact-band__bg { position: absolute; inset: -12% 0; z-index: -2; }
.contact-band__bg img { width: 100%; height: 100%; object-fit: cover; }
.contact-band::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(4,31,58,0.85) 0%, rgba(4,31,58,0.55) 50%, rgba(4,31,58,0.35) 100%); }
.contact-band__grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(32px, 6vw, 80px); align-items: center; }
.contact-band__card { padding: clamp(24px, 3vw, 40px); }
.contact-lines { display: grid; gap: 10px; margin-top: 28px; font-size: 19px; }
.contact-lines a { font-weight: 600; text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .contact-lines a:hover { color: var(--lc-mint); } }

/* ---------- En-tête de page intérieure ---------- */
.page-hero { position: relative; min-height: 72vh; min-height: 72svh; color: #fff; display: grid; align-content: end; isolation: isolate; overflow: hidden; background: var(--lc-night); }
.page-hero--short { min-height: 56vh; min-height: 56svh; }
.page-hero__media { position: absolute; inset: 0; z-index: -2; }
.page-hero__media img { width: 100%; height: 100%; object-fit: cover; will-change: transform; }
.page-hero::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(4,31,58,0.55) 0%, rgba(4,31,58,0.38) 35%, rgba(4,31,58,0.86) 100%), linear-gradient(90deg, rgba(4,31,58,0.45) 0%, rgba(4,31,58,0) 60%); }
.page-hero__inner { padding: calc(var(--lc-nav-h) + 48px) var(--lc-gutter) clamp(32px, 5vw, 64px); max-width: var(--lc-max); margin-inline: auto; width: 100%; display: grid; gap: 20px; }
.crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 14.5px; opacity: 0.9; }
.crumbs a { text-decoration: none; } @media (hover: hover) and (pointer: fine) { .crumbs a:hover { text-decoration: underline; } }
.crumbs li + li::before { content: '/'; margin-right: 8px; opacity: 0.6; }

/* ---------- Catalogue ---------- */
.catalog { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; align-items: start; }
.catalog:has(.catalog__mapcol:not([hidden])) { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
.filters { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(4, minmax(0, 1fr)); gap: 12px; align-items: end; padding: 18px; border-radius: var(--lc-radius); background: var(--lc-mist); margin-bottom: 20px; }
.filters__checks { grid-column: 1 / -2; display: flex; flex-wrap: wrap; gap: 10px 26px; padding: 4px 4px 0; }
.filters .btn { justify-self: end; min-height: 48px; }
.filters .field input, .filters .field select { background: #fff; min-height: 48px; padding: 10px 14px; font-size: 16px; }
.check { display: flex; gap: 10px; align-items: center; font-size: 16px; cursor: pointer; }
.check input { width: 20px; height: 20px; accent-color: var(--lc-blue); }
.catalog__bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 20px; }
.catalog__count { font-size: 20px; font-weight: 700; }
.catalog__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.catalog:not(:has(.catalog__mapcol:not([hidden]))) .catalog__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
[data-card].is-picked .card { outline: 3px solid var(--lc-mint); outline-offset: 3px; }

/* ---------- Carte du catalogue ---------- */
.catalog__mapcol { position: sticky; top: calc(var(--lc-nav-h) + 20px); }
.catalog__map { height: calc(100vh - var(--lc-nav-h) - 72px); height: calc(100svh - var(--lc-nav-h) - 72px); min-height: 420px; border-radius: var(--lc-radius); overflow: hidden; background: var(--lc-mist-2); isolation: isolate; }
.catalog__mapnote { margin-top: 8px; font-size: 13px; color: var(--lc-ink-soft); }
.catalog__maptoggle { display: none; }
.catalog__map .leaflet-tile-pane { filter: grayscale(0.85) sepia(0.12) hue-rotate(175deg) saturate(1.3) brightness(1.04) contrast(0.92); }
.catalog__map .leaflet-control-zoom { border: 0; margin: 14px; display: grid; gap: 6px; }
.catalog__map .leaflet-control-zoom a {
  width: 42px; height: 42px; line-height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.9); color: var(--lc-blue); font: 400 22px/40px var(--lc-font);
  background: rgba(255,255,255,0.75); backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
}
@media (hover: hover) and (pointer: fine) { .catalog__map .leaflet-control-zoom a:hover { background: #fff; } }
.catalog__map .leaflet-control-attribution { font: 12px var(--lc-font); background: rgba(255,255,255,0.75); border-radius: 10px 0 0 0; padding: 2px 8px; }
.catalog__map .leaflet-container a.leaflet-popup-close-button { color: var(--lc-ink); font-size: 22px; width: 30px; height: 30px; top: 6px; right: 6px; border-radius: 50%; background: rgba(255,255,255,0.85); line-height: 28px; z-index: 2; }
.mk {
  position: absolute; left: 0; top: 0; transform: translate(-50%, calc(-100% - 6px)); white-space: nowrap;
  display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border-radius: 999px;
  background: var(--lc-blue); color: #fff; font: 700 14px/1 var(--lc-font); border: 2px solid #fff;
  transition: transform 220ms var(--lc-ease), background-color 220ms var(--lc-ease);
}
.mk::after { content: ''; position: absolute; left: 50%; bottom: -7px; width: 10px; height: 10px; background: inherit; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: translateX(-50%) rotate(45deg); border-radius: 0 0 3px 0; }
.mk--exclu { background: var(--lc-mint); color: var(--lc-mint-ink); }
.mk--dot { min-width: 32px; justify-content: center; padding: 0; font-size: 20px; font-weight: 400; }
.mk.is-active, .leaflet-marker-icon:focus .mk { background: var(--lc-night); color: #fff; transform: translate(-50%, calc(-100% - 10px)) scale(1.12); z-index: 2; }
@media (hover: hover) and (pointer: fine) { .leaflet-marker-icon:hover .mk { background: var(--lc-night); color: #fff; transform: translate(-50%, calc(-100% - 10px)) scale(1.12); z-index: 2; } }
.leaflet-marker-icon:focus { outline: none; }
.leaflet-marker-icon:focus-visible .mk { outline: 3px solid var(--lc-mint); outline-offset: 2px; }
.mk-cluster {
  display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%;
  background: rgba(0, 97, 178, 0.82); color: #fff; font: 700 16px/1 var(--lc-font);
  border: 2px solid rgba(255,255,255,0.95); box-shadow: 0 0 0 6px rgba(0, 97, 178, 0.22);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: transform 220ms var(--lc-ease);
}
.mk-cluster.is-active { transform: scale(1.12); background: var(--lc-night); }
@media (hover: hover) and (pointer: fine) { .leaflet-marker-icon:hover .mk-cluster { transform: scale(1.12); background: var(--lc-night); } }
.mk-popup .leaflet-popup-content-wrapper {
  padding: 0; border-radius: 18px; overflow: hidden;
  background: rgba(255,255,255,0.86); backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
  border: 1px solid #fff; box-shadow: 0 18px 40px -20px rgba(4,31,58,0.55);
}
.mk-popup .leaflet-popup-content { margin: 0; width: 260px !important; }
.mk-popup .leaflet-popup-tip { background: rgba(255,255,255,0.9); }
.mk-pop { display: block; color: var(--lc-ink); text-decoration: none; }
.mk-pop img { width: 100%; height: 150px; object-fit: cover; }
.mk-pop__body { display: grid; gap: 2px; padding: 12px 16px 14px; font: 15px/1.35 var(--lc-font); }
.mk-pop__body b { font-size: 18px; }
.mk-pop__body strong { color: var(--lc-blue); }
@media (hover: hover) and (pointer: fine) { .mk-pop:hover b { color: var(--lc-blue); } }
.catalog__empty { padding: 40px; border-radius: var(--lc-radius); background: var(--lc-mist); }
.catalog__more { margin-top: 28px; display: flex; justify-content: center; }
[data-card][hidden] { display: none; }

/* ---------- Liste éditoriale (exclusivités) ---------- */
.feature { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: center; }
.feature + .feature { margin-top: clamp(72px, 9vw, 140px); }
.feature:nth-child(even) .feature__media { order: 2; }
.feature__media { position: relative; border-radius: var(--lc-radius); overflow: hidden; aspect-ratio: 16 / 11; background: var(--lc-mist); }
.feature__media img { width: 100%; height: 118%; object-fit: cover; will-change: transform; }
.feature__media .glass { position: absolute; left: 16px; bottom: 16px; padding: 10px 16px; font-weight: 600; font-size: 15px; }
.feature__body { display: grid; gap: 18px; align-content: start; }

/* ---------- Fiche programme ---------- */
.prog-hero__card { display: grid; grid-template-columns: repeat(4, auto) 1fr; gap: 8px; padding: 8px; border-radius: 24px; align-items: stretch; }
.prog-hero__card .fact { min-width: 0; }
.prog-hero__card .fact strong { font-size: clamp(17px, 1.6vw, 22px); overflow-wrap: anywhere; }
.prog-hero__card .btn { justify-self: end; border-radius: 18px; }
.prog-layout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: clamp(32px, 5vw, 72px); align-items: start; }
.prog-aside { position: sticky; top: calc(var(--lc-nav-h) + 24px); padding: 26px; border-radius: var(--lc-radius); background: var(--lc-mist); display: grid; gap: 14px; }
.gallery { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.gallery a { display: block; border-radius: 16px; overflow: hidden; grid-column: span 2; aspect-ratio: 4 / 3; background: var(--lc-mist); }
.gallery a:first-child { grid-column: span 6; aspect-ratio: 16 / 8; }
.gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms var(--lc-ease); }
@media (hover: hover) and (pointer: fine) { .gallery a:hover img { transform: scale(1.04); } }
.lots { width: 100%; border-collapse: collapse; font-size: 16.5px; }
.lots th, .lots td { text-align: left; padding: 14px 12px; border-bottom: 1px solid var(--lc-mist-2); }
.lots th { font-size: 14px; color: var(--lc-ink-soft); font-weight: 600; }
.lots td:last-child, .lots th:last-child { text-align: right; }
@media (hover: hover) and (pointer: fine) { .lots tr:hover td { background: var(--lc-mist); } }
.keyfacts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.keyfacts div { padding: 16px 18px; border-radius: 16px; background: var(--lc-mist); }
.keyfacts dt { font-size: 14px; color: var(--lc-ink-soft); font-weight: 600; }
.keyfacts dd { font-size: 18px; font-weight: 700; }

.lightbox { position: fixed; inset: 0; z-index: var(--lc-z-menu); display: grid; place-items: center; padding: 24px; background: rgba(4,31,58,0.8); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
.lightbox[hidden] { display: none; }
.lightbox img { max-height: 86vh; width: auto; border-radius: 16px; }
.lightbox button { position: absolute; top: 20px; right: 20px; }

/* ---------- Pied de page ---------- */
.footer { position: relative; background: var(--lc-night); color: #fff; overflow: hidden; isolation: isolate; padding-top: clamp(72px, 9vw, 120px); }
.footer::before { content: ''; position: absolute; width: 60vw; height: 60vw; right: -20vw; top: -30vw; z-index: -1; border-radius: 50%; background: radial-gradient(circle, rgba(0,97,178,0.55), rgba(0,97,178,0) 65%); }
.footer::after { content: ''; position: absolute; width: 40vw; height: 40vw; left: -12vw; bottom: -20vw; z-index: -1; border-radius: 50%; background: radial-gradient(circle, rgba(98,210,175,0.28), rgba(98,210,175,0) 65%); }
.footer__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 32px; }
.footer .muted { color: rgba(255, 255, 255, 0.8); }
.footer h2 { font-size: 15px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--lc-mint); margin-bottom: 14px; }
.footer li + li { margin-top: 8px; }
.footer a { text-decoration: none; color: rgba(255,255,255,0.86); }
@media (hover: hover) and (pointer: fine) { .footer a:hover { color: #fff; text-decoration: underline; text-decoration-color: var(--lc-mint); } }
.footer__cta { padding: 28px; display: grid; gap: 16px; }
.footer__name { margin-top: clamp(56px, 8vw, 100px); }
.footer__name img { width: 100%; height: auto; opacity: 0.95; }
.footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-block: 24px 32px; font-size: 14px; color: rgba(255,255,255,0.7); }
.socials { display: flex; gap: 8px; }
.socials a { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.22); transition: background-color 240ms var(--lc-ease), transform 240ms var(--lc-ease); }
@media (hover: hover) and (pointer: fine) { .socials a:hover { background: var(--lc-mint); color: var(--lc-mint-ink); transform: translateY(-2px); text-decoration: none; } }
.socials svg { width: 18px; height: 18px; }

.demo-note { display: inline-flex; gap: 8px; align-items: baseline; font-size: 14px; padding: 8px 14px; border-radius: 12px; background: rgba(98, 210, 175, 0.16); color: inherit; }
.demo-note::before { content: 'i'; font-weight: 700; color: var(--lc-mint); }
.to-check { background: rgba(255, 196, 0, 0.18); border-radius: 6px; padding: 0 4px; }

/* ---------- Apparitions au défilement ---------- */
.js [data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity 900ms var(--lc-ease), transform 900ms var(--lc-ease); transition-delay: var(--d, 0ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }
.js [data-reveal='clip'] { opacity: 1; transform: none; clip-path: inset(18% 0 0 0 round var(--lc-radius)); transition: clip-path 1200ms var(--lc-ease); }
.js [data-reveal='clip'].is-in { clip-path: inset(0 0 0 0 round var(--lc-radius)); }

/* ---------- Adaptatif ---------- */
@media (max-width: 1180px) {
  .nav__links { display: none; }
  .nav__toggle { display: block; }
  .nav__tel { display: none; }
  .nav__actions { margin-left: auto; }
  .hero__row { grid-template-columns: 1fr; }
  .grid-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .journey__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .step:nth-child(2), .step:nth-child(4) { transform: none; }
  .catalog, .catalog:has(.catalog__mapcol:not([hidden])) { grid-template-columns: 1fr; }
  .filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .filters__q { grid-column: 1 / -1; }
  .filters__checks { grid-column: 1 / -1; }
  .filters .btn { grid-column: 1 / -1; justify-self: start; }
  .catalog__grid, .catalog:not(:has(.catalog__mapcol:not([hidden]))) .catalog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog__maptoggle { display: inline-flex; }
  .catalog__mapcol { position: static; order: -1; display: none; }
  .catalog__mapcol.is-open { display: block; }
  .catalog__map { height: 62vh; height: 62svh; min-height: 340px; }
  /* minmax(0, 1fr) : une colonne « 1fr » ne descend pas sous son contenu le plus large (bouton, email),
     ce qui faisait défiler la fiche de côté sous 380 px. */
  .prog-layout { grid-template-columns: minmax(0, 1fr); }
  .prog-aside { position: static; min-width: 0; }
  .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .prog-hero__card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .prog-hero__card .btn { grid-column: 1 / -1; justify-self: stretch; }
}
@media (max-width: 860px) {
  :root { --lc-nav-h: 76px; }
  body { font-size: 17px; }
  .nav { height: 58px; inset: 10px 12px auto; padding-left: 16px; }
  .nav__brand img { height: 32px; }
  .nav__actions .btn { display: none; }
  .search { grid-template-columns: 1fr 1fr; border-radius: 22px; }
  .search__field--wide { grid-column: 1 / -1; }
  .search .btn { grid-column: 1 / -1; min-height: 56px; }
  .facts { overflow-x: auto; }
  .fact { min-width: 112px; padding: 10px 14px; }
  .fact strong { font-size: 24px; }
  .pins { display: none; }
  .stack__intro .wrap, .contact-band__grid, .faq, .feature { grid-template-columns: 1fr; }
  .feature:nth-child(even) .feature__media { order: 0; }
  .grid-cards, .grid-cards--4, .catalog__grid { grid-template-columns: 1fr; }
  .figures { grid-template-columns: 1fr; }
  .journey__grid { grid-template-columns: 1fr; }
  .step { min-height: 0; }
  .filters { grid-template-columns: 1fr 1fr; }
  .catalog__grid, .catalog:not(:has(.catalog__mapcol:not([hidden]))) .catalog__grid { grid-template-columns: 1fr; }
  .form { grid-template-columns: 1fr; }
  .footer__grid { grid-template-columns: 1fr; }
  .slide__card { padding: 22px; }
  .gallery a { grid-column: span 3; }
  .keyfacts { grid-template-columns: 1fr 1fr; }
  .lots { font-size: 15px; }
  .lots th, .lots td { padding: 12px 6px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
  .js [data-reveal], .js [data-reveal='clip'] { opacity: 1; transform: none; clip-path: none; }
  .marquee__run { animation: none; }
  .marquee { flex-wrap: wrap; mask-image: none; -webkit-mask-image: none; }
}
@media print { .nav, .menu, .footer::before, .footer::after { display: none; } }

/* Grilles en ligne qui passent sur une colonne au téléphone */
@media (max-width: 860px) {
  [data-stack-sm], .journey__head, .journey__grid[style] { grid-template-columns: 1fr !important; }
  .figures[style] { grid-template-columns: 1fr 1fr !important; }
}

/* Texte riche importé (descriptions WordPress) */
.prose h3 { font-size: clamp(1.2rem, 1.6vw, 1.45rem); line-height: 1.2; margin: 1.6em 0 0.5em; color: var(--lc-blue); }
.prose h3 strong { font-weight: 700; }
.prose h4 { font-size: 1.1rem; margin: 1.4em 0 0.4em; }
.prose ul, .prose ol { margin: 0.6em 0 1em; padding-left: 1.2em; }
.prose ul { list-style: none; padding-left: 0; }
.prose ul li { position: relative; padding-left: 26px; }
.prose ul li::before { content: '+'; position: absolute; left: 4px; top: -1px; color: var(--lc-mint); font-weight: 700; }
.prose li + li { margin-top: 0.35em; }
.prose > :first-child { margin-top: 0; }
.prog-aside .field input, .prog-aside .field textarea, .prog-aside .field select { background: #fff; }
.prog-aside .demo-note { background: rgba(98, 210, 175, 0.22); }

/* Pile d'exclusivités au téléphone : image puis carte, sans recouvrement */
@media (max-width: 860px) {
  .slide { position: relative; height: auto; padding-bottom: 28px; background: var(--lc-night); }
  .slide::before { display: none; }
  .slide__media { position: relative; inset: auto; aspect-ratio: 4 / 3; z-index: 0; }
  .slide__count { top: 16px; font-size: 4.5rem; }
  .slide__inner { height: auto; margin-top: -48px; position: relative; z-index: 1; }
  .slide__card { max-width: none; background: rgba(6, 42, 77, 0.72); }
}

/* ---------- Conseiller du programme ---------- */
.advisor { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: 'av id' 'av tel'; column-gap: 14px; row-gap: 2px; align-items: center; padding: 14px 16px; border-radius: 18px; background: #fff; }
.advisor--dark { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.22); }
.advisor__avatar { grid-area: av; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--lc-mint); color: var(--lc-mint-ink); font-weight: 700; font-size: 17px; letter-spacing: 0.02em; flex: none; }
.advisor__id { grid-area: id; display: grid; line-height: 1.2; }
.advisor__role { font-size: 14px; color: var(--lc-ink-soft); }
.advisor--dark .advisor__role { color: rgba(255, 255, 255, 0.78); }
.advisor__id b { font-size: 18px; }
.advisor__tel { grid-area: tel; font-weight: 700; font-size: 17px; color: var(--lc-blue); text-decoration: none; font-variant-numeric: tabular-nums; }
.advisor--dark .advisor__tel { color: var(--lc-mint); }
@media (hover: hover) and (pointer: fine) { .advisor__tel:hover { text-decoration: underline; text-decoration-color: var(--lc-mint); text-underline-offset: 4px; } }
.section--mist .advisor, .feature .advisor { background: var(--lc-mist); width: fit-content; min-width: 300px; }
.advisor-chip { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; width: fit-content; padding: 8px 18px 8px 8px; border-radius: 999px; font-size: 16px; }
.advisor-chip .advisor__avatar { width: 40px; height: 40px; font-size: 15px; }
.advisor-chip a { font-weight: 700; color: var(--lc-mint); text-decoration: none; font-variant-numeric: tabular-nums; }
@media (hover: hover) and (pointer: fine) { .advisor-chip a:hover { text-decoration: underline; } }
@media (max-width: 860px) { .section--mist .advisor, .feature .advisor { min-width: 0; width: 100%; } .advisor-chip { border-radius: 22px; } }

.page-hero .link, .hero .link { color: #fff; }

/* ---------- Promoteurs partenaires ---------- */
.partners { position: relative; color: #fff; overflow: hidden; isolation: isolate; background: var(--lc-night); }
.partners__bg { position: absolute; inset: -10% 0; z-index: -2; }
.partners__bg img { width: 100%; height: 100%; object-fit: cover; }
.partners::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(4,31,58,0.88) 0%, rgba(4,31,58,0.55) 45%, rgba(4,31,58,0.8) 100%); }
.partners__head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-bottom: clamp(40px, 5vw, 64px); }
.partners__head .lead { color: rgba(255, 255, 255, 0.86); }
.partners__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.partner {
  position: relative; display: grid; place-items: center; min-height: 168px; padding: 34px 24px 40px;
  transition: transform 500ms var(--lc-ease), background-color 400ms var(--lc-ease);
}
.partner img { max-width: 100%; height: auto; transition: transform 500ms var(--lc-ease); }
.partner__name { position: absolute; left: 0; right: 0; bottom: 14px; text-align: center; font-size: 14px; font-weight: 600; color: var(--lc-ink-soft); opacity: 0; transform: translateY(6px); transition: opacity 300ms var(--lc-ease), transform 400ms var(--lc-ease); }
@media (hover: hover) and (pointer: fine) { .partner:hover { transform: translateY(-6px); background: rgba(255, 255, 255, 0.9); } }
@media (hover: hover) and (pointer: fine) { .partner:hover img { transform: scale(1.05); } }
@media (hover: hover) and (pointer: fine) { .partner:hover .partner__name { opacity: 1; transform: none; } }
.partner.marks::before, .partner.marks::after { color: var(--lc-blue); opacity: 0.45; }
.partners__foot { margin-top: 36px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; font-size: 19px; font-weight: 600; }
@media (max-width: 1180px) { .partners__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 860px) {
  .partners__head { grid-template-columns: 1fr; }
  .partner { min-height: 118px; padding: 24px 16px 28px; }
  .partner img { max-width: 88%; }
  .partner__name { opacity: 1; transform: none; position: static; margin-top: 8px; font-size: 13px; }
  .partner { align-content: center; gap: 6px; }
}
.partner.glass--light { background: rgba(255, 255, 255, 0.86); }
@media (hover: hover) and (pointer: fine) { .partner.glass--light:hover { background: rgba(255, 255, 255, 0.96); } }
.journey .link, .partners .link { color: #fff; }

/* ---------- Plans et brochures ---------- */
.doc-buttons { display: flex; flex-wrap: wrap; gap: 10px; }
.btn--doc { min-height: 46px; font-size: 15px; }
.btn--doc .btn__icon { background: rgba(0, 97, 178, 0.1); }
.doc-aside { display: grid; gap: 8px; padding: 14px; border-radius: 18px; background: #fff; }
.doc-aside__t { font-size: 14px; font-weight: 600; color: var(--lc-ink-soft); }
.doc-aside .btn { width: 100%; justify-content: space-between; }
.figure .btn--doc { justify-self: start; margin-top: 4px; }

.doc-dialog {
  width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); overflow: auto;
  padding: clamp(22px, 4vw, 36px); border: 1px solid #fff; border-radius: 26px; color: var(--lc-ink);
  background: rgba(255, 255, 255, 0.86); backdrop-filter: blur(24px) saturate(160%); -webkit-backdrop-filter: blur(24px) saturate(160%);
  box-shadow: 0 30px 80px -30px rgba(4, 31, 58, 0.6);
}
.doc-dialog::backdrop { background: rgba(4, 31, 58, 0.55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.doc-dialog[open] { animation: doc-in 420ms var(--lc-ease); }
@keyframes doc-in { from { opacity: 0; transform: translateY(18px) scale(0.98); } }
.doc-dialog__x {
  position: absolute; top: 14px; right: 14px; width: 42px; height: 42px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--lc-mist); color: var(--lc-ink); font-size: 26px; line-height: 1; transition: background-color 200ms var(--lc-ease), transform 200ms var(--lc-ease);
}
@media (hover: hover) and (pointer: fine) { .doc-dialog__x:hover { background: var(--lc-mist-2); transform: rotate(90deg); } }
.doc-dialog__head { display: flex; gap: 16px; align-items: center; padding-right: 48px; margin-bottom: 14px; }
.doc-dialog__icon { flex: none; display: grid; place-items: center; width: 56px; height: 64px; border-radius: 12px 22px 12px 12px; background: var(--lc-blue); color: #fff; font-weight: 700; font-size: 15px; letter-spacing: 0.04em; }
.doc-dialog__what { font-size: 14px; font-weight: 600; color: var(--lc-blue); }
.doc-dialog__intro { margin-bottom: 18px; font-size: 16px; }
.doc-form { grid-template-columns: 1fr 1fr; }
.doc-form .field input { background: #fff; border-color: var(--lc-mist-2); }
.doc-form__actions .btn { width: 100%; }
.doc-dialog__done { display: grid; gap: 14px; outline: none; }
.doc-dialog__done[hidden] { display: none; }
@media (max-width: 560px) { .doc-form { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .doc-dialog[open] { animation: none; } }

/* =====================================================================
   Expérience mobile native
   ===================================================================== */

/* Pas de flash gris au tap ; pas de délai de double-tap sur les contrôles. */
html { -webkit-tap-highlight-color: transparent; }
a, button, summary, label, select, input[type='checkbox'], input[type='radio'], [role='button'] { touch-action: manipulation; }
/* Un appui long sur un contrôle ne sélectionne pas son libellé (le contenu reste sélectionnable). */
.btn, .chip, .nav__toggle, .qa summary, .segmented label, .doc-dialog__x, .card__go, .mobile-bar a, .mobile-bar button, .catalog-pill button {
  -webkit-user-select: none; user-select: none; -webkit-touch-callout: none;
}
/* Les surfaces superposées ne font pas défiler la page derrière elles. */
.menu, .doc-dialog, .filters.is-sheet { overscroll-behavior: contain; }

/* Appui visible immédiatement, au doigt comme à la souris. */
.card { transition: transform 160ms var(--lc-ease); }
.card:active { transform: scale(0.985); }
.partner:active, .qa summary:active, .search__field:active { transform: scale(0.985); }
.qa summary { transition: transform 140ms var(--lc-ease); }
.nav__toggle:active, .doc-dialog__x:active { transform: scale(0.92); }
.link:active, .nav__links a:active { opacity: 0.7; }

/* Encoche et barre d'accueil (viewport-fit=cover). */
.nav { top: max(14px, env(safe-area-inset-top)); }
.menu { padding-top: calc(110px + env(safe-area-inset-top)); padding-bottom: calc(40px + env(safe-area-inset-bottom)); }
.footer__legal { padding-bottom: calc(32px + env(safe-area-inset-bottom)); }

/* Champs de recherche du hero : toute la case est la zone tactile du menu déroulant. */
.search__field { padding: 0; min-height: 64px; }
.search__field label { position: absolute; left: 16px; top: 10px; pointer-events: none; }
.search__field select, .search__field input { height: 100%; min-height: 64px; padding: 30px 36px 10px 16px; border-radius: 18px; }
.search__field::after { bottom: 24px; }

/* Cibles tactiles d'au moins 44 px. */
.advisor__tel, .advisor-chip a { display: inline-flex; align-items: center; min-height: 44px; }
.check { min-height: 44px; }

@media (pointer: coarse) {
  input, select, textarea { font-size: max(16px, 1em); } /* évite le zoom automatique d'iOS */
  .crumbs a { display: inline-flex; align-items: center; min-height: 40px; }
  .footer li + li { margin-top: 0; }
  .footer ul a { display: inline-flex; align-items: center; min-height: 44px; }
  .contact-lines a, .contact-band .link, .prog-layout .link, .hist-pub__link { display: inline-flex; align-items: center; min-height: 44px; }
  .nav__mail { min-height: 44px; }
}

.hero__cta { display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center; }
.mobile-bar, .catalog-pill, .filters__sheethead, .filters__sheetfoot, .sheet-backdrop { display: none; }

@media (max-width: 860px) {
  /* ---------- Hero d'accueil compact : tout tient dans le premier écran ---------- */
  .hide-phone { display: none; }
  .hero__cta { display: none; }
  .hero__inner { gap: 16px; padding-top: calc(var(--lc-nav-h) + 24px + env(safe-area-inset-top)); padding-bottom: 16px; }
  .display { font-size: clamp(2.3rem, 11vw, 3.4rem); }
  .display-sub { font-size: clamp(1rem, 4.4vw, 1.3rem); margin-top: 6px; }
  .hero__lead { font-size: 16.5px; }
  .search { padding: 6px; gap: 6px; }
  .search__field, .search__field select { min-height: 58px; }
  .search__field select { padding-top: 26px; }
  .search__field label { top: 8px; font-size: 12px; }
  .search .btn { min-height: 54px; }
  .facts { padding: 6px; gap: 6px; }
  .fact { flex: 1; min-width: 0; padding: 8px 12px; }
  .fact strong { font-size: 21px; }
  .fact span { font-size: 12.5px; line-height: 1.25; display: block; }

  /* En-têtes de pages intérieures plus courts */
  .page-hero { min-height: 0; }
  .page-hero__inner { padding-top: calc(var(--lc-nav-h) + 40px + env(safe-area-inset-top)); gap: 14px; padding-bottom: 24px; }
  .page-hero .doc-buttons, .page-hero .advisor-chip { display: none; } /* repris dans la barre d’actions */
  .prog-hero__card { padding: 6px; gap: 6px; }
  .prog-hero__card .fact { padding: 10px 12px; }
  .prog-hero__card .fact span { font-size: 12.5px; }

  /* ---------- Rangées à faire glisser au lieu de longues colonnes ---------- */
  .grid-cards--swipe, .journey__grid--swipe {
    display: flex !important; overflow-x: auto; gap: 12px; scroll-snap-type: x mandatory;
    margin-inline: calc(var(--lc-gutter) * -1); padding: 4px var(--lc-gutter) 14px; scroll-padding-inline: var(--lc-gutter);
    scrollbar-width: none; overscroll-behavior-x: contain;
  }
  .grid-cards--swipe::-webkit-scrollbar, .journey__grid--swipe::-webkit-scrollbar { display: none; }
  .grid-cards--swipe > *, .journey__grid--swipe > * { flex: 0 0 82%; scroll-snap-align: start; }
  .journey__grid--swipe .step { transform: none !important; min-height: 0; }
  .journey__grid--swipe { margin-top: 32px; }
  .rail.is-native .rail__track { scroll-padding-inline: var(--lc-gutter); scrollbar-width: none; }
  .rail.is-native .rail__item { width: 82vw; }

  /* Pile d’exclusivités : texte limité à 3 lignes */
  .slide__card p:not(.slide__meta):not(:last-child) { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .slide__media { aspect-ratio: 16 / 11; }

  /* Catalogue : cartes paysage, moins de défilement */
  .catalog__grid .card { aspect-ratio: 4 / 3; }
  .catalog__bar .demo-note { order: 3; }

  /* Pied de page : liens sur deux colonnes */
  .footer__grid { grid-template-columns: 1fr 1fr; gap: 28px 16px; }
  .footer__cta, .footer__grid > div:last-child { grid-column: 1 / -1; }

  /* ---------- Barre d’actions des fiches ---------- */
  .mobile-bar {
    position: fixed; left: 10px; right: 10px; bottom: max(10px, env(safe-area-inset-bottom)); z-index: var(--lc-z-nav);
    display: flex; gap: 6px; padding: 6px; border-radius: 22px;
    background: rgba(4, 31, 58, 0.78); border: 1px solid rgba(255, 255, 255, 0.22);
    backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
    transform: translateY(140%); transition: transform 420ms var(--lc-ease);
  }
  .mobile-bar.is-shown { transform: none; }
  .mobile-bar > * {
    flex: 1; min-width: 0; min-height: 50px; padding: 0 10px; border-radius: 16px; border: 0;
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    font: 600 15px/1.1 var(--lc-font); text-decoration: none; white-space: nowrap; cursor: pointer;
    transition: transform 120ms var(--lc-ease), background-color 160ms var(--lc-ease);
  }
  .mobile-bar > *:active { transform: scale(0.96); }
  .mobile-bar__call { background: rgba(255, 255, 255, 0.14); color: #fff; }
  .mobile-bar__call svg { width: 17px; height: 17px; flex: none; }
  .mobile-bar .mobile-bar__doc { background: rgba(255, 255, 255, 0.14); color: #fff; }
  .mobile-bar .mobile-bar__doc .btn__icon { width: 22px; height: 22px; background: transparent; }
  .mobile-bar__cta { background: var(--lc-mint); color: var(--lc-mint-ink); }
  body:has(.mobile-bar) .footer { padding-bottom: 84px; }

  /* ---------- Catalogue : pastille « Filtres · Carte » et panneau glissant ---------- */
  .catalog-pill {
    position: fixed; left: 50%; bottom: max(14px, env(safe-area-inset-bottom)); z-index: calc(var(--lc-z-menu) + 2);
    display: flex; gap: 2px; padding: 5px; border-radius: 999px; transform: translateX(-50%);
    background: rgba(4, 31, 58, 0.86); border: 1px solid rgba(255, 255, 255, 0.24);
    backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
  }
  .catalog-pill[hidden] { display: none; }
  .catalog-pill button {
    display: inline-flex; align-items: center; gap: 8px; min-height: 46px; padding: 0 20px; border: 0; border-radius: 999px;
    background: transparent; color: #fff; font: 600 15.5px/1 var(--lc-font); cursor: pointer; transition: background-color 160ms var(--lc-ease), transform 120ms var(--lc-ease);
  }
  .catalog-pill button:active { transform: scale(0.95); }
  .catalog-pill button + button { background: rgba(255, 255, 255, 0.14); }
  .catalog-pill__badge { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--lc-mint); color: var(--lc-mint-ink); font-size: 13px; }
  .catalog-pill__badge[hidden] { display: none; }
  .catalog__maptoggle { display: none !important; }

  .filters.is-sheet {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: calc(var(--lc-z-menu) + 1); margin: 0;
    max-height: 88dvh; overflow-y: auto; border-radius: 26px 26px 0 0; background: #fff;
    padding: 0 18px calc(18px + env(safe-area-inset-bottom));
    grid-template-columns: 1fr 1fr; align-content: start;
    transform: translateY(105%); visibility: hidden;
    transition: transform 420ms var(--lc-ease), visibility 0s linear 420ms;
  }
  .filters.is-sheet.is-open { transform: none; visibility: visible; transition: transform 420ms var(--lc-ease); }
  .filters.is-sheet .filters__sheethead {
    grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center;
    position: sticky; top: 0; z-index: 1; margin: 0 -18px; padding: 18px 18px 10px; background: #fff;
  }
  .filters.is-sheet .filters__sheethead::before { content: ""; position: absolute; left: 50%; top: 7px; width: 40px; height: 4px; border-radius: 4px; background: var(--lc-mist-2); transform: translateX(-50%); }
  .filters.is-sheet .filters__sheethead .doc-dialog__x { position: static; }
  .filters.is-sheet .filters__q, .filters.is-sheet .filters__checks { grid-column: 1 / -1; }
  .filters.is-sheet .filters__checks { flex-direction: column; gap: 0; }
  .filters.is-sheet .field input, .filters.is-sheet .field select { background: var(--lc-mist); }
  .filters.is-sheet > .btn[type="reset"] { grid-column: 1 / -1; justify-self: stretch; }
  .filters.is-sheet .filters__sheetfoot {
    grid-column: 1 / -1; display: block; position: sticky; bottom: calc(-18px - env(safe-area-inset-bottom)); margin: 4px -18px 0;
    padding: 12px 18px calc(12px + env(safe-area-inset-bottom)); background: #fff;
  }
  .filters.is-sheet .filters__sheetfoot .btn { width: 100%; min-height: 54px; padding: 0 24px; }
  .sheet-backdrop { position: fixed; inset: 0; z-index: var(--lc-z-menu); background: rgba(4, 31, 58, 0.45); opacity: 0; transition: opacity 300ms var(--lc-ease); }
  .sheet-backdrop:not([hidden]) { display: block; }
  .sheet-backdrop.is-open { opacity: 1; }
  html.sheet-lock, html.sheet-lock body { overflow: hidden; }

  /* Carte plein écran au téléphone */
  .catalog__mapcol.is-open { display: block; position: fixed; inset: 0; z-index: calc(var(--lc-z-menu) + 1); background: var(--lc-mist-2); }
  .catalog__mapcol.is-open .catalog__map { height: 100dvh; min-height: 0; border-radius: 0; }
  .catalog__mapcol.is-open .catalog__mapnote { position: absolute; left: 12px; top: max(12px, env(safe-area-inset-top)); z-index: 500; margin: 0; padding: 6px 10px; border-radius: 10px; background: rgba(255, 255, 255, 0.85); font-size: 12px; }
  .catalog__mapcol.is-open .leaflet-control-zoom { margin-top: max(14px, env(safe-area-inset-top)); }
  body.map-open .nav { transform: translateY(-140%); }
}
@media (prefers-reduced-motion: reduce) {
  .mobile-bar, .filters.is-sheet { transition: none; }
}

@media (max-width: 860px) { .filters-open .catalog-pill { opacity: 0; pointer-events: none; transform: translate(-50%, 20px); } .catalog-pill { transition: opacity 240ms var(--lc-ease), transform 300ms var(--lc-ease); } }

@media (max-width: 860px) { .catalog__mapcol.is-open .catalog__mapnote { display: none; } }

.crumbs { align-items: center; }

/* Barre d'actions : la demande d'informations (l'action principale) prend la plus grande part ; les libellés
   peuvent passer sur deux lignes plutôt que d'être coupés sur les petits écrans. */
@media (max-width: 860px) {
  .mobile-bar > * { font-size: 14px; gap: 6px; padding: 0 8px; white-space: normal; text-align: center; line-height: 1.15; }
  .mobile-bar__call { flex: 0.85; }
  .mobile-bar .mobile-bar__doc { flex: 1; }
  .mobile-bar__cta { flex: 1.45; }
  .mobile-bar .mobile-bar__doc .btn__icon { width: 18px; height: 18px; }
}
@media (max-width: 360px) { .mobile-bar .mobile-bar__doc .btn__icon, .mobile-bar__call svg { display: none; } }

/* Petits téléphones : un bouton ne dépasse jamais de son bloc ; un libellé trop long passe à la ligne. */
@media (max-width: 480px) {
  .btn { max-width: 100%; white-space: normal; text-align: center; line-height: 1.2; text-wrap: balance; }
  .btn__icon { flex: none; }
}

@media (pointer: coarse) {
  .footer__legal a, .page-hero .link { display: inline-flex; align-items: center; min-height: 44px; }
  .nav__brand { padding-block: 6px; }
}
@media (max-width: 860px) {
  /* Page des exclusivités : fiches plus compactes au téléphone */
  .feature + .feature { margin-top: 56px; }
  .feature__media { aspect-ratio: 16 / 10; }
  .feature__body { gap: 12px; }
  .feature__body .muted { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .feature__body .h2 a { display: inline-block; min-height: 44px; }
  .feature .doc-buttons .btn { flex: 1 1 100%; justify-content: space-between; }
}

/* ---------- Carte de localisation des fiches ---------- */
.locate { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.locate__map { position: relative; min-height: 320px; border-radius: var(--lc-radius); overflow: hidden; background: var(--lc-mist-2); isolation: isolate; z-index: 0; }
.locate__map .leaflet-tile-pane { filter: grayscale(0.85) sepia(0.12) hue-rotate(175deg) saturate(1.3) brightness(1.04) contrast(0.92); }
.locate__map .leaflet-control-zoom { border: 0; margin: 12px; display: grid; gap: 6px; }
.locate__map .leaflet-control-zoom a { width: 40px; height: 40px; line-height: 38px; border-radius: 50%; border: 1px solid #fff; color: var(--lc-blue); font: 400 22px/38px var(--lc-font); background: rgba(255, 255, 255, 0.8); backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur); }
.locate__map .leaflet-control-attribution { font: 12px var(--lc-font); background: rgba(255, 255, 255, 0.78); border-radius: 10px 0 0 0; padding: 2px 8px; }
.locate__fallback { position: absolute; inset: 0; display: grid; place-items: center; font-weight: 600; color: var(--lc-blue); }
.locate__info { display: grid; gap: 14px; align-content: start; }
.locate__info .keyfacts { grid-template-columns: 1fr; }
.locate__links { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; }
.mk--place { font-size: 15px; padding: 0 14px; min-height: 36px; box-shadow: 0 0 0 8px rgba(0, 97, 178, 0.18); }
.mk--exclu.mk--place { box-shadow: 0 0 0 8px rgba(98, 210, 175, 0.3); }
.lot-card { display: grid; gap: 10px; align-content: start; }
@media (max-width: 860px) {
  .locate { grid-template-columns: 1fr; }
  .locate__map { min-height: 260px; }
  .locate__info .keyfacts { grid-template-columns: 1fr 1fr; }
}

/* =====================================================================
   Spécifique WordPress
   ===================================================================== */

/* Champ piège anti-spam : invisible pour les visiteurs, rempli par les robots. */
.lc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Formulaire indisponible (extension LC Métier inactive) : coordonnées à la place. */
.form-off { display: grid; gap: 12px; font-size: 18px; }

/* Barre d'administration WordPress (visible seulement par les personnes connectées). */
.admin-bar .nav { top: calc(46px + 10px); }
@media screen and (min-width: 783px) { .admin-bar .nav { top: calc(32px + 14px); } }
.admin-bar .menu { padding-top: calc(110px + 46px); }

/* Accessibilité WordPress. */
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.screen-reader-text:focus { position: static; width: auto; height: auto; clip: auto; }

/* Contenu saisi dans l'éditeur (pages génériques, articles, descriptions de programmes). */
.prose--page { max-width: 760px; }
.prose img, .prose figure { border-radius: 16px; max-width: 100%; height: auto; }
.prose figure { margin: 1.5em 0; }
.prose figcaption, .prose .wp-element-caption { font-size: 14px; color: var(--lc-ink-soft); margin-top: 8px; }
.prose a { color: var(--lc-blue); text-decoration-color: var(--lc-mint); text-underline-offset: 4px; }
.prose h2 { font-size: clamp(1.5rem, 2.4vw, 2rem); margin: 1.4em 0 0.5em; letter-spacing: -0.01em; }
.prose blockquote { margin: 1.5em 0; padding: 18px 22px; border-radius: 16px; background: var(--lc-mist); }
.prose table { width: 100%; border-collapse: collapse; }
.prose th, .prose td { padding: 10px; border-bottom: 1px solid var(--lc-mist-2); text-align: left; }
.alignleft { float: left; margin: 0 1.5em 1em 0; }
.alignright { float: right; margin: 0 0 1em 1.5em; }
.aligncenter { margin-inline: auto; }

/* Pagination des listes. */
.nav-links { display: flex; flex-wrap: wrap; gap: 8px; }
.nav-links a, .nav-links span { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 14px; border-radius: 999px; background: var(--lc-mist); text-decoration: none; font-weight: 600; }
.nav-links .current { background: var(--lc-blue); color: #fff; }

/* Logos partenaires : la largeur est calculée par le thème, la hauteur suit. */
.partner img { height: auto; }

/* =====================================================================
   Protection contre les styles extérieurs (Houzez, Elementor, extensions)
   Ces règles garantissent la typographie et les couleurs du thème même si une extension
   imprime ses propres styles généraux (police Google, couleur de tous les liens…).
   ===================================================================== */
html body { font-family: var(--lc-font) !important; color: var(--lc-ink); }
html body :is(h1, h2, h3, h4, h5, h6, p, a, li, span, b, strong, em, small, label, legend, dt, dd, th, td, summary, blockquote, figcaption, button, input, select, textarea, option) {
  font-family: inherit !important;
}
html body a { color: inherit; }
html body :is(h1, h2, h3, h4, h5, h6) { color: inherit; letter-spacing: inherit; text-transform: inherit; }
html body .display, html body .h2, html body .h3, html body .card__title { font-weight: 700; }
html body .display-sub { font-weight: 400; }

/* =====================================================================
   Barre de navigation lisible sur les photos
   ===================================================================== */
.nav:not(.is-solid) {
  background: rgba(4, 31, 58, 0.42);
  border-color: rgba(255, 255, 255, 0.22);
  backdrop-filter: var(--lc-glass-blur); -webkit-backdrop-filter: var(--lc-glass-blur);
}
.nav:not(.is-solid) .nav__links a, .nav:not(.is-solid) .nav__tel, .nav:not(.is-solid) .nav__toggle { color: #fff; }
.nav.is-solid .nav__links a, .nav.is-solid .nav__tel, .nav.is-solid .nav__toggle { color: var(--lc-ink); }
.nav__links a, .nav__tel { font-size: 16px; }
.menu-open .nav { background: transparent; }

/* ---------- Retour en haut (accueil) ---------- */
.to-top {
  position: fixed; right: max(var(--lc-gutter), env(safe-area-inset-right)); bottom: max(22px, env(safe-area-inset-bottom)); z-index: var(--lc-z-nav);
  display: grid; place-items: center; width: 52px; height: 52px; padding: 0; border: 1px solid rgba(255, 255, 255, 0.35); border-radius: 50%;
  background: var(--lc-blue); color: #fff; cursor: pointer; box-shadow: 0 10px 30px rgba(4, 31, 58, 0.28);
  opacity: 0; visibility: hidden; transform: translateY(14px) scale(0.9);
  transition: opacity 300ms var(--lc-ease), transform 300ms var(--lc-ease), visibility 0s linear 300ms, background-color 200ms var(--lc-ease);
}
.to-top.is-shown { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.to-top svg { width: 22px; height: 22px; transition: transform 200ms var(--lc-ease); }
.to-top:active { transform: scale(0.94); }
.menu-open .to-top { opacity: 0; visibility: hidden; }
@media (hover: hover) { .to-top:hover { background: var(--lc-ink); } .to-top:hover svg { transform: translateY(-2px); } }
@media (max-width: 860px) { .to-top { width: 46px; height: 46px; bottom: max(16px, env(safe-area-inset-bottom)); } }
.nowrap { white-space: nowrap; }

/* ---------- Fenêtre « Demander ce logement » (fiches programme) ---------- */
.lot-dialog__icon { width: auto; min-width: 56px; padding: 0 10px; font-size: 17px; }
.lot-dialog__facts { margin-bottom: 8px; font-weight: 700; font-size: 17px; color: var(--lc-blue); font-variant-numeric: tabular-nums; }
.lot-dialog__facts:empty { display: none; }
.lot-dialog .field textarea { min-height: 96px; background: #fff; border-color: var(--lc-mist-2); }
