/* ============================================================
   COACH & CARE — app.css
   Reproduit fidèlement le design AC Coaching / Coach & Care
   Polices : Bebas Neue (display) · Barlow Condensed · Barlow (body)
   Couleurs : #080808 (black) · #eacf36 (accent or)
   ============================================================ */

/* ============================================================
   Polices auto-hébergées (Bebas Neue, Barlow, Barlow Condensed)
   — mêmes familles/graisses/styles que l'ancien import Google
   Fonts (fonts.googleapis.com) ; fichiers sous public/fonts/,
   subsets latin + latin-ext (glyphes français couverts).
   ============================================================ */
@font-face {
  font-family: 'Barlow';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow/barlow-300italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow/barlow-300italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow/barlow-300-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow/barlow-300-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/barlow/barlow-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/barlow/barlow-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/barlow/barlow-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/barlow/barlow-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/barlow/barlow-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/barlow/barlow-600-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/barlow/barlow-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/barlow/barlow-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-300-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-300-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-600-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/barlow-condensed/barlow-condensed-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bebas-neue/bebas-neue-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bebas-neue/bebas-neue-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --black:        #080808;
  --dark:         #111111;
  --dark2:        #1a1a1a;
  --dark3:        #222222;
  --grey:         #333333;
  --midgrey:      #555555;
  --lightgrey:    #999999;
  --white:        #f5f5f0;
  --accent:       #eacf36;
  --accent-light: #f5df6a;
  --accent-dark:  #c9ae1a;
  --font-display:    'Bebas Neue', sans-serif;
  --font-condensed:  'Barlow Condensed', sans-serif;
  --font-body:       'Barlow', sans-serif;
}

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; font-size: 16px; }
body {
  background: var(--black);
  color: var(--white);
  font-family: var(--font-body);
  font-weight: 300;
  overflow-x: hidden;
  cursor: none;
}

/* ── SCROLLBAR ── */
::-webkit-scrollbar { width: 3px; }
::-webkit-scrollbar-track { background: var(--black); }
::-webkit-scrollbar-thumb { background: var(--accent); }

/* ── CURSOR ── */
.cursor {
  position: fixed; width: 10px; height: 10px;
  background: var(--accent); border-radius: 50%;
  pointer-events: none; z-index: 9999;
  transform: translate(-50%,-50%);
  transition: width .3s, height .3s;
}
.cursor-ring {
  position: fixed; width: 36px; height: 36px;
  border: 1px solid rgba(234,207,54,.5); border-radius: 50%;
  pointer-events: none; z-index: 9998;
  transform: translate(-50%,-50%);
  transition: width .3s, height .3s;
}
.cursor.hover  { width: 18px; height: 18px; }
.cursor-ring.hover { width: 52px; height: 52px; }

/* ── NAV ── */
nav {
  position: fixed; top: 0; left: 0; right: 0;
  z-index: 1000; padding: 0 4rem; height: 72px;
  display: flex; align-items: center; justify-content: space-between;
  transition: background .4s, backdrop-filter .4s;
}
nav.scrolled {
  background: rgba(8,8,8,.95);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(255,255,255,.05);
}
.nav-logo img { height: 96px; display: block; }
.nav-links { display: flex; gap: 2.2rem; list-style: none; align-items: center; }
.nav-links > li { position: relative; }
.nav-links a {
  font-family: var(--font-condensed); font-size: .8rem; font-weight: 500;
  letter-spacing: .15em; text-transform: uppercase;
  color: rgba(245,245,240,.7); text-decoration: none; transition: color .3s;
  display: flex; align-items: center; gap: .35rem;
  white-space: nowrap;
}
.nav-links a:hover { color: var(--accent); }
.nav-links a.active { color: var(--accent); font-weight: 600; }
.nav-cta {
  background: var(--accent) !important; color: var(--black) !important;
  padding: .55rem 1.4rem; font-weight: 700 !important;
  letter-spacing: .1em !important; transition: background .3s !important;
}
.nav-cta:hover { background: var(--accent-light) !important; }

/* Dropdown */
.has-dropdown { position: relative; }
.dropdown {
  position: absolute; top: 100%; left: 50%;
  transform: translateX(-50%); min-width: 240px;
  background: rgba(17,17,17,.98); border: 1px solid rgba(255,255,255,.07);
  border-top: 2px solid var(--accent); backdrop-filter: blur(20px);
  padding: .5rem 0; opacity: 0; pointer-events: none;
  transition: opacity .25s ease;
}
.dropdown::before {
  content: ''; position: absolute; top: -7px; left: 50%;
  transform: translateX(-50%); border: 6px solid transparent;
  border-bottom-color: var(--accent); border-top: none;
}
.has-dropdown:hover .dropdown, .has-dropdown.open .dropdown {
  opacity: 1; pointer-events: all;
}
.dropdown a {
  display: flex; align-items: center; gap: .8rem;
  padding: .8rem 1.4rem; font-family: var(--font-condensed);
  font-size: .78rem; font-weight: 500; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(245,245,240,.65);
  text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.04);
  transition: background .2s, color .2s, padding-left .2s;
}
.dropdown a:last-child { border-bottom: none; }
.dropdown a:hover { background: rgba(234,207,54,.06); color: var(--accent); padding-left: 1.8rem; }
.dropdown a .dd-icon { width: 28px; height: 28px; background: rgba(234,207,54,.1); display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--accent); font-size: .85rem; }

/* Hamburger */
.hamburger { display: none; flex-direction: column; gap: 5px; cursor: pointer; padding: 5px; }
.hamburger span { display: block; width: 24px; height: 1.5px; background: var(--white); transition: all .3s; }

/* Mobile menu */
.mobile-menu {
  position: fixed; inset: 0; background: rgba(8,8,8,.97); z-index: 1001;
  display: flex; flex-direction: column; align-items: center;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: 0 2rem;
  transform: translateX(100%); transition: transform .4s ease;
}
.mobile-menu.open { transform: translateX(0); }
/* margin: auto 0 centre verticalement quand tout tient dans l'écran, et
   s'annule proprement (top-aligné + scroll) quand le contenu déborde —
   contrairement à justify-content:center sur le conteneur scrollable, qui
   rendrait le haut du menu inaccessible au scroll sur les petits écrans. */
.mobile-menu-inner {
  display: flex; flex-direction: column; align-items: center;
  gap: 2.4rem; width: 100%; max-width: 420px;
  margin: auto 0; padding: 2rem 0 3rem;
}
.mobile-menu-header {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding-bottom: 1.4rem;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.mobile-menu-logo { height: 42px; display: block; }
.mobile-close { background: none; border: none; color: var(--white); font-size: 2rem; line-height: 1; cursor: pointer; padding: .3rem; }
.mobile-menu-links { display: flex; flex-direction: column; align-items: center; gap: 1.8rem; width: 100%; }
.mobile-menu-links > a,
.mobile-menu-links .mobile-accordion-toggle { font-family: var(--font-display); font-size: 2.2rem; letter-spacing: .1em; text-transform: uppercase; color: var(--white); text-decoration: none; transition: color .3s; }
.mobile-menu-links > a:hover,
.mobile-menu-links .mobile-accordion-toggle:hover { color: var(--accent); }
.mobile-menu-links > a.active { color: var(--accent); }
.mobile-menu-account {
  display: flex; flex-direction: column; align-items: center; gap: 1.1rem;
  width: 100%; padding-top: 1.8rem;
  border-top: 1px solid rgba(255,255,255,.08);
}
.mobile-menu-account > a,
.mobile-menu-account .mobile-accordion-toggle { font-family: var(--font-condensed); font-size: 1.3rem; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: rgba(245,245,240,.85); text-decoration: none; transition: color .3s; }
.mobile-menu-account > a:hover,
.mobile-menu-account .mobile-accordion-toggle:hover { color: var(--accent); }

/* Accordéons "Services" / profil utilisateur — un seul ouvert à la fois,
   géré par JS (voir app.js) via aria-expanded + [hidden] sur le panneau. */
.mobile-accordion { width: 100%; }
.mobile-accordion-toggle {
  display: flex; align-items: center; justify-content: center; gap: .4rem;
  width: 100%; background: none; border: none; padding: 0; margin: 0;
  font: inherit; text-decoration: none; cursor: pointer;
  transition: color .3s;
}
.mobile-accordion-toggle:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 6px;
}
.mobile-accordion-chevron {
  display: inline-block; font-size: .7em; line-height: 1;
  transition: transform .25s ease;
}
.mobile-accordion-toggle[aria-expanded="true"] .mobile-accordion-chevron {
  transform: rotate(180deg);
}
.mobile-accordion-panel {
  display: flex; flex-direction: column; align-items: center; gap: .9rem;
  width: 100%; margin-top: 1.2rem; padding: 1.2rem 0;
  border-top: 1px solid rgba(255,255,255,.06);
  border-bottom: 1px solid rgba(255,255,255,.06);
}
/* Le display:flex ci-dessus est une règle "author", prioritaire en cascade
   sur la règle UA [hidden]{display:none} — sans cette règle explicite,
   l'attribut hidden n'a donc aucun effet visuel et le panneau reste visible
   à l'ouverture du menu, avant tout clic. */
.mobile-accordion-panel[hidden] {
  display: none !important;
}
.mobile-accordion-panel a {
  display: flex; align-items: center; justify-content: center; gap: .5rem;
  font-family: var(--font-condensed); font-size: 1.15rem; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(245,245,240,.8);
  text-decoration: none; transition: color .3s;
}
.mobile-accordion-panel a:hover { color: var(--accent); }

/* ── HERO VIDEO ── */
#hero-video-fixed {
  position: fixed; top: 0; left: 0; width: 100%; height: 100vh;
  z-index: 0; overflow: hidden; pointer-events: none;
}
#hero-video-fixed video {
  position: absolute; top: 50%; left: 50%;
  width: 100%; height: 100%; min-width: 100vw; min-height: 100vh;
  object-fit: cover; transform: translate(-50%,-50%);
  filter: brightness(.55) saturate(.85);
}
#hero-video-fixed::after {
  content: ''; position: absolute; inset: 0;
  background:
    linear-gradient(to right,  rgba(8,8,8,.80) 0%, rgba(8,8,8,.35) 60%, rgba(8,8,8,.25) 100%),
    linear-gradient(to top,    rgba(8,8,8,.95) 0%, rgba(8,8,8,.00) 35%),
    linear-gradient(to bottom, rgba(8,8,8,.50) 0%, transparent 20%);
  pointer-events: none; z-index: 1;
}
#hero { position: relative; height: 100vh; min-height: 700px; z-index: 1; display: flex; align-items: center; justify-content: flex-start; background: transparent; }
#about, #services, #why, #transformations, #studio, #programs, #pricing, #team, #testimonials, #cta-band, #instagram, #newsletter, #contact, footer { position: relative; z-index: 2; }

/* ── HERO CONTENT ── */
.hero-content { position: relative; z-index: 3; max-width: 1400px; width: 100%; padding: 0 4rem; padding-top: 72px; }
.hero-eyebrow { font-family: var(--font-condensed); font-size: .75rem; font-weight: 500; letter-spacing: .35em; text-transform: uppercase; color: var(--accent); margin-bottom: 1.5rem; opacity: 0; animation: fadeUp 1s .3s forwards; display: flex; align-items: center; gap: 1rem; }
.hero-eyebrow::before { content: ''; display: block; width: 40px; height: 1px; background: var(--accent); }
.hero-title { font-family: var(--font-display); font-size: clamp(3rem,6.75vw,6.75rem); line-height: .92; letter-spacing: .03em; text-transform: uppercase; color: var(--white); margin-bottom: 2rem; opacity: 0; animation: fadeUp 1s .5s forwards; }
.hero-title em { font-style: normal; color: var(--accent); }
.hero-subtitle { font-size: 1.1rem; font-weight: 300; color: rgba(245,245,240,.7); max-width: 480px; line-height: 1.6; margin-bottom: 7rem; opacity: 0; animation: fadeUp 1s .7s forwards; }
.hero-buttons { display: flex; gap: 1.2rem; flex-wrap: wrap; opacity: 0; animation: fadeUp 1s .9s forwards; }
.hero-scroll { position: absolute; bottom: 3rem; left: 50%; transform: translateX(-50%); z-index: 2; display: flex; flex-direction: column; align-items: center; gap: .5rem; opacity: 0; animation: fadeIn 1s 1.4s forwards; }
.hero-scroll span { font-family: var(--font-condensed); font-size: .65rem; letter-spacing: .3em; text-transform: uppercase; color: rgba(245,245,240,.4); }
.scroll-line { width: 1px; height: 50px; background: linear-gradient(to bottom, var(--accent), transparent); animation: scrollPulse 2s infinite; }
.hero-stats { position: absolute; bottom: 3rem; right: 4rem; z-index: 3; display: flex; gap: 3rem; opacity: 0; animation: fadeUp 1s 1.1s forwards; }
.hero-stat { text-align: right; }
.hero-stat-num { font-family: var(--font-display); font-size: 2.5rem; line-height: 1; color: var(--white); }
.hero-stat-num span { color: var(--accent); }
.hero-stat-label { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.4); margin-top: .3rem; }

