/* Mise en page du site (direction A « Soleil »). S'appuie sur tokens.css et components.css.
   Mobile d'abord ; points de rupture : 640px, 900px, 1200px. */

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body { margin: 0; background: var(--bg-100); color: var(--ink-100); font-family: var(--font-text); font-size: 17px; line-height: 1.65; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
p { margin: 0; }
h1, h2, h3, h4 { font-family: var(--font-display); margin: 0; letter-spacing: -0.02em; line-height: 1.05; font-weight: 800; overflow-wrap: break-word; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.ld-skip { position: absolute; left: 16px; top: -60px; z-index: 100; background: var(--bg-inverse); color: var(--ink-inverse); padding: 12px 18px; border-radius: var(--radius-pill); font-weight: 650; text-decoration: none; }
.ld-skip:focus { top: 12px; }
.ld-container { width: 100%; max-width: calc(var(--container-max) + 2 * var(--space-6)); margin-inline: auto; padding-inline: var(--space-4); }
@media (min-width: 900px) { .ld-container { padding-inline: var(--space-6); } }
.ld-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Typo de page ---------- */
.ld-display-xl { font-size: clamp(42px, 6.4vw, 76px); line-height: .98; letter-spacing: -0.035em; font-variation-settings: 'opsz' 96; }
.ld-display-l { font-size: clamp(36px, 4.8vw, 56px); line-height: 1.02; letter-spacing: -0.03em; font-variation-settings: 'opsz' 72; }
.ld-h1 { font-size: clamp(30px, 3.4vw, 40px); line-height: 1.08; }
.ld-h2 { font-size: clamp(24px, 2.4vw, 28px); line-height: 1.15; font-weight: 700; }
.ld-lead { font-size: clamp(17px, 1.6vw, 20px); line-height: 1.55; color: var(--ink-200); max-width: 36em; }
.ld-hl { color: var(--brand-700); }

/* ---------- En-tête ---------- */
.ld-header .ld-container { display: flex; align-items: center; gap: 20px; height: 100%; }
.ld-header { padding: 0; }
.ld-header > .ld-container { padding-inline: var(--space-4); }
@media (min-width: 900px) { .ld-header > .ld-container { padding-inline: var(--space-6); } }
@media (max-width: 1060px) { .ld-nav a { padding-inline: 10px; } }
.ld-mnav { position: fixed; inset: 64px 0 0; z-index: 49; background: var(--bg-100); padding: 16px 20px 32px; display: flex; flex-direction: column; gap: 18px; overflow-y: auto; transform: translateY(-8px); opacity: 0; visibility: hidden; transition: opacity .2s, transform .2s, visibility .2s; }
.ld-mnav.is-open { opacity: 1; transform: none; visibility: visible; }
.ld-mnav nav a { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line-100); font: 750 26px/1.1 var(--font-display); letter-spacing: -0.02em; text-decoration: none; }
.ld-mnav nav a[aria-current="page"] { color: var(--brand-700); }
.ld-mnav nav a .ld-icon { color: var(--brand-700); }
.ld-mnav__theme { display: flex; justify-content: space-between; align-items: center; font: 600 15px/1 var(--font-text); color: var(--ink-200); }
.ld-mnav__cta { display: grid; gap: 10px; }
@media (min-width: 761px) { .ld-mnav { display: none; } }
body.has-mnav { overflow: hidden; }

/* ---------- Sections ---------- */
.ld-section { padding-block: var(--space-8); }
@media (min-width: 900px) { .ld-section { padding-block: 96px; } }
.ld-section--tight { padding-top: 0; }
.ld-section-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 16px 32px; margin-bottom: var(--space-6); }
.ld-section-head h2 { margin-top: 12px; max-width: 16em; }
.ld-section-head > p { color: var(--ink-200); max-width: 28em; }
.ld-section-head > .ld-btn, .ld-section-head > .ld-filters { flex: none; }
.ld-band { background: var(--bg-300); border-radius: var(--radius-xl); padding: var(--space-6) var(--space-5); }
@media (min-width: 900px) { .ld-band { padding: 56px 48px; } }

