/* ==========================================================================
   GALAXY BIOLAB — feuille de style
   Couleurs et formes inspirées du logo : bleu profond, blanc, liseré belge,
   molécule et boîte isométrique.
   ========================================================================== */
:root {
  --nuit: #050B29;
  --nuit-2: #0A1545;
  --bleu: #1D3285;          /* le bleu du logo */
  --bleu-2: #2B4BC4;
  --bleu-3: #1B6FD8;
  --ciel: #5BB8FF;
  --cyan: #38E1FF;
  --encre: #0C1433;
  --gris: #56618A;
  --gris-clair: #8A94B8;
  --trait: #E0E6F3;
  --papier: #FFFFFF;
  --clair: #F2F5FC;
  --noir-be: #111111;
  --jaune-be: #F8D74D;
  --rouge-be: #DB0216;

  --mission: #FF4D63;
  --exercice: #3FA9FF;
  --formation: #2EE59D;

  --titre: "Barlow Condensed", "Arial Narrow", system-ui, sans-serif;
  --texte: "Barlow", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;

  --rayon: 22px;
  --ombre: 0 30px 60px -34px rgba(12, 20, 51, .45);
  --ombre-douce: 0 18px 40px -28px rgba(12, 20, 51, .35);
  --largeur: 1220px;
  --gouttiere: clamp(16px, 4vw, 32px);
  --entete-h: 78px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--entete-h) + 16px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--papier);
  color: var(--encre);
  font-family: var(--texte);
  font-size: 17.5px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: var(--bleu-2); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--bleu-3); }
button { font: inherit; cursor: pointer; }
h1, h2, h3, h4 { margin: 0; font-weight: 600; }
p { margin: 0 0 1em; }
:focus-visible { outline: 3px solid var(--cyan); outline-offset: 3px; border-radius: 6px; }
::selection { background: var(--cyan); color: var(--nuit); }

.wrap { width: 100%; max-width: var(--largeur); margin: 0 auto; padding: 0 var(--gouttiere); }
.wrap-etroit { max-width: 860px; }
.mono { font-family: var(--mono); font-size: .92em; }

.saut-contenu {
  position: absolute; left: 12px; top: -60px; z-index: 200;
  background: var(--papier); color: var(--encre); padding: 10px 16px; border-radius: 10px;
}
.saut-contenu:focus { top: 12px; }

.ico { width: 1.25em; height: 1.25em; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.ico .plein { fill: currentColor; stroke: none; }

/* ---------- boutons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 14px 24px; border-radius: 999px;
  font-family: var(--texte); font-weight: 600; font-size: 16px; line-height: 1.2;
  text-decoration: none; border: 1.5px solid transparent;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
  white-space: nowrap;
}
.btn .btn-ico { width: 18px; height: 18px; transition: transform .2s ease; }
.btn:hover .btn-ico { transform: translateX(4px); }
.btn:active { transform: translateY(1px); }
.btn-primaire {
  background: linear-gradient(120deg, var(--bleu-2), var(--bleu-3));
  color: #fff; box-shadow: 0 14px 30px -14px rgba(43, 75, 196, .8);
}
.btn-primaire:hover { color: #fff; transform: translateY(-2px); box-shadow: 0 20px 36px -14px rgba(43, 75, 196, .9); }
.btn-contour { border-color: rgba(255, 255, 255, .45); color: #fff; background: rgba(255, 255, 255, .04); }
.btn-contour:hover { color: #fff; border-color: #fff; background: rgba(255, 255, 255, .1); }
.btn-contour-sombre { border-color: var(--trait); color: var(--encre); background: var(--papier); }
.btn-contour-sombre:hover { color: var(--bleu-2); border-color: var(--bleu-2); }
.btn-blanc { background: #fff; color: var(--bleu); box-shadow: 0 16px 30px -16px rgba(0, 0, 0, .5); }
.btn-blanc:hover { color: var(--bleu-2); transform: translateY(-2px); }
.zone-boutons { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.align-centre .zone-boutons { justify-content: center; }

/* ---------- textes communs ---------- */
.surtitre {
  display: inline-flex; align-items: center; gap: 12px;
  font-family: var(--mono); font-size: 12.5px; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--bleu-2); margin: 0 0 18px;
}
.drapeau { display: inline-flex; width: 26px; height: 4px; border-radius: 2px; overflow: hidden; flex: none;
  background: linear-gradient(90deg, var(--noir-be) 0 33.3%, var(--jaune-be) 33.3% 66.6%, var(--rouge-be) 66.6%); }
.titre-section {
  font-family: var(--titre); font-weight: 600;
  font-size: clamp(34px, 4.3vw, 54px); line-height: 1.04; letter-spacing: -.005em;
  margin: 0 0 20px; text-wrap: balance;
}
.accent { color: var(--bleu-2); }
.intro { font-size: clamp(18px, 1.6vw, 20px); color: var(--gris); max-width: 720px; text-wrap: pretty; }
.align-centre .section-tete { text-align: center; margin-left: auto; margin-right: auto; }
.align-centre .intro { margin-left: auto; margin-right: auto; }
.section-tete { max-width: 820px; margin-bottom: clamp(38px, 5vw, 60px); }
.section-tete .intro { margin-bottom: 0; }

.riche p { margin: 0 0 1.1em; }
.riche p:last-child { margin-bottom: 0; }
.riche strong { font-weight: 600; color: var(--encre); }
.riche .puces { margin: 0 0 1.1em; padding-left: 1.2em; }

.coches { list-style: none; padding: 0; margin: 26px 0 0; display: grid; gap: 12px; }
.coches li { display: flex; gap: 12px; align-items: flex-start; }
.coches .ico {
  width: 24px; height: 24px; padding: 4px; margin-top: 2px; border-radius: 50%;
  background: rgba(43, 75, 196, .1); color: var(--bleu-2); stroke-width: 2.4;
}

/* ==========================================================================
   EN-TÊTE DU SITE
   ========================================================================== */