@keyframes fadeUp { from { opacity:0; transform:translateY(30px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes scrollPulse { 0%,100% { opacity:.3; transform:scaleY(1); } 50% { opacity:1; transform:scaleY(1.1); } }

/* ── REVEAL SCROLL ── */
.reveal { opacity:0; transform:translateY(40px); transition: opacity .8s ease, transform .8s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }
.reveal-left { opacity:0; transform:translateX(-40px); transition: opacity .8s ease, transform .8s ease; }
.reveal-left.visible { opacity:1; transform:translateX(0); }
.reveal-right { opacity:0; transform:translateX(40px); transition: opacity .8s ease, transform .8s ease; }
.reveal-right.visible { opacity:1; transform:translateX(0); }

/* ── SECTIONS ── */
section { position: relative; }
.section-inner { max-width: 1400px; margin: 0 auto; padding: 0 4rem; }
.section-label { font-family: var(--font-condensed); font-size: .7rem; font-weight: 500; letter-spacing: .35em; text-transform: uppercase; color: var(--accent); display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.section-label::before { content: ''; display: block; width: 30px; height: 1px; background: var(--accent); }

/* ── BOUTONS ── */
.btn-primary { background: var(--accent); color: var(--black); padding: 1rem 2.4rem; font-family: var(--font-condensed); font-size: .85rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; border: none; cursor: pointer; transition: background .3s, transform .3s; display: inline-block; }
.btn-primary:hover { background: var(--accent-light); transform: translateY(-2px); }
.btn-secondary { background: transparent; color: var(--white); padding: 1rem 2.4rem; font-family: var(--font-condensed); font-size: .85rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; border: 1px solid rgba(255,255,255,.3); cursor: pointer; transition: border-color .3s, color .3s, transform .3s; display: inline-block; }
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px); }
.btn-white { background: var(--white); color: var(--accent); padding: 1.1rem 3rem; font-family: var(--font-condensed); font-size: .85rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; display: inline-block; transition: background .3s, transform .3s; }
.btn-white:hover { background: var(--black); color: var(--white); transform: translateY(-3px); }

/* ── ABOUT ── */
#about { padding: 10rem 0; background: var(--black); overflow: hidden; }
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8rem; align-items: center; }
.about-image-wrap { position: relative; }
.about-image-main { width: 100%; aspect-ratio: 3/4; object-fit: cover; filter: grayscale(20%); display: block; }
.about-image-accent { position: absolute; bottom: -3rem; right: -3rem; width: 55%; aspect-ratio: 1; object-fit: cover; border: 4px solid var(--black); filter: grayscale(20%); }
.about-image-badge { position: absolute; top: 3rem; left: -2rem; background: var(--accent); padding: 1.5rem; text-align: center; }
.about-badge-num { font-family: var(--font-display); font-size: 3rem; line-height: 1; color: var(--black); }
.about-badge-text { font-family: var(--font-condensed); font-size: .65rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(0,0,0,.7); }
.about-content { padding-right: 2rem; }
.about-title { font-family: var(--font-display); font-size: clamp(3rem,4.5vw,4.4rem); line-height: .95; letter-spacing: .03em; text-transform: uppercase; color: var(--white); margin-bottom: 2rem; }
.about-title em { font-style: normal; color: var(--accent); }
.about-text { font-size: 1rem; line-height: 1.8; color: rgba(245,245,240,.65); margin-bottom: 1.5rem; }
.about-signature { font-family: 'Georgia',serif; font-style: italic; font-size: 2rem; color: var(--accent); margin-top: 2.5rem; margin-bottom: .3rem; }
.about-sign-title { font-family: var(--font-condensed); font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--lightgrey); }
.about-certifs { display: flex; gap: 2rem; margin-top: 3rem; flex-wrap: wrap; }
.certif-item { display: flex; align-items: center; gap: .8rem; font-family: var(--font-condensed); font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(245,245,240,.5); }
.certif-dot { width: 6px; height: 6px; background: var(--accent); border-radius: 50%; flex-shrink: 0; }

/* ── SERVICES ── */
#services { padding: 10rem 0; background: var(--dark); }
.services-header { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 5rem; }
.services-title { font-family: var(--font-display); font-size: clamp(3rem,5vw,5.5rem); line-height: .95; text-transform: uppercase; color: var(--white); }
.services-title span { color: var(--accent); }
.services-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; background: rgba(255,255,255,.05); }
.service-card { background: var(--dark); padding: 3.5rem 3rem; position: relative; overflow: hidden; transition: background .4s; cursor: pointer; text-decoration: none; display: flex; flex-direction: column; height: 100%; }
.service-card::before { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: var(--accent); transition: width .5s ease; }
.service-card:hover { background: var(--dark2); }
.service-card:hover::before { width: 100%; }
.service-num { font-family: var(--font-display); font-size: 5rem; line-height: 1; color: rgba(255,255,255,.04); position: absolute; top: 1.5rem; right: 1.5rem; transition: color .4s; }
.service-card:hover .service-num { color: rgba(234,207,54,.08); }
.service-icon { width: 52px; height: 52px; margin-bottom: 2rem; color: var(--accent); }
.service-name { font-family: var(--font-display); font-size: 2rem; letter-spacing: .05em; text-transform: uppercase; color: var(--white); margin-bottom: 1rem; line-height: 1.1; }
.service-desc { font-size: .9rem; line-height: 1.7; color: rgba(245,245,240,.55); margin-bottom: 2rem; }
.service-note { font-size: .78rem; line-height: 1.5; color: rgba(245,245,240,.4); margin-bottom: 2rem; }
.service-link { font-family: var(--font-condensed); font-size: .75rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--accent); text-decoration: none; display: flex; align-items: center; gap: .8rem; transition: gap .3s; margin-top: auto; }
.service-link:hover { gap: 1.4rem; }
.service-link::after { content: '→'; font-size: 1rem; }

/* ── WHY ── */
#why { padding: 10rem 0; background: var(--black); overflow: hidden; }
.why-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8rem; align-items: center; }
.why-image { position: relative; }
.why-image-main { width: 100%; aspect-ratio: 4/5; object-fit: cover; filter: grayscale(15%); }
.why-image-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 40%, rgba(8,8,8,.6)); }
.why-image-text { position: absolute; bottom: 2rem; left: 2rem; right: 2rem; }
.why-image-quote { font-family: var(--font-display); font-size: 2.5rem; line-height: 1.1; color: var(--white); text-transform: uppercase; }
.why-title { font-family: var(--font-display); font-size: clamp(3rem,4.5vw,5rem); line-height: .95; text-transform: uppercase; color: var(--white); margin-bottom: 3rem; }
.why-title span { color: var(--accent); }
.why-list { list-style: none; display: flex; flex-direction: column; gap: 0; }
.why-item { display: flex; align-items: flex-start; gap: 1.5rem; padding: 1.8rem 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.why-item:first-child { border-top: 1px solid rgba(255,255,255,.06); }
.why-check { width: 28px; height: 28px; background: rgba(234,207,54,.12); border: 1px solid var(--accent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; color: var(--accent); font-size: .75rem; }
.why-item-title { font-family: var(--font-condensed); font-size: 1rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--white); margin-bottom: .3rem; }
.why-item-desc { font-size: .85rem; color: rgba(245,245,240,.5); line-height: 1.6; }

/* Desktop uniquement : la photo en aspect-ratio 4/5 (portrait) sur une
   colonne ~570-600px de large atteint ~715-745px de haut, ce qui rend la
   section entière (elle + son padding 10rem 0) plus haute qu'un écran
   1366×768 ou 1536×864 sans scroller. Ratio assoupli à 1/1 (carré, élégant,
   même cadrage/filtre/qualité) : sur la largeur de colonne réelle
   (~590-600px), ça tombe tout près de la hauteur naturelle de la colonne
   de texte (~600-625px), donc quasiment aucun vide au-dessus/en-dessous
   malgré `align-items: center` — testé plus fiable qu'un stretch en
   hauteur à 100%, qui entre en conflit circulaire avec l'aspect-ratio de
   base. Espacements resserrés en complément. Mobile/tablette (≤900px, cf.
   règles générales au-dessus) restent inchangés — ce bloc ne s'applique
   qu'au-delà. */
@media (min-width: 901px) {
  #why { padding: 7rem 0; }
  .why-grid { gap: 5rem; }
  .why-image-main { aspect-ratio: 1/1; }
  .why-title { margin-bottom: 2rem; }
  .why-item { padding: 1.2rem 0; }
}

/* ── STUDIO ── */
#studio { padding: 10rem 0; background: var(--black); }
.studio-top { display: grid; grid-template-columns: 1fr 1fr; gap: 8rem; align-items: center; margin-bottom: 6rem; }
.studio-title { font-family: var(--font-display); font-size: clamp(3rem,5vw,5.5rem); line-height: .95; text-transform: uppercase; color: var(--white); margin-bottom: 2rem; }
.studio-title span { color: var(--accent); }
.studio-text { font-size: 1rem; line-height: 1.8; color: rgba(245,245,240,.6); margin-bottom: 1.5rem; }
.studio-features { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 2.5rem; }
.studio-feat { display: flex; align-items: center; gap: .8rem; font-family: var(--font-condensed); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: rgba(245,245,240,.6); }
.studio-feat::before { content: ''; width: 16px; height: 1px; background: var(--accent); flex-shrink: 0; }
/* ── GALERIE PHOTO DU STUDIO (StudioGalleryImage) ──
   Remplace l'ancienne mosaïque statique de 5 images par une galerie
   dynamique administrable : une photo à la fois, défilement automatique
   toutes les 4s, swipe tactile, clic → lightbox (voir assets/studio-gallery.js).
   aspect-ratio 4/3 choisi pour rester proche de la hauteur de l'ancienne
   mosaïque (~310px), afin de ne pas annuler l'optimisation de hauteur déjà
   validée sur #studio. */
.studio-gallery { position: relative; width: 100%; aspect-ratio: 4/3; overflow: hidden; background: var(--dark); touch-action: pan-y; }
.studio-gallery-track { position: relative; width: 100%; height: 100%; }
.studio-gallery-slide {
  position: absolute; inset: 0; display: block; width: 100%; height: 100%;
  padding: 0; border: none; background: none; cursor: pointer;
  transform: translateX(100%);
}
.studio-gallery-slide.active { transform: translateX(0); z-index: 2; }
.studio-gallery-slide.transitioning { transition: transform .6s cubic-bezier(.16,1,.3,1); z-index: 2; }
.studio-gallery-img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(20%); transition: filter .4s; }
.studio-gallery-slide:hover .studio-gallery-img, .studio-gallery-slide:focus-visible .studio-gallery-img { filter: grayscale(0%); }
.studio-gallery-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;
  background: rgba(10,10,10,.55); border: 1px solid rgba(255,255,255,.15); color: var(--white);
  cursor: pointer; transition: background .3s, border-color .3s; backdrop-filter: blur(4px);
}
.studio-gallery-arrow:hover { background: var(--accent); border-color: var(--accent); color: var(--black); }
.studio-gallery-arrow-prev { left: .8rem; }
.studio-gallery-arrow-next { right: .8rem; }
.studio-gallery-dots { position: absolute; bottom: .9rem; left: 50%; transform: translateX(-50%); z-index: 3; display: flex; gap: .5rem; }
.studio-gallery-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.35); transition: background .3s, transform .3s; }
.studio-gallery-dot.active { background: var(--accent); transform: scale(1.25); }

/* ── LIGHTBOX GALERIE STUDIO ──
   Même langage visuel que .modal-overlay (fond sombre, transition d'ouverture
   douce) mais overlay dédié : la lightbox affiche une photo plein écran, pas
   un formulaire. Fermée par défaut via [hidden] ; assets/studio-gallery.js
   bascule display avant de déclencher l'opacité pour l'animation d'ouverture. */
.gallery-lightbox {
  position: fixed; inset: 0; z-index: 2200; display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.92); opacity: 0; transition: opacity .3s; padding: 2rem;
}
.gallery-lightbox[hidden] { display: none; }
.gallery-lightbox.open { opacity: 1; }
.gallery-lightbox-img { max-width: min(1100px, 92vw); max-height: 86vh; width: auto; height: auto; object-fit: contain; display: block; transform: scale(.96); transition: transform .3s; box-shadow: 0 30px 80px rgba(0,0,0,.5); }
.gallery-lightbox.open .gallery-lightbox-img { transform: scale(1); }
.gallery-lightbox-close {
  position: absolute; top: 1.5rem; right: 1.5rem; z-index: 3;
  width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.15); color: var(--white);
  font-size: 1.3rem; cursor: pointer; transition: background .3s, color .3s;
}
.gallery-lightbox-close:hover { background: var(--accent); color: var(--black); border-color: var(--accent); }
.gallery-lightbox-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 52px; height: 52px; display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.15); color: var(--white);
  cursor: pointer; transition: background .3s, color .3s;
}
.gallery-lightbox-arrow:hover { background: var(--accent); color: var(--black); border-color: var(--accent); }
.gallery-lightbox-arrow-prev { left: 1.5rem; }
.gallery-lightbox-arrow-next { right: 1.5rem; }
.gallery-lightbox-arrow[hidden] { display: none; }

/* ── PROGRAMS ── */
#programs { padding: 10rem 0; background: var(--dark); }
.programs-header { text-align: center; margin-bottom: 5rem; }
.programs-title { font-family: var(--font-display); font-size: clamp(3rem,5vw,5.5rem); line-height: .95; text-transform: uppercase; color: var(--white); margin-bottom: 1rem; }
.programs-title span { color: var(--accent); }
.programs-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; background: rgba(255,255,255,.05); }
.program-card { background: var(--dark); padding: 3rem 2.5rem; position: relative; overflow: hidden; transition: background .4s; }
.program-card::after { content: ''; position: absolute; top: 0; left: 0; width: 2px; height: 0; background: var(--accent); transition: height .5s ease; }
.program-card:hover { background: var(--dark2); }
.program-card:hover::after { height: 100%; }
.program-icon-wrap { width: 60px; height: 60px; background: rgba(234,207,54,.08); display: flex; align-items: center; justify-content: center; margin-bottom: 2rem; color: var(--accent); transition: background .3s; }
.program-card:hover .program-icon-wrap { background: rgba(234,207,54,.15); }
.program-name { font-family: var(--font-display); font-size: 1.8rem; text-transform: uppercase; color: var(--white); margin-bottom: 1rem; line-height: 1.1; }
.program-desc { font-size: .85rem; line-height: 1.7; color: rgba(245,245,240,.5); margin-bottom: 1.5rem; }
.program-results { display: flex; flex-direction: column; gap: .5rem; }
.program-result-item { display: flex; align-items: center; gap: .6rem; font-family: var(--font-condensed); font-size: .75rem; letter-spacing: .08em; color: rgba(245,245,240,.45); }
.program-result-item::before { content: ''; width: 4px; height: 4px; background: var(--accent); border-radius: 50%; flex-shrink: 0; }

