/* ==========================================================
   Endométriose en mouvement — evryBODY × S-Endo
   Tokens relevés à la pipette sur le carrousel d'origine.
   ========================================================== */

:root {
  --cream: #F7F0E6;
  --cream-deep: #F1E8DC;
  --ink: #141414;
  --text: #4F4A45;
  --muted: #6A645E;
  --hair: rgba(20, 20, 20, .22);
  --rose: #F9D2D8;
  --butter: #FBE0A3;
  --rose-deep: #DB4B93;     /* italique des titres, comme « EN MOUVEMENT » du visuel */
  --blob-yellow: #FDE79C;
  --blob-rose: #FBCBD5;
  --line-gold: #F0C45A;
  --line-rose: #E0579C;

  --serif: "Bodoni Moda", "Didot", "Bodoni 72", Georgia, serif;
  --sans: "Nunito Sans", "Avenir Next", Avenir, "Helvetica Neue", sans-serif;

  --condense: .82;          /* resserrement horizontal du titrage Didone */
  --track: .34em;           /* capitales espacées des sur-titres */
  --gutter: clamp(15px, 3.75vw, 54px);
  --ease: cubic-bezier(.22, .61, .36, 1);
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: var(--sans);
  font-weight: 400;
  font-size: 12.75px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
dl, dd { margin: 0; }
figure { margin: 0; }
em { font-style: italic; }

.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.nw { white-space: nowrap; }
.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;
}

:focus-visible { outline: 1.5px solid var(--ink); outline-offset: 4px; border-radius: 2px; }

/* ---------- Icônes ---------- */
.ico {
  width: 22.5px; height: 22.5px; flex: none;
  fill: none; stroke: currentColor; stroke-width: 1.5;
  stroke-linecap: round; stroke-linejoin: round;
}
.ico--lg { width: 28.5px; height: 28.5px; }
.ico--xl { width: 42px; height: 42px; stroke-width: 1.4; }
.ico--arrow { width: 30px; height: 18px; stroke-width: 1.4; }

/* ---------- Typo ---------- */
.eyebrow {
  font-size: 11px;
  font-weight: 400;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--ink);
}
.eyebrow::after {
  content: "";
  display: block;
  width: 48px;
  height: 1.5px;
  margin-top: 13.5px;
  background: var(--ink);
}
.eyebrow--center { text-align: center; padding-left: var(--track); }
.eyebrow--center::after { margin-inline: auto; transform: translateX(calc(var(--track) / -2)); }

/* Didone condensée : chaque ligne est composée à 125 % puis resserrée,
   pour garder une vraie mise en page (pas de débordement). */
.display {
  margin: 0;
  font-family: var(--serif);
  font-weight: 740;
  font-variation-settings: "opsz" 40;
  text-transform: uppercase;
  line-height: .9;
  letter-spacing: -.012em;
  font-size: clamp(39px, 5.4vw, 84px);
}
.display .l {
  display: block;
  width: calc(100% / var(--condense));
  transform: scaleX(var(--condense));
  transform-origin: 0 50%;
  white-space: nowrap;
}
.display em { font-weight: 640; letter-spacing: -.02em; color: var(--rose-deep); }
.display--center { text-align: center; }
.display--center .l { transform-origin: 50% 50%; margin-left: calc((100% - 100% / var(--condense)) / 2); }
.display--xl { font-size: clamp(37.5px, 4.8vw, 75px); line-height: .92; }
.display--xxl { font-size: clamp(42px, 7.05vw, 103.5px); line-height: .88; letter-spacing: -.02em; }
.display--stack { line-height: .96; }
.l--indent { padding-left: .55em; }

.rule { display: block; width: 54px; height: 1.5px; background: var(--ink); }

/* ---------- Pastilles & pilules ---------- */
.disc {
  display: grid; place-items: center;
  width: 81px; height: 81px;
  border-radius: 50%;
  color: var(--ink);
}
.disc .ico { width: 34.5px; height: 34.5px; stroke-width: 1.35; }
.disc--lg { width: 102px; height: 102px; }
.disc--lg .ico { width: 42px; height: 42px; }
.disc--rose { background: var(--rose); }
.disc--butter { background: var(--butter); }

.chip {
  display: inline-block;
  padding: 7.5px 22.5px 6.75px;
  border-radius: 999px;
  background: var(--butter);
  font-size: clamp(16.5px, 1.8vw, 22.5px);
  font-weight: 500;
  letter-spacing: .06em;
  font-variant-numeric: tabular-nums;
}

