@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&family=IBM+Plex+Mono:wght@400;500;600&family=Instrument+Sans:ital,wght@0,400..700;1,400&display=swap');

/* ==========================================================================
   VITRIOLAB — feuille de style principale
   Signature : la colonne graduée (ménisque, liquide qui monte)
   ========================================================================== */

:root{
  /* Couleurs */
  --abysse:#05171D;
  --verre:#0A2A34;
  --verre-2:#0F3945;
  --verre-3:#164A59;
  --porcelaine:#EFF4F3;
  --porcelaine-2:#E2EBE9;
  --blanc:#FFFFFF;
  --reactif:#17D5B0;
  --reactif-clair:#5FF0D3;
  --reactif-sombre:#0FA98B;
  --gram:#7B61FF;
  --gram-clair:#A793FF;
  --clair:#DCE9E9;
  --sourd:#8FAAB0;
  --sourd-2:#5F8089;
  --encre:#062028;
  --encre-sourd:#4C6C74;
  --ligne-sombre:rgba(95,240,211,.14);
  --ligne-claire:rgba(6,32,40,.12);

  /* Typographie */
  --display:'Bricolage Grotesque','Archivo',system-ui,sans-serif;
  --texte:'Instrument Sans','Segoe UI',system-ui,sans-serif;
  --mono:'IBM Plex Mono','SFMono-Regular',Consolas,monospace;

  /* Rythme */
  --max:1220px;
  --gouttiere:clamp(20px,4vw,48px);
  --section:clamp(72px,9vw,132px);
  --r-s:10px;
  --r-m:18px;
  --r-l:28px;

  --ease:cubic-bezier(.22,.9,.28,1);
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  background:var(--abysse);
  color:var(--clair);
  font-family:var(--texte);
  font-size:clamp(15.5px,1.05vw,17px);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}

:focus-visible{
  outline:2.5px solid var(--reactif-clair);
  outline-offset:3px;
  border-radius:4px;
}

/* ---------- Typographie utilitaire ---------- */
h1,h2,h3,h4{font-family:var(--display);font-weight:700;line-height:1.04;letter-spacing:-.025em;margin:0}
h1{font-size:clamp(2.6rem,6.4vw,5.1rem);font-weight:800;letter-spacing:-.04em}
h2{font-size:clamp(2rem,4.2vw,3.4rem)}
h3{font-size:clamp(1.15rem,1.8vw,1.42rem);letter-spacing:-.015em}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}

.eyebrow{
  font-family:var(--mono);
  font-size:.688rem;
  font-weight:500;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--reactif);
  display:inline-flex;
  align-items:center;
  gap:.7em;
  margin:0 0 1.1rem;
}
.eyebrow::before{
  content:"";
  width:26px;height:1px;
  background:currentColor;
  opacity:.55;
}
.clair-section .eyebrow{color:var(--reactif-sombre)}

.plomb{color:var(--sourd);max-width:58ch}
.clair-section .plomb{color:var(--encre-sourd)}

.marque{color:var(--reactif)}
.clair-section .marque{color:var(--reactif-sombre)}

/* ---------- Structure ---------- */
.enveloppe{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gouttiere)}
section{padding-block:var(--section);position:relative}

.clair-section{background:var(--porcelaine);color:var(--encre)}
.clair-section h1,.clair-section h2,.clair-section h3{color:var(--encre)}

.entete-section{max-width:64ch;margin-bottom:clamp(40px,5vw,68px)}
.entete-section h2 + p{margin-top:1.1rem;font-size:1.06rem}

/* Filet horizontal type « paillasse » */
.filet{height:1px;background:var(--ligne-sombre);border:0;margin:0}
.clair-section .filet{background:var(--ligne-claire)}

/* ==========================================================================
   Barre d'information + navigation
   ========================================================================== */
