/* =========================================================================
   L'AFTER PADEL CLUB — Design system partagé
   Un seul fichier pour les 4 pages. Ne pas dupliquer de CSS dans les pages.
   ========================================================================= */

/* ---------- 1. Polices ------------------------------------------------- */
@font-face{
  font-family:"Cooper";
  src:url("../fonts/cooper-black.woff2") format("woff2");
  font-weight:400 900;
  font-style:normal;
  font-display:swap;
}
/* Sora en police variable : un seul fichier couvre Thin → ExtraBold (100-800).
   Plus léger que les 3 fichiers statiques précédents, et débloque le 800. */
@font-face{
  font-family:"Sora";
  src:url("../fonts/sora-var.woff2") format("woff2-variations"),
      url("../fonts/sora-var.woff2") format("woff2");
  font-weight:100 800;
  font-style:normal;
  font-display:swap;
}

/* ---------- 2. Tokens -------------------------------------------------- */
:root{
  /* Couleurs charte */
  --sapin:#013328;
  --sapin-2:#06221d;
  --creme:#f7fbfb;
  --paper:#f6efe2;
  --or:#c7a24b;
  --or2:#e9c86a;
  /* Or foncé : même famille, mais lisible en petit texte sur fond clair
     (5:1 sur --paper, ce que --or ne permet pas). Remplace l'ancien corail. */
  --or-deep:#806018;
  --mint:#dceee9;
  --ink:#09221d;
  --muted:rgba(9,34,29,.72);
  --line:rgba(9,34,29,.14);

  /* Couleurs sur fond sombre */
  --on-dark:rgba(247,251,251,.78);
  --on-dark-soft:rgba(247,251,251,.62);
  --line-dark:rgba(247,251,251,.16);

  /* Échelle typographique — ratio ~1.25, plafonds volontairement bas.
     h1 max 72px (et non 142px), h2 max 44px : la hiérarchie tient sur
     un écran de portable comme sur un 27". */
  --fs-h1:clamp(2.25rem, 1rem + 4vw, 4rem);            /* 36 → 64, calé pour 2 lignes */
  --fs-h2:clamp(1.7rem, 1.2rem + 2.2vw, 2.75rem);      /* 27.2 → 44 */
  --fs-h3:clamp(1.2rem, 1.08rem + .58vw, 1.55rem);     /* 19.2 → 24.8 */
  --fs-h4:clamp(1.05rem, 1rem + .25vw, 1.2rem);        /* 16.8 → 19.2 */
  --fs-lead:clamp(1.0625rem, 1rem + .32vw, 1.1875rem); /* 17 → 19 */
  --fs-body:1rem;                                       /* 16 */
  --fs-sm:.9375rem;                                     /* 15 */
  --fs-xs:.8125rem;                                     /* 13 */
  --fs-eyebrow:.75rem;                                  /* 12 */
  --fs-display:clamp(1.6rem, 1.1rem + 2.2vw, 2.6rem);   /* marquee / signature */

  /* Espacements (base 4) */
  --sp-1:.25rem; --sp-2:.5rem;  --sp-3:.75rem; --sp-4:1rem;
  --sp-5:1.25rem; --sp-6:1.5rem; --sp-8:2rem;  --sp-10:2.5rem;
  --sp-12:3rem;  --sp-16:4rem;
  --section-y:clamp(3.75rem, 6.5vw, 6.5rem);   /* 60 → 104 */
  --gutter:clamp(1rem, 3.5vw, 1.5rem);

  /* Formes */
  --r-sm:10px;
  --r-md:14px;
  --r-lg:20px;
  --r-pill:999px;

  --max:1180px;
  --nav-h:68px;
  --ease:cubic-bezier(.2,.8,.2,1);

  --shadow-sm:0 6px 18px rgba(1,51,40,.08);
  --shadow-md:0 16px 40px rgba(1,51,40,.12);
  --shadow-lg:0 28px 70px rgba(1,51,40,.18);
}

/* ---------- 3. Base ---------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}

html{
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--nav-h) + 24px);
  -webkit-text-size-adjust:100%;
  overflow-x:hidden; /* iOS Safari : body seul ne suffit pas à bloquer le scroll latéral */
}

body{
  margin:0;
  font-family:"Sora",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:var(--fs-body);
  line-height:1.6;
  color:var(--ink);
  background:var(--paper);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

img,svg{display:block;max-width:100%}
img{height:auto}

a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}

:where(a,button,input,select,textarea,summary):focus-visible{
  outline:3px solid var(--or2);
  outline-offset:3px;
  border-radius:4px;
}

.skip-link{
  position:absolute;
  left:var(--sp-4);
  top:-999px;
  z-index:200;
  padding:12px 20px;
  border-radius:var(--r-pill);
  background:var(--or2);
  color:var(--sapin-2);
  font-weight:600;
}
.skip-link:focus{top:var(--sp-4)}

.visually-hidden{
  position:absolute!important;
  width:1px;height:1px;
  margin:-1px;padding:0;border:0;
  clip:rect(0 0 0 0);clip-path:inset(50%);
  overflow:hidden;white-space:nowrap;
}

/* ---------- 4. Layout -------------------------------------------------- */
.wrap{
  width:min(var(--max), 100% - var(--gutter) * 2);
  margin-inline:auto;
}

section{padding-block:var(--section-y)}

.section-dark{
  background:var(--sapin-2);
  color:var(--creme);
}
.section-paper{background:var(--paper)}

/* ---------- 5. Typographie --------------------------------------------- */
h1,h2,h3,h4,h5{
  font-family:"Sora",sans-serif;
  font-weight:700;
  margin:0;
  text-wrap:balance;
}

h1{
  font-size:var(--fs-h1);
  font-weight:800;            /* Sora ExtraBold */
  line-height:1;
  letter-spacing:-.02em;
  text-transform:uppercase;
}
h2{
  font-size:var(--fs-h2);
  font-weight:800;            /* Sora ExtraBold */
  line-height:1.08;
  letter-spacing:-.015em;
  text-transform:uppercase;
}
h3{font-size:var(--fs-h3);line-height:1.2}
h4{font-size:var(--fs-h4);line-height:1.3}

/* Cooper : accents ponctuels uniquement, jamais les gros titres */
.cooper{
  font-family:"Cooper",Georgia,serif;
  font-weight:400;
  text-transform:none;
  letter-spacing:0;
  color:var(--or);
}
.section-dark .cooper,
.garden .cooper,
.cta .cooper{color:var(--or2)}

p{margin:0}

/* Surtitres — signalés par une rangée de perforations (le motif des trous
   d'une raquette de padel), et non par le trait horizontal générique. */
.eyebrow,
.kicker{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:var(--sp-3);
  color:var(--or-deep);
  font-size:var(--fs-eyebrow);
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  line-height:1.4;
}
.eyebrow::before,
.kicker::before{
  content:"";
  flex:0 0 auto;
  width:34px;
  height:9px;
  background-image:radial-gradient(circle at center,
    transparent 0 1.7px, currentColor 1.7px 2.8px, transparent 2.9px);
  background-size:11px 9px;
  background-repeat:repeat-x;
}
.section-dark .eyebrow,
.garden .eyebrow,
.cta .eyebrow{color:var(--or2)}

.kicker{
  margin-bottom:var(--sp-5);
  color:var(--or2);
}

.lead{
  color:var(--muted);
  font-size:var(--fs-lead);
  max-width:56ch;
}
.section-dark .lead,
.garden .lead{color:var(--on-dark)}

.copy-stack{display:grid;gap:var(--sp-4);margin-top:var(--sp-6);max-width:60ch}
.copy-stack p{color:var(--muted);font-size:var(--fs-lead)}
.section-dark .copy-stack p,
.garden .copy-stack p{color:var(--on-dark)}

.section-dark .quote-line,
.garden .quote-line{color:var(--creme);border-left-color:var(--or2)}

.quote-line{
  margin-top:var(--sp-6);
  padding-left:var(--sp-5);
  border-left:3px solid var(--or);
  font-size:var(--fs-lead);
  font-weight:500;
  color:var(--sapin);
  max-width:52ch;
}

