/* corporate.fmnano.com — feuille unique, sans ressource externe.
   Autre expérience que fmnano.com : sobre, institutionnelle, titres en romain (polices du système).
   Clair ET sombre (prefers-color-scheme) : toutes les couleurs sont des variables sur :root,
   redéfinies en sombre — schémas SVG compris (ils se colorent par classes, jamais par fill="#…").
   Propriétés logiques partout (inline/block) : une langue de droite à gauche (arabe, plus tard) se met en
   miroir sans règle à part, sauf les schémas SVG (voir README).
   CSP du serveur : default-src 'self' — ni attribut style="", ni <style> en ligne, ni data:, ni police distante. */

:root {
  color-scheme: light dark;
  --paper: #f6f5f1;
  --surface: #ffffff;
  --ink: #0d1b2a;
  --muted: #4a5866;
  --line: #d9dcd8;
  --rule: #0d1b2a;
  --accent: #1d67bd;
  --accent-ink: #ffffff;
  --accent-soft: #e8f0fb;
  --mark: #1d70cc;
  --live: #0f6b44;
  --live-bg: #e2f3ea;
  --building: #7a4d00;
  --building-bg: #fbf0d6;
  --planned: #3d4a57;
  --planned-bg: #e9ecef;
  --navy: #123a5a;
  --cobalt: #2c76cc;
  --cyan: #71c9e8;
  --warm: #eeae49;
  --hero-glow: #d7e9ff;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  --wrap: 72rem;
  --measure: 44rem;
}

@media (prefers-color-scheme: dark) {
  :root {
    --paper: #0e151d;
    --surface: #151f2a;
    --ink: #e7ecf1;
    --muted: #a3b1bf;
    --line: #2a3846;
    --rule: #e7ecf1;
    --accent: #6ea8ff;
    --accent-ink: #0b1622;
    --accent-soft: #17283d;
    --mark: #2f7fe6;
    --live: #7fd6a8;
    --live-bg: #12301f;
    --building: #f0c46b;
    --building-bg: #33270e;
    --planned: #c3ccd5;
    --planned-bg: #243140;
    --navy: #102a40;
    --cobalt: #73a9e8;
    --cyan: #65c5e8;
    --warm: #f3c56f;
    --hero-glow: #142b46;
  }
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  overflow-wrap: break-word;
}

/* Arabe (à venir) : pile de polices système adaptée, pas de romain pour les titres. */
html[lang="ar"] body { font-family: system-ui, "Segoe UI", Tahoma, "Noto Sans Arabic", "Noto Naskh Arabic", "Geeza Pro", Arial, sans-serif; line-height: 1.85; }
html[lang="ar"] h1, html[lang="ar"] h2, html[lang="ar"] h3 { font-family: inherit; }

a { color: var(--accent); text-underline-offset: 0.18em; }
a:hover { text-decoration-thickness: 2px; }
a:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

h1, h2, h3 { font-family: var(--serif); font-weight: 600; line-height: 1.2; margin: 0 0 0.6em; }
h1 { font-size: clamp(2rem, 1.3rem + 3.2vw, 3.3rem); letter-spacing: -0.01em; }
h2 { font-size: clamp(1.5rem, 1.2rem + 1.3vw, 2.05rem); }
h3 { font-size: 1.22rem; }
p, ul, ol, dl { margin: 0 0 1em; }

.wrap { max-width: var(--wrap); margin-inline: auto; padding-inline: 1rem; }
@media (min-width: 48rem) { .wrap { padding-inline: 2rem; } }

.skip { position: absolute; inset-inline-start: -999rem; }
.skip:focus { inset-inline-start: 1rem; inset-block-start: 1rem; z-index: 10; background: var(--surface); padding: 0.5rem 0.8rem; }

