:root{
  --nero:#0B0B0B;
  --carbone:#161616;
  --carbone-2:#212121;
  --graphite:#3D3D3D;
  --bianco:#F2F2F2;
  --giallo:#FFCE00;
  --giallo-dim:#E0B000;
  --rosso:#D40000;

  --font-display:"Space Grotesk", sans-serif;
  --font-body:"IBM Plex Sans", system-ui, sans-serif;
  --font-mono:"IBM Plex Mono", ui-monospace, monospace;
}

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

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
}

body{
  margin:0;
  background:var(--nero);
  color:var(--bianco);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

.wrap{ max-width:1120px; margin:0 auto; padding:0 24px; }
.narrow{ max-width:680px; }

h1, h2, h3{
  font-family:var(--font-display);
  color:#fff;
  margin:0 0 18px;
  letter-spacing:-0.01em;
}
h1{ font-size:clamp(34px, 5.4vw, 58px); line-height:1.06; }
h2{ font-size:clamp(26px, 3.6vw, 36px); line-height:1.15; }
h3{ font-size:19px; margin-bottom:6px; color:var(--giallo); }

p{ margin:0 0 16px; }
a{ color:inherit; }

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* --- Header --- */
.site-header{
  position:sticky; top:0; z-index:20;
  background:rgba(11,11,11,.9);
  backdrop-filter:blur(8px);
  border-bottom:1px solid rgba(242,242,242,.1);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; padding:14px 24px;
}
.brand{ display:inline-flex; align-items:center; gap:10px; text-decoration:none; }
.brand-mark{ height:34px; width:auto; display:block; }
.footer-mark, .brand-mark{ image-rendering:auto; }
.brand-name{
  font-family:var(--font-display); font-weight:700; font-size:20px;
  letter-spacing:-0.01em; color:#fff;
}

/* --- Le menu qui se déroule sous la marque (14 septembre 2026) ---------------------
   Il remplace la rangée de liens du haut, à la demande du skipper. L'en-tête ne garde
   plus que « ? », la langue et Contact.

   IL RÉPARE AUSSI UN TROU: sous 700 px, `.nav-links` était `display:none` SANS
   remplacement — un visiteur sur téléphone n'avait aucun moyen de naviguer. */
.menu{ position:relative; }
.menu > .brand{ cursor:pointer; list-style:none; user-select:none; }
/* Safari/iOS dessine encore le triangle de <summary> sans cette règle. */
.menu > .brand::-webkit-details-marker{ display:none; }
.menu > .brand::marker{ content:""; }
.menu .chevron{ width:17px; height:17px; opacity:.65; transition:transform .22s ease; }
.menu[open] .chevron{ transform:rotate(180deg); }
.menu > .brand:hover .chevron{ opacity:1; color:var(--giallo); }
.menu-panneau{
  position:absolute; top:calc(100% + 14px); left:0; z-index:30;
  display:flex; flex-direction:column; min-width:230px;
  padding:8px; border-radius:12px;
  background:rgba(18,18,18,.97); border:1px solid rgba(242,242,242,.13);
  box-shadow:0 18px 44px rgba(0,0,0,.5);
  /* LE DÉROULÉ. `@starting-style` anime l'apparition sans une ligne de JS; les
     navigateurs qui l'ignorent affichent simplement le panneau, ce qui reste correct. */
  animation:menu-deroule .2s ease both;
}
@keyframes menu-deroule{
  from{ opacity:0; transform:translateY(-8px); }
  to{ opacity:1; transform:none; }
}
.menu-panneau a{
  text-decoration:none; opacity:.88; font-size:15px;
  padding:9px 13px; border-radius:8px;
}
.menu-panneau a:hover{ opacity:1; color:var(--giallo); background:rgba(242,242,242,.06); }
/* UN MENU QUI S'ANIME NE DOIT PAS S'IMPOSER: certains lecteurs souffrent du mouvement. */
@media (prefers-reduced-motion: reduce){
  .menu-panneau{ animation:none; }
  .menu .chevron{ transition:none; }
}
.header-right{ display:flex; align-items:center; gap:14px; }
/* Le CTA Contact porte SON TEXTE ET SON ICÔNE; seule la largeur décide lequel s'affiche.
   Un seul élément, une seule clé de traduction, un seul lien — plutôt que deux boutons
   qu'il faudrait garder d'accord. */
.cta-contact .cta-icone{ display:none; width:19px; height:19px; }

/* --- « Installer l'app » et sa marche à suivre iOS (14 septembre 2026) --------------
   AUCUNE COULEUR NEUVE: le bouton reprend .btn .btn-primary tel quel, la fenêtre emprunte
   le nero du fond, le trait blanc cassé des autres encadrés et le giallo pour les repères.
   `hidden` suffit à le masquer, mais un `display:flex` ailleurs le rendrait quand même
   visible — d'où la règle explicite. */
#btn-installer[hidden]{ display:none !important; }
.modale-ios{
  max-width:34rem; border:1px solid rgba(242,242,242,.14); border-radius:14px;
  background:var(--carbone); color:var(--bianco); padding:26px 28px;
}
.modale-ios::backdrop{ background:rgba(11,11,11,.72); }
.modale-ios h2{ font-size:1.15rem; margin:0 0 14px; }
.modale-ios ol{ margin:0 0 20px; padding-left:1.25em; }
.modale-ios li{ margin:0 0 10px; line-height:1.6; }
.modale-ios b{ color:var(--giallo); }
/* Sur un écran étroit la fenêtre doit respirer, sinon elle touche les bords. */
@media (max-width: 560px){
  .modale-ios{ width:calc(100vw - 32px); padding:22px 20px; }
}

/* --- Sélecteur de langue --- */
.lang-switch select{
  font-family:var(--font-mono);
  font-size:13px;
  letter-spacing:.06em;
  color:var(--bianco);
  background:transparent;
  border:1px solid rgba(242,242,242,.22);
  border-radius:5px;
  padding:7px 8px;
  cursor:pointer;
}
.lang-switch select:hover{ border-color:var(--giallo); color:var(--giallo); }
.lang-switch select option{ background:var(--carbone); color:var(--bianco); }

/* --- Bouton icône (FAQ) --- */
.icon-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:5px;
  border:1px solid rgba(242,242,242,.22);
  color:var(--bianco); text-decoration:none;
  /* UN <button> N'EST PAS UN <a> — 14 septembre 2026, le skipper: « l'icône installer app
     est pas bien (carré blanc) ». Cette classe ne servait qu'à un LIEN, dont le fond est
     transparent par défaut. Sur un <button>, la feuille du navigateur impose
     `background: buttonface` — un gris clair — plus son propre rembourrage: d'où un carré
     pâle à la place de l'icône. On neutralise l'apparence native; pour le lien FAQ, ces
     règles ne changent rien. */
  background:transparent; padding:0; font:inherit; cursor:pointer;
  -webkit-appearance:none; appearance:none;
}
.icon-btn svg{ width:19px; height:19px; display:block; }
.icon-btn:hover{ border-color:var(--giallo); color:var(--giallo); }