/* ── PRICING ── */
#pricing { padding: 10rem 0; background: var(--black); }
.pricing-header { text-align: center; margin-bottom: 6rem; }
.pricing-title { font-family: var(--font-display); font-size: clamp(3rem,5vw,5.5rem); line-height: .95; text-transform: uppercase; color: var(--white); margin-bottom: 1rem; }
.pricing-title span { color: var(--accent); }
.pricing-carousel { overflow: hidden; position: relative; border: 1px solid rgba(255,255,255,.05); -webkit-mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%); mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%); touch-action: pan-y; cursor: grab; }
.pricing-track { display: flex; width: max-content; gap: 1px; background: rgba(255,255,255,.05); animation: pricingScroll 48s linear infinite; }
.pricing-carousel:hover .pricing-track { animation-play-state: paused; }
/* Drag souris / swipe tactile (voir app.js) — placé après la règle :hover
   ci-dessus pour gagner la cascade à spécificité égale pendant un drag,
   y compris sans survol (tactile). */
.pricing-carousel.dragging { cursor: grabbing; user-select: none; }
.pricing-carousel.dragging .pricing-track { animation-play-state: paused; }
.pricing-track.snapping { transition: transform .35s cubic-bezier(.16,1,.3,1); }
.price-card { background: var(--dark); padding: 3.5rem 2.5rem; position: relative; transition: background .4s; display: flex; flex-direction: column; flex: 0 0 320px; width: 320px; }
.price-card:hover { background: var(--dark2); }
.price-card.featured { background: var(--dark2); border-top: 3px solid var(--accent); }
.price-tag { position: absolute; top: -1px; right: 2rem; background: var(--accent); font-family: var(--font-condensed); font-size: .65rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--black); padding: .3rem .8rem; }
.price-name { font-family: var(--font-condensed); font-size: .75rem; font-weight: 600; letter-spacing: .25em; text-transform: uppercase; color: var(--lightgrey); margin-bottom: 1.5rem; }
.price-amount { font-family: var(--font-display); font-size: 4.5rem; line-height: 1; color: var(--white); margin-bottom: .5rem; }
.price-amount.free { color: var(--accent); font-size: 3rem; }
.price-unit { font-family: var(--font-condensed); font-size: .75rem; letter-spacing: .1em; color: rgba(245,245,240,.3); margin-bottom: 2rem; }
.price-divider { height: 1px; background: rgba(255,255,255,.07); margin-bottom: 2rem; }
.price-features { list-style: none; display: flex; flex-direction: column; gap: .9rem; flex: 1; margin-bottom: 2.5rem; }
.price-note { font-size: .72rem; line-height: 1.5; color: rgba(245,245,240,.4); margin-top: -1.5rem; margin-bottom: 1.5rem; }
.price-feature { display: flex; align-items: flex-start; gap: .8rem; font-size: .85rem; color: rgba(245,245,240,.55); line-height: 1.4; }
.price-feature::before { content: '✓'; color: var(--accent); font-size: .75rem; font-weight: 600; margin-top: 1px; flex-shrink: 0; }
.btn-price { background: transparent; border: 1px solid rgba(255,255,255,.2); color: var(--white); padding: .9rem; font-family: var(--font-condensed); font-size: .8rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; text-align: center; display: block; cursor: pointer; transition: background .3s, border-color .3s, color .3s; }
.btn-price:hover, .price-card.featured .btn-price { background: var(--accent); border-color: var(--accent); color: var(--black); }

@keyframes pricingScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .pricing-track { animation: none; }
}

/* ── TESTIMONIALS ── */
#testimonials { padding: 10rem 0; background: var(--black); }
.testi-header { text-align: center; margin-bottom: 6rem; }
.testi-title { font-family: var(--font-display); font-size: clamp(3rem,5vw,5.5rem); line-height: .95; text-transform: uppercase; color: var(--white); }
.testi-title span { color: var(--accent); }
.testi-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: rgba(255,255,255,.04); }
.testi-card { background: var(--black); padding: 3rem; position: relative; transition: background .4s; }
.testi-card:hover { background: rgba(26,26,26,.8); }
.testi-quote-mark { font-family: 'Georgia',serif; font-size: 6rem; line-height: .5; color: rgba(234,207,54,.15); margin-bottom: 1.5rem; display: block; }
.testi-text { font-size: .95rem; line-height: 1.8; color: rgba(245,245,240,.65); font-style: italic; margin-bottom: 2rem; }
.testi-author { display: flex; align-items: center; gap: 1rem; }
.testi-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(234,207,54,.3); }
.testi-name { font-family: var(--font-condensed); font-size: .85rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--white); margin-bottom: .2rem; }
.testi-detail { font-size: .75rem; color: var(--lightgrey); }
.testi-stars { display: flex; gap: 2px; color: var(--accent); font-size: .75rem; margin-bottom: 1rem; }

/* ── CTA BAND ── */
#cta-band { padding: 8rem 0; background: var(--accent); overflow: hidden; position: relative; }
#cta-band::before { content: 'C&C'; position: absolute; font-family: var(--font-display); font-size: 25rem; color: rgba(0,0,0,.06); top: 50%; left: 50%; transform: translate(-50%,-50%); white-space: nowrap; pointer-events: none; }
.cta-band-inner { text-align: center; position: relative; z-index: 1; }
.cta-band-title { font-family: var(--font-display); font-size: clamp(3rem,7vw,7rem); line-height: .95; text-transform: uppercase; color: var(--black); margin-bottom: 2rem; }
.cta-band-sub { font-size: 1.1rem; color: rgba(0,0,0,.6); margin-bottom: 3rem; }

/* Desktop uniquement : même philosophie que l'ajustement déjà validé sur
   #why (padding: 10rem 0 → 7rem 0, espacements internes resserrés), étendue
   section par section à la home — jamais une valeur unique appliquée
   partout. #actualites (aucun padding propre, hauteur pilotée par le
   contenu News protégé) et #cta-band (déjà la section la plus compacte,
   8rem) laissés inchangés : rien à corriger. #home (hero "Le Sport
   Autrement") strictement exclu, aucun sélecteur ci-dessous ne le
   concerne. Classes ciblées individuellement ou scopées par ID quand
   partagées avec d'autres pages (.programs-header, .pricing-header) pour
   ne jamais affecter Actualités ni les pages Coaching. */
@media (min-width: 901px) {
  /* #about : image (aspect-ratio 3/4, 763px) et texte (754px) déjà proches
     en hauteur — l'essentiel de l'excès vient du padding de section et des
     marges internes du texte, pas d'un déséquilibre image/texte. */
  #about { padding: 7rem 0; }
  .about-image-main { aspect-ratio: 4/5; }
  .about-title { margin-bottom: 1.5rem; }
  .about-text { margin-bottom: 1.2rem; }

  /* #services : 4 cartes avec padding interne généreux (3.5rem 3rem) +
     grand espace sous l'en-tête (5rem). */
  #services { padding: 7rem 0; }
  .services-header { margin-bottom: 3.5rem; }
  .service-card { padding: 2.5rem 2.5rem; }
  .service-icon { margin-bottom: 1.5rem; }
  .service-desc { margin-bottom: 1.5rem; }

  /* #studio : texte (448px) plus haut que la mosaïque photo (310px, déjà
     compacte) — resserré côté texte plutôt que retoucher les 5 photos. */
  #studio { padding: 7rem 0; }
  .studio-top { margin-bottom: 4rem; }
  .studio-text { margin-bottom: 1.2rem; }
  .studio-features { margin-top: 2rem; }

  /* #programs : 4 cartes, padding interne + en-tête similaires à #services. */
  #programs { padding: 7rem 0; }
  #programs .programs-header { margin-bottom: 3.5rem; }
  .program-card { padding: 2.2rem 2rem; }
  .program-icon-wrap { margin-bottom: 1.5rem; }
  .program-name { margin-bottom: .7rem; }
  .program-desc { margin-bottom: 1.2rem; }

  /* #pricing : uniquement le padding externe et l'espace sous l'en-tête —
     carrousel, cartes, prix, CTA et JS du drag strictement non touchés. */
  #pricing { padding: 7rem 0; }
  #pricing .pricing-header { margin-bottom: 4rem; }
}

/* ── NEWSLETTER ── */
#newsletter { padding: 6rem 0; background: var(--black); border-top: 1px solid rgba(255,255,255,.04); }
.newsletter-inner { display: flex; align-items: center; justify-content: space-between; gap: 4rem; flex-wrap: wrap; }
.newsletter-text h3 { font-family: var(--font-display); font-size: 2.5rem; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.newsletter-text h3 span { color: var(--accent); }
.newsletter-text p { font-size: .9rem; color: rgba(245,245,240,.5); }
.newsletter-form { display: flex; flex: 1; max-width: 480px; }
.newsletter-input { flex: 1; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); border-right: none; color: var(--white); padding: 1rem 1.5rem; font-family: var(--font-body); font-size: .9rem; outline: none; transition: border-color .3s; }
.newsletter-input:focus { border-color: var(--accent); }
.newsletter-input::placeholder { color: rgba(245,245,240,.25); }
.newsletter-btn { background: var(--accent); border: none; color: var(--black); padding: 1rem 2rem; font-family: var(--font-condensed); font-size: .8rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; cursor: pointer; transition: background .3s; white-space: nowrap; }
.newsletter-btn:hover { background: var(--accent-light); }

/* ── CONTACT ── */
#contact { padding: 10rem 0; background: var(--dark); }
.contact-grid { display: grid; grid-template-columns: 1fr 1.4fr; gap: 8rem; }
.contact-info-title { font-family: var(--font-display); font-size: clamp(2.5rem,4vw,4.5rem); line-height: .95; text-transform: uppercase; color: var(--white); margin-bottom: 2rem; }
.contact-info-title span { color: var(--accent); }
.contact-text { font-size: .95rem; line-height: 1.8; color: rgba(245,245,240,.55); margin-bottom: 3rem; }
.contact-details { display: flex; flex-direction: column; gap: 1.5rem; margin-bottom: 3rem; }
.contact-detail { display: flex; align-items: flex-start; gap: 1.2rem; }
.contact-detail-icon { width: 40px; height: 40px; background: rgba(234,207,54,.1); display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--accent); }
.contact-detail-label { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--lightgrey); margin-bottom: .3rem; }
.contact-detail-val { font-size: .95rem; color: var(--white); }
.contact-socials { display: flex; gap: 1rem; }
.social-btn { width: 44px; height: 44px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); display: flex; align-items: center; justify-content: center; color: var(--lightgrey); text-decoration: none; transition: background .3s, color .3s, border-color .3s; font-size: 1rem; }
.social-btn:hover { background: var(--accent); color: var(--black); border-color: var(--accent); }
.contact-form { display: flex; flex-direction: column; gap: 1.2rem; }
.contact-form .recaptcha-consent-container { margin-top: 1.5rem; }
.contact-form .btn-primary { margin-top: 1.25rem; }
.contact-map { margin-top: 6rem; border-radius: 8px; overflow: hidden; border: 1px solid rgba(255,255,255,.08); box-shadow: 0 20px 50px rgba(0,0,0,.35); }
.contact-map iframe { display: block; width: 100%; height: 420px; filter: grayscale(25%) contrast(1.05) brightness(.95); transition: filter .4s; }
.contact-map:hover iframe { filter: grayscale(0%) contrast(1) brightness(1); }

/* Placeholder Google Maps (Phase 3A) — même hauteur que l'iframe réelle à
   chaque palier pour éviter tout saut de mise en page à l'obtention du
   consentement. */
.contact-map-placeholder {
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
  height: 420px; padding: 2.5rem; background: var(--dark);
}
.contact-map-placeholder-icon { color: var(--accent); margin-bottom: 1.2rem; }
.contact-map-placeholder-title { font-family: var(--font-display); font-size: 1.6rem; letter-spacing: .03em; text-transform: uppercase; color: var(--white); margin-bottom: .6rem; }
.contact-map-placeholder-desc { font-size: .9rem; line-height: 1.6; color: rgba(245,245,240,.55); max-width: 380px; margin-bottom: 1.8rem; }
.contact-map-placeholder-actions { display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap; justify-content: center; }

/* Desktop uniquement : même constat que sur la home (10rem de padding avant
   ajustement) — ici le padding-bottom de 10rem créait un vide de 160px
   entre la carte Google Maps et le footer, sans contenu pour le justifier.
   Réduit à 7rem, cohérent avec les autres sections resserrées du site. */
@media (min-width: 901px) {
  #contact { padding: 7rem 0; }
}

/* ── FORMULAIRES ── */
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
.form-group { display: flex; flex-direction: column; gap: .5rem; }
.form-label { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.4); }
.form-input,.form-textarea,.form-select { background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); border-bottom-color: rgba(255,255,255,.15); color: var(--white); padding: 1rem 1.2rem; font-family: var(--font-body); font-size: .9rem; outline: none; transition: border-color .3s; width: 100%; }
.form-input:focus,.form-textarea:focus,.form-select:focus { border-color: var(--accent); }
.form-input::placeholder,.form-textarea::placeholder { color: rgba(245,245,240,.2); }
.form-textarea { resize: vertical; min-height: 120px; }
.form-select { cursor: pointer; }
.form-select option { background: var(--dark); }
.form-required-mark { color: var(--accent); margin-left: .2em; }
.form-required-note { font-size: .75rem; color: rgba(245,245,240,.35); margin-top: 1rem; }
.form-input:invalid:not(:placeholder-shown) { border-color: rgba(255,80,80,.5); }
.form-input:disabled { color: var(--accent); font-weight: 600; cursor: default; opacity: 1; }
.form-check-label { display: flex; align-items: flex-start; gap: .6rem; font-size: .8rem; color: rgba(245,245,240,.5); line-height: 1.5; cursor: pointer; }
.form-check-label input[type="checkbox"] { margin-top: .2rem; accent-color: var(--accent); width: 16px; height: 16px; flex-shrink: 0; }
.form-check-label a { color: var(--accent); text-decoration: underline; }