.pill {
  display: inline-flex; align-items: center; justify-content: center; gap: 16.5px;
  border-radius: 999px;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: 11.25px;
  font-weight: 400;
  transition: background .35s var(--ease), color .35s var(--ease), transform .35s var(--ease);
}
.pill--ink { background: var(--ink); color: var(--cream); }
.pill--ink:hover { background: #2a2622; }
.pill--ink:hover .ico--arrow { transform: translateX(5px); }
.pill .ico--arrow { transition: transform .35s var(--ease); }
.pill--lg { padding: 18px 30px 18px 36px; font-size: 12.75px; }
.pill--rose { background: var(--rose); color: var(--ink); font-weight: 600; letter-spacing: .14em; padding: 12px 20px 12px 24px; font-size: 11px; gap: 12px; }
.pill--rose:hover { background: #F5C2CC; }
.pill--rose:hover .ico--arrow { transform: translateX(5px); }
.pill--rose .ico--arrow { width: 26px; height: 16px; }
.hero__cta { margin-top: clamp(16px, 2.4vh, 26px); }
.hero__cta-txt { display: inline-flex; gap: .9em; }
.pill--sm { padding: 7.5px 15px 6.75px; font-size: 11px; letter-spacing: .2em; }

/* ---------- Lignes organiques ---------- */
.curve {
  position: absolute;
  pointer-events: none;
  overflow: visible;
  z-index: 1;
}
.curve path {
  fill: none;
  stroke: var(--line-gold);
  stroke-width: 1.6;
  vector-effect: non-scaling-stroke;
}
.curve--rose path { stroke: var(--line-rose); }

/* ---------- Partenaires ---------- */
.partners {
  position: relative; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  gap: clamp(9px, 1.8vw, 22.5px);
}
.partners img { width: auto; }
/* Hauteurs calées sur les capitales (evryBODY 71 % de l'image, S-ENDO 28 %, POWERCUBE 59 %) */
.partners__evry { height: clamp(16px, 1.75vw, 24px); }
.partners__sendo { height: clamp(44px, 4.7vw, 64px); }
.partners__powercube { height: clamp(15px, 1.65vw, 22.5px); }
/* Le mot « S-ENDO » est dans le haut du logo (centre à 23 %) : on l'aligne sur la ligne des deux autres noms */
.partners__sendo { transform: translateY(26%); }
.partners__x { font-size: clamp(15px, 1.65vw, 21px); font-weight: 300; line-height: 1; }
.partners a { display: block; transition: opacity .3s; }
.partners a:hover { opacity: .7; }

/* ---------- Barre fixe ---------- */
.bar {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  padding: 10.5px var(--gutter);
  background: var(--cream);
  border-bottom: 1px solid var(--hair);
  transform: translateY(-101%);
  transition: transform .5s var(--ease);
}
.bar.is-on { transform: none; }
.bar__brand img { height: 13.5px; width: auto; }
.bar__nav { display: flex; gap: 27px; }
.bar__nav a {
  text-decoration: none; font-size: 11px; letter-spacing: .26em; text-transform: uppercase;
  position: relative;
}
.bar__nav a::after {
  content: ""; position: absolute; left: 0; right: .26em; bottom: -6px; height: 1px;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform .4s var(--ease);
}
.bar__nav a:hover::after, .bar__nav a[aria-current="true"]::after { transform: scaleX(1); }

/* ==========================================================
   1 — HERO
   ========================================================== */
.hero {
  position: relative;
  min-height: 100svh;
  padding: clamp(21px, 3.75vh, 42px) 0 0;
  overflow: hidden;
}
.hero .partners { padding-inline: var(--gutter); }

.hero__grid {
  position: relative; z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 46fr) minmax(0, 54fr);
  align-items: start;
  margin-top: clamp(9px, 2.25vh, 27px);
}
.hero__photo {
  align-self: end;
  margin-top: 1.5vh;
  padding-left: clamp(0px, 4vw, 64px);
  -webkit-mask-image: linear-gradient(to bottom, #000 80%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 80%, transparent 100%);
}
.hero__photo img { width: auto; height: clamp(465px, 84vh, 810px); max-width: 100%; object-fit: contain; object-position: left top; }
/* fondu latéral sur l'image elle-même : le bras et l'épaule sont coupés par le cadrage */
.hero__photo img {
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 12%, #000 78%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 12%, #000 78%, transparent 100%);
}

.hero__text {
  display: flex; flex-direction: column; align-items: center;
  padding: clamp(30px, 7.5vh, 90px) var(--gutter) 48px 0;
  text-align: center;
}
.hero__text .eyebrow { margin-bottom: clamp(27px, 3.75vh, 42px); }
.hero__text .display { width: 100%; max-width: 480px; }

.triad {
  margin-top: 22.5px;
  font-size: clamp(9.75px, 0.94vw, 12.75px);
  letter-spacing: .3em;
  text-transform: uppercase;
}
.triad span { margin-inline: .7em; }

.lede {
  margin-top: 28.5px;
  max-width: 34em;
  color: var(--muted);
  font-size: clamp(12.75px, 1.12vw, 15.75px);
  font-weight: 300;
  line-height: 1.5;
}

/* Offre en deux lignes, sous le chapeau */
.offer { margin-top: clamp(20px, 2.8vh, 30px); display: grid; justify-items: center; }
.offer__row {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0 .7em;
  padding: 8px 6px;
  font-size: clamp(10.5px, .94vw, 13px); letter-spacing: .16em; text-transform: uppercase;
}
.offer__row + .offer__row { border-top: 1px solid var(--hair); }
.offer__row strong { font-weight: 600; }
.offer__row span:last-child { color: var(--rose-deep); font-weight: 600; }
.offer__note { margin-top: 10px; font-size: clamp(12px, 1.02vw, 14.5px); font-style: italic; font-weight: 300; color: var(--muted); }

.facts {
  margin-top: clamp(24px, 3.4vh, 40px);
  display: flex; align-items: center;
  padding: 16.5px clamp(18px, 2.2vw, 30px);
  background: var(--rose);
  border-radius: 22px;
  text-align: left;
  justify-self: center;
}
.fact { display: flex; gap: 12px; align-items: flex-start; }
.fact + .fact { margin-left: clamp(16px, 2vw, 28px); padding-left: clamp(16px, 2vw, 28px); border-left: 1px solid rgba(20, 20, 20, .28); }
.fact .ico--lg { width: 24px; height: 24px; }
.fact time { font-size: clamp(15px, 1.42vw, 20.25px); font-weight: 400; line-height: 1.3; }
.place { display: grid; gap: 2px; text-decoration: none; font-size: clamp(14.25px, 1.31vw, 18px); line-height: 1.32; }
.place strong { font-weight: 600; letter-spacing: .02em; }
.place > span { color: var(--text); font-weight: 300; }
.place:hover strong { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }

.scroll-cue {
  margin-top: clamp(42px, 6.75vh, 82.5px);
  display: grid; grid-template-columns: auto auto; column-gap: 21px; row-gap: 16.5px;
  align-items: center;
  text-decoration: none;
  text-align: left;
}
.scroll-cue .rule { grid-column: 1 / -1; width: 60px; }
.scroll-cue__txt {
  font-size: 11px; letter-spacing: var(--track); text-transform: uppercase; line-height: 1.95;
}
.scroll-cue .ico--arrow { transition: transform .4s var(--ease); color: var(--rose-deep); }
.scroll-cue:hover .ico--arrow { transform: translateX(6px); }

.curve--hero-a { left: -2vw; top: -4vh; width: 11vw; height: 170vh; }
.curve--hero-b { left: -1vw; bottom: -12vh; width: 17vw; height: 70vh; }
.curve--hero-c { right: 0; bottom: 6vh; width: 7vw; height: 46vh; }

/* ==========================================================
   2 — L'IDÉE
   ========================================================== */
.idee { position: relative; overflow: hidden; padding: clamp(60px, 9vh, 112.5px) 0 0; }
.idee__grid {
  position: relative; z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 56fr) minmax(0, 44fr);
  align-items: center;
}
.idee__text { padding: 0 0 clamp(30px, 4.5vh, 60px) var(--gutter); max-width: 570px; }
.idee__text .eyebrow { margin-bottom: clamp(33px, 4.5vh, 52.5px); padding-left: 3.4em; }
.idee__text .eyebrow::after { margin-left: 0; }
.idee .body {
  margin-top: clamp(27px, 3.75vh, 45px);
  max-width: 30em;
  font-size: clamp(14.5px, 1.32vw, 18.5px);
  font-weight: 300;
  color: var(--text);
  line-height: 1.5;
}
.idee__photo {
  align-self: center;
  justify-self: center;
  width: 100%; max-width: 360px;
  margin: 0 var(--gutter) clamp(40px, 6vh, 72px);
}

.curve--idee-a { right: 0; top: 4vh; width: 30vw; height: 64vh; }
.curve--idee-b { left: -1vw; bottom: -3vh; width: 44vw; height: 28vh; }

/* ---------- Trio d'atouts ---------- */
.trio {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  text-align: center;
}
.trio li {
  display: flex; flex-direction: column; align-items: center;
  padding: 4.5px clamp(9px, 1.5vw, 22.5px);
  position: relative;
}
.trio li + li::before {
  content: ""; position: absolute; left: 0; top: 18%; bottom: 0;
  width: 1px; background: var(--hair);
}
.trio .disc { margin-bottom: 19.5px; }
.trio strong {
  font-weight: 600; font-size: clamp(12px, 1.09vw, 15.75px);
  letter-spacing: .1em; text-transform: uppercase; line-height: 1.3;
}
.trio span:not(.disc) {
  margin-top: 4.5px;
  color: var(--text); font-weight: 300;
  font-size: clamp(12px, 1.05vw, 15px); line-height: 1.35;
}

/* ---------- Signature ---------- */
.signature { display: grid; gap: 16.5px; }
.signature p {
  font-size: clamp(9.75px, 0.9vw, 12.75px); letter-spacing: var(--track); text-transform: uppercase;
  line-height: 1.9;
}
.signature p span { margin-inline: .6em; }
.signature--center { justify-items: center; text-align: center; }

.folio {
  position: absolute; top: clamp(18px, 3vh, 33px); right: var(--gutter); z-index: 2;
  font-size: 12.75px; letter-spacing: .02em; font-variant-numeric: tabular-nums;
}

/* ==========================================================
   3 & 4 — SLIDES (cours, apéro)
   ========================================================== */
.slide { position: relative; overflow: hidden; padding: clamp(72px, 10.5vh, 127.5px) var(--gutter) clamp(60px, 9vh, 105px); }
.slide__inner { position: relative; z-index: 1; max-width: 1000px; margin-inline: auto; }
.slide .eyebrow { margin-bottom: 22.5px; }
.slide .chip { margin-top: 4.5px; margin-bottom: clamp(16.5px, 2.25vh, 24px); }

.sub { margin-top: 9px; font-size: clamp(16.5px, 1.95vw, 25.5px); font-weight: 400; line-height: 1.25; }
.sub--muted { color: var(--text); font-weight: 300; margin-top: 16.5px; line-height: 1.3; }
.with { margin-top: clamp(27px, 3.75vh, 42px); font-size: clamp(15px, 1.65vw, 21px); line-height: 1.3; color: var(--muted); font-weight: 300; max-width: 30em; }
.with strong { color: var(--ink); font-weight: 500; }

.hair { border: 0; height: 1px; background: var(--hair); margin: clamp(30px, 4.5vh, 48px) 0; }

.duo { display: grid; grid-template-columns: 1fr 1fr; align-items: center; }
.duo__item { display: flex; align-items: center; gap: 18px; padding: 4.5px clamp(12px, 2.25vw, 33px); }
.duo__item + .duo__item { border-left: 1px solid var(--hair); }
.duo__item .ico--lg { width: 39px; height: 39px; stroke-width: 1.4; }
.duo__item p { display: grid; }
.duo__item strong { font-size: clamp(15px, 1.5vw, 18.75px); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.duo__item span { color: var(--text); font-weight: 300; font-size: clamp(13.5px, 1.35vw, 16.5px); }

.band {
  margin-top: clamp(27px, 3.75vh, 42px);
  display: grid; grid-template-columns: auto 1fr; align-items: center;
  gap: clamp(18px, 3vw, 42px);
  padding: clamp(21px, 3vw, 33px) clamp(21px, 4.5vw, 82.5px);
  background: var(--rose);
  border-radius: 34px;
}
.band > div { padding-left: clamp(18px, 2.25vw, 27px); border-left: 1px solid rgba(20, 20, 20, .45); }
.band__title { font-size: clamp(12.75px, 1.42vw, 18px); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; line-height: 1.35; }
.band__txt { margin-top: 9px; font-size: clamp(12.75px, 1.35vw, 17.25px); font-weight: 300; }
.band--butter { background: var(--butter); }

.slide__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 330px);
  gap: clamp(28px, 5vw, 80px);
  align-items: center;
}
.slide__head--rev { grid-template-columns: minmax(0, 330px) minmax(0, 1fr); }
.slide__head .display--xxl, .slide--apero .slide__head .display--xxl { font-size: clamp(42px, 5.4vw, 80px); }
/* Photos réelles en couleur : cadre en arche posé sur une tache pastel */
.arch { position: relative; isolation: isolate; }
.slide__intro, .idee__text { position: relative; z-index: 2; }
.arch picture {
  position: relative; z-index: 1;
  display: block;
  aspect-ratio: 2 / 3;
  overflow: hidden;
  border-radius: 50% 50% 18px 18px / 33.4% 33.4% 18px 18px;
}
.arch picture img { display: block; width: 100%; height: calc(100% + 32px); margin-top: -16px; object-fit: cover; }
.arch .blob { width: 118%; left: -30%; top: 22%; }
.slide__head--rev .arch .blob { left: auto; right: -30%; top: 30%; }
.idee__photo.arch .blob { left: -26%; top: -8%; }
.band__txt + .band__txt { margin-top: 6px; }

