/* TDomeza · maquette v4
   Anthracite du logo + vert Wouri. Montserrat pour les titres, Source Sans 3 pour le texte.
   Une mise en page éditoriale : photos qui touchent le bord, rapport de mission comme objet
   central, services présentés en triptyque. Trois largeurs dessinées : 1440, 820, 390. */

:root {
  --bg: #FBFBFA;
  --bg-2: #F2F3F1;
  --paper: #FFFFFF;
  --ink: #202224;
  --logo: #2E3032;
  --muted: #5F6468;
  --line: #DADDDB;
  --line-strong: #B9BEBB;
  --accent: #0F5E5A;
  --accent-deep: #0A403D;
  --accent-ink: #FFFFFF;
  --accent-soft: #E3EEEC;
  --deep: #1F2123;
  --deep-2: #2E3032;
  --on-deep: #F4F5F3;
  --on-deep-muted: #AEB4B2;
  --on-deep-line: rgba(255,255,255,.14);
  --ok: #1F7A4D;
  --alert: #B4651A;
  --shadow: 0 30px 60px -30px rgba(20,22,24,.45);
  --f-display: "Montserrat", "Segoe UI", system-ui, sans-serif;
  --f-body: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --max: 1240px;
  --gl: max(16px, env(safe-area-inset-left, 0px));
  --gr: max(16px, env(safe-area-inset-right, 0px));
  --fs: 17px;
  --r: 6px;
  --head-h: 72px;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
  --bg: #141617; --bg-2: #1B1E20; --paper: #1F2224; --ink: #ECEEEC; --logo: #ECEEEC; --muted: #A4ABA9;
  --line: #2C3032; --line-strong: #454B4D; --accent: #4FB3A8; --accent-deep: #0F5E5A; --accent-ink: #0B1716;
  --accent-soft: #16302D; --deep: #0C0E0F; --deep-2: #17191B; --on-deep: #F0F2F0; --on-deep-muted: #9BA3A0;
  --on-deep-line: rgba(255,255,255,.12); --ok: #6FCB97; --alert: #E6A35A; --shadow: 0 30px 60px -30px rgba(0,0,0,.8);
  color-scheme: dark; } }
:root[data-theme="dark"] {
  --bg: #141617; --bg-2: #1B1E20; --paper: #1F2224; --ink: #ECEEEC; --logo: #ECEEEC; --muted: #A4ABA9;
  --line: #2C3032; --line-strong: #454B4D; --accent: #4FB3A8; --accent-deep: #0F5E5A; --accent-ink: #0B1716;
  --accent-soft: #16302D; --deep: #0C0E0F; --deep-2: #17191B; --on-deep: #F0F2F0; --on-deep-muted: #9BA3A0;
  --on-deep-line: rgba(255,255,255,.12); --ok: #6FCB97; --alert: #E6A35A; --shadow: 0 30px 60px -30px rgba(0,0,0,.8);
  color-scheme: dark; }
:root[data-size="l"] { --fs: 19px; }
:root[data-size="xl"] { --fs: 21px; }

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; animation: none !important; } }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--f-body); font-size: var(--fs); line-height: 1.6; overflow-x: clip; }
h1, h2, h3, h4 { font-family: var(--f-display); margin: 0; color: inherit; text-wrap: balance; }
h1 { font-weight: 700; font-size: clamp(2.35rem, 5.4vw, 4.5rem); line-height: 1.02; letter-spacing: -0.03em; }
h2 { font-weight: 700; font-size: clamp(1.85rem, 3.4vw, 2.9rem); line-height: 1.08; letter-spacing: -0.025em; }
h3 { font-weight: 600; font-size: 1.25rem; line-height: 1.25; letter-spacing: -0.01em; }
h4 { font-weight: 600; font-size: .95rem; }
p, ul, ol, dl, figure { margin: 0; }
a { color: inherit; }
img { max-width: 100%; display: block; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
::selection { background: var(--accent); color: var(--accent-ink); }

.wrap { max-width: var(--max); margin: 0 auto; padding-left: var(--gl); padding-right: var(--gr); }
.label { display: block; font-family: var(--f-display); font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--accent); }
.label + h1, .label + h2 { margin-top: 18px; }
.lead { font-size: 1.2rem; line-height: 1.5; color: var(--muted); max-width: 46ch; }
h1 + .lead, h2 + .lead { margin-top: 22px; }
.sec { padding-block: clamp(72px, 9vw, 128px); }
.sec-tint { background: var(--bg-2); }
.sec-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 20px 64px; align-items: end; margin-bottom: clamp(40px, 5vw, 64px); }
.sec-head > p { color: var(--muted); max-width: 44ch; font-size: 1.08rem; justify-self: end; }
.rule { border: 0; border-top: 1px solid var(--line); margin: 0; }
.arr { display: inline-block; transition: transform .25s ease; }
a:hover > .arr, .btn:hover .arr { transform: translateX(4px); }