/* ---------- Hero d'accueil ---------- */
.ld-hero { display: grid; gap: 32px; align-items: center; padding-block: 40px 56px; }
@media (min-width: 900px) { .ld-hero { grid-template-columns: 1.15fr .85fr; padding-block: 72px 88px; } }
.ld-hero h1 { margin: 18px 0 22px; }
.ld-hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.ld-reassure { display: flex; flex-wrap: wrap; gap: 10px 20px; margin: 24px 0 0; padding: 0; list-style: none; font: 600 14px/1.3 var(--font-text); color: var(--ink-200); }
.ld-reassure li { display: flex; gap: 6px; align-items: center; }
.ld-reassure .ld-icon { width: 17px; height: 17px; color: var(--brand-700); }
.ld-hero__visual { position: relative; height: 300px; }
@media (min-width: 640px) { .ld-hero__visual { height: 420px; } }
.ld-hero__disc { position: absolute; right: 0; top: 0; width: min(400px, 82vw); aspect-ratio: 1; border-radius: 50%; background: var(--brand-500); overflow: hidden; }
.ld-hero__portrait { position: absolute; inset: 6% 6% 0; display: flex; align-items: flex-end; justify-content: center; }
.ld-portrait { display: block; height: 100%; width: auto; max-width: 100%; object-fit: contain; object-position: bottom center; }
.ld-hero__half { position: absolute; left: 0; bottom: 0; width: 150px; height: 75px; border-radius: 999px 999px 0 0; background: var(--accent-600); }
.ld-hero__bubble { position: absolute; right: calc(min(400px, 82vw) / 2); transform: translateX(50%); bottom: 22px; white-space: nowrap; background: var(--bg-inverse); color: var(--ink-inverse); border-radius: var(--radius-pill); padding: 12px 18px; font: 600 14px/1.2 var(--font-text); box-shadow: var(--shadow-2); }
.ld-hero__bubble b { font: 800 22px/1 var(--font-display); color: var(--brand-200); margin-right: 6px; }
@media (max-width: 639px) { .ld-hero__bubble { display: none; } }

/* ---------- Constats ---------- */
.ld-pains { display: grid; gap: 32px; }
@media (min-width: 900px) { .ld-pains { grid-template-columns: .8fr 1.2fr; gap: 40px; } }
.ld-pains ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 24px 32px; }
@media (min-width: 640px) { .ld-pains ul { grid-template-columns: 1fr 1fr; } }
.ld-pains li { display: grid; grid-template-columns: 36px 1fr; gap: 14px; }
.ld-pains li::before { content: "?"; width: 36px; height: 36px; border-radius: 50%; background: var(--brand-500); color: var(--on-brand); display: grid; place-items: center; font: 800 18px/1 var(--font-display); }
.ld-pains b { font: 700 18px/1.25 var(--font-display); display: block; margin-bottom: 4px; }
.ld-pains span { font-size: 15px; color: var(--ink-200); line-height: 1.5; }

/* ---------- Grilles ---------- */
.ld-grid { display: grid; gap: 16px; }
@media (min-width: 640px) { .ld-grid--2, .ld-grid--3, .ld-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .ld-grid--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1200px) { .ld-grid--4 { grid-template-columns: repeat(4, 1fr); } }

/* ---------- Bande IA ---------- */
.ld-ia { position: relative; overflow: hidden; border-radius: var(--radius-xl); background: var(--brand-500); color: var(--on-brand); padding: 40px 24px; display: grid; gap: 32px; }
@media (min-width: 900px) { .ld-ia { grid-template-columns: 1fr 1fr; gap: 48px; padding: 64px 56px; } }
.ld-ia > * { position: relative; z-index: 1; }
.ld-ia__disc { position: absolute !important; z-index: 0 !important; right: -120px; bottom: -200px; width: 420px; height: 420px; border-radius: 50%; background: var(--brand-200); opacity: .9; }
.ld-ia .ld-overline { color: var(--on-brand); }
.ld-ia .ld-overline::before { background: var(--on-brand); }
.ld-ia h2 { color: var(--on-brand); margin: 14px 0 18px; }
.ld-ia ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ld-ia li { background: var(--bg-200); color: var(--ink-100); border-radius: 20px; padding: 18px 22px; display: flex; justify-content: space-between; gap: 16px; align-items: center; font: 700 17px/1.3 var(--font-display); }
.ld-ia li span { font: 500 15px/1.3 var(--font-text); color: var(--ink-200); text-align: right; }