/* ── FOOTER ── */
footer { background: var(--black); border-top: 1px solid rgba(255,255,255,.06); padding: 5rem 0 3rem; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 4rem; margin-bottom: 4rem; }
.footer-brand p { font-size: .85rem; line-height: 1.7; color: rgba(245,245,240,.4); margin-bottom: 1.5rem; margin-top: 1rem; }
.footer-socials { display: flex; gap: .8rem; }
.footer-social { width: 36px; height: 36px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); display: flex; align-items: center; justify-content: center; color: rgba(245,245,240,.4); text-decoration: none; font-size: .85rem; transition: all .3s; }
.footer-social:hover { background: var(--accent); color: var(--black); border-color: var(--accent); }
.footer-col h4 { font-family: var(--font-condensed); font-size: .7rem; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; color: var(--white); margin-bottom: 1.5rem; }
.footer-links { list-style: none; display: flex; flex-direction: column; gap: .8rem; }
.footer-links a { font-size: .85rem; color: rgba(245,245,240,.4); text-decoration: none; transition: color .3s; display: flex; align-items: center; gap: .5rem; }
.footer-links a:hover { color: var(--accent); }
.footer-links a::before { content: ''; width: 0; height: 1px; background: var(--accent); transition: width .3s; display: block; }
.footer-links a:hover::before { width: 12px; }
.footer-bottom { padding-top: 3rem; border-top: 1px solid rgba(255,255,255,.05); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }
.footer-copy { font-size: .8rem; color: rgba(245,245,240,.25); }
.footer-bottom-links { display: flex; gap: 2rem; list-style: none; flex-wrap: wrap; }
.footer-bottom-links a { font-size: .75rem; color: rgba(245,245,240,.25); text-decoration: none; transition: color .3s; }
.footer-bottom-links a:hover { color: var(--accent); }
.footer-cookie-link { background: none; border: none; padding: 0; font-family: inherit; font-size: .75rem; color: rgba(245,245,240,.25); text-decoration: none; cursor: pointer; transition: color .3s; }
.footer-cookie-link:hover { color: var(--accent); }
.footer-brand a img { height: 150px; display: block; margin-bottom: .8rem; }

/* Desktop/tablette large (>900px) uniquement — le footer repasse en une
   seule colonne empilée à ≤900px (voir .footer-grid ci-dessus), où ce
   déséquilibre entre colonnes n'existe plus (rien à corriger, mobile
   inclus, volontairement non touché ici).
   Vraie cause du décalage visuel signalé : measuré directement dans
   images/logo.png (612×408) — le graphisme visible (icône + texte + filet
   décoratif) n'occupe que le tiers central du fichier : ~20,6% de marge
   transparente au-dessus, ~24,8% en dessous. Les boîtes DOM (grid, colonne,
   lien, image) sont déjà parfaitement alignées en haut (vérifié : mêmes
   coordonnées exactes que le <h4>NAVIGATION</h4> voisin) — la suppression
   des deux <br> d'une correction précédente avait donc bien réglé
   l'espacement RÉEL entre les éléments, mais ne pouvait rien changer à ce
   vide interne au PNG, qui grandit en pixels absolus avec la taille
   d'affichage (150px ici) et donne l'illusion d'un logo "descendu".
   Fichier image non modifié : recadrage par overflow:hidden + décalage
   négatif calculé exactement sur la marge transparente mesurée (150px ×
   20,6% ≈ 31px), jamais une valeur arbitraire. */
@media (min-width: 901px) {
  .footer-brand .nav-logo { display: block; height: 82px; overflow: hidden; margin-bottom: .8rem; }
  .footer-brand .nav-logo img { margin-top: -31px; margin-bottom: 0; }
}

/* ── MODAL ── */
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.85); z-index: 2000; display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity .3s; backdrop-filter: blur(8px); padding: 2rem; }
.modal-overlay.open { opacity: 1; pointer-events: all; }
.modal { background: var(--dark); border: 1px solid rgba(255,255,255,.08); padding: 3.5rem; max-width: 560px; width: 100%; position: relative; max-height: 90vh; overflow-y: auto; transform: translateY(20px); transition: transform .3s; }
.modal-overlay.open .modal { transform: translateY(0); }
.modal-close { position: absolute; top: 1.5rem; right: 1.5rem; background: none; border: none; color: var(--lightgrey); font-size: 1.5rem; cursor: pointer; transition: color .3s; }
.modal-close:hover { color: var(--accent); }
.modal-title { font-family: var(--font-display); font-size: 2.5rem; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.modal-subtitle { font-size: .85rem; color: rgba(245,245,240,.45); margin-bottom: 2rem; }
.modal-form { display: flex; flex-direction: column; gap: 1rem; }
.modal-form .recaptcha-consent-container { margin-top: .5rem; }

/* ── SERVICE HERO (pages intérieures) ── */
.service-hero { position: relative; height: 70vh; min-height: 500px; display: flex; align-items: center; overflow: hidden; }
.service-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center; filter: brightness(.35) saturate(.7); }
.service-hero-overlay { position: absolute; inset: 0; background: linear-gradient(to right, rgba(8,8,8,.9) 0%, rgba(8,8,8,.4) 60%, transparent 100%), linear-gradient(to top, rgba(8,8,8,.95) 0%, transparent 30%); }
.service-hero-content { position: relative; z-index: 2; max-width: 1400px; width: 100%; margin: 0 auto; padding: 0 4rem; padding-top: 72px; }
.service-hero-back { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--font-condensed); font-size: .72rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.4); text-decoration: none; margin-bottom: 2rem; transition: color .3s; }
.service-hero-back::before { content: '←'; }
.service-hero-back:hover { color: var(--accent); }
.service-hero-tag { font-family: var(--font-condensed); font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); margin-bottom: 1rem; display: flex; align-items: center; gap: .8rem; }
.service-hero-tag::before { content: ''; width: 30px; height: 1px; background: var(--accent); }
.service-hero-title { font-family: var(--font-display); font-size: clamp(3.5rem,8vw,8rem); line-height: .92; text-transform: uppercase; color: var(--white); margin-bottom: 1.5rem; }
.service-hero-title em { font-style: normal; color: var(--accent); }
/* Modificateur ciblé (Contact, Actualités uniquement) : ramène le titre à la
   même échelle que .hero-title (accueil) sans toucher .service-hero-title,
   partagée par d'autres pages (mentions légales, CGV, cookies, messagerie,
   planning, historiques, profil). */
.service-hero-title--compact { font-size: clamp(3rem,6.75vw,6.75rem); }
/* Variantes de hauteur réduite (pages utilitaires : contact, actualités,
   historiques, mentions légales, messagerie, profil) — remplace les
   anciens style="min-height:Xvh" sur .service-hero. */
.service-hero--short   { min-height: 40vh; }
.service-hero--shorter { min-height: 35vh; }
.service-hero--shortest { min-height: 30vh; }
.service-hero-subtitle { font-size: 1.05rem; font-weight: 300; color: rgba(245,245,240,.65); max-width: 520px; line-height: 1.7; }

#demande-entreprise { scroll-margin-top: 120px; }

/* ── PAGES LÉGALES ── */
.legal-page { padding: 6rem 0 8rem; background: var(--black); }
.legal-content { max-width: 840px; }
.legal-updated { font-family: var(--font-condensed); font-size: .75rem; letter-spacing: .15em; text-transform: uppercase; color: rgba(245,245,240,.3); margin-bottom: 3.5rem; }
.legal-content h2 { font-family: var(--font-display); font-size: 1.9rem; letter-spacing: .02em; text-transform: uppercase; color: var(--white); margin: 3.2rem 0 1.2rem; }
.legal-content h2:first-child { margin-top: 0; }
.legal-content h2 span { color: var(--accent); }
.legal-content h3 { font-family: var(--font-condensed); font-size: .85rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); margin: 2rem 0 .8rem; }
.legal-content p { font-size: .95rem; line-height: 1.85; color: rgba(245,245,240,.6); margin-bottom: 1.2rem; }
.legal-content ul { margin: 0 0 1.2rem 1.3rem; }
.legal-content li { font-size: .95rem; line-height: 1.8; color: rgba(245,245,240,.6); margin-bottom: .6rem; }
.legal-content strong { color: var(--white); font-weight: 600; }
.legal-content a { color: var(--accent); text-decoration: underline; text-underline-offset: .2em; }
.legal-placeholder { color: var(--accent); font-style: italic; }
.legal-table { width: 100%; border-collapse: collapse; margin-bottom: 2rem; }
.legal-table th, .legal-table td { text-align: left; padding: .9rem 1rem; border-bottom: 1px solid rgba(255,255,255,.07); font-size: .85rem; color: rgba(245,245,240,.6); vertical-align: top; }
.legal-table th { width: 40%; font-family: var(--font-condensed); letter-spacing: .1em; text-transform: uppercase; font-size: .7rem; color: var(--lightgrey); }
.legal-table td { color: var(--white); }

/* Tableau récapitulatif multi-colonnes (politique de cookies) : le th
   à width:40% ci-dessus est pensé pour un tableau à 2 colonnes clé/valeur ;
   ce variant l'annule et ajoute un défilement horizontal sur mobile plutôt
   que de casser la mise en page. */
.legal-table-scroll { width: 100%; overflow-x: auto; margin-bottom: 2rem; }
.legal-table-scroll .legal-table { margin-bottom: 0; min-width: 720px; }
.legal-table-summary th { width: auto; white-space: nowrap; }

/* ── PLANNING ── */
.planning-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3rem; flex-wrap: wrap; gap: 1rem; }
.planning-nav-btn { font-family: var(--font-condensed); font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.5); text-decoration: none; border: 1px solid rgba(255,255,255,.1); padding: .6rem 1.4rem; transition: all .3s; }
.planning-nav-btn:hover { border-color: var(--accent); color: var(--accent); }
.planning-nav-btn[aria-disabled="true"] { opacity: .4; pointer-events: none; }
.planning-week-title { font-family: var(--font-display); font-size: 2rem; text-transform: uppercase; color: var(--white); }
.planning-grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 1px; background: rgba(255,255,255,.05); margin-bottom: 2rem; }
.planning-day { background: var(--dark); min-height: 200px; }
.planning-day-header { padding: 1rem; border-bottom: 1px solid rgba(255,255,255,.05); }
.planning-day-name { font-family: var(--font-condensed); font-size: .75rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--accent); }
.planning-day-date { font-family: var(--font-condensed); font-size: .85rem; color: rgba(245,245,240,.4); }
.planning-day-courses { padding: 1rem; display: flex; flex-direction: column; gap: 1rem; }
.planning-no-course { font-size: .8rem; color: rgba(245,245,240,.2); font-style: italic; }
.planning-course-card { background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); padding: 1rem; transition: background .3s; }
.planning-course-card.full { opacity: .6; }
.planning-course-card:hover { background: rgba(255,255,255,.06); }
.planning-course-time { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .1em; color: var(--accent); margin-bottom: .3rem; }
.planning-course-name { font-family: var(--font-condensed); font-size: .85rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.planning-course-spots { font-size: .75rem; margin-bottom: .5rem; }
.spots-available { color: rgba(234,207,54,.8); }
.spots-full { color: rgba(255,80,80,.8); }
.planning-course-bar { height: 2px; background: rgba(255,255,255,.08); margin-bottom: .8rem; }
.planning-course-bar-fill { height: 100%; background: var(--accent); transition: width .3s; }
.planning-course-booked { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: #4ade80; }
.btn-book-course { display: block; width: 100%; background: var(--accent); color: var(--black); border: none; padding: .5rem; font-family: var(--font-condensed); font-size: .7rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; cursor: pointer; text-align: center; text-decoration: none; transition: background .3s; margin-top: .5rem; }
.btn-book-course:hover { background: var(--accent-light); }
.btn-buy-sessions { background: transparent; border: 1px solid var(--accent); color: var(--accent); }
.btn-buy-sessions:hover { background: var(--accent); color: var(--black); }
.btn-cancel-course { display: block; width: 100%; background: transparent; border: 1px solid rgba(255,80,80,.3); color: rgba(255,80,80,.7); padding: .4rem; font-family: var(--font-condensed); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; text-align: center; transition: all .3s; }
.btn-cancel-course:hover { background: rgba(255,80,80,.1); border-color: rgba(255,80,80,.6); }
.btn-cancel-late { border-color: rgba(255,80,80,.5); }
.planning-course-full-msg { font-size: .75rem; color: rgba(255,255,255,.3); text-align: center; margin-top: .5rem; }
.planning-legend { display: flex; gap: 2rem; flex-wrap: wrap; margin-top: 2rem; }
.legend-item { display: flex; align-items: center; gap: .6rem; font-family: var(--font-condensed); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(245,245,240,.4); }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; }
.legend-dot.available { background: var(--accent); }
.legend-dot.full { background: rgba(255,80,80,.7); }
.legend-dot.booked { background: #4ade80; }

/* ── HISTORIQUE ── */
.history-summary { display: grid; grid-template-columns: repeat(3,1fr) auto; gap: 2rem; padding: 2.5rem; background: var(--dark); border: 1px solid rgba(255,255,255,.05); margin-bottom: 4rem; align-items: center; }
.history-stat-num { font-family: var(--font-display); font-size: 3.5rem; line-height: 1; color: var(--white); }
.history-stat-label { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.4); }
.history-empty { padding: 3rem; background: var(--dark); text-align: center; color: rgba(245,245,240,.4); font-size: .95rem; }
.history-empty a { color: var(--accent); }
.history-summary-cta { align-self: center; }
.section-label-history { margin-top: 4rem; margin-bottom: 2rem; }
.history-note-text { color: rgba(245,245,240,.4); font-size: .85rem; margin: 0; }

/* ── Message membre (détail d'un message admin→adhérent) ── */
.member-message-card { background: var(--dark); border: 1px solid rgba(255,255,255,.06); padding: 2.5rem; max-width: 640px; }
.member-message-meta { color: rgba(245,245,240,.4); font-size: .85rem; margin-bottom: 1.5rem; }
.member-message-content { color: var(--white); font-size: 1.05rem; line-height: 1.7; white-space: pre-line; margin: 0; }

/* ── Actualités : label "Toutes les actualités" décalé quand une news mise
   en avant est déjà affichée au-dessus (voir news/index.html.twig). ── */
.section-label--pushed { margin-top: 5rem; }

/* ── Profil membre ── */
.profile-stats-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 1px; background: rgba(255,255,255,.05); margin-bottom: 4rem; }
.profile-stat-card { background: var(--dark); padding: 3rem; text-align: center; }
.profile-stat-num { font-family: var(--font-display); font-size: 4rem; color: var(--white); line-height: 1; }
.profile-stat-num--accent { color: var(--accent); }
.profile-stat-label { font-family: var(--font-condensed); font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(245,245,240,.4); margin-top: .5rem; }
.profile-actions { display: flex; gap: 1.5rem; flex-wrap: wrap; margin-bottom: 3rem; }
.profile-card { background: var(--dark); border: 1px solid rgba(255,255,255,.06); max-width: 560px; }
.profile-card--session { padding: 2rem; margin-bottom: 4rem; }
.profile-card--info { padding: 2.5rem; }
.profile-next-session-time { color: var(--accent); font-family: var(--font-display); font-size: 1.8rem; }
.profile-next-session-duration { color: rgba(245,245,240,.5); font-size: .9rem; margin-top: .5rem; }
.profile-empty-text { color: rgba(245,245,240,.5); margin: 0; }
.profile-info-list { display: flex; flex-direction: column; gap: 1.5rem; }
.profile-field-value { color: var(--white); font-size: 1rem; margin-top: .3rem; }

