/* ============================================================
   SOUND MOUVE — styles partagés du site multi-pages
   Charte STRICTE : fond #000000 · titres #178f74 · CTA #14a28a
   texte #FFFFFF · hover = variations de luminosité des 2 verts
   ============================================================ */
:root{
  --noir:#000000;
  --vert-titre:#178f74;
  --vert-cta:#14a28a;
  --vert-titre-clair:#1db38f;
  --vert-cta-clair:#18c4a6;
  --blanc:#FFFFFF;
  --blanc-70:rgba(255,255,255,.72);
  --blanc-45:rgba(255,255,255,.45);
  --blanc-12:rgba(255,255,255,.12);
  --vert-08:rgba(23,143,116,.08);
  --vert-15:rgba(23,143,116,.15);
  --vert-30:rgba(23,143,116,.30);
  --font-display:'Unbounded',sans-serif;
  --font-texte:'Sora',sans-serif;
  --font-logo:'Baloo 2','Poppins',sans-serif; /* écriture ronde du logo */
  --gouttiere:clamp(20px,5vw,72px);
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--noir);color:var(--blanc);
  font-family:var(--font-texte);font-weight:300;line-height:1.65;
  overflow-x:hidden;-webkit-font-smoothing:antialiased;
}
img,svg,video{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--vert-cta);color:var(--noir)}
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(620px 420px at 85% -5%, var(--vert-15), transparent 70%),
    radial-gradient(520px 520px at -10% 45%, var(--vert-08), transparent 70%),
    radial-gradient(700px 500px at 60% 110%, var(--vert-08), transparent 70%);
}

/* ==================== UTILITAIRES ==================== */
.contenu{width:min(1120px,100%);margin-inline:auto;padding-inline:var(--gouttiere)}
.section{padding-block:clamp(72px,10vw,120px)}
.premiere{padding-top:clamp(120px,16vw,170px)} /* 1re section sous la nav fixe */
.eyebrow{
  font-family:var(--font-display);font-size:.7rem;font-weight:400;
  letter-spacing:.32em;text-transform:uppercase;color:var(--vert-titre);
  display:flex;align-items:center;gap:14px;margin-bottom:22px;
}
.eyebrow::before{content:"";width:34px;height:1px;background:var(--vert-titre)}
h1,h2,h3{font-family:var(--font-display);color:var(--vert-titre);line-height:1.08;font-weight:800;text-wrap:balance}
h1.titre-page{font-size:clamp(2rem,7vw,3.6rem);margin-bottom:.5em;text-transform:uppercase}
h2{font-size:clamp(1.7rem,5.4vw,3rem);margin-bottom:.6em;text-transform:uppercase}
h3{font-size:clamp(1rem,3vw,1.2rem);font-weight:600}
.sous-titre{color:var(--blanc-70);max-width:54ch}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.reveal.visible{opacity:1;transform:none}

/* ==================== BOUTONS ==================== */
.btn{
  display:inline-flex;align-items:center;gap:.65em;
  font-family:var(--font-display);font-weight:600;font-size:.95rem;
  text-decoration:none;border-radius:999px;cursor:pointer;border:0;
  padding:1.05em 1.9em;transition:background .25s,transform .25s,box-shadow .25s;
}
.btn-plein{background:var(--vert-cta);color:var(--noir);box-shadow:0 0 0 0 var(--vert-30);animation:pulse-cta 2.6s infinite}
.btn-plein:hover{background:var(--vert-cta-clair);transform:translateY(-2px)}
.btn-plein .fleche{transition:transform .25s}
.btn-plein:hover .fleche{transform:translateX(5px)}
@keyframes pulse-cta{
  0%{box-shadow:0 0 0 0 var(--vert-30)}
  70%{box-shadow:0 0 0 18px rgba(20,162,138,0)}
  100%{box-shadow:0 0 0 0 rgba(20,162,138,0)}
}
.btn-contour{background:transparent;color:var(--blanc);border:1px solid var(--vert-cta)}
.btn-contour:hover{background:var(--vert-cta);color:var(--noir)}

/* ==================== COMPTEUR ==================== */
.compteur{display:inline-flex;flex-direction:column;gap:10px;min-width:min(320px,100%)}
.compteur-texte{font-family:var(--font-display);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--blanc-70)}
.compteur-texte strong{color:var(--vert-cta);font-weight:600}
.compteur-barre{height:6px;border-radius:99px;background:var(--blanc-12);overflow:hidden}
.compteur-barre span{
  display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--vert-titre),var(--vert-cta));
  transition:width 1.6s cubic-bezier(.22,1,.36,1);
}