.section-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.55fr);
  gap:var(--sp-8);
  align-items:end;
  margin-bottom:var(--sp-10);
}
.section-head--solo{grid-template-columns:1fr;max-width:44ch}
.section-head--center{margin-inline:auto;text-align:center}
.section-head--center .eyebrow{justify-content:center}

/* ---------- 6. Navigation ---------------------------------------------- */
.nav{
  position:fixed;
  inset:14px 0 auto;
  z-index:100;
  pointer-events:none;
}
.nav-inner{
  pointer-events:auto;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--sp-4);
  min-height:var(--nav-h);
  padding:9px 10px 9px 12px;
  border:1px solid var(--line-dark);
  border-radius:var(--r-pill);
  background:rgba(1,51,40,.82);
  -webkit-backdrop-filter:blur(18px);
  backdrop-filter:blur(18px);
  box-shadow:0 14px 40px rgba(1,51,40,.22);
  color:var(--creme);
  transition:background .3s var(--ease), box-shadow .3s var(--ease);
}
.nav.is-scrolled .nav-inner{
  background:rgba(1,51,40,.94);
  box-shadow:0 16px 44px rgba(1,51,40,.3);
}

.brand{
  display:flex;
  align-items:center;
  gap:var(--sp-3);
  min-width:0;
  font-family:"Cooper",Georgia,serif;
  font-size:1.05rem;
  letter-spacing:.01em;
}
.brand img{
  width:44px;height:44px;
  border-radius:50%;
  object-fit:cover;
  flex:0 0 auto;
}
.brand span{white-space:nowrap}

.nav-links{
  display:flex;
  align-items:center;
  gap:2px;
  font-size:var(--fs-xs);
  color:rgba(247,251,251,.8);
}
.nav-links a{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  padding:0 14px;
  border-radius:var(--r-pill);
  transition:background .2s var(--ease), color .2s var(--ease);
}
.nav-links a:hover{background:rgba(247,251,251,.1);color:var(--creme)}
.nav-links a[aria-current="page"]{
  background:rgba(247,251,251,.12);
  color:var(--creme);
  font-weight:500;
}

.nav-cta{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:0 20px;
  border-radius:var(--r-pill);
  background:var(--or2);
  color:var(--sapin-2);
  font-size:var(--fs-xs);
  font-weight:600;
  white-space:nowrap;
  transition:background .2s var(--ease), transform .2s var(--ease);
}
.nav-cta:hover{background:#f5da83;transform:translateY(-1px)}

/* Burger — présent sur les 4 pages, cible tactile 44px */
.burger{
  display:none;
  width:44px;height:44px;
  padding:0;
  border:1px solid var(--line-dark);
  border-radius:50%;
  background:rgba(247,251,251,.06);
  cursor:pointer;
  position:relative;
}
.burger span{
  position:absolute;
  left:50%;
  width:18px;height:2px;
  border-radius:2px;
  background:var(--creme);
  transform:translateX(-50%);
  transition:transform .28s var(--ease), opacity .2s var(--ease);
}
.burger span:nth-child(1){top:16px}
.burger span:nth-child(2){top:21px}
.burger span:nth-child(3){top:26px}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateX(-50%) translateY(5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateX(-50%) translateY(-5px) rotate(-45deg)}

.nav-actions{display:flex;align-items:center;gap:var(--sp-2)}

/* ---------- 7. Boutons ------------------------------------------------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--sp-2);
  min-height:48px;
  padding:0 22px;
  border:1px solid transparent;
  border-radius:var(--r-pill);
  font-size:var(--fs-sm);
  font-weight:600;
  text-align:center;
  cursor:pointer;
  transition:background .2s var(--ease), transform .2s var(--ease), border-color .2s var(--ease);
}
.btn svg{width:18px;height:18px;flex:0 0 auto}
.btn:hover{transform:translateY(-2px)}

.btn-primary{background:var(--or2);color:var(--sapin-2)}
.btn-primary:hover{background:#f5da83}

.btn-ghost{
  border-color:rgba(247,251,251,.28);
  background:rgba(247,251,251,.07);
  color:var(--creme);
}
.btn-ghost:hover{background:rgba(247,251,251,.13)}

.btn-outline{
  border-color:var(--line);
  background:transparent;
  color:var(--ink);
}
.btn-outline:hover{border-color:var(--sapin);background:rgba(1,51,40,.05)}

.actions{
  display:flex;
  flex-wrap:wrap;
  gap:var(--sp-3);
  margin-top:var(--sp-8);
}

/* ---------- 8. Hero accueil -------------------------------------------- */
/* Contenu centré verticalement : caler en bas laissait un grand vide
   sous la barre de navigation. */
.hero{
  position:relative;
  display:grid;
  align-items:center;
  /* On réserve la hauteur des deux bandeaux défilants : ils doivent être
     visibles dès l'arrivée, sans avoir à scroller. */
  min-height:min(calc(100svh - 170px), 700px);
  padding-block:calc(var(--nav-h) + 32px) clamp(2rem,4vw,3rem);
  overflow:hidden;
  background:var(--sapin-2);
  color:var(--creme);
}
.hero-media{position:absolute;inset:0;z-index:0}
.hero-media img{
  width:100%;height:100%;
  object-fit:cover;
  filter:saturate(.95) contrast(1.04);
}
.hero-media::after{
  content:"";
  position:absolute;inset:0;
  background:
    linear-gradient(90deg,rgba(1,51,40,.94),rgba(1,51,40,.72) 52%,rgba(1,51,40,.5)),
    linear-gradient(180deg,rgba(1,51,40,.24),rgba(1,51,40,.86));
}

/* Motif de trous + triangle de raquette (validé) — signature graphique.
   Décor uniquement : jamais au-dessus d'un texte. */
.hero-icon{
  position:absolute;
  right:3%;
  top:calc(var(--nav-h) + 4vh);
  width:min(330px,25vw);
  height:auto;
  opacity:.5;
  transform:rotate(-8deg);
  z-index:1;
  pointer-events:none;
}
.hero-icon circle,.hero-icon path{
  stroke-dasharray:1200;
  stroke-dashoffset:1200;
  animation:draw 1.6s var(--ease) forwards;
}

/* Déclinaison du même motif comme décor de section */
.has-deco{position:relative;overflow:hidden}
.has-deco > .wrap{position:relative;z-index:1}
.deco{
  position:absolute;
  z-index:0;
  width:clamp(180px,22vw,300px);
  opacity:.14;
  pointer-events:none;
  user-select:none;
}
.section-dark .deco,.cta .deco{opacity:.2}
.deco--tr{top:-4%;right:-4%;transform:rotate(12deg)}
.deco--bl{bottom:4%;left:-3%;transform:rotate(-10deg)}
.deco--r{top:50%;right:-6%;transform:translateY(-50%) rotate(8deg)}

/* Le hero ne porte plus que le message : marque, promesse, action. */
.hero-content{position:relative;z-index:2}

/* Coupe maîtrisée : deux lignes en desktop, repli naturel en mobile */
.hero-title .line{display:block}
.hero-title .accent{color:var(--or2)}

.hero-copy{
  margin-top:var(--sp-5);
  max-width:52ch;
  color:var(--on-dark);
  font-size:var(--fs-lead);
}

/* ---------- 9. Hero pages intérieures ---------------------------------- */
.page-hero{
  position:relative;
  display:grid;
  align-items:end;
  min-height:clamp(340px, 52svh, 520px);
  padding-block:calc(var(--nav-h) + 56px) clamp(2.5rem,5vw,3.5rem);
  overflow:hidden;
  background:var(--sapin-2);
  color:var(--creme);
}
.page-hero .hero-media::after{
  background:
    linear-gradient(90deg,rgba(1,51,40,.9),rgba(1,51,40,.6) 60%,rgba(1,51,40,.36)),
    linear-gradient(180deg,rgba(1,51,40,.28),rgba(1,51,40,.82));
}
.page-hero .wrap{position:relative;z-index:2}
.page-hero p{
  margin-top:var(--sp-4);
  max-width:52ch;
  color:var(--on-dark);
  font-size:var(--fs-lead);
}
/* Un seul arc, en accent isolé (règle charte) */
.page-hero .arc-accent{
  position:absolute;
  right:-3%;
  top:18%;
  width:min(300px,34vw);
  opacity:.32;
  z-index:1;
  pointer-events:none;
}

/* ---------- 10. Marquee ------------------------------------------------ */
/* Les bandes sont plus larges que l'écran : la rotation ne laisse
   donc jamais de coin vide sur les bords. */
.marquee{
  position:relative;
  z-index:3;
  width:106%;
  margin-left:-3%;
  overflow:hidden;
  white-space:nowrap;
  background:var(--or2);
  color:var(--sapin-2);
  transform:rotate(-1.2deg);
  margin-top:-18px;
  border-block:1px solid rgba(1,51,40,.14);
}
.marquee.alt{
  margin-top:-4px;
  background:var(--sapin-2);
  color:var(--creme);
  transform:rotate(.9deg);
}
.marquee-track{display:inline-flex;animation:scroll 34s linear infinite}
.marquee.alt .marquee-track{animation-duration:40s;animation-direction:reverse}
.marquee span{
  display:inline-flex;
  align-items:center;
  gap:var(--sp-6);
  padding:12px 22px;
  font-family:"Cooper",Georgia,serif;
  font-size:var(--fs-display);
  line-height:1.2;
}
.marquee.alt span{
  font-family:"Sora",sans-serif;
  font-weight:600;
  font-size:clamp(.875rem,.8rem + .5vw,1.125rem);
  letter-spacing:.12em;
  text-transform:uppercase;
  color:rgba(247,251,251,.86);
}
.marquee span::after{
  content:"";
  width:.26em;height:.26em;
  border-radius:50%;
  background:currentColor;
  opacity:.65;
}

/* ---------- 11. Duo diagonal (coins arrondis, cf. roll-up) ------------- */
/* SVG : le tracé est arrondi et se met à l'échelle sans déformation. */
.duo{
  position:relative;
  width:100%;
}
.duo svg{
  width:100%;
  height:auto;
  display:block;
  overflow:visible;
}
.duo svg{filter:drop-shadow(0 10px 26px rgba(1,51,40,.18))}
.duo .duo-frame{
  fill:none;
  stroke:var(--creme);
  stroke-width:7;
}

.duo-tag{
  position:absolute;
  z-index:3;
  padding:7px 14px;
  border-radius:var(--r-pill);
  background:var(--sapin-2);
  color:var(--creme);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
  box-shadow:var(--shadow-sm);
  white-space:nowrap;
}
/* Les deux étiquettes en bas de la composition : « Le cocktail » en bas à
   gauche (sur la photo haute), « Les membres » en bas à droite (calé sur le
   bas de la photo droite, qui ne descend pas jusqu'au bord dans ce montage
   diagonal). */
.duo-tag--a{left:5%;bottom:5%}
.duo-tag--b{right:5%;bottom:37%}
.section-dark .duo-tag{background:var(--or2);color:var(--sapin-2)}

/* Arc isolé en accent sur le duo */
.duo .arc-accent{
  position:absolute;
  top:0;
  left:-1%;
  width:26%;
  min-width:86px;
  z-index:3;
  pointer-events:none;
}

/* ---------- 12. Blocs 2 colonnes --------------------------------------- */
.split{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.85fr);
  gap:clamp(1.75rem,4vw,3.5rem);
  align-items:center;
}
.split--reverse{grid-template-columns:minmax(0,.85fr) minmax(0,1fr)}

