/* V5.4 — Result-first commercial model. Keeps the V5 editorial system intact. */
.hero{grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);gap:3vw 5vw;padding-top:92px;padding-bottom:44px;align-items:center}.hero-copy{max-width:780px}.hero h1{max-width:13ch;margin:0 0 18px;font-size:clamp(3.55rem,5.1vw,6.4rem);line-height:.93;text-wrap:balance;hyphens:none;overflow-wrap:normal}.hero-pain{display:grid;gap:3px;margin:0 0 15px;padding:11px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.hero-pain p{margin:0;font-size:clamp(.83rem,1.05vw,1rem);line-height:1.28}.hero-recognition{margin:0 0 13px;font-size:clamp(1rem,1.35vw,1.24rem);font-weight:580;line-height:1.18}.hero-lead{max-width:57ch;margin:0 0 12px;font-size:clamp(.92rem,1.14vw,1.1rem);line-height:1.38}.hero-relief{margin:0 0 17px;font-size:clamp(1rem,1.35vw,1.25rem);line-height:1.1}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.hero-secondary{color:var(--ink);font-size:.78rem;text-decoration:underline;text-underline-offset:4px}.hero-proofstack{height:min(54vh,570px);min-height:390px}.proof-shot{background:#eef0f2}.proof-shot.one{width:72%;height:44%;top:6%}.proof-shot.two{width:61%;height:43%;right:0;bottom:11%}.proof-shot.three{left:-2%;width:39%;height:27%;bottom:2%}.proof-shot img{object-position:center top}.proof-shot figcaption{position:absolute;z-index:2;left:12px;right:12px;bottom:10px;display:flex;justify-content:space-between;gap:8px;padding:7px 8px;background:rgba(16,16,20,.86);color:#fff;font-size:.58rem;letter-spacing:.03em}.proof-shot figcaption span{color:#d4d4d8;text-transform:uppercase;font-size:.5rem;letter-spacing:.08em}.proof-shot.one img{object-position:center 10%}
.result-routes{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}
.result-routes .wrap{padding-top:clamp(76px,9vw,124px);padding-bottom:clamp(76px,9vw,124px)}
.result-routes-head{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(28px,6vw,80px);align-items:end;margin-bottom:46px}.result-routes-head h2{margin:0;max-width:12ch;font-size:clamp(2rem,4.1vw,4.6rem);line-height:.98;letter-spacing:-.055em}.result-routes-head>p:last-child{max-width:510px;margin:0;color:var(--muted);line-height:1.55}
.result-route-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.result-route{padding:22px 20px 24px;min-height:260px}.result-route+.result-route{border-left:1px solid var(--line)}.result-route>span{color:var(--focus);font-size:.58rem;letter-spacing:.11em}.result-route h3{margin:48px 0 14px;font-size:clamp(1.25rem,2vw,2rem);letter-spacing:-.04em;line-height:1.02}.result-route p{max-width:33ch;margin:0;color:var(--muted);font-size:.84rem;line-height:1.55}.result-routes-note{margin:26px 0 0;color:var(--muted);font-size:.75rem;line-height:1.55}
.learning-notes{display:grid;gap:0;border-top:1px solid var(--line)}.learning-notes p{display:grid;grid-template-columns:minmax(140px,.55fr) 1.45fr;gap:24px;margin:0;padding:17px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:.9rem;line-height:1.5}.learning-notes strong{color:var(--ink);font-weight:590}
.entrepreneur-reality{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--soft)}.entrepreneur-reality .wrap{padding-top:clamp(70px,8vw,110px);padding-bottom:clamp(70px,8vw,110px)}.reality-head{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(24px,6vw,80px);align-items:end;margin-bottom:42px}.reality-head h2{max-width:11ch;margin:0;font-size:clamp(2rem,4vw,4.4rem);line-height:.98;letter-spacing:-.055em}.reality-head>p:last-child{max-width:500px;margin:0;color:var(--muted);line-height:1.55}.reality-signals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.reality-signals article{min-height:220px;padding:22px 20px}.reality-signals article+article{border-left:1px solid var(--line)}.reality-signals strong{display:block;font-size:clamp(2.2rem,4vw,4.8rem);letter-spacing:-.07em;line-height:.9}.reality-signals p{max-width:31ch;margin:18px 0;color:var(--ink);font-size:.88rem;line-height:1.45}.reality-signals a{color:var(--muted);font-size:.65rem;line-height:1.35;text-decoration:underline;text-underline-offset:3px}.reality-close{max-width:670px;margin:28px 0 0;font-size:clamp(1.1rem,1.7vw,1.6rem);line-height:1.12;letter-spacing:-.035em}.terrain-copy{max-width:48ch;font-size:1.02rem;line-height:1.55}.terrain-mirror{max-width:28ch;margin:26px 0 0;font-size:clamp(1.2rem,2vw,1.85rem);font-weight:560;line-height:1.1;letter-spacing:-.04em}
@media(max-width:720px){.result-routes-head,.reality-head{grid-template-columns:1fr}.result-route-grid,.reality-signals{grid-template-columns:1fr}.result-route{min-height:0;padding:22px 4px}.result-route+.result-route,.reality-signals article+article{border-left:0;border-top:1px solid var(--line)}.result-route h3{margin-top:26px}.reality-signals article{min-height:0;padding:22px 4px}}
@media(max-width:1100px){.hero{grid-template-columns:1fr;gap:30px;padding-top:104px}.hero h1{max-width:12ch}.hero-proofstack{height:min(48vh,480px);min-height:360px}}
@media(max-width:820px){.hero h1{max-width:12ch;font-size:clamp(3rem,12vw,4.7rem);line-height:.95}.hero-proofstack{min-height:340px;height:46vh}.proof-shot.one{width:78%;height:47%}.proof-shot.two{width:68%;height:42%}.proof-shot.three{width:48%;height:27%}.proof-shot figcaption{left:8px;right:8px;bottom:8px;font-size:.52rem}.proof-shot figcaption span{font-size:.45rem}}
@media(max-width:720px){.learning-notes p{grid-template-columns:1fr;gap:5px}}

/* ── LOT 2 — hero: locked copy, two real surfaces, readable statuses ─────────
   The Hop’n Bar capture is banned by FT_RC_CONTENT_ARCHITECTURE_LOCK_V2, so the
   stack carries two shots instead of three. .proof-shot.three keeps its rules
   from the layer above and is simply unused until a cleared asset lands. */
/* One cleared surface: the stack carries the capture ratio so nothing is cropped
   and no dead band shows. The reserved slot still overlays absolutely. */
.hero-proofstack{height:auto;min-height:0;aspect-ratio:1440/900;align-self:center}
.proof-shot.one{left:0;top:0;width:100%;height:100%}
/* Slot reserved. No element ships until an asset is cleared: assets/hopnbar.jpg is
   banned by the lock, assets/lrdv.jpg carries unaudited figures in its pixels and is
   under review. Dropping a <figure class="proof-shot two"> back in needs no CSS and
   does not move .one. */
.proof-shot.two{right:0;bottom:0;width:66%;height:46%;filter:none;opacity:1;z-index:2}

/* Maturity is the most load-bearing honesty signal on the page; it stops being
   8px type. Minimum 12px everywhere, including below 820. */
.proof-shot figcaption{gap:12px;padding:9px 11px;font-size:.82rem;letter-spacing:0;line-height:1.3}
.proof-shot figcaption span{flex:none;color:#e4e4e7;font-size:.75rem;letter-spacing:.06em}

/* Hero body and secondary action: body ≥ 15px, hit target ≥ 44px. */
.hero-lead{font-size:clamp(.95rem,1.14vw,1.1rem);line-height:1.45;max-width:54ch}
.hero-secondary{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;font-size:.85rem;text-underline-offset:5px}
.hero-copy .eyebrow{font-size:.75rem;letter-spacing:.13em;margin-bottom:20px}

@media(max-width:820px){
  .proof-shot figcaption{left:10px;right:10px;bottom:10px;padding:8px 10px;font-size:.78rem}
  .proof-shot figcaption span{font-size:.75rem}
  .proof-shot.one{width:100%;height:100%}
  .proof-shot.two{width:72%;height:44%}
}

/* Mobile: the hero must not push the first real surface past the fold. */
@media(max-width:520px){
  .hero{min-height:0;padding-top:96px;padding-bottom:36px;gap:26px}
  .hero-copy h1{font-size:clamp(2.5rem,10.4vw,3.6rem)}
  .hero-proofstack{min-height:0;height:auto}
}

/* Assistant entry in the header. LOT 6 upgrades this to a real drawer trigger
   with aria-expanded/aria-controls; the anchor is the no-JS fallback. */
.nav-assistant{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line);opacity:1}
.nav-assistant:hover,.nav-assistant:focus-visible{border-color:var(--ink)}

/* ══ LOT 3 — systems ═══════════════════════════════════════════════════════
   Four primary systems as editorial rows, never four equal cards. Asymmetry
   comes from what each system actually has: Hop’n Bar carries a chain object
   and a double reading, Estimer a real capture, Courtage and Syndic Santé a
   labelled schematic each and share one row. */
.systems .wrap{display:grid;grid-template-columns:minmax(0,1fr);padding-top:clamp(72px,8vw,120px);padding-bottom:clamp(72px,8vw,120px)}
.systems-head{grid-column:1/-1;max-width:62ch;margin-bottom:clamp(40px,5vw,72px)}
.systems-head h2{margin:0 0 18px;font-size:clamp(2.4rem,5.2vw,5.4rem)}
.systems-head p{margin:0;max-width:56ch;color:#3f3f46;font-size:clamp(.95rem,1.1vw,1.08rem);line-height:1.5}

.system{grid-column:1/-1;display:grid;gap:clamp(24px,3vw,40px);padding:clamp(36px,4vw,56px) 0;border-top:1px solid var(--line)}
.system:last-child{border-bottom:1px solid var(--line)}

.system-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:16px 22px}
.system-index{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;color:var(--muted)}
.system-head h3{margin:0;min-width:0;font-size:clamp(1.7rem,2.8vw,3rem);letter-spacing:-.045em;overflow-wrap:break-word}
.system-head h3 a{border:0;display:inline-block;padding-block:9px}
.system-state{margin:0;justify-self:end;display:inline-flex;align-items:center;min-height:28px;padding:0 11px;border:1px solid var(--line);font-size:.8rem;letter-spacing:.02em;color:#3f3f46;white-space:nowrap}

.system .proof-lens{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0;border-top:1px solid var(--line)}
.system .proof-lens>div:nth-child(odd),.system .proof-lens>div:nth-child(even){padding-left:0;padding-right:0;border-right:0}
.system .proof-lens>div{display:grid;grid-template-columns:minmax(96px,.2fr) 1fr;gap:14px 24px;padding:16px 0;border-bottom:1px solid var(--line)}
.system .proof-lens dt{margin:0;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.system .proof-lens dd{margin:0;font-size:clamp(.95rem,1.05vw,1.05rem);line-height:1.5;color:#26262c}

.system-cta{display:flex;flex-wrap:wrap;gap:26px;margin:0}
.system-cta .text-link{font-size:.85rem;min-height:44px;align-items:center}

/* ── Hop’n Bar: the chain is the visual object, no photograph ── */
.chain-label{margin:0 0 14px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.chain{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.chain li{display:grid;grid-template-columns:1fr auto;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}
.chain li b{font-size:1rem;font-weight:560;letter-spacing:-.01em}
.chain li::before{content:"";position:absolute}
.chain-state{font-size:.75rem;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.chain-state.is-sim{color:var(--focus)}

.double-read{display:grid;gap:20px clamp(24px,3vw,48px);grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));padding:22px;background:var(--soft)}
.double-read>div>p{margin:0}
.dr-label{margin:0 0 8px!important;font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);font-weight:620}
.double-read>div>p+p{font-size:.92rem;line-height:1.5;color:#3f3f46}

/* ── Estimer: a real, current product surface ── */
.system-shot{margin:0;border:1px solid var(--line)}
.system-shot img{display:block;width:100%;height:auto}
.system-shot figcaption{padding:10px 12px;border-top:1px solid var(--line);font-size:.78rem;color:var(--muted)}

/* ── Courtage and Syndic Santé: schematics, declared as such ── */
.schema-label{margin:0 0 14px;display:inline-block;padding:5px 10px;border:1px solid var(--ink);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}
.schema{display:grid;gap:14px;padding:20px;border:1px solid var(--line);background:var(--soft)}
.schema--duo{grid-template-columns:1fr auto 1fr;align-items:stretch}
.schema-surface,.schema-rail{padding:14px;background:var(--paper);border:1px solid var(--line)}
.schema-surface-name{margin:0 0 10px;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-weight:620}
.schema ul{list-style:none;margin:0;padding:0}
.schema li{padding:7px 0;border-top:1px solid var(--line);font-size:.85rem;color:#3f3f46}
.schema-spine{display:grid;place-items:center;padding:0 6px}
.schema-spine-label{font-size:.75rem;line-height:1.35;text-align:center;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--line);border-right:1px solid var(--line);padding:14px 12px}
.schema-foot{grid-column:1/-1;margin:0;font-size:.8rem;color:var(--muted)}
.schema-foot--gated{color:var(--ink);border-left:2px solid var(--focus);padding-left:10px}
.schema--console{grid-template-columns:minmax(140px,.34fr) 1fr}
.schema-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}
.schema-grid span{display:grid;place-items:center;min-height:62px;padding:10px;background:var(--paper);border:1px solid var(--line);font-size:.85rem;color:#3f3f46}

@media(min-width:1101px){
  .systems .wrap{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(24px,3vw,56px)}
  .systems-head,.system{grid-column:1/-1}
  .system--chain,.system--capture{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);column-gap:clamp(32px,4vw,72px)}
  .system--chain .system-head,.system--capture .system-head,
  .system--chain .double-read,.system--chain .system-cta,.system--capture .system-cta{grid-column:1/-1}
  .system--schema{grid-column:span 6}
}
@media(max-width:520px){
  .system-head{grid-template-columns:auto minmax(0,1fr);row-gap:12px}
  .system-state{grid-column:1/-1;justify-self:start}
  .system .proof-lens>div{grid-template-columns:1fr;gap:6px}
  .schema--duo,.schema--console{grid-template-columns:1fr}
  .schema-spine-label{border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0;display:block}
}

/* ══ LOT 4 — cross-system constraints and shared patrimony ═════════════════
   Both sections are editorial rows on hairlines. No cards, no galaxy, no
   orbit. Attribution is the valuable part, so it is set at a readable size
   rather than the 9px it used to be. */

/* ── 03 · what these systems force us to solve ── */
.constraints .wrap{padding-top:clamp(72px,8vw,116px);padding-bottom:clamp(72px,8vw,116px)}
.constraints-head{margin-bottom:clamp(36px,4vw,60px)}
.constraints-head h2{margin:0;max-width:15ch;font-size:clamp(2.1rem,4vw,3.9rem)}
.constraint-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.constraint{display:grid;grid-template-columns:auto minmax(0,.9fr) minmax(0,1.5fr);align-items:start;gap:10px clamp(20px,3vw,48px);padding:clamp(22px,2.4vw,32px) 0;border-bottom:1px solid var(--line)}
.constraint-index{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;color:var(--muted)}
.constraint-name{margin:0;font-size:clamp(1.05rem,1.5vw,1.4rem);font-weight:560;letter-spacing:-.02em}
.constraint-line{margin:0;font-size:clamp(.95rem,1.05vw,1.08rem);line-height:1.5;color:#26262c}
.constraint-systems{grid-column:2/-1;margin:6px 0 0;font-size:.85rem;letter-spacing:.02em;color:var(--muted)}

/* ── 04 · shared patrimony ── */
.patrimony{background:var(--soft)}
.patrimony .wrap{padding-top:clamp(72px,8vw,116px);padding-bottom:clamp(72px,8vw,116px)}
.patrimony-head{max-width:56ch;margin-bottom:clamp(36px,4vw,60px)}
.patrimony-head h2{margin:0 0 16px;font-size:clamp(2.2rem,4.6vw,4.6rem)}
.patrimony-head p{margin:0;max-width:52ch;color:#3f3f46;font-size:clamp(.95rem,1.1vw,1.08rem);line-height:1.5}

.capability-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.capability{display:grid;grid-template-columns:auto minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:8px clamp(20px,3vw,48px);padding:clamp(20px,2.2vw,28px) 0;border-bottom:1px solid var(--line)}
.capability-index{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;color:var(--focus)}
.capability h3{margin:0;font-size:clamp(1.05rem,1.5vw,1.4rem);font-weight:560;letter-spacing:-.02em;line-height:1.2}
.capability-body{margin:0;font-size:clamp(.9rem,1vw,1rem);line-height:1.5;color:#3f3f46}
.capability-source{grid-column:2/-1;margin:4px 0 0;font-size:.85rem;color:var(--muted)}

.patrimony-routes{margin-top:clamp(40px,4vw,64px)}
.routes-label{margin:0 0 18px;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.route-set{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:clamp(18px,2vw,32px)}
.route{padding:20px;background:var(--paper);border:1px solid var(--line)}
.route-name{margin:0 0 10px;font-size:1.05rem;font-weight:560;letter-spacing:-.02em}
.route p{margin:0;font-size:.9rem;line-height:1.5;color:#3f3f46}

.patrimony-learning{margin-top:clamp(32px,3.4vw,52px);display:grid;gap:12px;border-top:1px solid var(--line);padding-top:22px}
.patrimony-learning p{margin:0;font-size:.95rem;line-height:1.5;color:#3f3f46}
.patrimony-learning strong{color:var(--ink)}

@media(max-width:820px){
  .constraint{grid-template-columns:auto minmax(0,1fr)}
  .constraint-line{grid-column:2/-1}
  .capability{grid-template-columns:auto minmax(0,1fr)}
  .capability-body{grid-column:2/-1}
}

/* ══ LOT 5 — other terrains and the OXANN method ═══════════════════════════
   Terrains stay one line each, no media, no proof lens: they are named and
   stated, and the case pages carry the rest. The method is four full-width
   rows on hairlines, not a four-card grid; red marks AUTORISER alone, because
   it is the only one of the four that carries a decision. */

.terrains .wrap{padding-top:clamp(64px,7vw,104px);padding-bottom:clamp(64px,7vw,104px)}
.terrains-head{margin-bottom:clamp(28px,3vw,44px)}
.terrains-head h2{margin:0;font-size:clamp(1.9rem,3.4vw,3.2rem)}
.terrain-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.terrain{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:6px clamp(18px,2.4vw,40px);padding:18px 0;border-bottom:1px solid var(--line)}
.terrain-name{font-size:clamp(1.05rem,1.5vw,1.35rem);font-weight:560;letter-spacing:-.02em;border:0;display:inline-flex;align-items:center;min-height:44px}
.terrain-state{justify-self:end;display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border:1px solid var(--line);font-size:.8rem;color:#3f3f46;white-space:nowrap}
.terrain-what{grid-column:1/-1;font-size:.9rem;color:var(--muted)}

.method{background:var(--ink);color:var(--paper)}
.method .wrap{padding-top:clamp(72px,8vw,116px);padding-bottom:clamp(72px,8vw,116px)}
.method-head{margin-bottom:clamp(32px,3.6vw,56px)}
.method-head .eyebrow{color:rgba(255,255,255,.62)}
.method-head h2{margin:0;font-size:clamp(1.6rem,3vw,2.8rem);letter-spacing:-.03em;color:var(--paper)}
.method-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.26)}
.method-step{display:grid;grid-template-columns:auto minmax(0,.55fr) minmax(0,1.45fr);align-items:start;gap:10px clamp(20px,3vw,48px);padding:clamp(22px,2.4vw,32px) 0;border-bottom:1px solid rgba(255,255,255,.16)}
.method-index{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;color:rgba(255,255,255,.55)}
.method-step h3{margin:0;font-size:clamp(1.3rem,2.2vw,2.1rem);font-weight:560;letter-spacing:-.03em;color:var(--paper)}
.method-body{margin:0;font-size:clamp(.95rem,1.05vw,1.08rem);line-height:1.55;color:rgba(255,255,255,.82)}
.method-step.is-authority h3{color:var(--focus)}
.method-step.is-authority{border-left:2px solid var(--focus);padding-left:clamp(14px,1.6vw,22px)}

@media(max-width:820px){
  .method-step{grid-template-columns:auto minmax(0,1fr)}
  .method-body{grid-column:2/-1}
}
@media(max-width:520px){
  .terrain{grid-template-columns:minmax(0,1fr)}
  .terrain-state{justify-self:start}
}

/* ══ LOT 5b — 08 · maturités · qui est derrière · contact ═══════════════════
   The page closes on what is true rather than on a call to action: eight
   systems, eight public states, nothing sold. */
.standing .wrap{padding-top:clamp(64px,7vw,104px);padding-bottom:clamp(64px,7vw,104px)}
.standing-head{margin-bottom:clamp(28px,3vw,44px)}
.standing-head h2{margin:0;font-size:clamp(1.9rem,3.4vw,3.2rem)}
.maturity-board{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.maturity-board li{border-bottom:1px solid var(--line)}
.maturity-board a{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 20px;padding:14px 0;min-height:56px;border:0}
.maturity-board strong{font-size:clamp(1rem,1.3vw,1.15rem);font-weight:560;letter-spacing:-.015em}
.maturity-board span{justify-self:end;font-size:.82rem;color:var(--muted);white-space:nowrap}
.maturity-board a:hover strong,.maturity-board a:focus-visible strong{text-decoration:underline;text-underline-offset:4px}
.standing-foot{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:24px clamp(24px,4vw,72px);margin-top:clamp(36px,4vw,60px);padding-top:26px;border-top:1px solid var(--line)}
.standing-foot h3{margin:0 0 8px;font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:620}
.standing-foot p{margin:0;font-size:clamp(.98rem,1.1vw,1.1rem);line-height:1.5}
.standing-foot a{border-bottom:1px solid currentColor;padding-bottom:2px;display:inline-flex;align-items:center;min-height:44px}
@media(max-width:520px){
  .maturity-board a{grid-template-columns:minmax(0,1fr)}
  .maturity-board span{justify-self:start}
}

/* LOT 9b — the Assistant section lead replaces a two-clause emotional line
   with a paragraph that states what the Assistant actually does. */
.talk-lead{margin:16px 0 0;max-width:52ch;font-size:clamp(.95rem,1.05vw,1.05rem);line-height:1.55;color:#3f3f46}

/* ══ HOME V3 ═══════════════════════════════════════════════════════════════
   FT_RC_CONTENT_ARCHITECTURE_LOCK_V3 + ADDENDUM_V3.

   Home humaine d'abord. Le tableau comparatif IA / système est réintégré par
   ADDENDUM_V4, à l'intérieur de la section 02 et jamais avant : le Hero ne nomme
   pas l'IA et aucune comparaison n'ouvre la lecture. Aucun mur de
   cartes. Les cinq blocs neufs réutilisent la langue visuelle V5 déjà approuvée
   — filets, index monospace, un seul fond encre, colonnes de lecture courtes —
   plutôt que d'ouvrir une direction graphique nouvelle.

   Ordre : 01 hero · 02 différence · 03 règles · 04 preuves · 05 ce qui
   s'accumule · 06 transition · 07 systèmes · 08 assistant · 09 maturités.

   Le CSS des sections retirées (.constraints, .terrains, .method,
   .patrimony-learning) reste au-dessus, intact : le contenu est archivé dans
   docs/release/FT_RC_HOME_V2_RETIRED_SECTIONS.md et se recolle sans style neuf.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Alias d'ancre historique. Aucune surface, aucune section Méthode visible :
   il existe pour qu'un ancien lien /#methode atterrisse sur la doctrine
   réellement publiée, qui est désormais #regles. */
.anchor-alias{display:block;height:0;overflow:hidden;scroll-margin-top:132px}
@media(max-width:820px){.anchor-alias{scroll-margin-top:120px}}

/* ── 01 · HERO ──────────────────────────────────────────────────────────────
   Le H1 fait 61 signes contre 38 en V5.4C : il descend d'un cran pour tenir en
   trois lignes au lieu de cinq, et le registre humain se lit mieux à cette
   taille que hurlé. Les quatre situations respirent sur filets, chacune en une
   ligne au-dessus de 820px, empilées en dessous. */
.hero h1{max-width:22ch;font-size:clamp(2.3rem,3.6vw,4rem);line-height:1;margin:0 0 20px}
.hero-lead{max-width:56ch;margin:0 0 14px;font-size:clamp(1rem,1.2vw,1.18rem);line-height:1.5}
.hero-claim{margin:0 0 26px;max-width:40ch;font-size:clamp(1.15rem,1.7vw,1.6rem);font-weight:540;line-height:1.15;letter-spacing:-.035em}
.hero-situations{list-style:none;margin:0 0 16px;padding:0;border-top:1px solid var(--line)}
.hero-situations li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:baseline;gap:3px clamp(16px,2vw,32px);padding:11px 0;border-bottom:1px solid var(--line)}
.hero-situations span{color:var(--muted);font-size:.95rem;line-height:1.4}
.hero-situations b{font-size:1.02rem;font-weight:560;line-height:1.35;letter-spacing:-.015em}
.hero-situations-close{margin:0 0 24px;font-size:clamp(1rem,1.2vw,1.18rem);line-height:1.4;color:var(--ink)}
.hero-actions{gap:16px 22px}

/* Le rideau d'entrée suit le nouvel ordre de lecture du hero. */
.wow-loaded .hero-copy .hero-claim{animation-delay:.34s}
.wow-loaded .hero-copy .hero-situations{animation-delay:.41s}
.wow-loaded .hero-copy .hero-situations-close{animation-delay:.48s}
.wow-loaded .hero-copy .hero-actions{animation-delay:.55s}

@media(max-width:1100px){.hero h1{max-width:22ch}}
@media(max-width:820px){
  .hero h1{max-width:20ch;font-size:clamp(2rem,6.4vw,3.1rem);line-height:1.02}
  .hero-situations li{grid-template-columns:minmax(0,1fr);gap:2px;padding:13px 0}
}
@media(max-width:520px){
  .hero-copy h1{font-size:clamp(1.9rem,8.4vw,2.6rem)}
  .hero-claim{font-size:clamp(1.1rem,5.2vw,1.4rem)}
}

/* ── 02 · LA DIFFÉRENCE, EN CLAIR ───────────────────────────────────────────
   Le corps reste une colonne de lecture courte. Le tableau comparatif, réintégré
   par ADDENDUM_V4, vient APRÈS lui et ne le remplace pas : on lit d’abord la
   phrase, on compare ensuite. */
.difference{background:var(--soft);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.difference .wrap{padding-top:clamp(72px,8vw,116px);padding-bottom:clamp(72px,8vw,116px)}
/* Un max-width en ch sur le conteneur se calcule avec SA police, pas celle du
   titre : 22ch valaient 233px pour un H2 de 52px, soit six lignes hachees.
   La mesure appartient au titre lui-meme. */
.difference-head{margin-bottom:clamp(30px,3.4vw,48px)}
.difference-head h2{margin:0;max-width:20ch;font-size:clamp(1.9rem,3.6vw,3.6rem);line-height:1.02}
.difference-body{max-width:62ch;border-top:1px solid var(--line);padding-top:24px}
.difference-body p{margin:0 0 16px;font-size:clamp(1rem,1.15vw,1.15rem);line-height:1.55;color:#26262c}
.difference-body .difference-turn{margin:0;font-size:clamp(1.15rem,1.8vw,1.7rem);font-weight:540;line-height:1.18;letter-spacing:-.035em;color:var(--ink)}
.difference-close{max-width:66ch;margin-top:clamp(38px,4vw,64px);padding-top:26px;border-top:1px solid var(--line)}
.difference-refusal{margin:0 0 12px;color:var(--muted);font-size:clamp(1rem,1.15vw,1.15rem);line-height:1.5}
.difference-aim{margin:0;font-size:clamp(1.2rem,2.1vw,2.1rem);font-weight:520;line-height:1.18;letter-spacing:-.035em}

/* Tableau comparatif (ADDENDUM_V4). Deux listes parallèles sur filets, même
   langue visuelle que les règles : filet, libellé monospace, aucune couleur
   nouvelle. Les colonnes s'empilent sous 720px — à cette largeur, deux colonnes
   de six et sept entrées deviennent deux colonnes de mots coupés. La colonne
   métier porte le filet encre : c'est celle qui compte, et la dissymétrie
   six/sept reste lisible parce que rien n'aligne les lignes entre elles. */
.ai-compare{max-width:74ch;margin-top:clamp(40px,4.4vw,68px);padding-top:28px;border-top:1px solid var(--line)}
.ai-compare-title{margin:0 0 clamp(24px,2.6vw,36px);font-size:clamp(1.15rem,1.9vw,1.75rem);font-weight:540;line-height:1.22;letter-spacing:-.03em;color:var(--ink)}
.ai-compare-title span{display:block;color:var(--muted)}
.ai-compare-grid{display:grid;grid-template-columns:1fr;gap:clamp(28px,3vw,44px)}
.ai-compare-col{border-top:1px solid var(--line);padding-top:16px}
.ai-compare-col--metier{border-top-color:var(--ink)}
.ai-compare-label{margin:0 0 14px;font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);line-height:1.35}
.ai-compare-col--metier .ai-compare-label{color:var(--ink)}
.ai-compare-col ul{margin:0;padding:0;list-style:none}
.ai-compare-col li{padding:7px 0;font-size:clamp(.98rem,1.1vw,1.1rem);line-height:1.45;color:#26262c}
.ai-compare-col li+li{border-top:1px solid var(--line)}
.ai-compare-col--metier li{color:var(--ink);font-weight:480}
.ai-compare-close{margin:clamp(26px,2.8vw,40px) 0 0;padding-top:22px;border-top:1px solid var(--line);font-size:clamp(1.05rem,1.5vw,1.35rem);font-weight:520;line-height:1.3;letter-spacing:-.02em;color:var(--ink)}
@media (min-width:720px){
  .ai-compare-grid{grid-template-columns:1fr 1fr;gap:clamp(32px,3.4vw,56px)}
}

/* ── 03 · LES RÈGLES OXANN ──────────────────────────────────────────────────
   Dix convictions, pas dix cartes. Rangs pleine largeur sur filets, index
   monospace, colonne de lecture courte : la longueur inégale des règles fait
   elle-même le rythme. Fond encre, comme la doctrine l'avait déjà en V2.
   Le rouge reste hors de ce fond : #d9261c sur l'encre calcule 3,84:1 et ne
   passerait AA sur aucun de ces corps de texte. */
.rules{background:var(--ink);color:var(--paper)}
.rules .wrap{padding-top:clamp(76px,8.5vw,124px);padding-bottom:clamp(76px,8.5vw,124px)}
.rules-head{margin-bottom:clamp(34px,4vw,58px)}
.rules-head h2{margin:0;color:var(--paper);font-size:clamp(2.2rem,4.6vw,4.6rem)}
.rule-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.3)}
.rule{display:grid;grid-template-columns:clamp(52px,6vw,104px) minmax(0,1fr);align-items:start;gap:0 clamp(16px,2.6vw,44px);padding:clamp(20px,2.3vw,32px) 0;border-bottom:1px solid rgba(255,255,255,.16)}
.rule-index{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;line-height:1.9;color:rgba(255,255,255,.55)}
.rule-line{margin:0;max-width:34ch;color:var(--paper);font-size:clamp(1.2rem,2vw,2rem);font-weight:520;line-height:1.16;letter-spacing:-.03em;text-wrap:pretty}
@media(max-width:520px){
  .rule{grid-template-columns:minmax(0,1fr);gap:8px}
  .rule-index{line-height:1.2}
}

/* ── 04 · MICRO-PREUVES ─────────────────────────────────────────────────────
   Volontairement différentes des règles : fond papier, deux colonnes, titres
   cliquables vers le cas, et dans chaque preuve la facilité est en gris tandis
   que la question difficile est en encre. La maturité reste lisible mais
   secondaire — un intitulé bordé, jamais un titre. */
.proofs .wrap{padding-top:clamp(76px,8.5vw,120px);padding-bottom:clamp(76px,8.5vw,120px)}
.proofs-head{margin-bottom:clamp(32px,3.6vw,52px)}
.proofs-head h2{margin:0;font-size:clamp(2.1rem,4.2vw,4.2rem)}
.proof-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--ink)}
.micro-proof{padding:clamp(24px,2.6vw,38px) clamp(20px,2.4vw,40px) clamp(28px,3vw,44px) 0;border-bottom:1px solid var(--line);min-width:0}
.micro-proof:nth-child(even){padding-right:0;padding-left:clamp(20px,2.4vw,40px);border-left:1px solid var(--line)}
.micro-proof h3{margin:0;font-size:clamp(1.3rem,2.1vw,2rem);letter-spacing:-.04em;line-height:1.1}
.micro-proof h3 a{display:inline-flex;align-items:center;min-height:44px;border-bottom:1px solid transparent}
.micro-proof h3 a:hover,.micro-proof h3 a:focus-visible{border-bottom-color:currentColor}
.micro-proof-state{margin:6px 0 20px;display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border:1px solid var(--line);font-size:.78rem;letter-spacing:.02em;color:var(--muted);white-space:nowrap}
.micro-proof-easy{margin:0 0 10px;max-width:42ch;color:var(--muted);font-size:clamp(.95rem,1.05vw,1.05rem);line-height:1.5}
.micro-proof-hard{margin:0;max-width:44ch;color:var(--ink);font-size:clamp(1rem,1.2vw,1.2rem);font-weight:520;line-height:1.42;letter-spacing:-.015em}
@media(max-width:820px){
  .proof-grid{grid-template-columns:minmax(0,1fr)}
  .micro-proof,.micro-proof:nth-child(even){padding-left:0;padding-right:0;border-left:0}
}

/* ── 05 · CE QUI S ACCUMULE — clôture fondateur ── */
.patrimony-close{margin-top:clamp(34px,3.6vw,54px);padding-top:26px;border-top:1px solid var(--line)}
.patrimony-gain{margin:0 0 14px;max-width:34ch;font-size:clamp(1.4rem,2.6vw,2.6rem);font-weight:540;line-height:1.1;letter-spacing:-.04em}
.patrimony-limit{margin:0;max-width:54ch;color:var(--muted);font-size:clamp(.95rem,1.05vw,1.05rem);line-height:1.55}

/* ── 06 · TRANSITION — une respiration, pas une section de plus ── */
.rules-applied{border-top:1px solid var(--line)}
.rules-applied .wrap{padding-top:clamp(56px,6vw,88px);padding-bottom:clamp(56px,6vw,88px)}
.rules-applied-inner{max-width:62ch}
.rules-applied-inner h2{margin:0 0 14px;font-size:clamp(1.7rem,3vw,2.9rem);line-height:1.06}
.rules-applied-inner p{margin:0;max-width:52ch;color:var(--muted);font-size:clamp(1rem,1.2vw,1.2rem);line-height:1.5}

/* ── pied de page : la doctrine publiée remplace l'ancienne devise Méthode ── */
.site-foot a{display:inline-flex;align-items:center;min-height:44px;border-bottom:1px solid currentColor;padding-bottom:2px}

/* ── LOT L6 — hero: positionnement agents / orchestration / preuve ───────────
   ADDENDUM_V5 remplace l'accroche « une réponse ne suffit pas » par la séquence
   fondateur. Le message est plus long en deux phrases qu'en une, et la règle
   d'origine — max-width:13ch à clamp(3.55rem,5.1vw,6.4rem) — le renvoyait sur
   cinq lignes : premier écran saturé, capture produit chassée sous la ligne de
   flottaison. On élargit la mesure et on réduit le corps pour que la première
   phrase tienne en deux lignes et la seconde en une seule.
   « L'orchestration non plus. » occupe donc sa propre ligne : c'est la bascule
   du propos, elle ne doit pas se fondre dans la phrase précédente. */
.hero h1{max-width:24ch;font-size:clamp(2.5rem,3.8vw,4.4rem);line-height:1}
#hero-title span{display:block}
@media(max-width:1100px){.hero h1{max-width:22ch}}
@media(max-width:820px){.hero h1{max-width:20ch;font-size:clamp(2.1rem,7.4vw,3.4rem);line-height:1.02}}
@media(max-width:520px){.hero-copy h1{font-size:clamp(1.85rem,8.2vw,2.5rem)}}

/* La boucle fermée : six étapes, jamais coupées au milieu d'un mot. Chaque
   étape reste insécable et la flèche vit dans le ::before du suivant, pour que
   le retour à la ligne tombe entre deux étapes et non entre une étape et sa
   flèche — c'est ce qui casse à 320px sinon. */
.hero-situations-close{margin:0 0 8px}
.hero-loop{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 9px;margin:0 0 24px;padding:0;list-style:none;color:var(--muted);font-size:clamp(.76rem,.92vw,.88rem);line-height:1.5}
.hero-loop li{white-space:nowrap}
.hero-loop li+li::before{content:"→";margin-right:9px;opacity:.6}
.wow-loaded .hero-copy .hero-loop{animation-delay:.52s}

/* ≤560px — la séquence fondateur est plus longue que l'accroche qu'elle
   remplace, et le CTA sortait du premier écran. Mesuré, pas supposé : 880px à
   320, 814 à 375, 821 à 390, pour une hauteur utile de 800. L'ancienne copy les
   tenait toutes.
   On resserre les intervalles, jamais le corps du texte : réduire la taille
   pour tout faire rentrer aurait produit le « texte miniature » que la décision
   fondateur interdit explicitement. */
@media(max-width:560px){
  .hero h1{margin:0 0 12px}
  .hero-lead{margin:0 0 10px}
  .hero-claim{margin:0 0 16px}
  .hero-situations{margin:0 0 10px}
  .hero-situations li{padding:9px 0}
  .hero-situations-close{margin:0 0 6px}
  .hero-loop{margin:0 0 16px}
}

/* ≤360px — dernier palier, ciblé sur les très petits écrans uniquement pour ne
   pas resserrer la plage 375-560 qui respire correctement. L'en-tête collant
   fait 68px : 104px de retrait laissaient 36px de vide au-dessus d'une accroche
   de quatre lignes, on en rend 12. Reste 24px de respiration. */
@media(max-width:360px){
  .hero{padding-top:80px}
  .hero h1{margin:0 0 8px;font-size:clamp(1.72rem,8vw,2.3rem);line-height:.98}
  .hero-lead{margin:0 0 8px}
  .hero-claim{margin:0 0 10px}
  .hero-situations{margin:0 0 8px}
  .hero-situations li{padding:6px 0}
  .hero-situations-close{margin:0 0 4px}
  .hero-loop{margin:0 0 10px}
}

/* ── LOT L6B — Hero : OXANN devient le sujet visuel, Estimer devient une preuve
   parmi d'autres ────────────────────────────────────────────────────────────
   Réutilise le langage visuel du schéma déjà établi plus bas sur la page
   (Courtage, Syndic Santé : .schema/.schema-surface/.schema-spine, role="img"
   + un seul aria-label en prose). Pas de nouvelle grammaire visuelle : le
   visiteur qui a déjà vu un schéma plus bas reconnaît celui-ci. */
.hero-proofstack{height:auto;min-height:0;aspect-ratio:auto;display:flex;flex-direction:column;gap:14px;align-self:center}
.hero-proofstack .schema-label+.schema-label{margin-top:2px}

/* ── LOT L6D — flux causal, pas trois colonnes comparées ──────────────────────
   .schema--duo (repris de Courtage/Syndic Santé) relie deux PAIRS via un spine
   central : une grammaire de comparaison, pas de séquence. Le Hero a besoin de
   l'inverse — situation PUIS OXANN PUIS conséquence — donc un variant dédié,
   vertical, où chaque étape mène visiblement à la suivante plutôt que d'être
   posée à côté d'elle. */
.schema--flow{display:flex;flex-direction:column;align-items:stretch;padding:18px 20px;gap:0}
.flow-stage{padding:13px 15px}
.flow-stage--in{border:1px solid var(--line);background:var(--paper)}
.flow-stage-name{margin:0 0 8px;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-weight:620}
.flow-stage--in ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.flow-stage--in li{border:1px solid var(--line);padding:5px 10px;font-size:.78rem;color:var(--muted);background:var(--soft)}
/* Le connecteur EST le point : un trait, pas une flèche décorative — le regard
   descend le rail sans avoir besoin de lire un glyphe pour comprendre le sens. */
.flow-rail{width:1px;height:22px;margin:0 auto;background:var(--line)}
/* OXANN est le poste de contrôle : seul bloc en fond plein et bordure ink dans
   un panneau par ailleurs gris — la boîte que le flux traverse, pas une étape
   comme les autres. */
.flow-stage--oxann{border:2px solid var(--ink);background:var(--paper);text-align:center;padding:16px 15px}
.flow-stage--oxann .flow-stage-name{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:-.02em;text-transform:none;color:var(--ink)}
.flow-stage--oxann .flow-stage-detail{margin:6px 0 0;font-size:.86rem;color:var(--muted)}
.flow-sequence{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.flow-sequence li{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:10px 2px;border-bottom:1px solid var(--line)}
.flow-sequence span{font-size:.86rem;font-weight:650;letter-spacing:-.01em;color:var(--ink)}
.flow-sequence b{font-size:.78rem;font-weight:500;color:var(--muted);text-align:right}
.flow-sequence li.is-proof span,.flow-sequence li.is-proof b{color:var(--focus);font-weight:650}
.hero-proofstack .schema-foot{margin-top:10px}

.hero-connected{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hero-connected li{border:1px solid var(--line);overflow:hidden;background:var(--soft)}
/* Traitement égal : même hauteur, même fond, même échelle de légende — une
   photo et une tuile texte ne doivent pas se lire comme un système fini à côté
   d'un placeholder inachevé. */
/* height DÉFINIE, pas min-height : l'image utilise height:100% + object-fit:cover
   pour tenir dans un petit cadre fixe. Sans hauteur définie sur ce conteneur,
   le pourcentage ne se résout plus et l'image retombe sur son ratio intrinsèque
   (1440×900 pour estimer.jpg) — mesuré : la ligne entière gonfle alors à 167px
   au lieu des 96px voulus, et étire la tuile Hop'n Bar avec elle via le stretch
   de grille. */
.connected-shot{position:relative;height:96px}
.connected-shot .proof-shot{position:static;margin:0;height:100%;box-shadow:none;background:transparent}
.connected-shot .proof-shot img{width:100%;height:100%;object-fit:cover;object-position:center top}
.connected-shot .proof-shot figcaption{position:absolute;left:0;right:0;bottom:0;flex-direction:column;align-items:flex-start;gap:2px;padding:7px 9px}
.connected-tile{height:96px;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:12px 14px}
.connected-tile p:first-child{margin:0;font-size:.86rem;font-weight:600;letter-spacing:-.02em}
.connected-tile p:last-child{margin:0;font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}

@media(max-width:560px){
  .hero-proofstack{gap:10px}
  .schema-label{margin:0 0 8px;font-size:.68rem;padding:4px 8px}
  .schema--flow{padding:14px 15px}
  .flow-stage{padding:11px 13px}
  .flow-stage--oxann{padding:13px}
  .flow-rail{height:16px}
  /* mesuré : le libellé Hop'n Bar sur deux lignes réclame jusqu'à 102px à
     320px. Hauteur définie (pas min-height, cf. commentaire plus haut sur le
     ratio intrinsèque de l'image) avec de la marge. */
  .connected-shot,.connected-tile{height:124px}
}