/* ---------- Méthode ---------- */
.ld-method { list-style: none; margin: 0; padding: 0; display: grid; gap: 24px; counter-reset: s; }
@media (min-width: 640px) { .ld-method { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .ld-method { grid-template-columns: repeat(4, 1fr); } .ld-method { position: relative; } .ld-method::before { content: ""; position: absolute; left: 32px; right: 60px; top: 32px; height: 2px; background: repeating-linear-gradient(90deg, var(--line-200) 0 8px, transparent 8px 14px); } }
.ld-method li { counter-increment: s; position: relative; }
.ld-method li::before { content: counter(s); width: 64px; height: 64px; border-radius: 50%; background: var(--brand-500); color: var(--on-brand); display: grid; place-items: center; font: 800 26px/1 var(--font-display); margin-bottom: 18px; box-shadow: 0 0 0 8px var(--bg-100); position: relative; }
.ld-method small { font: 650 13px/1 var(--font-text); color: var(--accent-600); }
.ld-method h3 { font-size: 22px; margin: 8px 0 6px; }
.ld-method p { font-size: 15px; color: var(--ink-200); }

/* ---------- CTA final ---------- */
.ld-final { position: relative; overflow: hidden; border-radius: var(--radius-xl); background: var(--bg-inverse); color: var(--ink-inverse); padding: 48px 24px; }
@media (min-width: 900px) { .ld-final { padding: 72px 56px; } }
.ld-final > *:not(.ld-final__disc) { position: relative; }
.ld-final__disc { position: absolute; border-radius: 50%; background: var(--brand-500); right: -80px; top: -80px; width: 300px; height: 300px; }
.ld-final__disc--soft { background: var(--brand-200); right: 220px; top: auto; bottom: -90px; width: 180px; height: 180px; }
@media (max-width: 639px) { .ld-final__disc { width: 180px; height: 180px; right: -70px; top: -70px; } .ld-final__disc--soft { display: none; } }
.ld-final h2 { color: var(--ink-inverse); max-width: 10em; margin-top: 14px; }
.ld-final p { font-size: 19px; opacity: .88; max-width: 30em; margin: 18px 0 30px; }
.ld-final .ld-overline { color: var(--brand-200); }
.ld-final .ld-btn--secondary { --_fg: var(--ink-inverse); --_bd: var(--ink-inverse); }
.ld-final .ld-btn--secondary:hover { --_bg: transparent; }

/* ---------- Pied de page ---------- */
.ld-footer { border-top: 1px solid var(--line-100); margin-top: var(--space-8); padding-block: 48px 120px; font-size: 15px; color: var(--ink-200); }
@media (min-width: 761px) { .ld-footer { padding-bottom: 40px; } }
.ld-footer__grid { display: grid; gap: 32px; }
@media (min-width: 900px) { .ld-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.ld-footer h2 { font: 700 13px/1 var(--font-text); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-200); margin-bottom: 14px; }
.ld-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ld-footer a { text-decoration: none; color: var(--ink-100); }
.ld-footer a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ld-footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line-100); font-size: 14px; }
.ld-footer__legal button { background: none; border: 0; padding: 0; color: inherit; font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* ---------- Barre mobile + WhatsApp ---------- */
.ld-mobilebar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; }
@media (min-width: 761px) { .ld-mobilebar { display: none; } }
@media (max-width: 760px) { .ld-fab { bottom: calc(84px + env(safe-area-inset-bottom)); } }
body.is-typing .ld-mobilebar { display: none; }