/* ==================== NAVIGATION ==================== */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px var(--gouttiere);
  background:rgba(0,0,0,.78);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--vert-15);
}
/* Logo « sound move » : Poppins gras, vert, minuscules empilées serrées (identité visuelle) */
.nav-logo{
  font-family:var(--font-logo);font-weight:700;font-size:1.1rem;
  letter-spacing:-.02em;text-decoration:none;color:var(--vert-titre);
  display:inline-flex;flex-direction:column;line-height:.82;
  text-transform:lowercase;white-space:nowrap;transition:color .25s;
}
.nav-logo span{display:block}
.nav-logo:hover{color:var(--vert-titre-clair)}
.nav-logo .logo-img{height:30px;width:auto;display:block;transition:opacity .25s}
.nav-logo:hover .logo-img{opacity:.85}
.footer-grille .nav-logo .logo-img{height:42px}
.nav .btn{padding:.65em 1.3em;font-size:.72rem;animation:none;white-space:nowrap}
.nav-liens{display:none;gap:22px;margin-inline:auto;padding-inline:16px}
.nav-liens a{font-size:.76rem;color:var(--blanc-70);text-decoration:none;transition:color .25s;white-space:nowrap}
.nav-liens a:hover,.nav-liens a[aria-current="page"]{color:var(--vert-cta)}
@media(min-width:880px){.nav-liens{display:flex;flex-wrap:wrap;justify-content:center}}

/* ==================== HERO (accueil) ==================== */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;position:relative;padding-top:90px;padding-bottom:140px;overflow:hidden;background:#06080c}
.hero-contenu{display:flex;flex-direction:column}
.hero::before{content:"";position:absolute;inset:0;z-index:0;
  background:linear-gradient(105deg, rgba(6,8,12,.94) 0%, rgba(6,8,12,.84) 40%, rgba(6,8,12,.52) 100%),
    url("https://jqzoqibcndhmzeginyvq.supabase.co/storage/v1/object/public/sm-medias/accueil/hero.jpg") 72% center / cover no-repeat;}
.hero > *{position:relative;z-index:1}
@media(max-width:640px){
  .hero::before{background:linear-gradient(180deg, rgba(6,8,12,.78) 0%, rgba(6,8,12,.62) 45%, rgba(6,8,12,.9) 100%),
    url("https://jqzoqibcndhmzeginyvq.supabase.co/storage/v1/object/public/sm-medias/accueil/hero.jpg") 60% center / cover no-repeat;}
}
/* Nom de marque du hero : Poppins gras vert, copie du logo */
.hero h1{
  font-family:var(--font-logo);font-weight:700;color:var(--vert-titre);
  font-size:clamp(3.2rem,14vw,7.6rem);text-transform:lowercase;
  letter-spacing:-.02em;margin-bottom:.3em;line-height:.85;
}
.hero h1 .contour{color:inherit}
.hero-accroche{font-size:clamp(1rem,2.6vw,1.3rem);color:var(--blanc-70);max-width:46ch;margin-bottom:2.2em}
.hero-accroche strong{color:var(--blanc);font-weight:600}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:28px}
.egaliseur{
  position:absolute;left:0;right:0;bottom:0;height:120px;
  display:flex;align-items:flex-end;gap:6px;padding-inline:var(--gouttiere);
  opacity:.5;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);
}
.egaliseur span{
  flex:1;border-radius:3px 3px 0 0;
  background:linear-gradient(180deg,var(--vert-cta),var(--vert-titre));
  height:calc(var(--h)*1%);transform-origin:bottom;
  animation:eq calc(var(--s,1)*1s) ease-in-out calc(var(--d,0)*-1s) infinite alternate;
}
@keyframes eq{from{transform:scaleY(var(--min,.25))}to{transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.egaliseur span{animation:none}}
.scroll-indice{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:var(--blanc-45);animation:flotte 2.2s ease-in-out infinite}
@keyframes flotte{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}

/* ==================== ONDE SONORE (motif de marque) ==================== */
.onde-hero{width:min(460px,72%);margin:10px 0 26px}
.onde-hero svg{width:100%;height:auto}
/* Logo officiel (vague) dans le hero */
.logo-hero{width:min(420px,68%);height:auto;display:block;margin:12px 0 14px;animation:logoFade 1s ease both}
@keyframes logoFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* Wordmark officiel "sound move" (titre hero) */
.hero h1.titre-wordmark{margin:0 0 .5em;line-height:1}
.titre-wordmark img{width:min(420px,80%);height:auto;display:block;animation:logoFade 1.1s ease both}
.onde-hero svg path{stroke-dasharray:980;stroke-dashoffset:980;animation:tracer 2.1s cubic-bezier(.45,0,.2,1) forwards}
.onde-hero svg .onde-b{animation-delay:.35s}
@keyframes tracer{to{stroke-dashoffset:0}}
.onde-pied{width:150px;margin:0 auto 38px;opacity:.85}
.onde-pied svg{width:100%;height:auto}
.logo-pied{display:block;width:min(180px,52%);height:auto;margin:0 auto 36px}
/* Bouton musique d'ambiance (page Ambiance) */
.btn-musique{position:fixed;bottom:18px;right:18px;z-index:60;display:inline-flex;align-items:center;gap:8px;
  background:var(--vert-cta);color:var(--noir);border:none;border-radius:999px;padding:.72em 1.15em;
  font-family:var(--font-display);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;cursor:pointer;box-shadow:0 8px 26px rgba(0,0,0,.45);transition:transform .2s,background .2s,color .2s}
.btn-musique:hover{transform:translateY(-2px)}
.btn-musique .ico{font-size:1.05em;line-height:1}
.btn-musique.off{background:rgba(255,255,255,.14);color:var(--blanc)}
/* Coming soon (page teaser) */
.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  gap:16px;padding:70px 28px;border:1px solid var(--vert-15);border-radius:20px;
  background:linear-gradient(160deg,rgba(43,184,152,.10),rgba(255,255,255,.02));margin:10px 0}