/* ---------- 11 bis. Débordement des compositions photo ------------------
   Agrandir la colonne photo en lui donnant plus de fraction rognerait la
   colonne de texte. On la fait donc déborder vers le bord de page : les
   photos gagnent en taille, le texte garde exactement sa largeur.
   La marge de débordement est l'espace réellement disponible entre le
   conteneur et le bord de l'écran — donc nulle sur petit écran.
   ------------------------------------------------------------------------ */
@media (min-width:961px){
  :root{
    /* Débordement = l'espace RÉELLEMENT disponible entre le conteneur et le
       bord de l'écran, moins une gouttière. Plancher à 0 : quand il n'y a
       pas la place, la photo s'aligne simplement sur le conteneur — elle ne
       se colle jamais au bord ni ne se fait rogner. Plafond 160px pour un
       effet net sur grand écran. */
    --bleed:clamp(0px, calc((100vw - var(--max)) / 2 - var(--gutter)), 160px);
  }
  /* .duo a un width:100% explicite (règle 11, pour le SVG) : une marge
     négative seule n'a aucun effet sur un item de grille de largeur fixe,
     contrairement à .trust-media plus bas qui reste en stretch implicite.
     On agrandit donc .duo directement via width, ancré du côté texte pour
     qu'il déborde seulement vers le bord de page. */
  .split > .duo{width:calc(100% + var(--bleed))}
  .split--reverse > .duo{width:calc(100% + var(--bleed));justify-self:end}

  /* Colonne photo à gauche */
  .trust > .trust-media{margin-left:calc(-1 * var(--bleed))}
}

/* Deux photos de groupe empilées, en format paysage — variante lisible du
   duo diagonal pour la section « club business » (le montage en biais
   rognait trop). Le point focal de data/focus.json s'applique tout seul. */
.pairphoto{
  display:grid;
  gap:var(--sp-4);
}
.pairphoto figure{
  position:relative;
  margin:0;
  border-radius:var(--r-lg);
  overflow:hidden;
  box-shadow:var(--shadow-lg);
  aspect-ratio:16/9;
}
.pairphoto img{display:block;width:100%;height:100%;object-fit:cover}
.pairphoto figcaption{
  position:absolute;
  left:12px;bottom:12px;
  padding:7px 14px;
  border-radius:var(--r-pill);
  background:var(--or2);
  color:var(--sapin-2);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
}

/* Deux photos portrait décalées — pour les sections où une seule image
   manquait de vie. Point focal auto (focus.json). */
.duophoto{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-3);
  align-items:start;
}
.duophoto figure{
  position:relative;
  margin:0;
  border-radius:var(--r-md);
  overflow:hidden;
  box-shadow:var(--shadow-lg);
  aspect-ratio:3/4;
}
.duophoto img{display:block;width:100%;height:100%;object-fit:cover}
.duophoto-b{margin-top:var(--sp-10)}
@media (max-width:600px){
  .duophoto-b{margin-top:0}
}

/* Mosaïque 2×2 : montre les quatre facettes du club d'un coup d'œil
   (Padel · La Garden · Networking · Ladies). Point focal auto (focus.json). */
.quadphoto{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-3);
}
.quadphoto figure{
  position:relative;
  margin:0;
  border-radius:var(--r-md);
  overflow:hidden;
  box-shadow:var(--shadow-md);
  aspect-ratio:1/1;
}
.quadphoto img{display:block;width:100%;height:100%;object-fit:cover}
.quadphoto figcaption{
  position:absolute;
  left:10px;bottom:10px;
  padding:5px 12px;
  border-radius:var(--r-pill);
  background:var(--or2);
  color:var(--sapin-2);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
}

/* ---------- 12 bis. Réassurance « en chiffres » ------------------------- */
.section-mint{background:var(--mint)}

.trust{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,4vw,3.5rem);
  align-items:center;
}
/* Deux photos, même format, empilées — ratio plus court que la normale pour
   ne pas doubler la hauteur du bloc et écraser la section. */
.trust-media{
  position:relative;
  display:grid;
  gap:var(--sp-4);
}
.trust-media figure{
  margin:0;
  border-radius:var(--r-lg);
  overflow:hidden;
  box-shadow:var(--shadow-md);
}
.trust-media img{
  display:block;
  width:100%;
  aspect-ratio:16/7;
  object-fit:cover;
}
.trust-figures{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-4);
  margin-top:var(--sp-8);
}
.figure{
  padding:var(--sp-5);
  border:1px solid rgba(9,34,29,.1);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.6);
}
.figure strong{
  display:block;
  color:var(--sapin);
  font-size:clamp(1.9rem,1.4rem + 1.6vw,2.5rem);
  font-weight:600;
  line-height:1;
  letter-spacing:-.02em;
}
.figure span{
  display:block;
  margin-top:var(--sp-2);
  color:var(--muted);
  font-size:var(--fs-sm);
  line-height:1.3;
}
/* Tuile mise en avant : occupe toute la largeur et inverse le contraste */
.figure--accent{
  grid-column:1 / -1;
  display:flex;
  align-items:baseline;
  gap:var(--sp-4);
  border-color:transparent;
  background:var(--sapin);
  color:var(--creme);
}
.figure--accent strong{color:var(--or2)}
.figure--accent span{margin-top:0;color:var(--on-dark)}