.bandeau{
  background:#031014;
  border-bottom:1px solid rgba(255,255,255,.06);
  font-family:var(--mono);
  font-size:.7rem;
  letter-spacing:.06em;
  color:var(--sourd-2);
}
.bandeau .enveloppe{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:38px}
.bandeau-info{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.bandeau a:hover{color:var(--reactif-clair)}
.pastille{display:inline-flex;align-items:center;gap:7px}
.pastille::before{
  content:"";width:6px;height:6px;border-radius:50%;
  background:var(--reactif);
  box-shadow:0 0 0 0 rgba(23,213,176,.55);
  animation:pouls 2.6s infinite;
}
@keyframes pouls{
  70%{box-shadow:0 0 0 7px rgba(23,213,176,0)}
  100%{box-shadow:0 0 0 0 rgba(23,213,176,0)}
}
.bandeau-mobile-cache{display:none}
@media (min-width:720px){.bandeau-mobile-cache{display:inline-flex}}

.langue{display:flex;gap:2px;align-items:center}
.langue button{
  background:none;border:0;cursor:pointer;
  font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;
  color:var(--sourd-2);padding:4px 7px;border-radius:5px;
}
.langue button[aria-pressed="true"]{color:var(--abysse);background:var(--reactif)}
.langue button:hover{color:var(--reactif-clair)}
.langue button[aria-pressed="true"]:hover{color:var(--abysse)}
.langue span{opacity:.35}

.entete{
  position:sticky;top:0;z-index:60;
  background:rgba(5,23,29,.72);
  backdrop-filter:blur(16px) saturate(140%);
  -webkit-backdrop-filter:blur(16px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,.07);
  transition:background .3s var(--ease),border-color .3s var(--ease);
}
.entete.est-collee{background:rgba(3,16,20,.94);border-bottom-color:var(--ligne-sombre)}
.entete .enveloppe{display:flex;align-items:center;gap:clamp(16px,3vw,40px);min-height:74px}

.logo{display:flex;align-items:center;gap:11px;flex:0 0 auto}
.logo svg{width:34px;height:34px}
.logo .mot{font-family:var(--display);font-size:1.32rem;letter-spacing:.04em;line-height:1;color:#fff}
.logo .mot b{font-weight:800;letter-spacing:.01em}
.logo .mot span{font-weight:300}
.logo .sous{display:block;font-family:var(--mono);font-size:.5rem;letter-spacing:.22em;color:var(--sourd-2);margin-top:4px}

.nav{display:none;margin-left:auto;align-items:center;gap:clamp(14px,2vw,30px)}
@media (min-width:1000px){.nav{display:flex}}
.nav a{
  font-size:.925rem;color:var(--clair);position:relative;padding:6px 0;
  transition:color .25s var(--ease);
}
.nav a::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:1.5px;
  background:var(--reactif);transition:right .35s var(--ease);
}
.nav a:hover{color:#fff}
.nav a:hover::after,.nav a.actif::after{right:0}
.nav a.actif{color:#fff}

.actions-entete{display:flex;align-items:center;gap:10px;margin-left:auto}
@media (min-width:1000px){.actions-entete{margin-left:0}}

/* ---------- Boutons ---------- */
.btn{
  --fond:var(--reactif);
  --texte-btn:var(--abysse);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  padding:.86em 1.5em;
  background:var(--fond);color:var(--texte-btn);
  border:1px solid transparent;border-radius:var(--r-s);
  font-weight:600;font-size:.94rem;letter-spacing:-.005em;
  cursor:pointer;position:relative;overflow:hidden;
  transition:transform .25s var(--ease),box-shadow .3s var(--ease),background .25s var(--ease);
}
.btn::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.42),transparent 70%);
  transform:translateX(-120%);transition:transform .7s var(--ease);
}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px -12px rgba(23,213,176,.6)}
.btn:hover::after{transform:translateX(120%)}
.btn:active{transform:translateY(0)}
.btn svg{width:1.05em;height:1.05em;flex:0 0 auto}