/* ── Connexion : lien "mot de passe oublié" ── */
.auth-forgot-password-row { text-align: right; margin-top: .5rem; }
.auth-forgot-password-link { font-size: .85rem; color: #eacf36; }

/* ── Inscription : bandeau récapitulatif d'invitation (séance d'essai /
   offre) ── */
.auth-invitation-banner { margin: 0 0 1.5rem; padding: 1rem 1.25rem; background: rgba(234,207,54,.1); border-left: 3px solid #eacf36; }
.auth-invitation-title { font-weight: 600; }
.auth-invitation-detail { color: rgba(245,245,240,.7); font-size: .9rem; margin-top: .25rem; }
.form-input-readonly { opacity: .7; cursor: not-allowed; }

/* ============================================================
   Messagerie membre — conversation (member_message/conversation.html.twig)
   Déplacé depuis le <style> inline du template (Phase Sécurité 2B-4) —
   contenu inchangé, classes déjà scoping "mmc-" existantes.
   ============================================================ */
.mmc-wrap { max-width: 760px; margin: 0 auto; }

.mmc-flash { padding: .8rem 1.1rem; margin-bottom: 1.5rem; font-size: .9rem; font-family: var(--font-body); }
.mmc-flash-success { background: rgba(74,222,128,.1); color: #4ade80; }
.mmc-flash-error { background: rgba(224,85,85,.12); color: #e88; }

.mmc-history {
  background: var(--dark); border: 1px solid rgba(255,255,255,.06); border-top: 3px solid var(--accent);
  padding: 1.75rem; max-height: 55vh; overflow-y: auto; display: flex; flex-direction: column; gap: 1rem;
}
.mmc-day-label {
  text-align: center; font-family: var(--font-condensed); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(245,245,240,.35); margin: .5rem 0;
}
.mmc-empty { text-align: center; color: rgba(245,245,240,.3); font-size: .95rem; padding: 2.5rem 0; font-family: var(--font-body); }

.mmc-row { display: flex; }
.mmc-row-admin { justify-content: flex-start; }
.mmc-row-member { justify-content: flex-end; }

.mmc-bubble { max-width: 78%; padding: .9rem 1.15rem; word-break: break-word; font-family: var(--font-body); }
.mmc-bubble-admin {
  background: var(--dark2); border: 1px solid rgba(255,255,255,.08);
  border-radius: 4px 14px 14px 14px;
}
.mmc-bubble-member {
  background: rgba(234,207,54,.12); border: 1px solid rgba(234,207,54,.3);
  border-radius: 14px 4px 14px 14px;
}
.mmc-bubble-author {
  font-family: var(--font-condensed); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase;
  margin-bottom: .35rem;
}
.mmc-bubble-admin .mmc-bubble-author { color: rgba(245,245,240,.45); }
.mmc-bubble-member .mmc-bubble-author { color: var(--accent); text-align: right; }
.mmc-bubble-subject { font-size: .88rem; font-weight: 700; color: var(--white); margin-bottom: .3rem; }
.mmc-bubble-content { font-size: .95rem; color: var(--white); line-height: 1.55; white-space: pre-line; }
.mmc-bubble-meta { font-size: .72rem; color: rgba(245,245,240,.35); margin-top: .5rem; }
.mmc-bubble-member .mmc-bubble-meta { text-align: right; }

.mmc-form {
  background: var(--dark); border: 1px solid rgba(255,255,255,.06); border-top: none; padding: 1.5rem;
}
.mmc-form-subject { margin-bottom: .9rem; }
.mmc-form-content { margin-bottom: 1.1rem; }
.mmc-form-actions { display: flex; justify-content: flex-end; }

@media (max-width: 640px) {
  .mmc-bubble { max-width: 92%; }
  .mmc-history { max-height: 48vh; padding: 1.1rem; }
  .mmc-form { padding: 1.1rem; }
}
.history-table { display: flex; flex-direction: column; gap: 1px; background: rgba(255,255,255,.04); }
.history-row { display: grid; grid-template-columns: 140px 1fr 160px 200px; gap: 1.5rem; align-items: center; background: var(--dark); padding: 1.2rem 1.5rem; transition: background .3s; }
.history-row:hover { background: var(--dark2); }
.history-row.past { opacity: .6; }
.history-day { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; color: var(--accent); }
.history-date-num { font-size: .9rem; color: var(--white); }
.history-course-name { font-family: var(--font-condensed); font-size: .9rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--white); }
.history-course-time { font-size: .8rem; color: rgba(245,245,240,.4); }
.status-badge { font-family: var(--font-condensed); font-size: .65rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; padding: .3rem .8rem; display: inline-block; }
.status-badge.confirmed { background: rgba(234,207,54,.12); color: var(--accent); }
.status-badge.done { background: rgba(74,222,128,.1); color: #4ade80; }
.status-badge.cancelled { background: rgba(255,80,80,.1); color: rgba(255,80,80,.8); }
.btn-cancel-sm { background: transparent; border: 1px solid rgba(255,80,80,.3); color: rgba(255,80,80,.7); padding: .4rem .9rem; font-family: var(--font-condensed); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; transition: all .3s; white-space: nowrap; }
.btn-cancel-sm:hover { background: rgba(255,80,80,.1); }
.btn-cancel-late-sm { border-color: rgba(255,80,80,.5); }

/* ── AUTH ── */
.auth-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 72px 2rem 4rem; background: var(--black); }
.auth-card { background: var(--dark); border: 1px solid rgba(255,255,255,.08); padding: 3.5rem; max-width: 460px; width: 100%; }
.auth-title { font-family: var(--font-display); font-size: 3rem; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.auth-subtitle { font-size: .9rem; color: rgba(245,245,240,.45); margin-bottom: 2.5rem; }
.auth-form { display: flex; flex-direction: column; gap: 1.2rem; }
.auth-links { margin-top: 1.5rem; text-align: center; font-size: .85rem; color: rgba(245,245,240,.4); }
.auth-links a { color: var(--accent); text-decoration: none; }

/* ── FLASH MESSAGES ── */
.flash { padding: 1rem 1.5rem; margin-bottom: 1.5rem; font-family: var(--font-condensed); font-size: .85rem; letter-spacing: .1em; }
.flash-success { background: rgba(74,222,128,.1); border: 1px solid rgba(74,222,128,.3); color: #4ade80; }
.flash-error { background: rgba(255,80,80,.1); border: 1px solid rgba(255,80,80,.3); color: rgba(255,80,80,.9); }

/* ── ACTUALITÉS (NEWS) ── */
.news-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 2.5rem; }
.news-card { background: var(--dark); overflow: hidden; text-decoration: none; display: flex; flex-direction: column; transition: background .4s, transform .4s; }
.news-card:hover { background: var(--dark2); transform: translateY(-4px); }
.news-card-media { position: relative; display: block; aspect-ratio: 16/10; overflow: hidden; background: var(--dark2); }
.news-card-img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; display: block; }
.news-card:hover .news-card-img { transform: scale(1.06); }
.news-card-noimage { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: rgba(234,207,54,.35); background: linear-gradient(135deg, var(--dark2), var(--dark3)); }
.news-card-badge { position: absolute; top: 1rem; left: 1rem; background: var(--accent); color: var(--black); font-family: var(--font-condensed); font-size: .65rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; padding: .35rem .8rem; }
.news-card-body { padding: 1.8rem 1.6rem 2rem; display: flex; flex-direction: column; flex: 1; }
.news-card-date { font-family: var(--font-condensed); font-size: .72rem; letter-spacing: .15em; text-transform: uppercase; color: var(--accent); margin-bottom: .6rem; }
.news-card-title { font-family: var(--font-display); font-size: 1.4rem; line-height: 1.15; text-transform: uppercase; color: var(--white); margin-bottom: .8rem; }
.news-card-title a { color: inherit; text-decoration: none; transition: color .3s; }
.news-card-title a:hover { color: var(--accent); }
.news-card-excerpt { font-size: .9rem; line-height: 1.7; color: rgba(245,245,240,.55); margin-bottom: 1.2rem; flex: 1; }
.news-card-link { font-family: var(--font-condensed); font-size: .78rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); text-decoration: none; margin-top: auto; }
.news-card-link:hover { color: var(--accent-light); }

.news-featured-card { display: grid; grid-template-columns: 1.2fr 1fr; gap: 0; background: var(--dark); overflow: hidden; margin-bottom: 2rem; }
.news-featured-media { position: relative; display: block; min-height: 340px; overflow: hidden; background: var(--dark2); }
.news-featured-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.news-featured-noimage { min-height: 340px; }
.news-featured-body { padding: 3rem 3rem 3rem 3.5rem; display: flex; flex-direction: column; justify-content: center; }
.news-featured-title { font-family: var(--font-display); font-size: clamp(2rem,3vw,2.8rem); line-height: 1.05; text-transform: uppercase; color: var(--white); margin: .8rem 0 1.2rem; }
.news-featured-title a { color: inherit; text-decoration: none; transition: color .3s; }
.news-featured-title a:hover { color: var(--accent); }
.news-featured-excerpt { font-size: 1rem; line-height: 1.8; color: rgba(245,245,240,.6); margin-bottom: 1.8rem; }

/* Section liste actualités : padding-bottom garantit un espacement propre
   entre la pagination (dernier élément) et le footer, quel que soit le
   nombre de pages. */
#news-index { padding-bottom: 6rem; }
#videos-index { padding-bottom: 6rem; }

/* Toujours dans le flux normal de la page — jamais fixed/sticky — donc ne
   bouge pas au défilement et reste juste avant le footer. */
.news-pagination { position: static; display: flex; align-items: center; justify-content: center; gap: 1.5rem; margin-top: 4rem; flex-wrap: wrap; }
.news-page-link { font-family: var(--font-condensed); font-size: .8rem; letter-spacing: .15em; text-transform: uppercase; color: var(--white); text-decoration: none; border: 1px solid rgba(255,255,255,.2); padding: .7rem 1.6rem; transition: border-color .3s, color .3s, opacity .3s; white-space: nowrap; }
.news-page-link:hover { border-color: var(--accent); color: var(--accent); }
.news-page-link.disabled { color: rgba(245,245,240,.25); border-color: rgba(255,255,255,.08); pointer-events: none; cursor: default; }
.news-page-numbers { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; justify-content: center; }
.news-page-num { display: inline-flex; align-items: center; justify-content: center; min-width: 2.6rem; height: 2.6rem; padding: 0 .4rem; font-family: var(--font-condensed); font-size: .85rem; font-weight: 500; color: rgba(245,245,240,.7); text-decoration: none; border: 1px solid rgba(255,255,255,.15); transition: border-color .3s, color .3s, background .3s; }
.news-page-num:hover { border-color: var(--accent); color: var(--accent); }
.news-page-num.active { background: var(--accent); border-color: var(--accent); color: var(--black); font-weight: 700; pointer-events: none; }
.news-page-ellipsis { display: inline-flex; align-items: center; justify-content: center; min-width: 1.6rem; color: rgba(245,245,240,.35); font-family: var(--font-condensed); }

.news-empty { padding: 6rem 0; text-align: center; color: rgba(245,245,240,.4); font-size: 1rem; }
.news-home-more { text-align: center; margin-top: 3rem; }

/* ══════════════════════════════════════════════════════════
   PAGE DÉTAIL D'UNE ACTUALITÉ — reconstruction complète.
   Toutes les classes sont préfixées news-detail__ (BEM) et ne sont
   utilisées que par templates/news/show.html.twig, pour ne plus jamais
   entrer en conflit avec d'autres pages. Une seule hiérarchie de largeurs,
   jamais de position:absolute/fixed ni de marge négative pour la structure.
   ══════════════════════════════════════════════════════════ */

/* Section racine : fond, couleur, respiration verticale. padding-top (140px)
   dégage largement la nav fixe du site (72px de haut, voir règle "nav"). */
.news-detail-page {
  padding: 140px 24px 80px;
  background: var(--black);
  color: var(--white);
}

/* Largeur principale de l'article (image, galerie, vidéo, navigation). */
.news-detail {
  width: min(1120px, 100%);
  margin: 0 auto;
}

/* Ligne « ← Retour aux actualités » / « Publié le … ». */
.news-detail__meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  margin-bottom: 48px;
  flex-wrap: wrap;
}
.news-detail__back {
  display: inline-flex;
  align-items: center;
  gap: .5em;
  font-family: var(--font-condensed);
  font-size: .8rem;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(245,245,240,.6);
  text-decoration: none;
  transition: color .3s;
}
.news-detail__back:hover { color: var(--accent); }
.news-detail__date {
  font-family: var(--font-condensed);
  font-size: .8rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(245,245,240,.45);
  white-space: nowrap;
}

/* Grand titre centré, jamais collé au bord (max-width + padding du parent). */
.news-detail__title {
  max-width: 1000px;
  margin: 0 auto 56px;
  text-align: center;
  font-family: var(--font-display);
  font-size: clamp(2.6rem, 7vw, 6.5rem);
  line-height: .95;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--white);
  overflow-wrap: break-word;
}