.trust-note{
  margin-top:var(--sp-6);
  color:var(--muted);
  font-size:var(--fs-sm);
}

/* ---------- 12 quater. Photo portrait légendée -------------------------- */
.portrait-media{
  position:relative;
  margin:0;
  border-radius:var(--r-lg);
  overflow:hidden;
  box-shadow:var(--shadow-md);
}
.portrait-media img{
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.portrait-media figcaption{
  position:absolute;
  left:var(--sp-5);
  bottom:var(--sp-5);
  padding:9px 16px;
  border-radius:var(--r-pill);
  background:rgba(6,34,29,.82);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  color:var(--creme);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
}

/* ---------- 12 ter. Signature de marque -------------------------------- */
.signature{
  background:var(--sapin);
  color:var(--creme);
  text-align:center;
}
.signature .wrap{display:grid;gap:var(--sp-2);max-width:min(100%,52rem)}
.signature p{
  font-size:var(--fs-display);
  font-weight:700;
  line-height:1.25;
  letter-spacing:-.01em;
}
.signature p.cooper{font-weight:400;color:var(--or2)}

/* ---------- 12 quater bis. Ils font L'After / témoignages / séance d'essai
   Trois blocs alimentés par l'admin (data/*.json). Ils restent masqués tant
   qu'aucun contenu n'a été saisi : une section vide fait plus de mal qu'une
   section absente.
   ------------------------------------------------------------------------ */
/* Bandeau défilant : une vingtaine de logos ne tiendraient pas en grille
   sans manger la moitié de la page. Les dégradés latéraux évitent que les
   vignettes soient tranchées net au bord de l'écran. */
.logos{
  position:relative;
  overflow:hidden;
  width:106%;
  margin-left:-3%;
  padding-block:var(--sp-2);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
}
.logos-track{
  display:flex;
  gap:var(--sp-4);
  width:max-content;
  animation:defile var(--defilement,40s) linear infinite;
}
.logos:hover .logos-track,
.logos:focus-within .logos-track{animation-play-state:paused}
@keyframes defile{
  from{transform:translateX(0)}
  /* La piste est dupliquée : -50% ramène exactement au point de départ */
  to{transform:translateX(-50%)}
}
.logo-item{
  flex:0 0 auto;
  width:184px;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:96px;
  padding:var(--sp-4) var(--sp-5);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:#fff;
  text-align:center;
}
.logo-item img{
  max-width:100%;
  max-height:56px;
  width:auto;
  object-fit:contain;
  /* Pas de désaturation : plusieurs logos (AXA, La Dépêche) sont des pavés
     de couleur pleine, que le noir et blanc transformerait en blocs gris.
     Ces marques sont l'argument de preuve — on les montre telles quelles. */
  transition:transform .3s var(--ease);
}
.logo-item:hover img{transform:scale(1.04)}
.logo-item span{
  color:var(--sapin);
  font-weight:600;
  font-size:var(--fs-sm);
  line-height:1.3;
}

/* Témoignages — carrousel horizontal, un avis à la fois. Texte long à
   gauche compensé par un bloc auteur/guillemet vertical à droite. */
.tmoins{
  position:relative;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:var(--sp-4);
}
.tmoins-viewport{overflow:hidden}
.tmoins-track{display:flex;transition:transform .5s var(--ease)}
.tmoin{
  flex:0 0 100%;
  display:grid;
  grid-template-columns:minmax(0,.32fr) minmax(0,1fr);
  gap:var(--sp-8);
  align-items:start;
  padding:clamp(1.5rem,4vw,2.75rem);
  border:1px solid var(--line-dark);
  border-radius:var(--r-lg);
  background:rgba(247,251,251,.045);
}
.tmoin-aside{
  display:flex;
  flex-direction:column;
  gap:var(--sp-4);
}
.tmoin-mark{
  font-family:"Cooper",Georgia,serif;
  font-size:clamp(3.5rem,6vw,5.5rem);
  line-height:.7;
  color:var(--or2);
}
.tmoin-photo{
  width:88px;height:88px;
  border-radius:50%;
  object-fit:cover;
}
.tmoin-who strong{display:block;color:var(--creme);font-size:var(--fs-h4);line-height:1.2}
.tmoin-who span{display:block;margin-top:4px;color:var(--or2);font-size:var(--fs-sm);font-weight:600}
.tmoin-quote{
  margin:0;
  color:var(--on-dark);
  font-size:var(--fs-lead);
  line-height:1.65;
  white-space:pre-line;
}
.tmoin-quote::before{content:"« "}
.tmoin-quote::after{content:" »"}
.tmoins-arrow{
  flex:0 0 auto;
  width:44px;height:44px;
  display:grid;place-items:center;
  border:1px solid var(--line-dark);
  border-radius:50%;
  background:transparent;
  color:var(--creme);
  font-size:1.5rem;line-height:1;
  cursor:pointer;
  transition:background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.tmoins-arrow:hover{background:var(--or2);color:var(--sapin-2);border-color:var(--or2)}
.tmoins-dots{
  grid-column:1 / -1;
  display:flex;justify-content:center;
  gap:var(--sp-2);
  margin-top:var(--sp-6);
}
.tmoins-dot{
  width:9px;height:9px;padding:0;
  border:0;border-radius:50%;
  background:rgba(247,251,251,.25);
  cursor:pointer;
  transition:background .2s var(--ease), transform .2s var(--ease);
}
.tmoins-dot.is-active{background:var(--or2);transform:scale(1.3)}

@media (max-width:760px){
  .tmoins{grid-template-columns:1fr}
  .tmoins-arrow{display:none}
  .tmoin{grid-template-columns:1fr;gap:var(--sp-5)}
  .tmoin-aside{flex-direction:row;align-items:center;gap:var(--sp-4)}
  .tmoin-mark{font-size:3rem}
}

/* Séance d'essai : un simple sélecteur de mois, pas de liste de dates.
   Les dates précises ne sont jamais publiques (groupes, concurrence) —
   le visiteur choisit un mois, le placement se fait au moment du contact. */
.essai-reserve{
  max-width:640px;
  padding:var(--sp-6);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.6);
}
.essai-row{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:var(--sp-3) var(--sp-4);
}
.essai-row label{
  flex:1 1 100%;
  color:var(--ink);
  font-size:var(--fs-sm);
  font-weight:600;
}
.essai-row select{
  flex:1 1 12rem;
  min-height:48px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:var(--r-sm);
  background:#fff;
  color:var(--ink);
  font:inherit;
  font-size:16px;              /* 16px = pas de zoom auto sur iOS */
}
.essai-row select:focus{
  border-color:var(--or);
  outline:2px solid rgba(199,162,75,.35);
  outline-offset:0;
}
.essai-row .btn{flex:0 0 auto}

/* ---------- 12 quinquies. Une année avec L'After ------------------------
   Le contenu de l'adhésion présenté comme un tout : un dirigeant n'achète
   pas onze soirées de padel, il achète une année dans la communauté.
   ------------------------------------------------------------------------ */
.year{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--sp-4);
}
.year-item{
  display:flex;
  gap:var(--sp-4);
  padding:var(--sp-6);
  border:1px solid var(--line-dark);
  border-radius:var(--r-md);
  background:rgba(247,251,251,.05);
}
.year-item .ic{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;height:44px;
  border-radius:50%;
  background:rgba(199,162,75,.16);
  color:var(--or2);
}
.year-item .ic svg{width:22px;height:22px}
.year-item h3{margin-bottom:var(--sp-1);font-size:var(--fs-h4)}
.year-item p{color:var(--on-dark);font-size:var(--fs-sm)}