/* Cours : « Bien plus qu'un cours », même carte que le formulaire de réservation */
.pack {
  position: relative; isolation: isolate;
  margin-top: clamp(40px, 6vh, 64px);
  padding: clamp(32px, 4.2vw, 56px) clamp(20px, 3.6vw, 52px) clamp(28px, 3.6vw, 44px);
  background: #FBF6EE;
  border-radius: 34px;
  box-shadow: 0 18px 50px -28px rgba(80, 50, 30, .35);
  text-align: center;
}
.pack__title { font-size: clamp(36px, 4.4vw, 64px); }
.pack__title .l { transform-origin: 50% 50%; margin-left: calc((100% - 100% / var(--condense)) / 2); }
.pack__lead { margin-top: 14px; font-size: clamp(14px, 1.4vw, 18px); font-weight: 300; color: var(--text); }
.pack__list { margin-top: clamp(26px, 3.8vh, 40px); }
.pack__num { font-family: var(--serif); font-style: italic; font-weight: 600; font-size: clamp(30px, 2.8vw, 38px); letter-spacing: .02em; line-height: 1; }
.pack__list a { color: var(--ink); text-underline-offset: 3px; text-decoration-thickness: 1px; white-space: nowrap; }
.pack__list a:hover { color: var(--rose-deep); }
.pack__foot {
  margin-top: clamp(26px, 3.8vh, 40px); padding-top: clamp(22px, 3vh, 30px);
  border-top: 1px solid var(--hair);
  display: flex; align-items: center; justify-content: space-between; gap: 18px 28px; flex-wrap: wrap;
  text-align: left;
}
.pack__total { font-size: clamp(12.75px, 1.3vw, 16.5px); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.pack__total span {
  display: inline-block; margin-left: .5em;
  font-size: 1.6em; font-weight: 700; letter-spacing: .02em; color: var(--rose-deep);
}

.curve--cours-a { left: 0; top: 0; width: 10vw; height: 34vh; }
.curve--cours-b { right: 0; top: 10vh; width: 9vw; height: 60vh; }
.curve--cours-c { left: 0; bottom: 0; width: 9vw; height: 40vh; }

/* Apéro */
.slide--apero .display--xxl { font-size: clamp(42px, 6.3vw, 93px); }
.band--wide { margin-top: clamp(30px, 4.5vh, 48px); }
.band--wide .band__title { letter-spacing: .12em; }

.cta-row {
  margin-top: clamp(30px, 4.5vh, 45px);
  display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;
}
.place--row { display: flex; gap: 15px; align-items: flex-start; }
.place--row > span { display: grid; color: var(--ink); }
.place--row > span > span { color: var(--text); font-weight: 300; }

.leaves {
  position: absolute; top: 0; right: 0; z-index: 0;
  width: min(48vw, 700px); height: min(100%, 1350px);
  background: url("../img/feuillage.jpg?v=4") right top / cover no-repeat;
  mix-blend-mode: multiply;
  opacity: .55;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 60%), linear-gradient(to bottom, transparent 0%, #000 20%, #000 55%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0%, #000 60%), linear-gradient(to bottom, transparent 0%, #000 20%, #000 55%, transparent 100%);
  -webkit-mask-composite: source-in;
          mask-composite: intersect;
}

.curve--apero-a { left: 0; top: -4vh; width: 8vw; height: 110%; }
.curve--apero-b { right: 0; top: 20vh; width: 6vw; height: 50vh; }

/* Programme */
.timeline { margin-top: clamp(36px, 5vh, 56px); border-top: 1px solid var(--hair); }
.timeline li { border-bottom: 1px solid var(--hair); }
.timeline__row {
  display: grid; grid-template-columns: 150px auto minmax(0, 1fr) auto; align-items: center;
  gap: clamp(18px, 2.4vw, 36px);
  padding: 20px 4px;
  text-decoration: none;
}
.timeline__row .chip { justify-self: start; font-size: clamp(13.5px, 1.2vw, 16.5px); padding: 6px 16px 5px; white-space: nowrap; }
.timeline li:nth-child(even) .chip { background: var(--rose); }
.timeline__row .disc { width: 66px; height: 66px; }
.timeline__row .disc .ico { width: 28px; height: 28px; }
.timeline__txt { display: grid; gap: 3px; }
.timeline__txt strong { font-weight: 600; font-size: clamp(13.5px, 1.2vw, 16.5px); letter-spacing: .12em; text-transform: uppercase; }
.timeline__txt span { color: var(--text); font-weight: 300; font-size: clamp(13.5px, 1.15vw, 16px); }
.timeline__row .ico--arrow { transition: transform .4s var(--ease); }
.timeline__row:hover .ico--arrow { transform: translateX(6px); }
.timeline__row:hover .timeline__txt strong { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }

.curve--prog-a { left: 0; top: 6vh; width: 8vw; height: 70vh; }
.curve--prog-b { right: 0; bottom: 8vh; width: 6vw; height: 45vh; }
.curve--accueil-a { right: 0; top: 8vh; width: 8vw; height: 60vh; }
.curve--accueil-b { left: 0; bottom: 10vh; width: 9vw; height: 36vh; }
.curve--conf-a { left: 0; top: 4vh; width: 8vw; height: 80vh; }
.curve--conf-b { right: 0; top: 30vh; width: 6vw; height: 45vh; }

/* Visuel à venir : même format et mêmes fondus que les photos */
.ph {
  aspect-ratio: 848 / 1264;
  display: grid; place-items: center; align-content: center; gap: 18px;
  background:
    radial-gradient(70% 55% at 50% 42%, rgba(250, 218, 219, .8), transparent 72%),
    var(--cream-deep);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 80%, transparent 100%), linear-gradient(to right, transparent 0%, #000 16%, #000 84%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 80%, transparent 100%), linear-gradient(to right, transparent 0%, #000 16%, #000 84%, transparent 100%);
  -webkit-mask-composite: source-in;
          mask-composite: intersect;
}
.ph__v { width: 60px; height: 60px; fill: none; stroke: var(--ink); stroke-width: .8; stroke-linejoin: round; stroke-linecap: round; opacity: .35; }
.ph__label { font-size: 11px; letter-spacing: var(--track); padding-left: var(--track); text-transform: uppercase; color: var(--muted); }

.fact dd { display: grid; }

/* Taches organiques pastel, d'après le visuel de la cliente */
.blob {
  position: absolute; z-index: 0;
  height: auto; aspect-ratio: 1;
  overflow: visible; pointer-events: none;
  transform-origin: 50% 50%;
  animation: blob-drift 22s ease-in-out infinite alternate;
}
.blob--yellow { fill: var(--blob-yellow); }
.blob--rose { fill: var(--blob-rose); animation-duration: 27s; animation-direction: alternate-reverse; }
@keyframes blob-drift {
  from { transform: translate3d(0, 0, 0) rotate(0deg) scale(1); }
  to   { transform: translate3d(2%, -3%, 0) rotate(9deg) scale(1.05); }
}
.blob--hero-a { left: -4vw; top: 13vh; width: 30vw; }
.blob--hero-b { left: -10vw; bottom: -16vh; width: 27vw; }
.blob--hero-c { right: -6vw; top: 58%; width: 13vw; }
.foot { position: relative; overflow: hidden; }
.foot > :not(.blob) { position: relative; z-index: 1; }
.blob--foot-a { left: -9vw; bottom: -14vw; width: 26vw; }
.blob--foot-b { right: -7vw; top: -9vw; width: 18vw; }

/* ---------- Réservation ---------- */
.reserve {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 420px);
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}
.reserve__intro { position: relative; z-index: 2; }
.slide--reserve .display--xxl { font-size: clamp(42px, 5.4vw, 80px); }
.slide--reserve .sub { margin-top: 12px; }