/* --- Buttons --- */
.btn{
  display:inline-block;
  font-family:var(--font-display);
  font-weight:700;
  font-size:15px;
  text-decoration:none;
  padding:12px 22px;
  border-radius:6px;
  white-space:nowrap;
}
.btn-primary{ background:var(--giallo); color:var(--nero); }
.btn-primary:hover{ background:var(--giallo-dim); }
.btn-sm{ padding:9px 16px; font-size:14px; }

/* =====================================================================
   HERO — la photo passe derrière, assombrie, avec une trame de données
   ===================================================================== */
.hero{
  position:relative;
  padding:92px 0 72px;
  overflow:hidden;
  /* FOND DE SECOURS: si l'image manque, on garde un dégradé lisible au lieu d'un
     bloc noir plat — le texte doit rester net dans tous les cas. */
  background:radial-gradient(120% 100% at 70% 20%, #1b2430 0%, var(--nero) 62%);
}
.hero-media{ position:absolute; inset:0; z-index:0; }
.hero-img{
  width:100%; height:100%; object-fit:cover; object-position:60% 45%;
  opacity:.50;
  filter:grayscale(.35) contrast(1.08);
}
.hero-scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(90deg, var(--nero) 6%, rgba(11,11,11,.72) 46%, rgba(11,11,11,.30) 100%),
    linear-gradient(180deg, rgba(11,11,11,.55) 0%, rgba(11,11,11,0) 34%, var(--nero) 97%);
}
/* La trame: le monde physique lu comme une grille de mesure. */
.hero-grid-overlay{
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,206,0,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,206,0,.06) 1px, transparent 1px);
  background-size:46px 46px;
  mask-image:linear-gradient(90deg, transparent 30%, #000 100%);
  -webkit-mask-image:linear-gradient(90deg, transparent 30%, #000 100%);
}
.hero-grid{
  position:relative; z-index:1;
  display:grid; grid-template-columns:1.15fr 0.85fr;
  gap:56px; align-items:center;
}
.lede{ font-size:19px; max-width:52ch; }
.hero-actions{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-top:8px; }
.hero-note{ font-size:14px; color:#8a8a8a; }

/* =====================================================================
   LA RADIO DE BORD — ce que l'équipage ENTEND, pas ce qu'il lit
   =====================================================================
   Inspiré du muret des stands en sport automobile: un flux court, daté par
   l'action, où chaque message est une phrase qu'on peut suivre à la barre. */
.radio{
  background:rgba(18,18,18,.94);
  border:1px solid var(--carbone-2);
  border-radius:12px;
  padding:16px 18px 14px;
  backdrop-filter:blur(4px);
  box-shadow:0 18px 46px rgba(0,0,0,.55);
}
.radio-head{
  display:flex; align-items:center; gap:12px;
  padding-bottom:12px; margin-bottom:6px;
  border-bottom:1px solid rgba(242,242,242,.1);
}
.radio-live{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-mono); font-size:11px; letter-spacing:.14em;
  color:var(--rosso);
}
.radio-label{ font-size:13px; color:#8a8a8a; }

/* Égaliseur: quatre barres qui bougent — le signe qu'une VOIX parle. */
.eq{ display:inline-flex; align-items:flex-end; gap:2px; height:13px; }
.eq i{
  width:2.5px; background:var(--rosso); border-radius:1px;
  height:35%; animation:eqp .9s ease-in-out infinite;
}
.eq i:nth-child(2){ animation-delay:.15s; }
.eq i:nth-child(3){ animation-delay:.3s; }
.eq i:nth-child(4){ animation-delay:.45s; }
@keyframes eqp{ 0%,100%{ height:30%; } 50%{ height:100%; } }

.radio-feed{
  list-style:none; margin:0; padding:0;
  max-height:326px; overflow:hidden;
  display:flex; flex-direction:column; gap:2px;
  scroll-behavior:smooth;
}
.msg{
  display:grid; grid-template-columns:74px 1fr; gap:12px; align-items:start;
  padding:10px 0;
  border-bottom:1px solid rgba(242,242,242,.06);
  font-size:14px; line-height:1.5;
}
.msg:last-child{ border-bottom:0; }
.msg-tag{
  font-family:var(--font-mono); font-size:9.5px; letter-spacing:.1em;
  padding:3px 0 0; opacity:.85;
}
.msg-coach .msg-tag{ color:var(--giallo); }
.msg-verdict .msg-tag{ color:#7fb2d9; }
.msg-alert .msg-tag{ color:var(--rosso); }
.msg-txt{ color:var(--bianco); opacity:.92; }
.msg-alert .msg-txt{ color:#ffd9d5; font-weight:600; }
.radio-foot{
  margin:10px 0 0; padding-top:10px;
  border-top:1px solid rgba(242,242,242,.1);
  font-size:12px; color:#8a8a8a;
}

/* Le défilement du flux: les messages arrivent un à un (voir script.js). Sans JS
   ou en mouvement réduit, ils sont TOUS visibles d'emblée — jamais de contenu caché. */
.radio-feed.anime .msg{ opacity:0; transform:translateY(6px); }
.radio-feed.anime .msg.on{
  opacity:1; transform:none;
  transition:opacity .45s ease, transform .45s ease;
}

/* --- Divider --- */
.divider{ display:flex; justify-content:center; padding:10px 0 4px; }
.divider svg{ width:64px; height:26px; }

/* --- Sections --- */
.section{ padding:64px 0; }
.section-alt{ background:var(--carbone); }
.section-intro{ max-width:60ch; opacity:.85; }

/* --- Encadré « augmente, ne remplace pas » --- */
.callout{
  margin-top:28px;
  border-left:3px solid var(--giallo);
  background:var(--carbone);
  border-radius:0 8px 8px 0;
  padding:20px 22px;
}
.callout h3{ margin-bottom:8px; }
.callout p{ margin:0; opacity:.9; }

/* =====================================================================
   BANDE DE FUSION — photo à gauche, trame numérique à droite
   ===================================================================== */
.fusion{
  position:relative;
  height:clamp(180px, 26vw, 300px);
  overflow:hidden;
  border-top:1px solid rgba(242,242,242,.08);
  border-bottom:1px solid rgba(242,242,242,.08);
  background:var(--carbone);
}
.fusion-img{
  width:100%; height:100%; object-fit:cover; display:block;
}
/* Lignes de balayage: la mesure qui passe sur l'image. */
.fusion-scan{
  position:absolute; inset:0; pointer-events:none;
  background:repeating-linear-gradient(
    180deg, rgba(0,0,0,.16) 0 1px, transparent 1px 4px);
  mix-blend-mode:multiply;
}

/* =====================================================================
   LES SIX IA
   ===================================================================== */
/* ============================================================ LE BLASON (7 sept 2026)
   Six têtes sur un écu, en face du titre « Six IA. Un seul équipage. ». Le logo
   n'est pas là pour décorer: il dit la même chose que le titre. */
.crew-head{
  display:grid;
  grid-template-columns:1fr auto;
  gap:40px;
  align-items:center;
}
.crest-figure{ margin:0; text-align:center; }
.crest-figure img{
  display:block;
  width:auto; height:210px;
  /* L'écu est sombre sur un fond sombre: sans cette lueur, seule la bordure rouge se
     détache et la silhouette se perd. La lueur remplace le halo de la planche d'origine. */
  filter:drop-shadow(0 0 26px rgba(242,242,242,.16));
}
.crest-figure figcaption{
  margin-top:14px;
  font-family:var(--font-mono);
  font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--bianco); opacity:.5;
  max-width:22ch;
}

/* L'ANCIENNE MARQUE, en ornement. Discrète par construction: elle habille la carte,
   elle ne doit jamais concurrencer le texte ni le nouveau blason. */
.card-ornement{
  position:absolute; top:16px; right:16px;
  width:34px; height:34px;
  color:var(--giallo);
  opacity:.14;
  pointer-events:none;
}
.crew-card-route:hover .card-ornement{ opacity:.3; }
@media (prefers-reduced-motion: reduce){
  .card-ornement{ transition:none; }
}

.crew-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:18px;
  margin-top:32px;
}
.crew-card{
  position:relative;
  background:var(--nero);
  border:1px solid rgba(242,242,242,.1);
  border-radius:10px;
  padding:24px 22px 22px;
  transition:border-color .2s ease, transform .2s ease;
}
.crew-card:hover{ border-color:rgba(255,206,0,.5); transform:translateY(-2px); }
.crew-num{
  font-family:var(--font-mono);
  font-size:12px; letter-spacing:.14em;
  color:var(--giallo); opacity:.75;
  display:block; margin-bottom:10px;
}
.crew-card h3{ font-size:18px; margin-bottom:8px; }
.crew-card p{ margin:0; font-size:15px; opacity:.85; }
.crew-card em{ color:var(--giallo); font-style:normal; font-weight:600; }

/* =====================================================================
   CAPTEURS — image en fond, liste en deux colonnes
   ===================================================================== */
.section-sensors{ position:relative; overflow:hidden; }
.sensors-media{ position:absolute; inset:0; z-index:0; }
.sensors-img{
  width:100%; height:100%; object-fit:cover; object-position:50% 40%;
  opacity:.22;
  filter:grayscale(1) contrast(1.15);
}
.section-sensors::after{
  content:""; position:absolute; inset:0; z-index:0;
  background:linear-gradient(180deg, var(--nero) 0%, rgba(11,11,11,.82) 30%, var(--nero) 100%);
}
.sensors-inner{ position:relative; z-index:1; }
.sensor-list{
  list-style:none; padding:0; margin:30px 0 0;
  display:grid; grid-template-columns:repeat(3, 1fr); gap:1px;
  background:rgba(242,242,242,.1);
  border:1px solid rgba(242,242,242,.1);
  border-radius:10px; overflow:hidden;
}
.sensor-list li{
  background:var(--nero);
  padding:20px 20px 22px;
  display:flex; flex-direction:column; gap:5px;
}
.sensor-list strong{
  font-family:var(--font-mono);
  font-size:12.5px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--giallo);
}
.sensor-list span{ font-size:14.5px; opacity:.82; }

/* =====================================================================
   EXEMPLE DE RAPPORT — mise en page proche du vrai document
   ===================================================================== */
.report-doc{
  margin-top:30px;
  background:var(--nero);
  border:1px solid rgba(242,242,242,.12);
  border-radius:10px;
  padding:26px clamp(20px, 3vw, 34px) 30px;
  box-shadow:0 18px 46px rgba(0,0,0,.4);
}
.report-caption{
  font-family:var(--font-mono);
  font-size:12.5px; color:#8a8a8a;
  margin:0 0 22px; padding-bottom:16px;
  border-bottom:1px solid rgba(242,242,242,.1);
}
.report-scores{
  display:grid; grid-template-columns:repeat(5, 1fr); gap:12px;
  margin-bottom:26px;
}
.score{ display:flex; flex-direction:column; gap:5px; }
.score-key{
  font-family:var(--font-mono);
  font-size:10.5px; letter-spacing:.1em; color:#8a8a8a;
}
.score-val{
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(20px, 2.6vw, 27px); color:var(--bianco);
  font-variant-numeric:tabular-nums; line-height:1;
}
.score-val i{ font-style:normal; font-size:.52em; color:#8a8a8a; font-weight:500; }
/* UNE MAUVAISE NOTE SE VOIT. 1,7/10 aux manœuvres, c'est le vrai chiffre de ce
   jour-là: le rapport ne flatte pas, et l'exemple non plus. */
.score-low{ color:var(--rosso); }
.score-na{ color:var(--graphite); }

.report-h3{
  font-family:var(--font-display); color:var(--bianco);
  font-size:17px; margin:0 0 12px;
}
.report-body{
  font-size:15px; line-height:1.72; opacity:.88; margin:0;
  font-variant-numeric:tabular-nums;
}
.report-rupture{
  margin-top:20px;
  border-left:3px solid #E0A640;
  background:#2A2013;
  border-radius:0 8px 8px 0;
  padding:14px 18px;
}
.rupture-title{ margin:0 0 6px; font-size:14px; font-weight:600; }
.rupture-item{ margin:0; font-size:14px; opacity:.9; }
.rupture-item::before{ content:"• "; color:#E0A640; }
.report-footnote{
  margin-top:16px; font-size:13.5px; color:#8a8a8a; max-width:70ch;
}

/* --- Les deux cartes du rapport --- */
.figs-h3{
  font-family:var(--font-display); color:#fff;
  font-size:19px; margin:34px 0 16px;
}
.report-figs{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.fig{
  margin:0; background:var(--nero);
  border:1px solid rgba(242,242,242,.12); border-radius:10px;
  overflow:hidden; display:flex; flex-direction:column;
}
/* FOND BLANC SOUS LA FIGURE, ET C'EST VOULU: ce sont des tracés sur fond clair. Les
   poser directement sur le noir du site donnerait un rectangle blanc flottant; le
   cadre leur donne l'air d'un document, ce qu'elles sont. */
.fig img{
  display:block; width:100%; height:auto;
  background:#fff;
  border-bottom:1px solid rgba(242,242,242,.12);
}
/* LE SCEAU sur la figure. Position en bas à droite de l'IMAGE, pas de la figure — la
   légende de la page, elle, est sur fond sombre.

   L'OPACITÉ EST PASSÉE DE 0,16 À 0,05 — 7 septembre 2026, demande du skipper: « le logo
   en background des rapports graphiques doit être beaucoup plus fade, pour éviter de nuire
   à la lecture du graphique ». Il avait raison, et la mesure le montre: le coin bas-droite
   est le plus CHARGÉ des deux figures (19,8 % de pixels non blancs sur la carte du
   parcours, 6,3 % sur celle des vents) — le sceau y tombe pile sur la boîte de légende.
   À 0,16 il se lisait par-dessus le texte de la légende; à 0,05 la légende redevient nette
   et le sceau ne se voit que si on le cherche, ce qui est exactement le rôle d'un
   filigrane.

   SI ON VOULAIT ALLER PLUS LOIN: le coin le moins chargé des DEUX figures est le
   haut-gauche (5,4 % et 0,0 %). Déplacer le sceau y tiendrait en une ligne
   (`right/bottom` -> `left:14px; top:14px`). Non fait: la position en bas à droite est
   celle d'un sceau de document, et à 0,05 elle ne coûte plus rien à la lecture. */
.fig-media{ position:relative; display:block; }
.fig-sceau{
  position:absolute;
  right:14px; bottom:12px;
  /* `.fig img` impose width:100%, un fond blanc et un filet: le sceau doit tout annuler,
     sinon il s'affiche en pavé blanc pleine largeur au bas de la figure. */
  width:auto; height:44px;
  background:none; border:0;
  opacity:.05;
  pointer-events:none;
}
.fig figcaption{
  padding:14px 16px 16px; font-size:13.5px; line-height:1.55;
}
.fig figcaption strong{
  display:block; color:var(--giallo);
  font-family:var(--font-display); font-size:14.5px; margin-bottom:5px;
}
.fig figcaption span{ opacity:.8; }

/* --- Conclusion du bloc des six IA --- */
.crew-outro{
  margin-top:26px; padding:24px 26px;
  border:1px solid rgba(255,206,0,.28);
  border-radius:10px;
  background:linear-gradient(180deg, rgba(255,206,0,.05), rgba(255,206,0,0));
}
.crew-outro h3{ color:#fff; font-size:19px; margin-bottom:8px; }
.crew-outro p{ margin:0; opacity:.88; max-width:70ch; }
.crew-outro-stat{
  margin-top:16px !important; padding-top:15px;
  border-top:1px solid rgba(242,242,242,.1);
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
}
.crew-outro-stat strong{
  font-family:var(--font-display); font-size:30px; color:var(--giallo);
  line-height:1; font-variant-numeric:tabular-nums;
}
.crew-outro-stat span{ font-size:15px; opacity:.85; }

/* =====================================================================
   FAQ — <details> natif, stylé
   ===================================================================== */
.faq-item{
  border-bottom:1px solid rgba(242,242,242,.1);
  padding:2px 0;
}
.faq-item summary{
  list-style:none; cursor:pointer;
  padding:16px 34px 16px 0; position:relative;
  font-family:var(--font-display); font-weight:500; font-size:17px; color:#fff;
}
.faq-item summary::-webkit-details-marker{ display:none; }
/* Le chevron: un signe « + » qui bascule en « − » — sans image, sans JS. */
.faq-item summary::after{
  content:"+"; position:absolute; right:4px; top:50%;
  transform:translateY(-50%);
  font-family:var(--font-mono); font-size:21px; color:var(--giallo);
  line-height:1;
}
.faq-item[open] summary::after{ content:"–"; }
.faq-item summary:hover{ color:var(--giallo); }
.faq-item p{
  margin:0 0 18px; padding-right:34px;
  font-size:15px; opacity:.85; max-width:70ch;
}

/* =====================================================================
   AUTONOMIE / MISSION
   ===================================================================== */
.mission-lead{
  display:grid; grid-template-columns:1fr 1fr; gap:26px;
  max-width:none; margin-bottom:14px;
}
.mission-lead p{ margin:0; opacity:.88; }
.mission-h3{
  font-family:var(--font-mono); color:#8a8a8a;
  font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  margin:30px 0 16px; font-weight:500;
}
.chal-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:16px; }
.chal{
  position:relative;
  border:1px solid rgba(242,242,242,.1);
  border-radius:10px;
  padding:22px 22px 20px;
  background:var(--carbone);
}
.chal-num{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.14em;
  color:var(--giallo); opacity:.7; display:block; margin-bottom:9px;
}
.chal h4{
  font-family:var(--font-display); font-size:17px; color:#fff;
  margin:0 0 7px; letter-spacing:-0.01em;
}
.chal p{ margin:0; font-size:14.5px; opacity:.84; }

/* =====================================================================
   À QUI ÇA S'ADRESSE
   ===================================================================== */
.voies{ margin-top:32px; display:flex; flex-direction:column; gap:18px; }
.voie{
  display:grid; grid-template-columns:0.9fr 1.1fr;
  gap:0;
  border:1px solid rgba(242,242,242,.12);
  border-radius:12px; overflow:hidden;
  background:var(--nero);
}
.voie-quoi{
  padding:26px 26px 24px;
  border-right:1px solid rgba(242,242,242,.12);
  background:linear-gradient(180deg, rgba(255,206,0,.05), rgba(255,206,0,0));
}
.voie-num{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.14em;
  color:var(--giallo); opacity:.75; display:block; margin-bottom:9px;
}
.voie-quoi h3{ font-size:20px; color:#fff; margin-bottom:10px; }
.voie-pour{ font-size:14.5px; opacity:.72; margin-bottom:14px; }
.voie-offre{ font-size:15px; margin:0; opacity:.95; }
.voie-offre strong{ color:var(--giallo); font-weight:600; }

/* LES ÉTAPES SONT NUMÉROTÉES PAR CSS, pas à la main: ajouter ou retirer une étape ne
   demande alors aucune renumérotation, et l'ordre reste celui du document. */
.voie-etapes{
  list-style:none; margin:0; padding:22px 26px 18px;
  counter-reset:etape;
}
.voie-etapes li{
  counter-increment:etape;
  position:relative; padding-left:34px; margin-bottom:15px;
}
.voie-etapes li:last-child{ margin-bottom:0; }
.voie-etapes li::before{
  content:counter(etape);
  position:absolute; left:0; top:1px;
  width:22px; height:22px; border-radius:50%;
  border:1px solid rgba(255,206,0,.5);
  color:var(--giallo);
  font-family:var(--font-mono); font-size:11px;
  display:flex; align-items:center; justify-content:center;
}
.voie-etapes strong{
  display:block; font-family:var(--font-display); font-weight:500;
  font-size:15px; color:#fff; margin-bottom:2px;
}
.voie-etapes span{ font-size:14px; opacity:.82; }

.voie-impl{
  grid-column:1 / -1;
  margin:0; padding:15px 26px 17px;
  border-top:1px solid rgba(242,242,242,.12);
  background:var(--carbone);
  font-size:14.5px;
}
.voie-impl strong{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--giallo); margin-right:8px;
}
.voie-impl span{ opacity:.88; }

/* --- CTA / Contact --- */
.section-cta{ text-align:left; }
.cta-footnote{ margin-top:14px; font-size:14px; color:var(--graphite); }

/* --- Footer --- */
.site-footer{ border-top:1px solid rgba(242,242,242,.1); padding:32px 0 48px; }
.footer-inner{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.footer-mark{ height:26px; width:auto; opacity:.65; }
.footer-inner p{ margin:0; font-size:13.5px; color:var(--graphite); }
.footer-inner a{ color:var(--graphite); text-decoration:underline; }

/* --- Focus --- */
a:focus-visible, .btn:focus-visible, select:focus-visible{
  outline:2px solid var(--giallo); outline-offset:3px;
}

/* --- Apparition au défilement --- */
.reveal{ opacity:0; transform:translateY(14px); }
.reveal-on{
  opacity:1; transform:none;
  transition:opacity .5s ease, transform .5s ease;
}

/* --- Responsive --- */
@media (max-width: 980px){
  .crew-head{ grid-template-columns:1fr; gap:28px; }
  .crest-figure{ justify-self:center; }
  .crest-figure img{ height:170px; }
  .crew-grid{ grid-template-columns:repeat(2, 1fr); }
  .sensor-list{ grid-template-columns:repeat(2, 1fr); }
  .report-scores{ grid-template-columns:repeat(3, 1fr); gap:16px; }
  .voie{ grid-template-columns:1fr; }
  .voie-quoi{ border-right:0; border-bottom:1px solid rgba(242,242,242,.12); }
  .mission-lead{ grid-template-columns:1fr; gap:16px; }
  .report-figs{ grid-template-columns:1fr; }
}
@media (max-width: 860px){
  .hero-grid{ grid-template-columns:1fr; gap:36px; }
  .hero-img{ object-position:64% 45%; }
  .hero-scrim{
    background:linear-gradient(180deg, rgba(11,11,11,.7) 0%, rgba(11,11,11,.86) 45%, var(--nero) 96%);
  }
  .chal-grid{ grid-template-columns:1fr; }
}
@media (max-width: 700px){
  /* Le menu du haut a disparu au profit du tiroir sous la marque: plus rien à masquer.
     Sur écran étroit, le panneau s'élargit pour rester confortable au pouce. */
  .menu-panneau{ min-width:min(78vw, 300px); }

  /* L'EN-TÊTE DOIT TENIR DANS LA LARGEUR D'UN TÉLÉPHONE — 14 septembre 2026, le skipper:
     « sur iPhone en position verticale cela fait déborder le menu ».

     LE COMPTE, sur un iPhone de 390 px: la marque en pèse 164, et la rangée de droite
     34 (?) + 34 (langue) + 34 (installer) + 86 (Contact) + 42 de gouttières + 48 de marges
     — soit 466 px. Réduire le bouton d'installation à une icône a enlevé 114 px; il en
     restait 76 de trop.

     LE MASQUER ÉTAIT LA MAUVAISE RÉPONSE. Première tentative: le CTA sortait de l'en-tête
     sous 700 px, puisqu'il figure déjà dans le tiroir. Le skipper: « à la verticale on perd
     contact, à l'horizontale on retrouve contact ». Un appel à l'action qu'il faut aller
     CHERCHER dans un menu n'en est plus un — et l'écart entre le portrait et le paysage se
     lisait comme un défaut.

     IL DEVIENT DONC UNE ICÔNE, comme ses voisins, et garde le giallo: c'est toujours lui le
     bouton qui appelle l'action. Quatre icônes de 34 px plus le sélecteur de langue, pour
     351 px estimés — ça tient sur un iPhone SE. */
  .cta-contact .cta-texte{ display:none; }
  .cta-contact .cta-icone{ display:block; }
  .cta-contact{
    width:34px; height:34px; padding:0; border-radius:5px;
    display:inline-flex; align-items:center; justify-content:center;
  }
  /* La marque respire un peu moins, pour laisser la place à la rangée de droite. */
  .brand-name{ font-size:17px; }
  .header-inner{ gap:12px; padding:12px 12px; }
  .header-right{ gap:10px; }
  .crest-figure img{ height:140px; }
  .crew-grid{ grid-template-columns:1fr; }
  .sensor-list{ grid-template-columns:1fr; }
  .report-scores{ grid-template-columns:repeat(2, 1fr); }
  .hero{ padding:60px 0 52px; }
  /* LE FLUX RESTE LISIBLE EN COLONNE ÉTROITE: l'étiquette passe au-dessus du texte
     plutôt que de lui voler 74 px de largeur. */
  .msg{ grid-template-columns:1fr; gap:3px; }
  .msg-tag{ padding:0; }
  .radio-feed{ max-height:none; }
}


/* ================================================================ VIGIE
   L'EXEMPLE DOIT SE LIRE COMME UN EXTRAIT, PAS COMME UNE PROMESSE. Encadre et legerement
   retrait, il se distingue de la prose commerciale autour: c'est un vrai bulletin, du
   11 septembre 2026, et il se verifie en ouvrant son lien. */
.vigie-exemple {
  border: 1px solid var(--liseret, rgba(0,0,0,.12));
  border-left: 4px solid var(--accent, #b4451f);
  border-radius: 10px;
  padding: 18px 22px;
  margin: 22px 0 28px;
}
.vigie-exemple h3 { margin: 4px 0 6px; font-size: 1.05rem; }
.vigie-etiquette {
  text-transform: uppercase; letter-spacing: .08em; font-size: .72rem;
  opacity: .65; margin: 0;
}
.vigie-source { font-size: .88rem; opacity: .8; margin: 0 0 12px; }
.vigie-exemple p { margin: 0 0 10px; }
.vigie-exemple p:last-child { margin-bottom: 0; }

.vigie-form fieldset { border: 0; padding: 0; margin: 0 0 16px; }
.vigie-form legend { font-weight: 600; margin-bottom: 10px; padding: 0; }
/* 44 px de zone tactile: la page se lit surtout au telephone, et une case a cocher de
   16 px se rate une fois sur trois avec le pouce. */
.vigie-opt {
  display: flex; align-items: flex-start; gap: 10px;
  min-height: 44px; padding: 6px 0; cursor: pointer; line-height: 1.45;
}
.vigie-opt input { margin-top: 4px; width: 18px; height: 18px; flex: none; }
.vigie-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.vigie-note { font-size: .85rem; opacity: .75; margin: 0; }