/* Bandeau prix : la somme de ce qui précède */
.offer-band{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:var(--sp-6);
  margin-top:var(--sp-8);
  padding:var(--sp-8) clamp(1.5rem,4vw,3rem);
  border-radius:var(--r-lg);
  background:linear-gradient(120deg,var(--sapin),#0a4436);
  border:1px solid rgba(233,200,106,.3);
}
.offer-band .amount{
  font-size:clamp(2.4rem,1.6rem + 3vw,3.6rem);
  font-weight:800;
  line-height:1;
  letter-spacing:-.02em;
  color:var(--or2);
}
.offer-band .amount small{
  font-size:.35em;
  font-weight:600;
  letter-spacing:.04em;
  margin-left:.35em;
  color:var(--creme);
}
.offer-band .offer-note{
  margin-top:var(--sp-2);
  color:var(--on-dark);
  font-size:var(--fs-sm);
}
.offer-band .actions{margin-top:0}

/* ---------- 12 sexies. La Garden ---------------------------------------- */
.garden{
  position:relative;
  overflow:hidden;
  background:var(--sapin-2);
  color:var(--creme);
}
.garden-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.9fr);
  gap:clamp(2rem,4vw,3.5rem);
  align-items:center;
}
/* Mosaïque : la première photo occupe toute la largeur, les suivantes se
   partagent la ligne du dessous. Le rendu tient avec 2, 3 ou 4 photos. */
.garden-media{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-3);
}
.garden-media figure{
  position:relative;
  margin:0;
  border-radius:var(--r-md);
  overflow:hidden;
  box-shadow:var(--shadow-lg);
}
.garden-media figure:first-child{
  grid-column:1 / -1;
  border-radius:var(--r-lg);
}
.garden-media img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}
.garden-media figure:first-child img{aspect-ratio:16/9}
.garden-media figcaption{
  position:absolute;
  left:10px;bottom:10px;
  padding:5px 12px;
  border-radius:var(--r-pill);
  background:rgba(6,34,29,.82);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  color:var(--creme);
  font-size:var(--fs-xs);
  font-weight:600;
}

/* ---------- 12 octies. Les associés, un par un --------------------------
   Cinq cartes : photo carrée, nom, rôle, une phrase. Une rangée nette sur
   desktop, dégradé propre en 3-2 puis 2 puis 1 sur écrans plus petits.
   ------------------------------------------------------------------------ */
.associes{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:var(--sp-5);
}
@media (min-width:1080px){
  .associes{grid-template-columns:repeat(5,1fr)}
}
.associe{
  display:flex;
  flex-direction:column;
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:#fff;
  overflow:hidden;
  box-shadow:var(--shadow-sm);
  transition:transform .25s var(--ease), box-shadow .25s var(--ease);
}
.associe:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.associe-photo img{
  display:block;
  width:100%;
  aspect-ratio:1/1;
  object-fit:cover;
}
.associe-corps{
  display:flex;
  flex-direction:column;
  gap:3px;
  padding:var(--sp-4) var(--sp-4) var(--sp-5);
}
.associe h3{font-size:var(--fs-h4);font-weight:700;line-height:1.2}
.associe-role{
  color:var(--or-deep);
  font-size:.6875rem;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.associe-texte{
  margin-top:var(--sp-2);
  color:var(--muted);
  font-size:var(--fs-sm);
  line-height:1.5;
  display:-webkit-box;
  -webkit-line-clamp:4;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.garden-tag{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:7px 16px;
  margin-bottom:var(--sp-4);
  border-radius:var(--r-pill);
  border:1px solid rgba(233,200,106,.4);
  background:rgba(233,200,106,.12);
  color:var(--or2);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.1em;
  text-transform:uppercase;
}

/* ---------- 12 septies. Points de conversion -------------------------------
   Un bandeau CTA à mi-page (entre le hero et l'offre) et la section de
   conversion finale, qui porte le sélecteur d'essai sur fond sombre.
   ------------------------------------------------------------------------ */
.cta-strip{
  background:var(--sapin);
  color:var(--creme);
  padding-block:var(--sp-10);
}
.cta-strip .wrap{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:var(--sp-5) var(--sp-8);
}
.cta-strip p{
  color:var(--creme);
  font-size:var(--fs-lead);
  font-weight:500;
  max-width:46ch;
}
.cta-strip strong{color:var(--or2);font-weight:700}
.cta-strip .btn{flex:0 0 auto}

/* Variante sombre du sélecteur d'essai (section de conversion finale) */
.essai-reserve--dark{
  margin-top:var(--sp-8);
  background:rgba(247,251,251,.06);
  border-color:var(--line-dark);
}
.essai-reserve--dark .essai-row label{color:var(--creme)}

.cta--convert .cta-alt{
  margin-top:var(--sp-6);
  color:var(--on-dark);
  font-size:var(--fs-sm);
}
.cta--convert .cta-alt a{
  color:var(--or2);
  font-weight:600;
  text-decoration:underline;
  text-underline-offset:3px;
}
.cta--convert .cta-alt a:hover{color:var(--creme)}

/* ---------- 13. Étapes / raisons / événements -------------------------- */
.steps{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--sp-4);
}
.step{
  display:flex;
  flex-direction:column;
  border:1px solid var(--line-dark);
  border-radius:var(--r-md);
  background:rgba(247,251,251,.05);
  overflow:hidden;
}
.step-media{position:relative}
.step-media img{
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.step-media::after{
  content:"";
  position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(6,34,29,.85));
}
.step .num{
  position:absolute;
  z-index:2;
  left:var(--sp-5);
  bottom:var(--sp-4);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:42px;height:42px;
  border-radius:50%;
  border:1px solid rgba(233,200,106,.4);
  background:rgba(6,34,29,.8);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  color:var(--or2);
  font-size:var(--fs-sm);
  font-weight:600;
}
.step-body{padding:var(--sp-6)}
.step h3{margin-bottom:var(--sp-2)}
.step p{color:var(--on-dark);font-size:var(--fs-sm)}

.reasons{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-5);
}
.reason{
  padding:var(--sp-8);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.55);
}
.reason:nth-child(2){background:var(--mint)}
.reason h3{margin-bottom:var(--sp-5)}
.reason ul{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-3)}
.reason li{display:flex;gap:var(--sp-3);color:var(--muted);font-size:var(--fs-sm)}
.reason li::before{
  content:"";
  flex:0 0 auto;
  width:7px;height:7px;
  margin-top:.6em;
  border-radius:50%;
  background:var(--or);
}

.events{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--sp-4);
}
.event{
  position:relative;                 /* l'image est en absolu : sans ça,
                                        elle poussait le texte hors carte */
  display:flex;
  align-items:flex-end;
  min-height:320px;
  padding:var(--sp-6);
  border-radius:var(--r-md);
  overflow:hidden;
  color:var(--creme);
  isolation:isolate;
}
.event > img{
  position:absolute;
  inset:0;
  z-index:-2;
  width:100%;height:100%;
  object-fit:cover;
}
.event::after{
  content:"";
  position:absolute;inset:0;
  z-index:-1;
  background:linear-gradient(180deg,rgba(1,51,40,.1) 28%,rgba(1,51,40,.92));
}
.event-body{position:relative}
.event .badge{
  display:inline-block;
  margin-bottom:var(--sp-3);
  padding:5px 12px;
  border-radius:var(--r-pill);
  background:var(--or2);
  color:var(--sapin-2);
  font-size:var(--fs-xs);
  font-weight:600;
}
.event h3{margin-bottom:var(--sp-2)}
.event p{color:var(--on-dark);font-size:var(--fs-sm)}

/* ---------- 14. Valeurs / galerie / bandeaux (Qui sommes-nous) --------- */
.values{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--sp-5);
}
.value{
  padding:var(--sp-8);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.55);
}
.value .vicon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:52px;height:52px;
  margin-bottom:var(--sp-5);
  border-radius:50%;
  background:rgba(199,162,75,.18);
  color:var(--sapin);
}
.value .vicon svg{width:26px;height:26px}
.value h3{margin-bottom:var(--sp-2)}
.value p{color:var(--muted);font-size:var(--fs-sm)}