.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* En-tête */
.site-header { border-block-end: 1px solid var(--line); background: var(--paper); }
.head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1.5rem; padding-block: 0.9rem; }
.brand { display: inline-flex; align-items: center; gap: 0.7rem; text-decoration: none; color: var(--ink); }
.brand-sub { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--muted); border-inline-start: 1px solid var(--line); padding-inline-start: 0.7rem; }
.logo { display: block; width: 108px; height: 32px; }
.logo-mark { fill: var(--mark); }
.logo-fm { fill: #ffffff; font-family: var(--sans); }
.logo-name { fill: var(--ink); font-family: var(--sans); }

.langs { margin-inline-start: auto; order: 1; }
.langs ul, .main-nav ul, .site-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.langs ul { gap: 0.2rem; }
.langs a { display: inline-block; padding: 0.15rem 0.5rem; font-size: 0.85rem; font-weight: 600; letter-spacing: 0.06em; text-decoration: none; color: var(--muted); border: 1px solid transparent; border-radius: 3px; }
.langs a[aria-current] { color: var(--ink); border-color: var(--line); }

.main-nav { flex-basis: 100%; order: 2; }
.main-nav ul { gap: 0.1rem 1.2rem; }
.main-nav a { display: inline-block; padding-block: 0.3rem; font-size: 0.95rem; color: var(--ink); text-decoration: none; border-block-end: 2px solid transparent; }
.main-nav a:hover { border-block-end-color: var(--line); }
.main-nav a[aria-current] { border-block-end-color: var(--accent); font-weight: 600; }
@media (min-width: 64rem) {
  .main-nav { flex-basis: auto; order: 2; }
  .langs { order: 3; margin-inline-start: 0; }
  .brand { margin-inline-end: auto; }
}

/* Bandeau des pages */
.hero { padding-block: 3rem 2.5rem; border-block-end: 1px solid var(--line); }
@media (min-width: 48rem) { .hero { padding-block: 5rem 4rem; } }
.hero h1 { max-width: 22em; }
.eyebrow { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.16em; color: var(--muted); margin-block-end: 1.2rem; }
.lead { font-size: 1.2rem; color: var(--muted); max-width: var(--measure); }
.actions { display: flex; flex-wrap: wrap; gap: 0.8rem 1.4rem; align-items: center; margin-block-start: 1.6rem; }
.btn { display: inline-block; background: var(--accent); color: var(--accent-ink); padding: 0.7rem 1.2rem; border-radius: 3px; font-weight: 600; text-decoration: none; }
.btn:hover { filter: brightness(1.08); }
.btn-quiet { font-weight: 600; }

/* Accueil éditorial : vision, distribution, usages, preuve. */
.home-main { overflow: hidden; }
.home-hero { position: relative; padding-block: clamp(4rem, 7vw, 6rem); background: var(--navy); color: #f6f9fd; }
.home-hero::before { content: ""; position: absolute; inline-size: 34rem; block-size: 34rem; inset-inline-end: -10rem; inset-block-start: -14rem; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--cobalt) 55%, transparent), transparent 68%); opacity: 0.75; pointer-events: none; }
.hero-grid { position: relative; display: grid; gap: 3rem 5rem; align-items: end; }
.home-hero h1 { max-width: 12em; font-size: clamp(3.1rem, 2rem + 5vw, 6rem); line-height: 0.98; letter-spacing: -0.045em; }
.home-hero .eyebrow { color: var(--cyan); font-weight: 700; }
.home-hero .lead { color: #c5d4e5; max-width: 49rem; font-size: clamp(1.12rem, 1rem + 0.5vw, 1.35rem); }
.home-hero .btn-quiet { color: #f6f9fd; }
.hero-thesis { border-block-start: 1px solid #48617a; padding-block-start: 1.2rem; display: grid; gap: 0.25rem; color: #c5d4e5; }
.hero-thesis strong { font-family: var(--serif); font-size: clamp(2rem, 1.4rem + 2vw, 3.25rem); line-height: 1.05; color: #ffffff; }
.thesis-kicker { color: var(--cyan); text-transform: uppercase; letter-spacing: 0.13em; font-size: 0.76rem; font-weight: 700; }
.assistant-row { display: flex; align-items: center; gap: 0.55rem; margin-block-start: 1.5rem; }
.assistant-row i { inline-size: 1.65rem; block-size: 1.65rem; border: 1px solid #7190ad; border-radius: 50%; }
.assistant-row i:nth-child(2) { border-radius: 35% 65% 65% 35%; }
.assistant-row i:nth-child(3) { border-radius: 3px; transform: rotate(45deg); inline-size: 1.3rem; block-size: 1.3rem; }
.assistant-row b { color: var(--cyan); padding-inline: 0.35rem; }
.assistant-row em { font-style: normal; color: #fff; font-weight: 700; border: 1px solid var(--cyan); border-radius: 999px; padding: 0.2rem 0.7rem; }
@media (min-width: 62rem) { .hero-grid { grid-template-columns: minmax(0, 2.15fr) minmax(18rem, 0.85fr); } }

.section-index { margin-block-end: 1rem; color: var(--accent); font-size: 0.76rem; line-height: 1.3; font-weight: 750; text-transform: uppercase; letter-spacing: 0.15em; }
.editorial-grid { display: grid; gap: 1rem 4rem; }
.editorial-grid h2, .section-head-wide h2, .local-intro h2, .proof-grid h2 { font-size: clamp(2.15rem, 1.4rem + 3vw, 4.2rem); line-height: 1.03; letter-spacing: -0.03em; }
.statement { font-family: var(--serif); font-size: clamp(1.35rem, 1.1rem + 1vw, 2rem); line-height: 1.35; color: var(--ink); }
.pull-quote { margin-block: 2.5rem 0; padding-block-start: 1.5rem; border-block-start: 1px solid var(--line); font-family: var(--serif); font-size: clamp(1.65rem, 1.2rem + 2vw, 3rem); line-height: 1.2; color: var(--muted); }
.pull-quote strong { color: var(--accent); }
@media (min-width: 62rem) { .editorial-grid { grid-template-columns: 12rem minmax(0, 45rem); justify-content: space-between; } }

.section-head-wide { max-width: 55rem; margin-block-end: clamp(2.5rem, 6vw, 5rem); }
.distribution-section { background: var(--surface); }
.service-flow { list-style: none; margin: 0; padding: 0; display: grid; border-block: 1px solid var(--line); }
.service-flow li { position: relative; min-height: 11rem; padding: 1.4rem 1.2rem 1.1rem; border-block-end: 1px solid var(--line); display: flex; flex-direction: column; }
.service-flow li:last-child { border-block-end: 0; }
.service-flow span { color: var(--accent); font-size: 0.75rem; font-weight: 750; letter-spacing: 0.12em; }
.service-flow strong { margin-block: auto 0.45rem; font-family: var(--serif); font-size: 1.45rem; }
.service-flow small { color: var(--muted); line-height: 1.45; }
.flow-caption { max-width: 50rem; color: var(--muted); margin-block: 1.25rem 0; }
@media (min-width: 48rem) {
  .service-flow { grid-template-columns: repeat(4, 1fr); }
  .service-flow li { border-block-end: 0; border-inline-end: 1px solid var(--line); }
  .service-flow li:last-child { border-inline-end: 0; }
  .service-flow li:not(:last-child)::after { content: "→"; position: absolute; z-index: 1; inset-inline-end: -0.68rem; inset-block-start: 50%; transform: translateY(-50%); inline-size: 1.35rem; block-size: 1.35rem; display: grid; place-items: center; background: var(--surface); color: var(--accent); }
}

.scenarios-section { background: var(--paper); }
.scenario-grid { display: grid; gap: 1rem; }
.scenario { position: relative; min-height: 22rem; padding: clamp(1.4rem, 3vw, 2.1rem); overflow: hidden; display: flex; flex-direction: column; background: var(--navy); color: #f7f9fc; border-radius: 4px; }
.scenario::after { content: ""; position: absolute; inline-size: 12rem; block-size: 12rem; inset-inline-end: -4rem; inset-block-end: -4rem; border: 1px solid #51718f; border-radius: 50%; }
.scenario-insurance { background: #123e68; }
.scenario-obligations { background: #174c49; }
.scenario h3 { max-width: 16em; font-size: clamp(1.65rem, 1.3rem + 1.3vw, 2.45rem); line-height: 1.08; }
.scenario p:not(.scenario-label) { max-width: 31rem; color: #d6e0ea; }
.scenario-label { color: var(--cyan); font-size: 0.74rem; font-weight: 750; text-transform: uppercase; letter-spacing: 0.13em; }
.scenario-outcome { margin-block-start: auto; padding-block-start: 2rem; color: #ffffff; font-size: 0.8rem; font-weight: 700; letter-spacing: 0.04em; }
.section-link { margin-block: 1.6rem 0; font-weight: 700; }
@media (min-width: 64rem) { .scenario-grid { grid-template-columns: 1.2fr 0.9fr 0.9fr; } }

.product-section { background: var(--navy); color: #f5f8fc; }
.product-grid { display: grid; gap: 3rem 5rem; }
.product-section .section-index { color: var(--cyan); }
.product-section .lead { color: #b9cada; }
.product-list { border-block-start: 1px solid #415b74; }
.product-list article { padding-block: 1.5rem 1.2rem; border-block-end: 1px solid #415b74; }
.product-list article span { display: inline-block; color: var(--cyan); text-transform: uppercase; font-size: 0.7rem; font-weight: 750; letter-spacing: 0.12em; }
.product-list h3 { margin-block: 0.4rem 0.25rem; font-size: 1.65rem; }
.product-list p { color: #b9cada; margin: 0; }
.product-list .product-next span { color: var(--warm); }
@media (min-width: 62rem) { .product-grid { grid-template-columns: 1fr 1fr; } }

.control-grid { display: grid; gap: 0; margin-block: 2.5rem; border-block: 1px solid var(--line); }
.control-grid div { padding-block: 1.25rem; border-block-end: 1px solid var(--line); }
.control-grid div:last-child { border: 0; }
.control-grid strong { color: var(--accent); }
.control-grid p { margin: 0.35rem 0 0; }
@media (min-width: 48rem) { .control-grid { grid-template-columns: repeat(3, 1fr); } .control-grid div { padding: 1.25rem; border-block-end: 0; border-inline-end: 1px solid var(--line); } }

.local-section { background: var(--accent-soft); }
.local-intro { max-width: 52rem; }
.local-strip { display: grid; gap: 0; margin-block: 3rem 0; border-block: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line)); }
.local-strip div { padding-block: 1.25rem; border-block-end: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line)); }
.local-strip div:last-child { border: 0; }
.local-strip dt { font-family: var(--serif); font-weight: 700; font-size: 1.3rem; }
.local-strip dd { margin: 0.25rem 0 0; color: var(--muted); }
@media (min-width: 50rem) { .local-strip { grid-template-columns: repeat(4, 1fr); } .local-strip div { padding-inline: 1.1rem; border-block-end: 0; border-inline-end: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line)); } }

.pilot-section { background: var(--surface); }
.pilot-path { display: grid; gap: 1rem; }
.pilot-step { position: relative; min-height: 10rem; padding: 1.35rem; background: var(--paper); border: 1px solid var(--line); display: flex; flex-direction: column; }
.pilot-step span { color: var(--muted); text-transform: uppercase; font-size: 0.72rem; font-weight: 750; letter-spacing: 0.12em; }
.pilot-step strong { margin-block: auto 0; font-family: var(--serif); font-size: 1.35rem; line-height: 1.25; }
.pilot-start { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.pilot-start span { color: var(--accent-ink); opacity: 0.8; }
@media (min-width: 52rem) { .pilot-path { grid-template-columns: 0.75fr 1.35fr 0.9fr; } .pilot-step:not(:last-child)::after { content: "→"; position: absolute; inset-inline-end: -1.12rem; inset-block-start: calc(50% - 1rem); z-index: 1; inline-size: 2rem; block-size: 2rem; display: grid; place-items: center; border-radius: 50%; color: var(--accent); background: var(--surface); border: 1px solid var(--line); } }

.proof-section { background: var(--paper); }
.proof-grid { display: grid; gap: 3rem 5rem; }
.proof-facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin: 0; }
.proof-facts div { border-block-start: 2px solid var(--ink); padding-block-start: 0.75rem; }
.proof-facts dt { font-family: var(--serif); font-size: 2.7rem; font-weight: 700; line-height: 1; }
.proof-facts dd { margin: 0.45rem 0 0; color: var(--muted); font-size: 0.92rem; }
@media (min-width: 62rem) { .proof-grid { grid-template-columns: 1.1fr 0.9fr; align-items: end; } }

.section.home-cta { padding-block: clamp(4rem, 8vw, 7rem); background: var(--navy); color: #f5f8fc; }
.cta-grid { display: grid; gap: 2rem 5rem; }
.home-cta .eyebrow { color: var(--cyan); }
.home-cta h2 { font-size: clamp(2rem, 1.4rem + 2.8vw, 4rem); line-height: 1.05; }
.home-cta p { color: #c5d4e5; }
@media (min-width: 62rem) { .cta-grid { grid-template-columns: 1.2fr 0.8fr; align-items: end; } }

/* Sections */
.section { padding-block: 3rem; border-block-end: 1px solid var(--line); }
@media (min-width: 48rem) { .section { padding-block: 4.5rem; } }
.section:last-child { border-block-end: 0; }
.section-head { max-width: var(--measure); margin-block-end: 2rem; }
.section-head p { color: var(--muted); }
.prose { max-width: var(--measure); }
/* Sur un conteneur .wrap, la colonne de lecture reste alignée sur le reste de la page (pas centrée). */
.wrap.prose, .wrap.cta-inner { max-width: var(--wrap); }
.wrap.prose > *, .wrap.cta-inner > * { max-width: var(--measure); }
.prose li { margin-block-end: 0.35em; }
.note { font-size: 0.92rem; color: var(--muted); }

/* Les cinq piliers : liste numérotée, filet en tête de chaque colonne */
.pillars { list-style: none; padding: 0; margin: 0; display: grid; gap: 2rem 1.8rem; grid-template-columns: repeat(auto-fit, minmax(11.5rem, 1fr)); counter-reset: pillar; }
.pillars > li { counter-increment: pillar; border-block-start: 2px solid var(--rule); padding-block-start: 1rem; }
.pillars > li::before { content: counter(pillar, decimal-leading-zero); display: block; font-family: var(--serif); font-size: 0.95rem; color: var(--muted); margin-block-end: 0.4rem; }
.pillars p { margin-block-end: 0.6em; }

/* Cartes (types de partenaires, modes) */
.cards { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }
.card { background: var(--surface); border: 1px solid var(--line); border-radius: 4px; padding: 1.4rem 1.4rem 1rem; }
.card h3 { margin-block-end: 0.5em; }
.card dl { margin: 0; }
.card dt { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.12em; color: var(--muted); margin-block-start: 0.8rem; }
.card dd { margin: 0.15rem 0 0; }

/* Chiffres de capacité */
.figures { display: grid; gap: 1.5rem 2rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin: 0; }
@media (min-width: 64rem) { .figures { grid-template-columns: repeat(3, 1fr); } }
.figures > div { border-block-start: 1px solid var(--line); padding-block-start: 0.9rem; }
.figures dt { font-family: var(--serif); font-size: 2.4rem; line-height: 1.1; font-weight: 600; }
.figures dd { margin: 0.4rem 0 0; color: var(--muted); }
.figures dd strong { color: var(--ink); font-weight: 600; }

/* Étapes du déploiement */
.phases { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); counter-reset: phase; }
.phases > li { counter-increment: phase; background: var(--surface); border: 1px solid var(--line); border-block-start: 4px solid var(--accent); border-radius: 4px; padding: 1.3rem 1.4rem 1rem; }
.phases > li::before { content: counter(phase); display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-weight: 700; margin-block-end: 0.6rem; }
.phase-scale { font-family: var(--serif); font-size: 1.6rem; font-weight: 600; margin: 0 0 0.3rem; }
.phases h3 { font-family: var(--sans); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.12em; color: var(--muted); margin: 0.9rem 0 0.3rem; }
.phases ul { padding-inline-start: 1.1rem; margin-block-end: 0.4rem; }

/* Tableaux : défilement interne sur téléphone, jamais la page */
.table-scroll { overflow-x: auto; margin-block-end: 1.2rem; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); }
table { border-collapse: collapse; width: 100%; font-size: 0.97rem; }
caption { text-align: start; font-weight: 600; padding: 0.8rem 1rem 0.2rem; }
th, td { text-align: start; vertical-align: top; padding: 0.65rem 1rem; border-block-end: 1px solid var(--line); }
tbody tr:last-child th, tbody tr:last-child td { border-block-end: 0; }
thead th { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); font-weight: 600; }
tbody th { font-weight: 600; }
.nowrap { white-space: nowrap; }

/* État d'une affirmation : en place, en cours, prévu */
.status { display: inline-block; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; padding: 0.1rem 0.55rem; border-radius: 999px; white-space: nowrap; }
.is-live { color: var(--live); background: var(--live-bg); }
.is-building { color: var(--building); background: var(--building-bg); }
.is-planned { color: var(--planned); background: var(--planned-bg); }
.legend { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.2rem; font-size: 0.92rem; color: var(--muted); }

/* Blocs d'affirmations de la page Sécurité */
.claims { display: grid; gap: 1.2rem; }
.claim { min-width: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 4px; padding: 1.3rem 1.4rem 0.6rem; }
.claim-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.3rem 1rem; }
.claim-head h3 { margin: 0 0 0.5rem; }
.claim ul { padding-inline-start: 1.1rem; }
.limit { border-inline-start: 3px solid var(--building); padding-inline-start: 0.9rem; color: var(--muted); font-size: 0.95rem; }

/* Trois cercles */
.circles { list-style: none; padding: 0; margin: 0 0 1.2rem; display: grid; gap: 0.8rem; }
.circles > li { display: grid; grid-template-columns: 2.6rem 1fr; gap: 0 1rem; align-items: start; background: var(--surface); border: 1px solid var(--line); border-radius: 4px; padding: 1rem 1.2rem 0.4rem; }
.circle-num { display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; border: 2px solid var(--accent); color: var(--accent); font-weight: 700; }
.circles > li.circle-3 .circle-num { border-style: dashed; border-color: var(--muted); color: var(--muted); }
.circles h3 { margin-block: 0.35rem 0.4rem; }

/* Listes de définitions (architecture, mentions) */
.defs dt { font-weight: 700; margin-block-start: 1.1rem; }
.defs dd { margin: 0.2rem 0 0; }
.facts { display: grid; grid-template-columns: minmax(8rem, 14rem) 1fr; gap: 0.5rem 1.2rem; }
.facts dt { color: var(--muted); }
.facts dd { margin: 0; }
@media (max-width: 36rem) { .facts { grid-template-columns: 1fr; } .facts dd { margin-block-end: 0.6rem; } }

/* Schémas SVG — colorés par classes, donc lisibles en clair comme en sombre */
.diagram { margin: 0 0 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 4px; padding: 1.2rem 1rem 1rem; }
.diagram svg { display: block; width: 100%; height: auto; font-family: var(--sans); }
.diagram figcaption { color: var(--muted); font-size: 0.95rem; margin-block-start: 0.8rem; max-width: var(--measure); }
.diagram .diagram-narrow { display: none; }
@media (max-width: 40rem) {
  .diagram .diagram-wide { display: none; }
  .diagram .diagram-narrow { display: block; max-width: 24rem; margin-inline: auto; }
}
.diagram-arch svg { max-width: 30rem; margin-inline: auto; }
.d-box { fill: var(--paper); stroke: var(--line); stroke-width: 1.5; }
.d-box-strong { fill: var(--accent-soft); stroke: var(--accent); stroke-width: 2; }
.d-box-quiet { fill: var(--surface); stroke: var(--muted); stroke-width: 1.2; stroke-dasharray: 5 4; }
.d-title { fill: var(--ink); font-size: 17px; font-weight: 700; }
.d-text { fill: var(--muted); font-size: 13px; }
.d-label { fill: var(--muted); font-size: 12px; }
.d-label-strong { fill: var(--accent); font-size: 12px; font-weight: 600; }
.d-line { stroke: var(--muted); stroke-width: 1.6; fill: none; }
.d-line-accent { stroke: var(--accent); stroke-width: 1.6; fill: none; stroke-dasharray: 6 4; }
.d-head { fill: var(--muted); }
.d-head-accent { fill: var(--accent); }
.d-wall { stroke: var(--ink); stroke-width: 1.5; stroke-dasharray: 8 5; }

/* Appel au contact */
.cta { background: var(--surface); }
.cta-inner { max-width: var(--measure); }
.mail { font-family: var(--serif); font-size: clamp(1.4rem, 1.1rem + 1.5vw, 2rem); font-weight: 600; }
.subjects { list-style: none; padding: 0; display: grid; gap: 0.6rem; }
.subjects a { font-weight: 600; }

/* Pied de page */
.site-footer { border-block-start: 1px solid var(--line); padding-block: 2rem 2.5rem; font-size: 0.92rem; color: var(--muted); }
.site-footer ul { gap: 0.4rem 1.3rem; margin-block-end: 1rem; }
.site-footer a { color: var(--ink); }
.site-footer a[aria-current] { font-weight: 700; }
.site-footer p { margin: 0.3rem 0; }

/* Système éditorial commun aux pages institutionnelles. */
main:not(.home-main) .hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(4.5rem, 8vw, 7rem);
  background: var(--accent-soft);
}
main:not(.home-main) .hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  inline-size: 30rem;
  block-size: 30rem;
  inset-inline-end: -10rem;
  inset-block-start: -17rem;
  border: 1px solid color-mix(in srgb, var(--accent) 24%, transparent);
  border-radius: 50%;
  box-shadow: 0 0 0 4.5rem color-mix(in srgb, var(--accent) 4%, transparent), 0 0 0 9rem color-mix(in srgb, var(--accent) 3%, transparent);
}
main:not(.home-main) .hero h1 {
  max-width: 18em;
  font-size: clamp(2.75rem, 1.8rem + 3.5vw, 5.2rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
}
main:not(.home-main) .hero .eyebrow { color: var(--accent); font-weight: 750; }
main:not(.home-main) .hero .lead { max-width: 49rem; font-size: clamp(1.12rem, 1rem + 0.45vw, 1.32rem); }
main:not(.home-main) > .section { padding-block: clamp(4rem, 7vw, 6rem); }
main:not(.home-main) > .section:nth-of-type(3n) { background: var(--surface); }

main:not(.home-main) .section-head {
  max-width: none;
  margin-block-end: clamp(2.2rem, 5vw, 4.5rem);
  padding-block-start: 1rem;
  border-block-start: 2px solid var(--ink);
}
main:not(.home-main) .section-head h2,
main:not(.home-main) .wrap.prose > h2 {
  font-size: clamp(2rem, 1.5rem + 1.8vw, 3.15rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
}
main:not(.home-main) .section-head p { max-width: 38rem; font-size: 1.08rem; }

main:not(.home-main) .wrap.prose {
  max-width: var(--wrap);
  padding-block-start: 1rem;
  border-block-start: 2px solid var(--ink);
}
main:not(.home-main) .wrap.prose > * { max-width: var(--measure); }

main:not(.home-main) .cards { gap: 1.1rem; align-items: stretch; }
main:not(.home-main) .card {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 1.65rem 1.65rem 1.3rem;
  border-radius: 8px;
  border-block-start: 3px solid var(--accent);
  box-shadow: 0 0.5rem 1.8rem color-mix(in srgb, var(--ink) 5%, transparent);
}
main:not(.home-main) .card h3 { font-size: 1.35rem; }
main:not(.home-main) .card dt { color: var(--accent); font-weight: 750; }
main:not(.home-main) .card dd + dt { margin-block-start: 1.15rem; }

main:not(.home-main) .phases { align-items: stretch; }
main:not(.home-main) .phases > li { border-radius: 8px; padding: 1.6rem; box-shadow: 0 0.5rem 1.8rem color-mix(in srgb, var(--ink) 5%, transparent); }
main:not(.home-main) .table-scroll { border-radius: 8px; box-shadow: 0 0.5rem 1.8rem color-mix(in srgb, var(--ink) 4%, transparent); }
main:not(.home-main) thead { background: var(--accent-soft); }
main:not(.home-main) .claims { grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); }
main:not(.home-main) .claim { border-radius: 8px; padding: 1.55rem 1.6rem 0.8rem; }
main:not(.home-main) .circles { gap: 1rem; }
main:not(.home-main) .circles > li { border-radius: 8px; padding: 1.35rem 1.4rem 0.75rem; }
main:not(.home-main) .diagram { border-radius: 8px; padding: clamp(1rem, 3vw, 2rem); }

main:not(.home-main) .section.cta {
  background: var(--navy);
  color: #f5f8fc;
  border-block-end: 0;
}
main:not(.home-main) .section.cta h2 { font-size: clamp(2rem, 1.45rem + 2vw, 3.4rem); }
main:not(.home-main) .section.cta .lead,
main:not(.home-main) .section.cta p { color: #d1deea; }
main:not(.home-main) .section.cta .btn { background: #f5f8fc; color: var(--navy); }

@media (min-width: 62rem) {
  main:not(.home-main) .section-head {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(20rem, 0.75fr);
    gap: 2rem 5rem;
    align-items: start;
  }
  main:not(.home-main) .section-head > h2 { grid-column: 1; }
  main:not(.home-main) .section-head > p { grid-column: 2; grid-row: 1; padding-block-start: 0.35rem; }
  main:not(.home-main) .wrap.prose:has(> h2:only-of-type) {
    display: grid;
    grid-template-columns: minmax(18rem, 0.8fr) minmax(0, 1.2fr);
    gap: 0 5rem;
  }
  main:not(.home-main) .wrap.prose:has(> h2:only-of-type) > h2 { grid-column: 1; grid-row: 1 / span 20; }
  main:not(.home-main) .wrap.prose:has(> h2:only-of-type) > :not(h2) { grid-column: 2; }
}

@media (max-width: 40rem) {
  main:not(.home-main) .hero { padding-block: 3.8rem 3.4rem; }
  main:not(.home-main) .hero::after { inline-size: 18rem; block-size: 18rem; inset-inline-end: -9rem; inset-block-start: -10rem; }
  main:not(.home-main) .hero h1 { font-size: clamp(2.45rem, 12vw, 3.5rem); }
  main:not(.home-main) .claims { grid-template-columns: 1fr; }
}
