/* =========================================================
   Leverage Gestion Privée : thème V15 c, « banque privée » simplifié
   D'après le modèle apprécié par Bastien : titres en Garamond, photos de Paris haussmannien,
   fond pierre claire en alternance avec le blanc, boutons à l'encre, l'or en ponctuation.
   Aucun trait de séparation (retour d'Adrien) : des tuiles et des cartes douces, des angles arrondis.
   Les effets au défilement de la V14 sont conservés.
   Chargé après style.css pour tout le site. Retours possibles : docs/archives/ (V14 b, V14, V13…).
   ========================================================= */

/* ---------- 1. Jetons ---------- */
:root {
  --white:         #FFFFFF;
  --stone:         #F1F5F5;   /* gris clair teinté de teal (couleurs Leverage) : sections en alternance */
  --stone-deep:    #EAE6DD;
  --mist:          #F1F5F5;
  --wall:          #F1F5F5;
  --grad-soft:     #F1F5F5;
  --grey-50:       #F7FAFA;
  --grey-100:      #EDF2F2;
  --grey-200:      #E1E8E9;
  --border:        #DDE5E6;
  --hairline:      #CFD9DA;
  --night:         #06191d;   /* encre Leverage : pied de page, cartes sombres */
  --text-body:     #3B4446;
  --text-muted:    #6E7679;
  --gold:          #e4be74;
  --gold-light:    #EDCC8C;
  --gold-text:     #8A6420;
  --gold-line:     rgba(228, 190, 116, .7);
  --teal-night:    #0B3B43;
  --shade:         5, 28, 32;
  --serif:         'Cormorant Garamond', 'Cormorant', Garamond, 'Times New Roman', serif;
  --radius-card:   14px;
  --radius-img:    12px;
  --radius-btn:    8px;
  --radius-pill:   8px;
  --shadow-soft:   0 24px 48px -36px rgba(15, 31, 34, .3);
  --shadow-lift:   0 30px 60px -40px rgba(15, 31, 34, .34);
  --header-h:      76px;
}
/* Texte plus grand (retour d'Adrien, V15 b) : 17 px de base au lieu de 16 */
html { font-size: 106.25%; }
body { background: var(--white); font-size: 1rem; line-height: 1.7; }
.bg-soft { background: var(--stone); }
.bg-white { background: var(--white); }
::selection { background: rgba(228, 190, 116, .38); color: var(--ink); }
:focus-visible { outline-color: var(--teal-deep); border-radius: 2px; }

/* ---------- 2. Typographie : Garamond pour les titres, Inter pour le texte ---------- */
.display, .h1, .h2, .h3, .statement, .quote blockquote p, .footer__news-title, .prose h2, .prose h3, .featured h2 {
  font-family: var(--serif); font-weight: 500; letter-spacing: -0.006em; font-optical-sizing: auto;
  font-variant-numeric: lining-nums;
}
.display { font-size: clamp(2.9rem, 5.4vw, 5.1rem); line-height: 1.02; }
.h1 { font-size: clamp(2.6rem, 4.6vw, 4.2rem); line-height: 1.04; }
.h2 { font-size: clamp(2.3rem, 3.9vw, 3.55rem); line-height: 1.04; }
.h3 { font-size: clamp(1.4rem, 1.9vw, 1.7rem); line-height: 1.15; }
.faq__aside .h2, .reviews__aside .h2 { font-size: clamp(2.2rem, 3.3vw, 3rem); }
/* Une seule police et une seule couleur par titre, sans soulignement */
.display em, .h1 em, .h2 em, .h3 em, .statement em, .footer__news-title em, .formule__steps-title em {
  font-style: normal; font-weight: inherit; color: inherit; background: none; text-decoration: none;
}
.lead { font-size: clamp(1.12rem, 1.3vw, 1.24rem); line-height: 1.65; color: var(--text-body); }
p { color: var(--text-body); }

/* Petits titres (partenaires, blocs de Pourquoi Leverage, mot du directeur) : sans capitales ni trait */
.label, .partners__title { display: block; margin-bottom: 1.3rem; font-family: var(--font); font-size: 1rem; font-weight: 500; line-height: 1.4; letter-spacing: 0; text-transform: none; color: var(--text-muted); }
.partners__title { text-align: center; }
.block-title, .directeur__title { display: block; margin-bottom: 1rem; font-family: var(--serif); font-size: clamp(1.6rem, 2.2vw, 1.95rem); font-weight: 500; line-height: 1.15; letter-spacing: -0.004em; text-transform: none; color: var(--ink); }

/* En-tête de section : le titre et un chapô éventuel, sans filet */
.head15 {
  position: relative; display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 56px;
  margin-bottom: clamp(34px, 3.8vw, 54px);
}
.head15__main { max-width: 820px; }
.head15 .h2 { max-width: 820px; }
.head15 .lead { max-width: 680px; margin-top: 1.1rem; }
.head15--sm .h2 { font-size: clamp(2rem, 2.9vw, 2.7rem); }

/* ---------- 3. Ornements haussmanniens, très légers, en fond de quelques sections ---------- */
/* Rosace de plafond, boiseries moulurées, façade à balcons : un trait teal à 7-10 % (tools/deco-haussmann.mjs) */
.deco { position: relative; isolation: isolate; overflow: clip; }
.deco::before { content: ""; position: absolute; z-index: -1; pointer-events: none; background-repeat: no-repeat; background-size: contain; opacity: .1; }
.deco--rosace::before { top: clamp(-180px, -12vw, -90px); right: clamp(-160px, -9vw, -60px); width: clamp(340px, 38vw, 560px); aspect-ratio: 1; background-image: url("/assets/img/deco/rosace.svg"); }
.deco--facade::before { left: clamp(-80px, -4vw, -20px); bottom: -12px; width: clamp(320px, 36vw, 540px); aspect-ratio: 800 / 820; background-image: url("/assets/img/deco/facade.svg"); opacity: .08; }
.deco--boiseries::before { inset: 0; background-image: url("/assets/img/deco/boiseries.svg"); background-repeat: repeat; background-size: 230px auto; background-position: center top; opacity: .07; }

/* ---------- 4. Boutons et liens ---------- */
.btn { min-height: 54px; padding: .85rem 1.65rem; border-radius: var(--radius-btn); font-size: .98rem; font-weight: 500; letter-spacing: .01em; }
.btn--primary { background: var(--teal-deep); border-color: var(--teal-deep); color: #fff; box-shadow: 0 14px 28px -20px rgba(27, 98, 111, .8); }
.btn--primary:hover { background: var(--ink); border-color: var(--ink); box-shadow: 0 14px 28px -20px rgba(6, 25, 29, .6); }
.btn--primary::after { display: none; }
/* Sur fond sombre : l'or */
.btn--gold, .site-footer .btn--primary, .cta-final__box .btn--primary { background: var(--gold); border-color: var(--gold); color: var(--ink); box-shadow: none; }
.btn--gold:hover, .site-footer .btn--primary:hover, .cta-final__box .btn--primary:hover { background: var(--gold-light); border-color: var(--gold-light); color: var(--ink); }
.btn--outline { background: transparent; border-color: var(--ink); color: var(--ink); -webkit-backdrop-filter: none; backdrop-filter: none; }
.btn--outline:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
/* Liens : soulignés d'un filet ; la flèche suit le dernier mot */
.link-arrow, .projet__alt {
  display: inline-block; font-family: var(--font); font-style: normal; font-size: 1rem; font-weight: 500; line-height: 1.5;
  color: var(--ink); text-decoration: underline; text-decoration-color: var(--hairline); text-decoration-thickness: 1px; text-underline-offset: 6px;
  transition: color .3s var(--ease-out), text-decoration-color .3s var(--ease-out);
}
.link-arrow:hover, .projet__alt:hover { color: var(--teal-deep); text-decoration-color: var(--gold); }
.link-arrow .ico, .nowrap > .ico, .projet__alt .ico { display: inline-block; margin-left: .45rem; vertical-align: -2px; color: var(--gold-text); transition: transform .4s var(--ease-expo); }
.link-arrow:hover .ico, .projet__alt:hover .ico { transform: translateX(3px); }
.actions { gap: 14px 30px; align-items: center; }
/* Pas de petites flèches (retour d'Adrien) : ni après les liens, ni dans les tuiles, ni sur les boutons */
.link-arrow .ico, .projet__alt .ico, .nowrap > .ico, .quick__list a .ico, .tools15__list a .ico, .deck__cta .ico, .ico--arrow,
.ico:has(use[href="#i-arrow"]), .ico:has(use[href="#i-arrow-ur"]) { display: none; }

/* ---------- 5. En-tête : blanc, une ombre légère au défilement ---------- */
.site-header { padding: 0; background: rgba(255, 255, 255, .97); border-bottom: 0; transition: transform .6s var(--ease-expo), background-color .3s var(--ease-out), box-shadow .3s var(--ease-out); }
.site-header.is-scrolled, .site-header.menu-open { background: rgba(255, 255, 255, .94); box-shadow: 0 12px 30px -26px rgba(15, 31, 34, .45); -webkit-backdrop-filter: blur(12px) saturate(130%); backdrop-filter: blur(12px) saturate(130%); }
.header__bar, .is-scrolled .header__bar, .menu-open .header__bar {
  max-width: calc(var(--container) + var(--gutter) * 2); height: var(--header-h); padding: 0 var(--gutter);
  border: 0; border-radius: 0; background: transparent; box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
.brand { width: clamp(124px, 9.4vw, 142px); }
.nav__link { padding-inline: .6rem; border-radius: 0; font-size: .9rem; letter-spacing: 0; }
.header__actions { gap: clamp(8px, .9vw, 12px); }
/* Écrans moyens : le numéro devient une icône, le reste se resserre, rien ne déborde */
@media (max-width: 1499px) {
  .nav__link { padding-inline: .5rem; font-size: .86rem; }
  .header__investor { padding-inline: .9rem; font-size: .85rem; }
  .header__cta.btn { padding-inline: 1rem; font-size: .86rem; }
}
@media (max-width: 1365px) {
  .header__phone { width: 44px; padding: 0; }
  .header__phone .num { display: none; }
  .header__phone .tip { position: absolute; top: calc(100% + 10px); left: 50%; display: block; padding: .35rem .6rem; border-radius: var(--radius-btn); background: var(--ink); color: #fff; font-size: .75rem; white-space: nowrap; opacity: 0; transform: translateX(-50%); pointer-events: none; transition: opacity .2s; }
  .header__phone:hover .tip, .header__phone:focus-visible .tip { opacity: 1; }
}
.nav__link:hover, .nav__link[aria-expanded="true"], .nav__link[aria-current="page"] { background: transparent; color: var(--ink); text-decoration: underline; text-decoration-color: var(--gold); text-decoration-thickness: 1px; text-underline-offset: 9px; }
.header__investor { border-radius: var(--radius-btn); border-color: var(--hairline); background: transparent; font-size: .9rem; }
.header__investor:hover { border-color: var(--ink); background: transparent; }
.header__cta.btn { min-height: 46px; padding: .55rem 1.15rem; font-size: .9rem; }
.mega { border-radius: var(--radius-card); box-shadow: 0 30px 60px -44px rgba(15, 31, 34, .4), 0 0 0 1px var(--border); }
.mega__title { color: var(--gold-text); letter-spacing: .16em; }
.mega__tab { border-radius: var(--radius-btn); }
.mega__tab[aria-selected="true"] { background: var(--stone); color: var(--ink); }
.mega__links--rich a { border-radius: var(--radius-btn); }
.mega__feature { border-radius: var(--radius-card); border-color: var(--border); background: var(--stone); }
.mega__article img { border-radius: var(--radius-img); }
.mobile-bar { border-radius: var(--radius-card); }
.mobile-bar__phone { border-radius: var(--radius-btn); }
.progress { background: var(--gold); }

/* ---------- 6. Hero : le contenu centré, des portes ouvertes sur Paris en fond, des voiles blancs pour la lisibilité ---------- */
/* V16 b (demande d'Adrien) : effet luxe, la photo cadre le texte ; une lueur blanche au centre porte le titre et les boutons */
.hero15 { position: relative; isolation: isolate; overflow: hidden; padding-top: var(--header-h); background: var(--white); }
.hero15__bg { position: absolute; inset: var(--header-h) 0 0; z-index: -2; margin: 0; overflow: hidden; background: var(--grey-100); }
.hero15__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 42%; filter: saturate(1.02) brightness(1.02); }
/* Trois voiles : la lueur centrale derrière le texte, un fondu sous l'en-tête et vers la page, une brume sur les bords */
.hero15::before {
  content: ""; position: absolute; inset: var(--header-h) 0 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(ellipse 56% 74% at 50% 52%, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .95) 46%, rgba(255, 255, 255, .78) 64%, rgba(255, 255, 255, .34) 84%, rgba(255, 255, 255, 0) 100%),
    linear-gradient(180deg, rgba(255, 255, 255, .72) 0%, rgba(255, 255, 255, 0) 16%, rgba(255, 255, 255, 0) 72%, #fff 100%),
    linear-gradient(90deg, rgba(255, 255, 255, .14) 0%, rgba(255, 255, 255, 0) 14%, rgba(255, 255, 255, 0) 86%, rgba(255, 255, 255, .14) 100%);
}
.hero15__inner { display: flex; justify-content: center; align-items: center; min-height: clamp(660px, calc(100svh - var(--header-h)), 920px); text-align: center; }
.hero15__content { max-width: 1000px; margin-inline: auto; padding-block: clamp(64px, 7.5vw, 120px); }
/* « Maison de gestion privée » au-dessus du titre (demande d'Adrien) : la police du titre, en or, sans capitales ni trait */
.hero15__maison { margin-bottom: clamp(.6rem, 1.2vw, 1.1rem); font-family: var(--serif); font-size: clamp(1.4rem, 2vw, 1.85rem); font-weight: 500; line-height: 1.2; letter-spacing: .01em; color: var(--gold-text); }
.hero15 .display { font-size: clamp(3.6rem, 7vw, 7.4rem); line-height: .98; text-wrap: balance; }
.hero15__lead { max-width: 600px; margin: 1.6rem auto 0; font-size: 1.22rem; line-height: 1.65; color: var(--text-body); text-wrap: balance; }
/* Un halo blanc autour des lettres : invisible sur le blanc, il protège la lecture là où la photo affleure */
.hero15__maison, .hero15 .display, .hero15__lead, .projet__label, .projet__alt, .hero15__trust > span { text-shadow: 0 0 22px rgba(255, 255, 255, .95), 0 0 2px rgba(255, 255, 255, .9); }

/* Choix du projet */
.projet { display: grid; justify-items: center; gap: .7rem; max-width: 640px; margin: 2.4rem auto 0; }
.projet__label { font-size: 1rem; font-weight: 500; color: var(--ink); }
.projet__row { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; width: 100%; min-width: 0; }
.projet select {
  flex: 1 1 240px; min-width: 0; min-height: 54px; padding: 0 2.8rem 0 1rem;
  border: 1px solid var(--hairline); border-radius: var(--radius-btn); color: var(--ink); font-size: .95rem; cursor: pointer;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2306191d' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E") no-repeat right 16px center;
  -webkit-appearance: none; appearance: none; transition: border-color .3s var(--ease-out);
}
.projet select:hover { border-color: var(--ink); }
.projet select:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.projet .btn { flex: 0 0 auto; min-height: 54px; }
.projet__alt { justify-self: center; margin-top: .4rem; }
.hero15__trust { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px 22px; margin-top: 2.2rem; font-size: .98rem; font-weight: 500; color: var(--text-body); }
.hero15__trust .sep { display: none; }

/* ---------- 7. Nos solutions phares : des tuiles blanches sur la pierre ---------- */
.quick15 { padding-block: clamp(56px, 6vw, 92px); }
.quick__list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.quick__list > li { display: flex; }
.quick__list a {
  flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 16px;
  min-height: 96px; padding: 12px 22px 12px 12px; border-radius: var(--radius-card); background: var(--white);
  font-family: var(--serif); font-size: clamp(1.25rem, 1.45vw, 1.45rem); font-weight: 500; line-height: 1.15; color: var(--ink); text-decoration: none;
  transition: color .3s var(--ease-out), box-shadow .4s var(--ease-out), transform .5s var(--ease-expo);
}
.quick__list a > span { flex: 1; min-width: 0; }
.quick__img { flex-shrink: 0; width: 64px; height: 64px; border-radius: 10px; object-fit: cover; background: var(--grey-200); transition: transform .6s var(--ease-expo); }
.quick__list a:hover .quick__img { transform: scale(1.04); }
.quick__list a .ico { flex-shrink: 0; color: var(--gold-text); transition: transform .45s var(--ease-expo); }
.quick__list a:hover { color: var(--teal-deep); box-shadow: var(--shadow-soft); transform: translateY(-3px); }
.quick__list a:hover .ico { transform: translateX(4px); }

/* ---------- 8. Chiffres et partenaires ---------- */
.band { padding-block: clamp(48px, 5vw, 76px); background: var(--white); }
.band__figure + .band__figure { border-left: 0; }
.band__value { color: var(--teal-deep); font-family: var(--serif); font-weight: 500; font-size: clamp(3rem, 5vw, 4.4rem); line-height: 1; letter-spacing: -0.01em; font-variant-numeric: lining-nums tabular-nums; }
.band__value sup { font-family: var(--font); font-size: .3em; color: var(--gold-text); }
.band__label { margin-top: .8rem; font-size: 1rem; color: var(--text-body); }
.partners { padding-block: clamp(20px, 3vw, 40px) clamp(56px, 6vw, 88px); background: var(--white); }
/* Logos des partenaires en noir et blanc, en couleur au survol (demande d'Adrien du 2026-10-29) ; hauteurs réglées en section 27 */
.partners__track img { opacity: .78; filter: grayscale(1); transition: filter .45s var(--ease-out), opacity .45s var(--ease-out); }
.partners__track img:hover { opacity: 1; filter: grayscale(0); }

/* ---------- 9. À vos côtés : la porte aux couleurs Leverage, une seconde photo superposée, les 45 minutes en évidence ---------- */
.cotes__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 6.5vw, 116px); align-items: center; }
.cotes__img { position: relative; margin: 0; padding-bottom: clamp(72px, 8vw, 112px); }
.cotes__frame { position: relative; overflow: hidden; width: 92%; aspect-ratio: 4 / 3; border-radius: 18px; background: var(--grey-200); box-shadow: 0 30px 60px -40px rgba(15, 31, 34, .45); }
.cotes__frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 30% 50%; }
/* Deux personnes en échange : une photo plus petite, cernée de blanc, qui chevauche le coin de la porte */
.cotes__second { position: absolute; right: 0; bottom: 0; width: 60%; aspect-ratio: 16 / 9; overflow: hidden; border: 6px solid var(--white); border-radius: 18px; background: var(--grey-200); box-shadow: 0 34px 60px -30px rgba(15, 31, 34, .5); }
.cotes__second img { width: 100%; height: 100%; object-fit: cover; }
/* Les 45 minutes : une carte blanche posée à cheval sur le bord de la photo */
.cotes__time { position: absolute; z-index: 2; left: clamp(-32px, -2.2vw, -16px); top: 58%; display: grid; gap: 6px; max-width: 232px; padding: 18px 22px 20px; border-radius: 16px; background: var(--white); box-shadow: 0 26px 50px -26px rgba(15, 31, 34, .45); }
.cotes__time-value { font-family: var(--serif); font-size: clamp(2.8rem, 3.6vw, 3.4rem); font-weight: 500; line-height: .95; color: var(--teal-deep); font-variant-numeric: lining-nums; }
.cotes__time-value span { font-size: .42em; color: var(--ink); }
.cotes__time-text { font-size: .94rem; line-height: 1.45; color: var(--text-body); }
.cotes__body .lead { margin-top: 1.3rem; }
.cotes__body .actions { margin-top: 2.2rem; }
/* Les quatre rôles, en tuiles blanches */
.pillars { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 2rem; }
.pillars li { padding: 20px 22px 22px; border-radius: var(--radius-card); background: var(--white); }
.pillars h3 { font-family: var(--serif); font-size: 1.55rem; font-weight: 500; line-height: 1.12; color: var(--ink); }
.pillars p { margin-top: .4rem; font-size: 1rem; line-height: 1.55; }