.statbar{background:var(--sapin);color:var(--creme);padding-block:clamp(2rem,4vw,3rem)}
.statbar .grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--sp-5);
}
.statbar .cell{text-align:center}
.statbar strong{
  display:block;
  color:var(--or2);
  font-size:clamp(1.8rem,1.2rem + 2vw,2.75rem);
  font-weight:600;
  line-height:1;
}
.statbar span{
  display:block;
  margin-top:var(--sp-2);
  color:var(--on-dark-soft);
  font-size:var(--fs-sm);
}

.photo-band{
  position:relative;
  display:grid;
  align-items:center;
  min-height:clamp(260px,36svh,400px);
  overflow:hidden;
  color:var(--creme);
}
.photo-band > img{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
}
.photo-band::after{
  content:"";
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(1,51,40,.9),rgba(1,51,40,.55));
}
.photo-band .wrap{position:relative;z-index:2}

.gallery{
  display:grid;
  grid-auto-flow:dense;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-auto-rows:180px;
  gap:var(--sp-3);
}
.gallery figure{margin:0;border-radius:var(--r-md);overflow:hidden}
.gallery img{width:100%;height:100%;object-fit:cover}
.gallery .big{grid-column:span 2;grid-row:span 2}
.gallery .wide{grid-column:span 2}
.gallery [hidden]{display:none}

/* Puces de filtre thématique au-dessus de la galerie « Le Club » */
.gallery-filters{
  display:flex;
  flex-wrap:wrap;
  gap:var(--sp-2);
  margin-bottom:var(--sp-6);
}
.gallery-filters:empty{display:none}
.gallery-chip{
  padding:8px 16px;
  border:1px solid var(--line);
  border-radius:var(--r-pill);
  background:#fff;
  color:var(--muted);
  font-size:var(--fs-sm);
  font-weight:600;
  cursor:pointer;
  transition:background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.gallery-chip:hover{border-color:var(--sapin);color:var(--sapin)}
.gallery-chip.is-active{background:var(--sapin);border-color:var(--sapin);color:var(--creme)}

/* Cartes chiffres glissées dans la galerie « Le Club » : une seule colonne
   (comme une vignette portrait) pour qu'elles se répartissent naturellement
   dans la mosaïque, à gauche comme à droite — pas empilées d'un seul côté. */
.stat-tile{
  grid-column:var(--stat-col, auto);
  grid-row:var(--stat-row, auto);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:var(--sp-3);
  background:var(--sapin-2);
  color:var(--creme);
  text-align:center;
}
.stat-tile strong{
  font-family:"Sora",sans-serif;
  font-size:clamp(1.7rem,1.2rem + 1.8vw,2.4rem);
  font-weight:800;
  line-height:1;
  color:var(--or2);
}
.stat-tile span{
  font-size:var(--fs-xs);
  line-height:1.35;
  color:var(--on-dark);
  max-width:22ch;
}
@media (max-width:600px){
  .stat-tile{grid-column:1 / -1;grid-row:auto;min-height:120px}
}

/* ---------- 15. Tarifs -------------------------------------------------- */
.pricing{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr);
  gap:var(--sp-6);
  align-items:start;
}
.price-card{
  position:relative;
  padding:clamp(1.75rem,3.5vw,2.75rem);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  background:var(--sapin);
  color:var(--creme);
  overflow:hidden;
  box-shadow:var(--shadow-md);
}
.price-card .arc-accent{
  position:absolute;
  right:-6%;bottom:-12%;
  width:52%;
  opacity:.16;
  pointer-events:none;
}
.price-tag{
  display:inline-flex;
  align-items:center;
  gap:var(--sp-2);
  padding:6px 14px;
  border-radius:var(--r-pill);
  background:rgba(233,200,106,.16);
  color:var(--or2);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.price-tag svg{width:18px;height:18px}
.amount{
  position:relative;
  margin:var(--sp-5) 0 var(--sp-1);
  font-size:clamp(3rem,2rem + 4vw,4.5rem);
  font-weight:600;
  line-height:1;
  letter-spacing:-.02em;
}
.amount small{font-size:.28em;font-weight:500;margin-left:.2em;letter-spacing:0}
.price-note{position:relative;color:var(--on-dark-soft);font-size:var(--fs-sm)}

.incl{
  position:relative;
  margin:var(--sp-8) 0 0;
  padding:0;
  list-style:none;
  display:grid;
  gap:var(--sp-4);
}
.incl li{display:flex;gap:var(--sp-3);align-items:flex-start;color:var(--on-dark)}
.incl .ic{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;height:38px;
  border-radius:50%;
  background:rgba(233,200,106,.14);
  color:var(--or2);
}
.incl .ic svg{width:21px;height:21px}
.incl b{font-weight:600;color:var(--creme)}

.price-side{display:grid;gap:var(--sp-5)}
.side-card{
  padding:clamp(1.5rem,3vw,2rem);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  background:rgba(255,255,255,.6);
}
.side-card.is-mint{background:var(--mint)}
.side-card .lbl{
  display:inline-flex;
  align-items:center;
  gap:var(--sp-2);
  color:var(--sapin);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.side-card .lbl svg{width:19px;height:19px}
.side-card .amount{
  margin:var(--sp-3) 0 var(--sp-2);
  color:var(--sapin);
  font-size:clamp(2.25rem,1.8rem + 2vw,3rem);
}
.side-card p{color:var(--muted);font-size:var(--fs-sm);margin-bottom:var(--sp-5)}
.side-card h4{margin-bottom:var(--sp-2)}
.side-card .ic-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:42px;height:42px;
  margin-bottom:var(--sp-4);
  border-radius:50%;
  background:rgba(1,51,40,.08);
  color:var(--sapin);
}
.side-card .ic-badge svg{width:20px;height:20px}

.faq{display:grid;gap:var(--sp-3);max-width:70ch;margin-inline:auto}
.faq details{
  border:1px solid var(--line);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.6);
  overflow:hidden;
}
.faq summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--sp-4);
  min-height:56px;
  padding:var(--sp-4) var(--sp-5);
  font-weight:600;
  cursor:pointer;
  list-style:none;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"+";
  flex:0 0 auto;
  color:var(--or);
  font-size:1.35rem;
  line-height:1;
  transition:transform .2s var(--ease);
}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .answer{padding:0 var(--sp-5) var(--sp-5);color:var(--muted);font-size:var(--fs-sm)}

/* ---------- 16. Contact ------------------------------------------------ */
.contact-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,4vw,3.5rem);
  align-items:start;
}
.info-list{display:grid;gap:var(--sp-5);margin-top:var(--sp-6)}
.info-item{display:flex;gap:var(--sp-4);align-items:flex-start}
.info-item .ic{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;height:44px;
  border-radius:50%;
  background:rgba(1,51,40,.07);
  color:var(--sapin);
}
.info-item .ic svg{width:20px;height:20px}
.info-item strong{display:block;font-size:var(--fs-sm);font-weight:600}
.info-item span,.info-item a{color:var(--muted);font-size:var(--fs-sm)}
.info-item a:hover{color:var(--sapin);text-decoration:underline}

.form{
  padding:clamp(1.5rem,3.5vw,2.5rem);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  background:rgba(255,255,255,.7);
  box-shadow:var(--shadow-sm);
}
.form h2{margin-bottom:var(--sp-2)}
.form .fsub{color:var(--muted);font-size:var(--fs-sm);margin-bottom:var(--sp-6)}
.field{display:grid;gap:6px;margin-bottom:var(--sp-4)}
.field label{font-size:var(--fs-sm);font-weight:500}
.field .hint{font-size:var(--fs-xs);color:var(--muted)}
.field input,.field select,.field textarea{
  width:100%;
  min-height:48px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:var(--r-sm);
  background:#fff;
  color:var(--ink);
  font:inherit;
  font-size:16px;              /* 16px = pas de zoom auto sur iOS */
}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--or);
  outline:2px solid rgba(199,162,75,.35);
  outline-offset:0;
}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
.form .btn{width:100%;margin-top:var(--sp-2)}
.rgpd{margin-top:var(--sp-4);color:var(--muted);font-size:var(--fs-xs)}
.form-status{
  margin-top:var(--sp-4);
  padding:12px 14px;
  border-radius:var(--r-sm);
  background:var(--mint);
  color:var(--sapin);
  font-size:var(--fs-sm);
}
.form-status:empty{display:none}