/* Image principale : facultative (le bloc entier est absent si aucune image,
   donc aucun espace vide). Toujours bornée à la largeur de son conteneur. */
.news-detail__cover { margin: 0 0 56px; }
.news-detail__cover img {
  display: block;
  width: 100%;
  max-width: 100%;
  max-height: 620px;
  object-fit: cover;
  border-radius: 16px;
}

/* Texte : colonne plus étroite que l'image, centrée, confortable à lire.
   Les retours à la ligne sont convertis en <br> par le filtre nl2br (Twig
   coeur) qui échappe le HTML avant d'insérer les balises — jamais de |raw. */
.news-detail__content {
  width: min(820px, 100%);
  margin: 0 auto 56px;
  font-size: 1.125rem;
  line-height: 1.8;
  color: rgba(245,245,240,.8);
}
.news-detail__content:last-child { margin-bottom: 0; }

/* Galerie et vidéo : largeur intermédiaire entre l'image et le texte. */
.news-detail__gallery,
.news-detail__video {
  width: min(960px, 100%);
  margin: 64px auto 0;
}
.news-detail__gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.news-detail__gallery-item { overflow: hidden; border-radius: 12px; background: var(--dark2); }
.news-detail__gallery-item img { display: block; width: 100%; height: 260px; object-fit: cover; }

/* Vidéo : boîte responsive au ratio 16:9, jamais de dimension fixe qui déborde.
   position:relative/absolute ci-dessous est confiné à cette boîte (technique
   standard pour un ratio fixe), sans effet sur la structure de la page. */
.video-embed-wrap { position: relative; width: 100%; aspect-ratio: 16/9; background: var(--dark2); overflow: hidden; border-radius: 16px; }
.video-embed-wrap iframe,
.video-embed-wrap video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: cover; background: #000; }

/* Placeholder vidéo externe (Phase 3B) — remplit le même conteneur 16:9 que
   l'iframe réelle, aucun saut de mise en page à l'obtention du consentement. */
.video-embed-placeholder {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
  padding: 2rem; background: var(--dark2);
}
.video-embed-placeholder-icon { color: var(--accent); margin-bottom: 1rem; }
.video-embed-placeholder-title { font-family: var(--font-display); font-size: 1.4rem; letter-spacing: .03em; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.video-embed-placeholder-desc { font-size: .85rem; line-height: 1.6; color: rgba(245,245,240,.55); max-width: 380px; margin-bottom: 1.5rem; }
.video-embed-placeholder-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; justify-content: center; }

/* Navigation précédent/suivant : dernier bloc de la page, toujours dans le
   flux normal (position: static explicite, aucune marge négative). Grille à
   deux colonnes ; un seul lien présent occupe alors toute la largeur au lieu
   de laisser un vide à côté (voir --only). */
.news-detail__navigation {
  position: static;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin-top: 80px;
  padding-top: 40px;
  border-top: 1px solid rgba(255,255,255,.08);
}
.news-detail__nav-link {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  padding: 1.2rem 1.4rem;
  background: var(--dark);
  text-decoration: none;
  transition: background .3s;
}
.news-detail__nav-link:hover { background: var(--dark2); }
.news-detail__nav-link--next { align-items: flex-end; text-align: right; }
.news-detail__nav-link--only { grid-column: 1 / -1; }
.news-detail__nav-label { font-family: var(--font-condensed); font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; color: var(--accent); }
.news-detail__nav-title { font-size: .9rem; color: var(--white); font-weight: 500; }

/* Un seul point de rupture, clair : mobile jusqu'à 768px. */
@media (max-width: 768px) {
  .news-detail-page { padding: 112px 20px 56px; }
  .news-detail__meta { flex-direction: column; align-items: flex-start; gap: 12px; margin-bottom: 32px; }
  .news-detail__title { font-size: clamp(2.2rem, 9vw, 3.4rem); margin-bottom: 32px; }
  .news-detail__cover { margin-bottom: 32px; }
  .news-detail__cover img { max-height: 320px; border-radius: 10px; }
  .news-detail__content { margin-bottom: 32px; }
  .news-detail__gallery,
  .news-detail__video { margin-top: 40px; }
  .news-detail__gallery { grid-template-columns: 1fr; }
  .video-embed-wrap { border-radius: 10px; }
  .video-embed-placeholder { padding: 1.4rem; }
  .video-embed-placeholder-actions { flex-direction: column; width: 100%; }
  .video-embed-placeholder-actions .btn-primary { width: 100%; }
  .news-detail__navigation { grid-template-columns: 1fr; margin-top: 56px; padding-top: 28px; }
  .news-detail__nav-link--next { align-items: flex-start; text-align: left; }
}

/* ── RESPONSIVE ── */
@media (max-width: 1200px) {
  .programs-grid { grid-template-columns: repeat(2,1fr); }
  .planning-grid { grid-template-columns: repeat(4,1fr); }
  .news-grid { grid-template-columns: repeat(2,1fr); }
  .services-grid { grid-template-columns: repeat(2,1fr); }
  /* En dessous de ~1087px (logo + 8 liens + gap 2.2rem dépassent la largeur
     disponible), le texte de "Services ▾" et du bouton CTA se met à passer
     sur deux lignes faute de place — un seul gap resserré (au lieu de
     marges différentes par lien) suffit à garder tout sur une ligne
     jusqu'au breakpoint mobile (900px), où .nav-links est de toute façon
     masqué au profit du menu mobile. */
  .nav-links { gap: 1.5rem; }
}
@media (max-width: 900px) {
  nav { padding: 0 2rem; }
  .nav-logo img { height: 90px; }
  .nav-links { display: none; }
  .hamburger { display: flex; }
  .section-inner { padding: 0 2rem; }
  .hero-content { padding: 72px 2rem 0; }
  .hero-stats { display: none; }
  .about-grid, .why-grid, .studio-top, .contact-grid { grid-template-columns: 1fr; gap: 4rem; }
  .about-image-accent { display: none; }
  .services-grid, .testi-grid { grid-template-columns: 1fr; }
  .programs-grid { grid-template-columns: 1fr; }
  /* Galerie photo studio (tablette) : ratio légèrement plus large, flèches
     et pastilles resserrées, touch-action: pan-y pour ne jamais bloquer le
     scroll vertical de la page pendant un swipe horizontal (voir
     assets/studio-gallery.js). */
  .studio-gallery { aspect-ratio: 16/10; touch-action: pan-y; }
  .studio-gallery-arrow { width: 36px; height: 36px; }
  .gallery-lightbox-arrow { width: 44px; height: 44px; }
  .gallery-lightbox-arrow-prev { left: .8rem; }
  .gallery-lightbox-arrow-next { right: .8rem; }
  .form-row { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
  .newsletter-inner { flex-direction: column; }
  .newsletter-form { max-width: 100%; width: 100%; }
  .service-hero-content { padding: 0 2rem; padding-top: 72px; }
  .planning-grid { grid-template-columns: repeat(2,1fr); }
  .history-summary { grid-template-columns: 1fr 1fr; }
  .history-row { grid-template-columns: 1fr 1fr; gap: 1rem; }
  .price-card { flex-basis: 280px; width: 280px; padding: 3rem 2rem; }
  .contact-map { margin-top: 4rem; }
  .contact-map iframe { height: 340px; }
  .contact-map-placeholder { height: 340px; padding: 2rem 1.5rem; }
  .news-grid { grid-template-columns: 1fr; }
  .news-featured-card { grid-template-columns: 1fr; }
  .news-featured-media, .news-featured-noimage { min-height: 260px; }
  .news-featured-body { padding: 2.2rem 1.8rem; }
}
@media (max-width: 600px) {
  .hero-title { font-size: clamp(2.25rem,10.5vw,3.75rem); }
  .nav-logo img { height: 86px; }
  .service-hero-title { font-size: clamp(3rem,14vw,5rem); }
  .service-hero-title--compact { font-size: clamp(2.25rem,10.5vw,3.75rem); }
  .studio-gallery { aspect-ratio: 4/3; }
  .studio-gallery-arrow { width: 32px; height: 32px; }
  .studio-gallery-dots { bottom: .6rem; }
  .gallery-lightbox { padding: 1rem; }
  .gallery-lightbox-close { top: .8rem; right: .8rem; width: 38px; height: 38px; }
  .gallery-lightbox-arrow { width: 38px; height: 38px; }
  .gallery-lightbox-arrow-prev { left: .4rem; }
  .gallery-lightbox-arrow-next { right: .4rem; }
  .planning-grid { grid-template-columns: 1fr; }
  .history-row { grid-template-columns: 1fr; }
  .history-summary { grid-template-columns: 1fr; }
  .price-card { flex-basis: 240px; width: 240px; padding: 2.5rem 1.6rem; }
  .price-amount { font-size: 3.4rem; }
  .contact-map iframe { height: 260px; }
  .contact-map-placeholder { height: 260px; padding: 1.6rem; }
  .contact-map-placeholder-actions { flex-direction: column; width: 100%; }
  .contact-map-placeholder-actions .btn-primary { width: 100%; }
  .news-pagination { gap: .75rem; }
  .news-page-link { padding: .6rem 1rem; font-size: .72rem; }
  .news-page-num { min-width: 2.3rem; height: 2.3rem; font-size: .8rem; }
  .news-page-numbers { gap: .35rem; order: 3; flex-basis: 100%; }
  .news-page-prev { order: 1; }
  .news-page-next { order: 2; }
}

/* ── Checklist règles mot de passe (inscription) ── */
.password-rules {
    list-style: none;
    margin: .5rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .3rem;
    font-size: .8rem;
}
.password-rule {
    color: rgba(245, 245, 240, .45);
    transition: color .15s ease;
}
.password-rule::before {
    content: "\2610\0020"; /* ☐ */
}
.password-rule.valid {
    color: #4ade80;
}
.password-rule.valid::before {
    content: "\2611\0020"; /* ☑ */
}
.password-rule.invalid {
    color: #e05555;
}

/* ============================================================
   COACHING EN ENTREPRISE (page dédiée)
   Classes isolées, préfixées "corporate-" — n'affecte aucune
   autre page. Réutilise les tokens (--black/--dark/--accent),
   les polices, .reveal/.reveal-left/.reveal-right, .btn-primary/
   .btn-secondary, .section-label, .form-*, .programs-header/
   .programs-title et .program-icon-wrap/.program-name/.program-desc
   déjà existants ailleurs dans ce fichier — voir CLAUDE.md sur la
   réutilisation des composants globaux.
   ============================================================ */

/* ── Hero ── */
.corporate-hero { position: relative; min-height: 92vh; display: flex; align-items: center; overflow: hidden; }
.corporate-hero-bg {
  position: absolute; inset: 0; background-size: cover; background-position: center;
  filter: brightness(.4) saturate(.75); transform: scale(1.08);
  animation: corporateHeroZoom 9s ease-out forwards;
}
.corporate-hero-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(to right, rgba(8,8,8,.92) 0%, rgba(8,8,8,.55) 55%, rgba(8,8,8,.35) 100%),
    linear-gradient(to top, rgba(8,8,8,.95) 0%, transparent 32%);
}
.corporate-hero-content { position: relative; z-index: 2; max-width: 1400px; width: 100%; margin: 0 auto; padding: 0 4rem; padding-top: 72px; }
.corporate-hero-tag {
  font-family: var(--font-condensed); font-size: .72rem; font-weight: 500; letter-spacing: .35em;
  text-transform: uppercase; color: var(--accent); margin-bottom: 1.2rem;
  display: flex; align-items: center; gap: .9rem;
}
.corporate-hero-tag::before { content: ''; width: 34px; height: 1px; background: var(--accent); }
.corporate-hero-title {
  font-family: var(--font-display); font-size: clamp(3rem,6.75vw,6.75rem); line-height: .92;
  letter-spacing: .02em; text-transform: uppercase; color: var(--white); margin-bottom: 1.6rem;
}
.corporate-hero-title span { color: var(--accent); }
.corporate-hero-subtitle { font-size: 1.1rem; font-weight: 300; color: rgba(245,245,240,.7); max-width: 540px; line-height: 1.7; margin-bottom: 2.6rem; }
.corporate-hero-actions { display: flex; gap: 1.2rem; flex-wrap: wrap; }

@keyframes corporateHeroZoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) {
  .corporate-hero-bg { animation: none; transform: scale(1); }
}

/* ── Présentation 2 colonnes ── */
.corporate-intro { padding: 8rem 0; background: var(--black); overflow: hidden; }
.corporate-intro-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6rem; align-items: center; }
.corporate-intro-title { font-family: var(--font-display); font-size: clamp(2.6rem,4.5vw,4.5rem); line-height: .98; text-transform: uppercase; color: var(--white); margin-bottom: 1.8rem; }
.corporate-intro-title span { color: var(--accent); }
.corporate-intro-desc { font-size: 1rem; line-height: 1.8; color: rgba(245,245,240,.62); margin-bottom: 1.2rem; max-width: 560px; }
.corporate-intro-badges { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.corporate-intro-badge {
  font-family: var(--font-condensed); font-size: .72rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(245,245,240,.75);
  border: 1px solid rgba(234,207,54,.3); background: rgba(234,207,54,.06);
  padding: .55rem 1.1rem;
}
.corporate-intro-visual { position: relative; }
.corporate-intro-image { width: 100%; aspect-ratio: 4/5; object-fit: cover; filter: grayscale(15%); display: block; }

/* ── Bénéfices ── */
.corporate-benefits { padding: 8rem 0; background: var(--dark); }
.corporate-benefits-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: rgba(255,255,255,.05); }
.corporate-benefit-card {
  background: var(--dark); padding: 2.8rem 2.3rem; position: relative; overflow: hidden;
  transition: background .4s, transform .4s;
}
.corporate-benefit-card::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .45s ease; }
.corporate-benefit-card:hover { background: var(--dark2); transform: translateY(-6px); box-shadow: 0 18px 40px -20px rgba(234,207,54,.25); }
.corporate-benefit-card:hover::after { transform: scaleX(1); }