/* ---------- Hero des pages intérieures ---------- */
.ld-page-hero { position: relative; overflow: hidden; padding-block: 32px 48px; }
@media (min-width: 900px) { .ld-page-hero { padding-block: 40px 64px; } }
.ld-page-hero h1 { margin: 16px 0 18px; max-width: 14em; }
.ld-page-hero > .ld-container { position: relative; }
.ld-page-hero__disc { position: absolute; right: -90px; top: -70px; width: 320px; height: 320px; border-radius: 50%; background: var(--brand-500); }
.ld-page-hero__disc--soft { background: var(--brand-200); width: 220px; height: 220px; }
@media (max-width: 899px) { .ld-page-hero__disc { width: 160px; height: 160px; right: -60px; top: -60px; opacity: .9; } }
.ld-breadcrumb { margin-bottom: 18px; }

/* ---------- Filtres, recherche, pagination ---------- */
.ld-filterbar { display: flex; flex-wrap: wrap; gap: 16px 24px; align-items: center; justify-content: space-between; padding: 16px; border-radius: var(--radius-l); background: var(--bg-200); border: 1px solid var(--line-100); margin-bottom: var(--space-5); }
.ld-filters { display: flex; flex-wrap: nowrap; gap: 8px; align-items: center; overflow-x: auto; scrollbar-width: none; max-width: 100%; }
@media (min-width: 900px) { .ld-filters { flex-wrap: wrap; overflow: visible; } }
.ld-filters > span { font: 600 13px/1 var(--font-text); color: var(--ink-200); margin-right: 4px; flex: none; }
.ld-filters .ld-chip { flex: none; text-decoration: none; }
.ld-search { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 6px 0 16px; border-radius: var(--radius-pill); border: 1.5px solid var(--line-200); background: var(--bg-200); color: var(--ink-200); width: 100%; max-width: 360px; }
.ld-search input { border: 0; background: transparent; color: var(--ink-100); font: 400 16px/1 var(--font-text); flex: 1; min-width: 0; outline: none; }
.ld-search:focus-within { border-color: var(--focus); box-shadow: 0 0 0 3px var(--accent-100); }
.ld-count { font-size: 14px; color: var(--ink-200); margin-bottom: 16px; }
.ld-pager { display: flex; gap: 8px; justify-content: center; margin-top: 32px; list-style: none; padding: 0; }
.ld-pager a, .ld-pager span { min-width: 44px; height: 44px; padding: 0 10px; border-radius: var(--radius-pill); display: grid; place-items: center; border: 1.5px solid var(--line-100); font: 600 15px/1 var(--font-text); text-decoration: none; }
.ld-pager [aria-current] { background: var(--ink-100); color: var(--bg-100); border-color: var(--ink-100); }
.ld-empty { text-align: center; padding: 40px 24px; }
.ld-empty h2 { font-size: 24px; margin-bottom: 8px; }
.ld-empty p { color: var(--ink-200); margin-bottom: 16px; }

/* ---------- Mises en page à deux colonnes ---------- */
.ld-split { display: grid; gap: 32px; align-items: start; }
@media (min-width: 900px) { .ld-split { grid-template-columns: 1.25fr .75fr; gap: 40px; } .ld-split--even { grid-template-columns: 1.1fr .9fr; } }
.ld-sticky { position: sticky; top: calc(var(--header-h) + 20px); display: grid; gap: 16px; }
.ld-box { background: var(--bg-200); border: 1px solid var(--line-100); border-radius: var(--radius-l); padding: var(--space-5); }
@media (min-width: 900px) { .ld-box { padding: var(--space-6); } }
.ld-box h2, .ld-box h3 { font: 700 21px/1.25 var(--font-display); margin: 0 0 14px; }
.ld-aside-cta { background: var(--bg-inverse); color: var(--ink-inverse); border-radius: var(--radius-l); padding: 28px; display: grid; gap: 14px; }
.ld-aside-cta h2, .ld-aside-cta h3 { color: var(--ink-inverse); font-size: 24px; }
.ld-aside-cta p { opacity: .85; font-size: 15px; }
.ld-aside-cta .ld-btn--secondary { --_fg: var(--ink-inverse); --_bd: var(--ink-inverse); }
.ld-checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.ld-checklist li { display: grid; grid-template-columns: 28px 1fr; gap: 12px; line-height: 1.5; }
.ld-checklist li::before { content: "✓"; width: 28px; height: 28px; border-radius: 50%; background: var(--brand-100); color: var(--brand-700); display: grid; place-items: center; font: 800 14px/1 var(--font-text); }
.ld-facts div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line-100); font-size: 15px; }
.ld-facts dt { color: var(--ink-200); }
.ld-facts dd { margin: 0; font-weight: 600; text-align: right; }