.entete {
  position: fixed; inset: 0 0 auto; z-index: 50; height: var(--entete-h);
  color: #fff; transition: background .3s ease, box-shadow .3s ease, color .3s ease, height .3s ease;
}
.entete::before {
  content: ""; position: absolute; inset: 0; opacity: 0; transition: opacity .3s ease;
  background: rgba(255, 255, 255, .9); backdrop-filter: saturate(1.4) blur(14px); -webkit-backdrop-filter: saturate(1.4) blur(14px);
  box-shadow: 0 10px 30px -20px rgba(12, 20, 51, .35);
}
.entete.plein { color: var(--encre); --entete-h: 68px; }
.entete.plein::before { opacity: 1; }
.entete-inner {
  position: relative; height: 100%; max-width: 1360px; margin: 0 auto; padding: 0 var(--gouttiere);
  display: flex; align-items: center; gap: 24px;
}
.marque { display: flex; align-items: center; gap: 12px; color: inherit; text-decoration: none; flex: none; }
.marque img { width: 40px; height: auto; filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .25)); transition: transform .3s ease; }
.marque:hover img { transform: rotate(-6deg) scale(1.05); }
.marque-nom { font-family: var(--titre); font-weight: 700; font-size: 23px; letter-spacing: .06em; text-transform: uppercase; line-height: 1; }
.menu { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.menu > a:not(.btn) {
  position: relative; color: inherit; text-decoration: none; font-weight: 500; font-size: 16px;
  padding: 8px 12px; border-radius: 10px; opacity: .88; transition: opacity .2s ease;
}
.menu > a:not(.btn)::after {
  content: ""; position: absolute; left: 12px; right: 12px; bottom: 3px; height: 2px; border-radius: 2px;
  background: var(--cyan); transform: scaleX(0); transform-origin: left; transition: transform .25s ease;
}
.menu > a:not(.btn):hover { opacity: 1; }
.menu > a:not(.btn):hover::after, .menu > a.actif::after { transform: scaleX(1); }
.menu > a.actif { opacity: 1; }
.entete.plein .menu > a:not(.btn)::after { background: var(--bleu-2); }
.btn-devis { margin-left: 10px; padding: 10px 18px; font-size: 15px; border-color: rgba(255, 255, 255, .5); color: #fff; }
.btn-devis:hover { color: #fff; background: rgba(255, 255, 255, .12); border-color: #fff; }
.entete.plein .btn-devis { background: linear-gradient(120deg, var(--bleu-2), var(--bleu-3)); border-color: transparent; }
.burger { display: none; margin-left: auto; width: 46px; height: 46px; border: 0; background: transparent; color: inherit; border-radius: 12px; position: relative; z-index: 2; }
.burger span { position: absolute; left: 12px; right: 12px; height: 2px; border-radius: 2px; background: currentColor; transition: transform .25s ease, opacity .2s ease; }
.burger span:nth-child(1) { top: 16px; } .burger span:nth-child(2) { top: 22px; } .burger span:nth-child(3) { top: 28px; }
.entete.menu-ouvert .burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.entete.menu-ouvert .burger span:nth-child(2) { opacity: 0; }
.entete.menu-ouvert .burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ==========================================================================
   ACCUEIL : LE GRAND BANDEAU
   ========================================================================== */
.hero {
  position: relative; overflow: hidden; color: #fff;
  min-height: min(100svh, 940px); display: flex; align-items: center;
  padding: calc(var(--entete-h) + 40px) 0 90px;
  background:
    radial-gradient(900px 600px at 78% 38%, rgba(43, 75, 196, .55), transparent 65%),
    radial-gradient(700px 500px at 8% 100%, rgba(56, 225, 255, .14), transparent 60%),
    linear-gradient(180deg, #040922 0%, var(--nuit) 50%, #081338 100%);
}
.hero::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(rgba(140, 190, 255, .16) 1px, transparent 1px);
  background-size: 26px 26px;
  mask-image: linear-gradient(180deg, transparent, #000 30%, #000 70%, transparent);
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 30%, #000 70%, transparent);
}
.hero-reseau { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-lueur { position: absolute; width: 60vmax; height: 60vmax; right: -20vmax; top: -10vmax; border-radius: 50%;
  background: radial-gradient(circle, rgba(56, 225, 255, .12), transparent 60%); animation: respire 9s ease-in-out infinite; }
.hero-grille { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: 40px; align-items: center; }
.hero .surtitre { color: var(--cyan); }
.hero h1 {
  font-family: var(--titre); font-weight: 600;
  font-size: clamp(46px, 7vw, 92px); line-height: .98; letter-spacing: -.01em; margin: 0 0 26px; text-wrap: balance;
}
.hero .accent, .entete-page .accent, .mission-hero .accent, .fond-nuit .accent, .fond-bleu .accent {
  background: linear-gradient(100deg, var(--ciel), var(--cyan) 60%, #B9F4FF);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.chapeau { font-size: clamp(18px, 1.7vw, 21px); line-height: 1.6; color: rgba(214, 226, 255, .86); max-width: 640px; text-wrap: pretty; }
.hero-boutons { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
.hero-badges { list-style: none; margin: 38px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.hero-badges li {
  font-family: var(--mono); font-size: 12px; letter-spacing: .04em; color: rgba(200, 225, 255, .9);
  padding: 8px 14px; border-radius: 999px; border: 1px solid rgba(120, 180, 255, .28); background: rgba(10, 25, 80, .45);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.hero-badges li::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); margin-right: 9px; vertical-align: 1px; box-shadow: 0 0 10px var(--cyan); }
.hero.align-centre .hero-grille { grid-template-columns: 1fr; text-align: center; }
.hero.align-centre .hero-texte { margin: 0 auto; }
.hero.align-centre .chapeau { margin-left: auto; margin-right: auto; }
.hero.align-centre .hero-boutons, .hero.align-centre .hero-badges { justify-content: center; }
.hero.align-centre .embleme { display: none; }

/* l'emblème : le logo et ses orbites */
.embleme { position: relative; width: min(100%, 470px); aspect-ratio: 1; margin-left: auto; perspective: 1100px; }
.embleme-logo {
  position: absolute; left: 50%; top: 50%; width: 58%; height: auto; transform: translate(-50%, -50%);
  z-index: 3; filter: drop-shadow(0 30px 50px rgba(0, 0, 0, .55)) drop-shadow(0 0 40px rgba(56, 140, 255, .35));
  animation: flotte 7s ease-in-out infinite;
}
.embleme-halo { position: absolute; inset: 14%; border-radius: 50%; z-index: 1;
  background: radial-gradient(circle, rgba(43, 75, 196, .7), rgba(43, 75, 196, 0) 68%); filter: blur(10px); }
.orbite {
  position: absolute; inset: 4%; border-radius: 50%; z-index: 2;
  border: 1px solid rgba(120, 190, 255, .35);
  transform-style: preserve-3d;
  animation: orbite var(--duree, 22s) linear infinite;
}
.orbite.o1 { --incl: 72deg; --axe: -18deg; --duree: 20s; }
.orbite.o2 { --incl: 70deg; --axe: 42deg; --duree: 28s; inset: 0; border-color: rgba(56, 225, 255, .28); animation-direction: reverse; }
.orbite.o3 { --incl: 76deg; --axe: 95deg; --duree: 36s; inset: 10%; border-style: dashed; border-color: rgba(120, 190, 255, .22); }
.satellite {
  position: absolute; top: -5px; left: 50%; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%;
  background: var(--cyan); box-shadow: 0 0 14px 4px rgba(56, 225, 255, .6);
}
.orbite.o2 .satellite { background: #fff; width: 8px; height: 8px; top: -4px; }
.orbite.o3 .satellite { background: var(--jaune-be); box-shadow: 0 0 12px 3px rgba(248, 215, 77, .55); width: 7px; height: 7px; top: -4px; }
@keyframes orbite {
  from { transform: rotateZ(var(--axe)) rotateX(var(--incl)) rotateZ(0deg); }
  to   { transform: rotateZ(var(--axe)) rotateX(var(--incl)) rotateZ(360deg); }
}
@keyframes flotte { 0%, 100% { transform: translate(-50%, -50%); } 50% { transform: translate(-50%, calc(-50% - 12px)); } }
@keyframes respire { 0%, 100% { opacity: .7; transform: scale(1); } 50% { opacity: 1; transform: scale(1.06); } }

.hero-defiler { position: absolute; left: 50%; bottom: 26px; z-index: 3; width: 26px; height: 42px; margin-left: -13px;
  border: 1.5px solid rgba(255, 255, 255, .45); border-radius: 14px; }
.hero-defiler span { position: absolute; left: 50%; top: 8px; width: 4px; height: 8px; margin-left: -2px; border-radius: 2px; background: #fff; animation: defile 1.8s ease-in-out infinite; }
@keyframes defile { 0% { opacity: 0; transform: translateY(0); } 40% { opacity: 1; } 100% { opacity: 0; transform: translateY(14px); } }

/* ==========================================================================
   EN-TÊTE DES AUTRES PAGES
   ========================================================================== */
.entete-page {
  position: relative; overflow: hidden; color: #fff;
  padding: calc(var(--entete-h) + clamp(56px, 8vw, 100px)) 0 clamp(64px, 8vw, 104px);
  background:
    radial-gradient(800px 460px at 85% 20%, rgba(43, 75, 196, .55), transparent 65%),
    radial-gradient(600px 400px at 0% 100%, rgba(56, 225, 255, .1), transparent 60%),
    linear-gradient(180deg, #040922, var(--nuit) 60%, #0A1646);
}
.entete-page::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(rgba(140, 190, 255, .14) 1px, transparent 1px); background-size: 26px 26px;
  mask-image: linear-gradient(180deg, transparent, #000 40%, transparent);
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 40%, transparent);
}
.entete-page .wrap { position: relative; z-index: 2; }
.entete-page-grille { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; align-items: center; }
.entete-page.avec-visuel .entete-page-grille { grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); }
.entete-page .surtitre { color: var(--cyan); }
.entete-page h1 { font-family: var(--titre); font-weight: 600; font-size: clamp(42px, 6vw, 78px); line-height: 1; letter-spacing: -.01em; margin: 0 0 22px; text-wrap: balance; }
.entete-page .chapeau { margin-bottom: 0; }
.entete-page.align-centre .entete-page-grille { grid-template-columns: 1fr; text-align: center; }
.entete-page.align-centre .chapeau { margin-left: auto; margin-right: auto; }
.entete-page.align-centre .entete-page-visuel { display: none; }
.entete-page .hero-boutons { margin-top: 30px; }
.entete-page-visuel .visuel { background: none; box-shadow: none; border: 0; aspect-ratio: 5 / 4; }
.entete-page-visuel .visuel-grille { display: none; }

/* ==========================================================================
   SECTIONS
   ========================================================================== */
.section { position: relative; padding: clamp(72px, 9vw, 124px) 0; }
.fond-blanc { background: var(--papier); }
.fond-clair { background: var(--clair); }
.fond-clair::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .55;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='64' viewBox='0 0 56 64'%3E%3Cpath d='M28 1.5 54.5 16.5v31L28 62.5 1.5 47.5v-31z' fill='none' stroke='%23D6DEF0' stroke-width='1'/%3E%3C/svg%3E");
  background-size: 56px 64px;
  mask-image: radial-gradient(ellipse at 100% 0%, #000, transparent 55%);
  -webkit-mask-image: radial-gradient(ellipse at 100% 0%, #000, transparent 55%);
}
.fond-clair > .wrap { position: relative; }
.fond-bleu, .fond-nuit { color: #fff; }
.fond-bleu { background: radial-gradient(900px 500px at 90% 0%, rgba(56, 225, 255, .25), transparent 60%), linear-gradient(125deg, var(--bleu) 0%, var(--bleu-2) 55%, var(--bleu-3) 100%); overflow: hidden; }
.fond-nuit {
  background: radial-gradient(900px 500px at 15% 0%, rgba(43, 75, 196, .45), transparent 60%), radial-gradient(700px 400px at 100% 100%, rgba(56, 225, 255, .1), transparent 60%), var(--nuit);
  overflow: hidden;
}
.fond-nuit::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(rgba(140, 190, 255, .12) 1px, transparent 1px); background-size: 26px 26px;
}
.fond-nuit > .wrap, .fond-bleu > .wrap { position: relative; }
.fond-bleu .surtitre, .fond-nuit .surtitre { color: var(--cyan); }
.fond-bleu .intro, .fond-nuit .intro, .fond-bleu .riche, .fond-nuit .riche { color: rgba(220, 230, 255, .82); }
.fond-bleu .riche strong, .fond-nuit .riche strong { color: #fff; }
.fond-bleu .coches .ico, .fond-nuit .coches .ico { background: rgba(56, 225, 255, .15); color: var(--cyan); }
.fond-bleu .btn-primaire { background: #fff; color: var(--bleu); }

/* apparition au défilement */
.revele { opacity: 0; transform: translateY(26px); transition: opacity .8s cubic-bezier(.2, .7, .2, 1), transform .8s cubic-bezier(.2, .7, .2, 1); transition-delay: calc(var(--i, 0) * 90ms); }
.revele.vu { opacity: 1; transform: none; }

/* ---------- texte seul ---------- */
.type-texte .section-tete { margin-bottom: 26px; }
.texte-bloc { max-width: 780px; font-size: 18.5px; }
.align-centre .texte-bloc { margin: 0 auto; text-align: center; }
.type-texte .riche { color: var(--gris); }
.fond-bleu.type-texte .riche, .fond-nuit.type-texte .riche { color: rgba(220, 230, 255, .85); }

/* ---------- texte + image ---------- */
.ti-grille { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 88px); align-items: center; }
.ti-grille.cote-gauche .ti-media { order: -1; }
.ti-texte .riche { color: var(--gris); font-size: 18px; }
.fond-bleu .ti-texte .riche, .fond-nuit .ti-texte .riche { color: rgba(220, 230, 255, .85); }
.align-centre .ti-texte { text-align: center; }
.align-centre .ti-texte .coches { justify-items: center; }
.align-centre .ti-texte .zone-boutons { justify-content: center; }
.media { margin: 0; position: relative; }
.media.cadre-arrondi::before {
  content: ""; position: absolute; inset: 18px -18px -18px 18px; border-radius: calc(var(--rayon) + 6px);
  border: 1.5px dashed rgba(43, 75, 196, .3); z-index: 0;
}
.cote-gauche .media.cadre-arrondi::before { inset: 18px 18px -18px -18px; }
.media.cadre-arrondi img { position: relative; z-index: 1; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--rayon); box-shadow: var(--ombre); }
.media.cadre-libre img { width: 100%; max-height: 480px; object-fit: contain; filter: drop-shadow(0 30px 40px rgba(12, 20, 51, .28)); }
.media figcaption { position: relative; z-index: 1; font-family: var(--mono); font-size: 12.5px; color: var(--gris-clair); margin-top: 16px; }
.fond-nuit .media figcaption, .fond-bleu .media figcaption { color: rgba(200, 215, 255, .6); }

/* ---------- illustrations ---------- */
.visuel {
  position: relative; aspect-ratio: 5 / 4; border-radius: var(--rayon); overflow: hidden;
  background: radial-gradient(420px 300px at 30% 15%, rgba(43, 91, 255, .45), transparent 65%), linear-gradient(160deg, #0B1850, var(--nuit));
  box-shadow: var(--ombre); border: 1px solid rgba(120, 170, 255, .16);
}
.visuel-grille { position: absolute; inset: 0; background-image: radial-gradient(rgba(140, 190, 255, .22) 1px, transparent 1px); background-size: 18px 18px;
  mask-image: radial-gradient(circle at 50% 50%, #000, transparent 75%); -webkit-mask-image: radial-gradient(circle at 50% 50%, #000, transparent 75%); }
.visuel-svg { position: relative; width: 100%; height: 100%; display: block; overflow: visible; }
.iso { animation: flotte-doux 7s ease-in-out infinite; }
.iso-g { fill: #16287A; stroke: #5BB8FF; stroke-width: 1; stroke-linejoin: round; }
.iso-d { fill: #2340A8; stroke: #5BB8FF; stroke-width: 1; stroke-linejoin: round; }
.iso-h { fill: rgba(91, 184, 255, .3); stroke: #9FD8FF; stroke-width: 1; stroke-linejoin: round; }
.iso-t { font-family: var(--mono); font-size: 9px; fill: #BFE6FF; letter-spacing: .08em; }
.iso-sol polygon { fill: rgba(91, 184, 255, .05); stroke: rgba(91, 184, 255, .35); stroke-dasharray: 3 4; }
.iso-antenne path { fill: none; stroke: #9FD8FF; stroke-width: 2; stroke-linecap: round; }
.iso-antenne circle { fill: var(--cyan); }
.iso-ondes path { fill: none; stroke: var(--cyan); stroke-width: 2; stroke-linecap: round; animation: onde 2.4s ease-in-out infinite; }
.iso-ondes path:nth-child(2) { animation-delay: .4s; }
.iso-noeuds circle { fill: var(--cyan); filter: drop-shadow(0 0 5px var(--cyan)); }
.iso-noeuds path { stroke: rgba(91, 184, 255, .45); stroke-width: 1.2; stroke-dasharray: 3 5; animation: flux 3s linear infinite; }
.res-lien { stroke: #8FC8FF; stroke-width: 4; stroke-linecap: round; }
.res-anneau { fill: #16287A; stroke: #fff; stroke-width: 3.5; }
.res-coeur { fill: var(--cyan); animation: pulse 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.res-centre { fill: #16287A; stroke: #fff; stroke-width: 4.5; }
.res-centre-in { fill: none; stroke: var(--cyan); stroke-width: 2; }
.res-fin { stroke: rgba(91, 184, 255, .35); stroke-width: 1.2; stroke-dasharray: 4 6; animation: flux 4s linear infinite; }
.res-sat { fill: #9FD3FF; }
.adn-brin { fill: none; stroke: #5BB8FF; stroke-width: 3.2; stroke-linecap: round; }
.adn-brin.b2 { stroke: var(--cyan); }
.adn-barre { stroke: rgba(190, 225, 255, .55); stroke-width: 2.2; stroke-linecap: round; animation: scintille 3s ease-in-out infinite; }
.adn-lettres text { font-family: var(--mono); font-size: 12px; fill: rgba(160, 200, 255, .45); letter-spacing: .2em; }
.mini-pin { stroke: #fff; stroke-width: 1.4; }
.mini-pin.type-mission { fill: var(--mission); } .mini-pin.type-exercice { fill: var(--exercice); } .mini-pin.type-formation { fill: var(--formation); }
.bul-sale { fill: #FF6B5E; opacity: .9; }
.bul-propre { fill: rgba(120, 190, 255, .55); }
.bul-scan { animation: balaye 5s cubic-bezier(.45, 0, .55, 1) infinite alternate; }
.bul-scan rect:first-child { fill: var(--cyan); filter: drop-shadow(0 0 8px var(--cyan)); }
.bul-trainee { fill: rgba(56, 225, 255, .12); }
@keyframes balaye { from { transform: translateX(40px); } to { transform: translateX(362px); } }
@keyframes flotte-doux { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes onde { 0%, 100% { opacity: .2; } 50% { opacity: 1; } }
@keyframes flux { to { stroke-dashoffset: -40; } }
@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.35); opacity: .7; } }
@keyframes scintille { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }

/* ---------- cartes ---------- */
.grille-cartes { display: grid; gap: 22px; }
.grille-cartes.col-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grille-cartes.col-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grille-cartes.col-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.carte-item {
  position: relative; display: flex; flex-direction: column; align-items: flex-start;
  background: var(--papier); border: 1px solid var(--trait); border-radius: var(--rayon);
  padding: 30px 28px 28px; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease, opacity .8s, transform .8s;
}
.carte-item.vu:hover { transform: translateY(-6px); box-shadow: var(--ombre); border-color: rgba(43, 75, 196, .35); }
.align-centre .carte-item { align-items: center; text-align: center; }
.hexa {
  width: 58px; height: 66px; flex: none; display: flex; align-items: center; justify-content: center; margin-bottom: 22px;
  clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
  background: linear-gradient(150deg, var(--bleu-2), var(--bleu) 70%); color: #fff;
  transition: transform .4s ease;
}
.hexa .ico { width: 28px; height: 28px; stroke-width: 1.6; }
.carte-item:hover .hexa { transform: rotate(-8deg) scale(1.06); }
.carte-item h3 { font-family: var(--titre); font-size: 25px; line-height: 1.12; margin: 0 0 10px; }
.carte-item p { color: var(--gris); font-size: 16.5px; line-height: 1.6; margin: 0; }
.carte-lien { margin-top: auto; padding-top: 18px; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 15.5px; text-decoration: none; }
.carte-lien .ico { width: 17px; height: 17px; transition: transform .2s ease; }
.carte-lien:hover .ico { transform: translateX(4px); }
.carte-lien::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.style-numerote .carte-num { position: absolute; top: 22px; right: 24px; font-family: var(--mono); font-size: 13px; letter-spacing: .1em; color: var(--gris-clair); }
.style-numerote .carte-item::before {
  content: ""; position: absolute; top: 62px; left: 100%; width: 22px; height: 1.5px;
  background: repeating-linear-gradient(90deg, rgba(43, 75, 196, .5) 0 4px, transparent 4px 8px);
}
.style-numerote .carte-item:last-child::before { display: none; }
.style-encadre .carte-item { padding: 24px; flex-direction: row; align-items: flex-start; gap: 18px; text-align: left; }
.style-encadre .hexa { width: 46px; height: 52px; margin: 0; }
.style-encadre .hexa .ico { width: 22px; height: 22px; }
.style-encadre .carte-item > h3, .style-encadre .carte-item > p, .style-encadre .carte-item > .carte-lien { flex: 1 1 100%; }
.style-encadre .carte-item { display: grid; grid-template-columns: auto 1fr; column-gap: 18px; row-gap: 4px; }
.style-encadre .carte-item .hexa { grid-row: span 3; }
.style-encadre .carte-item h3 { font-size: 22px; margin: 0; }
.style-encadre .carte-lien { padding-top: 8px; }
.align-centre .style-encadre .carte-item { text-align: left; align-items: start; }
.fond-nuit .carte-item, .fond-bleu .carte-item { background: rgba(255, 255, 255, .04); border-color: rgba(130, 180, 255, .18); backdrop-filter: blur(4px); }
.fond-nuit .carte-item p, .fond-bleu .carte-item p { color: rgba(210, 222, 255, .78); }
.fond-nuit .carte-item.vu:hover, .fond-bleu .carte-item.vu:hover { border-color: rgba(56, 225, 255, .5); box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .7); }
.fond-nuit .hexa { background: linear-gradient(150deg, var(--cyan), var(--bleu-2) 75%); }
.fond-nuit .carte-lien, .fond-bleu .carte-lien { color: var(--cyan); }
.fond-nuit .carte-num { color: rgba(160, 200, 255, .6); }

/* ---------- chiffres ---------- */
.type-chiffres { padding: clamp(56px, 7vw, 88px) 0; }
.grille-chiffres { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; }
.chiffre { position: relative; padding: 10px 28px; display: flex; flex-direction: column; }
.align-centre .chiffre { align-items: center; text-align: center; }
.chiffre + .chiffre::before { content: ""; position: absolute; left: 0; top: 16%; bottom: 16%; width: 1px; background: linear-gradient(180deg, transparent, var(--trait), transparent); }
.chiffre-valeur {
  font-family: var(--titre); font-weight: 700; font-size: clamp(54px, 6vw, 76px); line-height: 1; letter-spacing: -.01em;
  background: linear-gradient(120deg, var(--bleu), var(--bleu-3)); -webkit-background-clip: text; background-clip: text; color: transparent;
  font-variant-numeric: tabular-nums;
}
.chiffre-libelle { font-weight: 600; font-size: 17.5px; margin-top: 10px; }
.chiffre-detail { font-family: var(--mono); font-size: 12px; color: var(--gris-clair); margin-top: 6px; letter-spacing: .02em; }
.fond-nuit .chiffre-valeur, .fond-bleu .chiffre-valeur { background: linear-gradient(120deg, #fff, var(--cyan)); -webkit-background-clip: text; background-clip: text; }
.fond-nuit .chiffre-detail, .fond-bleu .chiffre-detail { color: rgba(190, 210, 255, .6); }
.fond-nuit .chiffre + .chiffre::before, .fond-bleu .chiffre + .chiffre::before { background: linear-gradient(180deg, transparent, rgba(160, 200, 255, .3), transparent); }

/* ---------- frise ---------- */
.frise { list-style: none; margin: 0; padding: 0; position: relative; }
.frise::before { content: ""; position: absolute; left: 50%; top: 6px; bottom: 6px; width: 2px; margin-left: -1px;
  background: linear-gradient(180deg, transparent, var(--bleu-2) 6%, var(--cyan) 94%, transparent); opacity: .5; }
.frise-item { position: relative; width: 50%; padding: 0 44px 34px 0; }
.frise-item:nth-child(even) { margin-left: 50%; padding: 0 0 34px 44px; }
.frise-point { position: absolute; top: 20px; right: -8px; width: 16px; height: 16px; border-radius: 50%; background: var(--papier); border: 3px solid var(--bleu-2); box-shadow: 0 0 0 6px rgba(43, 75, 196, .12); z-index: 1; }
.frise-item:nth-child(even) .frise-point { right: auto; left: -8px; }
.frise-item:last-child .frise-point { background: var(--cyan); border-color: var(--bleu); box-shadow: 0 0 0 6px rgba(56, 225, 255, .25), 0 0 18px var(--cyan); }
.frise-carte { background: var(--papier); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 22px 26px; text-align: left; transition: box-shadow .3s ease, transform .3s ease; }
.frise-carte:hover { box-shadow: var(--ombre-douce); }
.frise-date { display: inline-block; font-family: var(--mono); font-size: 13px; font-weight: 500; letter-spacing: .06em; color: var(--bleu-2); background: rgba(43, 75, 196, .08); padding: 4px 10px; border-radius: 8px; margin-bottom: 10px; }
.frise-carte h3 { font-family: var(--titre); font-size: 25px; margin: 0 0 6px; line-height: 1.1; }
.frise-carte p { margin: 0; color: var(--gris); font-size: 16.5px; }
.fond-nuit .frise-carte, .fond-bleu .frise-carte { background: rgba(255, 255, 255, .04); border-color: rgba(130, 180, 255, .18); }
.fond-nuit .frise-carte p { color: rgba(210, 222, 255, .78); }
.fond-nuit .frise-point { background: var(--nuit); }
.fond-nuit .frise-date { color: var(--cyan); background: rgba(56, 225, 255, .1); }

/* ==========================================================================
   LA CARTE DU MONDE
   ========================================================================== */
.carte { position: relative; --r-mission: 255, 77, 99; --r-exercice: 63, 169, 255; --r-formation: 46, 229, 157; }
.section.type-carteMonde { overflow: visible; z-index: 2; }
.carte-outils { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 14px; margin-bottom: 18px; }
.filtres, .zones { display: flex; flex-wrap: wrap; gap: 8px; }
.filtre {
  display: inline-flex; align-items: center; gap: 9px; padding: 9px 14px 9px 12px; border-radius: 999px;
  border: 1px solid rgba(130, 180, 255, .25); background: rgba(255, 255, 255, .04); color: rgba(220, 230, 255, .6);
  font-weight: 600; font-size: 15px; transition: all .2s ease;
}
.filtre .puce { width: 11px; height: 11px; border-radius: 50%; background: currentColor; opacity: .4; transition: all .2s ease; }
.filtre .nb { font-family: var(--mono); font-size: 12px; padding: 1px 7px; border-radius: 6px; background: rgba(255, 255, 255, .08); }
.filtre.on { color: #fff; border-color: rgba(var(--r), .6); background: rgba(var(--r), .12); }
.filtre.on .puce { background: rgb(var(--r)); opacity: 1; box-shadow: 0 0 10px rgb(var(--r)); }
.filtre.type-mission { --r: var(--r-mission); } .filtre.type-exercice { --r: var(--r-exercice); } .filtre.type-formation { --r: var(--r-formation); }
.zones { padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, .05); border: 1px solid rgba(130, 180, 255, .18); gap: 2px; }
.zones button { border: 0; background: transparent; color: rgba(220, 230, 255, .7); font-weight: 600; font-size: 14.5px; padding: 7px 16px; border-radius: 999px; transition: all .2s ease; }
.zones button:hover { color: #fff; }
.zones button.on { background: #fff; color: var(--bleu); }
.fond-blanc .filtre, .fond-clair .filtre { color: var(--gris); border-color: var(--trait); background: var(--papier); }
.fond-blanc .filtre.on, .fond-clair .filtre.on { color: var(--encre); }
.fond-blanc .zones, .fond-clair .zones { background: var(--papier); border-color: var(--trait); }
.fond-blanc .zones button, .fond-clair .zones button { color: var(--gris); }
.fond-blanc .zones button.on, .fond-clair .zones button.on { background: var(--bleu); color: #fff; }

.carte-scene {
  position: relative; aspect-ratio: 1000 / 450; border-radius: 26px; overflow: hidden; touch-action: pan-y;
  background: radial-gradient(ellipse at 50% 40%, #0E1F66 0%, #071038 55%, #040A26 100%);
  border: 1px solid rgba(120, 175, 255, .2);
  box-shadow: inset 0 0 80px rgba(0, 0, 0, .55), 0 40px 80px -40px rgba(0, 0, 0, .8);
  user-select: none; -webkit-user-select: none;
}
.carte-scene::after { /* lignes de balayage, très discrètes */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(180deg, rgba(255, 255, 255, .018) 0 1px, transparent 1px 4px);
}
.carte-scene.zoome { cursor: grab; }
.carte-scene.zoome:active { cursor: grabbing; }
.carte-svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.carte-ocean-point { fill: rgba(110, 160, 255, .13); }
.carte-terre-fond { fill: rgba(60, 120, 255, .16); }
.carte-terre-point { fill: #6AA6FF; fill-opacity: .78; }
.carte-cote { fill: none; stroke: rgba(130, 190, 255, .5); stroke-width: var(--cote, .75); stroke-linejoin: round; }
.carte-scene.zoome .carte-scintille { display: none; }
.carte-scintille { fill: none; stroke: #A8ECFF; stroke-width: var(--epaisseur, 2.5); stroke-linecap: round; opacity: 0; animation: scintille-carte 4.5s ease-in-out infinite; }
.carte-scintille.s1 { animation-delay: 1.5s; } .carte-scintille.s2 { animation-delay: 3s; }
@keyframes scintille-carte { 0%, 100% { opacity: 0; } 50% { opacity: .9; } }
.arc { fill: none; stroke-width: 1.3; vector-effect: non-scaling-stroke; stroke-dasharray: 4 7; opacity: .38; animation: flux 3.2s linear infinite; transition: opacity .25s ease, stroke-width .25s ease; }
.arc.type-mission { stroke: var(--mission); } .arc.type-exercice { stroke: var(--exercice); } .arc.type-formation { stroke: var(--formation); }
.arc.vif { opacity: 1; stroke-width: 2.2; }

.carte-epingles { position: absolute; inset: 0; }
.epingle {
  --c: var(--mission);
  position: absolute; left: 0; top: 0; width: 15px; height: 15px; margin: -7.5px 0 0 -7.5px; border-radius: 50%;
  background: var(--c); border: 2px solid #fff; z-index: 3;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--c) 30%, transparent), 0 0 16px 2px var(--c);
  transition: width .2s ease, height .2s ease, margin .2s ease;
}
.epingle.type-exercice { --c: var(--exercice); }
.epingle.type-formation { --c: var(--formation); }
.epingle:hover, .epingle:focus-visible { width: 21px; height: 21px; margin: -10.5px 0 0 -10.5px; z-index: 4; }
.epingle-onde { position: absolute; inset: -2px; border-radius: 50%; border: 2px solid var(--c); animation: onde-pin 2.6s ease-out infinite; pointer-events: none; }
@keyframes onde-pin { 0% { transform: scale(1); opacity: .9; } 100% { transform: scale(3.4); opacity: 0; } }
.grappe {
  position: absolute; left: 0; top: 0; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%; border: 0; padding: 3px; z-index: 3;
  background: var(--anneau); box-shadow: 0 0 20px rgba(120, 190, 255, .6); transition: transform .2s ease;
}
.grappe span { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; border-radius: 50%; background: #0A1542; color: #fff; font-family: var(--mono); font-size: 13px; font-weight: 600; }
.grappe:hover { transform: scale(1.12); }
.siege { position: absolute; left: 0; top: 0; z-index: 2; pointer-events: none; display: flex; align-items: center; }
.siege-losange { width: 10px; height: 10px; margin: -5px 0 0 -5px; background: #fff; transform: rotate(45deg); box-shadow: 0 0 12px #fff, 0 0 0 3px rgba(255, 255, 255, .2); }
.siege-nom { position: absolute; left: 12px; top: -11px; white-space: nowrap; font-family: var(--mono); font-size: 11px; color: rgba(230, 240, 255, .85); opacity: 0; transition: opacity .3s ease; background: rgba(5, 11, 41, .7); padding: 2px 7px; border-radius: 6px; }
.siege.nomme .siege-nom { opacity: 1; }

.carte-bulle {
  position: absolute; z-index: 20; width: min(320px, calc(100% - 16px)); padding: 18px 20px 16px;
  background: rgba(6, 13, 44, .95); color: #fff; border: 1px solid rgba(120, 190, 255, .32); border-radius: 18px;
  box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .8), 0 0 0 1px rgba(0, 0, 0, .2);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  opacity: 0; transform: translateY(6px); transition: opacity .18s ease, transform .18s ease;
}
.carte-bulle.on { opacity: 1; transform: none; }
.carte-bulle::after {
  content: ""; position: absolute; left: var(--fleche, 50%); bottom: -7px; width: 12px; height: 12px; margin-left: -6px;
  background: inherit; border: inherit; border-top: 0; border-left: 0; transform: rotate(45deg);
}
.carte-bulle.dessous::after { bottom: auto; top: -7px; transform: rotate(225deg); }
.carte-bulle h4 { font-family: var(--titre); font-size: 23px; line-height: 1.1; margin: 10px 0 6px; }
.bulle-date { font-family: var(--mono); font-size: 12px; color: rgba(200, 220, 255, .7); margin-left: 10px; }
.bulle-lieu { display: flex; align-items: center; gap: 6px; font-size: 14.5px; color: rgba(210, 225, 255, .8); margin: 0 0 8px; }
.bulle-lieu .ico { width: 16px; height: 16px; color: var(--cyan); }
.bulle-resume { font-size: 14.5px; line-height: 1.55; color: rgba(225, 233, 255, .88); margin: 0 0 12px; }
.bulle-lien { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; font-size: 14.5px; color: var(--cyan); text-decoration: none; }
.bulle-lien:hover { color: #fff; }
.bulle-lien .ico { width: 16px; height: 16px; }
.bulle-grappe-titre { font-family: var(--mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: rgba(200, 220, 255, .7); margin: 0 0 8px; }
.bulle-grappe { list-style: none; margin: 0; padding: 0; }
.bulle-grappe a { display: flex; gap: 10px; align-items: flex-start; padding: 8px; margin: 0 -8px; border-radius: 10px; color: #fff; text-decoration: none; }
.bulle-grappe a:hover { background: rgba(255, 255, 255, .07); }
.bulle-grappe strong { display: block; font-weight: 600; font-size: 15px; line-height: 1.3; }
.bulle-grappe small { display: block; color: rgba(200, 220, 255, .65); font-size: 13px; }
.puce-type {
  display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: 11.5px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase;
  padding: 4px 10px 4px 9px; border-radius: 999px; color: #fff; background: rgba(255, 77, 99, .18); border: 1px solid rgba(255, 77, 99, .55);
}
.puce-type::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--mission); box-shadow: 0 0 8px var(--mission); }
.puce-type.type-exercice { background: rgba(63, 169, 255, .18); border-color: rgba(63, 169, 255, .55); }
.puce-type.type-exercice::before { background: var(--exercice); box-shadow: 0 0 8px var(--exercice); }
.puce-type.type-formation { background: rgba(46, 229, 157, .16); border-color: rgba(46, 229, 157, .55); }
.puce-type.type-formation::before { background: var(--formation); box-shadow: 0 0 8px var(--formation); }
.puce-type.point { padding: 0; border: 0; background: none; margin-top: 6px; }

.carte-zoom { position: absolute; right: 14px; bottom: 14px; z-index: 5; display: flex; flex-direction: column; gap: 6px; }
.carte-zoom button { width: 38px; height: 38px; border-radius: 12px; border: 1px solid rgba(130, 180, 255, .3); background: rgba(8, 18, 60, .8); color: #fff; display: flex; align-items: center; justify-content: center; transition: background .2s ease; }
.carte-zoom button:hover { background: var(--bleu-2); }
.carte-zoom .ico { width: 18px; height: 18px; }
.carte-aide { position: absolute; left: 18px; bottom: 14px; margin: 0; z-index: 4; font-family: var(--mono); font-size: 11.5px; color: rgba(190, 210, 255, .6); pointer-events: none; max-width: 60%; }
.carte-coord { position: absolute; right: 18px; top: 14px; z-index: 4; font-family: var(--mono); font-size: 11.5px; color: rgba(120, 225, 255, .75); pointer-events: none; letter-spacing: .04em; }

.carte-liste { margin-top: clamp(40px, 5vw, 64px); }
.carte-liste-titre { font-family: var(--titre); font-size: 30px; margin: 0 0 22px; }
.grille-activites { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.activite {
  --c: var(--mission);
  position: relative; display: flex; flex-direction: column; padding: 22px 22px 18px; border-radius: 20px;
  background: rgba(255, 255, 255, .04); border: 1px solid rgba(130, 180, 255, .16); overflow: hidden;
  transition: border-color .25s ease, transform .25s ease, background .25s ease;
}
.activite::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--c); box-shadow: 0 0 14px var(--c); }
.activite.type-exercice { --c: var(--exercice); } .activite.type-formation { --c: var(--formation); }
.activite:hover { border-color: rgba(130, 200, 255, .4); transform: translateY(-3px); background: rgba(255, 255, 255, .06); }
.activite-haut { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.activite-date { font-family: var(--mono); font-size: 12px; color: rgba(200, 220, 255, .65); text-align: right; }
.activite h4 { font-family: var(--titre); font-size: 23px; line-height: 1.12; margin: 0 0 6px; }
.activite h4 a { color: #fff; text-decoration: none; }
.activite h4 a::after { content: ""; position: absolute; inset: 0; }
.activite-lieu { display: flex; align-items: center; gap: 6px; font-size: 14.5px; color: rgba(200, 220, 255, .75); margin: 0 0 10px; }
.activite-lieu .ico { width: 16px; height: 16px; color: var(--c); }
.activite-resume { font-size: 15px; color: rgba(215, 228, 255, .72); line-height: 1.55; margin: 0 0 14px;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.activite-voir { position: relative; z-index: 2; margin-top: auto; align-self: flex-start; display: inline-flex; align-items: center; gap: 7px; border: 0; background: rgba(255, 255, 255, .06); color: var(--cyan); font-weight: 600; font-size: 14px; padding: 7px 12px; border-radius: 10px; }
.activite-voir:hover { background: rgba(56, 225, 255, .15); }
.activite-voir .ico { width: 16px; height: 16px; }
.carte-vide { grid-column: 1 / -1; color: rgba(200, 220, 255, .7); }
.fond-blanc .activite, .fond-clair .activite { background: var(--papier); border-color: var(--trait); }
.fond-blanc .activite h4 a, .fond-clair .activite h4 a { color: var(--encre); }
.fond-blanc .activite-lieu, .fond-clair .activite-lieu, .fond-blanc .activite-date, .fond-clair .activite-date { color: var(--gris); }
.fond-blanc .activite-resume, .fond-clair .activite-resume { color: var(--gris); }
.fond-blanc .activite-voir, .fond-clair .activite-voir { color: var(--bleu-2); background: var(--clair); }
.fond-blanc .puce-type, .fond-clair .puce-type { color: var(--encre); }

/* ---------- équipe ---------- */
.grille-equipe { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 34px 26px; }
.membre { display: flex; flex-direction: column; text-align: left; }
.membre-photo { position: relative; aspect-ratio: 1; border-radius: var(--rayon); overflow: hidden; margin-bottom: 18px; background: linear-gradient(150deg, var(--bleu-2), var(--nuit)); }
.membre-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease, filter .6s ease; filter: contrast(1.04); }
.membre-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(29, 50, 133, .45)); mix-blend-mode: multiply; transition: opacity .4s ease; }
.membre:hover .membre-photo img { transform: scale(1.05); }
.membre-initiales { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--titre); font-size: 64px; font-weight: 600; color: rgba(255, 255, 255, .85); }
.membre h3 { font-family: var(--titre); font-size: 25px; line-height: 1.1; margin: 0 0 4px; }
.membre-titres { font-family: var(--mono); font-size: 12px; color: var(--gris-clair); margin: 0 0 6px; letter-spacing: .03em; }
.membre-role { font-weight: 600; color: var(--bleu-2); font-size: 15.5px; margin: 0 0 8px; line-height: 1.4; }
.membre-bio { font-size: 15px; color: var(--gris); line-height: 1.55; margin: 0 0 12px; }
.membre-liens { display: flex; gap: 8px; margin-top: auto; }
.membre-liens a { width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--trait); display: flex; align-items: center; justify-content: center; color: var(--gris); transition: all .2s ease; }
.membre-liens a:hover { color: #fff; background: var(--bleu-2); border-color: var(--bleu-2); }
.membre-liens .ico { width: 18px; height: 18px; }

/* ---------- publications ---------- */
.publications { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--trait); }
.publication { display: grid; grid-template-columns: 44px 1fr auto; gap: 16px; align-items: start; padding: 18px 0; border-bottom: 1px solid var(--trait); }
.pub-num { font-family: var(--mono); font-size: 13px; color: var(--bleu-2); padding-top: 3px; }
.pub-texte { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--gris); }
.pub-texte em { color: var(--encre); font-style: italic; }
.pub-lien { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--bleu-2); background: var(--papier); border: 1px solid var(--trait); transition: all .2s ease; }
.pub-lien:hover { background: var(--bleu-2); color: #fff; border-color: var(--bleu-2); }
.pub-lien .ico { width: 17px; height: 17px; }
.publications.repliee .en-trop { display: none; }
.pub-tout { margin-top: 24px; }
.fond-nuit .publications, .fond-nuit .publication { border-color: rgba(130, 180, 255, .18); }
.fond-nuit .pub-texte { color: rgba(210, 222, 255, .75); }
.fond-nuit .pub-texte em { color: #fff; }

/* ---------- questions fréquentes ---------- */
.faq-grille { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 80px); align-items: start; }
.faq-grille .section-tete { position: sticky; top: calc(var(--entete-h) + 30px); margin-bottom: 0; text-align: left; }
.align-centre .faq-grille { grid-template-columns: 1fr; max-width: 860px; margin: 0 auto; }
.align-centre .faq-grille .section-tete { position: static; text-align: center; }
.faq-item { border-bottom: 1px solid var(--trait); }
.faq-item:first-child { border-top: 1px solid var(--trait); }
.faq-item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 0; font-weight: 600; font-size: 19px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-plus { position: relative; width: 30px; height: 30px; flex: none; border-radius: 50%; background: rgba(43, 75, 196, .08); transition: transform .3s ease, background .3s ease; }
.faq-plus::before, .faq-plus::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 2px; margin: -1px 0 0 -6px; background: var(--bleu-2); border-radius: 2px; }
.faq-plus::after { transform: rotate(90deg); transition: transform .3s ease; }
.faq-item[open] .faq-plus { background: var(--bleu-2); }
.faq-item[open] .faq-plus::before, .faq-item[open] .faq-plus::after { background: #fff; }
.faq-item[open] .faq-plus::after { transform: rotate(0); }
.faq-reponse { padding: 0 50px 24px 0; color: var(--gris); }
.fond-nuit .faq-item, .fond-bleu .faq-item { border-color: rgba(130, 180, 255, .22); }
.fond-nuit .faq-reponse, .fond-bleu .faq-reponse { color: rgba(215, 228, 255, .8); }

/* ---------- appel à l'action ---------- */
.type-appel { padding: clamp(70px, 8vw, 110px) 0; }
.appel { position: relative; text-align: left; }
.align-centre .appel { text-align: center; }
.appel-texte { position: relative; z-index: 1; max-width: 760px; }
.align-centre .appel-texte { margin: 0 auto; }
.appel .titre-section { font-size: clamp(34px, 4.5vw, 58px); }
.appel .intro { margin-bottom: 0; }
.appel-deco { position: absolute; right: -8%; top: 50%; width: 420px; transform: translateY(-50%); opacity: .35; pointer-events: none; }
.align-centre .appel-deco { right: -14%; }
.appel-deco .visuel { background: none; box-shadow: none; border: 0; }
.appel-deco .visuel-grille { display: none; }
.fond-blanc .appel-deco, .fond-clair .appel-deco { opacity: .12; }

/* ---------- citation ---------- */
.citation { margin: 0 auto; max-width: 940px; }
.citation blockquote { margin: 0; font-family: var(--titre); font-weight: 500; font-size: clamp(30px, 3.6vw, 46px); line-height: 1.18; position: relative; }
.citation blockquote::before { content: "“"; position: absolute; left: -.5em; top: -.3em; font-size: 2.4em; line-height: 1; color: var(--cyan); opacity: .5; }
.align-centre .citation { text-align: center; }
.align-centre .citation blockquote::before { position: static; display: block; height: .5em; }
.citation figcaption { margin-top: 20px; font-family: var(--mono); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--gris-clair); }

/* ---------- partenaires ---------- */
.partenaires { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.partenaire > a, .partenaire > div {
  display: flex; flex-direction: column; justify-content: center; gap: 4px; height: 100%; min-height: 104px; padding: 20px 22px;
  background: var(--papier); border: 1px solid var(--trait); border-radius: 18px; text-decoration: none; color: var(--encre);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; position: relative; overflow: hidden;
}
.partenaire > a::before, .partenaire > div::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 3px; background: linear-gradient(90deg, var(--bleu-2), var(--cyan)); transform: scaleX(0); transform-origin: left; transition: transform .35s ease; }
.partenaire > a:hover, .partenaire > div:hover { transform: translateY(-4px); box-shadow: var(--ombre-douce); border-color: rgba(43, 75, 196, .3); }
.partenaire > a:hover::before, .partenaire > div:hover::before { transform: scaleX(1); }
.partenaire strong { font-family: var(--titre); font-size: 21px; font-weight: 600; line-height: 1.15; }
.partenaire span { font-size: 14px; color: var(--gris); line-height: 1.4; }
.align-centre .partenaire > a, .align-centre .partenaire > div { align-items: center; text-align: center; }
.fond-nuit .partenaire > a, .fond-nuit .partenaire > div, .fond-bleu .partenaire > a, .fond-bleu .partenaire > div { background: rgba(255, 255, 255, .05); border-color: rgba(130, 180, 255, .2); color: #fff; }
.fond-nuit .partenaire span, .fond-bleu .partenaire span { color: rgba(210, 222, 255, .7); }

/* ---------- formulaire ---------- */
.form-grille { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 48px); align-items: start; }
.form-bloc { background: var(--papier); border: 1px solid var(--trait); border-radius: 26px; padding: clamp(24px, 4vw, 44px); box-shadow: var(--ombre-douce); }
.form-bloc .section-tete { margin-bottom: 30px; }
.form-bloc .titre-section { font-size: clamp(30px, 3.4vw, 42px); }
.form-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; }
.champ-form { display: flex; flex-direction: column; gap: 7px; margin-bottom: 0; }
.champ-form > span { font-weight: 600; font-size: 14.5px; }
.champ-form input, .champ-form select, .champ-form textarea {
  width: 100%; font: inherit; font-size: 16px; color: var(--encre); background: var(--clair);
  border: 1.5px solid transparent; border-radius: 14px; padding: 13px 16px; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.champ-form select { appearance: none; -webkit-appearance: none; padding-right: 42px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%232B4BC4' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 16px center; }
.champ-form textarea { resize: vertical; min-height: 150px; line-height: 1.55; }
.champ-form input:hover, .champ-form select:hover, .champ-form textarea:hover { border-color: #CBD5EC; }
.champ-form input:focus, .champ-form select:focus, .champ-form textarea:focus { outline: 0; background: var(--papier); border-color: var(--bleu-2); box-shadow: 0 0 0 4px rgba(43, 75, 196, .14); }
form.devis > .champ-form { margin-top: 18px; }
.champ-form.erreur input, .champ-form.erreur select, .champ-form.erreur textarea { border-color: var(--mission); background: #FFF5F6; }
.consentement.erreur span { color: #C8243B; }
.decon { margin: 22px 0 0; padding: 20px 20px 22px; border: 1.5px dashed rgba(43, 75, 196, .35); border-radius: 18px; background: rgba(43, 75, 196, .04); }
.decon legend { display: flex; align-items: center; gap: 8px; padding: 0 8px; font-family: var(--titre); font-size: 21px; font-weight: 600; color: var(--bleu-2); }
.decon legend .ico { width: 20px; height: 20px; }
.decon .champ-form input, .decon .champ-form select { background: var(--papier); }
.piege { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.consentement { display: flex; gap: 12px; align-items: flex-start; margin-top: 20px; font-size: 15px; color: var(--gris); cursor: pointer; }
.consentement input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--bleu-2); flex: none; }
.form-pied { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin-top: 26px; }
.form-pied .btn { border: 0; }
.form-message { margin: 0; font-size: 15px; font-weight: 500; }
.form-message.bon { color: #0E8A5B; }
.form-message.mauvais { color: #C8243B; }
.form-message.info { color: var(--bleu-2); }
.form-cote { display: grid; gap: 18px; position: sticky; top: calc(var(--entete-h) + 24px); }
.form-carte { background: var(--papier); border: 1px solid var(--trait); border-radius: 22px; padding: 26px; }
.form-carte h3 { font-family: var(--titre); font-size: 24px; margin: 0 0 16px; }
.form-contact { display: flex; gap: 12px; align-items: flex-start; color: var(--encre); text-decoration: none; margin: 0 0 12px; font-weight: 500; word-break: break-word; }
.form-contact .ico { width: 20px; height: 20px; margin-top: 3px; color: var(--bleu-2); }
a.form-contact:hover { color: var(--bleu-2); }
.form-carte.sombre { background: linear-gradient(150deg, var(--bleu), var(--nuit)); color: #fff; border: 0; position: relative; overflow: hidden; }
.form-etapes { list-style: none; counter-reset: etape; margin: 0; padding: 0; display: grid; gap: 14px; }
.form-etapes li { counter-increment: etape; display: grid; grid-template-columns: 32px 1fr; gap: 12px; align-items: start; font-size: 15.5px; color: rgba(220, 230, 255, .88); }
.form-etapes li::before { content: counter(etape); width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: var(--mono); font-size: 13px; color: var(--nuit); background: var(--cyan); }

/* ==========================================================================
   PAGE D'UNE MISSION
   ========================================================================== */
.mission-hero {
  --c: var(--mission);
  position: relative; overflow: hidden; color: #fff; background: #040A26;
  padding: calc(var(--entete-h) + clamp(50px, 7vw, 90px)) 0 clamp(60px, 7vw, 96px); min-height: 520px; display: flex; align-items: center;
}
.mission-hero.type-exercice { --c: var(--exercice); } .mission-hero.type-formation { --c: var(--formation); }
.mission-hero-carte { position: absolute; top: 0; bottom: 0; right: -6%; width: 76%; }
.mission-hero-carte .carte-svg { opacity: .95; }
.mission-hero-carte .carte-terre-point { fill-opacity: .5; }
.mini-epingle { left: 50%; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; }
.mission-hero-voile { position: absolute; inset: 0; background: linear-gradient(90deg, #040A26 0%, rgba(4, 10, 38, .92) 32%, rgba(4, 10, 38, .2) 70%, rgba(4, 10, 38, .5) 100%), linear-gradient(0deg, #040A26 0%, transparent 30%); }
.mission-hero-texte { position: relative; z-index: 2; }
.mission-hero h1 { font-family: var(--titre); font-weight: 600; font-size: clamp(40px, 5.6vw, 74px); line-height: 1; max-width: 760px; margin: 18px 0 18px; text-wrap: balance; }
.retour { display: inline-flex; align-items: center; gap: 8px; color: rgba(210, 225, 255, .8); text-decoration: none; font-weight: 500; font-size: 15px; margin-bottom: 26px; }
.retour:hover { color: #fff; }
.retour .ico { width: 18px; height: 18px; transition: transform .2s ease; }
.retour:hover .ico { transform: translateX(-4px); }
.mission-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.mission-periode { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: 13px; color: rgba(210, 225, 255, .85); }
.mission-periode .ico { width: 16px; height: 16px; }
.mission-lieu { display: flex; align-items: center; gap: 8px; font-size: 19px; color: rgba(220, 232, 255, .92); margin: 0 0 6px; }
.mission-lieu .ico { color: var(--c); }
.mission-coord { font-family: var(--mono); font-size: 12.5px; color: rgba(120, 225, 255, .7); letter-spacing: .05em; margin: 0; }
.mission-grille { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(36px, 5vw, 72px); align-items: start; }
.mission-resume { font-size: clamp(20px, 2vw, 24px); line-height: 1.5; color: var(--encre); font-weight: 500; margin: 0 0 34px; padding-left: 22px; border-left: 3px solid var(--bleu-2); }
.mission-image { margin: 0 0 40px; }
.mission-image::before { display: none; }
.mission-corps > .riche { font-size: 18px; color: var(--gris); }
.mission-sous-titre { font-family: var(--titre); font-size: 30px; margin: 46px 0 18px; }
.mission-corps .coches { margin-top: 0; }
.galerie { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.galerie .media::before { display: none; }
.mission-fiche { position: sticky; top: calc(var(--entete-h) + 24px); }
.fiche { background: var(--clair); border-radius: 24px; padding: 28px; border: 1px solid var(--trait); }
.fiche h2 { font-family: var(--titre); font-size: 26px; margin: 0 0 16px; }
.fiche dl { margin: 0; }
.fiche dl > div { padding: 12px 0; border-top: 1px solid var(--trait); }
.fiche dt { font-family: var(--mono); font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--gris-clair); margin-bottom: 4px; }
.fiche dd { margin: 0; font-weight: 500; }
.fiche .puce-type { color: var(--encre); }
.fiche-carte { margin-top: 18px; width: 100%; justify-content: center; }
.fiche-carte .ico { width: 18px; height: 18px; }
.mission-nav { padding: 48px 0; }
.mnav-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.mnav { --c: var(--mission); position: relative; display: flex; flex-direction: column; gap: 6px; padding: 22px 26px; background: var(--papier); border: 1px solid var(--trait); border-radius: 20px; text-decoration: none; color: var(--encre); transition: transform .25s ease, box-shadow .25s ease; }
.mnav.type-exercice { --c: var(--exercice); } .mnav.type-formation { --c: var(--formation); }
.mnav:hover { transform: translateY(-3px); box-shadow: var(--ombre-douce); color: var(--encre); }
.mnav-suiv { text-align: right; align-items: flex-end; }
.mnav-sens { display: inline-flex; align-items: center; gap: 6px; font-family: var(--mono); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--gris-clair); }
.mnav-sens .ico { width: 16px; height: 16px; }
.mnav strong { font-family: var(--titre); font-size: 24px; font-weight: 600; line-height: 1.1; }
.mnav-lieu { font-size: 14.5px; color: var(--gris); }
.mnav::after { content: ""; position: absolute; top: 22px; width: 8px; height: 8px; border-radius: 50%; background: var(--c); box-shadow: 0 0 10px var(--c); }
.mnav-prec::after { right: 24px; } .mnav-suiv::after { left: 24px; }

/* ---------- mentions légales ---------- */
.mentions-bloc { padding: 0 0 36px; margin-bottom: 36px; border-bottom: 1px solid var(--trait); }
.mentions-bloc:last-child { border-bottom: 0; }
.mentions-bloc h2 { font-family: var(--titre); font-size: 32px; margin: 0 0 14px; }
.mentions-bloc .riche { color: var(--gris); }

/* ==========================================================================
   PIED DE PAGE
   ========================================================================== */
.pied { position: relative; background: var(--nuit); color: rgba(210, 222, 255, .72); padding: 0 0 30px; font-size: 15.5px; overflow: hidden; }
.pied::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(700px 360px at 90% 0%, rgba(43, 75, 196, .35), transparent 60%); }
.pied-drapeau { display: flex; height: 4px; }
.pied-drapeau span { flex: 1; } .pied-drapeau span:nth-child(1) { background: var(--noir-be); } .pied-drapeau span:nth-child(2) { background: var(--jaune-be); } .pied-drapeau span:nth-child(3) { background: var(--rouge-be); }
.pied-grille { position: relative; display: grid; grid-template-columns: 1.4fr .8fr 1fr; gap: 40px; padding-top: 70px; padding-bottom: 50px; }
.pied-marque { display: flex; gap: 20px; align-items: flex-start; }
.pied-marque img { width: 64px; height: auto; flex: none; }
.pied-marque strong { display: block; font-family: var(--titre); font-size: 28px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #fff; margin-bottom: 8px; line-height: 1; }
.pied-marque p { max-width: 380px; margin: 0; }
.pied-col { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.pied-col h2 { font-family: var(--mono); font-size: 12px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--cyan); margin: 0 0 8px; }
.pied a { color: rgba(220, 230, 255, .82); text-decoration: none; display: inline-flex; align-items: center; gap: 10px; }
.pied a:hover { color: #fff; }
.pied .ico { width: 18px; height: 18px; color: var(--ciel); }
.pied-adresse { display: flex; gap: 10px; margin: 4px 0 0; }
.pied-adresse .ico { margin-top: 3px; }
.pied-bas { position: relative; display: flex; flex-wrap: wrap; gap: 10px 30px; justify-content: space-between; padding-top: 24px; border-top: 1px solid rgba(130, 180, 255, .16); font-size: 13.5px; color: rgba(190, 205, 240, .55); }
.pied-bas a { font-size: 13.5px; color: rgba(210, 222, 255, .7); }

/* ==========================================================================
   ADAPTATION AUX ÉCRANS
   ========================================================================== */
@media (max-width: 1180px) {
  .menu > a:not(.btn) { padding: 8px 9px; font-size: 15.5px; }
  .grille-equipe { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grille-cartes.col-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .style-numerote .carte-item::before { display: none; }
  .partenaires { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1060px) {
  .burger { display: block; }
  .menu {
    position: fixed; inset: 0; z-index: 1; flex-direction: column; align-items: stretch; justify-content: center; gap: 4px;
    padding: 90px 32px 40px; background: rgba(5, 11, 41, .98); color: #fff;
    opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s;
  }
  .menu.ouvert { opacity: 1; visibility: visible; }
  .menu > a:not(.btn) { font-family: var(--titre); font-size: 34px; font-weight: 600; padding: 8px 4px; opacity: .9; }
  .menu > a:not(.btn)::after { left: 4px; right: auto; width: 40px; bottom: 6px; }
  .btn-devis { margin: 24px 0 0; justify-content: center; font-size: 17px; padding: 15px 22px; }
  .entete.menu-ouvert { color: #fff; }
  .entete.menu-ouvert::before { opacity: 0; }
  .hero-grille { grid-template-columns: 1fr; }
  .embleme { position: absolute; right: -120px; top: 50%; width: 460px; transform: translateY(-50%); opacity: .2; z-index: -1; pointer-events: none; }
  .hero-texte { position: relative; }
  .entete-page.avec-visuel .entete-page-grille { grid-template-columns: 1fr; }
  .entete-page-visuel { display: none; }
  .ti-grille { grid-template-columns: 1fr; }
  .ti-grille.cote-gauche .ti-media { order: 0; }
  .ti-media { max-width: 640px; }
  .faq-grille { grid-template-columns: 1fr; }
  .faq-grille .section-tete { position: static; }
  .grille-activites { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .form-grille { grid-template-columns: 1fr; }
  .form-cote { position: static; grid-template-columns: 1fr 1fr; }
  .mission-grille { grid-template-columns: 1fr; }
  .mission-fiche { position: static; }
  .mission-hero-carte { width: 100%; right: 0; opacity: .7; }
  .pied-grille { grid-template-columns: 1fr 1fr; }
  .pied-marque { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  body { font-size: 16.5px; }
  .marque-nom { font-size: 20px; }
  .grille-cartes.col-2, .grille-cartes.col-3, .grille-cartes.col-4 { grid-template-columns: 1fr; }
  .grille-equipe { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px 16px; }
  .membre h3 { font-size: 21px; }
  .partenaires { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grille-chiffres { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 30px; }
  .chiffre { padding: 6px 14px; }
  .chiffre:nth-child(odd)::before { display: none; }
  .frise::before { left: 8px; }
  .frise-item, .frise-item:nth-child(even) { width: 100%; margin-left: 0; padding: 0 0 26px 38px; }
  .frise-point, .frise-item:nth-child(even) .frise-point { left: 0; right: auto; }
  .carte-scene { aspect-ratio: 1000 / 620; }
  .carte-aide { display: none; }
  .grille-activites { grid-template-columns: 1fr; }
  .form-2 { grid-template-columns: 1fr; }
  .form-cote { grid-template-columns: 1fr; }
  .mnav-grille { grid-template-columns: 1fr; }
  .mnav-suiv { text-align: left; align-items: flex-start; }
  .mnav-suiv::after { left: auto; right: 24px; }
  .publication { grid-template-columns: 30px 1fr auto; gap: 10px; }
  .pied-grille { grid-template-columns: 1fr; gap: 30px; padding-top: 54px; }
  .media.cadre-arrondi::before { inset: 12px -10px -12px 10px; }
  .cote-gauche .media.cadre-arrondi::before { inset: 12px 10px -12px -10px; }
  .appel-deco { display: none; }
  .hero-badges li { font-size: 11px; }
}
@media (max-width: 420px) {
  .grille-equipe { grid-template-columns: 1fr; }
  .partenaires { grid-template-columns: 1fr; }
  .grille-chiffres { grid-template-columns: 1fr; }
  .chiffre::before { display: none; }
  .btn { padding: 13px 20px; }
  .hero-boutons .btn { width: 100%; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .revele { opacity: 1; transform: none; }
}

@media print {
  .entete, .hero-reseau, .carte, .pied-drapeau, .hero-defiler { display: none !important; }
  .hero, .entete-page, .mission-hero, .fond-nuit, .fond-bleu { background: none !important; color: #000 !important; }
  .revele { opacity: 1 !important; transform: none !important; }
}

/* mini-cartes : bords fondus */
.visuel-carte { background: radial-gradient(circle at 50% 50%, rgba(43, 91, 255, .25), transparent 70%), linear-gradient(160deg, #0B1850, var(--nuit)); }
.visuel-carte .visuel-svg { -webkit-mask-image: radial-gradient(ellipse at 50% 50%, #000 45%, transparent 78%); mask-image: radial-gradient(ellipse at 50% 50%, #000 45%, transparent 78%); }
.entete-page-visuel .visuel-carte { background: none; }