.coming-soon .cs-logo{width:min(300px,68%);height:auto;opacity:.95}
.coming-soon .cs-titre{font-family:var(--font-logo);font-weight:800;text-transform:lowercase;
  font-size:clamp(2.6rem,10vw,4.4rem);color:var(--vert-titre);line-height:1;margin:0;letter-spacing:-.01em}
.coming-soon .cs-sous{color:var(--blanc-70);font-size:1.05rem;margin:0;max-width:42ch}
/* Contacts directs (page contact) */
.contacts-directs{margin:6px 0 34px;padding:22px 24px;border:1px solid var(--vert-15);border-radius:16px;background:rgba(43,184,152,.06);max-width:560px}
.contacts-directs .cd-titre{margin:0 0 14px;font-family:var(--font-display);font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:var(--vert-titre)}
.contacts-directs ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.contacts-directs li{display:flex;flex-direction:column;gap:3px}
.contacts-directs .cd-label{font-size:.78rem;color:var(--blanc-70)}
.contacts-directs a{color:var(--vert-titre);font-weight:600;text-decoration:none;font-size:1.05rem;word-break:break-all}
.contacts-directs a:hover{text-decoration:underline}

/* Cartes « explorer » de l'accueil */
.grille-pages{display:grid;gap:14px;grid-template-columns:1fr;margin-top:44px}
@media(min-width:640px){.grille-pages{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.grille-pages{grid-template-columns:repeat(3,1fr)}}
.carte-lien{
  display:block;text-decoration:none;border:1px solid var(--vert-15);border-radius:18px;
  padding:26px 24px;background:linear-gradient(160deg,var(--vert-08),transparent 55%);
  transition:border-color .3s,transform .3s;
}
.carte-lien:hover{border-color:var(--vert-cta);transform:translateY(-4px)}
.carte-lien .num{font-family:var(--font-display);font-size:.66rem;letter-spacing:.3em;color:var(--vert-cta);display:block;margin-bottom:12px}
.carte-lien h3{margin-bottom:.45em;text-transform:uppercase}
.carte-lien p{color:var(--blanc-70);font-size:.9rem}
.carte-lien .suite{display:inline-block;margin-top:14px;font-family:var(--font-display);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--vert-cta)}