/* ---------- Étude de cas ---------- */
.ld-cover { border-radius: var(--radius-xl); overflow: hidden; aspect-ratio: 16 / 7; background: var(--bg-300); }
.ld-cover img { width: 100%; height: 100%; object-fit: cover; }
.ld-cover--empty { background: radial-gradient(circle at 78% 35%, var(--brand-500) 0 17%, transparent 17.2%), radial-gradient(circle at 18% 120%, var(--brand-200) 0 40%, transparent 40.2%), var(--bg-300); }
.ld-kpis { display: grid; gap: 16px; }
@media (min-width: 640px) { .ld-kpis { grid-template-columns: repeat(3, 1fr); } }
.ld-kpis .ld-stat__value { font-size: 52px; }
.ld-story { display: grid; gap: 0; }
.ld-story section { display: grid; gap: 12px; padding: 28px 0; border-top: 1px solid var(--line-100); }
@media (min-width: 640px) { .ld-story section { grid-template-columns: 180px 1fr; gap: 24px; } }
.ld-story h2 { font: 800 16px/1.2 var(--font-display); display: flex; gap: 10px; align-items: center; letter-spacing: 0; }
.ld-story h2 i { width: 32px; height: 32px; border-radius: 50%; background: var(--brand-500); color: var(--on-brand); display: grid; place-items: center; font-style: normal; flex: none; }
.ld-rich { color: var(--ink-200); }
.ld-rich p + p, .ld-rich p + ul, .ld-rich ul + p { margin-top: 12px; }
.ld-rich ul { padding-left: 20px; margin: 0; }
.ld-rich li::marker { color: var(--brand-500); }

/* ---------- Article ---------- */
.ld-progress { position: fixed; left: 0; top: 0; height: 3px; width: 0; background: var(--brand-500); z-index: 60; }
.ld-article-head { max-width: 900px; }
.ld-article-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; font-size: 14px; color: var(--ink-200); }
.ld-author { display: flex; gap: 14px; align-items: center; margin-top: 22px; }
.ld-article { display: grid; gap: 32px; margin-top: var(--space-7); }
@media (min-width: 1100px) { .ld-article { grid-template-columns: 220px minmax(0, 1fr) 200px; gap: 48px; } }
.ld-toc { font-size: 14px; }
@media (min-width: 1100px) { .ld-toc { position: sticky; top: calc(var(--header-h) + 24px); align-self: start; } }
.ld-toc details { border: 1px solid var(--line-100); border-radius: 18px; background: var(--bg-200); padding: 14px 16px; }
@media (min-width: 1100px) { .ld-toc details { border: 0; background: none; padding: 0; } .ld-toc summary { pointer-events: none; } .ld-toc summary::-webkit-details-marker { display: none; } }
.ld-toc summary { font: 700 13px/1 var(--font-text); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-200); cursor: pointer; list-style: none; }
.ld-toc ol { list-style: none; margin: 12px 0 0; padding: 0; }
.ld-toc a { display: block; padding: 8px 0 8px 14px; border-left: 2px solid var(--line-100); color: var(--ink-200); text-decoration: none; }
.ld-toc a.is-active { border-color: var(--brand-500); color: var(--ink-100); font-weight: 600; }
.ld-prose { max-width: var(--measure); font-size: 18px; line-height: 1.75; }
.ld-prose h2 { font-size: clamp(24px, 2.4vw, 30px); margin: 40px 0 12px; scroll-margin-top: calc(var(--header-h) + 20px); }
.ld-prose h3 { font-size: 22px; margin: 28px 0 10px; }
.ld-prose p, .ld-prose ul, .ld-prose ol, .ld-prose blockquote { margin: 0 0 18px; }
.ld-prose ul, .ld-prose ol { padding-left: 22px; }
.ld-prose li { margin-bottom: 8px; }
.ld-prose li::marker { color: var(--brand-500); }
.ld-prose a { color: var(--brand-700); text-decoration: underline; text-underline-offset: 3px; font-weight: 600; }
.ld-prose blockquote { border-radius: 22px; background: var(--accent-100); padding: 20px 22px; font-size: 16px; }
.ld-prose img { border-radius: var(--radius-l); }
.ld-inline-cta { border-radius: var(--radius-l); background: var(--brand-500); color: var(--on-brand); padding: 28px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; margin: 36px 0; }
.ld-inline-cta h2 { font-size: 22px; color: var(--on-brand); margin: 0; }
.ld-inline-cta p { font-size: 15px; margin: 4px 0 0; }
.ld-share { display: grid; gap: 10px; align-content: start; }
@media (min-width: 1100px) { .ld-share { position: sticky; top: calc(var(--header-h) + 24px); } }
.ld-share > span { font: 700 13px/1 var(--font-text); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-200); }
.ld-share div { display: flex; gap: 8px; }