/* ---------- 10. Vos objectifs : des photos qui défilent à l'horizontale ---------- */
.objectifs .head15 { align-items: flex-end; }
.carousel__nav { display: flex; gap: 10px; }
.carousel__btn { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; border: 0; background: var(--stone); color: var(--ink); transition: background-color .3s, color .3s, opacity .3s; }
.carousel__btn:hover:not(:disabled) { background: var(--ink); border-color: var(--ink); color: #fff; }
.carousel__btn:disabled { opacity: .35; cursor: default; }
.carousel__track {
  display: flex; gap: clamp(18px, 2vw, 28px); overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scroll-padding-inline: var(--pad-x);
  padding: 4px var(--pad-x) 10px; scrollbar-width: none;
}
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__track.is-grabbable { cursor: grab; }
.carousel__track.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.carousel__track.is-dragging a { pointer-events: none; }
.carousel__track > li { flex: 0 0 clamp(250px, 23vw, 320px); scroll-snap-align: start; }
.goal-card > a { position: relative; display: grid; align-content: start; gap: 0; color: var(--ink); text-decoration: none; -webkit-user-select: none; user-select: none; }
.goal-card img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius-img); background: var(--grey-200); transition: filter .6s var(--ease-out); -webkit-user-drag: none; }
.goal-card > a:hover img { filter: brightness(1.05) saturate(1.05); }
.goal-card img.goal-card__img--right { object-position: 66% 50%; }
.goal-card__arrow { display: none; }
.goal-card__body { position: relative; margin-top: 18px; }
.goal-card__title { font-family: var(--serif); font-size: clamp(1.55rem, 1.9vw, 1.8rem); font-weight: 500; line-height: 1.12; color: var(--ink); text-wrap: balance; transition: color .3s; }
.goal-card > a:hover .goal-card__title { color: var(--teal-deep); }
.goal-card__text { margin-top: .45rem; font-size: 1rem; line-height: 1.55; color: var(--text-body); }
.goal-card > a:focus-visible { outline-offset: 6px; }
/* Ordinateur : la section reste en place et les photos défilent à l'horizontale au fil du scroll */
/* La section tient exactement dans l'écran : si la place manque, les photos perdent un peu de hauteur, jamais le texte */
@media (min-width: 1024px) {
  .objectifs.is-pinned { display: flex; flex-direction: column; justify-content: center; height: 100vh; padding-block: calc(var(--header-h) + 24px) 40px; overflow: hidden; }
  .objectifs.is-pinned .carousel__nav { display: none; }
  /* Deux rangées partagées par toutes les cartes : les photos (qui cèdent la place) puis les textes */
  .objectifs.is-pinned .carousel__track {
    display: grid; grid-auto-flow: column; grid-auto-columns: calc(min(calc(46 * var(--vh)), 420px) * .8); grid-template-rows: minmax(0, min(calc(46 * var(--vh)), 420px)) auto; row-gap: 0;
    flex: 0 1 auto; min-height: 0; overflow: visible; scroll-snap-type: none; cursor: auto; will-change: transform;
  }
  .objectifs.is-pinned .carousel__track > li, .objectifs.is-pinned .goal-card > a { grid-row: span 2; display: grid; grid-template-rows: subgrid; }
  .objectifs.is-pinned .goal-card img { height: 100%; min-height: 0; aspect-ratio: auto; }
  .objectifs.is-pinned .head15 { margin-bottom: clamp(26px, calc(3 * var(--vh)), 44px); }
}
@media (min-width: 1024px) and (max-width: 1279px) and (max-height: 860px), (min-width: 1800px) and (max-height: 860px), (min-width: 1280px) and (max-width: 1799px) and (max-height: 760px) {
  .objectifs.is-pinned { padding-block: calc(var(--header-h) + 8px) 24px; }
  .objectifs.is-pinned .h2 { font-size: min(3.9vw, 3.55rem, calc(7 * var(--vh))); }
  .objectifs.is-pinned .head15 { margin-bottom: clamp(16px, calc(2.5 * var(--vh)), 26px); }
  .objectifs.is-pinned .goal-card__body { margin-top: 12px; }
}

/* ---------- 11. Outil Bilan Patrimonial, sur la pierre ---------- */
.sim-soft { background: var(--stone); }
.sim-card { border-radius: var(--radius-card); border: 0; box-shadow: 0 34px 70px -50px rgba(15, 31, 34, .35); }
.sim-card__title .ico { color: var(--gold-text); }
.sim-result { border-radius: var(--radius-btn); background: var(--grey-50); border: 0; }
.sim-result--main { background: var(--stone); }
.sim-result__value { font-family: var(--serif); font-weight: 500; letter-spacing: -0.005em; font-variant-numeric: lining-nums tabular-nums; }
.sim-result__value { font-size: clamp(1.5rem, 2.3vw, 2.1rem); }
.sim-result__value--sm { font-size: clamp(1.2rem, 1.6vw, 1.4rem); }
.sim-result--main .sim-result__value { color: var(--ink); }

/* ---------- 12. Toutes les solutions : quatre cartes photo qui glissent l'une sur l'autre au défilement ---------- */
/* Chaque carte : un panneau encre et teal aux accents or, la photo à droite */
.deck-pin { padding-block: clamp(80px, 9vw, 140px) clamp(40px, 5vw, 64px); overflow: hidden; }
.deck__head { align-items: flex-end; }
/* Le compteur n'a de sens que quand les cartes défilent (ordinateur, animations actives) */
.deck__count { display: none; }
.deck-pin.is-pinned .deck__count { display: block; }
.deck__count { flex-shrink: 0; font-family: var(--serif); font-size: 1.7rem; font-weight: 500; line-height: 1; color: var(--gold-text); font-variant-numeric: lining-nums tabular-nums; }
.deck__count [data-deck-current] { font-size: 3rem; color: var(--teal-deep); }
.deck { display: grid; gap: 18px; }
.deck__card {
  position: relative; display: grid; grid-template-columns: minmax(0, 11fr) minmax(0, 9fr);
  min-height: clamp(440px, 56vh, 580px); overflow: hidden; border-radius: 20px;
  background: radial-gradient(120% 90% at 0% 0%, rgba(29, 129, 147, .28) 0%, rgba(29, 129, 147, 0) 60%), linear-gradient(150deg, var(--teal-night) 0%, var(--ink) 72%);
  color: #fff; box-shadow: 0 40px 80px -50px rgba(6, 25, 29, .65); transform-origin: 50% 50%;
}
.deck__body { display: flex; flex-direction: column; justify-content: center; padding: clamp(32px, 4.6vw, 76px); }
.deck__title { font-family: var(--serif); font-size: clamp(2.3rem, 3.7vw, 3.5rem); font-weight: 500; line-height: 1.04; letter-spacing: -0.006em; color: #fff; }
.deck__text { max-width: 46ch; margin-top: 1rem; font-size: 1.12rem; line-height: 1.6; color: rgba(255, 255, 255, .8); }
.deck__links { display: flex; flex-wrap: wrap; gap: .65rem 1.5rem; margin-top: 1.7rem; }
.deck__links a { font-weight: 500; color: #fff; text-decoration: underline; text-decoration-color: rgba(228, 190, 116, .55); text-underline-offset: 6px; transition: color .3s, text-decoration-color .3s; }
.deck__links a:hover { color: var(--gold-light); text-decoration-color: var(--gold); }
.deck__cta {
  align-self: flex-start; display: inline-block; margin-top: 2.2rem; padding: .95rem 1.4rem; line-height: 1.3;
  border-radius: var(--radius-btn); background: var(--gold); color: var(--ink); font-weight: 500; text-decoration: none; transition: background-color .3s;
}
.deck__cta:hover { background: var(--gold-light); }
.deck__cta .ico { transition: transform .4s var(--ease-expo); }
.deck__cta:hover .ico { transform: translateX(3px); }
.deck__media { position: relative; margin: 0; overflow: hidden; background: var(--teal-night); }
.deck__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Ordinateur avec animations : la section reste en place et les cartes glissent depuis la droite */
/* La section tient exactement dans l'écran : les cartes prennent la hauteur qui reste (580 px au plus) */
@media (min-width: 1024px) {
  .deck-pin.is-pinned { display: flex; flex-direction: column; height: 100vh; padding-block: calc(var(--header-h) + 16px) 32px; }
  .deck-pin.is-pinned > .container { flex: 1 1 auto; min-height: 0; width: 100%; display: flex; flex-direction: column; justify-content: center; }
  .deck-pin.is-pinned .deck__head { margin-bottom: clamp(16px, calc(3 * var(--vh)), 40px); }
  .deck-pin.is-pinned .deck { display: block; position: relative; flex: 1 1 auto; min-height: 0; max-height: 580px; }
  .deck-pin.is-pinned .deck__card { position: absolute; inset: 0; min-height: 0; will-change: transform; }
}
/* Écrans d'ordinateur peu hauts (portables en 125 ou 150 %) : titres et marges suivent la hauteur */
@media (min-width: 1024px) and (max-width: 1279px) and (max-height: 860px), (min-width: 1800px) and (max-height: 860px), (min-width: 1280px) and (max-width: 1799px) and (max-height: 760px) {
  .deck-pin.is-pinned { padding-block: calc(var(--header-h) + 8px) 20px; }
  .deck-pin.is-pinned .h2 { font-size: min(3.9vw, 3.55rem, calc(7 * var(--vh))); }
  .deck-pin.is-pinned .head15 .lead { margin-top: .6rem; }
  .deck-pin.is-pinned .deck__body { padding-block: clamp(22px, calc(5 * var(--vh)), 56px); }
  .deck-pin.is-pinned .deck__title { font-size: min(3.7vw, 3.5rem, calc(6.4 * var(--vh))); }
  .deck-pin.is-pinned .deck__text { margin-top: .6rem; }
  .deck-pin.is-pinned .deck__links { margin-top: 1.1rem; }
  .deck-pin.is-pinned .deck__cta { margin-top: 1.3rem; }
}
/* Écrans très bas (portables en 150 % avec barres d'outils) : chapeau masqué, cartes resserrées */
@media (min-width: 1024px) and (max-width: 1279px) and (max-height: 640px), (min-width: 1800px) and (max-height: 640px), (min-width: 1280px) and (max-width: 1799px) and (max-height: 512px) {
  .deck-pin.is-pinned, .objectifs.is-pinned { padding-block: calc(var(--header-h) + 4px) 14px; }
  .deck-pin.is-pinned .head15 .lead { display: none; }
  .deck-pin.is-pinned .deck__head, .objectifs.is-pinned .head15 { margin-bottom: 12px; }
  .deck-pin.is-pinned .deck__body { padding-block: clamp(16px, calc(3.4 * var(--vh)), 22px); }
  .deck-pin.is-pinned .deck__text { margin-top: .45rem; font-size: 1rem; line-height: 1.5; }
  .deck-pin.is-pinned .deck__links { gap: .4rem 1.2rem; margin-top: .8rem; font-size: .95rem; }
  .deck-pin.is-pinned .deck__cta { margin-top: 1rem; padding: .75rem 1.2rem; }
  .objectifs.is-pinned .carousel__track { grid-auto-columns: 270px; }
  .objectifs.is-pinned .goal-card__body { margin-top: 10px; }
  .objectifs.is-pinned .goal-card__text { font-size: .94rem; line-height: 1.45; }
}
.solutions16 { padding-block: 0 clamp(72px, 8vw, 120px); }
.tools15 { margin-top: clamp(56px, 6vw, 92px); }
.tools15__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.tools15__list > li { display: flex; }
.tools15__list a { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 88px; padding: 20px 24px; border-radius: var(--radius-card); background: var(--stone); font-family: var(--serif); font-size: 1.5rem; font-weight: 500; line-height: 1.2; color: var(--ink); text-decoration: none; transition: color .3s, box-shadow .4s var(--ease-out), transform .5s var(--ease-expo); }
.tools15__list a .ico { flex-shrink: 0; color: var(--gold-text); transition: transform .45s var(--ease-expo); }
.tools15__list a:hover { color: var(--teal-deep); box-shadow: var(--shadow-soft); transform: translateY(-3px); }
.tools15__list a:hover .ico { transform: translateX(4px); }
.solutions__foot { margin-top: clamp(28px, 3vw, 40px); font-size: 1rem; color: var(--text-body); }

/* ---------- 13. La Formule : des cartes qui s'empilent au défilement, puis le parcours ---------- */
.stack--formule-img { max-width: 1120px; margin: 0 auto; }
.stack--formule-img .stack__card { min-height: min(440px, 62vh); border-radius: var(--radius-card); border: 0; background: var(--white); box-shadow: 0 40px 70px -56px rgba(15, 31, 34, .4); }
.stack--formule-img .stack__card::after { background: var(--white); }
.stack__body h3 { font-family: var(--serif); font-size: clamp(2.1rem, 3.1vw, 2.8rem); font-weight: 500; line-height: 1.05; letter-spacing: -0.006em; }
.stack__body p { max-width: 460px; font-size: 1.08rem; line-height: 1.7; }
.formule__steps { margin-top: clamp(64px, 7vw, 110px); }
.formule__steps-title { max-width: 820px; margin-bottom: clamp(30px, 3.4vw, 44px); font-family: var(--serif); font-size: clamp(1.95rem, 2.9vw, 2.7rem); font-weight: 500; line-height: 1.1; letter-spacing: -0.006em; color: var(--ink); }
.steps { gap: 14px; }
.steps::before, .steps::after { display: none; }
.step { padding: 26px 24px 28px; border-radius: var(--radius-card); background: var(--white); }
.step__num { display: block; width: auto; height: auto; margin-bottom: 10px; border: 0; border-radius: 0; background: none; font-family: var(--serif); font-size: 2rem; font-weight: 500; line-height: 1; color: var(--gold-text); font-variant-numeric: lining-nums; }
.step .h3 { font-size: 1.6rem; }
.step p { font-size: 1.02rem; }
.steps-foot { padding-top: 0; border-top: 0; }
.steps-foot p { font-family: var(--serif); font-size: 1.4rem; font-weight: 500; line-height: 1.3; }

/* ---------- 14. Un cadre réglementé : quatre tuiles ---------- */
.cadre14 { padding-block: clamp(64px, 7vw, 104px); }
.cadre14 .agrements { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.cadre14 .agrement { display: grid; justify-items: start; align-content: start; gap: 4px; padding: 24px 24px 22px; border: 0; border-radius: var(--radius-card); background: var(--stone); text-align: left; }
.cadre14 .agrement__logos { justify-content: flex-start; height: 44px; margin-bottom: 10px; }
.cadre14 .agrement__logos img { height: 36px; } /* en couleur (demande d'Adrien du 2026-10-29) */
.cadre14 .agrement__label { font-family: var(--serif); font-size: 1.6rem; font-weight: 500; line-height: 1.15; color: var(--ink); }
.cadre14 .agrement__detail { font-size: .98rem; color: var(--text-body); }
.cadre14__foot { margin-top: clamp(28px, 3vw, 40px); }

/* ---------- 15. Pour qui : quatre portraits ---------- */
.people { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 36px clamp(18px, 2vw, 28px); }
.person { display: grid; grid-row: span 3; grid-template-rows: subgrid; align-content: start; row-gap: 10px; }
.person__img { position: relative; margin: 0 0 8px; overflow: hidden; aspect-ratio: 4 / 5; border-radius: var(--radius-img); background: var(--grey-200); }
.person__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-expo); }
.person:hover .person__img img { transform: scale(1.04); }
.person__title { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; line-height: 1.1; color: var(--ink); }
.person p { font-size: 1.02rem; }

/* ---------- 16. Une rémunération transparente : la fenêtre ouverte, et trois engagements ---------- */
.remu { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 6.5vw, 116px); align-items: center; overflow: visible; border-radius: 0; background: none; }
.remu__media { position: relative; order: -1; min-height: 0; aspect-ratio: 4 / 5; margin: 0; overflow: hidden; border-radius: var(--radius-img); background: var(--grey-200); }
.remu__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.remu__body { padding: 0; }
.remu__note { margin-top: 1.5rem; font-size: 1rem; color: var(--text-body); }
.remu .link-arrow { margin-top: 1.2rem; }
/* Les engagements : une liste aérée, sans coches ni filets */
.checks { display: grid; gap: 20px; margin-top: 2rem; }
.checks li { display: block; padding: 0; border: 0; }
.checks__ico { display: none; }
.checks p { font-size: 1.06rem; line-height: 1.6; }
.checks strong { display: block; margin-bottom: .2rem; font-family: var(--serif); font-size: 1.55rem; font-weight: 500; line-height: 1.2; color: var(--ink); }

/* ---------- 17. Avis ---------- */
.rating { color: var(--ink); background: var(--white); border: 0; border-radius: var(--radius-card); }
.rating p { color: var(--text-body); }
.rating .tp { color: var(--ink); }
.review { border-radius: var(--radius-card); }
.review { border: 0; }
.bg-soft .review { background: var(--white); }
.review__name { font-family: var(--serif); font-size: 1.15rem; font-weight: 500; }
/* Les retours à la ligne des avis sont conservés, comme sur Trustpilot */
.review__text { white-space: pre-line; }

/* ---------- 18. Le mot du directeur : un grand portrait, la citation en italique ---------- */
.section--quote { padding-block: clamp(80px, 9vw, 140px); }
.directeur { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 6fr); gap: clamp(40px, 6.5vw, 116px); align-items: center; max-width: none; margin: 0; padding: 0; border-radius: 0; background: none; }
.directeur__media { position: relative; margin: 0; overflow: hidden; aspect-ratio: 4 / 5; border-radius: var(--radius-img); background: var(--grey-200); }
.directeur__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.directeur__title { margin-bottom: 1.2rem; }
.directeur__quote p { font-family: var(--serif); font-size: clamp(2.1rem, 3.4vw, 3.1rem); font-weight: 500; line-height: 1.14; letter-spacing: -0.006em; color: var(--ink); text-wrap: balance; }
.directeur__text { margin-top: 1.4rem; max-width: 560px; font-size: 1.06rem; }
.directeur__sign { max-width: 340px; margin-top: 1.8rem; font-size: 1rem; color: var(--text-body); }
.directeur__sign strong { display: block; font-family: var(--serif); font-size: 1.4rem; font-weight: 500; color: var(--ink); }

/* ---------- 19. L'équipe : Paris, Lyon, et trois visages ---------- */
.cities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 2.6vw, 36px); margin-bottom: clamp(52px, 6vw, 80px); }
.city { display: grid; gap: 16px; align-content: start; }
.city__img { position: relative; display: block; overflow: hidden; aspect-ratio: 16 / 10; border-radius: var(--radius-img); background: var(--grey-200); }
.city__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-expo); }
.city:hover .city__img img { transform: scale(1.03); }
.city__body { padding: 0; }
.city__name { font-family: var(--serif); font-size: 2.2rem; font-weight: 500; line-height: 1; color: var(--ink); }
.city__body p { margin-top: .45rem; font-size: 1rem; color: var(--text-body); }
#equipe .team--trio { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 2.6vw, 36px); }
.member__photo { aspect-ratio: 4 / 5; border-radius: var(--radius-img); }
.member__photo img { filter: saturate(.92); transform: none; }
.member:hover .member__photo img { transform: scale(1.03); filter: saturate(1); }
.member__initials { font-family: var(--serif); background: var(--stone); }
.member__name { font-family: var(--serif); font-size: 1.6rem; font-weight: 500; line-height: 1.15; }
.member__role { font-size: .98rem; color: var(--text-body); }
.member__in { border-radius: var(--radius-btn); border-color: var(--hairline); }
.member__in:hover { background: var(--ink); border-color: var(--ink); }
.team-foot { text-align: left; }

/* ---------- 20. Articles et vidéos, FAQ ---------- */
.row-head { position: relative; padding-bottom: clamp(20px, 2.2vw, 28px); margin-bottom: clamp(30px, 3.4vw, 48px); }
.section--row { padding-block: clamp(76px, 8vw, 124px) clamp(36px, 4vw, 56px); }
.section--row-next { padding-block: clamp(36px, 4vw, 56px) clamp(76px, 8vw, 124px); }
.video-card__thumb, .article-card__img { border-radius: var(--radius-img); }
.article-card__title, .video-card__title { font-family: var(--serif); font-size: 1.55rem; font-weight: 500; line-height: 1.18; letter-spacing: -0.004em; }
.article-card--simple .article-card__title { font-size: 1.55rem; }
.article-card__meta, .video-card__date { font-size: .92rem; }
.article-card:hover .article-card__title, .video-card:hover .video-card__title { color: var(--teal-deep); }
.acc { display: grid; gap: 10px; border-top: 0; }
.acc__item { padding-inline: clamp(18px, 2vw, 26px); border-bottom: 0; border-radius: var(--radius-card); background: var(--stone); }
.bg-soft .acc__item { background: var(--white); }
.acc__title { font-family: var(--serif); font-size: clamp(1.45rem, 1.9vw, 1.7rem); font-weight: 500; line-height: 1.25; letter-spacing: -0.004em; }
.acc--plain .acc__title { font-size: clamp(1.4rem, 1.8vw, 1.6rem); }
.acc__panel p, .acc--plain .acc__panel p { font-size: 1.04rem; }
.acc__num { font-family: var(--serif); font-size: 1.3rem; color: var(--gold-text); }
.acc__toggle { width: 34px; height: 34px; border: 0; border-radius: 0; color: var(--gold-text); }
.acc__btn:hover .acc__toggle { color: var(--ink); }
.acc__item.is-open .acc__toggle { background: none; color: var(--ink); }
.faq__aside .btn { margin-top: .4rem; }

/* ---------- 21. Pages intérieures ---------- */
.page-hero { padding: calc(var(--header-h) + 72px) 0 clamp(56px, 6vw, 92px); background: var(--stone); }
.page-hero .display { font-size: clamp(2.6rem, 4.6vw, 4.3rem); line-height: 1.04; }
.page-h1 { margin: 0 0 1rem; font-size: 1.08rem; font-weight: 500; color: var(--text-body); }
.page-hero__visual, .histoire__media { border-radius: var(--radius-img); }
/* Pourquoi Leverage : le logo carré à la place de la photo, posé tel quel sur le fond du hero */
.page-hero__visual--logo { justify-self: center; width: min(100%, 400px); aspect-ratio: 1 / 1; border-radius: 0; overflow: visible; background: none; }
.page-hero__visual--logo img { object-fit: contain; }
/* Fil d'Ariane masqué à l'écran sur toutes les pages (demande d'Adrien, 2026-10-04).
   Il reste lisible par les moteurs dans les données structurées BreadcrumbList de chaque page. */