/* ---------- boutons ---------- */
.btn { display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 22px; border-radius: 999px; font-family: var(--f-display); font-weight: 600; font-size: .9rem; letter-spacing: .01em; text-decoration: none; border: 1.5px solid transparent; cursor: pointer; transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease; white-space: nowrap; }
.btn:active { transform: translateY(1px); }
.btn-accent { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.btn-accent:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: #fff; }
.btn-ink { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.btn-ink:hover { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.btn-line { background: transparent; color: var(--ink); border-color: var(--line-strong); }
.btn-line:hover { border-color: var(--ink); }
.btn-light { background: var(--on-deep); color: var(--deep); border-color: var(--on-deep); }
.btn-light:hover { background: #fff; color: var(--accent); }
.btn-ghost { background: transparent; color: var(--on-deep); border-color: rgba(255,255,255,.4); }
.btn-ghost:hover { border-color: #fff; }
.ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.more { display: inline; font-family: var(--f-display); font-weight: 600; font-size: .9rem; line-height: 1.5; color: var(--accent); text-decoration: none; border-bottom: 1.5px solid transparent; padding-bottom: 2px; }
.more .arr { margin-left: 4px; }
.more:hover { border-color: currentColor; }

/* ---------- logo ---------- */
/* Le monogramme TD est incorporé en data URI : un masque CSS doit être de même origine, et le fichier doit marcher partout. */
:root { --mono: url("data:image/png;base64,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"); }
.mark { display: inline-block; flex: none; background: var(--logo); -webkit-mask: var(--mono) center / contain no-repeat; mask: var(--mono) center / contain no-repeat; aspect-ratio: 323 / 360; }
.brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: var(--logo); }
.brand .mark { height: 34px; }
.wordmark { font-family: var(--f-display); font-weight: 600; font-size: 21px; letter-spacing: .03em; line-height: 1; }

/* ---------- en-tête ---------- */
.top { position: sticky; top: 0; z-index: 40; background: color-mix(in srgb, var(--bg) 88%, transparent); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); border-bottom: 1px solid transparent; transition: border-color .25s ease; }
.top.is-scrolled { border-color: var(--line); }
.top .wrap { display: flex; align-items: center; gap: 20px; min-height: var(--head-h); }
.nav { display: flex; align-items: center; gap: 4px; margin-left: 28px; }
.nav > a, .drop > button { font-family: var(--f-display); font-weight: 500; font-size: .86rem; color: var(--ink); text-decoration: none; background: none; border: 0; padding: 10px 12px; cursor: pointer; border-radius: 999px; }
.nav > a:hover, .drop > button:hover, .drop.is-open > button { background: var(--bg-2); }
.nav a[aria-current="page"] { color: var(--accent); }
.drop { position: relative; }
.drop > button::after { content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 9px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-3px) rotate(45deg); }
.drop-panel { position: absolute; top: calc(100% + 6px); left: 0; min-width: 320px; background: var(--paper); border: 1px solid var(--line); border-radius: 10px; box-shadow: var(--shadow); padding: 8px; display: none; z-index: 5; }
.drop:hover .drop-panel, .drop:focus-within .drop-panel, .drop.is-open .drop-panel { display: block; }
.drop-panel a { display: grid; gap: 2px; padding: 10px 12px; border-radius: 6px; text-decoration: none; }
.drop-panel a:hover { background: var(--bg-2); }
.drop-panel b { font-family: var(--f-display); font-weight: 600; font-size: .9rem; }
.drop-panel span { font-size: .9rem; color: var(--muted); }
.tools { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.tool { background: none; border: 1px solid transparent; border-radius: 999px; min-width: 34px; height: 34px; padding: 0 9px; font-family: var(--f-display); font-weight: 600; font-size: .72rem; letter-spacing: .04em; color: var(--muted); cursor: pointer; }
.tool:hover { color: var(--ink); border-color: var(--line); }
.tool[aria-pressed="true"] { color: var(--accent); border-color: var(--accent); }
.tool-lang { margin-left: 6px; border-color: var(--line); color: var(--ink); }
.top .btn-cta { min-height: 42px; padding: 0 18px; font-size: .84rem; }
.menu-btn { display: none; background: none; border: 1.5px solid var(--line-strong); border-radius: 999px; min-height: 40px; padding: 0 16px; font-family: var(--f-display); font-weight: 600; font-size: .82rem; cursor: pointer; }
.menu-btn[aria-expanded="true"] { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.mobile-nav { border-top: 1px solid var(--line); background: var(--bg); }
.mobile-nav .wrap { display: grid; gap: 0; padding-block: 8px 20px; }
.mobile-nav a { padding: 14px 0; border-bottom: 1px solid var(--line); text-decoration: none; font-family: var(--f-display); font-weight: 600; font-size: 1.1rem; display: flex; justify-content: space-between; align-items: center; }
.mobile-nav a small { font-family: var(--f-body); font-weight: 400; color: var(--muted); font-size: .9rem; }
.mobile-nav .sub { padding-left: 18px; font-size: 1rem; font-weight: 500; }
.mobile-nav .m-tools { display: flex; gap: 8px; padding-top: 18px; align-items: center; }
.mobile-nav .m-tools span { color: var(--muted); font-size: .9rem; margin-right: auto; }
.mobile-nav .btn { margin-top: 18px; justify-content: center; }
.m-tools .tool { border-color: var(--line); }

/* ---------- héros d'accueil ---------- */
.hero { display: grid; grid-template-columns: [full-start] minmax(var(--gl), 1fr) [content-start] minmax(0, calc(var(--max) * .5)) [mid] minmax(0, calc(var(--max) * .5)) [content-end] minmax(var(--gr), 1fr) [full-end]; min-height: clamp(600px, calc(88vh - var(--head-h)), 780px); }
.hero-txt { grid-column: content-start / mid; align-self: center; padding: clamp(48px, 7vw, 96px) clamp(32px, 5vw, 80px) clamp(48px, 7vw, 96px) 0; }
.hero-txt h1 { max-width: 12ch; }
.hero-img { grid-column: mid / full-end; position: relative; min-height: 420px; }
.hero-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 35%; }
.proofs { display: flex; flex-wrap: wrap; gap: 10px 0; margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--line); }
.proofs span { font-family: var(--f-display); font-size: .78rem; font-weight: 500; letter-spacing: .02em; color: var(--muted); padding-right: 18px; margin-right: 18px; border-right: 1px solid var(--line); line-height: 1.3; }
.proofs span:last-child { border: 0; margin-right: 0; padding-right: 0; }
.proofs span::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); margin-right: 9px; vertical-align: 1px; }