/* ── Comment ça fonctionne ── */
.corporate-process { padding: 8rem 0; background: var(--black); }
.corporate-process-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 3rem; }
.corporate-process-step { position: relative; padding-top: .5rem; }
.corporate-process-num { font-family: var(--font-display); font-size: 4.5rem; line-height: 1; color: rgba(234,207,54,.18); margin-bottom: 1rem; }
.corporate-process-title { font-family: var(--font-condensed); font-size: 1.05rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--white); margin-bottom: .7rem; }
.corporate-process-desc { font-size: .88rem; line-height: 1.7; color: rgba(245,245,240,.55); }

/* ── Types d'intervention ── */
.corporate-formats { padding: 8rem 0; background: var(--dark); }
.corporate-formats-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1.2rem; }
.corporate-format-card {
  background: var(--black); border: 1px solid rgba(255,255,255,.07); border-left: 2px solid var(--accent);
  padding: 1.8rem 1.8rem; transition: background .3s, border-color .3s, transform .3s;
}
.corporate-format-card:hover { background: var(--dark2); transform: translateY(-4px); }
.corporate-format-title { font-family: var(--font-condensed); font-size: .95rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.corporate-format-desc { font-size: .85rem; line-height: 1.6; color: rgba(245,245,240,.5); }

/* ── CTA intermédiaire ── */
.corporate-cta { padding: 7rem 0; background: var(--accent); overflow: hidden; position: relative; }
.corporate-cta::before { content: 'C&C'; position: absolute; font-family: var(--font-display); font-size: 20rem; color: rgba(0,0,0,.06); top: 50%; left: 50%; transform: translate(-50%,-50%); white-space: nowrap; pointer-events: none; }
.corporate-cta-inner { text-align: center; position: relative; z-index: 1; }
.corporate-cta-title { font-family: var(--font-display); font-size: clamp(2.4rem,5.5vw,4.8rem); line-height: 1; text-transform: uppercase; color: var(--black); margin-bottom: 1.4rem; max-width: 900px; margin-left: auto; margin-right: auto; }
.corporate-cta-text { font-size: 1.05rem; color: rgba(0,0,0,.65); margin-bottom: 2.4rem; max-width: 560px; margin-left: auto; margin-right: auto; }
.corporate-cta-btn { background: var(--black); color: var(--accent); }
.corporate-cta-btn:hover { background: var(--dark2); transform: translateY(-2px); }

/* ── Formulaire ── */
.corporate-form-section { padding: 8rem 0; background: var(--black); }
.corporate-form-intro { max-width: 560px; margin: 0 auto; text-align: center; font-size: .95rem; line-height: 1.7; color: rgba(245,245,240,.55); }
.corporate-form-card { background: var(--dark); border: 1px solid rgba(255,255,255,.07); padding: 3rem; }
.corporate-form-card .recaptcha-consent-container { margin-top: 1.5rem; }
.corporate-form-card .btn-primary { margin-top: 1.25rem; }

/* ── Responsive (mêmes points de rupture que le reste du site) ── */
@media (max-width: 1200px) {
  .corporate-benefits-grid { grid-template-columns: repeat(2,1fr); }
  .corporate-formats-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 900px) {
  .corporate-hero { min-height: 82vh; }
  .corporate-hero-content { padding: 72px 2rem 0; }
  .corporate-hero-actions { flex-direction: column; align-items: stretch; }
  .corporate-hero-actions .btn-primary, .corporate-hero-actions .btn-secondary { text-align: center; }
  .corporate-intro-grid { grid-template-columns: 1fr; gap: 3rem; }
  .corporate-intro-image { aspect-ratio: 16/10; }
  .corporate-process-grid { grid-template-columns: repeat(2,1fr); gap: 2.5rem; }
  .corporate-benefits-grid { grid-template-columns: 1fr; }
  .corporate-formats-grid { grid-template-columns: 1fr; }
  .corporate-form-card { padding: 2rem 1.5rem; }
}
@media (max-width: 600px) {
  .corporate-hero-title { font-size: clamp(2.25rem,10.5vw,3.75rem); }
  .corporate-process-grid { grid-template-columns: 1fr; gap: 2.2rem; }
  .corporate-cta-btn { width: 100%; }
}

/* ============================================================
   COACHING PRIVÉ (page dédiée)
   Classes isolées, préfixées "private-coaching-" — n'affecte
   aucune autre page (dont Coaching en entreprise). Réutilise les
   tokens (--black/--dark/--accent), les polices, .reveal/
   .reveal-left/.reveal-right, .btn-primary/.btn-secondary,
   .service-hero-back, .section-label, .form-*, .programs-header/
   .programs-title, .program-icon-wrap/.program-name/.program-desc,
   .pricing-header/.pricing-title et .price-card/.btn-price déjà
   existants ailleurs dans ce fichier.
   ============================================================ */

/* ── Hero ── */
.private-coaching-hero { position: relative; min-height: 92vh; display: flex; align-items: center; overflow: hidden; }
.private-coaching-hero-bg {
  position: absolute; inset: 0; background-size: cover; background-position: center;
  filter: brightness(.4) saturate(.75); transform: scale(1.08);
  animation: privateCoachingHeroZoom 9s ease-out forwards;
}
.private-coaching-hero-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(to right, rgba(8,8,8,.92) 0%, rgba(8,8,8,.55) 55%, rgba(8,8,8,.35) 100%),
    linear-gradient(to top, rgba(8,8,8,.95) 0%, transparent 32%);
}
.private-coaching-hero-content { position: relative; z-index: 2; max-width: 1400px; width: 100%; margin: 0 auto; padding: 0 4rem; padding-top: 72px; }
.private-coaching-hero-tag {
  font-family: var(--font-condensed); font-size: .72rem; font-weight: 500; letter-spacing: .35em;
  text-transform: uppercase; color: var(--accent); margin-bottom: 1.2rem;
  display: flex; align-items: center; gap: .9rem;
}
.private-coaching-hero-tag::before { content: ''; width: 34px; height: 1px; background: var(--accent); }
.private-coaching-hero-title {
  font-family: var(--font-display); font-size: clamp(2.8rem,6.5vw,6.2rem); line-height: .98;
  letter-spacing: .01em; text-transform: uppercase; color: var(--white); margin-bottom: 1.6rem;
}
.private-coaching-hero-title span { color: var(--accent); }
.private-coaching-hero-subtitle { font-size: 1.1rem; font-weight: 300; color: rgba(245,245,240,.7); max-width: 540px; line-height: 1.7; margin-bottom: 2.4rem; }
.private-coaching-hero-actions { display: flex; gap: 1.2rem; flex-wrap: wrap; margin-bottom: 2.6rem; }
.private-coaching-hero-badges { display: flex; flex-wrap: wrap; gap: .8rem; }
.private-coaching-hero-badge {
  font-family: var(--font-condensed); font-size: .7rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(245,245,240,.75);
  border: 1px solid rgba(234,207,54,.3); background: rgba(234,207,54,.06);
  padding: .5rem 1rem;
}

@keyframes privateCoachingHeroZoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) {
  .private-coaching-hero-bg { animation: none; transform: scale(1); }
}

/* ── Présentation 2 colonnes (image à gauche) ── */
.private-coaching-intro { padding: 8rem 0; background: var(--black); overflow: hidden; }
.private-coaching-intro-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6rem; align-items: center; }
.private-coaching-intro-title { font-family: var(--font-display); font-size: clamp(2.6rem,4.5vw,4.5rem); line-height: .98; text-transform: uppercase; color: var(--white); margin-bottom: 1.8rem; }
.private-coaching-intro-title span { color: var(--accent); }
.private-coaching-intro-desc { font-size: 1rem; line-height: 1.8; color: rgba(245,245,240,.62); margin-bottom: 1.2rem; max-width: 560px; }
.private-coaching-intro-badges { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.private-coaching-intro-badge {
  font-family: var(--font-condensed); font-size: .72rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(245,245,240,.75);
  border: 1px solid rgba(234,207,54,.3); background: rgba(234,207,54,.06);
  padding: .55rem 1.1rem;
}
.private-coaching-intro-visual { position: relative; }
.private-coaching-intro-image { width: 100%; aspect-ratio: 4/5; object-fit: cover; filter: grayscale(15%); display: block; transition: filter .4s; }
.private-coaching-intro-visual:hover .private-coaching-intro-image { filter: grayscale(0%); }

/* ── Bénéfices ── */
.private-coaching-benefits { padding: 8rem 0; background: var(--dark); }
.private-coaching-benefits-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: rgba(255,255,255,.05); }
.private-coaching-benefit-card {
  background: var(--dark); padding: 2.8rem 2.3rem; position: relative; overflow: hidden;
  transition: background .4s, transform .4s;
}
.private-coaching-benefit-card::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .45s ease; }
.private-coaching-benefit-card:hover { background: var(--dark2); transform: translateY(-6px); box-shadow: 0 18px 40px -20px rgba(234,207,54,.25); }
.private-coaching-benefit-card:hover::after { transform: scaleX(1); }

/* ── Pour quels objectifs ── */
.private-coaching-goals { padding: 8rem 0; background: var(--black); }
.private-coaching-goals-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.private-coaching-goal {
  background: var(--dark); border: 1px solid rgba(255,255,255,.07); border-left: 2px solid var(--accent);
  padding: 1.4rem 1.6rem; font-family: var(--font-condensed); font-size: .9rem; font-weight: 600;
  letter-spacing: .03em; color: rgba(245,245,240,.85); transition: background .3s, transform .3s, color .3s;
}
.private-coaching-goal:hover { background: var(--dark2); transform: translateY(-4px); color: var(--white); }

/* ── Comment ça fonctionne ── */
.private-coaching-process { padding: 8rem 0; background: var(--dark); }
.private-coaching-process-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 3rem; }
.private-coaching-process-step { position: relative; padding-top: .5rem; }
.private-coaching-process-num { font-family: var(--font-display); font-size: 4.5rem; line-height: 1; color: rgba(234,207,54,.18); margin-bottom: 1rem; }
.private-coaching-process-title { font-family: var(--font-condensed); font-size: 1.05rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--white); margin-bottom: .7rem; }
.private-coaching-process-desc { font-size: .88rem; line-height: 1.7; color: rgba(245,245,240,.55); }

/* ── CTA intermédiaire ── */
.private-coaching-cta { padding: 7rem 0; background: var(--accent); overflow: hidden; position: relative; }
.private-coaching-cta::before { content: 'C&C'; position: absolute; font-family: var(--font-display); font-size: 20rem; color: rgba(0,0,0,.06); top: 50%; left: 50%; transform: translate(-50%,-50%); white-space: nowrap; pointer-events: none; }
.private-coaching-cta-inner { text-align: center; position: relative; z-index: 1; }
.private-coaching-cta-title { font-family: var(--font-display); font-size: clamp(2.4rem,5.5vw,4.8rem); line-height: 1; text-transform: uppercase; color: var(--black); margin-bottom: 1.4rem; max-width: 900px; margin-left: auto; margin-right: auto; }
.private-coaching-cta-text { font-size: 1.05rem; color: rgba(0,0,0,.65); margin-bottom: 2.4rem; max-width: 560px; margin-left: auto; margin-right: auto; }
.private-coaching-cta-btn { background: var(--black); color: var(--accent); }
.private-coaching-cta-btn:hover { background: var(--dark2); transform: translateY(-2px); }

/* ── Offres privées ── */
.private-coaching-offers { padding: 8rem 0; background: var(--black); }
.private-coaching-offers-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1.5rem; align-items: stretch; }
.private-coaching-offers-grid .price-card { width: auto; flex: none; border: 1px solid rgba(255,255,255,.07); }
.private-coaching-offers-grid .price-card.featured { border-color: var(--accent); }

/* ── Responsive (mêmes points de rupture que le reste du site) ── */
@media (max-width: 1200px) {
  .private-coaching-benefits-grid { grid-template-columns: repeat(2,1fr); }
  .private-coaching-goals-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 900px) {
  .private-coaching-hero { min-height: 82vh; }
  .private-coaching-hero-content { padding: 72px 2rem 0; }
  .private-coaching-hero-actions { flex-direction: column; align-items: stretch; }
  .private-coaching-hero-actions .btn-primary, .private-coaching-hero-actions .btn-secondary { text-align: center; }
  .private-coaching-intro-grid { grid-template-columns: 1fr; gap: 3rem; }
  .private-coaching-intro-visual { order: -1; }
  .private-coaching-intro-image { aspect-ratio: 16/10; }
  .private-coaching-process-grid { grid-template-columns: repeat(2,1fr); gap: 2.5rem; }
  .private-coaching-benefits-grid { grid-template-columns: 1fr; }
  .private-coaching-offers-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .private-coaching-goals-grid { grid-template-columns: 1fr; }
  .private-coaching-process-grid { grid-template-columns: 1fr; gap: 2.2rem; }
  .private-coaching-cta-btn { width: 100%; }
}

/* ============================================================
   CONSENTEMENT COOKIES (Phase 2 — bandeau + fenêtre de préférences)
   Classes isolées, préfixées "cookie-". La fenêtre de préférences
   réutilise .modal-overlay/.modal/.modal-close/.modal-title/
   .modal-subtitle/.section-label/.btn-primary/.btn-secondary déjà
   existants ailleurs dans ce fichier. L'affichage du bandeau est
   piloté par l'attribut HTML `hidden` (voir assets/cookie-consent.js),
   pas par une classe CSS dédiée.
   ============================================================ */