.breadcrumb { display: none; }
/* Pages intérieures sans sommaire : une colonne centrée, de la largeur qu'avait le contenu à côté du sommaire */
.container--page { max-width: calc(960px + var(--gutter) * 2); }
.block + .block { border-top: 0; }
.sub-h { font-family: var(--serif); font-size: 1.65rem; font-weight: 500; line-height: 1.15; letter-spacing: -0.004em; }
.statement { font-size: clamp(1.75rem, 2.9vw, 2.45rem); line-height: 1.2; }
.card { border-radius: var(--radius-card); }
.bg-soft .card, .bg-soft .solution, .bg-soft .agrement, .bg-soft .cadre__item { background: var(--white); border-color: transparent; }
.bg-white .card, .bg-white .rating { background: var(--stone); border-color: transparent; }
.card--hover:hover { border-color: var(--hairline); box-shadow: var(--shadow-soft); transform: translateY(-3px); }
.card .h3, .grid .h3 { font-size: 1.45rem; }
.role { border-radius: var(--radius-card); border-color: transparent; background: var(--stone); }
.role h3 { font-size: 1.5rem; }
.role--you { background: var(--ink); border-color: var(--ink); }
.quote { border-radius: var(--radius-card); border-color: transparent; background: var(--stone); }
.quote img { border-radius: var(--radius-img); }
.quote blockquote p { font-size: clamp(1.7rem, 2.7vw, 2.3rem); line-height: 1.2; }
.agrement { border-radius: var(--radius-card); }
.cadre__item { border-radius: var(--radius-card); }
.cadre__item .h3 { font-size: 1.45rem; }
.stack__card { border-radius: var(--radius-card); }
.office__img { border-radius: var(--radius-img) var(--radius-img) 0 0; }
.cta-final__box { border-radius: var(--radius-card); background: var(--night); }
.funds-line { border-radius: var(--radius-card); }

/* ---------- 21 bis. Pourquoi Leverage : notre histoire, une ligne dorée qui se trace au fil du scroll ---------- */
/* --dot-y : hauteur du point dans chaque étape ; --tail (posé par main.js) arrête la ligne sur la dernière étape */
.story {
  --rail: 136px; --gap: 48px; --dot-y: 15px;
  position: relative; display: grid; gap: clamp(28px, 3.2vw, 40px); margin-top: clamp(34px, 4vw, 52px);
}
.story::before, .story::after {
  content: ""; position: absolute; top: var(--dot-y); bottom: var(--tail, 0px); left: calc(var(--rail) + var(--gap) / 2);
  width: 1px; pointer-events: none;
}
.story::before { background: var(--border); }
.story::after { background: var(--gold); transform-origin: top; transform: scaleY(var(--line, 1)); }
.story > li { position: relative; display: grid; grid-template-columns: var(--rail) minmax(0, 1fr); column-gap: var(--gap); align-items: start; }
.story > li::before {
  content: ""; position: absolute; z-index: 1; top: calc(var(--dot-y) - 5.5px); left: calc(var(--rail) + var(--gap) / 2 - 5px);
  width: 11px; height: 11px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 6px var(--white);
  transition: background-color .6s var(--ease-expo), transform .6s var(--ease-expo);
}
.anim .story > li:not(.is-reached)::before { background: var(--grey-200); transform: scale(.75); }
.story__when {
  grid-column: 1; grid-row: 1 / span 2; padding-top: .1em; text-align: right;
  font-family: var(--serif); font-size: 1.4rem; font-weight: 500; line-height: 1.2; color: var(--gold-text); font-variant-numeric: lining-nums;
}
.story__title {
  grid-column: 2; font-family: var(--serif); font-weight: 500; font-size: clamp(1.45rem, 2vw, 1.75rem);
  line-height: 1.15; letter-spacing: -0.006em; color: var(--ink); text-wrap: balance;
}
.story__text { grid-column: 2; max-width: 60ch; margin-top: .55rem; color: var(--text-body); }
.sub-h.story__apports-title { margin-top: clamp(44px, 5vw, 64px); }