/* ---------- une maison, deux métiers ---------- */
.house { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px 64px; align-items: start; }
.house h2 { max-width: 14ch; }
.house .cols { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.house .col { border-top: 2px solid var(--ink); padding-top: 22px; }
.house .col b { display: block; font-family: var(--f-display); font-weight: 600; font-size: 1.1rem; }
.house .col p { color: var(--muted); margin-top: 10px; }
.house .col .more { margin-top: 18px; }

/* ---------- triptyque des services (moment signature) ---------- */
.trio { display: flex; gap: 6px; height: clamp(560px, 74vh, 760px); }
.panel { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; background: var(--deep); color: var(--on-deep); text-decoration: none; display: flex; flex-direction: column; justify-content: flex-end; transition: flex .55s cubic-bezier(.65,0,.25,1); cursor: pointer; }
.panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.92); transition: transform .8s ease; }
.panel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(22,24,26,.96) 0%, rgba(22,24,26,.72) 34%, rgba(22,24,26,.18) 62%, rgba(22,24,26,0) 100%); }
.panel-body { position: relative; z-index: 1; padding: 36px 32px 34px; max-width: 46ch; }
.panel-n { display: block; font-family: var(--f-display); font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--on-deep-muted); }
.panel h3 { font-size: clamp(1.5rem, 2.1vw, 2rem); font-weight: 700; letter-spacing: -0.02em; margin-top: 10px; color: #fff; }
.panel .tagline { margin-top: 10px; color: var(--on-deep); font-size: 1.05rem; line-height: 1.45; }
.panel-more { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .55s cubic-bezier(.65,0,.25,1); }
.panel-more > div { overflow: hidden; }
.panel .chips { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 18px; }
.panel .chips span { font-family: var(--f-display); font-size: .74rem; font-weight: 500; padding: 6px 11px; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; color: #fff; white-space: nowrap; }
.panel .more { color: #fff; margin-top: 22px; }
.panel .more:hover { border-color: #fff; }
.trio.has-pointer .panel:hover, .panel.is-open { flex: 2.3 1 0; }
.trio.has-pointer .panel:hover img, .panel.is-open img { transform: scale(1.04); }
.trio.has-pointer .panel:hover .panel-more, .panel.is-open .panel-more { grid-template-rows: 1fr; }
.panel:focus-visible { outline-offset: -4px; outline-color: #fff; }

/* ---------- bloc diaspora + rapport ---------- */
.diaspora { background: var(--deep); color: var(--on-deep); overflow: hidden; }
.diaspora .wrap { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 48px 72px; align-items: center; padding-block: clamp(72px, 9vw, 128px); }
.diaspora .label { color: #7FD0C6; }
.diaspora .lead { color: var(--on-deep-muted); }
.ticks { list-style: none; padding: 0; margin-top: 30px; display: grid; gap: 12px; }
.ticks li { display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start; line-height: 1.45; }
.ticks li::before { content: ""; width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid #7FD0C6; position: relative; top: 2px; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M5.5 10.5l3 3 6-7' fill='none' stroke='%237FD0C6' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / 100% no-repeat; }
.evidence { position: relative; min-height: 560px; }
.evidence > img { position: absolute; right: 0; top: 0; width: 72%; height: 78%; object-fit: cover; object-position: 60% 40%; border-radius: var(--r); filter: saturate(.9); }
.evidence .report { position: absolute; left: 0; bottom: 0; width: min(380px, 78%); }

/* Le rapport TDomeza : un objet papier, toujours au nom de la société */
.report { background: #FFFFFF; color: #202224; border-radius: 8px; box-shadow: var(--shadow); overflow: hidden; font-size: .88rem; line-height: 1.4; }
.report-head { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid #E6E8E6; background: #FAFAF9; }
.report-head .mark { height: 20px; background: #2E3032; }
.report-head b { font-family: var(--f-display); font-weight: 600; font-size: .78rem; letter-spacing: .01em; }
.report-head code { margin-left: auto; font-family: var(--f-display); font-weight: 600; font-size: .72rem; color: #0F5E5A; background: #E3EEEC; padding: 3px 8px; border-radius: 4px; }
.report-photo { position: relative; aspect-ratio: 16 / 10; }
.report-photo img { width: 100%; height: 100%; object-fit: cover; }
.report-photo .stamp { position: absolute; left: 10px; bottom: 10px; display: inline-flex; align-items: center; gap: 7px; background: rgba(20,22,24,.78); color: #fff; font-family: var(--f-display); font-size: .66rem; font-weight: 500; letter-spacing: .03em; padding: 5px 9px; border-radius: 4px; }
.report-photo .stamp::before { content: ""; width: 10px; height: 10px; border-radius: 50%; border: 2px solid #7FD0C6; }
.report dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; padding: 14px 16px 10px; }
.report dt { color: #6B7073; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; font-family: var(--f-display); font-weight: 600; padding-top: 2px; }
.report dd { margin: 0; font-weight: 600; }
.findings { list-style: none; padding: 4px 16px 14px; display: grid; gap: 7px; }
.findings li { display: grid; grid-template-columns: 18px 1fr; gap: 10px; align-items: start; }
.findings li::before { content: ""; width: 16px; height: 16px; border-radius: 50%; margin-top: 2px; }
.findings .ok::before { background: #E1F1E8 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.5 8.5l2.3 2.3L11.5 6' fill='none' stroke='%231F7A4D' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / 100% no-repeat; }
.findings .alert::before { background: #FBEBDA url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 4.2v4.6M8 11.6v.2' fill='none' stroke='%23B4651A' stroke-width='1.8' stroke-linecap='round'/></svg>") center / 100% no-repeat; }
.report-foot { padding: 10px 16px; border-top: 1px solid #E6E8E6; font-size: .74rem; color: #6B7073; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

/* ---------- bande de déclaration ---------- */
.statement { position: relative; min-height: 520px; display: grid; align-items: end; color: #fff; overflow: hidden; isolation: isolate; }
.statement > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 40%; z-index: -2; }
.statement::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(18,20,22,.94), rgba(18,20,22,.62) 50%, rgba(18,20,22,.3)); }
.statement .wrap { padding-block: clamp(56px, 7vw, 96px); }
.statement .label { color: #C9EDE7; text-shadow: 0 1px 8px rgba(0,0,0,.5); }
.statement p { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.7rem, 3.6vw, 3.1rem); line-height: 1.12; letter-spacing: -0.02em; max-width: 22ch; margin-top: 18px; text-wrap: balance; }

/* ---------- produits ---------- */
.products { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 24px; }
.prod { border-radius: 10px; overflow: hidden; display: grid; position: relative; text-decoration: none; min-height: 520px; }
.prod-sarreh { background: #F7F4EC; color: #27251F; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; }
.prod-sarreh .prod-body { padding: 44px 8px 44px 44px; display: flex; flex-direction: column; }
.prod-sarreh .prod-visual { position: relative; }
.prod-sarreh .prod-visual img { position: absolute; left: 4%; bottom: -8%; width: 96%; max-width: none; height: auto; }
.prod-logo { display: flex; align-items: center; gap: 12px; font-family: var(--f-display); font-weight: 700; font-size: 1.6rem; letter-spacing: -0.01em; }
.prod-logo img { width: 44px; height: 44px; border-radius: 10px; }
.prod .label { color: #AE5225; }
.prod-sarreh p { margin-top: 18px; color: #4C4A42; font-size: 1.08rem; max-width: 30ch; }
.prod-sarreh .pts { list-style: none; padding: 0; margin-top: 20px; display: grid; gap: 6px; font-size: .95rem; color: #27251F; }
.prod-sarreh .pts li::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #5F6F5B; margin-right: 10px; vertical-align: 2px; }
.prod-sarreh .go { margin-top: auto; padding-top: 28px; align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; font-family: var(--f-display); font-weight: 600; font-size: .9rem; color: #AE5225; }
.prod-edu { background: var(--deep); color: var(--on-deep); grid-template-rows: auto 1fr; }
.prod-edu .prod-body { padding: 44px 44px 0; }
.prod-edu .label { color: #7FD0C6; }
.prod-edu h3 { font-size: 1.6rem; font-weight: 700; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.tag { display: inline-block; font-family: var(--f-display); font-size: .68rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px; border: 1px solid currentColor; vertical-align: middle; }
.prod-edu p { margin-top: 16px; color: var(--on-deep-muted); font-size: 1.05rem; max-width: 34ch; }
.prod-edu .go { display: inline-flex; gap: 8px; align-items: center; margin-top: 22px; font-family: var(--f-display); font-weight: 600; font-size: .9rem; color: #fff; }
.frame { align-self: end; margin: 36px 0 0 44px; border: 1px solid rgba(255,255,255,.18); border-bottom: 0; border-radius: 10px 10px 0 0; background: rgba(255,255,255,.04); min-height: 180px; display: grid; grid-template-rows: auto 1fr; }
.frame-bar { display: flex; gap: 6px; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,.14); }
.frame-bar i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,.22); }
.frame-bar span { margin-left: 10px; font-family: var(--f-display); font-size: .7rem; color: var(--on-deep-muted); align-self: center; letter-spacing: .04em; }
.frame-body { display: grid; place-items: center; text-align: center; padding: 28px 20px; color: var(--on-deep-muted); font-family: var(--f-display); font-size: .82rem; font-weight: 500; }

/* ---------- méthode ---------- */
.steps { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 32px; counter-reset: step; }
.steps li { border-top: 1px solid var(--line-strong); padding-top: 22px; counter-increment: step; position: relative; }
.steps li::before { content: counter(step, decimal-leading-zero); font-family: var(--f-display); font-weight: 600; font-size: .78rem; letter-spacing: .14em; color: var(--accent); display: block; margin-bottom: 14px; }
.steps h3 { font-size: 1.15rem; }
.steps p { color: var(--muted); margin-top: 10px; max-width: 30ch; }

/* ---------- à propos ---------- */
.about { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 48px 80px; align-items: center; }
.about-img { position: relative; aspect-ratio: 4 / 5; border-radius: var(--r); overflow: hidden; }
.about-img img { width: 100%; height: 100%; object-fit: cover; object-position: 55% 30%; }
.founders { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 36px; }
.founder { display: flex; gap: 16px; align-items: center; }
.founder i { width: 64px; height: 64px; flex: none; border-radius: 50%; background: var(--ink); color: var(--bg); display: grid; place-items: center; font-family: var(--f-display); font-weight: 700; font-size: 1.2rem; font-style: normal; }
.founder b { display: block; font-family: var(--f-display); font-weight: 600; }
.founder span { display: block; color: var(--muted); font-size: .92rem; line-height: 1.35; }
.careers { margin-top: 36px; padding-top: 26px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: center; justify-content: space-between; }
.careers p { max-width: 44ch; color: var(--muted); }
.careers p b { color: var(--ink); font-family: var(--f-display); font-weight: 600; }

/* ---------- contact ---------- */
.contact { background: var(--deep); color: var(--on-deep); }
.contact .wrap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 40px 80px; align-items: end; padding-block: clamp(72px, 9vw, 120px); }
.contact h2 { font-size: clamp(2rem, 4.2vw, 3.6rem); max-width: 14ch; }
.contact .label { color: #7FD0C6; }
.contact p.lead { color: var(--on-deep-muted); }
.contact-list { display: grid; border-top: 1px solid var(--on-deep-line); }
.contact-list a, .contact-list div { display: grid; grid-template-columns: 110px 1fr; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--on-deep-line); text-decoration: none; align-items: baseline; }
.contact-list small { font-family: var(--f-display); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--on-deep-muted); }
.contact-list span { font-family: var(--f-display); font-weight: 600; font-size: 1.1rem; overflow-wrap: anywhere; }

/* ---------- pied de page ---------- */
footer { background: var(--bg); border-top: 1px solid var(--line); }
footer .wrap { display: grid; grid-template-columns: 2fr repeat(4, 1fr); gap: 32px; padding-block: 56px 40px; }
footer h4 { font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-bottom: 14px; }
footer ul { list-style: none; padding: 0; display: grid; gap: 8px; }
footer a { text-decoration: none; font-size: .95rem; }
footer a:hover { color: var(--accent); }
footer .foot-brand p { margin-top: 16px; color: var(--muted); max-width: 26ch; font-size: .95rem; }
footer .legal { grid-column: 1 / -1; border-top: 1px solid var(--line); padding-top: 20px; display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; font-size: .82rem; color: var(--muted); }

/* ---------- WhatsApp ---------- */
.wa { position: fixed; right: max(18px, env(safe-area-inset-right, 0px)); bottom: max(18px, env(safe-area-inset-bottom, 0px)); z-index: 35; width: 54px; height: 54px; border-radius: 50%; background: #25D366; color: #fff; display: grid; place-items: center; box-shadow: 0 12px 28px -8px rgba(0,0,0,.4); transition: transform .2s ease; }
.wa:hover { transform: translateY(-2px); }
.wa svg { width: 28px; height: 28px; }

/* ---------- page de service (TD ViaField) ---------- */
.crumbs { padding-block: 18px 0; font-size: .86rem; color: var(--muted); display: flex; gap: 10px; flex-wrap: wrap; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--accent); }
.svc-hero { display: grid; grid-template-columns: [full-start] minmax(var(--gl), 1fr) [content-start] minmax(0, calc(var(--max) * .58)) [mid] minmax(0, calc(var(--max) * .42)) [content-end] minmax(var(--gr), 1fr) [full-end]; background: var(--deep); color: var(--on-deep); }
.svc-hero .hero-txt { grid-column: content-start / mid; padding: clamp(56px, 7vw, 104px) clamp(32px, 5vw, 72px) clamp(56px, 7vw, 104px) 0; }
.svc-hero .label { color: #7FD0C6; }
.svc-hero h1 { font-size: clamp(2.1rem, 4.4vw, 3.7rem); max-width: 18ch; }
.svc-hero .lead { color: var(--on-deep-muted); }
.svc-hero .hero-img { grid-column: mid / full-end; min-height: 460px; }
.svc-hero .hero-img img { object-position: 50% 25%; }
.svc-hero .hero-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, var(--deep), transparent 28%); }
.anchors { border-bottom: 1px solid var(--line); background: var(--bg); }
.anchors .wrap { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.anchors .wrap::-webkit-scrollbar { display: none; }
.anchors a { flex: none; padding: 16px 12px; font-family: var(--f-display); font-weight: 500; font-size: .82rem; text-decoration: none; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.anchors a:hover { color: var(--ink); border-color: var(--ink); }

.proof-band { background: var(--bg-2); }
.proof-band .wrap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px 72px; align-items: center; padding-block: clamp(72px, 9vw, 120px); }
.proof-band .report { max-width: 440px; justify-self: center; }
.proof-band h2 { max-width: 16ch; }
.proof-band .lead { max-width: 48ch; }
.proof-band .ticks li::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M5.5 10.5l3 3 6-7' fill='none' stroke='%230F5E5A' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>"); border-color: var(--accent); }

.audiences { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line-strong); }
.aud { padding: 28px 28px 32px 0; border-right: 1px solid var(--line); margin-right: 28px; }
.aud:last-child { border-right: 0; margin-right: 0; }
.aud h3 { font-size: 1.15rem; }
.aud p { color: var(--muted); margin-top: 12px; font-size: .98rem; }

.missions { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 48px 72px; align-items: start; }
.missions-img { position: sticky; top: calc(var(--head-h) + 24px); aspect-ratio: 4 / 5; border-radius: var(--r); overflow: hidden; }
.missions-img img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.families { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; }
.family { border-top: 1px solid var(--line-strong); padding: 24px 0 30px; }
.family header { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.family h3 { font-size: 1.3rem; }
.family .tag { font-size: .62rem; color: var(--accent); border-color: var(--accent-soft); background: var(--accent-soft); flex: none; }
.family ul { list-style: none; padding: 0; margin-top: 14px; display: grid; gap: 7px; color: var(--muted); font-size: .98rem; }
.family li { padding-left: 16px; position: relative; }
.family li::before { content: ""; position: absolute; left: 0; top: .62em; width: 6px; height: 1.5px; background: var(--accent); }

.timeline { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px 80px; align-items: start; }
.timeline ol { list-style: none; padding: 0; counter-reset: s; display: grid; }
.timeline li { counter-increment: s; display: grid; grid-template-columns: 64px 1fr; gap: 20px; padding: 22px 0; border-top: 1px solid var(--line); }
.timeline li:last-child { border-bottom: 1px solid var(--line); }
.timeline li::before { content: counter(s, decimal-leading-zero); font-family: var(--f-display); font-weight: 600; font-size: 1.6rem; letter-spacing: -0.02em; color: var(--accent); line-height: 1; padding-top: 3px; }
.timeline h3 { font-size: 1.15rem; }
.timeline p { color: var(--muted); margin-top: 6px; }
.timeline-img { aspect-ratio: 4 / 5; border-radius: var(--r); overflow: hidden; }
.timeline-img img { width: 100%; height: 100%; object-fit: cover; object-position: 35% 30%; }

.plans { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.plan { background: var(--paper); border: 1px solid var(--line); border-radius: 10px; padding: 28px 26px 26px; display: flex; flex-direction: column; }
.plan.featured { border-color: var(--accent); box-shadow: inset 0 3px 0 var(--accent); }
.plan h3 { font-size: 1.15rem; }
.plan .who { color: var(--muted); font-size: .92rem; margin-top: 6px; min-height: 2.6em; }
.plan .price { margin-top: 22px; font-family: var(--f-display); font-weight: 700; font-size: 1.7rem; letter-spacing: -0.02em; line-height: 1; }
.plan .price small { display: block; font-family: var(--f-body); font-weight: 400; font-size: .85rem; color: var(--muted); margin-top: 8px; letter-spacing: 0; }
.plan ul { list-style: none; padding: 0; margin: 22px 0 28px; display: grid; gap: 8px; font-size: .95rem; border-top: 1px solid var(--line); padding-top: 18px; }
.plan li { padding-left: 18px; position: relative; }
.plan li::before { content: ""; position: absolute; left: 0; top: .66em; width: 8px; height: 1.5px; background: var(--accent); }
.plan .btn { margin-top: auto; justify-content: center; }
.note { margin-top: 28px; color: var(--muted); font-size: .95rem; max-width: 70ch; }

.commit-band { background: var(--deep); color: var(--on-deep); overflow: hidden; }
.commit-band .wrap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px 80px; padding-block: clamp(72px, 9vw, 120px); align-items: center; }
.commit-band .label { color: #7FD0C6; }
.commit-band h2 { max-width: 18ch; }
.commit { list-style: none; padding: 0; margin-top: 40px; display: grid; grid-template-columns: 1fr 1fr; gap: 0 40px; }
.commit li { border-top: 1px solid var(--on-deep-line); padding: 18px 0 22px; }
.commit b { display: block; font-family: var(--f-display); font-weight: 600; font-size: 1.02rem; }
.commit p { color: var(--on-deep-muted); margin-top: 6px; font-size: .95rem; }
.commit-img { aspect-ratio: 4 / 5; border-radius: var(--r); overflow: hidden; }
.commit-img img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }

.faq { max-width: 820px; border-top: 1px solid var(--line-strong); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { cursor: pointer; list-style: none; padding: 22px 44px 22px 0; font-family: var(--f-display); font-weight: 600; font-size: 1.08rem; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: ""; position: absolute; right: 6px; top: 50%; width: 10px; height: 10px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-70%) rotate(45deg); transition: transform .25s ease; }
.faq details[open] summary::after { transform: translateY(-20%) rotate(-135deg); }
.faq details p { padding: 0 0 24px; color: var(--muted); max-width: 66ch; }

/* ---------- maquette ---------- */
.mock { font-size: .78rem; color: var(--muted); }

/* ======================================================================
   Tablette (≤ 1100) : la navigation passe dans le menu, les grilles se resserrent
   ====================================================================== */
@media (max-width: 1100px) {
  .nav, .top .btn-cta { display: none; }
  .menu-btn { display: inline-flex; align-items: center; }
  .tools { margin-left: auto; }
  .hero { grid-template-columns: [full-start] minmax(var(--gl), 1fr) [content-start] minmax(0, var(--max)) [content-end] minmax(var(--gr), 1fr) [full-end]; min-height: 0; }
  .hero-txt { grid-column: content-start / content-end; padding: 56px 0 48px; }
  .hero-txt h1 { max-width: 16ch; }
  .hero-img { grid-column: full-start / full-end; min-height: 0; aspect-ratio: 16 / 9; max-height: 560px; }
  .house { grid-template-columns: 1fr; gap: 32px; }
  .sec-head { grid-template-columns: 1fr; gap: 14px; }
  .sec-head > p { justify-self: start; }
  .trio { flex-direction: column; height: auto; gap: 12px; }
  .panel { flex: none; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); min-height: 300px; border-radius: 8px; cursor: default; }
  .panel img { position: relative; grid-column: 1; height: 100%; min-height: 300px; }
  .panel::after { display: none; }
  .panel-body { grid-column: 2; padding: 34px 36px; align-self: center; max-width: none; }
  .panel-more { grid-template-rows: 1fr; }
  .panel .chips span { border-color: rgba(255,255,255,.35); }
  .trio.has-pointer .panel:hover { flex: none; }
  .trio.has-pointer .panel:hover img, .panel.is-open img { transform: none; }
  .diaspora .wrap { grid-template-columns: 1fr; gap: 56px; }
  .evidence { min-height: 0; aspect-ratio: 16 / 10; }
  .evidence > img { width: 64%; height: 86%; }
  .evidence .report { width: min(380px, 56%); }
  .products { grid-template-columns: 1fr; }
  .prod { min-height: 0; }
  .prod-sarreh { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 460px; }
  .prod-edu { grid-template-columns: 1fr 1fr; grid-template-rows: none; }
  .prod-edu .prod-body { padding: 44px 0 44px 44px; }
  .frame { margin: 44px 0 0 32px; align-self: stretch; }
  .steps { grid-template-columns: 1fr 1fr; gap: 28px 40px; }
  .about { grid-template-columns: 1fr; gap: 40px; }
  .about-img { aspect-ratio: 16 / 9; }
  .contact .wrap { grid-template-columns: 1fr; gap: 40px; }
  footer .wrap { grid-template-columns: repeat(3, 1fr); }
  footer .foot-brand { grid-column: 1 / -1; }
  .svc-hero { grid-template-columns: [full-start] minmax(var(--gl), 1fr) [content-start] minmax(0, var(--max)) [content-end] minmax(var(--gr), 1fr) [full-end]; }
  .svc-hero .hero-txt { grid-column: content-start / content-end; padding: 56px 0 48px; }
  .svc-hero .hero-img { grid-column: full-start / full-end; aspect-ratio: 16 / 9; min-height: 0; max-height: 520px; }
  .svc-hero .hero-img::after { background: linear-gradient(to bottom, var(--deep), transparent 30%); }
  .svc-hero .hero-img img { object-position: 50% 28%; }
  .proof-band .wrap { grid-template-columns: 1fr; gap: 48px; }
  .proof-band .report { justify-self: start; }
  .audiences { grid-template-columns: 1fr 1fr; }
  .aud:nth-child(2n) { border-right: 0; margin-right: 0; }
  .aud:nth-child(n+3) { border-top: 1px solid var(--line); }
  .missions { grid-template-columns: 1fr; }
  .missions-img { position: static; aspect-ratio: 16 / 9; }
  .timeline { grid-template-columns: 1fr; }
  .timeline-img { aspect-ratio: 16 / 9; }
  .plans { grid-template-columns: 1fr 1fr; }
  .commit-band .wrap { grid-template-columns: 1fr; }
  .commit-img { aspect-ratio: 16 / 9; }
}

/* ======================================================================
   Téléphone (≤ 640) : une colonne, lecture continue
   ====================================================================== */
@media (max-width: 640px) {
  :root { --head-h: 60px; --fs: 16px; }
  :root[data-size="l"] { --fs: 18px; }
  :root[data-size="xl"] { --fs: 20px; }
  h1 { font-size: clamp(2.1rem, 10vw, 2.6rem); }
  h2 { font-size: clamp(1.65rem, 7.4vw, 2rem); }
  .lead { font-size: 1.08rem; }
  .brand .mark { height: 28px; }
  .wordmark { font-size: 18px; }
  .tools .tool-size { display: none; }
  .tool-lang { margin-left: 0; }
  .top .wrap { gap: 10px; }
  .hero-txt { padding: 40px 0 36px; }
  .hero-img { aspect-ratio: 4 / 3; max-height: none; }
  .hero-img img { object-position: 60% 30%; }
  .ctas { margin-top: 26px; }
  .ctas .btn { width: 100%; justify-content: center; }
  .proofs { display: grid; gap: 10px; margin-top: 32px; }
  .proofs span { border: 0; padding: 0; margin: 0; }
  .house .cols { grid-template-columns: 1fr; gap: 28px; }
  .panel { grid-template-columns: 1fr; min-height: 0; }
  .panel img { min-height: 0; aspect-ratio: 4 / 3; height: auto; }
  .panel-body { grid-column: 1; padding: 26px 22px 28px; }
  .evidence { aspect-ratio: auto; }
  .evidence > img { position: static; width: 100%; height: auto; aspect-ratio: 4 / 3; }
  .evidence .report { position: static; width: 100%; margin-top: -48px; margin-left: 0; width: calc(100% - 20px); }
  .statement { min-height: 440px; }
  .prod-sarreh { grid-template-columns: 1fr; min-height: 0; }
  .prod-sarreh .prod-body { padding: 32px 24px 0; }
  .prod-sarreh .prod-visual { aspect-ratio: 1 / 1; margin-top: 8px; overflow: hidden; }
  .prod-sarreh .prod-visual img { left: 6%; bottom: -10%; width: 88%; }
  .prod-edu { grid-template-columns: 1fr; }
  .prod-edu .prod-body { padding: 32px 24px 0; }
  .frame { margin: 32px 0 0 24px; min-height: 150px; }
  .steps { grid-template-columns: 1fr; gap: 0; }
  .steps li { padding: 20px 0 24px; }
  .steps li::before { position: absolute; right: 0; top: 22px; margin: 0; }
  .steps p { max-width: none; }
  .founders { grid-template-columns: 1fr; }
  .careers .btn { width: 100%; justify-content: center; }
  .contact-list a, .contact-list div { grid-template-columns: 1fr; gap: 4px; }
  footer .wrap { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  footer .legal { flex-direction: column; }
  .wa { width: 50px; height: 50px; }
  .svc-hero .hero-txt { padding: 40px 0 36px; }
  .svc-hero h1 { font-size: clamp(1.8rem, 8.2vw, 2.3rem); }
  .svc-hero .hero-img { aspect-ratio: 4 / 5; }
  .svc-hero .hero-img img { object-position: 50% 15%; }
  .audiences { grid-template-columns: 1fr; }
  .aud { border-right: 0; margin-right: 0; padding: 22px 0 26px; }
  .aud:nth-child(n+2) { border-top: 1px solid var(--line); }
  .families { grid-template-columns: 1fr; }
  .missions-img { aspect-ratio: 4 / 3; }
  .timeline li { grid-template-columns: 44px 1fr; gap: 14px; }
  .timeline li::before { font-size: 1.3rem; }
  .timeline-img { aspect-ratio: 4 / 3; }
  .plans { grid-template-columns: 1fr; }
  .plan .who { min-height: 0; }
  .commit { grid-template-columns: 1fr; }
  .commit-img { aspect-ratio: 4 / 3; }
}
@media (max-width: 400px) {
  .top .wrap { gap: 8px; }
  .menu-btn { padding: 0 12px; }
}

/* ======================================================================
   Pages ajoutées : TD Agency, TD Tech, À propos, Contact
   ====================================================================== */
/* Héros clair (À propos, Contact) */
.page-hero { padding-block: clamp(48px, 7vw, 96px) clamp(40px, 5vw, 64px); }
.page-hero h1 { max-width: 16ch; font-size: clamp(2.1rem, 4.6vw, 3.9rem); }
.page-hero .lead { max-width: 52ch; }

/* Plan de la semaine : l'objet signature de TD Agency (un exemple de maquette, pas un client) */
.week { background: #FFFFFF; color: #202224; border-radius: 8px; box-shadow: var(--shadow); overflow: hidden; font-size: .88rem; line-height: 1.4; }
.week-head { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid #E6E8E6; background: #FAFAF9; }
.week-head .mark { height: 20px; background: #2E3032; }
.week-head b { font-family: var(--f-display); font-weight: 600; font-size: .78rem; }
.week-head code { margin-left: auto; font-family: var(--f-display); font-weight: 600; font-size: .72rem; color: #0F5E5A; background: #E3EEEC; padding: 3px 8px; border-radius: 4px; white-space: nowrap; }
.week table { width: 100%; border-collapse: collapse; }
.week th, .week td { padding: 10px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid #EEF0EE; }
.week th { font-family: var(--f-display); font-size: .64rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #6B7073; background: #FCFCFB; }
.week .day { font-family: var(--f-display); font-weight: 600; white-space: nowrap; }
.week .net { display: block; color: #6B7073; font-size: .78rem; }
.week .obj { color: #3E4346; }
.status { display: inline-block; font-family: var(--f-display); font-size: .62rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; padding: 4px 8px; border-radius: 4px; white-space: nowrap; }
.status.ok { background: #E1F1E8; color: #1F7A4D; }
.status.todo { background: #FBEBDA; color: #B4651A; }
.week-foot { padding: 10px 16px; border-top: 1px solid #E6E8E6; font-size: .74rem; color: #6B7073; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.proof-band .week { max-width: 480px; width: 100%; justify-self: center; }

/* Formules à trois colonnes, et liste à la carte */
.plans-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.plan .price-xaf { font-size: 1.9rem; }
.plan .price-xaf small { display: inline; margin-left: 6px; font-size: .9rem; }
.plan .for { margin-top: 16px; font-size: .9rem; color: var(--muted); font-style: italic; }
.carte { list-style: none; padding: 0; border-top: 1px solid var(--line-strong); max-width: 760px; }
.carte li { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.carte li span { color: var(--ink); }
.carte li b { font-family: var(--f-display); font-weight: 600; white-space: nowrap; }
.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* Réalisations (TD Tech) */
.cases { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 24px; }
.cases .prod { min-height: 480px; }
.cases .prod-edu .prod-body { padding-bottom: 0; }

/* Fondateurs en grand (À propos) */
.founders-lg { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.founder-lg { border-top: 2px solid var(--ink); padding-top: 22px; display: grid; grid-template-columns: 72px 1fr; gap: 20px; align-items: start; }
.founder-lg i { width: 72px; height: 72px; border-radius: 50%; background: var(--ink); color: var(--bg); display: grid; place-items: center; font-family: var(--f-display); font-weight: 700; font-size: 1.4rem; font-style: normal; }
.founder-lg b { display: block; font-family: var(--f-display); font-weight: 600; font-size: 1.15rem; }
.founder-lg span { display: block; color: var(--accent); font-family: var(--f-display); font-size: .78rem; font-weight: 600; letter-spacing: .04em; margin-top: 4px; }
.founder-lg p { color: var(--muted); margin-top: 10px; font-size: .98rem; }
.about-split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px 80px; align-items: start; }

/* Contact : formulaire et coordonnées */
.contact-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px 80px; align-items: start; }
.form { display: grid; gap: 18px; }
.form .row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: grid; gap: 6px; }
.field label { font-family: var(--f-display); font-size: .78rem; font-weight: 600; letter-spacing: .03em; }
.field label small { font-family: var(--f-body); font-weight: 400; color: var(--muted); letter-spacing: 0; }
.field input, .field select, .field textarea { font: inherit; color: var(--ink); background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; padding: 11px 14px; min-height: 48px; width: 100%; }
.field textarea { min-height: 150px; resize: vertical; }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.form .hint { font-size: .88rem; color: var(--muted); }
.form .btn { justify-self: start; }
.form-done { border: 1px solid var(--accent); background: var(--accent-soft); border-radius: 8px; padding: 20px 22px; display: grid; gap: 8px; }
.form-done b { font-family: var(--f-display); font-weight: 600; }
.coords { display: grid; border-top: 1px solid var(--line-strong); }
.coords > div, .coords > a { display: grid; gap: 4px; padding: 18px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.coords small { font-family: var(--f-display); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.coords span { font-family: var(--f-display); font-weight: 600; font-size: 1.1rem; overflow-wrap: anywhere; }
.coords p { color: var(--muted); font-size: .92rem; }
.aside-card { margin-top: 28px; background: var(--bg-2); border-radius: 8px; padding: 24px; }
.aside-card b { display: block; font-family: var(--f-display); font-weight: 600; }
.aside-card p { color: var(--muted); margin-top: 8px; font-size: .95rem; }

@media (max-width: 1100px) {
  .plans-3 { grid-template-columns: 1fr 1fr; }
  .cases { grid-template-columns: 1fr; }
  .cases .prod { min-height: 0; }
  .cols-3 { grid-template-columns: 1fr 1fr; }
  .about-split, .contact-grid { grid-template-columns: 1fr; gap: 40px; }
  .proof-band .week { justify-self: start; }
}
@media (max-width: 640px) {
  .plans-3 { grid-template-columns: 1fr; }
  .founders-lg { grid-template-columns: 1fr; }
  .cols-3 { grid-template-columns: 1fr; }
  .form .row { grid-template-columns: 1fr; }
  .form .btn { justify-self: stretch; justify-content: center; }
  .week .obj { display: none; }
  .week th, .week td { padding: 10px 12px; }
}

/* ---------------------------------------------------------------- pages légales */
.legal-maj { margin-top: 18px; font-size: .9rem; color: var(--muted); }
.legal-sec { padding-top: 0; }
.legal-grid { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: clamp(32px, 6vw, 88px); align-items: start; }
.legal-toc { position: sticky; top: 104px; font-size: .92rem; }
.legal-toc p { font-family: var(--f-display); font-weight: 600; font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; }
.legal-toc ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; border-left: 1px solid var(--line); }
.legal-toc a { display: block; padding: 6px 0 6px 14px; margin-left: -1px; border-left: 2px solid transparent; color: var(--muted); text-decoration: none; line-height: 1.35; }
.legal-toc a:hover { color: var(--ink); border-left-color: var(--accent); }
.legal-doc { max-width: 70ch; display: grid; gap: 44px; }
.legal-doc section { display: grid; gap: 14px; scroll-margin-top: 110px; }
.legal-doc h2 { font-size: clamp(1.3rem, 2.2vw, 1.6rem); font-weight: 700; letter-spacing: -0.01em; padding-top: 22px; border-top: 1px solid var(--line); }
.legal-doc h3 { font-size: 1.02rem; font-weight: 600; margin-top: 6px; }
.legal-doc p, .legal-doc li { color: var(--ink); line-height: 1.65; }
.legal-doc ul { margin: 0; padding-left: 20px; display: grid; gap: 8px; }
.legal-doc a { color: var(--accent); }
.legal-dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 10px 28px; margin: 0; padding: 18px 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.legal-dl dt { color: var(--muted); font-size: .92rem; }
.legal-dl dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.legal-table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.legal-table th, .legal-table td { text-align: left; vertical-align: top; padding: 10px 12px 10px 0; border-bottom: 1px solid var(--line); }
.legal-table th { font-family: var(--f-display); font-weight: 600; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.a-completer { display: inline-block; padding: 1px 8px; border-radius: 999px; border: 1px dashed var(--accent); color: var(--accent); font-size: .85em; font-weight: 600; }
@media (max-width: 900px) {
  .legal-grid { grid-template-columns: 1fr; }
  .legal-toc { position: static; }
  .legal-toc ol { grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: 0; gap: 0 16px; }
  .legal-toc a { padding-left: 0; border-left: 0; border-bottom: 1px solid var(--line); }
}
@media (max-width: 560px) {
  .legal-toc ol { grid-template-columns: 1fr; }
  .legal-dl { grid-template-columns: 1fr; gap: 2px; }
  .legal-dl dd { margin-bottom: 10px; }
}

/* Bascule FR · EN : un lien vers la même page dans l'autre langue */
.tool-lang { display: inline-flex; align-items: center; gap: 4px; text-decoration: none; }
.tool-lang b { font-weight: 700; color: var(--ink); }
.tool-lang span { color: var(--muted); font-weight: 600; }
.tool-lang:hover span { color: var(--ink); }