.cookie-consent { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1900; padding: 1.5rem; display: flex; justify-content: center; }
.cookie-consent[hidden] { display: none; }
.cookie-consent-card {
  background: var(--dark); border: 1px solid rgba(255,255,255,.1);
  box-shadow: 0 -10px 40px rgba(0,0,0,.5);
  max-width: 1100px; width: 100%; padding: 1.8rem 2.2rem;
  display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;
}
.cookie-consent-text { flex: 1 1 360px; }
.cookie-consent-title { font-family: var(--font-display); font-size: 1.3rem; letter-spacing: .04em; text-transform: uppercase; color: var(--white); margin-bottom: .4rem; }
.cookie-consent-desc { font-size: .85rem; line-height: 1.6; color: rgba(245,245,240,.6); max-width: 640px; }
.cookie-consent-desc a { color: var(--accent); text-decoration: underline; }
.cookie-consent-actions { display: flex; gap: .8rem; flex-wrap: wrap; flex-shrink: 0; align-items: center; }
.cookie-consent-btn {
  font-family: var(--font-condensed); font-size: .78rem; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; padding: .85rem 1.5rem; cursor: pointer; white-space: nowrap; border: 1px solid transparent;
  transition: background .3s, border-color .3s, color .3s, transform .3s;
}
.cookie-consent-btn-accept { background: var(--accent); color: var(--black); border-color: var(--accent); }
.cookie-consent-btn-accept:hover { background: var(--accent-light); transform: translateY(-2px); }
.cookie-consent-btn-reject { background: transparent; color: var(--white); border-color: rgba(255,255,255,.3); }
.cookie-consent-btn-reject:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px); }
.cookie-consent-btn-customize { background: none; color: rgba(245,245,240,.6); text-decoration: underline; padding: .85rem .3rem; }
.cookie-consent-btn-customize:hover { color: var(--accent); }
.cookie-consent-btn:focus-visible,
.footer-cookie-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* ── Fenêtre de préférences ── */
.cookie-preferences-modal { max-width: 620px; }
.cookie-pref-list { display: flex; flex-direction: column; gap: 1.2rem; margin: 2rem 0 2.2rem; }
.cookie-pref-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; padding: 1.2rem; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); }
.cookie-pref-info { flex: 1; }
.cookie-pref-name { font-family: var(--font-condensed); font-size: .85rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--white); margin-bottom: .4rem; }
.cookie-pref-desc { font-size: .8rem; line-height: 1.6; color: rgba(245,245,240,.5); }
.cookie-preferences-actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.cookie-preferences-actions .btn-primary,
.cookie-preferences-actions .btn-secondary { flex: 1 1 200px; text-align: center; padding: 1rem 1.5rem; }

/* Toggle switch — checkbox natif masqué visuellement (position absolute +
   opacity 0, jamais display:none) pour rester utilisable au clavier et par
   les lecteurs d'écran ; :checked/:focus-visible pilotent l'apparence. */
.cookie-toggle { position: relative; display: inline-flex; align-items: center; flex-shrink: 0; cursor: pointer; margin-top: .2rem; }
.cookie-toggle input { position: absolute; opacity: 0; width: 44px; height: 24px; margin: 0; cursor: pointer; }
.cookie-toggle-track { display: inline-block; width: 44px; height: 24px; background: rgba(255,255,255,.15); border-radius: 999px; position: relative; transition: background .25s; }
.cookie-toggle-thumb { position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; background: var(--white); border-radius: 50%; transition: transform .25s; }
.cookie-toggle input:checked + .cookie-toggle-track { background: var(--accent); }
.cookie-toggle input:checked + .cookie-toggle-track .cookie-toggle-thumb { transform: translateX(20px); }
.cookie-toggle input:focus-visible + .cookie-toggle-track { outline: 2px solid var(--accent); outline-offset: 2px; }
.cookie-toggle-locked { cursor: default; opacity: .6; }
.cookie-toggle-locked input { cursor: default; }

@media (max-width: 900px) {
  .cookie-consent-card { flex-direction: column; align-items: stretch; text-align: left; padding: 1.6rem; }
  .cookie-consent-actions { width: 100%; }
  .cookie-consent-btn { flex: 1 1 auto; }
}
@media (max-width: 600px) {
  .cookie-consent { padding: 0; }
  .cookie-consent-card { border-left: none; border-right: none; }
  .cookie-consent-actions { flex-direction: column; align-items: stretch; }
  .cookie-consent-btn { width: 100%; text-align: center; }
  .cookie-pref-row { flex-direction: column; }
  .cookie-preferences-actions { flex-direction: column; }
}

/* ============================================================
   RECAPTCHA CONDITIONNÉ AU CONSENTEMENT (Phase 3C)
   Classes isolées, préfixées "recaptcha-consent-". Le placeholder
   remplace le widget Google tant que le consentement `external` n'est
   pas accordé (voir assets/recaptcha-consent.js). Le bouton "Gérer mes
   cookies" réutilise .cookie-consent-btn-customize (Phase 2) ; le bouton
   "Autoriser reCAPTCHA" réutilise .btn-primary déjà existant, avec un
   gabarit réduit ci-dessous pour rester compact dans les modales.
   L'espacement au-dessus du conteneur (.contact-form / .modal-form /
   .corporate-form-card) est défini plus haut dans ce fichier, à côté des
   autres règles de ces formulaires — inchangé depuis les phases
   précédentes (24px Contact, 8px modales + gap existant, 24px coaching
   entreprise).
   ============================================================ */
.recaptcha-consent-container { width: 100%; }
.recaptcha-consent-placeholder {
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08);
  padding: 1.2rem 1.4rem; display: flex; flex-direction: column; gap: .5rem;
}
.recaptcha-consent-placeholder-title { font-family: var(--font-condensed); font-size: .78rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.recaptcha-consent-placeholder-desc { font-size: .82rem; line-height: 1.55; color: rgba(245,245,240,.6); }
.recaptcha-consent-submit-warning { font-size: .78rem; line-height: 1.5; color: #ff8a8a; }
.recaptcha-consent-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: .4rem; }
.recaptcha-consent-actions .btn-primary { padding: .7rem 1.3rem; font-size: .72rem; }

@media (max-width: 600px) {
  .recaptcha-consent-placeholder { padding: 1rem 1.1rem; }
  .recaptcha-consent-actions { flex-direction: column; align-items: stretch; }
  .recaptcha-consent-actions .btn-primary { width: 100%; text-align: center; }
}

/* Uniformisation des tailles reCAPTCHA (2026-08) : tous les formulaires
   demandent désormais size=normal à Google (~304px de large), comme
   Contact — plus de mode "compact" spécifique aux modales/à l'entreprise.
   Contact (.contact-form) n'a jamais eu de contrainte de largeur fixe et
   n'a donc besoin d'aucune règle ici : le widget normal y tient déjà
   pleinement, à toutes les tailles d'écran.
   .modal-form et .corporate-form-card, eux, sont contraints par un
   padding fixe non responsive (.modal-overlay + .modal, voir plus haut ;
   .corporate-form-card devient plus étroit sous 900px). En dessous d'un
   certain seuil, ~304px ne rentre plus dans l'espace réellement
   disponible : on réduit alors visuellement le widget déjà rendu (Google
   continue de le générer en taille normale — jamais compact) via
   transform: scale(), calibré sur la largeur réellement disponible dans
   chaque conteneur à ces seuils, pour éviter tout débordement horizontal
   sans jamais rétrécir inutilement quand la place suffit. */
@media (max-width: 500px) {
  .modal-form .recaptcha-consent-widget { transform: scale(.6); transform-origin: 0 0; }
  .corporate-form-card .recaptcha-consent-widget { transform: scale(.8); transform-origin: 0 0; }
}
@media (max-width: 380px) {
  .modal-form .recaptcha-consent-widget { transform: scale(.42); transform-origin: 0 0; }
  .corporate-form-card .recaptcha-consent-widget { transform: scale(.62); transform-origin: 0 0; }
}

/* ============================================================
   Phase Sécurité 2B-4 : classes remplaçant les styles inline
   (style="") repérés sur les pages publiques — même rendu, valeurs
   copiées à l'identique depuis l'ancien attribut inline.
   ============================================================ */

/* ── Délais de révélation au scroll (stagger .reveal/.reveal-left/
   .reveal-right) — remplace les anciens style="transition-delay:Xs" sur
   home, corporate-coaching, private-coaching. ── */
.reveal-delay-05 { transition-delay: .05s; }
.reveal-delay-10 { transition-delay: .1s; }
.reveal-delay-15 { transition-delay: .15s; }
.reveal-delay-20 { transition-delay: .2s; }
.reveal-delay-25 { transition-delay: .25s; }
.reveal-delay-30 { transition-delay: .3s; }
.reveal-delay-35 { transition-delay: .35s; }
.reveal-delay-45 { transition-delay: .45s; }

/* ── Variante centrée de .section-label (bandeaux de section centrés) ── */
.section-label-center { justify-content: center; }

/* ── Bouton CTA pleine largeur (formulaires modales/contact/auth) ── */
.btn-block { width: 100%; padding: 1.1rem; }
.btn-block-spaced { width: 100%; padding: 1.1rem; margin-top: .5rem; }

/* ── Symbole "€" réduit dans .price-amount (home, private-coaching) ── */
.price-amount-currency { font-size: 1.5rem; vertical-align: super; }

/* ── Variante étroite de .section-inner (corporate-coaching, contact) ── */
.section-inner-narrow { max-width: 900px; }

/* ── Section de contenu générique fond noir (historique réservations/
   séances privées, profil, messagerie) ── */
.content-section { padding: 6rem 0; background: var(--black); }
/* ── Sections spécifiques planning ── */
.planning-section { padding: 8rem 0; background: var(--black); }
.planning-balance-section { padding: 3rem 0; background: var(--dark); border-top: 1px solid rgba(255,255,255,.05); }
.planning-balance-inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 2rem; }
.planning-balance-amount { font-family: var(--font-display); font-size: 2.5rem; color: var(--white); line-height: 1; }
.planning-balance-unit { font-size: 1.2rem; color: var(--accent); }
.planning-balance-actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.planning-buy-sessions-note { font-size: .7rem; color: rgba(245,245,240,.35); margin-top: .4rem; text-align: center; }
.planning-cancel-form { margin-top: .5rem; }
/* ── Section messagerie membre (conversation) ── */
.member-conversation-section { padding: 5rem 0 6rem; background: var(--black); }

/* ── Variante d'espacement de .flash (historique réservations/séances) ── */
.flash-mb-2 { margin-bottom: 2rem; }
/* Flash affiché au-dessus du hero home (positionnement spécifique, pas le
   flux normal de page utilisé par .flash ailleurs). */
.home-hero-flash { position: relative; z-index: 10; max-width: 600px; margin: 88px auto 0; }

/* ── Images de fond de hero posées en JS (voir app.js, attribut
   data-hero-bg) : l'URL est calculée côté serveur par asset() avec un hash
   de cache-busting qui change à chaque compilation, donc ne peut pas être
   figée dans ce fichier CSS statique. Le reste (cover/position/filter)
   reste porté par les classes existantes (.service-hero-bg,
   .corporate-hero-bg, .private-coaching-hero-bg) — inchangé. ── */

/* ── Barre de remplissage d'un cours (planning), largeur posée en JS via
   data-fill-percent (valeur 0-100 calculée par cours, voir app.js). ── */

/* ── Home : section hero (id déjà unique, pas besoin de classe dédiée) ── */
#home { position: relative; z-index: 2; }
/* ── Home : section vidéos (id déjà unique) ── */
#videos { padding: 10rem 0; background: var(--dark); }
.home-videos-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 2rem; }
.home-video-card { position: relative; aspect-ratio: 16/9; background: var(--dark2); overflow: hidden; }
.home-video-card video { width: 100%; height: 100%; object-fit: cover; }
.home-video-caption { position: absolute; bottom: 1.5rem; left: 1.5rem; }
.section-label-tight { margin-bottom: .3rem; }
.home-video-caption-title { font-family: var(--font-display); font-size: 1.5rem; color: var(--white); text-transform: uppercase; }

/* ── Page galerie /videos : grille + carte (titre sous la vidéo, pas d'overlay) ── */
.videos-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 2.5rem; }
.video-card { background: var(--dark); overflow: hidden; }
.video-card-media { position: relative; aspect-ratio: 16/9; background: var(--dark2); overflow: hidden; }
.video-card-media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.video-card-body { padding: 1.2rem 0 0; }
.video-card-title { font-family: var(--font-display); font-size: 1.2rem; line-height: 1.2; text-transform: uppercase; color: var(--white); margin-bottom: .5rem; }
.video-card-date { font-family: var(--font-condensed); font-size: .72rem; letter-spacing: .15em; text-transform: uppercase; color: var(--accent); }
/* Desktop uniquement : même philosophie que #why/#about/#services/#studio/
   #programs/#pricing (voir plus haut dans ce fichier) — padding resserré +
   espace sous l'en-tête réduit. .programs-header/.news-home-more sont
   partagées avec #actualites (non touché) : scopées par #videos pour ne
   jamais l'affecter. */
@media (min-width: 901px) {
  #videos { padding: 7rem 0; }
  #videos .programs-header { margin-bottom: 3.5rem; }
  #videos .news-home-more { margin-top: 2rem; }
}
@media (max-width: 900px) {
  .home-videos-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .videos-grid { grid-template-columns: 1fr; }
  /* Réduit l'espace vertical entre sections de la home sur tablette/mobile —
     #why/#studio/#videos/#programs utilisent tous `padding: 10rem 0` en
     desktop (voir leurs règles de base plus haut dans ce fichier), sans
     réduction responsive existante : deux sections adjacentes cumulent donc
     20rem de vide (10rem + 10rem) à cette largeur, d'où le grand espace
     signalé entre "Pourquoi choisir" → "Notre espace" et "Nos vidéos" →
     "Nos programmes". Uniquement ces 4 IDs, jamais .section-inner ni une
     classe partagée par d'autres pages. */
  #why, #studio, #videos, #programs { padding: 6rem 0; }
  /* #contact (page /contact) : même 10rem excessif que les IDs ci-dessus,
     constaté séparément lors de l'audit visuel des pages publiques. */
  #contact { padding: 6rem 0; }
}
@media (max-width: 600px) {
  #why, #studio, #videos, #programs { padding: 4rem 0; }
  #contact { padding: 4rem 0; }
}