/* ==================== CONCEPT ==================== */
.grille-concept{display:grid;gap:16px;grid-template-columns:1fr;margin-top:44px}
@media(min-width:720px){.grille-concept{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.grille-concept{grid-template-columns:repeat(4,1fr)}}
.carte{
  border:1px solid var(--vert-15);border-radius:18px;padding:28px 24px;
  background:linear-gradient(160deg,var(--vert-08),transparent 55%);
  transition:border-color .3s,transform .3s;
}
.carte:hover{border-color:var(--vert-cta);transform:translateY(-4px)}
.carte .num{font-family:var(--font-display);font-size:.68rem;letter-spacing:.3em;color:var(--vert-cta);display:block;margin-bottom:14px}
.carte h3{margin-bottom:.5em;text-transform:uppercase}
.carte p{color:var(--blanc-70);font-size:.93rem}
.timeline{margin-top:56px;display:grid;border-left:1px solid var(--vert-30);padding-left:26px}
.timeline li{list-style:none;position:relative;padding-block:14px}
.timeline li::before{content:"";position:absolute;left:-31px;top:24px;width:9px;height:9px;border-radius:50%;background:var(--vert-cta)}
.timeline .heure{font-family:var(--font-display);font-size:.74rem;color:var(--vert-titre);letter-spacing:.2em}
.timeline p{color:var(--blanc-70);font-size:.92rem}

/* ==================== TEASER ==================== */
.cadre-video{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--vert-30);margin-top:40px;box-shadow:0 30px 80px -30px var(--vert-30)}
.cadre-video video{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--noir)}
.badge-duree{position:absolute;top:14px;right:14px;font-family:var(--font-display);font-size:.62rem;letter-spacing:.25em;color:var(--noir);background:var(--vert-cta);border-radius:99px;padding:.5em 1em}
.playlist{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.morceau{border:1px solid var(--vert-15);border-radius:99px;padding:.5em 1.1em;font-size:.8rem;color:var(--blanc-70);text-decoration:none;transition:border-color .2s,color .2s}
.morceau strong{color:var(--blanc);font-weight:600}
a.morceau:hover,a.morceau:hover strong{border-color:var(--vert-cta);color:var(--vert-cta)}

/* ==================== GALERIES ==================== */
.galerie{display:grid;gap:12px;margin-top:40px;grid-template-columns:repeat(2,1fr)}
.galerie figure{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--vert-15)}
.galerie img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;transition:transform .6s ease}
.galerie figure:hover img{transform:scale(1.06)}
.galerie figcaption{
  position:absolute;inset:auto 0 0 0;padding:14px;
  font-family:var(--font-display);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;
  color:var(--blanc);background:linear-gradient(transparent,rgba(0,0,0,.85));
}
.galerie figure:first-child{grid-column:span 2}
.galerie figure:first-child img{aspect-ratio:16/9}
@media(min-width:720px){
  .galerie{grid-template-columns:repeat(6,1fr)}
  .galerie figure:first-child{grid-column:span 4;grid-row:span 2}
  .galerie figure:first-child img{aspect-ratio:auto;height:100%}
  .galerie figure:nth-child(2),.galerie figure:nth-child(3){grid-column:span 2}
  .galerie figure:nth-child(4),.galerie figure:nth-child(5){grid-column:span 3}
}
.galerie-evenement{display:grid;gap:10px;grid-auto-flow:dense;grid-template-columns:repeat(3,1fr);margin-block:36px}
@media(min-width:720px){ .galerie-evenement{grid-template-columns:repeat(6,1fr)} }
.galerie-evenement .photo-cell{position:relative;border-radius:12px;overflow:hidden;border:1px solid var(--vert-15);aspect-ratio:1/1;background:#11202a;margin:0}
.galerie-evenement .photo-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s,opacity .2s}
.galerie-evenement .photo-cell:hover img{transform:scale(1.07);opacity:.9}
.galerie-evenement .photo-cell.f2{grid-column:span 2;grid-row:span 2}
.galerie-evenement .photo-cell.fw{grid-column:1/-1;aspect-ratio:16/7}
.galerie-evenement figcaption{position:absolute;inset:auto 0 0 0;padding:12px;font-family:var(--font-display);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--blanc);background:linear-gradient(transparent,rgba(0,0,0,.8))}