/* ---------- 22. Pied de page ---------- */
.site-footer { background: var(--night); }
.site-footer .footer__news-title { font-family: var(--serif); font-size: clamp(2rem, 2.9vw, 2.7rem); font-weight: 500; letter-spacing: -0.006em; }
.footer__title { font-size: .95rem; font-weight: 600; letter-spacing: 0; color: #fff !important; }
.footer__col li a { font-size: .95rem; }
.footer__tagline { font-family: var(--serif); font-size: 1.15rem; }
/* Newsletter du pied de page : champ blanc sur le fond sombre, bouton or */
.footer__news .news-row { border-radius: var(--radius-btn); background: var(--white); border-color: var(--white); }
.footer__news .news-row:focus-within { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(228, 190, 116, .4); }
.footer__news input[type="email"] { border-radius: var(--radius-btn); color: var(--ink); }
.footer__news input[type="email"]::placeholder { color: var(--text-muted); }
.agrements--dark .agrement { border-radius: var(--radius-card); }
.footer__social a { border-radius: var(--radius-btn); }

/* ---------- 23. Responsive ---------- */
@media (max-width: 1199px) {
  .quick__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1023px) {
  /* Tablette et mobile : l'immeuble en bandeau en haut, qui se fond dans le blanc sous le titre */
  .hero15__bg { bottom: auto; height: 400px; }
  .hero15::before { bottom: auto; height: 401px; background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 30%, rgba(255, 255, 255, .82) 64%, rgba(255, 255, 255, .96) 82%, #fff 100%); }
  .hero15__bg img { object-position: 50% 45%; }
  .hero15__inner { min-height: 0; }
  .hero15__content { max-width: 680px; padding: 290px 0 56px; }
  .quick__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cotes__grid, .remu, .directeur { grid-template-columns: minmax(0, 1fr); }
  .remu__media, .directeur__media { max-width: 520px; }
  .cotes__img { max-width: 600px; }
  .cotes__time { left: 0; }
  .people { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .deck { grid-auto-flow: column; grid-auto-columns: min(86%, 560px); gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; margin-inline: calc(-1 * var(--gutter)); padding: 0 var(--gutter) 8px; scroll-padding-inline: var(--gutter); scrollbar-width: none; }
  .deck::-webkit-scrollbar { display: none; }
  .deck__card { grid-template-columns: minmax(0, 1fr); align-content: start; min-height: 0; scroll-snap-align: start; }
  .deck__media { order: -1; aspect-ratio: 16 / 11; }
  .tools15__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cadre14 .agrements { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .hero15 .display { font-size: clamp(2.7rem, 11.8vw, 3.6rem); }
  .deco--rosace::before { top: -110px; right: -130px; width: 300px; }
  .deco--facade::before { width: 300px; opacity: .07; }
  .hero15__bg { height: 320px; }
  .hero15::before { height: 321px; }
  .hero15__content { padding-top: 232px; }
  .hero15__lead { font-size: 1.1rem; }
  .projet .btn { flex: 1 1 100%; }
  .projet select { flex: none; width: 100%; }
  .head15 { gap: 12px; }
  .quick__list { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .quick__list a { min-height: 72px; }
  .pillars { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .cotes__img { padding-bottom: 60px; }
  .cotes__frame { width: 100%; }
  .cotes__second { width: 60%; border-width: 4px; border-radius: 14px; }
  .cotes__time { left: auto; right: 10px; top: 12px; max-width: 176px; padding: 12px 14px 14px; border-radius: 12px; }
  .cotes__time-value { font-size: 2.3rem; }
  .cotes__time-text { font-size: .84rem; }
  .objectifs .row-head, .objectifs .head15 { flex-wrap: nowrap; }
  .carousel__nav { display: none; }
  .carousel__track > li { flex-basis: 76%; }
  .people { gap: 26px 14px; }
  .person__title { font-size: 1.3rem; }
  .person p { font-size: .88rem; }
  .cities { grid-template-columns: minmax(0, 1fr); }
  #equipe .team--trio { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .team--trio .member__name { font-size: 1.12rem; }
  .team--trio .member__role { font-size: .9rem; }
  .team--trio .member__body { padding-right: 0; }
  .team--trio .member__in { display: none; }
  .tools15__list { grid-template-columns: minmax(0, 1fr); }
  .cadre14 .agrements { grid-template-columns: minmax(0, 1fr); }
  .directeur__quote p { font-size: 1.85rem; }
  .story { --rail: 0px; --gap: 0px; --dot-y: 11px; gap: 26px; }
  .story::before, .story::after { left: 5px; }
  .story > li { grid-template-columns: minmax(0, 1fr); padding-left: 32px; }
  .story > li::before { left: 0; }
  .story__when { grid-row: auto; padding-top: 0; margin-bottom: .3rem; text-align: left; font-size: 1.2rem; }
  .story__title, .story__text { grid-column: 1; }
  .page-hero__visual--logo { width: min(100%, 240px); }
}
@media (max-width: 1023px) and (min-width: 768px) {
  .page-hero__visual--logo { width: min(100%, 240px); }
}

/* =========================================================
   24. Pages solutions (première : crédit lombard, 2026-10-23)
   Hero avec la demande d'étude visible dès l'arrivée, simulateur, grille, usages, taux, accompagnement, risques
   ========================================================= */
/* Hero : l'immeuble en fond, un voile blanc sous le texte, la demande d'étude à droite */
.sol-hero { position: relative; isolation: isolate; overflow: hidden; padding: calc(var(--header-h) + clamp(36px, 5vw, 72px)) 0 clamp(56px, 6vw, 92px); background: var(--white); }
.sol-hero__bg { position: absolute; inset: var(--header-h) 0 0; z-index: -2; margin: 0; overflow: hidden; background: var(--grey-100); }
.sol-hero__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 80% 30%; }
.sol-hero::before { content: ""; position: absolute; inset: var(--header-h) 0 0; z-index: -1; pointer-events: none; background: linear-gradient(90deg, #fff 0%, #fff 36%, rgba(255, 255, 255, .9) 48%, rgba(255, 255, 255, .55) 62%, rgba(255, 255, 255, .25) 78%, rgba(255, 255, 255, .15) 100%); }
.sol-hero__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.sol-hero__content { padding-top: clamp(8px, 2vw, 32px); }
.sol-hero__title { max-width: 13em; font-size: clamp(2.7rem, 4.6vw, 4.4rem); line-height: 1.03; text-wrap: balance; }
.sol-hero__lead { max-width: 560px; margin-top: 1.4rem; font-size: 1.2rem; line-height: 1.65; color: var(--text-body); }
.sol-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; max-width: 640px; margin-top: 2.2rem; }
.sol-facts > div { padding: 16px 18px 18px; border-radius: var(--radius-card); background: var(--stone); }
.sol-facts dt { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; line-height: 1.1; color: var(--teal-deep); font-variant-numeric: lining-nums; }
.sol-facts dd { margin: .35rem 0 0; font-size: .9rem; line-height: 1.45; color: var(--text-body); }
.sol-hero__trust { display: flex; align-items: center; gap: 14px; max-width: 560px; margin-top: 1.8rem; }
.sol-hero__trust img { width: auto; height: 42px; }
.sol-hero__trust p { font-size: .92rem; line-height: 1.5; color: var(--text-muted); }

/* La demande d'étude en trois étapes : sans script, toutes les étapes s'affichent l'une sous l'autre */
.lead-form { position: relative; padding: clamp(22px, 2.4vw, 32px); border-radius: 20px; background: var(--white); box-shadow: 0 1px 2px rgba(6, 25, 29, .06), 0 40px 70px -40px rgba(6, 25, 29, .45); scroll-margin-top: calc(var(--header-h) + 16px); }
.lead-form__title { font-family: var(--serif); font-size: clamp(1.7rem, 2vw, 2rem); font-weight: 500; line-height: 1.1; color: var(--ink); }
.lead-form__intro { margin-top: .5rem; font-size: .95rem; line-height: 1.55; color: var(--text-body); }
.lead-form__progress { height: 4px; margin-top: 1.2rem; overflow: hidden; border-radius: 4px; background: var(--grey-200); }
.lead-form__progress span { display: block; width: 33.34%; height: 100%; border-radius: 4px; background: var(--teal-deep); transition: width .5s var(--ease-expo); }
.lead-form__count { margin-top: .6rem; font-size: .86rem; font-weight: 500; color: var(--teal-deep); }
.lead-form:not(.is-stepped) .lead-form__progress, .lead-form:not(.is-stepped) .lead-form__count, .lead-form:not(.is-stepped) [data-step-next], .lead-form:not(.is-stepped) [data-step-prev] { display: none; }
.lead-step { display: grid; gap: 18px; min-width: 0; margin: 1.4rem 0 0; padding: 0; border: 0; }
.lead-form.is-stepped .lead-step:not(.is-current) { display: none; }
.lead-form.is-sent .lead-step, .lead-form.is-sent .lead-form__progress, .lead-form.is-sent .lead-form__count, .lead-form.is-sent .lead-form__intro { display: none; }
.lead-form .form-grid { gap: 14px; }
.lead-form .field textarea { min-height: 96px; }
.lead-form .form-status { margin-top: 1rem; }
.lead-form__nav { display: flex; align-items: center; gap: 14px; margin-top: 4px; }
.lead-form__nav .btn { flex: 1; }
.lead-form__back { min-height: 44px; padding: 0 .4rem; font-size: .95rem; font-weight: 500; color: var(--ink); text-decoration: underline; text-decoration-color: var(--hairline); text-underline-offset: 6px; }
.lead-form__back:hover { color: var(--teal-deep); text-decoration-color: var(--gold); }
.lead-form__note { margin-top: 1rem; font-size: .8rem; line-height: 1.5; color: var(--text-muted); }
.lead-form__todo { margin-top: .5rem; }
/* Choix en tuiles : boutons radio et cases à cocher habillés, toujours atteignables au clavier */
.choices { min-width: 0; margin: 0; padding: 0; border: 0; }
.choices legend { margin-bottom: .55rem; padding: 0; font-size: .88rem; font-weight: 500; color: var(--ink); }
.choices legend .opt { font-weight: 400; color: var(--text-muted); }
.choices__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.choices__grid--wrap { display: flex; flex-wrap: wrap; }
.choice { position: relative; display: flex; cursor: pointer; }
.choice input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.choice span { flex: 1; display: flex; align-items: center; min-height: 46px; padding: 10px 14px; border: 1px solid #D5DADB; border-radius: 10px; background: var(--white); font-size: .9rem; line-height: 1.3; color: var(--ink); transition: border-color .2s, background-color .2s, box-shadow .2s; }
.choice:hover span { border-color: var(--teal-deep); }
.choice input:checked + span { border-color: var(--teal-deep); background: rgba(27, 98, 111, .07); box-shadow: inset 0 0 0 1px var(--teal-deep); font-weight: 600; }
.choice input:focus-visible + span { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.choices.has-error .choice span { border-color: #B3261E; }
.choices .field__error { margin-top: .4rem; }

/* Simulateur : la valeur des placements par catégorie, la limite indicative dans un panneau encre */
.sim-lombard { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(16px, 2vw, 24px); align-items: stretch; }
.sim-lombard__inputs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.sim-lombard__field { gap: .35rem; padding: 16px 18px 14px; border-radius: var(--radius-card); background: var(--stone); }
.sim-lombard__field label { font-size: .92rem; }
/* Le champ et son symbole euro dans un même cadre */
.sim-lombard__input { display: flex; align-items: center; gap: 6px; min-height: 56px; padding: 0 16px 0 4px; border: 1px solid #D5DADB; border-radius: 12px; background: var(--white); transition: border-color .2s, box-shadow .2s; }
.sim-lombard__input:focus-within { border-color: var(--teal-deep); box-shadow: 0 0 0 3px rgba(27, 98, 111, .15); }
.field .sim-lombard__input input, .field .sim-lombard__input input:focus { min-height: 52px; padding: 0 8px; border: 0; border-radius: 0; box-shadow: none; background: transparent; font-family: var(--serif); font-size: 1.55rem; font-weight: 500; font-variant-numeric: lining-nums tabular-nums; text-align: right; }
.sim-lombard__input span { font-family: var(--serif); font-size: 1.4rem; color: var(--text-muted); }
.sim-lombard__rate { font-size: .8rem; line-height: 1.4; color: var(--text-muted); }
.sim-lombard__result { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: clamp(26px, 3vw, 40px); border-radius: 20px; background: radial-gradient(120% 90% at 0% 0%, rgba(29, 129, 147, .28) 0%, rgba(29, 129, 147, 0) 60%), linear-gradient(150deg, var(--teal-night) 0%, var(--ink) 72%); color: #fff; }
.sim-lombard__label { font-size: .95rem; color: rgba(255, 255, 255, .72); }
.sim-lombard__value { margin-top: .3rem; font-family: var(--serif); font-size: clamp(2.8rem, 4.4vw, 3.8rem); font-weight: 500; line-height: 1; color: #fff; font-variant-numeric: lining-nums tabular-nums; }
.sim-lombard__detail { margin-top: .7rem; font-size: .98rem; color: rgba(255, 255, 255, .82); }
.sim-lombard__result .btn { margin-top: 1.6rem; }
.sim-lombard__note { margin-top: 1.2rem; font-size: .8rem; line-height: 1.5; color: rgba(255, 255, 255, .62); }

/* La grille complète des taux d'avance, repliée par défaut */
.sol-grid { margin-top: clamp(24px, 3vw, 36px); }
.sol-grid summary { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font-weight: 500; color: var(--ink); cursor: pointer; list-style: none; text-decoration: underline; text-decoration-color: var(--hairline); text-underline-offset: 6px; }
.sol-grid summary::-webkit-details-marker { display: none; }
.sol-grid summary::after { content: "+"; font-size: 1.2rem; color: var(--gold-text); }
.sol-grid[open] summary::after { content: "\2212"; }
.sol-grid summary:hover { color: var(--teal-deep); }
.sol-table-wrap { max-width: 820px; margin-top: 16px; overflow-x: auto; }
.sol-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .95rem; }
.sol-table caption { padding-bottom: 12px; caption-side: top; text-align: left; font-size: .9rem; color: var(--text-muted); }
.sol-table th, .sol-table td { padding: 11px 16px; text-align: left; font-weight: 400; vertical-align: top; }
.sol-table td { white-space: nowrap; font-variant-numeric: lining-nums tabular-nums; color: var(--ink); }
.sol-table thead th { font-size: .85rem; font-weight: 600; color: var(--ink); }
.sol-table tbody tr:nth-child(odd) th, .sol-table tbody tr:nth-child(odd) td { background: var(--stone); }
.sol-table tbody tr th:first-child { border-radius: 10px 0 0 10px; }
.sol-table tbody tr td:last-child { border-radius: 0 10px 10px 0; }
.sol-table__group th { padding-top: 22px; font-family: var(--serif); font-size: 1.3rem; font-weight: 500; color: var(--ink); background: none !important; }
.sol-table__group th span { font-family: var(--font); font-size: .85rem; color: var(--text-muted); }
.sol-grid__note { max-width: 820px; margin-top: 12px; font-size: .88rem; color: var(--text-muted); }

/* Usages */
.sol-uses { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.sol-use { padding: 26px 26px 28px; border-radius: var(--radius-card); background: var(--white); }
.sol-use .ico { width: 28px; height: 28px; color: var(--teal-deep); }
.sol-use__title { margin-top: 1rem; font-family: var(--serif); font-size: 1.6rem; font-weight: 500; line-height: 1.15; color: var(--ink); }
.sol-use p { margin-top: .45rem; font-size: 1.02rem; }
.sol-notice { margin-top: 14px; padding: 18px 24px; border-radius: var(--radius-card); background: var(--white); }
.sol-notice p { color: var(--ink); }
.sol-notice a { color: var(--teal-deep); text-decoration: underline; text-underline-offset: 4px; }

/* Taux et coûts */
.sol-rates { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 96px); align-items: center; }
.sol-rates__text .lead { margin-top: 1.2rem; }
.sol-rates__body { margin-top: 1.4rem; }
.sol-rates__body p + p { margin-top: .9rem; }
.sol-rates__card { padding: clamp(22px, 2.6vw, 32px); border-radius: 20px; background: var(--stone); }
.sol-table--rates tbody tr:nth-child(odd) th, .sol-table--rates tbody tr:nth-child(odd) td { background: var(--white); }
.sol-table--rates td:last-child { font-family: var(--serif); font-size: 1.3rem; font-weight: 500; color: var(--teal-deep); }
.sol-rates__source { margin-top: 14px; font-size: .82rem; color: var(--text-muted); }
.sol-rates__legal { margin-top: 10px; font-size: .9rem; font-weight: 500; line-height: 1.5; color: var(--ink); }

/* Pourquoi passer par Leverage */
.sol-why { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 6.5vw, 116px); align-items: center; }
.sol-why__media { position: relative; margin: 0; overflow: hidden; aspect-ratio: 4 / 5; border-radius: 18px; background: var(--grey-200); }
.sol-why__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.sol-why__body .lead { margin-top: 1.2rem; }
.sol-why__motto { margin-top: 1.6rem; font-family: var(--serif); font-size: 1.5rem; font-weight: 500; line-height: 1.3; color: var(--ink); }
.sol-why__body .actions { margin-top: 1.8rem; }

/* Risques */
.sol-risks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.sol-risks li { padding: 22px 24px 24px; border-radius: var(--radius-card); background: var(--stone); }
.sol-risks h3 { font-family: var(--serif); font-size: 1.45rem; font-weight: 500; line-height: 1.15; color: var(--ink); }
.sol-risks p { margin-top: .4rem; font-size: .98rem; }
.sol-risks__foot { max-width: 760px; margin-top: 20px; font-size: .95rem; }

@media (max-width: 1023px) {
  .sol-hero { padding-top: calc(var(--header-h) + 210px); }
  .sol-hero__bg { bottom: auto; height: 320px; }
  .sol-hero::before { bottom: auto; height: 321px; background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 35%, rgba(255, 255, 255, .85) 75%, #fff 100%); }
  .sol-hero__bg img { object-position: 70% 30%; }
  .sol-hero__grid, .sim-lombard, .sol-rates, .sol-why { grid-template-columns: minmax(0, 1fr); }
  .sol-hero__content { padding-top: 0; }
  .lead-form { max-width: 640px; }
  .sol-uses { grid-template-columns: minmax(0, 1fr); }
  .sol-risks { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sol-why__media { max-width: 520px; aspect-ratio: 16 / 11; }
}
@media (max-width: 767px) {
  .sol-hero { padding-top: calc(var(--header-h) + 150px); }
  .sol-hero__bg { height: 250px; }
  .sol-hero::before { height: 251px; }
  .sol-hero__title { font-size: clamp(2.3rem, 9.6vw, 3rem); }
  .sol-hero__lead { font-size: 1.08rem; }
  .sol-facts { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .sol-facts > div { display: flex; align-items: baseline; gap: 12px; padding: 12px 16px; }
  .sol-facts dt { flex-shrink: 0; font-size: 1.4rem; }
  .sol-facts dd { margin: 0; }
  .sol-hero__trust { align-items: flex-start; }
  .sol-hero__trust img { height: 34px; }
  .lead-form { padding: 22px 18px; border-radius: 16px; }
  .sim-lombard__inputs, .sol-risks { grid-template-columns: minmax(0, 1fr); }
  .sol-table th, .sol-table td { padding: 10px 12px; }
}
@media (max-width: 479px) {
  .choices__grid { grid-template-columns: minmax(0, 1fr); }
}

/* 24 bis. Pages assurance-vie et avance sur rachat (2026-10-27) : variantes des briques solutions */
.sol-uses--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sol-risks--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sol-risks--white li { background: var(--white); }
.pillars--stone li { background: var(--stone); }
.sol-steps { margin-top: clamp(28px, 3.4vw, 44px); }
.sim-lombard__inputs--single { grid-template-columns: minmax(0, 1fr); }
.bg-soft .sim-lombard__field { background: var(--white); }
.sim-lombard__inputs--single .sim-lombard__field { align-content: center; gap: .7rem; padding: clamp(24px, 3vw, 40px); border-radius: 20px; }
.sim-lombard__inputs--single label { font-family: var(--serif); font-size: clamp(1.6rem, 2.2vw, 2rem); font-weight: 500; line-height: 1.15; }
.sim-lombard__inputs--single .sim-lombard__input { min-height: 72px; }
.field .sim-lombard__inputs--single .sim-lombard__input input, .sim-lombard__inputs--single .field .sim-lombard__input input { font-size: 2rem; }
[data-range-sim] .sim-lombard__value { font-size: clamp(2.2rem, 3.2vw, 2.9rem); }
/* Le lien vers la page liée : un panneau encre, le texte et le bouton or */
.sol-bridge-wrap { padding-block: clamp(48px, 5vw, 72px); }
.sol-bridge { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 40px; padding: clamp(28px, 3.4vw, 44px) clamp(26px, 3.6vw, 52px); border-radius: 20px; background: radial-gradient(120% 90% at 0% 0%, rgba(29, 129, 147, .28) 0%, rgba(29, 129, 147, 0) 60%), linear-gradient(150deg, var(--teal-night) 0%, var(--ink) 72%); color: #fff; }
.sol-bridge__body { flex: 1 1 420px; max-width: 680px; }
.sol-bridge__title { font-family: var(--serif); font-size: clamp(1.8rem, 2.6vw, 2.4rem); font-weight: 500; line-height: 1.1; color: #fff; }
.sol-bridge p { margin-top: .6rem; font-size: 1.05rem; color: rgba(255, 255, 255, .8); }
/* Avance ou rachat : deux cartes côte à côte, l'avance en encre */
.sol-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.sol-compare__card { display: flex; flex-direction: column; padding: clamp(24px, 3vw, 36px); border-radius: 20px; background: var(--stone); }
.sol-compare__card h3 { font-family: var(--serif); font-size: clamp(1.8rem, 2.4vw, 2.2rem); font-weight: 500; line-height: 1.1; color: var(--ink); }
.sol-compare__tag { margin-top: .3rem; font-size: .95rem; font-weight: 500; color: var(--teal-deep); }
.sol-compare__card ul { display: grid; gap: .6rem; margin-top: 1.2rem; }
.sol-compare__card li { font-size: 1.02rem; line-height: 1.55; color: var(--text-body); }
.sol-compare__when { margin-top: auto; padding-top: 1.4rem; font-family: var(--serif); font-size: 1.3rem; font-weight: 500; line-height: 1.3; color: var(--ink); }
.sol-compare__card--dark { background: radial-gradient(120% 90% at 0% 0%, rgba(29, 129, 147, .28) 0%, rgba(29, 129, 147, 0) 60%), linear-gradient(150deg, var(--teal-night) 0%, var(--ink) 72%); }
.sol-compare__card--dark h3, .sol-compare__card--dark .sol-compare__when { color: #fff; }
.sol-compare__card--dark .sol-compare__tag { color: var(--gold); }
.sol-compare__card--dark li { color: rgba(255, 255, 255, .82); }
@media (max-width: 1199px) {
  .sol-uses--4, .sol-risks--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .sol-uses--4, .sol-risks--4, .sol-compare { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- 25. Audit du 2026-10-28 : petits écrans et zones tactiles ---------- */
/* Zones tactiles des liens texte agrandies à 44 px sans bouger la mise en page */
.link-arrow, .projet__alt, .review__link { padding-block: 10px; margin-block: -10px; }
.review__link { display: inline-block; }
.tp { padding-block: 8px; margin-block: -8px; }
/* Tableau des taux : trois colonnes tenues jusqu'à 320 px */
@media (max-width: 479px) {
  .sol-rates__card { padding: 18px 14px; }
  .sol-table--rates th, .sol-table--rates td { padding: 10px 8px; }
  .sol-table--rates thead th { font-size: .78rem; }
  .sol-table--rates td:last-child { font-size: 1.12rem; }
}
/* 320 à 379 px : les boutons longs passent à la ligne au lieu de déborder */
@media (max-width: 379px) {
  .btn, .btn__label { max-width: 100%; white-space: normal; }
  .band__value { font-size: 2.6rem; }
}
.reviews__aside { grid-template-columns: minmax(0, 1fr); }

/* ---------- 26. Crédit hypothécaire : deux champs empilés dans l'estimateur, mention légale du crédit ---------- */
.sim-lombard__inputs--pair .sim-lombard__field { padding: clamp(20px, 2.4vw, 30px); }
.sim-lombard__inputs--pair label { font-size: clamp(1.35rem, 1.8vw, 1.65rem); }
.sim-lombard__inputs--pair label .opt { font-family: var(--font); font-size: .9rem; font-weight: 400; color: var(--text-muted); }
.sol-legal { max-width: 820px; margin-top: clamp(24px, 3vw, 36px); font-size: .95rem; font-weight: 500; line-height: 1.55; color: var(--ink); }
.bg-soft .sol-compare__card:not(.sol-compare__card--dark) { background: var(--white); }
/* Trois étapes : trois colonnes jusqu'à la tablette, une seule sur mobile */
.steps.sol-steps--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 767px) { .steps.sol-steps--3 { grid-template-columns: minmax(0, 1fr); } }
/* Estimateur du PER : le taux marginal en tuiles sous le montant */
.sim-lombard__field legend { float: left; width: 100%; padding: 0; margin-bottom: .7rem; font-family: var(--serif); font-size: clamp(1.35rem, 1.8vw, 1.65rem); font-weight: 500; line-height: 1.15; color: var(--ink); }
.sim-lombard__inputs--single label.choice { font-family: var(--font); font-size: 1rem; font-weight: 400; line-height: 1.3; }
.choices__grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.choices__grid--4 .choice span { justify-content: center; font-size: 1.05rem; font-weight: 500; }
@media (max-width: 479px) { .choices__grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sim-lombard__field legend + * { clear: both; }

/* ---------- 27. Logos partenaires en couleur : hauteurs optiques par logo ---------- */
.partners__track .logo-generali { height: 36px; }
.partners__track .logo-swisslife { height: 42px; }
.partners__track .logo-abeille { height: 40px; }
.partners__track .logo-ubs { height: 40px; }
.partners__track .logo-rothschild { height: 26px; }
.partners__track .logo-efg { height: 34px; }
.partners__track .logo-swissquote { height: 28px; }
.partners__track .logo-wealins { height: 50px; }
@media (max-width: 767px) {
  .partners__track .logo-generali { height: 29px; }
  .partners__track .logo-swisslife { height: 34px; }
  .partners__track .logo-efg { height: 26px; }
  .partners__track .logo-abeille, .partners__track .logo-ubs { height: 32px; }
  .partners__track .logo-rothschild, .partners__track .logo-swissquote { height: 22px; }
  .partners__track .logo-wealins { height: 40px; }
}

/* ---------- 28. Pied de page : disclaimer et mentions légales centrés, agréments en panneau centré ---------- */
/* La colonne de marque s'élargit pour que le bouton ne déborde plus sur la colonne voisine */
@media (min-width: 1200px) { .footer__cols { grid-template-columns: minmax(0, 1.8fr) repeat(4, minmax(0, 1fr)); } }
.footer__brand .btn { max-width: 100%; padding-inline: 1.3rem; white-space: normal; }
.footer__disclaimer { display: grid; gap: 3px; max-width: 900px; margin-inline: auto; padding-top: 26px; text-align: center; }
.footer__disclaimer-title { font-size: .7rem; font-weight: 600; letter-spacing: .02em; color: rgba(255, 255, 255, .74); }
.footer__disclaimer p:not(.footer__disclaimer-title) { font-size: .7rem; line-height: 1.65; color: rgba(255, 255, 255, .55); }
.footer__legal { text-align: center; }
.footer__legal p { max-width: 1000px; margin-inline: auto; font-size: .68rem; line-height: 1.7; }
.agrements--footer { display: flex; flex-wrap: wrap; justify-content: center; gap: 0; width: fit-content; max-width: 100%; margin: 26px auto 6px; padding: 18px 6px 16px; border: 1px solid rgba(255, 255, 255, .09); border-radius: var(--radius-card); background: rgba(255, 255, 255, .03); }
.agrements--footer .agrement { display: grid; justify-items: center; align-content: start; gap: 1px; padding: 2px 26px; border: 0; border-radius: 0; background: none; text-align: center; }
.agrements--footer .agrement + .agrement { border-left: 1px solid rgba(255, 255, 255, .09); }
.agrements--footer .agrement__logos { display: flex; align-items: center; justify-content: center; width: 96px; height: 36px; margin-bottom: 8px; padding: 0 10px; border-radius: 8px; background: #fff; }
.agrements--footer .agrement__logos img { width: auto; max-width: 100%; height: 22px; object-fit: contain; filter: none; opacity: 1; }
.agrements--footer .agrement__label { font-size: .72rem; font-weight: 500; line-height: 1.35; color: rgba(255, 255, 255, .78); }
.agrements--footer .agrement__detail { font-size: .68rem; line-height: 1.35; color: rgba(255, 255, 255, .5); }
@media (max-width: 767px) {
  .agrements--footer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 0; width: 100%; padding: 18px 4px; }
  .agrements--footer .agrement { padding: 2px 10px; }
  .agrements--footer .agrement + .agrement { border-left: 0; }
  .agrements--footer .agrement:nth-child(even) { border-left: 1px solid rgba(255, 255, 255, .09); }
}

/* ---------- 29. Fond « pierre de Paris » des blocs sombres (choix d'Adrien du 2026-10-28) ----------
   Une porte haussmannienne sculptée sous un voile encre remplace le dégradé teal : résultats des estimateurs,
   cartes de lien vers une autre solution, cartes sombres des comparatifs, panneau texte du slider de l'accueil. */
.sim-lombard__result, .sol-bridge, .sol-compare__card--dark, .deck__body { position: relative; isolation: isolate; overflow: hidden; }
.sim-lombard__result, .sol-bridge, .sol-compare__card--dark, .deck__card { background: var(--ink); }
.sim-lombard__result::before, .sol-bridge::before, .sol-compare__card--dark::before, .deck__body::before,
.sim-lombard__result::after, .sol-bridge::after, .sol-compare__card--dark::after, .deck__body::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.sim-lombard__result::before, .sol-bridge::before, .sol-compare__card--dark::before, .deck__body::before { background: url("/assets/img/stock/porte-paris.webp") center 40% / cover no-repeat; filter: grayscale(.35); }
.sim-lombard__result::after, .sol-bridge::after, .sol-compare__card--dark::after, .deck__body::after { background: linear-gradient(180deg, rgba(6, 25, 29, .7) 0%, rgba(6, 25, 29, .86) 100%); }
/* Panneau large : la photo est recadrée sur les sculptures et le voile s'épaissit côté texte */
.sol-bridge::before { background-position: center 30%; }
.sol-bridge::after { background: linear-gradient(90deg, rgba(6, 25, 29, .88) 0%, rgba(6, 25, 29, .74) 100%); }
/* Slider de l'accueil : la première carte montre déjà la porte, le panneau texte prend une façade en pierre */
.deck__body::before { background-image: url("/assets/img/stock/facade-paris.webp"); background-position: center; }
/* Fond du panneau texte légèrement flouté (demande d'Adrien du 2026-10-29) : agrandi un peu pour que le flou ne laisse pas de bord clair */
.deck__body::before { filter: grayscale(.35) blur(4px); transform: scale(1.08); }

/* ---------- 30. Performances des portefeuilles modèles (pages PER et assurance-vie, données content/performances.json) ---------- */
.perf { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.perf__card { display: flex; flex-direction: column; padding: clamp(24px, 2.6vw, 32px); border-radius: 20px; background: var(--stone); }
.bg-soft .perf__card { background: var(--white); }
.perf__name { font-family: var(--serif); font-size: clamp(1.7rem, 2.2vw, 2rem); font-weight: 500; line-height: 1.1; color: var(--ink); }
.perf__mix { margin-top: .25rem; font-size: .92rem; color: var(--text-muted); }
.perf__value { margin-top: 1.1rem; font-family: var(--serif); font-size: clamp(2.6rem, 3.6vw, 3.2rem); font-weight: 500; line-height: 1; color: var(--teal-deep); font-variant-numeric: lining-nums tabular-nums; }
.perf__value span { font-family: var(--font); font-size: 1rem; font-weight: 400; color: var(--text-body); }
.perf__sub { margin-top: .45rem; font-size: .95rem; color: var(--text-body); }
.perf__chart { display: block; width: 100%; height: auto; margin-top: 1.3rem; overflow: visible; }
.perf__bar { fill: #0a8aa0; }
.perf__bar--neg { fill: #b5603f; }
.perf__bar--ytd { opacity: .55; }
.perf__zero { stroke: rgba(6, 25, 29, .28); stroke-width: 1; }
.perf__year { font-family: var(--font); font-size: 12px; fill: var(--text-muted); }
.perf__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 1.2rem; }
.perf__facts dt { font-size: .82rem; line-height: 1.35; color: var(--text-muted); }
.perf__facts dd { margin: .2rem 0 0; font-size: 1rem; font-weight: 500; color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
.perf__table-wrap { max-width: none; margin-top: 22px; }
.perf__table td, .perf__table thead th:not(:first-child) { text-align: right; }
.perf__note { max-width: 920px; margin-top: 16px; font-size: .82rem; line-height: 1.6; color: var(--text-muted); }
@media (max-width: 1023px) {
  .perf { grid-template-columns: minmax(0, 1fr); max-width: 560px; }
}

/* ---------- 31. Pages d'atterrissage PER (/per et /per/demande-recue) : en-tête réduit, chiffres, rappel ---------- */
.lp-header { position: fixed; inset: 0 0 auto; z-index: 60; background: rgba(255, 255, 255, .97); box-shadow: 0 12px 30px -28px rgba(15, 31, 34, .45); }
.lp-header__bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: var(--header-h); }
.lp-header__brand img { display: block; width: auto; height: 30px; }
.lp-header__tag { margin-right: auto; font-family: var(--serif); font-size: 1.1rem; color: var(--text-muted); }
.lp-header__phone { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 500; color: var(--ink); text-decoration: none; }
.lp-note { max-width: 640px; margin-top: 16px; font-size: .82rem; line-height: 1.55; color: var(--text-muted); }
.lp-form .form-grid { grid-template-columns: minmax(0, 1fr); }
.lp-err { margin-top: 2px; font-size: .84rem; color: #a3462c; }
.lp-err--send { margin-top: 12px; }
.lp-err a { color: inherit; text-decoration: underline; }
.lp-consent { display: grid; gap: 8px; }
.lp-consent__fine { font-size: .76rem; line-height: 1.5; color: var(--text-muted); }
.lp-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 16px; align-items: start; }
.lp-block { display: grid; gap: 14px; justify-items: start; padding: clamp(24px, 3vw, 36px); border-radius: 20px; background: var(--white); }
.lp-block > * { width: 100%; }
.lp-block > .link-arrow { width: auto; }
.lp-block__title { font-family: var(--serif); font-size: clamp(1.6rem, 2.2vw, 2rem); font-weight: 500; line-height: 1.15; color: var(--ink); }
.lp-perf { display: grid; gap: 12px; }
.lp-perf .perf__chart { margin-top: 0; }
.lp-years th, .lp-years td { padding: 9px 8px; text-align: center; }
.lp-years td.is-neg { color: #a3462c; }
.lp-years td.is-pos { color: var(--teal-deep); }
.lp-tax td { text-align: right; font-family: var(--serif); font-size: 1.3rem; font-weight: 500; color: var(--teal-deep); }
.lp-thanks { padding-block: calc(var(--header-h) + clamp(40px, 6vw, 80px)) clamp(56px, 6vw, 88px); background: var(--stone); }
.lp-thanks__inner { max-width: 860px; text-align: center; }
.lp-thanks__check { display: inline-grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--teal-deep); color: #fff; }
.lp-thanks__check .ico { width: 26px; height: 26px; stroke-width: 2.4; }
.lp-thanks__title { margin-top: 18px; font-size: clamp(2.4rem, 4.4vw, 3.6rem); }
.lp-thanks .lead { margin-top: 12px; }
.lp-thanks__tip { margin-top: 8px; color: var(--text-body); }
.lp-rdv { margin-top: 36px; padding: clamp(18px, 2.4vw, 28px); border-radius: 20px; background: var(--white); text-align: left; }
.lp-rdv__title { margin-bottom: 14px; font-family: var(--serif); font-size: clamp(1.5rem, 2vw, 1.8rem); font-weight: 500; color: var(--ink); }
.lp-rdv__frame { display: block; width: 100%; height: 1080px; border: 0; background: var(--white); }
@media (max-width: 1023px) {
  .lp-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .lp-header__tag { display: none; }
  .lp-header__phone span { display: none; }
}

/* ---------- 32. Simulateur PER (/simulateurs/per) : classes du simulateur d'Adrien, habillées aux couleurs du site ---------- */
.simper { padding-top: calc(var(--header-h) + clamp(32px, 4vw, 56px)); background: var(--stone); }
.simper__intro { max-width: 760px; margin-bottom: clamp(24px, 3vw, 36px); }
.simper__title { font-size: clamp(2.8rem, 5vw, 4.4rem); }
.simper__intro .lead { margin-top: 12px; }
.simper__layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 16px; align-items: start; }
.simper .panel { border-radius: 20px; background: var(--white); }
.simper .panel-head { padding: 22px 26px 0; font-family: var(--serif); font-size: clamp(1.5rem, 2vw, 1.75rem); font-weight: 500; line-height: 1.2; color: var(--ink); }
.simper .panel-body { padding: 14px 26px 26px; }
.simper .step { margin: 8px 0 12px; font-size: .95rem; font-weight: 600; color: var(--teal-deep); }
.simper .step ~ .step { margin-top: 26px; }
.simper .field { margin-bottom: 16px; }
.simper .lbl { position: relative; display: flex; align-items: center; gap: 8px; }
.simper .lbl label { font-size: .9rem; }
.simper .info { position: relative; display: inline-grid; place-items: center; width: 22px; height: 22px; padding: 0; border: 1px solid #D5DADB; border-radius: 50%; background: var(--white); font: 600 .72rem/1 var(--font); color: var(--teal-deep); cursor: help; }
.simper .info::after { content: ""; position: absolute; inset: -11px; }
.simper .tip { position: absolute; top: calc(100% + 10px); left: 0; z-index: 5; width: min(340px, 86vw); padding: 12px 14px; border-radius: 10px; background: var(--ink); font-size: .84rem; line-height: 1.5; color: #fff; opacity: 0; visibility: hidden; transition: opacity .2s, visibility .2s; }
.simper .tip::before { content: ""; position: absolute; top: -6px; left: var(--arrow, 12px); border: 6px solid transparent; border-top: 0; border-bottom-color: var(--ink); }
.simper .info[aria-expanded="true"] + .tip, .simper .info:hover + .tip, .simper .info:focus-visible + .tip { opacity: 1; visibility: visible; }
.simper .input-wrap { display: flex; align-items: center; border: 1px solid #D5DADB; border-radius: 12px; background: var(--white); transition: border-color .2s, box-shadow .2s; }
.simper .input-wrap:focus-within { border-color: var(--teal-deep); box-shadow: 0 0 0 3px rgba(27, 98, 111, .15); }
.simper .field .input-wrap input, .simper .field .input-wrap input:focus { min-height: 50px; border: 0; border-radius: 12px; box-shadow: none; background: transparent; font-size: 1.05rem; font-variant-numeric: lining-nums tabular-nums; }
.simper .input-wrap:has(input.bad) { border-color: #a3462c; box-shadow: 0 0 0 3px rgba(163, 70, 44, .12); }
.simper .unit { padding-right: 14px; font-size: .9rem; color: var(--text-muted); white-space: nowrap; }
.simper .row2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.simper .check { margin: -4px 0 16px; }
.simper .guide { margin-top: 10px; }
.simper .guide summary { cursor: pointer; font-size: .9rem; font-weight: 500; color: var(--teal-deep); }
.simper .guide-body { display: grid; gap: 10px; margin-top: 10px; padding: 16px; border-radius: 12px; background: var(--stone); font-size: .88rem; line-height: 1.55; color: var(--text-body); }
.simper .guide-body ol { display: grid; gap: 6px; padding-left: 1.2em; list-style: decimal; }
.simper .avis { padding: 12px 14px; border-radius: 10px; background: var(--white); font-size: .8rem; }
.simper .avis-h { margin-bottom: 6px; font-weight: 600; letter-spacing: .03em; color: var(--ink); }
.simper .avis-r { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; font-variant-numeric: tabular-nums; }
.simper .avis-r.hl { font-weight: 600; color: var(--teal-deep); }
.simper .avis-cap { margin-top: -4px; font-size: .78rem; color: var(--text-muted); }
.simper .btn-ghost { margin-top: 8px; padding: 10px 0; border: 0; background: none; font: 500 .9rem var(--font); color: var(--teal-deep); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.simper .est-note { display: none; font-size: .84rem; line-height: 1.5; color: var(--text-muted); }
.simper .est-note.on { display: block; }
.simper .btn-sim { width: 100%; margin-top: 8px; }
.simper .sim-err { display: none; margin-top: 10px; font-size: .88rem; color: #a3462c; }
.simper .sim-err.on { display: block; }
.simper .results-col, .simper .results { display: grid; gap: 16px; }
.simper .results[hidden] { display: none; }
.simper .pre ul { display: grid; gap: 6px; margin-top: 10px; padding-left: 1.2em; list-style: disc; }
.simper .placeholder { color: var(--text-muted); }
.simper .big { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin-bottom: 14px; }
.simper .big strong { font-family: var(--serif); font-size: clamp(2.6rem, 4vw, 3.4rem); font-weight: 500; line-height: 1; color: var(--teal-deep); font-variant-numeric: lining-nums tabular-nums; }
.simper .big span { color: var(--text-body); }
.simper .kv { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .95rem; }
.simper .kv td { padding: 9px 12px; }
.simper .kv tr:nth-child(odd) td { background: var(--stone); }
.simper .kv tr td:first-child { border-radius: 8px 0 0 8px; }
.simper .kv tr td:last-child { border-radius: 0 8px 8px 0; text-align: right; font-weight: 500; color: var(--ink); white-space: nowrap; font-variant-numeric: lining-nums tabular-nums; }
.simper .warn { margin-top: 12px; padding: 12px 14px; border-radius: 10px; background: var(--stone); font-size: .88rem; line-height: 1.5; color: var(--ink); }
.simper .profiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.simper .prof { --c: #1b626f; padding: 16px; border-radius: 14px; background: var(--stone); }
.simper .prof.def { --c: #7a9aa1; }
.simper .prof.dyn { --c: #1e7b3f; }
.simper .prof-h { display: flex; align-items: center; gap: 8px; font-size: .9rem; font-weight: 600; color: var(--ink); }
.simper .prof-h::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--c); }
.simper .prof-cap { margin-top: 8px; font-family: var(--serif); font-size: clamp(1.5rem, 2vw, 1.8rem); font-weight: 500; line-height: 1.1; color: var(--teal-deep); font-variant-numeric: lining-nums tabular-nums; }
.simper .prof-rate { margin-top: 4px; font-size: .8rem; color: var(--text-muted); }
.simper .prof-split { margin-top: 10px; font-size: .82rem; line-height: 1.55; color: var(--text-body); }
.simper .prof-split b { font-weight: 500; color: var(--ink); font-variant-numeric: tabular-nums; }
.simper .chart-wrap { margin-top: 16px; }
.simper .chart-wrap svg { display: block; width: 100%; height: auto; }
.simper .legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 8px; font-size: .84rem; color: var(--text-body); }
.simper .legend i { display: inline-block; width: 18px; height: 3px; margin-right: 6px; border-radius: 2px; vertical-align: middle; }
.simper .cta { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; padding: 22px 26px; }
.simper .cta-photo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; }
.simper .cta-text { flex: 1 1 240px; font-size: .95rem; line-height: 1.5; color: var(--text-body); }
.simper .cta-text strong { font-weight: 500; color: var(--ink); }
.simper .cta-who { display: block; margin-top: 4px; font-size: .85rem; color: var(--text-muted); }
.simper .note { font-size: .78rem; line-height: 1.6; color: var(--text-muted); }
@media (max-width: 1023px) {
  .simper__layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .simper .profiles { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 479px) {
  .simper .row2 { grid-template-columns: minmax(0, 1fr); }
  .simper .panel-head { padding: 20px 18px 0; }
  .simper .panel-body { padding: 12px 18px 20px; }
}
/* Pages d'atterrissage : le pied de page suit directement la dernière section, le disclaimer ouvre le bloc */
.site-footer--landing { margin-top: 0; padding-top: clamp(16px, 2vw, 24px); }
.lp-form .lead-form__head { margin-bottom: 16px; }
.simper .step { padding: 0; border-radius: 0; background: none; box-shadow: none; }
.simper .btn-ghost { justify-self: start; }
.sol-sim-more { margin-top: 18px; }

/* ---------- 33. Plus de bande blanche avant le pied de page : il suit directement la dernière section ;
   l'appel final garde son espace sous la carte, dans sa propre section blanche ---------- */
.site-footer { margin-top: 0; }
.cta-final { padding-bottom: clamp(64px, 8vw, 110px); }

/* ---------- 34. Portraits plus petits (demande d'Adrien du 2026-10-28) : mot du directeur, trio de l'accueil, équipe de Pourquoi Leverage ---------- */
.directeur { grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); }
#equipe .team--trio { grid-template-columns: repeat(3, minmax(0, 260px)); justify-content: start; }
.quote { grid-template-columns: 140px minmax(0, 1fr); }
.team:not(.team--trio) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 1023px) {
  .directeur { grid-template-columns: minmax(0, 1fr); }
  .directeur__media { max-width: 300px; }
}
@media (max-width: 767px) {
  .team:not(.team--trio) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quote { grid-template-columns: minmax(0, 1fr); }
  .quote img { max-width: 140px; }
}

/* ---------- 35. Leverage dans les médias : logos fixes sous le bandeau des partenaires (demande d'Adrien du 2026-10-28) ---------- */
.partners:has(+ .medias) { padding-bottom: clamp(18px, 2.4vw, 32px); }
.medias { padding-block: clamp(18px, 2.4vw, 32px) clamp(56px, 6vw, 88px); background: var(--white); }
.medias__list { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: clamp(22px, 2.6vw, 34px) clamp(34px, 4vw, 64px); max-width: 1180px; margin-inline: auto; }
/* Logos agrandis pour occuper la largeur (demande d'Adrien du 2026-10-29) */
.medias__list li { display: flex; align-items: center; gap: .5rem; }
.medias__logo { width: auto; height: 44px; }
.medias__logo--bfm { height: 32px; } /* logo BFM Business 2026, horizontal (demande d'Adrien du 2026-10-29) */
.medias__logo--challenges { height: 38px; }
.medias__logo--capital { height: 46px; }
.medias__logo--jdi { height: 50px; }
@media (max-width: 767px) {
  .medias__list { justify-content: center; gap: 20px 32px; }
  .medias__logo { height: 30px; }
  .medias__logo--bfm { height: 22px; }
  .medias__logo--challenges { height: 26px; }
  .medias__logo--capital { height: 32px; }
  .medias__logo--jdi { height: 36px; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .medias__logo { height: 27px; }
  .medias__logo--bfm { height: 20px; }
  .medias__logo--challenges { height: 23px; }
  .medias__logo--capital { height: 28px; }
  .medias__logo--jdi { height: 31px; }
}

/* ---------- 36. Portables (15 pouces et moins grands) : le site s'affiche comme un grand écran dézoomé à 80 % (demande d'Adrien du 2026-10-28) ---------- */
:root { --vh: 1vh; }
/* Les sections épinglées par GSAP (mesurées à l'écran, réécrites en pixels) restent à l'échelle 1 ; seul leur contenu passe à 80 % */
@media (min-width: 1280px) and (max-width: 1799px) {
  html { zoom: .8; }
  /* Les unités d'écran ne suivent pas le zoom : --vh rend aux contenus zoomés la hauteur réellement visible */
  :root { --vh: 1.25vh; }
  .pin-spacer { zoom: 1.25; width: auto !important; max-width: none !important; }
  .pin-spacer > .deck-pin, .pin-spacer > .objectifs { width: 100% !important; max-width: none !important; }
  .pin-spacer > .deck-pin > *, .pin-spacer > .objectifs > * { zoom: .8; }
  .pin-spacer > .deck-pin.is-pinned { padding-block: calc((var(--header-h) + 16px) * .8) 26px; }
  .pin-spacer > .objectifs.is-pinned { padding-block: calc((var(--header-h) + 24px) * .8) 32px; }
  /* Les unités d'écran ne suivent pas le zoom : le hero retrouve toute la hauteur visible */
  .hero15__inner { min-height: clamp(660px, calc(125svh - var(--header-h)), 920px); }
}

/* ---------- 38. Pourquoi Leverage : sections variées, photos de l'équipe et motifs haussmanniens (demande d'Adrien du 2026-10-28) ---------- */
/* Hero : titre et chapeau côte à côte, la photo des associés en bandeau, les chiffres posés à cheval sur la photo */
.pq-hero { padding: calc(var(--header-h) + clamp(36px, 4.6vw, 64px)) 0 clamp(64px, 7vw, 104px); background: var(--stone); }
.pq-hero__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 80px); align-items: end; margin-top: clamp(20px, 2.4vw, 32px); }
.pq-hero .display { font-size: clamp(2.6rem, 4.6vw, 4.3rem); line-height: 1.04; text-wrap: balance; }
.pq-hero__side .lead { margin: 0; }
.pq-hero__side .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 1.6rem; }
.pq-hero__photo { margin: clamp(36px, 4vw, 56px) 0 0; overflow: hidden; border-radius: var(--radius-img); aspect-ratio: 1600 / 694; background: var(--grey-100); box-shadow: 0 50px 90px -60px rgba(6, 25, 29, .55); }
.pq-hero__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.pq-facts { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; width: min(92%, 880px); margin: -58px auto 0; padding: 24px clamp(18px, 3vw, 40px); border-radius: var(--radius-card); background: var(--white); box-shadow: 0 30px 60px -40px rgba(6, 25, 29, .45); text-align: center; }
.pq-facts dt { font-family: var(--serif); font-size: clamp(2.1rem, 3vw, 2.8rem); font-weight: 500; line-height: 1; color: var(--teal-deep); font-variant-numeric: lining-nums; }
.pq-facts dd { margin: .45rem 0 0; font-size: .95rem; line-height: 1.4; color: var(--text-body); }

/* Histoire : le titre et une photo restent en place pendant que la frise défile */
.pq-story { background: var(--white); padding-block: clamp(80px, 9vw, 140px); }
.pq-story__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 110px); align-items: start; }
/* La colonne fixée ne dépasse jamais l'écran : la photo cède la hauteur qui manque (--vh suit le zoom des portables) */
.pq-story__aside { position: sticky; top: calc(var(--header-h) + 32px); display: flex; flex-direction: column; max-height: calc(100 * var(--vh) - var(--header-h) - 64px); }
.pq-story__aside .lead { margin-top: 1.2rem; }
.pq-story__photo { flex: 0 1 auto; min-height: 140px; margin: clamp(26px, 3vw, 38px) 0 0; overflow: hidden; border-radius: var(--radius-img); aspect-ratio: 4 / 3; background: var(--grey-100); }
.pq-story__photo img { width: 100%; height: 100%; object-fit: cover; }
.pq-story .story { --rail: 112px; --gap: 40px; margin-top: 0; }

/* Notre métier : une phrase seule, sur la pierre de Paris */
.pq-band { position: relative; isolation: isolate; overflow: hidden; padding-block: clamp(84px, 10vw, 156px); background: var(--ink); color: #fff; text-align: center; }
.pq-band::before, .pq-band::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.pq-band::before { z-index: -2; background: url("/assets/img/stock/porte-paris.webp") center 35% / cover no-repeat; filter: grayscale(.35); }
.pq-band::after { z-index: -1; background: linear-gradient(180deg, rgba(6, 25, 29, .78) 0%, rgba(6, 25, 29, .9) 100%); }
.pq-band__text { max-width: 21em; margin-inline: auto; color: #fff; font-family: var(--serif); font-size: clamp(2rem, 3.6vw, 3.3rem); font-weight: 500; line-height: 1.15; text-wrap: balance; }
.pq-band__text em { color: var(--gold-light); }
.pq-band__sub { margin-top: 1.4rem; font-size: 1.1rem; color: rgba(255, 255, 255, .75); }

/* Mission et vision : la pierre de taille, la rosace, Bastien au Revenu */
.pq-mv { background: var(--stone); padding-block: clamp(80px, 9vw, 140px); }
.pq-mv__mission { max-width: 940px; margin-inline: auto; text-align: center; }
.pq-mv__mission .statement { margin-inline: auto; text-wrap: balance; }
.pq-mv__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(36px, 5vw, 88px); align-items: center; margin-top: clamp(56px, 7vw, 100px); }
.pq-mv__photo { margin: 0; }
.pq-mv__photo img { width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; border-radius: var(--radius-img); box-shadow: 0 40px 80px -56px rgba(6, 25, 29, .6); }
.pq-mv__photo figcaption { margin-top: .9rem; font-size: .92rem; color: var(--text-body); }
.pq-mv__vision .statement { font-size: clamp(1.6rem, 2.4vw, 2.1rem); }
.pq-quote { max-width: 980px; margin: clamp(60px, 7vw, 104px) auto 0; text-align: center; }
.pq-quote blockquote p { font-family: var(--serif); font-size: clamp(1.9rem, 3.2vw, 2.9rem); font-weight: 500; line-height: 1.15; color: var(--ink); text-wrap: balance; }
.pq-quote figcaption { margin-top: 1.1rem; font-size: .95rem; color: var(--text-body); }

/* ADN */
.pq-adn .quote { margin-top: clamp(28px, 3vw, 40px); }
.pq-adn .sub-h { margin-top: clamp(48px, 5vw, 72px); }
.pq-adn .grid--4 { margin-top: 18px; }

/* Rôles et Formule : les boiseries, puis la photo face à l'accordéon */
.pq-formule .roles { margin-top: clamp(28px, 3vw, 40px); }
.pq-formule .role:not(.role--you) { background: var(--white); }
.pq-formule__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(36px, 5vw, 88px); align-items: start; margin-top: clamp(64px, 7vw, 104px); }
.pq-formule__photo { position: sticky; top: calc(var(--header-h) + 32px); max-height: calc(100 * var(--vh) - var(--header-h) - 64px); margin: 0; overflow: hidden; border-radius: var(--radius-img); aspect-ratio: 4 / 5; background: var(--grey-100); }
.pq-formule__photo img { width: 100%; height: 100%; object-fit: cover; }
.pq-formule__intro { margin: .8rem 0 22px; color: var(--text-body); }

/* Équipe : la photo de groupe face au titre, puis les portraits */
.pq-team__intro { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(36px, 5vw, 88px); align-items: center; margin-bottom: clamp(48px, 5vw, 72px); }
.pq-team__photo { margin: 0; overflow: hidden; border-radius: var(--radius-img); aspect-ratio: 4 / 5; background: var(--grey-100); }
.pq-team__photo img { width: 100%; height: 100%; object-fit: cover; }
.pq-team__intro p { max-width: 56ch; margin-top: 1.2rem; color: var(--text-body); }
#equipe.pq-team .team { margin-top: 0; }

/* Locaux et cadre */
.pq-locaux__text { max-width: 60ch; margin: 1.1rem 0 clamp(28px, 3vw, 40px); color: var(--text-body); }
.pq-locaux .office { background: var(--white); }
.pq-locaux .map-ph { margin-top: 18px; }
.pq-cadre .agrements { margin-top: clamp(28px, 3vw, 40px); }
.pq-cadre .cadre__grid { margin-top: 16px; }
.pq-cadre .cadre__item { border: 0; background: var(--stone); }
.pq-cadre .cadre__item h3 { color: var(--ink); }
.pq-cadre .cadre__item p { color: var(--text-body); }

@media (max-width: 1023px) {
  .pq-hero__head, .pq-story__grid, .pq-mv__grid, .pq-formule__grid, .pq-team__intro { grid-template-columns: minmax(0, 1fr); }
  .pq-story__aside, .pq-formule__photo { position: static; }
  .pq-formule__photo { aspect-ratio: 16 / 10; }
  .pq-team__photo { max-width: 420px; }
}
@media (max-width: 767px) {
  .pq-hero__photo { aspect-ratio: 4 / 3; }
  .pq-hero__photo img { object-position: 55% 30%; }
  .pq-facts { width: 100%; margin-top: -32px; padding: 18px 10px; }
  .pq-facts dt { font-size: 1.75rem; }
  .pq-facts dd { font-size: .82rem; }
  .pq-story .story { --rail: 0px; --gap: 0px; }
}
@media (min-width: 1024px) and (max-height: 420px) {
  .pq-story__aside, .pq-formule__photo { position: static; max-height: none; }
}
/* Écrans peu hauts : bloc de gauche plus compact, pour qu'il tienne à l'écran et suive toute la frise */
@media (min-width: 1024px) and (max-height: 760px) {
  .pq-story__aside .h2 { font-size: clamp(1.9rem, 3vw, 2.6rem); }
  .pq-story__aside .lead { margin-top: .8rem; font-size: .98rem; line-height: 1.55; }
  .pq-story__photo { margin-top: 20px; min-height: 120px; }
}

/* ---------- 40. Avis sur toutes les pages (partial avis) : la section passe en blanc si la précédente est grise ---------- */
.bg-soft + .avis-band, .faq.bg-soft + .avis-band { background: var(--white); }
.bg-soft + .avis-band .review, .bg-soft + .avis-band .rating { background: var(--stone); }

/* ---------- 43. Page Conseil personnalisé (/conseil) : hero sans formulaire, quatre domaines aux fonds alternés, conseillers, advisors ---------- */
.cs-hero__actions { margin-top: 2rem; }
.cs-anchors { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 1.4rem; }
.cs-anchors a { display: inline-flex; align-items: center; padding: .55rem 1.05rem; border-radius: var(--radius-btn); background: var(--white); box-shadow: 0 0 0 1px var(--border) inset; font-weight: 500; color: var(--ink); text-decoration: none; transition: background-color .3s, color .3s; }
.cs-anchors a:hover { background: var(--ink); color: #fff; box-shadow: none; }
.cs-domain { padding-block: clamp(80px, 9vw, 136px); scroll-margin-top: var(--header-h); }
.cs-warm { background: var(--stone); }
.cs-domain .sol-why { align-items: start; }
.cs-domain .sol-why__media { position: sticky; top: calc(var(--header-h) + 32px); max-height: calc(100 * var(--vh) - var(--header-h) - 64px); }
.cs-reverse.sol-why { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); }
.cs-reverse .sol-why__media { order: 2; }
.cs-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px clamp(20px, 3vw, 40px); margin-top: 1.8rem; }
.cs-cols__title { margin-bottom: .7rem; font-family: var(--serif); font-size: 1.4rem; font-weight: 500; line-height: 1.2; color: var(--ink); }
.cs-list { display: grid; gap: .65rem; }
.cs-list li { position: relative; padding-left: 1.2rem; font-size: 1rem; line-height: 1.55; color: var(--text-body); }
.cs-list li::before { content: ""; position: absolute; left: 0; top: .62em; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); }
.cs-domain .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 2rem; }
/* Successoral : sombre, sur la pierre de Paris */
.cs-dark { position: relative; isolation: isolate; overflow: hidden; background: var(--ink); color: #fff; }
.cs-dark::before, .cs-dark::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.cs-dark::before { z-index: -2; background: url("/assets/img/stock/porte-paris.webp") center 35% / cover no-repeat; filter: grayscale(.35); }
.cs-dark::after { z-index: -1; background: linear-gradient(180deg, rgba(6, 25, 29, .84) 0%, rgba(6, 25, 29, .93) 100%); }
.cs-dark .h2 { color: #fff; }
.cs-dark .h2 em { color: var(--gold-light); }
.cs-dark .lead, .cs-dark .cs-list li { color: rgba(255, 255, 255, .82); }
.cs-dark .cs-cols__title { color: #fff; }
.cs-dark .link-arrow { color: var(--gold-light); }
/* Déroulement */
.cs-motto { margin-top: clamp(28px, 3vw, 40px); }
.cs-funds { max-width: 72ch; margin-top: .8rem; color: var(--text-body); }
.cs-funds strong { color: var(--ink); }
#deroulement .actions { margin-top: 1.6rem; }
/* Conseillers : trois portraits, comme sur l'accueil */
#conseillers .team--trio { grid-template-columns: repeat(3, minmax(0, 260px)); justify-content: start; gap: clamp(20px, 2.6vw, 36px); margin-top: clamp(28px, 3vw, 40px); }
/* Advisors : la photo du plateau (677 px) n'est jamais agrandie */
.cs-partner { display: grid; grid-template-columns: minmax(0, 677px) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.cs-partner__media { margin: 0; }
.cs-partner__media img { width: 100%; max-width: 677px; height: auto; border-radius: var(--radius-img); box-shadow: 0 40px 80px -56px rgba(6, 25, 29, .6); }
.cs-partner__media figcaption { margin-top: .8rem; font-size: .92rem; color: var(--text-body); }
.cs-partner__body .lead { margin-top: 1.1rem; }
.cs-partner__body p + p { margin-top: .9rem; color: var(--text-body); }
.cs-partner__body .actions { margin-top: 1.8rem; }
@media (max-width: 1023px) {
  .cs-reverse.sol-why { grid-template-columns: minmax(0, 1fr); }
  .cs-reverse .sol-why__media { order: 0; }
  .cs-domain .sol-why__media { position: relative; top: auto; max-height: none; }
  .cs-partner { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .cs-cols { grid-template-columns: minmax(0, 1fr); }
  #conseillers .team--trio { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
}
/* Conseillers : titre à gauche, les trois portraits à droite, pour occuper toute la largeur */
@media (min-width: 1024px) {
  #conseillers > .container { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(40px, 5vw, 88px); align-items: center; }
  #conseillers .head15 { margin-bottom: 0; }
  #conseillers .team--trio { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 0; }
}

/* ---------- 45. Accueil, équipe : les cinq portraits en tête, puis Paris et Lyon en bandeaux bas (demande d'Adrien du 2026-10-28) ---------- */
#equipe .team--five { grid-template-columns: repeat(5, minmax(0, 1fr)); justify-content: stretch; gap: clamp(16px, 2vw, 28px); margin-top: clamp(28px, 3vw, 40px); }
.cities--low { margin: clamp(44px, 5vw, 72px) 0 0; }
.cities--low .city__img { aspect-ratio: 5 / 2; }
.city__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; }
.city__tel { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; color: var(--teal-deep); text-decoration: none; font-variant-numeric: tabular-nums; white-space: nowrap; }
.city__tel:hover { color: var(--ink); }
@media (max-width: 1023px) {
  #equipe .team--five { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  #equipe .team--five { gap: 12px; }
  .cities--low .city__img { aspect-ratio: 16 / 9; }
}
/* Cinq colonnes étroites : noms alignés en haut, sans icône LinkedIn (elles restent sur Pourquoi Leverage) */
#equipe .team--five .member { align-content: start; }
#equipe .team--five .member__body { padding-right: 0; }
/* LinkedIn sur la photo, en haut à droite (demande d'Adrien du 2026-10-29, ordinateur et mobile) */
#equipe .team--five .member { position: relative; }
#equipe .team--five .member__in { display: grid; position: absolute; top: 8px; right: 8px; bottom: auto; width: 32px; height: 32px; margin: 0; border: 0; border-radius: 8px; background: rgba(255, 255, 255, .92); color: var(--ink); box-shadow: 0 6px 16px -8px rgba(6, 25, 29, .5); }
#equipe .team--five .member__in:hover { background: var(--ink); color: #fff; }
#equipe .team--five .member__name { font-size: clamp(1.15rem, 1.5vw, 1.4rem); }

/* ---------- 44. Simulateurs intégrés (demande d'Adrien du 2026-10-28) :
   Outil Bilan Patrimonial et simulateur de rentes (/simulateurs/rentes, application d'Adrien intégrée à la page, classes .bilan, .bl-* et .rs-*)
   et test de solvabilité de l'épargne (/simulateurs/solvabilite, habillé comme le simulateur PER § 32) ---------- */
.simrentes { padding-top: calc(var(--header-h) + clamp(32px, 4vw, 56px)); background: var(--stone); }
.simrentes__intro { max-width: 780px; margin-bottom: clamp(24px, 3vw, 36px); }
.simrentes__intro .lead { margin-top: 12px; }
.simrentes__note { max-width: 980px; margin-top: 20px; font-size: .8rem; line-height: 1.6; color: var(--text-muted); }
.simrentes__noscript { padding: 32px; }

/* Outil Bilan Patrimonial et simulateur de rentes intégrés à la page (tools/simulateurs/rentes-app.jsx) :
   une seule barre d'onglets, collante sous l'en-tête ; cartes blanches sur le fond pierre de la section ;
   titres en Cormorant ; valeurs positives et négatives aux couleurs des graphiques de performance (.perf__bar) */
.bilan { --bl-pos: #0a8aa0; --bl-neg: #b5603f; --bl-warn: var(--gold-text); --bl-line: #D5DADB; min-height: 480px; }

/* Barre d'onglets et téléchargement */
.bilan-bar { position: sticky; top: 0; z-index: 20; padding-block: 10px; background: rgba(241, 245, 245, .92); -webkit-backdrop-filter: blur(12px) saturate(130%); backdrop-filter: blur(12px) saturate(130%); transition: top .6s var(--ease-expo); }
body:has(.site-header:not(.is-hidden)) .bilan-bar { top: var(--header-h); }
.bilan-bar__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.bilan-tabs { display: flex; gap: 2px; min-width: 0; padding: 4px; overflow-x: auto; border-radius: 12px; background: var(--white); scrollbar-width: none; overscroll-behavior-x: contain; }
.bilan-tabs::-webkit-scrollbar { display: none; }
.bilan-tab { flex: 0 0 auto; min-height: 42px; padding: .55rem 1.05rem; border: 0; border-radius: 9px; background: transparent; font: 500 .93rem/1.2 var(--font); color: var(--text-body); white-space: nowrap; cursor: pointer; transition: background .2s, color .2s; }
.bilan-tab:hover { background: var(--stone); color: var(--ink); }
.bilan-tab[aria-selected="true"] { background: var(--ink); color: #fff; }
.bilan-tab:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.bilan-pdf.btn { flex-shrink: 0; gap: .55rem; min-height: 46px; padding: .6rem 1.15rem; font-size: .92rem; }
.bilan-pdf.btn[disabled] { opacity: .6; cursor: wait; }
.bilan-foot { display: none; margin-top: 16px; }
.bilan-panel { padding-top: 16px; outline: none; }
.bilan-panel:focus-visible { border-radius: var(--radius-card); outline: 2px solid var(--teal-deep); outline-offset: 6px; }
.bilan-error { margin-top: 12px; font-size: .9rem; color: #b5603f; }

/* Cartes, chiffres clés, répartition */
.bilan .bl-stack { display: grid; gap: 16px; }
.bilan .bl-card { min-width: 0; padding: clamp(20px, 2vw, 28px); border-radius: var(--radius-card); background: var(--white); }
.bilan .bl-card__title { margin-bottom: 16px; font-family: var(--serif); font-size: clamp(1.45rem, 1.8vw, 1.7rem); font-weight: 500; line-height: 1.2; color: var(--ink); }
.bilan .bl-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.bilan .bl-grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
.bilan .bl-stack > .bl-grid2 { align-items: stretch; }
.bilan .bl-kpi__label { font-size: .92rem; color: var(--text-body); }
.bilan .bl-kpi__value { margin-top: 6px; font-family: var(--serif); font-size: clamp(2rem, 2.6vw, 2.5rem); font-weight: 500; line-height: 1.05; color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
.bilan .bl-kpi__sub { margin-top: 6px; font-size: .84rem; color: var(--text-muted); }
.bilan .bl-ratios { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bilan .bl-ratios .bl-kpi { padding: 16px 18px; border-radius: 12px; background: var(--stone); }
.bilan .bl-bar + .bl-bar { margin-top: 14px; }
.bilan .bl-bar__row { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 6px; font-size: .9rem; }
.bilan .bl-bar__label, .bilan .bl-legend__label { display: inline-flex; align-items: center; gap: 9px; min-width: 0; color: var(--text-body); }
.bilan .bl-bar__label i, .bilan .bl-legend__label i { flex-shrink: 0; width: 10px; height: 10px; border-radius: 50%; }
.bilan .bl-bar__val { font-weight: 500; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bilan .bl-bar__track { height: 6px; overflow: hidden; border-radius: 3px; background: var(--stone); }
.bilan .bl-bar__fill { height: 100%; border-radius: 3px; transition: width .4s var(--ease-expo); }
.bilan .bl-donut { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); align-items: center; }
.bilan .bl-donut__svg { display: block; max-width: 100%; height: auto; }
.bilan .bl-donut__cap { font: 400 13px var(--font); fill: var(--text-muted); }
.bilan .bl-donut__total { font-family: var(--serif); font-size: 24px; font-weight: 500; fill: var(--ink); }
.bilan .bl-donut__empty { display: grid; place-items: center; color: var(--text-muted); }
.bilan .bl-legend { display: grid; gap: 4px; }
.bilan .bl-legend li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 16px; align-items: center; padding: 9px 12px; border-radius: 8px; font-size: .92rem; }
.bilan .bl-legend li:nth-child(odd) { background: var(--stone); }
.bilan .bl-legend__pct { min-width: 3.6em; text-align: right; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.bilan .bl-legend__val { min-width: 6.5em; text-align: right; font-weight: 500; color: var(--ink); font-variant-numeric: tabular-nums; }

/* Champs, lignes, boutons */
.bilan .bl-input, .bilan .bl-select { width: 100%; min-width: 0; min-height: 42px; padding: 0 12px; border: 1px solid var(--bl-line); border-radius: 10px; background-color: var(--white); font: 400 .92rem var(--font); color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.bilan .bl-input:focus, .bilan .bl-select:focus { outline: none; border-color: var(--teal-deep); box-shadow: 0 0 0 3px rgba(27, 98, 111, .15); }
.bilan .bl-input--num { text-align: right; font-weight: 500; font-variant-numeric: lining-nums tabular-nums; -moz-appearance: textfield; }
.bilan .bl-input--num::-webkit-outer-spin-button, .bilan .bl-input--num::-webkit-inner-spin-button { margin: 0; -webkit-appearance: none; }
.bilan .bl-input--strong { font-weight: 500; }
.bilan .bl-input--main { color: var(--teal-deep); }
.bilan .bl-select { padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E7679' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-position: right 10px center; background-repeat: no-repeat; background-size: 14px; cursor: pointer; -webkit-appearance: none; appearance: none; }
.bilan .bl-rows { display: grid; gap: 8px; }
.bilan .bl-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 150px) 36px; gap: 8px; align-items: center; }
.bilan .bl-amount { position: relative; display: block; min-width: 0; }
.bilan .bl-amount .bl-input--num { padding-right: 30px; }
.bilan .bl-unit { position: absolute; top: 50%; right: 12px; font-size: .85rem; color: var(--text-muted); transform: translateY(-50%); pointer-events: none; }
.bilan .bl-del { display: inline-grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--text-muted); cursor: pointer; transition: background .2s, color .2s; }
.bilan .bl-del:hover { background: var(--stone); color: var(--bl-neg); }
.bilan .bl-del:focus-visible, .bilan .bl-add:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.bilan .bl-card__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 18px; }
.bilan .bl-add { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: .5rem 1rem; border: 1px solid var(--bl-line); border-radius: var(--radius-btn); background: var(--white); font: 500 .9rem var(--font); color: var(--teal-deep); cursor: pointer; transition: border-color .2s, background .2s; }
.bilan .bl-add:hover { border-color: var(--teal-deep); background: var(--stone); }
.bilan .bl-total { font-family: var(--serif); font-size: 1.7rem; font-weight: 500; line-height: 1.1; color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
.bilan .bl-muted { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.bilan .bl-strong { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Tableaux du patrimoine et du plan d'investissement */
.bilan .bl-table { width: 100%; border-collapse: separate; border-spacing: 0 6px; font-size: .92rem; }
.bilan .bl-table th { padding: 0 6px 2px; text-align: left; font-size: .84rem; font-weight: 500; color: var(--text-muted); white-space: nowrap; }
.bilan .bl-table td { padding: 0 4px; vertical-align: middle; }
.bilan .bl-table--patri td[data-label="Capital"] { width: 170px; }
.bilan .bl-table__del { width: 44px; text-align: right; }
.bilan .dca-table-wrapper { overflow-x: auto; }
.bilan .bl-table--dca th:not(:first-child), .bilan .bl-table--dca td:not(:first-child) { text-align: right; }
.bilan .bl-table--dca td:first-child { min-width: 170px; }
.bilan .bl-table--dca .bl-input--num { width: 110px; }
.bilan .bl-table--dca td.bl-muted, .bilan .bl-table--dca td.bl-strong { padding-inline: 10px; }
.bilan .bl-table__sum th, .bilan .bl-table__sum td { padding: 12px 10px; background: var(--stone); }
.bilan .bl-table__sum th { border-radius: 8px 0 0 8px; text-align: left; font-size: .92rem; font-weight: 600; color: var(--ink); }
.bilan .bl-table__sum th.bl-muted { font-weight: 400; color: var(--text-muted); }
.bilan .bl-table__sum td:last-child { border-radius: 0 8px 8px 0; }
.bilan .dca-cards { display: none; }
.bilan .bl-dca { padding: 14px; border-radius: 12px; background: var(--stone); }
.bilan .bl-dca__head { display: grid; grid-template-columns: minmax(0, 1fr) 36px; gap: 8px; align-items: center; margin-bottom: 12px; }
.bilan .bl-dca__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.bilan .bl-dca__field { display: grid; gap: 6px; min-width: 0; }
.bilan .bl-dca__lbl { font-size: .84rem; font-weight: 500; color: var(--ink); }
.bilan .bl-dca__lbl.is-main { color: var(--teal-deep); }
.bilan .bl-dca__pct { font-size: .8rem; color: var(--text-muted); }
.bilan .bl-dca__evol, .bilan .bl-dca__line { display: flex; justify-content: space-between; gap: 12px; margin-top: 12px; font-size: .9rem; color: var(--text-body); }
.bilan .bl-dca__line { margin-top: 6px; }
.bilan .bl-dca__sumtitle { font-family: var(--serif); font-size: 1.35rem; font-weight: 500; color: var(--ink); }
.bilan .bl-dca__sumtitle--sub { margin-top: 14px; font-size: 1.15rem; color: var(--text-muted); }

/* Simulateur de rentes : résultats à gauche, paramètres à droite */
.bilan .rs { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 400px); gap: 16px; align-items: stretch; }
.bilan .rs-results { display: flex; flex-direction: column; gap: 18px; }
.bilan .rs-cap__label { margin-bottom: -10px; font-size: .92rem; color: var(--text-body); }
.bilan .rs-cap { font-family: var(--serif); font-size: clamp(3rem, 4.6vw, 3.8rem); font-weight: 500; line-height: 1; color: var(--teal-deep); font-variant-numeric: lining-nums tabular-nums; }
.bilan .rs-cap__eur { font-size: .66em; }
.bilan .rs-breakdown { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: .88rem; color: var(--text-body); }
.bilan .rs-breakdown li { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.bilan .rs-breakdown i { flex-shrink: 0; width: 10px; height: 10px; border-radius: 50%; }
.bilan .rs-breakdown b { font-weight: 600; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bilan .rs-chart { position: relative; flex: 1; min-height: 260px; }
.bilan .rs-legend { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: .86rem; color: var(--text-body); }
.bilan .rs-legend li { display: inline-flex; align-items: center; gap: 8px; }
.bilan .rs-sw { display: inline-block; flex-shrink: 0; width: 18px; height: 3px; border-radius: 2px; }
.bilan .rs-sw--avec { background: #c4902e; }
.bilan .rs-sw--sans { height: 0; border-top: 2px dashed #6E7679; border-radius: 0; }
.bilan .rs-sw--investi { background: var(--teal-deep); }
.bilan .rs-legend__hint { font-size: .8rem; color: var(--text-muted); }
.bilan .rs-perf { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.bilan .rs-perf__card { min-width: 0; padding: 16px 18px; border-radius: 12px; background: var(--stone); }
.bilan .rs-perf__label { margin-bottom: 8px; }
.bilan .rs-perf__name { display: block; font-size: .88rem; font-weight: 500; color: var(--ink); }
.bilan .rs-perf__sub { display: block; margin-top: 2px; font-size: .78rem; color: var(--text-muted); }
.bilan .rs-perf__val { font-family: var(--serif); font-size: 1.75rem; font-weight: 500; line-height: 1.1; color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
.bilan .rs-range { display: grid; gap: 6px; }
.bilan .rs-range__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.bilan .rs-range__tag { padding: 3px 10px; border-radius: 999px; background: var(--white); font-size: .78rem; font-weight: 500; color: var(--text-body); }
.bilan .rs-range__right { display: flex; flex-direction: column; align-items: flex-end; }
.bilan .rs-range__right b { font-family: var(--serif); font-size: 1.45rem; font-weight: 500; line-height: 1.1; color: var(--ink); }
.bilan .rs-range__right span { font-size: .78rem; color: var(--text-muted); }
.bilan .rs-range__row.is-main .rs-range__tag, .bilan .rs-range__row.is-main b, .bilan .rs-range__row.is-main .rs-range__right span { color: var(--teal-deep); }
.bilan .rs-params { display: flex; flex-direction: column; }
.bilan .rs-field + .rs-field { margin-top: 22px; }
.bilan .rs-field__label { display: block; font-size: .95rem; font-weight: 500; color: var(--ink); }
.bilan .rs-field__hint { margin: 2px 0 10px; font-size: .82rem; color: var(--text-muted); }
.bilan .rs-field__input .bl-input { min-height: 50px; padding-right: 44px; border-radius: 12px; font-size: 1.05rem; text-align: left; }
.bilan .rs-slider { position: relative; display: flex; align-items: center; height: 26px; margin-top: 6px; }
.bilan .rs-slider input[type="range"] { position: relative; z-index: 2; width: 100%; height: 4px; margin: 0; border-radius: 4px; outline: none; background: transparent; cursor: pointer; -webkit-appearance: none; appearance: none; }
.bilan .rs-slider input[type="range"]::-webkit-slider-runnable-track { height: 4px; border-radius: 4px; background: #E1E8E9; }
.bilan .rs-slider input[type="range"]::-moz-range-track { height: 4px; border-radius: 4px; background: #E1E8E9; }
.bilan .rs-slider input[type="range"]::-webkit-slider-thumb { width: 22px; height: 22px; margin-top: -9px; border: 3px solid var(--white); border-radius: 50%; background: var(--teal-deep); box-shadow: 0 2px 8px rgba(27, 98, 111, .35); cursor: pointer; -webkit-appearance: none; }
.bilan .rs-slider input[type="range"]::-moz-range-thumb { width: 22px; height: 22px; border: 3px solid var(--white); border-radius: 50%; background: var(--teal-deep); box-shadow: 0 2px 8px rgba(27, 98, 111, .35); cursor: pointer; }
.bilan .rs-slider input[type="range"]:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 4px rgba(27, 98, 111, .3); }
.bilan .rs-slider__fill { position: absolute; top: 50%; left: 0; z-index: 1; height: 4px; border-radius: 4px; background: var(--teal-deep); transform: translateY(-50%); pointer-events: none; }
.bilan .rs-lev { display: flex; align-items: center; gap: 12px; margin-top: 12px; padding: 12px 14px; border-radius: 12px; background: var(--stone); }
.bilan .rs-lev__text { display: grid; flex: 1; min-width: 0; }
.bilan .rs-lev__label { font-size: .86rem; font-weight: 600; color: var(--teal-deep); }
.bilan .rs-lev__desc { font-size: .8rem; color: var(--text-body); }
.bilan .rs-lev__amount { font-family: var(--serif); font-size: 1.4rem; font-weight: 500; white-space: nowrap; color: var(--teal-deep); }
.bilan .rs-cta { margin-top: auto; padding-top: 28px; }
.bilan .rs-cta__title { margin-bottom: 8px; font-family: var(--serif); font-size: 1.55rem; font-weight: 500; line-height: 1.2; color: var(--ink); }
.bilan .rs-cta__title em { font-style: italic; color: var(--teal-deep); }
.bilan .rs-cta__desc { margin-bottom: 16px; font-size: .92rem; line-height: 1.55; color: var(--text-body); }
.bilan .rs-cta__btn { width: 100%; gap: .6rem; }

/* Valeurs positives, négatives et principales : après les composants, pour l'emporter sur leur couleur par défaut */
.bilan .is-pos { color: var(--bl-pos); }
.bilan .is-neg { color: var(--bl-neg); }
.bilan .is-warn { color: var(--bl-warn); }
.bilan .is-main { color: var(--teal-deep); }
.bilan .is-zero { color: var(--text-muted); }

/* Génération du PDF */
.bilan-overlay { position: fixed; inset: 0; z-index: 9999; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 20px; background: rgba(6, 25, 29, .82); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.bilan-overlay__spin { width: 36px; height: 36px; border: 3px solid rgba(255, 255, 255, .2); border-top-color: var(--gold); border-radius: 50%; animation: bilan-spin .8s linear infinite; }
.bilan-overlay__title { font-family: var(--serif); font-size: 1.6rem; font-weight: 500; text-align: center; color: #fff; }
.bilan-overlay__track { width: min(260px, 80vw); height: 4px; overflow: hidden; border-radius: 2px; background: rgba(255, 255, 255, .15); }
.bilan-overlay__track > div { height: 100%; background: var(--gold); transition: width .3s; }
.bilan-overlay__step { font-size: .85rem; text-align: center; color: rgba(255, 255, 255, .65); }
@keyframes bilan-spin { to { transform: rotate(360deg); } }
/* Copie capturée pour le PDF : les curseurs, que html2canvas ne dessine pas, laissent place aux seuls montants */
.bilan-capture .rs-slider { display: none; }
/* Le canvas ignore font-variant-numeric : en Cormorant, les chiffres elzéviriens descendraient sous la ligne. Dans le PDF, les montants passent en Inter */
.bilan-capture .bl-kpi__value, .bilan-capture .rs-cap, .bilan-capture .rs-perf__val, .bilan-capture .bl-total, .bilan-capture .rs-range__right b, .bilan-capture .rs-lev__amount { font-family: var(--font); font-weight: 500; line-height: 1.2; letter-spacing: -.01em; }
@media (prefers-reduced-motion: reduce) { .bilan-overlay__spin { animation-duration: 2.4s; } }

@media (max-width: 1100px) {
  .bilan .rs { grid-template-columns: minmax(0, 1fr) minmax(0, 340px); }
}
@media (max-width: 900px) {
  .bilan-pdf--bar { display: none !important; }
  .bilan-foot { display: block; }
  .bilan-foot .bilan-pdf { width: 100%; }
  .bilan .bl-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bilan .bl-grid2 { grid-template-columns: minmax(0, 1fr); }
  .bilan .bl-donut { grid-template-columns: minmax(0, 1fr); justify-items: center; }
  .bilan .bl-legend { width: 100%; }
  .bilan .rs { grid-template-columns: minmax(0, 1fr); }
  .bilan .rs-params { order: -1; }
  .bilan .rs-cta { margin-top: 0; }
}
@media (max-width: 767px) {
  .bilan .bl-table--patri thead { display: none; }
  .bilan .bl-table--patri, .bilan .bl-table--patri tbody { display: block; }
  .bilan .bl-table--patri tr { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 10px; padding: 14px; border-radius: 12px; background: var(--stone); }
  .bilan .bl-table--patri td { display: block; width: auto !important; min-width: 0; padding: 0; }
  .bilan .bl-table--patri td[data-label]::before { content: attr(data-label); display: block; margin-bottom: 4px; font-size: .8rem; color: var(--text-muted); }
  .bilan .bl-table--patri td[data-label="Titre"] { grid-column: 1 / -1; padding-right: 40px; }
  .bilan .bl-table--patri td[data-label="Capital"] { grid-column: 1 / -1; }
  .bilan .bl-table--patri .bl-table__del { position: absolute; top: 10px; right: 8px; }
}
@media (max-width: 720px) {
  .bilan .dca-table-wrapper { display: none; }
  .bilan .dca-cards { display: grid; gap: 10px; }
}
@media (max-width: 600px) {
  .bilan .bl-stack, .bilan .bl-kpis, .bilan .bl-grid2 { gap: 12px; }
  .bilan .bl-card { padding: 18px 16px; }
  .bilan .rs-perf { gap: 8px; }
  .bilan .rs-perf__card { padding: 12px 14px; }
  .bilan .rs-perf__val { font-size: 1.45rem; }
  .bilan .bl-kpi__value { font-size: 1.75rem; }
  .bilan .bl-ratios .bl-kpi, .bilan .rs-perf__card { padding: 12px 14px; }
  .bilan .rs-chart { min-height: 220px; }
  .bilan .rs-legend__hint { display: none; }
}
@media (max-width: 420px) {
  .bilan .bl-row { grid-template-columns: minmax(0, 1fr) 36px; grid-template-areas: "l l" "a d"; }
  .bilan .bl-row > .bl-input--label { grid-area: l; }
  .bilan .bl-row > .bl-amount { grid-area: a; }
  .bilan .bl-row > .bl-del { grid-area: d; }
}
@media (max-width: 359px) {
  .bilan .bl-kpis, .bilan .bl-ratios, .bilan .rs-perf, .bilan .bl-dca__grid, .bilan .bl-table--patri tr { grid-template-columns: minmax(0, 1fr); }
}

/* Test de solvabilité de l'épargne : classes propres à l'outil, dans l'habillage .simper du simulateur PER */
.simsolv { --sv-green: #1e7b3f; --sv-red: #a3362c; --sv-blue: #2f6f9f; --green: var(--sv-green); --red: var(--sv-red); }
.simsolv .bank-row, .simsolv .av-row { position: relative; margin-bottom: 10px; padding: 14px 14px 4px; border-radius: 14px; background: var(--stone); }
.simsolv .row-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.simsolv .pick { display: flex; flex-direction: column; gap: 6px; width: 72%; }
.simsolv .pick select, .simsolv .pick input { width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid #D5DADB; border-radius: 10px; background: #fff; font: 500 .95rem var(--font); color: var(--ink); }
.simsolv .pick select:focus, .simsolv .pick input:focus { outline: none; border-color: var(--teal-deep); box-shadow: 0 0 0 3px rgba(27, 98, 111, .15); }
.simsolv .pick input[hidden] { display: none; }
.simsolv .rm { margin-top: 12px; padding: 4px 0; border: 0; background: none; font: inherit; font-size: .85rem; color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.simsolv .rm:hover { color: var(--sv-red); }
.simsolv .row2 .field { margin-bottom: 10px; }
.simsolv .ex { margin-top: 12px; font-size: .9rem; color: var(--text-body); }
.simsolv .ex button { padding: 0; border: 0; background: none; font: inherit; color: var(--teal-deep); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.simsolv .alert { overflow: hidden; border-radius: 20px; background: var(--white); }
.simsolv .alert-head { padding: 14px 26px; background: var(--sv-red); font-weight: 600; color: #fff; }
.simsolv .alert-body { padding: 20px 26px 22px; }
.simsolv .alert-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 18px; }
.simsolv .alert-amt { font-family: var(--serif); font-size: clamp(2.8rem, 5vw, 3.6rem); font-weight: 500; line-height: 1; color: var(--sv-red); font-variant-numeric: lining-nums tabular-nums; }
.simsolv .alert-of { padding-bottom: 4px; font-size: 1rem; line-height: 1.4; color: var(--ink); }
.simsolv .alert-of b { font-size: 1.2rem; font-weight: 600; color: var(--sv-red); font-variant-numeric: tabular-nums; }
.simsolv .alert-of span { font-weight: 600; font-variant-numeric: tabular-nums; }
.simsolv .meter { height: 10px; margin: 16px 0 6px; overflow: hidden; border-radius: 6px; background: var(--stone); }
.simsolv .meter i { display: block; width: 0; height: 100%; background: var(--sv-red); }
.simsolv .alert-txt { margin-top: 12px; font-weight: 600; color: var(--ink); }
.simsolv .alert-sub { margin-top: 4px; font-size: .92rem; line-height: 1.55; color: var(--text-body); }
.simsolv .alert.ok .alert-head { background: var(--sv-green); }
.simsolv .alert.ok .alert-amt, .simsolv .alert.ok .alert-of b { color: var(--sv-green); }
.simsolv .bar { display: flex; height: 12px; margin: 4px 0 14px; overflow: hidden; border-radius: 6px; background: var(--stone); }
.simsolv .bar i { display: block; height: 100%; }
.simsolv .b-cov { background: var(--sv-green); }
.simsolv .b-pri { background: var(--sv-blue); }
.simsolv .b-exp { background: var(--sv-red); }
.simsolv .sw { display: inline-block; width: 10px; height: 10px; margin-right: 8px; border-radius: 3px; vertical-align: 0; }
.simsolv .scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.simsolv .det { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .92rem; }
.simsolv .det th, .simsolv .det td { padding: 10px 12px; text-align: left; }
.simsolv .det thead th { font-weight: 600; color: var(--ink); }
.simsolv .det tbody tr:nth-child(odd) td { background: var(--stone); }
.simsolv .det td:first-child { font-weight: 500; color: var(--ink); }
.simsolv .det .num { text-align: right; white-space: nowrap; font-variant-numeric: lining-nums tabular-nums; }
.simsolv .green { color: var(--sv-green); }
.simsolv .red { color: var(--sv-red); }
.simsolv .blue { color: var(--sv-blue); }
.simsolv .det .green, .simsolv .det .red, .simsolv .det .blue { font-weight: 600; }
.simsolv .kv td.red { color: var(--sv-red); }
@media (max-width: 560px) {
  .simsolv .pick { width: 100%; }
  .simsolv .row-head { flex-direction: column; }
  .simsolv .rm { margin-top: 0; }
  .simsolv .det th, .simsolv .det td { padding: 8px; font-size: .86rem; }
}

/* ---------- 46. Pastilles Trustpilot (TrustBox officielles, chargées après accord ; partials tp-horizontal, tp-horizontal-dark, tp-mini) ---------- */
.tp-box--line { width: min(100%, 440px); min-height: 28px; }
.tp-box--mini { width: 100%; min-height: 0; }
.tp-box--mini > p { margin-top: 12px; }
.tp-box iframe { display: block; }
.hero15__trust .tp-box--line { flex: 0 1 440px; }
.sol-hero__content .tp-box--line { margin-top: 1.4rem; }
.cta-final__content .tp-box--line { margin-top: 1.2rem; }
/* Menu « Simuler » : entrée à venir (non cliquable) et logo Wecov */
.mega__soon { display: flex; gap: .8rem; align-items: flex-start; padding: .7rem .8rem; border-radius: 14px; opacity: .55; cursor: default; }
.mega__soon .ico { margin-top: 2px; color: var(--teal-deep); }
.mega__soon strong { display: block; font-weight: 500; font-size: .93rem; }
.mega__soon small { display: block; margin-top: 1px; font-size: .8rem; color: var(--text-muted); }
.drawer__soon, .footer__soon { opacity: .6; cursor: default; }
.drawer__soon { display: block; padding: .4rem 0; }
.soon-badge { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px; background: var(--stone); font-size: .68rem; font-style: normal; font-weight: 600; letter-spacing: .02em; color: var(--text-body); vertical-align: 2px; }
.wecov-logo { display: inline-block; width: auto; height: 15px; margin-left: 6px; vertical-align: -2px; }
/* Test de solvabilité : les bulles d'aide restent dans l'écran sur les petits téléphones (champs en retrait dans les cartes) */
@media (max-width: 479px) { .simsolv .tip { width: min(340px, calc(100vw - 84px)); } }
/* Test de solvabilité : le tableau détaillé défile dans sa carte au lieu d'élargir la colonne des résultats */
.simsolv .results-col, .simsolv .results { grid-template-columns: minmax(0, 1fr); }

/* ---------- 47. Un cadre réglementé (/pourquoi-leverage/cadre-reglementaire) : agréments en grand, alerte de vérification ---------- */
.rg-hero .pq-hero__side .tp-box--line { margin-top: 1.4rem; }
.rg-agrements .h2 { max-width: 16em; }
.rg-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 22px); margin-top: clamp(32px, 3.4vw, 48px); }
.rg-card { display: flex; flex-direction: column; gap: .55rem; padding: clamp(26px, 2.6vw, 36px); border-radius: var(--radius-card); background: rgba(255, 255, 255, .06); color: rgba(255, 255, 255, .8); }
.rg-card__logos { display: flex; align-items: center; gap: 18px; height: 76px; margin-bottom: 1rem; }
.rg-card__logos img { width: auto; height: auto; max-height: 64px; max-width: 100%; }
.rg-card__title { font-family: var(--serif); font-size: clamp(1.6rem, 2vw, 2rem); font-weight: 500; line-height: 1.1; color: #fff; }
.rg-card__num { font-size: 1.05rem; font-weight: 600; color: var(--gold-light); font-variant-numeric: tabular-nums; }
.rg-card p { font-size: .95rem; line-height: 1.55; color: rgba(255, 255, 255, .8); }
.rg-card p.rg-card__num { color: var(--gold-light); }
.rg-card .link-arrow { margin-top: auto; padding-top: 1rem; color: var(--gold-light); }
.rg-carte { margin-top: 20px; font-size: .92rem; color: rgba(255, 255, 255, .7); }
.rg-intro { max-width: 62ch; margin-top: 1.1rem; color: var(--text-body); }
.rg-fonds .cadre__grid { margin-top: clamp(28px, 3vw, 40px); }
.rg-remu { margin-top: 18px; font-size: .95rem; color: var(--text-body); }
.rg-alert { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(18px, 3vw, 44px); align-items: start; padding: clamp(28px, 4vw, 56px); border-radius: var(--radius-card); background: var(--white); box-shadow: 0 40px 80px -60px rgba(6, 25, 29, .45); }
.rg-alert__icon { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; background: var(--ink); color: var(--gold-light); }
.rg-alert__icon .ico { width: 26px; height: 26px; }
.rg-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 40px; margin-top: clamp(24px, 2.6vw, 34px); }
.rg-checks li { display: grid; gap: .35rem; align-content: start; }
.rg-checks strong { font-family: var(--serif); font-size: 1.35rem; font-weight: 500; line-height: 1.2; color: var(--ink); }
.rg-checks li > span { color: var(--text-body); font-size: .97rem; line-height: 1.55; }
.rg-checks .link-arrow { justify-self: start; margin-top: .3rem; font-size: .92rem; }
@media (max-width: 1023px) {
  .rg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .rg-grid, .rg-checks { grid-template-columns: minmax(0, 1fr); }
  .rg-alert { grid-template-columns: minmax(0, 1fr); }
}
/* Simulateur d'impôt (/simulateurs/impots) : même habillage que le simulateur PER (§ 32) */
.simimpots .field > label { display: block; margin-bottom: 6px; font-size: .9rem; }
.simimpots .lbl { margin-bottom: 6px; }
.simimpots #parts-info { margin: -4px 0 4px; }
.simimpots .pistes { display: grid; gap: 8px; margin-top: 14px; }
.simimpots .note { margin-top: 16px; }
/* Le titre d'étape des simulateurs ne suit pas la grille mobile des étapes de la page d'accueil */
.simper .step { display: block; }

/* ---------- 48. Accueil, simulateur de rentes simplifié (#simulateur) : chiffres clés, comparatif avec et sans Leverage, quatre curseurs ---------- */
.sim-card__disclaimer a { color: var(--teal-deep); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
.partners__track .logo-wecov { height: 34px; }
.partners__track .logo-luxstay { height: 40px; }
@media (max-width: 767px) { .partners__track .logo-wecov { height: 28px; } .partners__track .logo-luxstay { height: 32px; } }

/* ---------- 49. Questions fréquentes (/faq) : recherche, thèmes, une ligne par page d'origine (questions relues à chaque build) ---------- */
.faqp-tools { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin-top: clamp(36px, 4vw, 56px); }
.faqp-search { position: relative; max-width: 720px; }
.faqp-search .ico { position: absolute; left: 20px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; color: var(--text-muted); pointer-events: none; }
.faqp-search input { width: 100%; min-height: 58px; padding: 14px 20px 14px 54px; border: 1px solid var(--border); border-radius: var(--radius-btn); background: #fff; font: inherit; font-size: 1.02rem; color: var(--ink); box-shadow: 0 10px 30px -18px rgba(6, 25, 29, .25); }
.faqp-search input:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; border-color: var(--teal-deep); }
.faqp-count { margin: 0; font-size: .86rem; color: var(--text-muted); min-height: 1.3em; }
.faqp-nav { display: flex; flex-wrap: wrap; gap: 10px; }
.faqp-nav a { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 16px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font-size: .88rem; color: var(--ink); text-decoration: none; transition: border-color .25s, color .25s; }
.faqp-nav a:hover, .faqp-nav a:focus-visible { border-color: var(--teal-deep); color: var(--teal-deep); }
.faq-theme__title { margin-bottom: clamp(24px, 3vw, 40px); }
.faq-group { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(24px, 5vw, 96px); align-items: start; padding-block: clamp(24px, 3vw, 40px); border-top: 1px solid var(--border); scroll-margin-top: calc(var(--header-h) + 24px); }
.faq-group__head { position: sticky; top: calc(var(--header-h) + 32px); display: grid; gap: .6rem; justify-items: start; }
.faq-group__head .h3 { margin: 0; }
.faq-group__count { margin: 0; font-size: .84rem; color: var(--text-muted); }
.faq-group .acc__title { font-size: 1.04rem; }
.faq-group .acc__panel a { color: var(--teal-deep); }
@media (max-width: 1023px) {
  .faq-group { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .faq-group__head { position: static; }
}

/* ---------- 50. Glossaire (/glossaire) : barre des lettres, une lettre par bloc, définitions sur deux colonnes ---------- */
.gl-nav { display: flex; flex-wrap: wrap; gap: 6px; }
.gl-nav a, .gl-nav span { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: var(--radius-btn); font-family: var(--serif); font-size: 1.15rem; line-height: 1; }
.gl-nav a { border: 1px solid var(--border); background: #fff; color: var(--ink); text-decoration: none; transition: border-color .25s, color .25s, opacity .25s; }
.gl-nav a:hover, .gl-nav a:focus-visible { border-color: var(--teal-deep); color: var(--teal-deep); }
.gl-nav a.is-empty { opacity: .3; pointer-events: none; }
.gl-nav span { color: var(--text-muted); opacity: .35; }
.gl-letter { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 9fr); gap: clamp(20px, 4vw, 72px); padding-block: clamp(28px, 3.4vw, 48px); border-top: 1px solid var(--border); scroll-margin-top: calc(var(--header-h) + 20px); }
.gl-letter:first-child { border-top: 0; padding-top: 0; }
.gl-letter__title { position: sticky; top: calc(var(--header-h) + 24px); align-self: start; margin: 0; font-family: var(--serif); font-size: clamp(3rem, 6vw, 5rem); font-weight: 400; line-height: .9; color: var(--teal-deep); }
.gl-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 2.6vw, 36px) clamp(28px, 3.6vw, 56px); margin: 0; }
.gl-item { scroll-margin-top: calc(var(--header-h) + 28px); border-radius: var(--radius-btn); transition: background-color .4s, box-shadow .4s; }
.gl-item:target { background: var(--stone); box-shadow: 0 0 0 14px var(--stone); }
.gl-item dt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.gl-item dfn { font-family: var(--serif); font-size: 1.28rem; font-style: normal; font-weight: 500; line-height: 1.25; color: var(--ink); }
.gl-alias { font-size: .8rem; color: var(--text-muted); }
.gl-item dd { margin: .45rem 0 0; }
.gl-item dd p { margin: 0; font-size: .96rem; line-height: 1.6; color: var(--text-body); }
.gl-item dd .gl-pages { display: flex; flex-wrap: wrap; gap: 4px 18px; margin-top: .6rem; }
.gl-page { display: inline-flex; align-items: center; gap: 4px; font-size: .86rem; font-weight: 500; color: var(--teal-deep); text-decoration: none; }
.gl-page:hover { text-decoration: underline; text-underline-offset: 3px; }
.gl-item dd .gl-meta { display: flex; flex-wrap: wrap; gap: 4px 18px; margin-top: .5rem; font-size: .8rem; color: var(--text-muted); }
.gl-meta a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.gl-meta a:hover { color: var(--teal-deep); }
.gl-note { max-width: 72ch; margin-top: clamp(32px, 4vw, 56px); font-size: .84rem; color: var(--text-muted); }
@media (max-width: 1023px) { .gl-list { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 767px) {
  .gl-letter { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .gl-letter__title { position: static; font-size: 2.6rem; }
  .gl-nav a, .gl-nav span { width: 34px; height: 34px; font-size: 1rem; }
}
/* Comparatif avec et sans Leverage, sous les trois chiffres clés ; la colonne Leverage est mise en avant */
.sim-result__sub { margin: .2rem 0 0; font-size: .74rem; color: var(--text-muted); }
.sim-compare { margin-top: 14px; overflow-x: auto; }
.sim-compare__table { width: 100%; border-collapse: collapse; font-size: .84rem; font-variant-numeric: tabular-nums; }
.sim-compare__caption { caption-side: top; padding: 0 0 8px; text-align: left; font-size: .78rem; color: var(--text-muted); }
.sim-compare__table th, .sim-compare__table td { padding: 9px 12px; border-bottom: 1px solid var(--border); text-align: right; white-space: nowrap; }
.sim-compare__table th[scope="row"] { text-align: left; font-weight: 400; color: var(--text-body); white-space: normal; }
.sim-compare__table thead th { font-size: .74rem; font-weight: 500; letter-spacing: .02em; color: var(--text-muted); }
.sim-compare__table td { color: var(--ink); }
.sim-compare__table .is-lev { background: var(--stone); font-weight: 600; color: var(--teal-deep); }
.sim-compare__table thead .is-lev { border-radius: var(--radius-btn) var(--radius-btn) 0 0; color: var(--teal-deep); }
.sim-compare__table tbody tr:last-child td, .sim-compare__table tbody tr:last-child th { border-bottom: 0; }
.sim-compare__table tbody tr:last-child .is-lev { border-radius: 0 0 var(--radius-btn) var(--radius-btn); }
@media (max-width: 520px) {
  .sim-compare__table { font-size: .78rem; }
  .sim-compare__table th, .sim-compare__table td { padding: 8px 6px; }
  .sim-compare__table thead th { white-space: normal; }
  .sim-compare__table th[scope="row"] { min-width: 7.5em; }
}

/* ---------- 51. Pourquoi Leverage, section ADN : photo de l'équipe en bandeau, la citation de Bastien posée sur son bord bas ---------- */
.pq-adn__visuel { position: relative; margin-top: clamp(28px, 3vw, 44px); }
.pq-adn__photo { margin: 0; }
.pq-adn__photo img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; object-position: center 28%; border-radius: var(--radius-img); box-shadow: 0 40px 80px -56px rgba(6, 25, 29, .6); }
.pq-adn .pq-adn__quote { position: relative; z-index: 1; max-width: 760px; margin: clamp(-130px, -9vw, -72px) auto 0 clamp(16px, 4vw, 56px); background: #fff; box-shadow: 0 34px 70px -42px rgba(6, 25, 29, .5); }
@media (max-width: 767px) {
  .pq-adn__photo img { aspect-ratio: 4 / 3; object-position: 62% 30%; }
  .pq-adn .pq-adn__quote { margin: -48px 12px 0; }
}

/* ---------- 52. Pourquoi Leverage, histoire : le logo sur une plaque claire, filet doré intérieur, à la place de la photo ---------- */
.pq-story__logo { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 22px; border: 1px solid var(--border); background: radial-gradient(120% 90% at 50% 38%, #fff 0%, #fff 48%, var(--stone) 100%); box-shadow: 0 30px 60px -48px rgba(6, 25, 29, .45); }
.pq-story__logo::after { content: ''; position: absolute; inset: 12px; border: 1px solid var(--gold-line); border-radius: calc(var(--radius-img) - 4px); pointer-events: none; }
.pq-story__logo img { flex: 0 1 auto; width: auto; height: 58%; max-width: 54%; min-height: 0; object-fit: contain; }
.pq-story__logo figcaption { flex: none; font-family: var(--serif); font-size: clamp(.82rem, 1.1vw, .98rem); font-style: italic; color: var(--text-muted); text-align: center; }

/* ---------- 53. Pourquoi Leverage, nos locaux : cartes horizontales compactes (petite photo, adresse, standard) ---------- */
.offices--compact .office { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: stretch; }
.offices--compact .office__img { height: 100%; min-height: 168px; aspect-ratio: auto; margin: 0; border-radius: var(--radius-img) 0 0 var(--radius-img); }
.offices--compact .office__img img { position: absolute; inset: 0; }
.offices--compact .office__img .todo { left: 8px; right: 8px; bottom: 8px; font-size: .62rem; line-height: 1.3; }
.offices--compact .office__body { align-content: center; padding: 20px 22px; }
.offices--compact .office__body .h3 { margin: 0; }
.office__tel { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-top: .2rem; }
.office__tel span { font-size: .82rem; color: var(--text-muted); }
@media (max-width: 560px) {
  .offices--compact .office { grid-template-columns: minmax(0, 1fr); }
  .offices--compact .office__img { min-height: 0; aspect-ratio: 16 / 7; border-radius: var(--radius-img) var(--radius-img) 0 0; }
}

/* ---------- 54. Familles de solutions (Levier de financement, Supports, Produits) : intitulés sans lien, en attendant leurs pages ---------- */
p.mega__title:hover { text-decoration: none; }
.footer__cat { display: inline-block; padding: .26rem 0; font-size: .95rem; line-height: 1.45; opacity: .7; cursor: default; }

/* ---------- 55. Cartes objectifs sans lien (pages de familles prévues en V2) : même mise en page que les cartes cliquables ---------- */
.goal-card--static > div { position: relative; display: grid; align-content: start; gap: 0; color: var(--ink); -webkit-user-select: none; user-select: none; }
@media (min-width: 1024px) {
  .objectifs.is-pinned .goal-card--static > div { grid-row: span 2; display: grid; grid-template-rows: subgrid; }
}
/* Solutions prévues en V2 (non coté, crypto-actifs) : citées dans les cartes, sans lien */
.deck__soon { font-weight: 500; color: rgba(255, 255, 255, .62); }

/* ---------- 56. Mega menu Ressources : dernier article en vignette, à la hauteur des liens ---------- */
#mega-ressources .mega__feature { gap: .55rem; padding: 16px 18px; }
.mega__article--compact { grid-template-columns: 88px minmax(0, 1fr); align-items: start; gap: 12px; }
.mega__article--compact img { width: 88px; height: 88px; aspect-ratio: 1; object-fit: cover; }
.mega__article-text { display: grid; gap: .3rem; min-width: 0; }
.mega__article-text strong { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: .9rem; }
.mega__article-text .todo { justify-self: start; font-size: .6rem; }
/* Dernière vidéo YouTube : miniature 16:9 avec bouton lecture, titre à côté */
.mega__video { grid-template-columns: 124px minmax(0, 1fr); align-items: start; gap: 12px; }
.mega__video-thumb { position: relative; display: block; overflow: hidden; aspect-ratio: 16 / 9; border-radius: var(--radius-img); background: var(--grey-200); }
.mega__video-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; border-radius: 0; }
.mega__video-play { position: absolute; inset: 0; display: grid; place-items: center; }
.mega__video-play .ico { width: 30px; height: 30px; padding: 8px; border-radius: 50%; background: rgba(6, 25, 29, .7); color: #fff; }
.mega__video:hover .mega__video-play .ico { background: var(--teal-deep); }
@media (min-width: 1100px) { #mega-ressources .mega__body { grid-template-columns: minmax(0, 1fr) 380px; } }

/* ---------- 57. Pages articles (demande d'Adrien du 2026-10-29) : titre, auteur et date, image centrés ; le chapeau ouvre le texte, aligné à gauche ---------- */
.article-head { text-align: center; }
.article-head .h1 { margin-inline: auto; text-wrap: balance; }
.article-head .article-meta { justify-content: center; }
.article-head .article-fiscal { margin-inline: auto; }
.article-head .article-media { margin-inline: auto; text-align: left; }
.article-chapo { margin-bottom: 1.8rem; font-size: clamp(1.1rem, 1.3vw, 1.25rem); line-height: 1.6; color: var(--ink); }
/* Bouton de l'encadré « Parlons-en » : le style des liens du texte le rendait teal sur fond teal */
.prose .btn--primary, .prose .btn--primary:hover { color: #fff; text-decoration: none; }
/* FAQ de l'article : la marge des intertitres du texte ne s'applique pas aux questions, blocs plus serrés */
.prose .article-faq .acc__head { margin: 0; }
.article-faq .acc__btn { padding-block: 14px; }

/* En-tête d'article : deux façades haussmanniennes en miroir, comme une rue qui encadre le titre et la photo */
.deco--rue::before, .deco--rue::after { top: calc(var(--header-h) + 24px); width: clamp(260px, 27vw, 460px); aspect-ratio: 800 / 820; background-image: url("/assets/img/deco/facade.svg"); background-position: center top; opacity: .14; }
.deco--rue::before { left: clamp(-90px, -3vw, -20px); }
.deco--rue::after { content: ""; position: absolute; z-index: -1; pointer-events: none; right: clamp(-90px, -3vw, -20px); background-repeat: no-repeat; background-size: contain; transform: scaleX(-1); }

/* Newsletter : garde-corps de balcon filant en pied de section, rosace de plafond derrière le formulaire */
.deco--balcon { padding-bottom: calc(clamp(56px, 7vw, 96px) + 64px); }
.deco--balcon::before { left: 0; right: 0; bottom: 18px; height: 64px; background-image: url("/assets/img/deco/garde-corps.svg"); background-repeat: repeat-x; background-size: auto 100%; background-position: center bottom; opacity: .16; }
.deco--balcon::after { content: ""; position: absolute; z-index: -1; pointer-events: none; top: clamp(-160px, -10vw, -80px); right: clamp(-150px, -8vw, -50px); width: clamp(320px, 34vw, 520px); aspect-ratio: 1; background: url("/assets/img/deco/rosace.svg") no-repeat center / contain; opacity: .08; }
@media (max-width: 760px) {
  .deco--rue::before, .deco--rue::after { width: 220px; opacity: .08; }
  .deco--rue::after { display: none; }
  .deco--balcon::before { height: 48px; }
  .deco--balcon::after { width: 260px; top: -90px; right: -110px; }
}

/* ---------- 58. CGU et confidentialité (demande d'Adrien du 2026-10-29) : sommaire à gauche et texte sur toute la largeur du conteneur, alignés sur le titre ---------- */
.legal-layout .prose, .legal-layout .block > p, .legal-layout .block > .lead { max-width: none; }
.legal-layout .table-wrap, .legal-layout table { width: 100%; }

/* ---------- 59. Assistant d'orientation, en bas à droite (demande d'Adrien du 2026-10-29) : questions à choix, liens vers la bonne page ---------- */
.lva { position: fixed; right: clamp(14px, 2vw, 24px); bottom: calc(clamp(14px, 2vw, 24px) + env(safe-area-inset-bottom, 0px)); z-index: 90; display: flex; flex-direction: column; align-items: flex-end; gap: 12px; font-family: var(--font); }
.lva__lanceur { display: inline-flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 20px 0 16px; border: 1px solid rgba(228, 190, 116, .45); border-radius: 999px; background: var(--teal-night); color: #fff; font: 500 .95rem var(--font); box-shadow: 0 18px 40px -20px rgba(6, 25, 29, .7); cursor: pointer; transition: background-color .3s, transform .3s var(--ease-out); }
.lva__lanceur .ico { width: 20px; height: 20px; color: var(--gold); }
.lva__lanceur:hover { background: var(--ink); transform: translateY(-2px); }
.lva__lanceur:focus-visible, .lva__fermer:focus-visible, .lva__choix:focus-visible, .lva__lien:focus-visible, .lva__saisie button:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.lva.is-open .lva__lanceur-texte { display: none; }
.lva.is-open .lva__lanceur { padding: 0; width: 52px; justify-content: center; }
.lva__panneau { order: -1; display: flex; flex-direction: column; width: min(392px, calc(100vw - 28px)); height: min(620px, calc(100dvh - 120px)); overflow: hidden; border-radius: 18px; background: var(--white); border: 1px solid var(--border); box-shadow: 0 40px 80px -36px rgba(6, 25, 29, .55); }
.lva__panneau[hidden] { display: none; }
.lva__tete { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 16px 16px 20px; background: var(--teal-night) url("/assets/img/deco/garde-corps.svg") repeat-x center bottom / auto 22px; color: #fff; border-bottom: 1px solid rgba(228, 190, 116, .55); }
.lva__titre { font-family: var(--serif); font-size: 1.35rem; font-weight: 500; line-height: 1.1; color: #fff; }
.lva__sous-titre { margin-top: 2px; font-size: .82rem; color: rgba(255, 255, 255, .72); }
.lva__fermer { display: grid; place-items: center; flex-shrink: 0; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer; }
.lva__fermer:hover { background: rgba(255, 255, 255, .16); }
.lva__fil { position: relative; flex: 1; display: flex; flex-direction: column; gap: 10px; padding: 18px 16px; overflow-y: auto; overscroll-behavior: contain; background: var(--stone); }
.lva__msg { max-width: 92%; }
.lva__msg p { font-size: .92rem; line-height: 1.5; }
.lva__msg--bot { align-self: flex-start; padding: 10px 14px; border-radius: 14px 14px 14px 4px; background: var(--white); color: var(--text-body); box-shadow: 0 1px 0 var(--border); }
.lva__msg--moi { align-self: flex-end; padding: 9px 14px; border-radius: 14px 14px 4px 14px; background: var(--teal-deep); }
.lva__msg--moi p { color: #fff; }
.lva__msg--liens { align-self: stretch; max-width: none; display: grid; gap: 6px; }
.lva__msg--choix { align-self: stretch; max-width: none; display: flex; flex-wrap: wrap; gap: 6px; }
.lva__choix { min-height: 40px; padding: 8px 14px; border: 1px solid var(--teal-soft, #CFE3E4); border-radius: 999px; background: var(--white); color: var(--teal-deep); font: 500 .86rem var(--font); text-align: left; cursor: pointer; transition: background-color .25s, color .25s, border-color .25s; }
.lva__choix:hover { background: var(--teal-deep); border-color: var(--teal-deep); color: #fff; }
.lva__lien { display: grid; grid-template-columns: minmax(0, 1fr) 18px; gap: 12px; align-items: center; padding: 11px 14px; border-radius: 12px; background: var(--white); border: 1px solid var(--border); color: var(--ink); text-decoration: none; transition: border-color .25s, box-shadow .25s; }
.lva__lien .ico { display: block; color: var(--teal-deep); }
.lva__lien strong { display: block; font-size: .9rem; font-weight: 500; line-height: 1.35; }
.lva__lien small { display: block; margin-top: 1px; font-size: .78rem; line-height: 1.35; color: var(--text-muted); }
.lva__lien:hover { border-color: var(--teal-deep); box-shadow: 0 10px 24px -18px rgba(6, 25, 29, .5); }
.lva__lien--rdv { background: var(--teal-deep); border-color: var(--teal-deep); }
.lva__lien--rdv strong, .lva__lien--rdv .ico { color: #fff; }
.lva__lien--rdv small { color: rgba(255, 255, 255, .78); }
.lva__saisie { display: flex; gap: 8px; padding: 12px 12px 6px; border-top: 1px solid var(--border); background: var(--white); }
.lva__saisie input { flex: 1; min-width: 0; min-height: 44px; padding: 0 14px; border: 1px solid var(--border); border-radius: 999px; font: 16px var(--font); color: var(--ink); background: var(--white); }
.lva__saisie input:focus { outline: none; border-color: var(--teal-deep); }
.lva__saisie button { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--teal-deep); color: #fff; cursor: pointer; }
.lva__note { padding: 0 16px 10px; background: var(--white); font-size: .7rem; line-height: 1.4; color: var(--text-muted); }
@media (max-width: 1023px) {
  /* Au-dessus de la barre mobile (prise de rendez-vous et téléphone) */
  .lva { bottom: calc(84px + env(safe-area-inset-bottom, 0px)); right: 12px; }
  .lva__lanceur { width: 52px; padding: 0; justify-content: center; }
  .lva__lanceur-texte { display: none; }
}
@media (max-width: 560px) {
  .lva.is-open { left: 8px; right: 8px; bottom: calc(8px + env(safe-area-inset-bottom, 0px)); }
  .lva.is-open .lva__lanceur { display: none; }
  .lva__panneau { width: 100%; height: min(640px, calc(100dvh - 16px - env(safe-area-inset-bottom, 0px))); }
}
@media print { .lva { display: none; } }

/* ---------- 60. Accord pour être rappelé (article L. 223-1 du code de la consommation), sur tous les formulaires avec téléphone ----------
   La case et sa phrase, les conditions repliées sous une petite flèche, la référence légale en petit (demande d'Adrien du 2026-10-29) */
.consent-appel { display: grid; gap: 6px; }
.consent-appel__details { padding-left: calc(18px + .7rem); }
.consent-appel__details summary { display: inline-flex; align-items: center; gap: 8px; min-height: 28px; font-size: .8rem; font-weight: 500; color: var(--teal-deep); cursor: pointer; list-style: none; }
.consent-appel__details summary::-webkit-details-marker { display: none; }
.consent-appel__details summary::after { content: ""; width: 7px; height: 7px; margin-top: -3px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform .25s var(--ease-out), margin .25s var(--ease-out); }
.consent-appel__details[open] summary::after { margin-top: 3px; transform: rotate(-135deg); }
.consent-appel__details summary:hover { text-decoration: underline; text-underline-offset: 3px; }
.consent-appel__details summary:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; border-radius: 4px; }
.consent-appel__conditions { margin-top: 6px; padding: 10px 12px; border-radius: 10px; background: var(--stone); font-size: .76rem; line-height: 1.55; color: var(--text-body); }
.consent-appel__conditions a { color: var(--teal-deep); text-decoration: underline; text-underline-offset: 2px; }
.consent-appel__loi { padding-left: calc(18px + .7rem); font-size: .7rem; line-height: 1.45; color: var(--text-muted); }
.lp-consent__loi { font-size: .7rem; }

/* ---------- 61. Accueil, pied de la section des simulateurs : une seule ligne sur ordinateur (demande d'Adrien du 2026-10-29) ---------- */
@media (min-width: 1200px) { .solutions__foot { max-width: none; white-space: nowrap; } }
/* Accueil, section Formule : le lien vers la Formule centré sous les cartes (demande d'Adrien du 2026-10-29) */
.formule__more { margin-top: clamp(28px, 3vw, 40px); text-align: center; }

/* ---------- 62. Logos des agréments en couleur partout (demande d'Adrien du 2026-10-29) : sur fond sombre, posés sur une plaque blanche ---------- */
.rg-card__logos { width: fit-content; max-width: 100%; height: 64px; padding: 10px 16px; border-radius: 12px; background: #fff; }
.rg-card__logos img { max-height: 44px; }

/* ---------- 63. Médias sur mobile : deux lignes au plus (demande d'Adrien du 2026-10-29) ----------
   Trois logos compacts en haut (Le Revenu, Challenges, Capital), les deux plus larges en bas (Journal de l'Investisseur, BFM Business) */
@media (max-width: 767px) {
  .medias__list { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 22px 16px; align-items: center; justify-items: center; max-width: 420px; }
  .medias__list li { grid-column: span 2; min-width: 0; }
  .medias__list li:has(.medias__logo--jdi), .medias__list li:has(.medias__logo--bfm) { grid-column: span 3; }
  .medias__list li:has(.medias__logo--revenu) { order: 1; }
  .medias__list li:has(.medias__logo--challenges) { order: 2; }
  .medias__list li:has(.medias__logo--capital) { order: 3; }
  .medias__list li:has(.medias__logo--jdi) { order: 4; }
  .medias__list li:has(.medias__logo--bfm) { order: 5; }
  .medias__list .medias__logo { width: auto; height: auto; max-width: 100%; max-height: 34px; }
  .medias__list .medias__logo--bfm { max-height: 24px; }
}

/* ---------- 64. Accueil sur mobile, plus compact et plus équilibré (demande d'Adrien du 2026-10-29) ---------- */
@media (max-width: 767px) {
  /* Solutions phares : deux colonnes, vignette au-dessus du libellé */
  .quick__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .quick__list a { flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 10px; min-height: 0; padding: 10px 10px 14px; font-size: 1.12rem; }
  .quick__img { width: 100%; height: auto; aspect-ratio: 16 / 10; }
  .quick__list a > span { padding-inline: 4px; }

  /* À vos côtés : centré */
  .cotes__body, .cotes__body .pillars li { text-align: center; }
  .cotes__body .actions { justify-content: center; }

  /* Toutes les solutions : sans photo, panneau resserré, cartes de même hauteur */
  .deck__media { display: none; }
  .deck__body { justify-content: flex-start; padding: 26px 22px 28px; }
  .deck__title { font-size: 1.9rem; line-height: 1.08; }
  .deck__text { margin-top: .7rem; font-size: .98rem; line-height: 1.55; }
  .deck__links { gap: .55rem 1.1rem; margin-top: 1.2rem; font-size: .95rem; }
  .deck__cta { margin-top: 1.4rem; }

  /* Simulateurs : deux colonnes */
  .tools15__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .tools15__list a { min-height: 76px; padding: 14px 16px; font-size: 1.12rem; line-height: 1.2; }
  .tools15__list > li:last-child:nth-child(odd) { grid-column: 1 / -1; }

  /* Formule : photos moins hautes */
  .stack--formule-img .stack__card { grid-template-rows: auto 150px; }

  /* Formule, étapes : titre, phrase et bouton centrés */
  .formule__steps-title { margin-inline: auto; text-align: center; text-wrap: balance; }
  .steps-foot { flex-direction: column; align-items: center; text-align: center; }

  /* Pour ceux qui ont bâti : une carte à la fois, en slider qui défile (la suivante dépasse à droite) */
  .people { grid-template-columns: none; grid-template-rows: repeat(3, auto); grid-auto-flow: column; grid-auto-columns: 82%; gap: 10px 14px; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; margin-inline: calc(-1 * var(--gutter)); padding: 0 var(--gutter) 8px; scroll-padding-inline: var(--gutter); scrollbar-width: none; }
  .people::-webkit-scrollbar { display: none; }
  .person { scroll-snap-align: start; }

  /* Rémunération : photo en bandeau, moins haute */
  .remu__media { aspect-ratio: 16 / 10; max-width: none; }
  .remu__media img { object-position: 50% 45%; }

  /* Avis : titre, description, note et boutons centrés */
  .reviews__aside { justify-items: center; text-align: center; }
  .reviews__aside .actions { justify-content: center; }
  .reviews__aside .h2 { text-wrap: balance; }

  /* Mot du directeur : une photo de profil ronde, texte centré */
  .directeur { justify-items: center; gap: 18px; text-align: center; }
  .directeur__media { width: 112px; max-width: 112px; aspect-ratio: 1; border-radius: 50%; box-shadow: 0 0 0 4px var(--white), 0 14px 30px -18px rgba(6, 25, 29, .5); }
  .directeur__media img { object-position: 50% 22%; }
  .directeur__quote p { font-size: 1.6rem; text-wrap: balance; }
  .directeur__sign { margin-inline: auto; margin-top: 1.2rem; }

  /* Hero : titre plus proche de l'en-tête, photo moins haute */
  .hero15__bg { height: 250px; }
  .hero15::before { height: 251px; }
  .hero15__content { padding-top: 168px; padding-bottom: 44px; }

  /* Agréments : deux par ligne */
  .cadre14 .agrements { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .cadre14 .agrement { padding: 16px 14px 14px; }
  .cadre14 .agrement__logos { height: 36px; margin-bottom: 6px; }
  .cadre14 .agrement__logos img { height: 28px; }
  .cadre14 .agrement__label { font-size: 1.2rem; }
  .cadre14 .agrement__detail { font-size: .82rem; }
}

/* ---------- 65. Accueil, équipe : carte « +7 collaborateurs » qui complète la grille de trois colonnes (tablette et mobile) ---------- */
#equipe .member--plus { display: none; }
#equipe .member__plus { display: grid; align-content: start; gap: inherit; color: inherit; text-decoration: none; }
#equipe .member__plus-tile { display: grid; place-items: center; background: var(--teal-night) url("/assets/img/deco/rosace.svg") no-repeat center / 140%; }
#equipe .member__plus-num { font-family: var(--serif); font-size: clamp(2.2rem, 9vw, 3rem); font-weight: 500; line-height: 1; color: var(--gold); font-variant-numeric: lining-nums; }
#equipe .member__plus:hover .member__plus-num { color: var(--gold-light); }
#equipe .member__plus:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 4px; border-radius: var(--radius-img); }
@media (max-width: 1023px) { #equipe .member--plus { display: grid; } }

/* ---------- 66. Médias sur ordinateur : toujours sur une seule ligne, même dézoomé (demande d'Adrien du 2026-10-29) ----------
   Pas de retour à la ligne ; entre 768 et 1199 px, les logos sont un peu plus petits pour tenir sur la largeur */
@media (min-width: 768px) {
  .medias__list { flex-wrap: nowrap; column-gap: clamp(24px, 3vw, 48px); }
  .medias__list li { flex: 0 0 auto; }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .medias__list { column-gap: clamp(16px, 2vw, 28px); }
  .medias__logo { height: 32px; }
  .medias__logo--bfm { height: 23px; }
  .medias__logo--challenges { height: 27px; }
  .medias__logo--capital { height: 33px; }
  .medias__logo--jdi { height: 36px; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .medias__list { column-gap: 14px; }
  .medias__logo { height: 27px; }
  .medias__logo--bfm { height: 20px; }
  .medias__logo--challenges { height: 23px; }
  .medias__logo--capital { height: 28px; }
  .medias__logo--jdi { height: 31px; }
}

/* Logos des médias : lien vers l'article quand il existe (Le Revenu, BFM Business, demande d'Adrien du 2026-10-29) */
.medias__link { display: flex; align-items: center; border-radius: 4px; transition: opacity .3s var(--ease-out); }
.medias__link:hover { opacity: .72; }
.medias__link:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 6px; }