.btn-fantome{
  --fond:transparent;--texte-btn:var(--clair);
  border-color:rgba(220,233,233,.24);
}
.btn-fantome:hover{--fond:rgba(23,213,176,.09);--texte-btn:#fff;border-color:var(--reactif);box-shadow:none}
.clair-section .btn-fantome{--texte-btn:var(--encre);border-color:rgba(6,32,40,.2)}
.clair-section .btn-fantome:hover{--fond:rgba(15,169,139,.08);border-color:var(--reactif-sombre)}

.btn-petit{padding:.66em 1.1em;font-size:.85rem}

.burger{
  display:inline-flex;flex-direction:column;justify-content:center;gap:5px;
  width:44px;height:40px;padding:0 10px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  border-radius:var(--r-s);cursor:pointer;
}
@media (min-width:1000px){.burger{display:none}}
.burger i{display:block;height:1.6px;background:var(--clair);transition:transform .3s var(--ease),opacity .2s}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(6.6px) rotate(45deg)}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-6.6px) rotate(-45deg)}

.menu-mobile{
  position:fixed;inset:112px 0 0;z-index:55;
  background:rgba(3,16,20,.97);
  backdrop-filter:blur(18px);
  padding:28px var(--gouttiere) 40px;
  display:flex;flex-direction:column;gap:4px;
  transform:translateY(-12px);opacity:0;pointer-events:none;
  transition:opacity .3s var(--ease),transform .3s var(--ease);
  overflow-y:auto;
}
.menu-mobile.ouvert{opacity:1;transform:none;pointer-events:auto}
.menu-mobile a{
  font-family:var(--display);font-size:1.5rem;font-weight:500;letter-spacing:-.02em;
  padding:14px 0;border-bottom:1px solid rgba(255,255,255,.07);
}
.menu-mobile a:last-of-type{border-bottom:0}
.menu-mobile .btn{margin-top:18px}
@media (min-width:1000px){.menu-mobile{display:none}}

/* ==========================================================================
   Rail de lecture — pipette graduée (écho de la signature)
   ========================================================================== */
.rail{
  position:fixed;left:14px;top:50%;transform:translateY(-50%);
  z-index:40;width:5px;height:clamp(150px,26vh,230px);
  background:rgba(255,255,255,.08);border-radius:99px;
  display:none;
}
@media (min-width:1240px){.rail{display:block}}
.rail::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(to bottom,transparent 0 15px,rgba(255,255,255,.22) 15px 16px);
  border-radius:99px;z-index:2;
}
.rail i{
  position:absolute;left:0;right:0;top:0;height:0%;
  background:linear-gradient(to bottom,var(--reactif-clair),var(--reactif-sombre));
  border-radius:99px;
}
.rail b{
  position:absolute;left:50%;bottom:-26px;transform:translateX(-50%);
  font-family:var(--mono);font-size:.6rem;font-weight:500;color:var(--sourd-2);
}

/* ==========================================================================
   Héros
   ========================================================================== */