/* ---------- Favoris (cœur) sur les cellules ---------- */
.photo-cell .fav{position:absolute;top:7px;right:7px;width:32px;height:32px;border:0;border-radius:50%;background:rgba(0,0,0,.42);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .2s,transform .15s}
.photo-cell .fav:hover{background:rgba(0,0,0,.7);transform:scale(1.14)}
.photo-cell .fav.on{color:#ff5a7a}

/* ---------- Lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(6,8,12,.95);display:none;align-items:center;justify-content:center}
.lightbox.open{display:flex}
.lightbox .lb-img{max-width:92vw;max-height:80vh;object-fit:contain;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lb-top{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:14px 16px}
.lb-count{font-family:var(--font-display);font-size:.82rem;color:var(--blanc-70);letter-spacing:.05em}
.lb-actions{display:flex;gap:9px}
.lb-btn{width:46px;height:46px;border:0;border-radius:50%;background:rgba(255,255,255,.13);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;transition:background .2s}
.lb-btn:hover{background:rgba(255,255,255,.27)}
.lb-btn.on{color:#ff5a7a}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:54px;height:54px;font-size:28px}
.lb-prev{left:10px}.lb-next{right:10px}
@media(max-width:560px){.lb-nav{width:44px;height:44px;font-size:22px}}

/* ---------- Barre favoris flottante ---------- */
.fav-bar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%) translateY(140px);z-index:900;display:flex;gap:12px;align-items:center;background:#0c0c14;border:1px solid var(--vert-15);border-radius:999px;padding:8px 10px 8px 20px;box-shadow:0 12px 34px rgba(0,0,0,.55);transition:transform .35s}
.fav-bar.show{transform:translateX(-50%) translateY(0)}
.fav-bar .fav-count{color:#fff;font-size:.9rem;white-space:nowrap}
.fav-bar .btn{margin:0;padding:.7em 1.2em;font-size:.8rem}

/* ==================== PARCOURS ==================== */
.bloc-parcours{display:grid;gap:36px;margin-top:40px;align-items:center;grid-template-columns:1fr}
@media(min-width:720px){.bloc-parcours{grid-template-columns:1.25fr 1fr}}
.trace{border:1px solid var(--vert-15);border-radius:20px;padding:18px;background:linear-gradient(200deg,var(--vert-08),transparent 60%)}
.trace svg{width:100%;height:auto}
.trace .ligne{fill:none;stroke:var(--vert-titre);stroke-width:3;stroke-linecap:round;stroke-dasharray:8 10;animation:defile 22s linear infinite}
@keyframes defile{to{stroke-dashoffset:-360}}
.infos-parcours{display:grid;gap:18px}
.donnee{display:flex;gap:16px;align-items:baseline;border-bottom:1px solid var(--blanc-12);padding-bottom:14px}
.donnee dt{font-family:var(--font-display);font-size:.66rem;letter-spacing:.25em;text-transform:uppercase;color:var(--vert-titre);min-width:96px}
.donnee dd{color:var(--blanc-70);font-size:.94rem}

/* ==================== INVITATION ==================== */
.invitation{text-align:center;background:radial-gradient(700px 320px at 50% 0,var(--vert-08),transparent 70%)}
.invitation .contenu{display:flex;flex-direction:column;align-items:center;gap:30px}
.invitation .eyebrow{justify-content:center}
.invitation p.texte{max-width:62ch;color:var(--blanc-70);font-size:clamp(1rem,2.4vw,1.15rem)}
.invitation p.texte strong{color:var(--blanc);font-weight:600}

/* ==================== AGENDA ==================== */
.cartes-dates{display:grid;gap:16px;margin-top:44px;grid-template-columns:1fr}
@media(min-width:720px){.cartes-dates{grid-template-columns:repeat(3,1fr)}}
.carte-date{
  border:1px solid var(--vert-15);border-radius:18px;padding:30px 26px;
  display:flex;flex-direction:column;gap:14px;transition:border-color .3s,transform .3s;
}
.carte-date:hover{border-color:var(--vert-cta);transform:translateY(-4px)}
.carte-date .jour{font-family:var(--font-display);font-size:2rem;font-weight:800;color:var(--vert-titre);line-height:1}
.carte-date .lieu{color:var(--blanc);font-weight:600}
.carte-date .detail{color:var(--blanc-70);font-size:.88rem}
.statut{
  align-self:flex-start;font-family:var(--font-display);font-size:.58rem;
  letter-spacing:.25em;text-transform:uppercase;border-radius:99px;padding:.55em 1.1em;
  border:1px solid var(--vert-cta);color:var(--vert-cta);
}
.statut.plein{border-color:var(--blanc-45);color:var(--blanc-45)}
.carte-date .btn{margin-top:auto;justify-content:center}

/* ==================== RÉSEAUX ==================== */
.reseaux{display:flex;gap:14px;flex-wrap:wrap;list-style:none}
.reseaux a{
  display:grid;place-items:center;width:52px;height:52px;border-radius:50%;
  border:1px solid var(--blanc-12);color:var(--blanc);
  transition:color .25s,border-color .25s,transform .25s;
}
.reseaux a:hover{color:var(--vert-cta);border-color:var(--vert-cta);transform:translateY(-3px)}
.reseaux svg{width:22px;height:22px;fill:currentColor}

/* ==================== CONTACT ==================== */
.formulaire{display:grid;gap:20px;margin-top:40px;max-width:640px}
.champ{display:grid;gap:8px}
.champ label{font-family:var(--font-display);font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--vert-titre)}
.champ input,.champ select,.champ textarea{
  width:100%;background:transparent;border:1px solid var(--blanc-12);
  border-radius:12px;padding:.95em 1.1em;color:var(--blanc);
  font-family:var(--font-texte);font-size:.95rem;transition:border-color .25s;
}
.champ select option{background:var(--noir)}
.champ input:focus,.champ select:focus,.champ textarea:focus{outline:none;border-color:var(--vert-cta)}
.champ textarea{min-height:140px;resize:vertical}
.consentement{display:flex;gap:12px;align-items:flex-start;font-size:.84rem;color:var(--blanc-70)}
.consentement input{margin-top:4px;accent-color:var(--vert-cta);width:18px;height:18px;flex:none}
.consentement a{color:var(--vert-cta)}
.consentement a:hover{color:var(--vert-cta-clair)}
.confirmation{display:none;border:1px solid var(--vert-titre);border-radius:14px;background:var(--vert-15);color:var(--blanc);padding:20px;font-size:.94rem}
.confirmation.visible{display:block}
.confirmation strong{color:var(--vert-titre-clair);font-family:var(--font-display);font-size:.8rem;letter-spacing:.15em;text-transform:uppercase}
.honeypot{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

/* ==================== PARTENAIRES ==================== */
.carrousel{
  overflow:hidden;margin-top:40px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
}
.carrousel-piste{display:flex;gap:16px;width:max-content;animation:defilement 60s linear infinite}
.carrousel:hover .carrousel-piste{animation-play-state:paused}
@keyframes defilement{to{transform:translateX(-50%)}}
.logo-partenaire{
  display:grid;place-items:center;min-width:220px;height:130px;border-radius:16px;
  background:#fff;border:1px solid var(--blanc-12);text-decoration:none;
  font-family:var(--font-display);font-size:.66rem;letter-spacing:.2em;
  text-transform:uppercase;color:#1a1a2e;padding:22px 30px;
  transition:transform .25s,box-shadow .25s;
}
.logo-partenaire:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(0,0,0,.38)}
.logo-partenaire img{max-height:92px;max-width:100%;width:auto;object-fit:contain}
.logo-partenaire .marque{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.15}
.logo-partenaire .marque strong{font-size:1.35rem;font-weight:800;letter-spacing:.04em;color:#1a1a2e}
.logo-partenaire.libre{background:transparent;border-style:dashed;color:var(--vert-cta)}
.logo-partenaire.libre:hover{color:var(--vert-cta-clair);border-color:var(--vert-cta-clair);transform:none;box-shadow:none}

/* ==================== FOOTER ==================== */
footer{border-top:1px solid var(--vert-15);padding-block:52px;margin-top:40px}
.footer-grille{display:flex;flex-direction:column;gap:30px;align-items:flex-start}
@media(min-width:720px){.footer-grille{flex-direction:row;justify-content:space-between;align-items:center}}
.footer-liens{display:flex;gap:10px 26px;flex-wrap:wrap;font-size:.85rem}
.footer-liens a{color:var(--blanc-70);text-decoration:none;transition:color .25s}
.footer-liens a:hover{color:var(--vert-cta)}
.mentions{font-size:.75rem;color:var(--blanc-45);margin-top:26px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
  .onde-hero svg path{stroke-dasharray:none;stroke-dashoffset:0} /* onde visible sans animation */
}