.seats {
  display: inline-flex; align-items: center; gap: 6px;
  margin-left: 6px; padding: 3px 9px 2px; vertical-align: 1px;
  border-radius: 999px; background: var(--rose);
  font-size: 10.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink);
  white-space: nowrap;
}
.seats::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--rose-deep); animation: seats-pulse 1.8s ease-in-out infinite; }
.seats.is-full { background: var(--ink); color: var(--cream); }
.seats.is-full::before { background: var(--cream); animation: none; }
@keyframes seats-pulse { 50% { transform: scale(1.6); opacity: .45; } }

.reserve__where { margin-top: clamp(20px, 3vh, 30px); font-size: 13px; color: var(--text); font-weight: 300; }
.reserve__where span { margin-inline: .5em; }

.reserve__card { position: relative; isolation: isolate; }
.blob--card-a { width: 62%; right: -18%; top: -14%; }
.blob--card-b { width: 54%; left: -20%; bottom: -16%; }

.form {
  position: relative; z-index: 1;
  display: grid; gap: 20px;
  padding: clamp(24px, 2.6vw, 36px) clamp(22px, 2.4vw, 34px);
  background: #FBF6EE;
  border-radius: 28px;
  box-shadow: 0 18px 50px -28px rgba(80, 50, 30, .35);
}
.form__test { font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; padding: 8px 14px; border-radius: 12px; background: var(--butter); }
.form__title { font-family: var(--serif); font-weight: 600; font-size: 20px; font-style: italic; color: var(--rose-deep); }
.form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: grid; gap: 6px; }
.field__label { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; }
.field__label em { font-style: normal; letter-spacing: .06em; text-transform: none; color: var(--muted); }
.field input {
  width: 100%;
  font: inherit; font-size: 15px; color: var(--ink);
  padding: 8px 0 9px;
  background: transparent;
  border: 0; border-bottom: 1px solid rgba(20, 20, 20, .3);
  border-radius: 0;
  outline: none;
  transition: border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.field input:focus { border-bottom-color: var(--rose-deep); box-shadow: 0 1px 0 0 var(--rose-deep); }
.field__err { display: none; font-size: 12px; color: var(--rose-deep); }
.field.is-invalid input { border-bottom-color: var(--rose-deep); }
.field.is-invalid .field__err, .field__err--check.is-on { display: block; }

.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.choice { border: 0; padding: 0; margin: 0; display: grid; gap: 9px; min-width: 0; }
.choice legend { padding: 0; margin-bottom: 9px; }
.choice__opt {
  position: relative;
  display: grid; grid-template-columns: 18px 1fr auto; align-items: center; gap: 12px;
  padding: 11px 16px;
  border: 1px solid rgba(20, 20, 20, .18); border-radius: 16px;
  cursor: pointer;
  transition: background .25s var(--ease), border-color .25s var(--ease), opacity .25s var(--ease);
}
.choice__opt:hover { border-color: rgba(20, 20, 20, .4); }
.choice__opt input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.choice__dot { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--ink); display: grid; place-items: center; }
.choice__dot::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--rose-deep); transform: scale(0); transition: transform .25s var(--ease); }
.choice__opt:has(input:checked) { background: var(--rose); border-color: var(--rose); }
.choice__opt:has(input:checked) .choice__dot { border-color: var(--rose-deep); }
.choice__opt:has(input:checked) .choice__dot::after { transform: scale(1); }
.choice__opt:has(input:focus-visible) { outline: 1.5px solid var(--ink); outline-offset: 3px; }
.choice__txt { display: grid; gap: 1px; min-width: 0; }
.choice__txt strong { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.choice__txt > span { font-size: 12px; color: var(--muted); }
.choice__price { font-size: 13px; font-weight: 600; white-space: nowrap; }
.choice__opt.is-full { opacity: .45; cursor: default; }
.choice__opt.is-full .choice__txt > span { color: var(--rose-deep); font-weight: 600; }
.field__err--formule { margin-top: -10px; }
.field__err--formule.is-on { display: block; }

.check { display: grid; grid-template-columns: 18px 1fr; gap: 12px; align-items: start; cursor: pointer; }
.check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.check__box {
  width: 18px; height: 18px; margin-top: 1px;
  border: 1px solid var(--ink); border-radius: 6px;
  display: grid; place-items: center;
  transition: background .25s var(--ease), border-color .25s var(--ease);
}
.check__box::after { content: ""; width: 9px; height: 5px; border-left: 1.5px solid var(--cream); border-bottom: 1.5px solid var(--cream); transform: rotate(-45deg) translate(1px, -1px); opacity: 0; }
.check input:checked + .check__box { background: var(--rose-deep); border-color: var(--rose-deep); }
.check input:checked + .check__box::after { opacity: 1; }
.check input:focus-visible + .check__box { outline: 1.5px solid var(--ink); outline-offset: 3px; }
.check__txt { font-size: 13px; line-height: 1.45; color: var(--text); font-weight: 300; }
.field__err--check { margin-top: -10px; }

.form__submit { width: 100%; justify-content: space-between; margin-top: 4px; border: 0; cursor: pointer; font-family: inherit; white-space: nowrap; letter-spacing: .12em; }
.form__submit[disabled] { opacity: .55; cursor: default; }
.form__submit.is-loading .ico--arrow { animation: nudge 1s ease-in-out infinite; }
@keyframes nudge { 50% { transform: translateX(6px); } }
.form__msg { font-size: 13px; line-height: 1.45; padding: 12px 16px; border-radius: 16px; background: var(--rose); }
.form__secure { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 11.5px; color: var(--muted); }
.form__secure .ico { width: 15px; height: 15px; }
.form.is-full .field, .form.is-full .check { opacity: .45; pointer-events: none; }

.curve--reserve-a { left: 0; top: 6vh; width: 8vw; height: 70vh; }
.curve--reserve-b { right: 0; top: 24vh; width: 6vw; height: 45vh; }

/* ---------- Page Merci ---------- */
.merci { position: relative; overflow: hidden; min-height: 100svh; padding: clamp(28px, 5vh, 56px) var(--gutter) 64px; }
.merci .partners { position: relative; z-index: 2; }
.merci__inner { position: relative; z-index: 2; max-width: 680px; margin: clamp(56px, 10vh, 110px) auto 0; text-align: center; }
.merci__inner .eyebrow { margin-bottom: clamp(30px, 5vh, 48px); }
.merci__title { font-size: clamp(48px, 6.4vw, 96px); }
.merci .lede { margin: 24px auto 0; }
.merci .facts { margin: clamp(30px, 5vh, 44px) auto 0; width: max-content; max-width: 100%; }
.merci__actions { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; align-items: center; }
.merci .signature { margin-top: clamp(56px, 9vh, 96px); }
.blob--merci-a { left: -8vw; top: 18vh; width: 30vw; }
.blob--merci-b { right: -9vw; bottom: -10vh; width: 32vw; }
.curve--merci-b { right: 0; top: 30vh; width: 7vw; height: 46vh; }
.fact__sub { color: var(--text); font-weight: 300; font-size: clamp(14.25px, 1.31vw, 18px); }

/* ---------- Pied ---------- */
.foot { padding: 22.5px var(--gutter) 48px; text-align: center; }
.foot .partners { margin-top: 48px; }
.foot__meta { margin-top: 39px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.foot__meta span { margin-inline: .6em; }
.foot__meta a { text-decoration: none; border-bottom: 1px solid var(--hair); }

/* ==========================================================
   Mouvement
   ========================================================== */
.js .reveal { opacity: 0; transform: translateY(14px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.js .reveal.is-in { opacity: 1; transform: none; }
.js .curve path { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 2.6s cubic-bezier(.45, .05, .2, 1); }
.js .curve.is-in path { stroke-dashoffset: 0; }
[data-parallax] img { will-change: transform; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .reveal { opacity: 1; transform: none; transition: none; }
  .js .curve path { stroke-dashoffset: 0; transition: none; }
  .blob { animation: none; }
  .seats::before { animation: none; }
  .bar { transition: none; }
}

/* ==========================================================
   Responsive
   ========================================================== */
.br-d { display: inline; }

@media (max-width: 1080px) {
  .bar__nav { display: none; }
}


/* Tailles d'origine conservées sur mobile (le desktop est réduit de 25 %). */
@media (max-width: 900px) {
  :root { --gutter: clamp(20px, 5vw, 72px); }
  body { font-size: 17px; }
  .ico { width: 30px; height: 30px; }
  .ico--lg { width: 38px; height: 38px; }
  .ico--xl { width: 56px; height: 56px; }
  .ico--arrow { width: 40px; height: 24px; }
  .eyebrow { font-size: 13px; }
  .eyebrow::after { width: 64px; margin-top: 18px; }
  .display { font-size: clamp(52px, 7.2vw, 112px); }
  .display--xl { font-size: clamp(50px, 6.4vw, 100px); }
  .display--xxl { font-size: clamp(56px, 9.4vw, 138px); }
  .rule { width: 72px; }
  .disc { width: 108px; height: 108px; }
  .disc .ico { width: 46px; height: 46px; }
  .disc--lg { width: 136px; height: 136px; }
  .disc--lg .ico { width: 56px; height: 56px; }
  .chip { padding: 10px 30px 9px; font-size: clamp(22px, 2.4vw, 30px); }
  .pill { gap: 22px; font-size: 15px; }
  .pill--lg { padding: 24px 40px 24px 48px; font-size: 17px; }
  .pill--sm { padding: 10px 20px 9px; font-size: 12px; }
  .partners { gap: clamp(12px, 2.4vw, 30px); }
  .partners__evry { height: clamp(20px, 2.5vw, 32px); }
  .partners__sendo { height: clamp(54px, 6.6vw, 86px); }
  .partners__powercube { height: clamp(20px, 2.2vw, 30px); }
  .partners__x { font-size: clamp(20px, 2.2vw, 28px); }
  .bar { gap: 24px; padding: 14px var(--gutter); }
  .bar__brand img { height: 18px; }
  .bar__nav { gap: 36px; }
  .bar__nav a { font-size: 12px; }
  .hero { padding: clamp(28px, 5vh, 56px) 0 0; }
  .hero__grid { margin-top: clamp(12px, 3vh, 36px); }
  .hero__photo { margin-top: 2vh; }
  .hero__photo img { height: clamp(620px, 112vh, 1080px); }
  .hero__text { padding: clamp(40px, 10vh, 120px) var(--gutter) 64px 0; }
  .hero__text .eyebrow { margin-bottom: clamp(36px, 5vh, 56px); }
  .hero__text .display { max-width: 640px; }
  .triad { margin-top: 30px; font-size: clamp(13px, 1.25vw, 17px); }
  .lede { margin-top: 38px; font-size: clamp(17px, 1.5vw, 21px); }
  .facts { margin-top: clamp(44px, 7vh, 80px); gap: 34px; }
  .fact { gap: 22px; }
  .fact time { font-size: clamp(20px, 1.9vw, 27px); }
  .place { font-size: clamp(19px, 1.75vw, 24px); }
  .place:hover strong { text-underline-offset: 4px; }
  .scroll-cue { margin-top: clamp(56px, 9vh, 110px); column-gap: 28px; row-gap: 22px; }
  .scroll-cue .rule { width: 80px; }
  .scroll-cue__txt { font-size: 14px; }
  .idee { padding: clamp(80px, 12vh, 150px) 0 0; }
  .idee__text { padding: 0 0 clamp(40px, 6vh, 80px) var(--gutter); max-width: 760px; }
  .idee__text .eyebrow { margin-bottom: clamp(44px, 6vh, 70px); }
  .idee .body { margin-top: clamp(36px, 5vh, 60px); font-size: clamp(18px, 1.7vw, 24px); }
  .trio li { padding: 6px clamp(12px, 2vw, 30px); }
  .trio .disc { margin-bottom: 26px; }
  .trio strong { font-size: clamp(16px, 1.45vw, 21px); }
  .trio span:not(.disc) { margin-top: 6px; font-size: clamp(16px, 1.4vw, 20px); }
  .signature { gap: 22px; }
  .signature p { font-size: clamp(13px, 1.2vw, 17px); }
  .folio { top: clamp(24px, 4vh, 44px); font-size: 17px; }
  .slide { padding: clamp(96px, 14vh, 170px) var(--gutter) clamp(80px, 12vh, 140px); }
  .slide .eyebrow { margin-bottom: 30px; }
  .slide .chip { margin-top: 6px; margin-bottom: clamp(22px, 3vh, 32px); }
  .sub { margin-top: 12px; font-size: clamp(22px, 2.6vw, 34px); }
  .sub--muted { margin-top: 22px; }
  .with { margin-top: clamp(36px, 5vh, 56px); font-size: clamp(20px, 2.2vw, 28px); }
  .hair { margin: clamp(40px, 6vh, 64px) 0; }
  .duo__item { gap: 24px; padding: 6px clamp(16px, 3vw, 44px); }
  .duo__item .ico--lg { width: 52px; height: 52px; }
  .duo__item strong { font-size: clamp(20px, 2vw, 25px); }
  .duo__item span { font-size: clamp(18px, 1.8vw, 22px); }
  .band { margin-top: clamp(36px, 5vh, 56px); gap: clamp(24px, 4vw, 56px); padding: clamp(28px, 4vw, 44px) clamp(28px, 6vw, 110px); }
  .band > div { padding-left: clamp(24px, 3vw, 36px); }
  .band__title { font-size: clamp(17px, 1.9vw, 24px); }
  .band__txt { margin-top: 12px; font-size: clamp(17px, 1.8vw, 23px); }
  .pack { margin-top: clamp(48px, 7vh, 80px); }
  .pack__num { font-size: 44px; }
  .pack__lead { font-size: clamp(18px, 1.8vw, 22px); }
  .pack__total { font-size: clamp(15px, 1.6vw, 19px); }
  .slide--apero .display--xxl { font-size: clamp(56px, 8.4vw, 124px); }
  .band--wide { margin-top: clamp(40px, 6vh, 64px); }
  .cta-row { margin-top: clamp(40px, 6vh, 60px); gap: 32px; }
  .place--row { gap: 20px; }
  .foot { padding: 30px var(--gutter) 64px; }
  .foot .partners { margin-top: 64px; }
  .foot__meta { margin-top: 52px; font-size: 13px; }
}

@media (max-width: 900px) {
  body { font-size: 16px; }
  .br-d { display: none; }

  /* Hero : titre en tête, puis photo + infos côte à côte, comme la slide */
  .hero { min-height: 0; }
  .hero__grid { grid-template-columns: 54% 46%; margin-top: 0; }
  .hero__text { display: contents; }
  .hero__text > .eyebrow { grid-row: 1; margin: 48px auto 30px; }
  .hero__text > .display { grid-row: 2; font-size: clamp(44px, 12.6vw, 84px); max-width: none; }
  .hero__text > .triad { grid-row: 3; letter-spacing: .16em; font-size: 11px; margin-top: 22px; white-space: nowrap; padding-inline: 8px; }
  .triad span { margin-inline: .35em; }
  .hero__text > .lede { grid-row: 4; margin: 24px auto 0; font-size: 16px; max-width: 22em; }
  .hero__text > .eyebrow, .hero__text > .display, .hero__text > .triad, .hero__text > .lede {
    grid-column: 1 / -1; padding-inline: var(--gutter); text-align: center;
  }
  .hero__text > .offer { grid-row: 5; grid-column: 1 / -1; margin: 22px auto 0; padding-inline: var(--gutter); }
  .offer__row { font-size: 11px; letter-spacing: .12em; padding: 8px 0; }
  .offer__note { font-size: 14px; text-align: center; }
  .hero__photo { grid-column: 1; grid-row: 6 / span 2; margin-top: 28px; align-self: start; }
  .hero__photo img { height: auto; width: 100%; }
  .facts { grid-column: 2; grid-row: 6; margin: 56px 12px 0 0; flex-direction: column; align-items: stretch; padding: 16px 14px; border-radius: 20px; }
  .fact + .fact { margin: 14px 0 0; padding: 14px 0 0; border-left: 0; border-top: 1px solid rgba(20, 20, 20, .28); }
  .hero__cta { grid-column: 1 / -1; grid-row: 8; justify-self: stretch; justify-content: space-between; margin: 4px var(--gutter) 48px; font-size: 11px; letter-spacing: .14em; padding: 14px 22px 14px 24px; border-radius: 22px; text-align: left; }
  .hero__cta-txt { display: grid; gap: 4px; }
  .hero__cta-dot { display: none; }
  .fact { flex-direction: column; gap: 10px; }
  .fact .ico--lg { width: 28px; height: 28px; }
  .fact time, .place { font-size: 16px; }
  .scroll-cue { grid-column: 2; grid-row: 7; align-self: end; margin: 28px 0 64px; padding-right: 14px; column-gap: 10px; row-gap: 16px; }
  .scroll-cue__txt { font-size: 10.5px; letter-spacing: .22em; }
  .scroll-cue .ico--arrow { width: 26px; }
  .curve--hero-a { width: 9vw; left: -3vw; }
  .curve--hero-b { width: 12vw; height: 40vh; }
  .curve--hero-c { width: 9vw; height: 26vh; bottom: 34vh; }

  .idee__grid { grid-template-columns: minmax(0, 1fr); }
  .idee__text { padding-right: var(--gutter); max-width: none; }
  .idee__text .eyebrow { padding-left: 0; }
  .idee .display--xl { font-size: clamp(40px, 11.4vw, 80px); }
  .idee__photo { max-width: 72%; margin: 32px var(--gutter) 56px auto; justify-self: end; }
  .slide__head, .slide__head--rev { grid-template-columns: minmax(0, 1fr); }
  .slide__head--rev .slide__photo { order: 2; }
  .slide__photo { max-width: 72%; margin: 24px 6% 8px auto; }
  .slide__head--rev .slide__photo { margin: 24px auto 8px 6%; }
  .blob--hero-a { width: 64vw; left: -18vw; top: 470px; }
  .blob--hero-b { width: 58vw; left: -22vw; bottom: 40px; }
  .blob--hero-c { width: 30vw; right: -15vw; top: 640px; }
  .blob--foot-a { width: 56vw; bottom: -30vw; }
  .blob--foot-b { width: 40vw; top: -20vw; }
  .reserve { grid-template-columns: minmax(0, 1fr); }
  .slide--reserve .display--xxl { font-size: clamp(42px, 12vw, 96px); }
  .seats { font-size: 11px; }
  .choice__txt strong { font-size: 13px; }
  .choice__txt > span, .choice__price { font-size: 14px; }
  .reserve__where { font-size: 15px; }
  .form__title { font-size: 24px; }
  .field__label { font-size: 12px; }
  .field input { font-size: 16px; }
  .check__txt { font-size: 14px; }
  .form__msg { font-size: 14px; }
  .form__secure { font-size: 12.5px; }
  .curve--reserve-a, .curve--reserve-b { width: 7vw; }
  .merci__title { font-size: clamp(40px, 11.4vw, 84px); }
  .merci .facts { grid-column: auto; grid-row: auto; margin: 32px auto 0; width: 100%; max-width: 320px; text-align: left; }
  .blob--merci-a { width: 64vw; left: -20vw; top: 34vh; }
  .blob--merci-b { width: 60vw; right: -22vw; bottom: -6vh; }
  .curve--idee-a { right: 4vw; width: 50vw; height: 40vh; }
  .curve--idee-b { width: 90vw; height: 18vh; }

  .display--xxl, .slide--apero .display--xxl { font-size: clamp(42px, 12vw, 96px); }
  .slide__head .display--xxl, .slide--apero .slide__head .display--xxl { font-size: clamp(42px, 12vw, 96px); }
  .curve--cours-a, .curve--cours-b, .curve--cours-c, .curve--apero-a, .curve--apero-b { width: 7vw; }
  .curve--idee-a { width: 20vw; height: 30vh; top: 12vh; }
  .leaves { width: 80vw; height: 70%; }
  .curve--prog-a, .curve--prog-b, .curve--accueil-a, .curve--accueil-b, .curve--conf-a, .curve--conf-b { width: 7vw; }
  .fact__sub { font-size: 15px; }
  .timeline__row .chip { font-size: 15px; padding: 8px 18px 7px; }
  .timeline__txt strong { font-size: 15px; }
  .timeline__txt span { font-size: 15px; }
  .ph__label { font-size: 12px; }
}

@media (max-width: 640px) {
  .eyebrow { font-size: 12px; }
  .partners { gap: 10px; }
  .partners__evry { height: 15px; }
  .partners__sendo { height: 42px; }
  .partners__powercube { height: 13px; }
  .partners__x { font-size: 16px; }
  .folio { font-size: 14px; }

  .trio { grid-template-columns: 1fr; gap: 0; }
  .trio li {
    display: grid; grid-template-columns: auto 1fr; column-gap: 20px; align-items: center;
    text-align: left; padding: 18px 0;
  }
  .trio li + li::before { left: 0; right: 0; top: 0; bottom: auto; width: auto; height: 1px; }
  .trio .disc, .trio .disc--lg { grid-row: span 2; width: 84px; height: 84px; margin: 0; }
  .trio .disc .ico { width: 38px; height: 38px; }
  .trio br { display: none; }
  .trio strong { align-self: end; }
  .trio span:not(.disc) { align-self: start; margin-top: 2px; }
  .pack { padding: 34px 20px 26px; border-radius: 26px; }
  .pack__list { text-align: left; }
  .pack__num { font-size: 34px; }
  .pack__foot { flex-direction: column; align-items: stretch; text-align: center; }
  .pack__total span { display: block; margin: 6px 0 0; font-size: 1.8em; }
  .pack__list a { white-space: normal; }

  .duo { grid-template-columns: 1fr; gap: 18px; }
  .duo__item { padding: 0; }
  .duo__item + .duo__item { border-left: 0; }

  .band { grid-template-columns: 1fr; border-radius: 26px; gap: 18px; }
  .band > div { padding-left: 0; border-left: 0; padding-top: 18px; border-top: 1px solid rgba(20, 20, 20, .45); }
  .band__title { font-size: 15px; letter-spacing: .07em; }
  .band__title br { display: none; }
  .band__txt { font-size: 16px; }
  .band .ico--xl { width: 44px; height: 44px; }

  .cta-row { flex-direction: column; align-items: stretch; }
  .pill--lg { padding: 20px 26px; font-size: 13px; letter-spacing: .12em; gap: 16px; }

  .signature p { letter-spacing: .24em; }
  .signature p span { margin-inline: .3em; }
  .foot__meta { letter-spacing: .14em; line-height: 2; }

  .timeline__row {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas: "chip chip chip" "disc txt arrow";
    column-gap: 16px; row-gap: 14px; padding: 22px 0;
  }
  .timeline__row .chip { grid-area: chip; }
  .timeline__row .disc { grid-area: disc; width: 56px; height: 56px; }
  .timeline__row .disc .ico { width: 26px; height: 26px; }
  .timeline__row .timeline__txt { grid-area: txt; }
  .timeline__row .ico--arrow { grid-area: arrow; width: 26px; }

  .form__row { grid-template-columns: 1fr; gap: 20px; }
  .form { border-radius: 24px; }
  .blob--card-a { width: 70%; right: -14%; top: -8%; }
  .blob--card-b { width: 60%; left: -14%; bottom: -8%; }
}