.heros{
  position:relative;overflow:hidden;
  padding-block:clamp(60px,8vw,104px) clamp(60px,7vw,96px);
  background:
    radial-gradient(120% 90% at 88% 8%,rgba(23,213,176,.16),transparent 58%),
    radial-gradient(90% 70% at 6% 96%,rgba(123,97,255,.16),transparent 60%),
    var(--abysse);
}
.heros::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.028) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(80% 70% at 50% 30%,#000,transparent 78%);
  -webkit-mask-image:radial-gradient(80% 70% at 50% 30%,#000,transparent 78%);
  pointer-events:none;
}
.heros .enveloppe{position:relative;z-index:2}
.heros-grille{
  display:grid;gap:clamp(38px,5vw,64px);
  grid-template-columns:1fr;align-items:center;
}
@media (min-width:1000px){.heros-grille{grid-template-columns:minmax(0,1.12fr) minmax(320px,.88fr)}}

.heros h1{color:#fff;margin-bottom:1.4rem}
.heros h1 .ligne{display:block;overflow:hidden}
/* sans JS, tout reste visible : l'animation n'est armée que sur .charge */
.heros h1 .ligne > span{display:block}
.charge .heros h1 .ligne > span{animation:monter .95s var(--ease) both}
.charge .heros h1 .ligne:nth-child(2) > span{animation-delay:.1s}
.charge .heros h1 .ligne:nth-child(3) > span{animation-delay:.2s}
@keyframes monter{from{transform:translateY(105%);opacity:0}to{transform:none;opacity:1}}

.heros-intro{font-size:clamp(1.02rem,1.35vw,1.19rem);color:var(--clair);opacity:.82;max-width:52ch}
.heros-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:2.1rem}

.heros-appui{
  margin-top:2.6rem;padding-top:1.7rem;border-top:1px solid var(--ligne-sombre);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px;
}
.heros-appui div{display:flex;flex-direction:column;gap:2px}
.heros-appui dt,.heros-appui b{
  font-family:var(--display);font-size:1.42rem;font-weight:700;color:#fff;letter-spacing:-.02em;
}
.heros-appui small{font-family:var(--mono);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;color:var(--sourd-2)}

.charge .heros-intro{animation:apparaitre .8s var(--ease) .34s both}
.charge .heros-actions{animation:apparaitre .8s var(--ease) .44s both}
.charge .heros-appui{animation:apparaitre .8s var(--ease) .54s both}
.charge .heros-anim{animation:apparaitre 1s var(--ease) .3s both}
@keyframes apparaitre{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* --- Signature : colonne de titrage --- */
.colonne{position:relative;margin-inline:auto;max-width:400px;width:100%}
.colonne svg{width:100%;height:auto;overflow:visible}
.colonne .verre-tube{fill:rgba(255,255,255,.035);stroke:rgba(255,255,255,.16);stroke-width:1.4}
.colonne .grad{stroke:rgba(255,255,255,.3);stroke-width:1.1;stroke-linecap:round}
.colonne .grad-maj{stroke:rgba(255,255,255,.55);stroke-width:1.4}
.colonne .etiq{font-family:var(--mono);font-size:9.4px;letter-spacing:.1em;fill:var(--sourd)}
.colonne .valeur{font-family:var(--display);font-size:16px;font-weight:700;fill:#fff}
.colonne .liquide{transform-origin:center bottom}
.colonne .bulle{fill:rgba(255,255,255,.5)}

/* remplissage de la colonne au chargement */
.colonne .liquide{transform:translate(0px,420px)}
.charge .colonne .liquide{animation:remplir-colonne 2s var(--ease) .35s forwards}
@keyframes remplir-colonne{
  from{transform:translate(0px,420px)}
  to{transform:translate(0px,188px)}
}
.colonne .bulle{opacity:0}
.charge .colonne .bulle{animation:monter-bulle 5s ease-in infinite}
.charge .colonne .bulle-2{animation-duration:6.4s;animation-delay:1.4s}
.charge .colonne .bulle-3{animation-duration:5.6s;animation-delay:2.6s}
@keyframes monter-bulle{
  0%{transform:translateY(30px) scale(.5);opacity:0}
  18%{opacity:.55}
  85%{opacity:.25}
  100%{transform:translateY(-130px) scale(1);opacity:0}
}

.colonne-legende{
  position:absolute;left:0;bottom:-6px;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--sourd-2);
}

/* ==========================================================================
   Bandeau normes
   ========================================================================== */
.normes{
  background:#031014;border-block:1px solid rgba(255,255,255,.07);
  padding-block:26px;overflow:hidden;
}
.normes .enveloppe{display:grid;gap:20px;align-items:center;grid-template-columns:1fr}
@media (min-width:860px){.normes .enveloppe{grid-template-columns:auto 1fr}}
.normes p{
  font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--sourd-2);margin:0;max-width:26ch;
}
.piste{overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.piste-int{display:flex;gap:44px;width:max-content;animation:defiler 34s linear infinite}
.piste:hover .piste-int{animation-play-state:paused}
@keyframes defiler{to{transform:translateX(-50%)}}
.piste span{
  font-family:var(--display);font-size:1.06rem;font-weight:600;letter-spacing:.02em;
  color:rgba(220,233,233,.5);white-space:nowrap;display:flex;align-items:center;gap:11px;
}
.piste span::before{content:"";width:5px;height:5px;background:var(--reactif);border-radius:1px;transform:rotate(45deg);opacity:.8}

/* ==========================================================================
   Cartes solutions
   ========================================================================== */
.grille-solutions{
  display:grid;gap:1px;background:var(--ligne-claire);
  border:1px solid var(--ligne-claire);border-radius:var(--r-l);overflow:hidden;
  grid-template-columns:1fr;
}
@media (min-width:640px){.grille-solutions{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.grille-solutions{grid-template-columns:repeat(3,1fr)}}

.carte-sol{
  background:var(--porcelaine);
  padding:clamp(26px,3vw,38px);
  display:flex;flex-direction:column;gap:14px;
  position:relative;isolation:isolate;
  transition:background .35s var(--ease);
}
.carte-sol::before{
  content:"";position:absolute;inset:0;z-index:-1;opacity:0;
  background:linear-gradient(165deg,#fff,var(--porcelaine) 70%);
  transition:opacity .35s var(--ease);
}
.carte-sol:hover{background:#fff}
.carte-sol:hover::before{opacity:1}
.carte-sol .code{
  font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;color:var(--reactif-sombre);
  display:flex;align-items:center;justify-content:space-between;
}
.carte-sol .code em{font-style:normal;color:rgba(6,32,40,.28)}
.carte-sol .visuel{
  height:112px;margin:6px 0 4px;
  display:flex;align-items:flex-end;
}
.carte-sol .visuel svg{height:100%;width:auto;overflow:visible}
.carte-sol h3{color:var(--encre)}
.carte-sol p{font-size:.94rem;color:var(--encre-sourd);margin:0}
.carte-sol ul{
  list-style:none;margin:6px 0 0;padding:0;
  display:flex;flex-wrap:wrap;gap:6px;
}
.carte-sol li{
  font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;
  padding:4px 9px;border:1px solid var(--ligne-claire);border-radius:99px;
  color:var(--encre-sourd);background:rgba(255,255,255,.6);
}

/* Traits communs des illustrations */
.dessin{--trait:var(--encre);--eau:var(--reactif-sombre);--accent:var(--gram)}
.dessin .t{fill:none;stroke:var(--trait);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.dessin .t-fin{fill:none;stroke:var(--trait);stroke-width:1.1;stroke-linecap:round;opacity:.5}
.dessin .e{fill:var(--eau)}
.dessin .e-tr{fill:var(--eau);opacity:.16}
.dessin .a{fill:var(--accent)}
.dessin .v{fill:rgba(6,32,40,.05)}
.carte-sol:hover .dessin .monte{animation:remplir 1.1s var(--ease) forwards}
@keyframes remplir{from{transform:scaleY(.2);transform-origin:center bottom}to{transform:scaleY(1);transform-origin:center bottom}}

/* ==========================================================================
   Secteurs
   ========================================================================== */
.grille-secteurs{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.secteur{
  padding:24px;border:1px solid var(--ligne-sombre);border-radius:var(--r-m);
  background:linear-gradient(160deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  display:flex;flex-direction:column;gap:9px;
  transition:transform .35s var(--ease),border-color .35s var(--ease),background .35s var(--ease);
}
.secteur:hover{transform:translateY(-4px);border-color:rgba(23,213,176,.4);background:linear-gradient(160deg,rgba(23,213,176,.09),rgba(255,255,255,.02))}
.secteur h3{font-size:1.06rem;color:#fff}
.secteur p{font-size:.9rem;color:var(--sourd);margin:0}
.secteur .num{font-family:var(--mono);font-size:.64rem;letter-spacing:.18em;color:var(--reactif)}

/* ==========================================================================
   Corridor logistique
   ========================================================================== */
.corridor{
  border:1px solid var(--ligne-sombre);border-radius:var(--r-l);
  background:linear-gradient(150deg,rgba(23,213,176,.06),rgba(10,42,52,.5));
  padding:clamp(24px,3.4vw,44px);
  display:grid;gap:clamp(22px,3vw,36px);
  grid-template-columns:1fr;
}
@media (min-width:900px){.corridor{grid-template-columns:repeat(3,1fr)}}
.corridor-trace{grid-column:1/-1;margin-bottom:clamp(4px,1.4vw,18px)}
@media (max-width:700px){.corridor-trace{display:none}}
.corridor-trace svg{width:100%;height:auto}
.corridor-trace .trace{stroke-dasharray:9 13}
.charge .corridor-trace .trace{animation:flux 2.4s linear infinite}
@keyframes flux{to{stroke-dashoffset:-44}}

.etape-log{position:relative;padding-top:30px}
.etape-log::before{
  content:"";position:absolute;top:9px;left:0;width:11px;height:11px;border-radius:50%;
  background:var(--reactif);box-shadow:0 0 0 5px rgba(23,213,176,.14);
}
.etape-log::after{
  content:"";position:absolute;top:14px;left:22px;right:-20px;height:1px;
  background:repeating-linear-gradient(90deg,rgba(95,240,211,.5) 0 6px,transparent 6px 12px);
}
@media (max-width:899px){.etape-log::after{display:none}}
.etape-log:last-child::after{display:none}
.etape-log .ville{font-family:var(--display);font-size:1.2rem;font-weight:700;color:#fff;letter-spacing:-.02em}
.etape-log .delai{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;color:var(--reactif);margin-top:4px;display:block}
.etape-log p{font-size:.9rem;color:var(--sourd);margin-top:10px}

/* ==========================================================================
   Processus (séquence réelle → la numérotation porte du sens)
   ========================================================================== */
.process{display:grid;gap:0;counter-reset:etape}
.process-item{
  display:grid;gap:clamp(10px,2vw,34px);
  grid-template-columns:1fr;
  padding-block:clamp(26px,3vw,38px);
  border-top:1px solid var(--ligne-claire);
  position:relative;
}
.process-item:last-child{border-bottom:1px solid var(--ligne-claire)}
@media (min-width:820px){.process-item{grid-template-columns:88px minmax(0,1fr) minmax(0,1.15fr);align-items:start}}
.process-item .rang{
  counter-increment:etape;
  font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;color:var(--reactif-sombre);
  display:flex;align-items:center;gap:10px;
}
.process-item .rang::before{content:"0" counter(etape)}
.process-item h3{color:var(--encre)}
.process-item p{color:var(--encre-sourd);font-size:.96rem;margin:0}
.process-item .marqueur{
  position:absolute;left:0;top:-1px;height:1px;width:0;background:var(--reactif-sombre);
  transition:width .8s var(--ease);
}
.process-item.visible .marqueur{width:100%}

/* ==========================================================================
   Conformité + compteurs
   ========================================================================== */
.deux-col{display:grid;gap:clamp(34px,5vw,72px);grid-template-columns:1fr;align-items:start}
@media (min-width:940px){.deux-col{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

.liste-check{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.liste-check li{
  display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:start;
  padding:16px 0;border-bottom:1px solid var(--ligne-sombre);
}
.liste-check li:first-child{border-top:1px solid var(--ligne-sombre)}
.liste-check svg{width:22px;height:22px;margin-top:2px;color:var(--reactif)}
.liste-check b{display:block;font-family:var(--display);font-weight:600;font-size:1.02rem;color:#fff;letter-spacing:-.01em}
.liste-check span{font-size:.9rem;color:var(--sourd)}

.grille-chiffres{display:grid;gap:1px;background:var(--ligne-sombre);border:1px solid var(--ligne-sombre);border-radius:var(--r-m);overflow:hidden;grid-template-columns:repeat(2,1fr)}
.chiffre{background:#08222A;padding:clamp(20px,2.6vw,30px)}
.chiffre b{display:block;font-family:var(--display);font-size:clamp(2rem,3.6vw,2.9rem);font-weight:800;color:#fff;letter-spacing:-.04em;line-height:1}
.chiffre b i{font-style:normal;color:var(--reactif)}
.chiffre small{display:block;margin-top:8px;font-size:.82rem;color:var(--sourd);line-height:1.45}
.note-source{font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;color:var(--sourd-2);margin-top:14px}

/* ==========================================================================
   FAQ
   ========================================================================== */
.faq{border-top:1px solid var(--ligne-claire)}
.faq details{border-bottom:1px solid var(--ligne-claire)}
.faq summary{
  list-style:none;cursor:pointer;padding:22px 44px 22px 0;position:relative;
  font-family:var(--display);font-size:clamp(1.02rem,1.5vw,1.18rem);font-weight:600;
  letter-spacing:-.015em;color:var(--encre);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"";position:absolute;right:8px;top:50%;width:11px;height:11px;
  border-right:1.8px solid var(--reactif-sombre);border-bottom:1.8px solid var(--reactif-sombre);
  transform:translateY(-70%) rotate(45deg);transition:transform .3s var(--ease);
}
.faq details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.faq summary:hover{color:var(--reactif-sombre)}
.faq .reponse{padding:0 clamp(20px,6vw,90px) 26px 0;color:var(--encre-sourd);font-size:.96rem}
.faq details[open] .reponse{animation:ouvrir .45s var(--ease)}
@keyframes ouvrir{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ==========================================================================
   Contact
   ========================================================================== */
.contact{
  background:
    radial-gradient(90% 80% at 85% 10%,rgba(123,97,255,.16),transparent 60%),
    radial-gradient(80% 70% at 4% 92%,rgba(23,213,176,.14),transparent 58%),
    var(--abysse);
}
.bloc-contact{
  display:grid;gap:clamp(30px,4vw,60px);grid-template-columns:1fr;
}
@media (min-width:960px){.bloc-contact{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)}}

.coord{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:18px}
.coord li{display:grid;grid-template-columns:20px 1fr;gap:14px;align-items:start}
.coord svg{width:18px;height:18px;color:var(--reactif);margin-top:4px}
.coord small{display:block;font-family:var(--mono);font-size:.63rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sourd-2)}
.coord a,.coord span{color:#fff;font-size:1rem}
.coord a:hover{color:var(--reactif-clair)}

.formulaire{
  background:rgba(255,255,255,.035);
  border:1px solid var(--ligne-sombre);
  border-radius:var(--r-l);
  padding:clamp(22px,3vw,38px);
  backdrop-filter:blur(6px);
}
.champs{display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:620px){.champs{grid-template-columns:1fr 1fr}}
.champ{display:flex;flex-direction:column;gap:7px}
.champ.pleine{grid-column:1/-1}
.champ label{font-family:var(--mono);font-size:.65rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sourd)}
.champ label b{color:var(--reactif);font-weight:400}
.champ input,.champ select,.champ textarea{
  background:rgba(3,16,20,.6);
  border:1px solid rgba(255,255,255,.13);
  border-radius:var(--r-s);
  padding:.82em .95em;color:#fff;font-size:.95rem;
  transition:border-color .25s var(--ease),background .25s var(--ease);
  width:100%;
}
.champ textarea{min-height:118px;resize:vertical}
.champ select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--reactif) 50%),linear-gradient(135deg,var(--reactif) 50%,transparent 50%);background-position:calc(100% - 20px) 55%,calc(100% - 14px) 55%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:42px}
.champ select option{background:#062028;color:#fff}
.champ input:focus,.champ select:focus,.champ textarea:focus{border-color:var(--reactif);background:rgba(3,16,20,.85);outline:none}
.champ input::placeholder,.champ textarea::placeholder{color:var(--sourd-2)}
.formulaire .btn{width:100%;margin-top:20px}
.mention-form{font-size:.78rem;color:var(--sourd-2);margin-top:14px;text-align:center}
.mention-form a{color:var(--sourd);text-decoration:underline;text-underline-offset:2px}
.etat-form{
  margin-top:14px;padding:12px 14px;border-radius:var(--r-s);font-size:.88rem;
  border:1px solid var(--reactif);background:rgba(23,213,176,.1);color:var(--reactif-clair);
  display:none;
}
.etat-form.visible{display:block;animation:apparaitre .4s var(--ease) forwards;opacity:1;transform:none}

/* ==========================================================================
   Pied de page
   ========================================================================== */
.pied{background:#031014;border-top:1px solid rgba(255,255,255,.07);padding-block:clamp(48px,6vw,72px) 0}
.pied-grille{display:grid;gap:36px;grid-template-columns:1fr}
@media (min-width:760px){.pied-grille{grid-template-columns:1.5fr 1fr 1fr}}
.pied h4{font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sourd-2);font-weight:500;margin:0 0 16px}
.pied ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.pied a{color:var(--sourd);font-size:.92rem}
.pied a:hover{color:var(--reactif-clair)}
.pied .desc{color:var(--sourd);font-size:.92rem;max-width:38ch;margin-top:16px}
.pied-bas{
  margin-top:clamp(38px,5vw,58px);padding-block:22px;
  border-top:1px solid rgba(255,255,255,.07);
  display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;justify-content:space-between;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.09em;color:var(--sourd-2);
}
.pied-bas a{font-size:inherit}

/* ==========================================================================
   Révélations au défilement
   ========================================================================== */
.reveler{transition:opacity .8s var(--ease),transform .8s var(--ease)}
.charge .reveler{opacity:0;transform:translateY(26px)}
.charge .reveler.visible{opacity:1;transform:none}
.reveler[data-delai="1"]{transition-delay:.08s}
.reveler[data-delai="2"]{transition-delay:.16s}
.reveler[data-delai="3"]{transition-delay:.24s}
.reveler[data-delai="4"]{transition-delay:.32s}
.reveler[data-delai="5"]{transition-delay:.4s}

/* ==========================================================================
   Pages secondaires (mentions, confidentialité, 404)
   ========================================================================== */
.page-texte{padding-block:clamp(56px,7vw,96px)}
.page-texte .enveloppe{max-width:820px}
.page-texte h1{font-size:clamp(2.1rem,4.4vw,3.2rem);margin-bottom:.6em;color:#fff}
.page-texte h2{font-size:clamp(1.25rem,2.2vw,1.6rem);margin:2.2em 0 .7em;color:#fff}
.page-texte p,.page-texte li{color:var(--sourd);font-size:.98rem}
.page-texte ul{padding-left:1.1em;display:grid;gap:8px}
.page-texte a{color:var(--reactif);text-decoration:underline;text-underline-offset:3px}
.page-texte .maj{font-family:var(--mono);font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;color:var(--sourd-2)}

.page-404{min-height:62vh;display:flex;align-items:center;text-align:center}
.page-404 .enveloppe{max-width:640px}
.page-404 .code-erreur{font-family:var(--display);font-size:clamp(5rem,16vw,10rem);font-weight:800;line-height:.85;letter-spacing:-.05em;color:#fff}
.page-404 .code-erreur i{font-style:normal;color:var(--reactif)}

/* ==========================================================================
   Accessibilité / mouvement réduit
   ========================================================================== */
.saut-contenu{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--reactif);color:var(--abysse);padding:12px 18px;border-radius:0 0 var(--r-s) 0;font-weight:600;
}
.saut-contenu:focus{left:0}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important;
  }
  .charge .reveler,.reveler{opacity:1;transform:none}
  .charge .colonne .liquide{transform:translate(0px,188px)}
  .heros h1 .ligne > span,.heros-intro,.heros-actions,.heros-appui,.heros-anim{opacity:1;transform:none}
}

@media print{
  .entete,.bandeau,.rail,.menu-mobile,.formulaire,.piste{display:none}
  body{background:#fff;color:#000}
}