/* Carte : chargée au clic (RGPD) */
.map{
  position:relative;
  margin-top:var(--sp-6);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  overflow:hidden;
  background:var(--mint);
}
.map-placeholder{
  display:grid;
  place-items:center;
  gap:var(--sp-4);
  padding:var(--sp-10) var(--sp-5);
  text-align:center;
}
.map-placeholder p{color:var(--muted);font-size:var(--fs-sm);max-width:40ch}
.map iframe{display:block;width:100%;height:340px;border:0}

/* ---------- 17. CTA final ---------------------------------------------- */
.cta{
  position:relative;
  overflow:hidden;
  padding-block:var(--section-y);
  background:var(--sapin);
  color:var(--creme);
}
.cta::before{
  content:"";
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 16% 34%,rgba(233,200,106,.2),transparent 32%),
    radial-gradient(circle at 84% 14%,rgba(199,162,75,.3),transparent 36%);
}
.cta .wrap{position:relative;z-index:2}
.cta h2{max-width:18ch}
.cta p{margin-top:var(--sp-5);max-width:52ch;color:var(--on-dark);font-size:var(--fs-lead)}

/* ---------- 18. Footer -------------------------------------------------- */
.footer{
  padding:clamp(2.5rem,5vw,3.5rem) 0 var(--sp-8);
  background:var(--sapin-2);
  color:var(--on-dark-soft);
  font-size:var(--fs-sm);
}
.footer-grid{
  display:grid;
  grid-template-columns:1.3fr 1fr 1fr;
  gap:var(--sp-8);
  padding-bottom:var(--sp-8);
  border-bottom:1px solid var(--line-dark);
}
.fbrand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.fbrand img{width:48px;height:48px;border-radius:50%}
.fbrand span{font-family:"Cooper",Georgia,serif;font-size:1.15rem;color:var(--creme)}
.footer p{max-width:36ch}
.footer h2{
  margin-bottom:var(--sp-4);
  color:var(--or2);
  font-size:var(--fs-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
}
.footer ul{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-1)}
.footer li a{
  display:inline-flex;
  align-items:center;
  gap:var(--sp-2);
  min-height:36px;
  color:rgba(247,251,251,.8);
}
.footer li a:hover{color:var(--or2)}
.footer li a svg{width:16px;height:16px;flex:0 0 auto}
.footer-bottom{
  display:flex;
  flex-wrap:wrap;
  gap:var(--sp-4);
  justify-content:space-between;
  align-items:center;
  padding-top:var(--sp-6);
  font-size:var(--fs-xs);
  color:rgba(247,251,251,.5);
}
.footer-bottom a{display:inline-flex;align-items:center;gap:6px;min-height:36px}
.footer-bottom a:hover{color:var(--or2)}

/* ---------- 19. Animations --------------------------------------------- */
.reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .65s var(--ease), transform .65s var(--ease);
}
.reveal.is-in{opacity:1;transform:none}

@keyframes draw{to{stroke-dashoffset:0}}
@keyframes scroll{to{transform:translateX(-50%)}}

/* ---------- 18 bis. Hero « photos en lévitation » (page Le Club) --------- */
.float-hero{
  position:relative;
  display:grid;
  place-items:center;
  min-height:min(100svh,880px);
  padding-block:calc(var(--nav-h) + 48px) clamp(3rem,6vw,4.5rem);
  overflow:hidden;
  background:var(--sapin-2);
  color:var(--creme);
  text-align:center;
}
/* Voile radial : garantit la lisibilité du titre par-dessus les photos */
.float-hero::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  background:radial-gradient(ellipse 46% 52% at 50% 50%,
    rgba(6,34,29,.94) 38%, rgba(6,34,29,.72) 62%, transparent 82%);
  pointer-events:none;
}

.float-stage{position:absolute;inset:0;z-index:0;pointer-events:none}

.float-item{
  position:absolute;
  /* Couche 1 : parallaxe pilotée au pointeur (JS) */
  transform:translate3d(calc(var(--px,0) * 1px), calc(var(--py,0) * 1px), 0);
  transition:transform .5s cubic-bezier(.2,.8,.2,1);
}
.float-item img{
  width:100%;
  aspect-ratio:var(--ar,3/4);
  object-fit:cover;
  border-radius:var(--r-md);
  box-shadow:var(--shadow-lg);
  opacity:.9;
  /* Couche 2 : lévitation continue, indépendante de la parallaxe */
  animation:levitate var(--dur,9s) ease-in-out var(--delay,0s) infinite alternate;
  will-change:transform;
}
@keyframes levitate{
  from{transform:translate3d(0,0,0) rotate(var(--rot,0deg))}
  to{transform:translate3d(0,var(--travel,-24px),0) rotate(var(--rot2,0deg))}
}

.float-item.f1{top:9%;left:3%;width:15%;--ar:3/4;--dur:8s;--rot:-4deg;--rot2:-1deg;--depth:1.4}
.float-item.f2{top:5%;left:73%;width:14%;--ar:4/3;--dur:11s;--delay:-2s;--travel:20px;--rot:3deg;--rot2:0deg;--depth:1}
.float-item.f3{top:38%;left:14%;width:13%;--ar:4/3;--dur:10s;--delay:-4s;--travel:18px;--rot:2deg;--rot2:5deg;--depth:.7}
.float-item.f4{top:27%;left:78%;width:15%;--ar:3/4;--dur:9.5s;--delay:-1s;--rot:4deg;--rot2:1deg;--depth:1.6}
.float-item.f5{bottom:7%;left:14%;width:14%;--ar:4/3;--dur:12s;--delay:-3s;--travel:22px;--rot:-3deg;--rot2:0deg;--depth:1.1}
.float-item.f6{bottom:6%;left:71%;width:16%;--ar:16/10;--dur:8.5s;--delay:-5s;--rot:-2deg;--rot2:2deg;--depth:1.5}
.float-item.f7{top:60%;left:0%;width:11%;--ar:3/4;--dur:13s;--delay:-6s;--travel:16px;--rot:5deg;--rot2:2deg;--depth:.6}
.float-item.f8{top:63%;left:88%;width:11%;--ar:4/3;--dur:10.5s;--delay:-2.5s;--travel:-18px;--rot:-5deg;--rot2:-2deg;--depth:.8}
.float-item.f9{top:0%;left:42%;width:9%;--ar:4/3;--dur:9s;--delay:-1.5s;--travel:14px;--rot:-3deg;--rot2:1deg;--depth:.9}
.float-item.f10{bottom:0%;left:44%;width:9%;--ar:3/4;--dur:11.5s;--delay:-4.5s;--travel:-16px;--rot:4deg;--rot2:-1deg;--depth:1}
.float-item.f11{top:44%;left:0%;width:10%;--ar:4/3;--dur:10s;--delay:-3.5s;--travel:18px;--rot:-2deg;--rot2:3deg;--depth:.7}
.float-item.f12{top:47%;left:89%;width:10%;--ar:3/4;--dur:12.5s;--delay:-5.5s;--travel:-20px;--rot:3deg;--rot2:-2deg;--depth:1.2}

.float-content{position:relative;z-index:2}
.float-content .kicker{justify-content:center}
.float-content h1{margin-bottom:var(--sp-5)}
.float-content > p{
  max-width:46ch;
  margin:0 auto var(--sp-8);
  color:var(--on-dark);
  font-size:var(--fs-lead);
}

/* Apparition décalée des vignettes de galerie */
.gallery--stagger figure{
  opacity:0;
  transform:translateY(20px) scale(.98);
  transition:opacity .7s var(--ease), transform .7s var(--ease);
}
.gallery--stagger.is-in figure{
  opacity:1;
  transform:none;
  transition-delay:calc(var(--i,0) * 55ms);
}
.gallery figure img{transition:transform .7s var(--ease)}
.gallery figure:hover img{transform:scale(1.06)}