/* ---------- Contact ---------- */
.ld-channels { display: grid; gap: 12px; }
@media (min-width: 900px) { .ld-channels { grid-template-columns: repeat(3, 1fr); gap: 16px; } }
.ld-channel { display: flex; align-items: center; gap: 16px; text-decoration: none; }
.ld-channel b { font: 700 18px/1.2 var(--font-display); display: block; overflow-wrap: anywhere; }
.ld-channel b + span { display: block; font-size: 14px; color: var(--ink-200); }
.ld-form { display: grid; gap: 18px 20px; }
@media (min-width: 640px) { .ld-form { grid-template-columns: 1fr 1fr; } .ld-form .ld-field--full, .ld-form .ld-check, .ld-form .ld-form__submit, .ld-form .ld-alert { grid-column: 1 / -1; } }
.ld-form__submit { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.ld-choice { display: flex; flex-wrap: wrap; gap: 8px; }
.ld-choice input { position: absolute; opacity: 0; pointer-events: none; }
.ld-choice label { min-height: 44px; padding: 10px 16px; border-radius: var(--radius-pill); border: 1.5px solid var(--line-200); font: 600 14px/1.5 var(--font-text); cursor: pointer; }
.ld-choice input:checked + label { background: var(--ink-100); color: var(--bg-100); border-color: var(--ink-100); }
.ld-choice input:focus-visible + label { outline: 2px solid var(--focus); outline-offset: 2px; }
.ld-map { position: relative; height: 340px; border-radius: var(--radius-l); background: var(--bg-300); overflow: hidden; }
.ld-map iframe { width: 100%; height: 100%; border: 0; display: block; }
.ld-map__placeholder { height: 100%; display: grid; place-content: center; justify-items: center; gap: 10px; text-align: center; padding: 24px; }

/* ---------- Pages légales ---------- */
.ld-legal { display: grid; gap: 32px; }
@media (min-width: 900px) { .ld-legal { grid-template-columns: 240px 1fr; gap: 48px; } }
.ld-legal .ld-prose { font-size: 16px; line-height: 1.7; }
.ld-legal .ld-prose h2 { font-size: 22px; margin-top: 28px; }
.ld-todo { background: var(--brand-100); color: var(--brand-700); border-radius: 6px; padding: 1px 6px; font-weight: 600; }

/* ---------- Bandeau cookies (position) ---------- */
.ld-cookie-wrap { position: fixed; z-index: 70; left: 16px; right: 16px; bottom: calc(84px + env(safe-area-inset-bottom)); }
@media (min-width: 761px) { .ld-cookie-wrap { right: auto; bottom: 24px; left: 24px; } }
.ld-cookie-wrap[hidden] { display: none; }

/* ---------- Messages flash ---------- */
.ld-flashes { display: grid; gap: 10px; margin-top: 16px; }

/* ---------- Connexion ---------- */
.ld-login { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.ld-login .ld-box { width: 100%; max-width: 420px; display: grid; gap: 18px; }

/* ---------- À propos ---------- */
.ld-about { display: grid; gap: 32px; align-items: center; }
@media (min-width: 900px) { .ld-about { grid-template-columns: .8fr 1.2fr; gap: 56px; } }
.ld-about__portrait { position: relative; aspect-ratio: 1; max-width: 460px; width: 100%; border-radius: 50%; background: var(--brand-500); overflow: hidden; }
.ld-about__portrait { display: flex; align-items: flex-end; justify-content: center; padding: 6% 6% 0; }
.ld-about__portrait .ld-portrait { height: 100%; }
.ld-about__quote { font: 700 clamp(24px, 3vw, 34px)/1.25 var(--font-display); letter-spacing: -0.02em; margin-top: 16px; }
.ld-about__num { width: 44px; height: 44px; border-radius: 50%; background: var(--brand-500); color: var(--on-brand); display: grid; place-items: center; font: 800 15px/1 var(--font-display); }
.ld-timeline { list-style: none; margin: 0; padding: 0 0 0 40px; position: relative; }
.ld-timeline::before { content: ""; position: absolute; left: 14px; top: 10px; bottom: 10px; width: 2px; background: var(--line-100); }
.ld-timeline li { position: relative; display: grid; gap: 6px; padding: 20px 0; border-bottom: 1px solid var(--line-100); }
@media (min-width: 640px) { .ld-timeline li { grid-template-columns: 150px 1fr; gap: 24px; } }
.ld-timeline li::before { content: ""; position: absolute; left: -33px; top: 26px; width: 16px; height: 16px; border-radius: 50%; background: var(--bg-100); box-shadow: inset 0 0 0 3px var(--brand-500); }
.ld-timeline li.is-now::before { background: var(--brand-500); }
.ld-timeline__year { font: 800 22px/1.2 var(--font-display); color: var(--brand-700); }
.ld-timeline h3 { font: 700 19px/1.3 var(--font-display); }
.ld-timeline p { font-size: 15px; color: var(--ink-200); margin-top: 4px; }

/* ---------- Blog : article à la une ---------- */
.ld-featured-post { padding: 0; overflow: hidden; margin-bottom: 16px; }
.ld-featured-post .ld-card__media { margin: 0; border-radius: 0; }
.ld-featured-post__body { padding: var(--space-5); display: flex; flex-direction: column; gap: 14px; }
.ld-featured-post .ld-card__title { font-size: clamp(24px, 2.6vw, 32px); line-height: 1.1; }
@media (min-width: 900px) { .ld-featured-post { display: grid; grid-template-columns: 1.1fr .9fr; } .ld-featured-post .ld-card__media { aspect-ratio: auto; min-height: 320px; } .ld-featured-post__body { padding: 36px; } }

/* ---------- Ajustements mobile de l'en-tête ---------- */
@media (max-width: 760px) {
    .ld-header .ld-theme-toggle { display: none; }
    .ld-header .ld-brand small { display: none; }
}

/* ---------- Correctifs de contexte ---------- */
.ld-prose a.ld-btn { color: var(--_fg); text-decoration: none; font-weight: 650; }
.ld-aside-cta .ld-overline { color: inherit; opacity: .85; }
.ld-aside-cta .ld-overline::before { background: var(--brand-500); }
.ld-card.ld-channel { flex-direction: row; }

/* Lot 1 : retours de la comparaison aux maquettes */
.ld-channel .ld-offer__icon { flex: none; }
.ld-card .ld-badge--example { white-space: nowrap; }
.ld-article__meta time + span::before { content: "·"; margin-right: 14px; }
