/* Typographie locale — les quatre WOFF2 de assets/fonts/ (voir assets/fonts/README.txt).
   Les fichiers sont sous-ensemblés : latin + latin étendu + ponctuation, monnaies,
   flèches et opérateurs réellement employés par le site. Les axes variables pilotés
   par le CSS sont conservés (opsz et wght) ; sur Fraunces, les axes SOFT et WONK, que
   le site ne pilote jamais, sont épinglés à leur valeur par défaut.
   La variante Cormorant Garamond 600 italique a été retirée : aucune règle ne la
   déclenchait, `em` étant la seule à demander cette famille et en graisse 500. */
@font-face{font-family:"Fraunces";src:url("assets/fonts/fraunces-variable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("assets/fonts/cormorant-garamond-500-italic.woff2") format("woff2");font-style:italic;font-weight:500;font-display:swap}
@font-face{font-family:"Inter";src:url("assets/fonts/inter-variable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("assets/fonts/jetbrains-mono-variable.woff2") format("woff2");font-style:normal;font-weight:100 800;font-display:swap}
:root{--aurora-bg:#fafaf7;--paper-warm:#f2f0eb;--paper:#ffffff;--paper-soft:#fafaf7;--ink:#102128;--ink-2:#20363e;--muted:#607075;--line:rgba(16,33,40,.13);--line-strong:rgba(16,33,40,.24);--accent:#1e6f78;--accent-2:#2f8d96;--display:"Fraunces", Georgia, serif;--italic:"Cormorant Garamond", "Times New Roman", serif;--body:"Inter", Arial, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--shell:1180px;--gutter:18px;--ease:cubic-bezier(.22,.75,.2,1);--petrol:#1e6f78;--petrol-mid:#2f8d96;--petrol-soft:#89b8b4;--night:#0a1c22;--dark-text:#eef5f2;--dark-muted:rgba(238,245,242,.66);--home-surface:#fafaf7}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--home-surface)}
body{margin:0;color:var(--ink);font-family:var(--body);font-size:15.5px;line-height:1.68;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;background:var(--home-surface)}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
canvas{display:block;max-width:100%}
button{font:inherit}
input{font:inherit}
textarea{font:inherit}
::selection{background:#d8e8df;color:var(--ink)}
.shell{width:min(calc(100% - 2*var(--gutter)),var(--shell));margin-inline:auto}
.scroll-progress{position:fixed;z-index:1000;left:0;top:0;width:0;height:2px;box-shadow:0 0 16px rgba(47,141,150,.38);background:linear-gradient(90deg,var(--petrol),var(--petrol-mid),var(--petrol-soft))}
/* Lien d'évitement : hors du flux et invisible tant qu'il n'a pas le focus clavier,
   il ne modifie aucune composition. Reprend la grammaire des micro-libellés
   (mono, capitales, angles vifs) et le fond --ink des CTA primaires. */
.skip-link{position:fixed;z-index:1100;left:var(--gutter);top:0;transform:translateY(-120%);display:inline-flex;align-items:center;min-height:44px;padding:0 18px;background:var(--ink);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.10em;text-transform:uppercase;font-weight:600;transition:transform .25s var(--ease)}
.skip-link:focus,.skip-link:focus-visible{transform:translateY(8px);outline:2px solid var(--petrol-soft);outline-offset:3px}
/* Header & navigation */
.site-header{width:100%;height:80px;position:sticky;top:0;z-index:80;border-bottom:1px solid var(--line);backdrop-filter:blur(18px) saturate(120%);transition:background .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease);background:rgba(250,250,247,.92)}
.site-header.is-stuck{border-color:rgba(16,33,40,.11);background:rgba(250,250,247,.97);box-shadow:0 12px 38px rgba(16,33,40,.045)}
.header-inner{height:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:32px}
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.18em;width:max-content}
.desktop-nav{display:flex;align-items:center;gap:25px}
.nav-link{position:relative;font-size:15.5px;padding:8px 0;transition:color .25s;color:#000}
.nav-link:after{content:"";position:absolute;height:1px;left:0;right:100%;bottom:2px;transition:right .35s var(--ease);background:linear-gradient(90deg,var(--petrol),var(--petrol-mid),var(--petrol-soft))}
.nav-link:hover:after{right:0}
.nav-link.is-active:after{right:0}
.header-cta{justify-self:end;display:inline-flex;align-items:center;gap:9px;min-height:42px;padding:0 17px;border:1px solid var(--ink);background:var(--ink);color:#fff;font-size:14px;font-weight:650;transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease),transform .3s var(--ease)}
.menu-btn{display:none;justify-self:end;background:none;border:0;padding:10px 0;color:var(--ink);font-family:var(--mono);font-size:11px;letter-spacing:.085em;text-transform:uppercase;cursor:pointer}
.mobile-nav{position:fixed;z-index:90;top:72px;left:14px;right:14px;background:rgba(255,255,255,.97);backdrop-filter:blur(24px);border:1px solid var(--line);padding:18px;box-shadow:0 18px 60px rgba(10,27,33,.12)}
.mobile-nav .nav-link{display:block;padding:12px 4px;border-bottom:1px solid var(--line)}
.mobile-cta{display:block;margin-top:18px;padding:14px;background:var(--ink);color:white;text-align:center;font-size:13px;font-weight:600;transition:background .3s var(--ease),color .3s var(--ease)}
/* Breadcrumb keeps the original Seizm 46px/40px box; no exposed top gutter before dark heroes. */
.breadcrumb{gap:24px;display:flex;align-items:center;justify-content:flex-start;width:min(calc(100% - 2*var(--gutter)),var(--shell));max-width:var(--shell);height:auto;min-height:46px;margin:0 auto;font-family:var(--mono);font-size:10.5px;line-height:1.3;font-weight:400;letter-spacing:.085em;text-transform:uppercase;color:rgba(10,27,33,.595);background:transparent;border:0}
/* Le lien du fil d'ariane ne mesurait que 13px de haut. Le rembourrage vertical est
   absorbé par la hauteur minimale déjà réservée par `.breadcrumb` (46px, 40px en
   mobile) : la composition ne bouge pas, la cible atteint le minimum WCAG 2.2. */
.crumb-main a{transition:color .25s var(--ease);font-family:var(--mono);font-size:inherit;line-height:inherit;letter-spacing:inherit;text-transform:uppercase;color:rgba(10,27,33,.595);font-weight:400;padding-block:6px}
/* Typography */
.eyebrow{font-family:var(--mono);font-size:11.5px;line-height:1.25;letter-spacing:.135em;text-transform:uppercase;color:var(--petrol);font-weight:600}
/* text-wrap:balance répartit les lignes de chaque segment séparé par un <br> éditorial :
   il supprime les lignes orphelines d'un seul mot sans toucher ni au texte ni aux <br>,
   donc sans altérer la rupture rhétorique « affirmation / clause italique ».
   Ignoré silencieusement par les navigateurs qui ne le connaissent pas. */
h1{margin-top:0;font-family:var(--display);color:var(--ink);font-size:clamp(54px,5.1vw,70px);line-height:1.00;font-weight:470;letter-spacing:-.034em;text-wrap:balance}
h2{margin-top:0;font-family:var(--display);color:var(--ink);font-size:clamp(42px,3.65vw,50px);line-height:1.04;font-weight:470;letter-spacing:-.034em;text-wrap:balance}
h3{margin-top:0;font-family:var(--display);color:var(--ink);font-size:clamp(22px,2vw,30px);line-height:1.12;font-weight:470;letter-spacing:-.034em}
p{margin-top:0}
em{font-family:var(--italic);font-style:italic;font-weight:500;color:var(--accent);letter-spacing:-.035em}
h1 em{font-size:1.08em;line-height:.86}
h2 em{font-size:1.08em;line-height:.86}
.display-number{font-family:var(--display);font-variation-settings:"opsz" 78;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.045em;line-height:.92;font-size:40px;color:var(--petrol);font-weight:445}
.metric-value{font-family:var(--display);font-variation-settings:"opsz" 78;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.045em;line-height:.92;font-size:25px;white-space:nowrap;color:var(--petrol);font-weight:445}
.chapter-num{font-family:var(--display);font-variation-settings:"opsz" 78;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.045em;line-height:.92;font-size:34px;color:var(--petrol);font-weight:445}
.op-index{font-family:var(--display);font-variation-settings:"opsz" 78;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.045em;line-height:.92;font-size:27px;color:var(--petrol);font-weight:445}
.step-num{font-family:var(--display);font-variation-settings:"opsz" 78;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.045em;line-height:.92;font-size:26px;color:var(--petrol);font-weight:445}
.metric-label{display:block;margin-top:8px;font-family:var(--mono);font-size:10.5px;line-height:1.45;letter-spacing:.11em;text-transform:uppercase;color:rgba(16,33,40,.625)}
.number-caption{display:block;margin-top:8px;font-family:var(--mono);font-size:10.5px;line-height:1.45;letter-spacing:.11em;text-transform:uppercase;color:rgba(16,33,40,.625)}
.number-caption-standalone{margin-top:4px;color:var(--accent);font-weight:500}
/* Actions */
.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:54px;padding:0 24px;border:1px solid var(--ink);background:var(--ink);color:white;font-size:15px;font-weight:600;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s,color .35s}
.btn-quiet{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:54px;padding:0 24px;border:1px solid var(--ink);font-size:15px;font-weight:600;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s,color .35s;background:rgba(255,255,255,.84);color:var(--ink);border-color:var(--line-strong)}
.btn-primary span{transition:transform .3s var(--ease);display:inline-block}
.btn-quiet span{transition:transform .3s var(--ease);display:inline-block}
.text-link{display:inline-flex;align-items:center;gap:9px;font-size:15px;font-weight:600;border-bottom:1px solid var(--line-strong);padding-bottom:5px;width:max-content}
.text-link span{transition:transform .3s var(--ease)}
.text-link:hover span{transform:translateX(3px)}
/* Motion & section utilities */
/* Progressive enhancement : le contenu est visible par défaut. Le masquage initial
   n'est appliqué que sous html.reveal-ready, classe posée par script.js uniquement
   APRÈS l'initialisation réussie de l'observateur de reveal. Si script.js est absent,
   bloqué, ou lève une exception avant la fin de cette initialisation, la classe
   n'existe pas et l'intégralité du contenu reste visible. */
.reveal{opacity:1;transform:none}
html.reveal-ready .reveal{opacity:0;transform:translateY(18px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
html.reveal-ready .reveal.is-in{opacity:1;transform:none}
/* Contenu critique initial : les blocs de Hero sont toujours au-dessus de la ligne de
   flottaison. Les laisser dépendre de l'observateur retardait leur peinture jusqu'à
   l'exécution de script.js, alors que le H1 est l'élément LCP de chaque page.
   Leur entrée est donc jouée par le CSS, qui démarre dès l'application des styles :
   même durée, même courbe, même translation que le reveal au scroll. La règle sous
   `reveal-ready` neutralise le masquage initial pour ces blocs uniquement ; tout le
   reste de la page conserve le reveal piloté par l'IntersectionObserver.
   Sans JS : `.reveal` reste à opacity 1 et l'animation se joue quand même.
   En mouvement réduit : l'animation est supprimée et le contenu est visible d'emblée.
   L'animation est volontairement SANS mode de remplissage : hors de sa durée, l'état
   provient de la cascade, où ces blocs sont opaques. Si l'animation ne s'exécute pas,
   pour quelque raison que ce soit, le contenu reste donc visible — comme le veut le
   principe d'amélioration progressive appliqué au reste du fichier. */
.hero-copy.reveal,.hero-side.reveal,.page-hero.reveal,.rescue-hero-grid>.reveal,
.contact-copy.reveal,.contact-form-premium.reveal,.confirmation-card.reveal{
  animation:heroEntree .85s var(--ease)}
html.reveal-ready .hero-copy.reveal,html.reveal-ready .hero-side.reveal,
html.reveal-ready .page-hero.reveal,html.reveal-ready .rescue-hero-grid>.reveal,
html.reveal-ready .contact-copy.reveal,html.reveal-ready .contact-form-premium.reveal,
html.reveal-ready .confirmation-card.reveal{opacity:1;transform:none;transition:none}
@keyframes heroEntree{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
/* Un formulaire renvoyé en erreur ne doit jamais dépendre du reveal : le résumé est
   affiché immédiatement, sans fondu et sans attendre l'observateur ni le JS. */
html.reveal-ready .reveal:has(.form-error-summary){opacity:1;transform:none;transition:none}
.section-space{padding:112px 0}
.section-space-small{padding:82px 0}
.tone-warm{background:var(--paper-warm)}
.tone-white{background:var(--paper)}
.tone-soft{background:var(--paper-soft)}
.section-line{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.section-intro{max-width:700px;margin-bottom:48px}
.section-intro h2{margin:14px 0 16px}
.section-intro p{max-width:610px;color:var(--muted)}
/* Home hero */
/* Hauteur adaptative : 792px reste la hauteur cible et est atteinte dès que la fenêtre
   est assez haute (>= ~872px, soit 1440x900 et au-delà : rendu strictement identique
   à l'ancien). Sur les fenêtres basses (1366x650 typiquement), le hero se cale sur la
   hauteur utile restante afin que le CTA principal ne passe plus sous la ligne de
   flottaison. `min-height` seul : si le contenu dépasse, le hero s'agrandit au lieu
   d'être rogné par `overflow:hidden`. Repli `vh` avant `svh` pour les navigateurs
   antérieurs à svh (Chrome < 108 / Safari < 15.4). */
.hero-home{position:relative;isolation:isolate;display:flex;align-items:center;overflow:hidden;background:var(--aurora-bg);min-height:clamp(560px,calc(100vh - 80px),792px);min-height:clamp(560px,calc(100svh - 80px),792px)}
.aurora-canvas{position:absolute;z-index:-3;inset:0;width:100%;height:100%;opacity:.56}
.hero-home:before{content:"";position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,rgba(250,250,247,.985) 0%,rgba(250,250,247,.94) 43%,rgba(250,250,247,.52) 73%,rgba(250,250,247,.88) 100%)}
.hero-home:after{content:"";position:absolute;z-index:-1;width:68vw;height:68vw;right:-29vw;top:-27vw;border:1px solid rgba(47,141,150,.18);border-radius:50%;border-color:rgba(30,111,120,.13);box-shadow:0 0 0 82px rgba(47,141,150,.022),0 0 0 164px rgba(137,184,180,.015);transform-origin:50% 50%;animation:heroHaloDrift 18s cubic-bezier(.45,.05,.35,1) infinite alternate}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.14fr) minmax(260px,.50fr);gap:clamp(64px,8vw,120px);align-items:center;padding:76px 0 80px}
.hero-copy{max-width:720px}
.hero-copy h1{margin:20px 0 24px;max-width:720px}
.hero-lead{margin-bottom:30px;font-family:var(--display);font-weight:340;font-variation-settings:"opsz" 34,"wght" 340;font-size:18.5px;line-height:1.72;letter-spacing:-.012em;color:var(--muted);max-width:700px}
.hero-actions{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.hero-side{align-self:center;display:grid;grid-template-columns:1px 1fr;column-gap:23px;row-gap:24px;max-width:300px}
.side-rule{grid-row:1/4;width:1px;height:100%;position:relative;background:linear-gradient(180deg,transparent,var(--petrol-mid),var(--petrol),transparent)}
.side-rule:after{content:"";position:absolute;left:-2px;top:18%;width:5px;height:5px;border-radius:50%;animation:railPulse 4s ease-in-out infinite;background:var(--petrol);box-shadow:0 0 14px rgba(30,111,120,.38)}
@keyframes railPulse{0%,100%{top:12%;opacity:.4}50%{top:82%;opacity:1}}
.side-item{display:grid;grid-template-columns:16px 1fr;gap:12px;align-items:start}
.side-mark{width:6px;height:6px;margin-top:7px;border:1px solid var(--accent);transform:rotate(45deg);opacity:.82}
.side-item p{font-size:12.5px;line-height:1.55;color:rgba(16,33,40,.615);margin:1px 0 0}
/* Home content */
.entry-grid{display:grid;grid-template-columns:.70fr 1.35fr;gap:92px;align-items:start}
.entry-intro{position:sticky;top:145px;max-width:380px}
.entry-intro h2{margin:13px 0 18px}
.entry-intro p{color:var(--muted)}
.entry-cases{border-top:1px solid var(--line)}
.entry-case{display:grid;grid-template-columns:86px minmax(0,1fr);gap:24px;padding:38px 0;border-bottom:1px solid var(--line)}
.entry-case h3{font-size:29px;margin:2px 0 12px}
.entry-case p{margin:0;color:var(--muted);max-width:560px}
.kinetic-grid{display:grid;grid-template-columns:minmax(260px,.70fr) minmax(500px,1.05fr);gap:clamp(70px,9vw,130px);align-items:start}
.kinetic-sticky{position:sticky;top:145px;max-width:420px}
.kinetic-sticky h2{margin:14px 0 20px}
.kinetic-sticky p{max-width:400px;color:var(--muted);margin-bottom:26px}
.kinetic-stack{padding-top:8px}
.kinetic-row{--shift:0px;display:grid;grid-template-columns:58px minmax(150px,.70fr) minmax(220px,1fr);gap:20px;align-items:center;border-top:1px solid var(--line);padding:29px 0 31px;transform:translateX(var(--shift));transition:transform .65s var(--ease),opacity .8s var(--ease)}
.kinetic-row:last-child{border-bottom:1px solid var(--line)}
.kinetic-row h3{font-size:29px;margin:0}
.kinetic-row p{margin:0;color:var(--muted);font-size:13.5px;max-width:320px}
.kinetic-row:hover{border-color:rgba(30,111,120,.44)}
.rescue-teaser{padding:108px 0}
.rescue-teaser-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(310px,.64fr);gap:clamp(70px,9vw,125px);align-items:end}
.rescue-teaser h2{margin:14px 0 0;max-width:680px}
.rescue-copy{max-width:450px}
.rescue-copy p{font-size:14.5px;line-height:1.78;color:var(--muted);margin-bottom:27px}
.home-offers-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.60fr);gap:70px;align-items:end;margin-bottom:46px}
.home-offers-head h2{margin:14px 0 0}
.home-offers-head>p{max-width:450px;color:var(--muted);margin:0}
.offer-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.offer-preview{position:relative;min-height:210px;padding:27px 28px;display:grid;grid-template-columns:58px 1fr auto;grid-template-rows:1fr auto;gap:16px;border:1px solid var(--line);background:rgba(255,255,255,.72);overflow:hidden;transition:transform .4s var(--ease),background .4s,border-color .4s}
.offer-preview:hover{transform:translateY(-2px);background:rgba(239,246,246,.72);border-color:rgba(30,111,120,.24);box-shadow:none}
.offer-preview small{font-family:var(--mono);color:var(--petrol);font-size:11.5px;letter-spacing:.085em;font-weight:500;line-height:1.25}
.offer-preview h3{font-size:27px;margin:9px 0 0;max-width:330px}
.offer-preview strong{font-family:var(--display);font-variation-settings:"opsz" 48;font-size:20px;color:var(--accent);justify-self:end;white-space:nowrap;font-weight:460}
.center-link{display:flex;justify-content:center;margin-top:32px}
/* Internal-page hero */
.page-hero{padding:92px 0 88px}
.page-hero h1{margin:16px 0 22px;max-width:810px}
/* Solutions */
.solution-editorial{padding:0 0 104px}
.solution-chapter{display:grid;grid-template-columns:92px minmax(0,1fr);gap:36px;padding:46px 0;border-top:1px solid var(--line)}
.solution-chapter:last-child{border-bottom:1px solid var(--line)}
.chapter-main{max-width:720px}
.chapter-main h2{font-size:34px;margin:0 0 14px}
.chapter-main>p{color:var(--muted);max-width:610px}
.chapter-list{grid-column:2;display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;margin-top:8px;max-width:760px}
.chapter-list span{position:relative;display:flex;align-items:center;min-height:54px;padding:14px 18px 14px 22px;font-size:12.75px;line-height:1.5;color:var(--ink-2);background:rgba(255,255,255,.82);border:1px solid var(--line);box-shadow:0 8px 20px rgba(16,33,40,.025);transition:transform .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease)}
.chapter-list span:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:2px;background:linear-gradient(180deg,var(--accent),rgba(30,111,120,.18))}
.chapter-list span:hover{transform:translateY(-1px);border-color:rgba(30,111,120,.22);background:#fff}
.example-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.example-card{border:1px solid var(--line);background:rgba(255,255,255,.72);padding:28px;min-height:315px;display:flex;flex-direction:column}
.example-card h3{font-size:26px;margin:30px 0 14px}
.example-card p{font-size:13px;color:var(--muted)}
.example-card ul{padding:0;margin:auto 0 0;list-style:none}
.example-card li{font-size:12px;padding:7px 0;border-top:1px solid var(--line)}
.tool-cloud{align-content:flex-start;display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.tool-cloud span{transition:border-color .3s,background .3s,color .3s,transform .3s;font-family:var(--mono);font-size:12px;letter-spacing:.08em;border:1px solid var(--line);background:#fff;padding:9px 12px;color:var(--ink-2)}
.tool-cloud span:hover{border-color:rgba(30,111,120,.46);background:#f6faf7;color:var(--ink);transform:translateY(-2px)}
/* Offers & maintenance cards */
.offer-intro-flow{display:grid;grid-template-columns:92px 1fr;gap:36px;padding:40px 0;border-top:1px solid var(--line)}
.offer-intro-flow:last-child{border-bottom:1px solid var(--line)}
.offer-intro-flow h3{font-size:30px;margin:0 0 10px}
.offer-intro-flow p{max-width:630px;color:var(--muted)}
.offer-note{max-width:700px;margin:14px 0 0;font-size:13px;line-height:1.68;color:var(--ink-2)}
.offer-note strong{color:var(--ink);font-weight:600}
.section-note{max-width:760px;margin:-18px 0 26px;font-size:13px;line-height:1.68;color:var(--ink-2)}
.section-note strong{color:var(--ink);font-weight:600}
.mission-list{display:grid;gap:18px}
.mission-frame{position:relative;border:1px solid var(--line);background:rgba(255,255,255,.78);padding:0 30px 31px;overflow:hidden;transition:transform .4s var(--ease),background .4s,border-color .4s,box-shadow .4s}
.mission-frame:hover{transform:translateY(-2px);background:rgba(239,246,246,.72);border-color:rgba(30,111,120,.24);box-shadow:none}
.frame-top{display:grid;grid-template-columns:60px 1fr auto;gap:18px;align-items:center;padding:24px 0;border-bottom:1px solid var(--line)}
.frame-top small{font-family:var(--mono);text-transform:uppercase;color:var(--petrol);font-size:11.5px;letter-spacing:.085em;font-weight:500;line-height:1.25}
.frame-top strong{font-family:var(--display);font-variation-settings:"opsz" 48;font-size:21px;color:var(--accent);white-space:nowrap;font-weight:460}
.frame-body{display:grid;grid-template-columns:minmax(0,.86fr) minmax(300px,.80fr);gap:68px;padding:31px 0 5px}
.frame-body h3{font-size:34px;margin:0 0 12px}
.frame-body p{color:var(--muted);font-size:13.5px}
.feature-list{list-style:none;padding:0;margin:0}
.feature-list li{padding:9px 0;border-top:1px solid var(--line);font-size:12px}
.feature-list li:last-child{border-bottom:1px solid var(--line)}
.budget-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
/* min-width:0 : sans lui, le min-content d'un enfant en width:max-content (.text-link)
   élargit la piste de grille au-delà de la .shell et déborde sous ~361px. */
.budget-panel{padding:30px;border:1px solid var(--line);background:rgba(255,255,255,.62);min-width:0}
.budget-panel .text-link{max-width:100%}
.budget-panel h3{font-size:27px;margin:0 0 18px}
.budget-panel ul{list-style:none;padding:0;margin:0}
.budget-panel li{padding:9px 0;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}
.delivery-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:rgba(255,255,255,.55)}
.delivery-grid article{padding:28px;border-right:1px solid var(--line)}
.delivery-grid article:last-child{border-right:0}
.delivery-grid h3{font-size:26px;margin:24px 0 12px}
.delivery-grid p{font-size:12.5px;color:var(--muted);margin:0}
/* Reprise & évolution */
.rescue-hero-premium{min-height:630px;display:flex;align-items:center;isolation:isolate;position:relative;overflow:hidden;background:var(--night);color:var(--dark-text)}
#rescue-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;opacity:.82}
.rescue-hero-premium:after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,rgba(10,28,34,.97) 0%,rgba(10,28,34,.91) 52%,rgba(10,28,34,.54) 80%,rgba(10,28,34,.90) 100%)}
.rescue-hero-grid{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(250px,.45fr);gap:90px;align-items:end;padding:88px 0}
.rescue-hero-grid>div:first-child{max-width:760px}
.rescue-hero-grid h1{margin:17px 0 22px}
.rescue-hero-grid p{margin-bottom:28px;font-family:var(--display);font-weight:340;font-variation-settings:"opsz" 34,"wght" 340;font-size:18.5px;line-height:1.72;letter-spacing:-.012em;color:var(--muted);max-width:700px}
.rescue-state{justify-self:end;width:235px;border-top:1px solid var(--line);padding-top:15px;font-family:var(--mono);font-size:10.5px;line-height:1.55;letter-spacing:.085em;color:var(--muted)}
.state-line{height:1px;background:var(--line);margin:19px 0;overflow:hidden}
.state-line i{display:block;width:60px;height:1px;background:linear-gradient(90deg,transparent,var(--accent-2),var(--petrol-soft),transparent);animation:stateMove 3.4s infinite ease-in-out}
@keyframes stateMove{0%{transform:translateX(-70px)}100%{transform:translateX(255px)}}
.rescue-state strong{display:block;color:var(--accent);font-family:var(--display);font-size:22px;letter-spacing:-.02em;font-weight:460}
.rescue-story-grid{display:grid;grid-template-columns:minmax(260px,.68fr) minmax(500px,1fr);gap:100px}
.rescue-sticky{position:sticky;top:145px;align-self:start}
.rescue-sticky h2{margin:14px 0 18px}
.rescue-sticky p{max-width:400px;color:var(--muted)}
.rescue-steps article{display:grid;grid-template-columns:62px 1fr;gap:20px;padding:29px 0;border-top:1px solid var(--line)}
.rescue-steps article:last-child{border-bottom:1px solid var(--line)}
.rescue-steps h3{font-size:29px;margin:0 0 8px}
.rescue-steps p{color:var(--muted);margin:0;max-width:520px;font-size:13.5px}
.rescue-cases-premium{padding:100px 0}
.case-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.case-grid article{min-height:250px;background:rgba(255,255,255,.74);border:1px solid var(--line);padding:27px 28px;display:flex;flex-direction:column;transition:transform .4s var(--ease),border-color .4s}
.case-grid article:hover{transform:translateY(-2px);border-color:rgba(30,111,120,.32)}
.case-grid h3{font-size:27px;margin:30px 0 13px}
.case-grid p{font-size:13px;color:var(--muted);margin:auto 0 0}
/* Contact */
.contact-premium{display:grid;grid-template-columns:minmax(0,.84fr) minmax(420px,.68fr);gap:clamp(76px,9vw,130px);padding:96px 0 110px;align-items:start}
.contact-copy{position:sticky;top:145px}
.contact-copy h1{font-size:clamp(44px,4.6vw,64px);margin:16px 0 22px}
.contact-copy>p{max-width:550px;color:var(--muted);font-size:15.5px}
.contact-points{display:grid;gap:0;margin-top:36px;border-top:1px solid var(--line);max-width:510px}
.contact-point{display:grid;grid-template-columns:58px 1fr;gap:14px;padding:17px 0;border-bottom:1px solid var(--line)}
.contact-point p{margin:0;font-size:12.5px;color:var(--muted)}
.contact-form-premium{background:rgba(255,255,255,.77);border:1px solid var(--line);padding:32px;position:relative}
.contact-form-premium:before{content:"";position:absolute;width:42px;height:42px;pointer-events:none;left:-1px;top:-1px;border-top:2px solid var(--accent-2);border-left:2px solid var(--accent-2);border-color:var(--petrol)}
.contact-form-premium:after{content:"";position:absolute;width:42px;height:42px;pointer-events:none;right:-1px;bottom:-1px;border-right:2px solid rgba(137,184,180,.65);border-bottom:2px solid rgba(137,184,180,.65);border-color:rgba(47,141,150,.68)}
.field{display:grid;gap:7px;margin-bottom:20px}
.field label{display:flex;align-items:baseline;gap:6px;min-height:16px;white-space:nowrap;font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.field input{width:100%;height:44px;border:1px solid rgba(16,33,40,.18);border-radius:0;background:rgba(255,255,255,.72);padding:0 13px;color:var(--ink);font-size:15px;line-height:1.3;outline:none;transition:border-color .25s,box-shadow .25s,background .25s}
.field textarea{width:100%;min-height:142px;border:1px solid rgba(16,33,40,.18);border-radius:0;background:rgba(255,255,255,.72);padding:12px 13px;color:var(--ink);font-size:15px;line-height:1.55;outline:none;transition:border-color .25s,box-shadow .25s,background .25s;resize:vertical}
.field input:focus{border-color:var(--accent);box-shadow:0 0 0 1px rgba(30,111,120,.10);background:#fff}
.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 1px rgba(30,111,120,.10);background:#fff}
/* Le `outline:none` des contrôles (spécificité 0,1,1) neutralisait la règle
   globale :focus-visible (0,1,0). On rétablit un anneau de focus visible au
   clavier uniquement, avec une spécificité suffisante (0,2,1). */
.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{outline:2px solid var(--petrol);outline-offset:2px}
/* min-width:0 : empêche un enfant au min-content large (label non sécable) d'élargir
   la piste de grille au-delà de la .shell. */
.field{min-width:0}
/* .43 ne donnait que 2,67:1 (WCAG 1.4.3 exige 4,5:1) alors que ces placeholders portent
   des exemples de saisie utiles. .62 mesure 4,7:1 : même teinte, même rôle secondaire,
   toujours nettement en retrait du texte saisi (--ink, plein). */
.field input::placeholder{font-size:14px;color:rgba(16,33,40,.62)}
.field textarea::placeholder{font-size:14px;color:rgba(16,33,40,.62)}
.field input:hover,.field textarea:hover,.field select:hover{border-color:rgba(30,111,120,.34)}
.form-help{font-size:11.5px;line-height:1.6;color:var(--muted);margin:13px 0 0}
:focus-visible{outline:2px solid var(--petrol-soft);outline-offset:4px;outline-color:var(--petrol)}
/* Sur fond nuit, --petrol (#1e6f78) ne donne que 2,98:1 : sous le seuil de 3:1 exigé
   par WCAG 1.4.11 pour un indicateur de focus. #9ecfcb, déjà présent dans la palette
   (em et eyebrows des blocs sombres), atteint 10,1:1 sur #0a1c22. */
.hero-home :focus-visible,.page-hero :focus-visible,.rescue-hero-premium :focus-visible,.tone-dark :focus-visible,.site-footer :focus-visible{outline-color:#9ecfcb}
@media (max-width:980px){
  .desktop-nav{display:none}
  .header-cta{display:none}
  .menu-btn{display:block}
  .header-inner{grid-template-columns:1fr auto}
  .site-header{height:68px}
  /* Sous 980px le hero redevient purement piloté par son contenu (rendu mobile inchangé). */
  .hero-home{min-height:auto}
  .hero-grid{grid-template-columns:1fr;gap:52px;padding:80px 0 90px}
  .hero-side{max-width:520px;grid-template-columns:1px 1fr}
  .entry-grid{grid-template-columns:1fr;gap:52px}
  .kinetic-grid{grid-template-columns:1fr;gap:52px}
  .rescue-teaser-grid{grid-template-columns:1fr;gap:52px}
  .home-offers-head{grid-template-columns:1fr;gap:52px}
  .rescue-story-grid{grid-template-columns:1fr;gap:52px}
  .contact-premium{grid-template-columns:1fr;gap:52px}
  .entry-intro{position:static}
  .kinetic-sticky{position:static}
  .rescue-sticky{position:static}
  .contact-copy{position:static}
  .kinetic-row{grid-template-columns:54px .7fr 1fr;transform:none !important}
  .offer-preview-grid{grid-template-columns:1fr}
  .solution-chapter{grid-template-columns:72px 1fr}
  .chapter-list{grid-column:2}
  .example-grid{grid-template-columns:1fr}
  .frame-body{grid-template-columns:1fr;gap:28px}
  .budget-grid{grid-template-columns:1fr}
  .delivery-grid{grid-template-columns:1fr}
  .delivery-grid article{border-right:0;border-bottom:1px solid var(--line)}
  .delivery-grid article:last-child{border-bottom:0}
  .rescue-hero-grid{grid-template-columns:1fr;gap:60px}
  .rescue-state{justify-self:start}
  .case-grid{grid-template-columns:1fr}
  .contact-form-premium{max-width:680px}
}
@media (max-width:700px){
  body{font-size:14.5px}
  .site-header{height:64px}
  .breadcrumb{gap:10px}
  h1{font-size:clamp(40px,11vw,54px)}
  h2{font-size:clamp(32px,8vw,42px)}
  .section-space{padding:86px 0}
  .section-space-small{padding:66px 0}
  .hero-grid{padding:66px 0 76px}
  .hero-actions{align-items:flex-start;flex-direction:column}
  .hero-side{display:none}
  .entry-case{grid-template-columns:1fr;gap:11px;padding:30px 0}
  .entry-case>div:first-child{min-width:0}
  .entry-case .number-caption-standalone{margin:0}
  .display-number{font-size:34px}
  .kinetic-row{grid-template-columns:44px 1fr;gap:12px;padding:24px 0}
  .kinetic-row p{grid-column:2}
  .kinetic-row h3{font-size:27px}
  .offer-preview{min-height:200px;grid-template-columns:45px 1fr}
  .offer-preview strong{grid-column:2;justify-self:start}
  .offer-intro-flow h3{font-size:clamp(27px,4.286vw,30px)}
  .page-hero{padding:72px 0 66px}
  /* Mobile: même grammaire que l’accueil et la méthode — numéro + intitulé sur une même ligne. */
  .solution-chapter{grid-template-columns:44px minmax(0,1fr);gap:12px;padding:35px 0}
  .solution-chapter>.chapter-num{grid-column:1;grid-row:1;align-self:start}
  .solution-chapter>.chapter-main{grid-column:2;grid-row:1}
  .chapter-list{grid-column:2;grid-template-columns:1fr}
  .chapter-main h2{font-size:31px}
  .example-card{min-height:260px}
  .frame-top{grid-template-columns:44px 1fr;gap:12px}
  .frame-top strong{grid-column:2;justify-self:start}
  .mission-frame{padding:0 20px 23px}
  .frame-body h3{font-size:clamp(28px,4.857vw,34px)}
  .rescue-hero-premium{min-height:auto}
  .rescue-hero-grid{padding:76px 0}
  .rescue-steps h3{font-size:27px}
  .contact-premium{padding:76px 0 88px}
  .contact-copy h1{font-size:43px}
  .contact-form-premium{padding:25px 21px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  *:before{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  *:after{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  .reveal,html.reveal-ready .reveal{opacity:1;transform:none}
  .aurora-canvas{opacity:.5}
  #rescue-canvas{opacity:.5}
}
.final-cta-inner{max-width:720px;text-align:center;margin-inline:auto}
.final-cta-inner h2{margin:14px 0 16px}
.final-cta-inner p{max-width:520px;margin:0 auto 25px;color:var(--muted)}
.contact-note{max-width:720px;margin:30px 0 0;color:var(--muted);font-size:12.5px}
@media (max-width:700px){
  .contact-point{grid-template-columns:52px 1fr}
  .contact-point .display-number{font-size:30px}
}
body[data-page="home"] .hero-home{background:var(--home-surface)}
.tone-dark{background:var(--night);color:var(--dark-text);border-color:rgba(255,255,255,.12)}
.tone-dark h2{color:var(--dark-text)}
.tone-dark h3{color:var(--dark-text)}
.tone-dark strong{color:var(--dark-text)}
.tone-dark em{color:#9ecfcb}
.tone-dark p{color:var(--dark-muted)}
.tone-dark li{color:var(--dark-muted)}
.tone-dark .eyebrow{color:#a7d8d3}
.tone-dark .text-link{color:var(--dark-text);border-color:rgba(255,255,255,.25)}
.tone-dark .btn-quiet{background:#f6f8f5;color:#102128;border-color:#f6f8f5}
.tone-dark .budget-panel{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.14)}
.tone-dark .delivery-grid{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.14)}
.tone-dark .budget-panel li{border-color:rgba(255,255,255,.12)}
.tone-dark .delivery-grid article{border-color:rgba(255,255,255,.12)}
.tone-dark .tool-cloud span{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);color:#e1f1f0}
.rescue-teaser.tone-dark h2{color:var(--dark-text)}
.rescue-teaser.tone-dark em{color:#9ecfcb}
.rescue-teaser.tone-dark .eyebrow{color:#8fc6c1}
.rescue-teaser.tone-dark .rescue-copy p{color:var(--dark-muted)}
.rescue-hero-premium h1{color:var(--dark-text)}
.rescue-hero-premium p{color:var(--dark-muted)}
.rescue-hero-premium .eyebrow{color:#8fc6c1}
.rescue-hero-premium .rescue-state{color:rgba(238,245,242,.66);border-color:rgba(255,255,255,.18)}
.rescue-hero-premium .rescue-state strong{color:#a7d8d3}
.rescue-hero-premium .state-line{background:rgba(255,255,255,.18)}
.rescue-hero-premium .btn-primary{background:#f6f8f5;color:#102128;border-color:#f6f8f5}
@media (max-width:1120px){
  .desktop-nav{gap:20px}
  .nav-link{font-size:14px}
  .header-cta{font-size:14px}
}
.header-cta span{display:inline-block;color:inherit}
.header-cta:hover{background:var(--petrol);border-color:var(--petrol);color:#fff}
.header-cta:hover span{transform:translateX(3px)}
.btn-primary:hover{background:var(--petrol);border-color:var(--petrol);color:#fff;box-shadow:0 14px 38px rgba(30,111,120,.16)}
.btn-quiet:hover{background:var(--petrol);border-color:var(--petrol);color:#fff}
.btn-primary:hover span{transform:translateX(3px)}
.btn-quiet:hover span{transform:translateX(3px)}
/* Home hero CTA and “Découvrir la reprise…” share one hover language. */
.hero-home .btn-primary:hover,.rescue-teaser.tone-dark .btn-quiet:hover{background:var(--petrol);border-color:var(--petrol);color:#fff;box-shadow:none}
.mobile-cta:hover{background:var(--petrol);color:#fff}
/* Le fil d'ariane est une <ol> depuis le Lot 2 : on neutralise marge, retrait et
   puces natives pour que le rendu reste strictement celui d'avant. */
.crumb-main{display:flex;align-items:center;gap:0;white-space:nowrap;list-style:none;margin:0;padding:0}
.crumb-main li{display:flex;align-items:center}
.crumb-main strong{font-family:var(--mono);font-size:inherit;line-height:inherit;letter-spacing:inherit;text-transform:uppercase;color:var(--ink);font-weight:500}
.crumb-main>span{font-family:var(--mono);font-size:inherit;line-height:inherit;letter-spacing:inherit;text-transform:uppercase}
.crumb-main a:hover{color:var(--petrol)}
.page-hero p{font-family:var(--display);font-weight:340;font-variation-settings:"opsz" 34,"wght" 340;font-size:18.5px;line-height:1.72;letter-spacing:-.012em;color:var(--muted);max-width:740px}
/* Editorial decision cards */
.postit-section{padding:86px 0 94px;background:var(--paper-soft);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.postit-intro{max-width:930px;margin-bottom:42px}
.postit-intro .eyebrow{margin-bottom:2px}
.postit-intro h2{max-width:760px;margin:14px 0 16px}
.postit-intro p{max-width:650px;margin:0;font-family:var(--body);font-weight:400;font-size:16.5px;line-height:1.72;letter-spacing:0;color:var(--muted)}
.postit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:930px}
.postit-card{position:relative;min-height:172px;padding:26px 28px 24px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:0;box-shadow:0 10px 30px rgba(16,33,40,.025);transition:transform .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease)}
.postit-card:before{content:"";position:absolute;left:28px;top:0;width:38px;height:2px;background:var(--petrol);transform:translateY(-1px)}
.postit-card:hover{transform:translateY(-2px);border-color:rgba(30,111,120,.28);box-shadow:0 16px 38px rgba(16,33,40,.045)}
.postit-card h3{font-size:23px;margin:0 0 10px;color:var(--petrol);font-weight:500}
.postit-card p{margin:0;color:#5d6d74;font-size:14px;line-height:1.65;max-width:360px}
.postit-card .postit-index{display:block;margin-bottom:17px;font-family:var(--mono);font-size:11.5px;line-height:1.25;letter-spacing:.10em;color:#6a787e;font-weight:500}
@media (max-width:980px){
  .hero-home{min-height:auto}
  .postit-intro p{font-size:15.5px;line-height:1.68}
}
@media (max-width:700px){
  .hero-lead{font-size:17.5px;line-height:1.68}
  .page-hero p{font-size:17.5px;line-height:1.68}
  .rescue-hero-grid p{font-size:17.5px;line-height:1.68}
  .breadcrumb{width:calc(100% - 36px);min-height:40px;margin:0 auto;font-size:10px}
  .postit-section{padding:68px 0 72px}
  .postit-intro{margin-bottom:30px}
  .postit-grid{grid-template-columns:1fr}
  .postit-card .postit-index{font-size:11px}
  .postit-card{min-height:0}
}
/* Le recadrage (aspect-ratio 3.5/1 + overflow:hidden + translate(-4.5%,-30.7%)) servait
   uniquement à cadrer l'ancien logo rasterisé 1444x938 (ratio 1.54), qu'il rognait à
   gauche et en haut. Le SVG vectoriel est détouré au ratio 3.52 : le recadrage est
   devenu inutile, et le translate décalerait désormais un logo déjà bien cadré. */
.footer-logo-link{display:block;width:min(238px,100%);margin:0 0 17px}
.footer-logo{display:block;width:100%;height:auto}
.rescue-hero-premium em{color:#9ecfcb}
.rescue-hero-premium .rescue-hero-grid p{color:rgba(238,245,242,.74)}
/* Brand assets */
.brand-logo-full{display:inline-flex;align-items:center;gap:0}
.brand-full{display:block;width:182px;height:auto;image-rendering:auto}
@media (max-width:980px){
  .brand-full{width:154px}
}
@media (max-width:700px){
  .brand-full{width:132px}
}
@media (max-width:700px){
  .offer-preview small{font-size:10.5px;letter-spacing:.08em}
  .frame-top small{font-size:10.5px;letter-spacing:.08em}
}
/* Hiérarchie éditoriale et numérotation */
.offer-preview-plain{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr;align-items:start}
.offer-preview-plain>div{grid-column:1}
.offer-preview-plain>strong{grid-column:2;grid-row:1}
.offer-intro-flow-plain{grid-template-columns:1fr;gap:0}
.flow-label{display:block;margin-bottom:10px;font-family:var(--mono);font-size:11.5px;line-height:1.35;letter-spacing:.10em;text-transform:uppercase;color:var(--accent);font-weight:500}
.mission-list-plain .frame-top{grid-template-columns:1fr auto}
.unnumbered-grid h3{margin-top:0}
.example-grid.unnumbered-grid .example-card h3{margin-top:5px}
.delivery-grid.unnumbered-grid h3{margin-top:0}
.case-grid.unnumbered-grid h3{margin-top:4px}
.rescue-steps.unnumbered-steps article{grid-template-columns:1fr}
.commercial-note{max-width:850px;margin:26px 0 0;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);font-size:13px;line-height:1.75;color:var(--dark-muted)}
.commercial-note strong{color:var(--dark-text);font-weight:600}
@media (max-width:700px){
  .offer-preview-plain{grid-template-columns:1fr}
  .offer-preview-plain>strong{grid-column:1;grid-row:auto;justify-self:start}
  .mission-list-plain .frame-top{grid-template-columns:1fr;gap:8px}
  .mission-list-plain .frame-top strong{justify-self:start}
}
/* Lien vers la reprise & évolution */
.panel-link{margin-top:22px}
.tone-dark .panel-link{color:var(--dark-text);border-color:rgba(255,255,255,.28)}

/* Compact editorial footer */
.site-footer{background:var(--night);border-top:1px solid rgba(255,255,255,.10);color:var(--dark-text);padding:68px 0 34px}
.footer-main{display:grid;grid-template-columns:minmax(280px,1.12fr) minmax(170px,.62fr) minmax(210px,.72fr);gap:clamp(50px,7vw,96px);align-items:start}
.footer-brand{align-self:start}.footer-brand p{max-width:335px;margin:0;color:rgba(238,245,242,.62);font-size:14px;line-height:1.72}
.footer-section{display:grid;align-content:start;gap:15px}
.footer-heading{font-family:var(--mono);font-size:11.5px;line-height:1.25;letter-spacing:.10em;text-transform:uppercase;color:#9ecfcb;font-weight:500}
/* Cibles tactiles du pied de page — WCAG 2.2 SC 2.5.8 (24x24 minimum).
   Les liens ne mesuraient que 21px de haut. Le rythme visuel est conservé au pixel
   près : l'écart de 8px porté par `gap` est transféré dans le rembourrage vertical
   des liens (4px de part et d'autre). La distance entre deux libellés reste donc
   identique, seule la surface cliquable grandit. */
.footer-nav,.footer-contact{display:grid;gap:0;font-size:13.5px;line-height:1.55;color:rgba(238,245,242,.76)}
.footer-nav a,.footer-contact a{color:rgba(238,245,242,.86);transition:color .25s;padding-block:4px}
.footer-nav a:hover,.footer-contact a:hover{color:#fff}
.footer-contact .footer-linkedin{display:inline-flex;align-items:center;gap:7px;width:max-content;margin-top:0;padding-block:6px;font-family:var(--mono);font-size:11px;line-height:1.35;letter-spacing:.07em;text-transform:uppercase;color:#9ecfcb}
.footer-contact .footer-linkedin span{transition:transform .25s var(--ease)}
.footer-contact .footer-linkedin:hover{color:#fff}
.footer-contact .footer-linkedin:hover span{transform:translateX(3px)}
.footer-lower{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:34px;padding-top:20px;border-top:1px solid rgba(255,255,255,.11);font-size:12.5px;line-height:1.5;color:rgba(238,245,242,.62)}
.footer-identity,.footer-policy{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.footer-policy{justify-content:flex-end;gap:2px 16px}
.footer-policy a{color:rgba(238,245,242,.78);transition:color .25s;padding-block:4px}
.footer-policy a:hover{color:#fff}
.footer-separator{color:rgba(158,207,203,.62)}
.footer-bottom{display:flex;justify-content:space-between;gap:24px;margin-top:16px;font-family:var(--mono);font-size:10.5px;line-height:1.4;letter-spacing:.08em;color:rgba(238,245,242,.48)}
@media (max-width:980px){
  .footer-main{grid-template-columns:1.1fr .8fr;gap:42px 64px}
  .footer-main .footer-section:last-child{grid-column:1/-1}
  .footer-contact{grid-template-columns:repeat(3,max-content);gap:12px 28px}
  .footer-lower{align-items:flex-start}
}
@media (max-width:700px){
  .site-footer{padding:58px 0 30px}
  .footer-logo-link{width:min(215px,100%)}
  .footer-main{grid-template-columns:1fr;gap:31px}
  .footer-main .footer-section:last-child{grid-column:auto}
  .footer-contact{grid-template-columns:1fr;gap:8px}
  .footer-lower{flex-direction:column;gap:12px;margin-top:30px;padding-top:18px}
  .footer-policy{justify-content:flex-start}
  .footer-bottom{margin-top:18px}
}

.legal-page-hero{padding-bottom:92px}
.legal-page-hero h1{max-width:760px;margin:18px 0 23px}
.legal-section{padding:88px 0 108px}
.legal-narrow{max-width:820px}
.legal-layout{display:grid;grid-template-columns:minmax(180px,240px) minmax(0,720px);gap:clamp(56px,8vw,110px);align-items:start;justify-content:center}
.legal-summary{position:sticky;top:132px;display:grid;gap:0;border-top:1px solid var(--line)}
.legal-summary .legal-kicker{padding:18px 0 14px;border-bottom:1px solid var(--line)}
.legal-summary a{padding:11px 0;border-bottom:1px solid var(--line);font-size:12.5px;line-height:1.45;color:var(--muted);transition:color .25s,padding-left .25s}
.legal-summary a:hover{color:var(--petrol);padding-left:4px}
.legal-content{min-width:0}
.legal-block{padding:0 0 42px;margin:0 0 42px;border-bottom:1px solid var(--line);scroll-margin-top:120px}
.legal-narrow>.legal-block:first-child{padding-top:0}
.legal-block h2{font-size:clamp(29px,3vw,39px);margin:10px 0 18px}
.legal-block p{font-size:15px;line-height:1.78;color:var(--ink-2);max-width:700px}
.legal-block p:last-child{margin-bottom:0}
.legal-block a{color:var(--petrol);border-bottom:1px solid rgba(30,111,120,.25)}
.legal-kicker{display:block;font-family:var(--mono);font-size:11.5px;line-height:1.25;letter-spacing:.10em;text-transform:uppercase;color:var(--petrol);font-weight:500}
.legal-updated{margin:6px 0 0;font-family:var(--mono);font-size:10.5px;line-height:1.5;letter-spacing:.06em;color:var(--muted)}
.form-privacy{margin:11px 0 0;font-size:11.5px;line-height:1.6;color:var(--muted)}
.form-privacy a{color:var(--petrol);border-bottom:1px solid rgba(30,111,120,.25)}
@media (max-width:980px){
  .legal-layout{grid-template-columns:1fr;gap:40px;max-width:820px}
  .legal-summary{position:static;grid-template-columns:1fr 1fr;column-gap:28px}
  .legal-summary .legal-kicker{grid-column:1/-1}
}
@media (max-width:700px){
  .legal-page-hero{padding-bottom:66px}
  .legal-section{padding:66px 0 78px}
  .legal-summary{grid-template-columns:1fr}
  .legal-block{padding-bottom:32px;margin-bottom:32px}
  .legal-block p{font-size:14px}
}

/* Audience measurement preferences */
.audience-choice{margin-top:24px;padding:22px 24px;border:1px solid var(--line);background:rgba(242,240,235,.48)}
.audience-choice-control{display:flex;align-items:flex-start;gap:12px}
/* flex-shrink par défaut : sous ~360px la case était comprimée à 15x18 au lieu des
   18x18 déclarés. `flex:0 0 auto` la fige, et 24x24 respecte la cible minimale
   WCAG 2.2 (SC 2.5.8) pour ce contrôle d'opposition RGPD. */
.audience-choice-control input{flex:0 0 auto;width:24px;height:24px;margin:1px 0 0;accent-color:var(--petrol);cursor:pointer}
.audience-choice-control input:disabled{cursor:not-allowed;opacity:.55}
.audience-choice-control label{font-weight:650;color:var(--ink);cursor:pointer}
.audience-choice-status{margin:14px 0 0!important;font-size:13.5px!important;line-height:1.6!important;color:var(--petrol)!important;font-weight:600}
.audience-choice-note{margin:10px 0 0!important;font-size:13.5px!important;line-height:1.7!important;color:var(--muted)!important}
.legal-block code{font-family:var(--mono);font-size:.86em;background:rgba(30,111,120,.06);padding:.14em .34em;border:1px solid rgba(30,111,120,.10)}
/* Ce <code> hérite de --muted via .audience-choice-note, et non de --ink-2 comme celui
   du paragraphe voisin. Combiné au fond teinté de .legal-block code, il ne mesurait que
   4,47:1 — juste sous le seuil AA. Même famille de teinte (--ink en opacité réduite,
   comme .metric-label ou .number-caption), écart de rendu de 3 à 8 points par canal. */
.audience-choice-note code{color:rgba(16,33,40,.65)}


/* Contact form — SMTP version */
.contact-form-premium fieldset{margin:0 0 27px;padding:0;border:0;min-width:0}
.contact-form-premium legend{width:100%;margin:0 0 18px;padding:0 0 11px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;line-height:1.35;font-weight:600;letter-spacing:.10em;text-transform:uppercase;color:var(--petrol)}
.contact-form-premium legend span{display:inline-block;min-width:32px;color:rgba(16,33,40,.61)}
.form-grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}
.field small{font-family:var(--body);font-size:10.5px;letter-spacing:0;text-transform:none;font-weight:400;color:var(--muted);white-space:nowrap}
.field select{width:100%;height:44px;border:1px solid rgba(16,33,40,.18);border-radius:0;background:rgba(255,255,255,.72);padding:0 42px 0 13px;color:var(--ink);font-size:15px;outline:none;transition:border-color .25s,box-shadow .25s,background .25s}
.field select:focus{border-color:var(--accent);box-shadow:0 0 0 1px rgba(30,111,120,.10);background:#fff}
.field-help{display:block;margin-top:7px;font-size:11.5px;line-height:1.55;color:var(--muted)}
.form-optional-premium{margin:2px 0 27px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.form-optional-premium summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;column-gap:10px;row-gap:4px;padding:17px 0;font-family:var(--mono);font-size:11px;line-height:1.35;font-weight:600;letter-spacing:.10em;text-transform:uppercase;color:var(--petrol)}
.form-optional-premium summary::-webkit-details-marker{display:none}
/* Chevron intégré au libellé : discret, à gauche, et rotation douce à l’ouverture. */
.form-optional-premium summary:before{content:"";grid-column:1;grid-row:1;width:8px;height:8px;border-right:1px solid var(--petrol);border-bottom:1px solid var(--petrol);transform:rotate(-45deg);transform-origin:center;transition:transform .22s var(--ease),border-color .22s var(--ease)}
.form-optional-premium summary:hover:before{border-color:var(--accent-2)}
.form-optional-premium[open] summary:before{transform:rotate(45deg)}
.form-optional-premium summary>span{grid-column:2;grid-row:1}
.form-optional-premium summary small{grid-column:3;grid-row:1;font-family:var(--body);font-size:11.5px;letter-spacing:0;text-transform:none;font-weight:400;color:var(--muted)}
.form-optional-inner{padding:6px 0 9px}
.form-optional-inner .form-grid-two{gap:0 18px}
/* Étendu de `.form-grid-two` à tout le volet : les labels de « Résultat attendu » et
   surtout « Niveau d'intervention ou budget envisagé » restaient en nowrap et leur
   min-content (307px) élargissait la grille au-delà de la .shell sous ~360px. */
.form-optional-inner .field label{min-height:30px;white-space:normal;line-height:1.35;align-items:flex-start;align-content:flex-start;flex-wrap:wrap;overflow-wrap:anywhere}
.form-optional-inner .field small{line-height:1.35}
/* Safari iOS zoome la page au focus dès que la police d'un contrôle est < 16px.
   Placé après `.field select` (même spécificité : l'ordre tranche).
   Hauteurs et apparence desktop inchangées. */
@media (max-width:980px){
  .field input,.field textarea,.field select{font-size:16px}
}

.form-required-note{margin:0 0 24px;font-size:11.5px;line-height:1.55;color:var(--muted)}
.form-information{margin:0 0 22px;padding:14px 16px;border-left:2px solid rgba(30,111,120,.55);background:rgba(30,111,120,.035);font-size:11.5px;line-height:1.6;color:var(--muted)}
.form-information strong{color:var(--ink);font-weight:600}
.honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
/* scroll-margin-top : le résumé reçoit le focus après un POST en erreur ; sans marge,
   le header collant (64-80px) recouvrirait le début du message. */
.form-error-summary{margin:0 0 24px;padding:15px 17px;border:1px solid rgba(151,55,55,.28);background:rgba(151,55,55,.035);font-size:12px;line-height:1.55;color:#763737;scroll-margin-top:104px}
.form-error-summary:focus{outline:2px solid #8a3434;outline-offset:3px}
.form-error-summary strong{display:block;margin-bottom:6px;color:#612b2b}
.form-error-summary ul{margin:0;padding-left:17px}
.form-error-summary a{text-decoration:underline;text-underline-offset:2px}
.field-error{display:block;margin-top:6px;font-size:11.5px;line-height:1.45;color:#8a3434}
/* Les liens du résumé d'erreurs pointent vers les champs concernés : sans marge de
   défilement, le champ ciblé se retrouve sous le header collant. */
.field input,.field textarea,.field select{scroll-margin-top:104px}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"],.field select[aria-invalid="true"]{border-color:rgba(151,55,55,.62);background:rgba(151,55,55,.018);box-shadow:0 0 0 1px rgba(151,55,55,.04)}
.confirmation-card{max-width:760px;margin:0 auto;padding:48px;border:1px solid var(--line);background:rgba(255,255,255,.84);position:relative}
.confirmation-card:before{content:"";position:absolute;left:-1px;top:-1px;width:48px;height:48px;border-left:2px solid var(--petrol);border-top:2px solid var(--petrol)}
.confirmation-card h1{font-size:clamp(42px,5vw,62px);margin:15px 0 20px}
.confirmation-card p{max-width:620px;color:var(--muted)}
.confirmation-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
@media (max-width:700px){.form-grid-two{grid-template-columns:1fr}.form-optional-premium summary{grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:4px;align-items:start}.form-optional-premium summary:before{grid-column:1;grid-row:1;margin-top:2px}.form-optional-premium summary>span{grid-column:2;grid-row:1}.form-optional-premium summary small{grid-column:2;grid-row:2}.confirmation-card{padding:32px 22px}}

/* Visual signature — restrained abstract geometry */
.page-hero{position:relative;isolation:isolate;overflow:hidden}
/* L'opacité finale passe par --hero-visual-opacity, et non par une valeur figée dans
   le keyframe `to`. Avec `both`, les valeurs d'origine d'animation persistaient après
   la fin de l'animation et écrasaient toutes les déclarations d'auteur ultérieures :
   les réglages responsive (.96 desktop / .72 tablette / .48 mobile) n'étaient jamais
   appliqués et le motif restait à .82 partout. `backwards` rend l'état final à la
   cascade ; la variable garantit que la dernière frame animée vaut exactement cette
   valeur de cascade, donc aucune rupture visible à la fin de l'animation. */
.page-hero:after{content:"";position:absolute;z-index:-1;pointer-events:none;right:-22px;top:24px;width:min(48%,560px);height:calc(100% - 48px);background-image:var(--hero-visual,none);background-repeat:no-repeat;background-position:right center;background-size:contain;--hero-visual-opacity:.82;opacity:var(--hero-visual-opacity);animation:heroVisualArrive 1.35s var(--ease) backwards}
body[data-page="solutions"]{--hero-visual:url("assets/visuals/solutions.svg")}
body[data-page="realisations"]{--hero-visual:url("assets/visuals/realisations.svg")}
body[data-page="method"]{--hero-visual:url("assets/visuals/method.svg")}
body[data-page="offers"]{--hero-visual:url("assets/visuals/offers.svg")}
body[data-page="maintenance"]{--hero-visual:url("assets/visuals/maintenance.svg")}
body[data-page="about"]{--hero-visual:url("assets/visuals/about.svg")}
body[data-page="rescue"] .rescue-hero-premium:before{content:"";position:absolute;z-index:-2;pointer-events:none;right:max(var(--gutter),calc((100vw - var(--shell))/2));top:50%;width:min(44vw,560px);height:78%;transform:translateY(-50%);background:url("assets/visuals/rescue.svg") no-repeat right center/contain;--rescue-visual-opacity:.96;opacity:var(--rescue-visual-opacity);filter:drop-shadow(0 0 18px rgba(158,207,203,.025));animation:heroVisualArriveDark 1.45s var(--ease) backwards}
body[data-page="politique-confidentialite"] .page-hero:after,body[data-page="contact"] .page-hero:after{display:none}
@keyframes heroVisualArrive{from{opacity:0;transform:translate3d(20px,7px,0)}to{opacity:var(--hero-visual-opacity);transform:none}}
@keyframes heroVisualArriveDark{from{opacity:0;transform:translate3d(22px,calc(-50% + 7px),0)}to{opacity:var(--rescue-visual-opacity);transform:translate3d(0,-50%,0)}}

/* Home geometric field — deliberately sparse */
.hero-geometry{position:absolute;z-index:-1;inset:0;pointer-events:none;overflow:hidden}
.geo-orbit{position:absolute;will-change:transform}
.geo-shape{display:block;position:relative;opacity:.64;will-change:transform}.geo-orbit-a .geo-shape{opacity:.48}.geo-orbit-b .geo-shape{opacity:.58}.geo-orbit-c .geo-shape{opacity:.66}.geo-orbit-d .geo-shape{opacity:.76}
.geo-orbit-a{right:7.5%;top:18%}.geo-orbit-b{right:28%;top:28%}.geo-orbit-c{right:14%;bottom:23%}.geo-orbit-d{right:36%;bottom:18%}
.geo-ring{width:116px;height:116px;border:1px solid rgba(30,111,120,.28);border-radius:50%;animation:geoFloatA 12s cubic-bezier(.45,.05,.35,1) -2s infinite}
.geo-ring:before{content:"";position:absolute;inset:23px;border:1px solid rgba(47,141,150,.15);border-radius:50%}
.geo-ring:after{content:"";position:absolute;width:6px;height:6px;right:8px;top:47px;border-radius:50%;background:rgba(30,111,120,.42)}
.geo-diamond{width:72px;height:72px;border:1px solid rgba(30,111,120,.22);transform:rotate(45deg);animation:geoFloatB 15s cubic-bezier(.45,.05,.35,1) -5s infinite}
.geo-diamond:after{content:"";position:absolute;inset:17px;border-top:1px solid rgba(30,111,120,.17);border-left:1px solid rgba(30,111,120,.17)}
.geo-axis{width:132px;height:74px;animation:geoFloatC 13s cubic-bezier(.45,.05,.35,1) -7s infinite}
.geo-axis:before,.geo-axis:after{content:"";position:absolute;background:rgba(30,111,120,.22)}
.geo-axis:before{left:0;right:0;top:36px;height:1px}.geo-axis:after{top:0;bottom:0;left:65px;width:1px}
.geo-node{width:94px;height:50px;border-top:1px solid rgba(47,141,150,.20);animation:geoFloatD 16s cubic-bezier(.45,.05,.35,1) -4s infinite}
.geo-node:before,.geo-node:after{content:"";position:absolute;border-radius:50%;background:rgba(30,111,120,.34)}
.geo-node:before{width:5px;height:5px;left:7px;top:-3px}.geo-node:after{width:4px;height:4px;right:11px;top:-2px;box-shadow:-38px 23px 0 rgba(47,141,150,.22)}
@keyframes heroHaloDrift{0%,18%{transform:translate3d(0,0,0) scale(1)}48%,62%{transform:translate3d(-18px,11px,0) scale(1.012)}100%{transform:translate3d(8px,-7px,0) scale(.998)}}
@keyframes geoFloatA{0%,18%,100%{transform:translate3d(0,0,0) rotate(0)}38%,55%{transform:translate3d(18px,-20px,0) rotate(8deg)}72%{transform:translate3d(5px,7px,0) rotate(2deg)}88%{transform:translate3d(-3px,2px,0) rotate(-1deg)}}
@keyframes geoFloatB{0%,22%,100%{transform:translate3d(0,0,0) rotate(45deg)}42%,60%{transform:translate3d(-20px,15px,0) rotate(52deg)}78%{transform:translate3d(7px,-5px,0) rotate(47deg)}90%{transform:translate3d(2px,2px,0) rotate(46deg)}}
@keyframes geoFloatC{0%,16%,100%{transform:translate3d(0,0,0)}36%,54%{transform:translate3d(24px,10px,0)}73%{transform:translate3d(-5px,-7px,0)}90%{transform:translate3d(-2px,-2px,0)}}
@keyframes geoFloatD{0%,24%,100%{transform:translate3d(0,0,0)}44%,64%{transform:translate3d(-18px,-16px,0)}82%{transform:translate3d(6px,5px,0)}92%{transform:translate3d(2px,1px,0)}}

/* Unified dark hero system — Seizm night / ivory contrast */
.hero-home{background:var(--night)}
body[data-page="home"] .hero-home{background:var(--night)}
.aurora-canvas{opacity:.90}
.hero-home:before{background:linear-gradient(90deg,rgba(10,28,34,.985) 0%,rgba(10,28,34,.94) 40%,rgba(10,28,34,.72) 64%,rgba(10,28,34,.42) 82%,rgba(10,28,34,.76) 100%)}
.hero-home:after{border-color:rgba(158,207,203,.30);box-shadow:0 0 0 82px rgba(158,207,203,.045),0 0 0 164px rgba(137,184,180,.025)}
.hero-home .hero-copy h1{color:var(--dark-text)}
.hero-home .hero-copy h1 em{color:#9ecfcb}
.hero-home .eyebrow{color:#8fc6c1}
.hero-home .hero-lead{color:rgba(238,245,242,.76)}
.hero-home .btn-primary{background:#f6f8f5;color:#102128;border-color:#f6f8f5}
.hero-home .text-link{color:var(--dark-text);border-color:rgba(238,245,242,.38)}
.hero-home .side-rule{background:linear-gradient(180deg,transparent,rgba(158,207,203,.64),rgba(143,198,193,.92),transparent)}
.hero-home .side-rule:after{background:#9ecfcb;box-shadow:0 0 16px rgba(158,207,203,.46)}
.hero-home .side-mark{border-color:#9ecfcb;opacity:.94}
.hero-home .side-item p{color:rgba(238,245,242,.72)}

.page-hero{background:var(--night);box-shadow:0 0 0 100vmax var(--night);clip-path:inset(0 -100vmax);color:var(--dark-text)}
.page-hero h1{color:var(--dark-text)}
.page-hero h1 em,.page-hero em{color:#9ecfcb}
.page-hero .eyebrow{color:#8fc6c1}
.page-hero p{color:rgba(238,245,242,.74)}
.page-hero:after{--hero-visual-opacity:.96;filter:drop-shadow(0 0 18px rgba(158,207,203,.035))}

/* Home parallax geometry: brighter on night, still restrained. */
.geo-shape{opacity:.78}.geo-orbit-a .geo-shape{opacity:.58}.geo-orbit-b .geo-shape{opacity:.70}.geo-orbit-c .geo-shape{opacity:.80}.geo-orbit-d .geo-shape{opacity:.90}
.geo-ring{border-color:rgba(158,207,203,.46)}
.geo-ring:before{border-color:rgba(158,207,203,.27)}
.geo-ring:after{background:rgba(158,207,203,.76);box-shadow:0 0 12px rgba(158,207,203,.22)}
.geo-diamond{border-color:rgba(158,207,203,.40)}
.geo-diamond:after{border-top-color:rgba(158,207,203,.30);border-left-color:rgba(158,207,203,.30)}
.geo-axis:before,.geo-axis:after{background:rgba(158,207,203,.38)}
.geo-node{border-top-color:rgba(158,207,203,.36)}
.geo-node:before,.geo-node:after{background:rgba(158,207,203,.62)}
.geo-node:after{box-shadow:-38px 23px 0 rgba(158,207,203,.42)}

/* Legal pages: no decorative chapter numbering in the privacy content */
body[data-page="politique-confidentialite"] .legal-block h2{margin-top:0}

@media (max-width:980px){
  .page-hero:after{right:-55px;width:48%;--hero-visual-opacity:.72}
  .hero-geometry{opacity:.86}
  .geo-orbit-b{right:15%}.geo-orbit-d{right:26%}
}
@media (max-width:700px){
  .page-hero:after{right:14px;top:146px;width:138px;height:138px;background-position:center;background-size:contain;--hero-visual-opacity:.48}
  .hero-geometry{opacity:.62}
  .geo-orbit-a{right:-18px;top:18%}.geo-orbit-b{display:none}.geo-orbit-c{right:-10px;bottom:17%}.geo-orbit-d{display:none}
  .geo-ring{width:90px;height:90px}
  body[data-page="rescue"] .rescue-hero-premium:before{right:8px;width:56vw;max-width:280px;height:52%;--rescue-visual-opacity:.62;background-position:right center}
}
@media (prefers-reduced-motion:reduce){
  .hero-home:after,.page-hero:after,body[data-page="rescue"] .rescue-hero-premium:before,.geo-shape{animation:none!important}
  .geo-orbit{transform:none!important}
}