/* États du message de retour du formulaire */
.form-status.is-ok{
  padding:var(--sp-4);
  border-radius:var(--r-md);
  background:var(--mint);
  color:var(--sapin);
  font-weight:500;
}
.form-status.is-error{
  padding:var(--sp-4);
  border-radius:var(--r-md);
  border:1px solid rgba(200,60,40,.3);
  background:rgba(200,60,40,.08);
  color:#8c2f1d;
  font-weight:500;
}

/* ---------- 19. Pages légales ------------------------------------------ */
.page-hero--plain{
  min-height:0;
  padding-block:calc(var(--nav-h) + clamp(3rem,7vw,5rem)) clamp(2.5rem,5vw,3.5rem);
  background:var(--sapin-2);
}
.page-hero--plain::after{display:none}


.legal{max-width:74ch}
.legal h2{
  margin-top:var(--sp-12);
  margin-bottom:var(--sp-4);
  font-size:var(--fs-h3);
  text-transform:none;
  letter-spacing:-.01em;
}
.legal h2:first-child{margin-top:0}
.legal h3{
  margin-top:var(--sp-6);
  margin-bottom:var(--sp-2);
  font-size:var(--fs-h4);
}
.legal p,
.legal li{color:var(--muted);font-size:var(--fs-body)}
.legal p + p{margin-top:var(--sp-4)}
.legal ul{margin:var(--sp-4) 0 0;padding-left:1.15rem;display:grid;gap:var(--sp-2)}
.legal a{color:var(--sapin);font-weight:500;text-decoration:underline;text-underline-offset:3px}
.legal dl{
  margin:var(--sp-5) 0 0;
  display:grid;
  grid-template-columns:minmax(0,15rem) minmax(0,1fr);
  gap:var(--sp-3) var(--sp-6);
  align-items:baseline;
}
.legal dl > *{padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}
.legal dt{font-weight:600;color:var(--ink)}
.legal dd{margin:0;color:var(--muted)}

/* Champ juridique restant à renseigner par le client */
.legal mark{
  padding:2px 8px;
  border-radius:var(--r-sm);
  background:rgba(233,200,106,.35);
  color:var(--ink);
  font-weight:600;
}

/* ---------- 19 bis. Bandeau de consentement ----------------------------- */
/* Carte compacte ancrée en bas à gauche : elle ne masque plus les bandeaux
   défilants du bas de hero, contrairement à une barre pleine largeur. */
.cookie-banner{
  position:fixed;
  z-index:300;
  left:var(--gutter);
  right:auto;
  bottom:var(--gutter);
  width:min(430px, calc(100% - var(--gutter) * 2));
  padding:var(--sp-5);
  border:1px solid var(--line-dark);
  border-radius:var(--r-lg);
  background:rgba(1,51,40,.96);
  -webkit-backdrop-filter:blur(18px);
  backdrop-filter:blur(18px);
  box-shadow:var(--shadow-lg);
  color:var(--creme);
}
.cookie-banner[hidden]{display:none}
.cookie-inner{
  display:grid;
  gap:var(--sp-4);
}
.cookie-banner h2{
  font-size:var(--fs-h4);
  margin-bottom:var(--sp-1);
}
.cookie-banner p{
  max-width:70ch;
  color:var(--on-dark);
  font-size:var(--fs-sm);
}
.cookie-banner a{text-decoration:underline;text-underline-offset:3px}
.cookie-actions{display:flex;gap:var(--sp-3)}
.cookie-actions .btn{flex:1 1 0;justify-content:center}
.cookie-actions .btn{padding:12px 22px;font-size:var(--fs-sm)}

/* Liens légaux du pied de page */
.footer-legal{display:flex;flex-wrap:wrap;gap:var(--sp-4);align-items:center}
.footer-legal a,
.footer-legal button{
  padding:0;
  border:0;
  background:none;
  color:inherit;
  font-size:inherit;
  cursor:pointer;
  text-decoration:none;
}
.footer-legal a:hover,
.footer-legal button:hover{color:var(--or2);text-decoration:underline;text-underline-offset:3px}

/* ---------- 20. Responsive ---------------------------------------------- */
@media (max-width:1080px){
  .gallery{grid-auto-rows:150px}
}

@media (max-width:960px){
  :root{--nav-h:60px}

  .nav-links{
    position:absolute;
    top:calc(100% + 10px);
    left:0;right:0;
    flex-direction:column;
    align-items:stretch;
    gap:2px;
    padding:10px;
    border:1px solid var(--line-dark);
    border-radius:var(--r-lg);
    background:rgba(1,51,40,.96);
    -webkit-backdrop-filter:blur(20px);
    backdrop-filter:blur(20px);
    box-shadow:var(--shadow-lg);
    font-size:var(--fs-sm);

    opacity:0;
    visibility:hidden;
    transform:translateY(-8px);
    transition:opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
  }
  .nav-links.is-open{opacity:1;visibility:visible;transform:none}
  .nav-links a{min-height:48px;padding:0 16px;border-radius:var(--r-md)}
  .burger{display:block}

  .hero{min-height:auto}
  .hero-icon{
    width:min(320px,54vw);
    top:auto;bottom:4%;right:-12%;
    opacity:.32;
    transform:rotate(-8deg);
  }
  .trust{grid-template-columns:1fr}
  .year{grid-template-columns:1fr}
  .essai-reserve{padding:var(--sp-5)}
  .essai-row .btn{flex:1 1 100%;justify-content:center}
  .cta-strip .wrap{flex-direction:column;align-items:flex-start}
  .cta-strip .btn{width:100%;justify-content:center}
  .garden-grid{grid-template-columns:1fr}
  .garden-media{grid-template-columns:1fr}
  .offer-band{flex-direction:column;align-items:flex-start;grid-template-columns:1fr}

  /* Lévitation : on garde 4 vignettes, plus petites et en retrait */
  .float-hero{min-height:min(100svh,760px)}
  .float-item.f3,.float-item.f4,.float-item.f7,.float-item.f8,.float-item.f9,.float-item.f10,.float-item.f11,.float-item.f12{display:none}
  .float-item.f1{top:11%;left:-2%;width:26%}
  .float-item.f2{top:7%;left:74%;width:26%}
  .float-item.f5{bottom:8%;left:-3%;width:28%}
  .float-item.f6{bottom:5%;left:72%;width:30%}
  .float-item img{opacity:.7}

  /* Décor plus discret et repoussé hors du texte sur petit écran */
  .deco{width:clamp(140px,34vw,210px);opacity:.1}
  .section-dark .deco,.cta .deco{opacity:.14}
  .deco--tr{top:-2%;right:-16%}
  .deco--bl{bottom:2%;left:-16%}
  .deco--r{right:-18%}

  .section-head{grid-template-columns:1fr;gap:var(--sp-5);align-items:start}
  .split,.split--reverse{grid-template-columns:1fr}
  .split--reverse > .duo{order:-1}

  .steps,.events,.values{grid-template-columns:1fr}
  .reasons{grid-template-columns:1fr}
  .pricing{grid-template-columns:1fr}
  .contact-grid{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
  .gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:160px}
  .gallery .big,.gallery .wide{grid-column:span 2}
  .gallery .big{grid-row:span 1}
}

@media (max-width:600px){
  .legal dl{grid-template-columns:1fr;gap:var(--sp-1)}
  .legal dl dt{padding-bottom:0;border-bottom:0}
  .cookie-banner{width:auto;right:var(--gutter)}

  .brand span{display:none}
  .nav-cta{padding:0 16px;font-size:var(--fs-xs)}

  .statbar .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-6)}
  .footer-grid{grid-template-columns:1fr;gap:var(--sp-6)}
  .field-row{grid-template-columns:1fr}
  .duo-tag{font-size:11px;padding:6px 11px}
  .duo-tag--a{left:2%;bottom:3%}
  .duo-tag--b{right:2%;bottom:36%}
  .actions .btn{flex:1 1 100%}
}

@media (prefers-reduced-motion:reduce){
  .logos-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center}
  .float-item img{animation:none}
  .float-item{transition:none}
  .gallery--stagger figure{opacity:1;transform:none;transition:none}
  .gallery figure:hover img{transform:none}

  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
  .reveal{opacity:1;transform:none}
  .marquee-track{animation:none}
}
