/* ==========================================================================
   Training Sport — style.css
   Charte : noir / rouge / blanc (voir variables ci-dessous)
   Mobile-first — breakpoints principaux : 768px puis 1200px (+ quelques
   ajustements intermédiaires pour les grilles de cartes)
   ========================================================================== */

/* ---------- Polices hébergées sur le site (aucun appel à Google) ---------- */
@font-face{
  font-family:'Oswald'; font-style:normal; font-weight:500 700; font-display:swap;
  src:url(assets/fonts/oswald-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:'Inter'; font-style:normal; font-weight:400 700; font-display:swap;
  src:url(assets/fonts/inter-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;
}

/* ---------- Design tokens ---------- */
:root{
  --bg:#0A0A0A;
  --bg-card:#141414;
  --bg-card-hover:#1b1b1b;
  --red:#E10600;
  --red-dark:#8A0300;
  --white:#FFFFFF;
  --grey:#C9C9C9;
  --grey-dim:#8f8f8f;
  --silver:#B8BCC0;
  --line: rgba(255,255,255,0.18);

  --font-display:'Oswald', 'Arial Narrow', sans-serif;
  --font-body:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;

  --fs-hero: clamp(2.6rem, 3vw + 2rem, 5.4rem);
  --fs-h2: clamp(1.9rem, 1.6vw + 1.4rem, 3rem);
  --fs-h3: clamp(1.15rem, 0.6vw + 1rem, 1.5rem);
  --fs-body: clamp(0.98rem, 0.2vw + 0.9rem, 1.08rem);
  --fs-small: clamp(0.8rem, 0.1vw + 0.76rem, 0.88rem);

  --space-1: clamp(0.5rem, 0.4vw + 0.4rem, 0.75rem);
  --space-2: clamp(1rem, 0.8vw + 0.8rem, 1.5rem);
  --space-3: clamp(1.6rem, 1.6vw + 1.2rem, 2.6rem);
  --space-4: clamp(2.4rem, 3vw + 1.6rem, 4.5rem);
  --space-5: clamp(3.5rem, 5vw + 2rem, 7rem);

  --container: 1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--white);
  font-family:var(--font-body);
  font-size:var(--fs-body);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.01ms !important; transition-duration:0.01ms !important;}
}

img,svg{display:block; max-width:100%;}
a{color:inherit;}
.container{max-width:var(--container); margin:0 auto; padding-inline:clamp(1.2rem,4vw,2.5rem);}

h1,h2,h3{
  font-family:var(--font-display);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.01em;
  line-height:1.05;
  text-wrap:balance;
  margin:0;
}
h2{font-size:var(--fs-h2); color:var(--white);}
h3{font-size:var(--fs-h3);}
p{margin:0;}

.eyebrow{
  display:flex; align-items:center; gap:0.6em;
  font-family:var(--font-display);
  text-transform:uppercase; letter-spacing:0.16em;
  font-size:var(--fs-small); color:var(--red);
  font-weight:600;
}
.eyebrow::before{content:""; width:22px; height:2px; background:var(--red); display:inline-block;}

.section-head{max-width:640px; display:flex; flex-direction:column; gap:var(--space-1); margin-bottom:var(--space-4);}
.section-head p{color:var(--grey);}

section{padding-block:var(--space-5); position:relative;}
section.alt{background:var(--bg-card);}

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:100; background:var(--red); color:var(--white);
  padding:0.8em 1.2em; font-weight:700; text-decoration:none;
}
.skip-link:focus{left:1rem; top:1rem;}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:0.5em;
  font-family:var(--font-display); text-transform:uppercase;
  letter-spacing:0.05em; font-weight:600; font-size:0.95rem;
  padding:0.95em 1.7em; border-radius:2px; border:2px solid transparent;
  cursor:pointer; transition:transform .15s ease, background .2s ease, border-color .2s ease, color .2s ease;
  text-decoration:none; white-space:nowrap;
}
.btn:focus-visible{outline:2px solid var(--white); outline-offset:3px;}
.btn-primary{background:var(--red); color:var(--white);}
.btn-primary:hover{background:var(--red-dark); transform:translateY(-2px);}
.btn-outline{border-color:var(--white); color:var(--white); background:transparent;}
.btn-outline:hover{border-color:var(--red); color:var(--red); transform:translateY(-2px);}
.btn-block{width:100%;}
.btn[disabled]{opacity:0.6; cursor:not-allowed; transform:none !important;}

/* ---------- Header ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(10,10,10,0.88); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  overflow-x:clip;
}
.header-inner{display:flex; align-items:center; justify-content:space-between; gap:var(--space-2); padding-block:0.85rem;}
.logo{display:flex; align-items:center; gap:0.65rem; text-decoration:none;}
.logo-badge{
  width:44px; height:44px; border-radius:50%; border:2px solid var(--red);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  font-family:var(--font-display); font-weight:700; font-size:1.1rem; color:var(--white);
  background:radial-gradient(circle at 30% 30%, #1c1c1c, #0A0A0A);
}
.logo-img{height:48px; width:auto; flex-shrink:0;}
.footer-logo-img{height:56px; width:auto; flex-shrink:0;}
.hero-watermark{
  position:absolute; right:clamp(-4rem,-2vw,2rem); top:50%; transform:translateY(-50%);
  height:min(120%, 620px); width:auto; opacity:0.07; pointer-events:none; z-index:0;
  filter:grayscale(0.2);
}
.logo-text{font-family:var(--font-display); text-transform:uppercase; font-weight:700; letter-spacing:0.03em; font-size:1rem; line-height:1.1;}
.logo-text span{display:block; font-size:0.62em; color:var(--silver); letter-spacing:0.14em; font-weight:500;}

nav.main-nav{display:flex; align-items:center; gap:var(--space-3);}
.nav-links{display:flex; gap:var(--space-3); list-style:none; margin:0; padding:0;}
.nav-links a{
  text-decoration:none; font-size:0.85rem; text-transform:uppercase; letter-spacing:0.08em;
  font-weight:600; color:var(--grey); transition:color .2s ease; position:relative;
}
.nav-links a:hover, .nav-links a:focus-visible{color:var(--white);}
.header-cta{display:flex; align-items:center; gap:var(--space-2);}
.burger{display:none; background:none; border:none; color:var(--white); cursor:pointer; padding:0.4rem;}

@media (max-width: 900px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; top:65px; height:calc(100dvh - 65px); width:min(78vw,320px);
    background:var(--bg-card); flex-direction:column; padding:var(--space-3); gap:var(--space-2);
    transform:translateX(100%); border-left:1px solid var(--line);
    visibility:hidden; transition:transform .3s ease, visibility 0s linear .3s;
  }
  .nav-links.open{transform:translateX(0); visibility:visible; transition:transform .3s ease, visibility 0s;}
  .nav-links a{font-size:1rem;}
  .burger{display:block;}
  .header-cta .btn-label-desktop{display:none;}
  .header-cta .btn-label-mobile{display:inline;}
}
.btn-label-mobile{display:none;}
@media (max-width:640px){
  .header-cta .btn{display:none;}
}

/* ---------- Hero ---------- */
.hero{
  min-height:min(92vh, 820px);
  display:flex; align-items:center;
  padding-top:var(--space-5); padding-bottom:var(--space-5);
  position:relative; overflow:hidden;
  background:
    radial-gradient(60% 55% at 78% 18%, rgba(225,6,0,0.28), transparent 65%),
    radial-gradient(45% 40% at 10% 90%, rgba(138,3,0,0.22), transparent 60%),
    linear-gradient(180deg, #0A0A0A 0%, #0A0A0A 100%);
}
.hero::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:0.5;
  background-image:repeating-linear-gradient(115deg, rgba(255,255,255,0.025) 0 2px, transparent 2px 26px);
}
.hero-grid{display:grid; grid-template-columns:1.15fr 0.85fr; gap:var(--space-4); align-items:center; position:relative;}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr;}}

.hero-bandeau{
  max-width:min(380px, 78%); width:100%; height:auto; margin-bottom:var(--space-3); display:block;
}
.hero-badge{
  display:inline-flex; align-items:center; gap:0.5em; border:1px solid var(--line);
  padding:0.45em 0.9em; border-radius:999px; font-size:var(--fs-small); color:var(--grey);
  margin-bottom:var(--space-2); background:rgba(255,255,255,0.03);
}
.hero-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--red); box-shadow:0 0 8px var(--red);}

.hero h1{font-size:var(--fs-hero); margin-bottom:var(--space-2);}
.hero h1 em{color:var(--red); font-style:normal;}
.hero-sub{color:var(--grey); font-size:1.05rem; max-width:46ch; margin-bottom:var(--space-3);}
.hero-ctas{display:flex; flex-wrap:wrap; gap:var(--space-2); margin-bottom:var(--space-3);}
.hero-proof{display:flex; align-items:center; gap:0.8rem; color:var(--silver); font-size:var(--fs-small);}
.hero-proof .stars{color:var(--red); letter-spacing:0.1em;}

.hero-visual{
  aspect-ratio:4/5; border:1px solid var(--line); border-radius:2px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0.8rem;
  background:linear-gradient(155deg, #161616, #0c0c0c);
  color:var(--grey-dim); text-align:center; padding:2rem; position:relative;
  overflow:hidden;
}
.hero-visual img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.hero-visual::before{content:""; position:absolute; inset:0; border-radius:2px; box-shadow:inset 0 0 60px rgba(225,6,0,0.12); pointer-events:none;}
.hero-visual small{font-size:var(--fs-small); font-style:italic; max-width:22ch; position:relative;}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s ease;}
.reveal.is-visible{opacity:1; transform:translateY(0);}

/* ---------- Image placeholder ---------- */
.img-slot{
  border:1px dashed var(--silver); border-radius:2px; background:linear-gradient(160deg,#171717,#0e0e0e);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0.6rem;
  color:var(--grey-dim); text-align:center; padding:1.4rem; min-height:150px;
  position:relative; overflow:hidden;
}
.img-slot img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.img-slot small{font-size:0.74rem; font-style:italic; line-height:1.4; position:relative;}
.img-slot svg{width:26px; height:26px; opacity:0.7; position:relative;}

/* ---------- Activities ---------- */
.activity-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-3);}
@media (max-width:960px){.activity-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:620px){.activity-grid{grid-template-columns:1fr;}}

.card{
  background:var(--bg-card); border:1px solid var(--line); padding:var(--space-3);
  clip-path:polygon(0 0, 100% 0, 100% 100%, 18px 100%, 0 calc(100% - 18px));
  display:flex; flex-direction:column; gap:0.9rem; transition:border-color .25s ease, background .25s ease, transform .25s ease;
}
.card:hover{border-color:var(--red); background:var(--bg-card-hover); transform:translateY(-4px);}
.card-icon{
  width:46px; height:46px; border-radius:50%; border:1px solid var(--red);
  display:flex; align-items:center; justify-content:center; color:var(--red); flex-shrink:0;
}
.card-icon svg{width:22px; height:22px;}
.card p{color:var(--grey); font-size:0.94rem;}

/* ---------- Pricing ---------- */
.pricing-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-3); margin-bottom:var(--space-4);}
@media (max-width:900px){.pricing-grid{grid-template-columns:1fr; max-width:420px; margin-inline:auto;}}

.price-card{
  background:var(--bg-card); border:1px solid var(--line); padding:var(--space-3);
  display:flex; flex-direction:column; gap:var(--space-2); position:relative;
}
.price-card.featured{border-color:var(--red); background:linear-gradient(165deg,#1a1010,#141414); box-shadow:0 0 0 1px var(--red), 0 20px 40px -20px rgba(225,6,0,0.5);}
.price-badge{
  position:absolute; top:-13px; left:var(--space-3); background:var(--red); color:var(--white);
  font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.06em;
  font-size:0.72rem; font-weight:700; padding:0.35em 0.8em;
}
.price-name{font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.02em; font-size:1.15rem; font-weight:700;}
.price-amount{display:flex; align-items:baseline; gap:0.4rem;}
.price-amount .num{font-family:var(--font-display); font-size:2.4rem; font-weight:700; color:var(--red);}
.price-amount .unit{color:var(--grey); font-size:0.85rem;}
.price-total{color:var(--silver); font-size:0.82rem; border-top:1px solid var(--line); padding-top:0.7rem;}
.price-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0.5rem;}
.price-list li{display:flex; gap:0.6rem; align-items:flex-start; font-size:0.88rem; color:var(--grey);}
.price-list svg{width:16px; height:16px; color:var(--red); flex-shrink:0; margin-top:0.2rem;}

.price-table-wrap{border:1px solid var(--line); background:var(--bg-card);}
.price-table-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:0.5rem 1rem; flex-wrap:wrap;
  padding:1.2rem 1.5rem; border-bottom:1px solid var(--line);
}
.price-table-head h3{font-size:1.15rem;}
.price-table-head p{color:var(--silver); font-size:var(--fs-small);}

table.price-table{width:100%; border-collapse:collapse; font-size:0.95rem;}
table.price-table th, table.price-table td{padding:1rem 1.5rem; text-align:left; font-variant-numeric:tabular-nums;}
table.price-table th:nth-child(n+2), table.price-table td:nth-child(n+2){text-align:right;}
table.price-table thead th{
  font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.08em;
  font-size:0.74rem; font-weight:600; color:var(--silver); border-bottom:1px solid var(--line);
}
table.price-table thead th:last-child{color:var(--red);}
table.price-table tbody th[scope="row"]{font-weight:500; color:var(--white);}
table.price-table tbody tr:not(.price-group) th, table.price-table tbody tr:not(.price-group) td{border-bottom:1px solid var(--line);}
table.price-table tbody tr:last-child th, table.price-table tbody tr:last-child td{border-bottom:0;}
table.price-table tbody tr:not(.price-group){transition:background .2s ease;}
table.price-table tbody tr:not(.price-group):hover{background:rgba(255,255,255,0.03);}
table.price-table td:last-child{font-weight:700; color:var(--white); background:rgba(225,6,0,0.07);}
table.price-table tr.is-featured th[scope="row"]{box-shadow:inset 3px 0 0 var(--red);}
table.price-table tr.price-group th{
  font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.12em; font-size:0.78rem; font-weight:600;
  color:var(--red); background:rgba(255,255,255,0.035); padding:0.8rem 1.5rem; text-align:left;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
table.price-table tr.price-group:first-child th{border-top:0;}
.price-table .dash{color:var(--grey-dim);}
.tag{
  display:inline-block; font-family:var(--font-display); font-size:0.72rem; font-weight:600; letter-spacing:0.06em;
  text-transform:uppercase; line-height:1; padding:0.3em 0.7em; border:1px solid rgba(255,255,255,0.35); border-radius:2px; color:var(--white);
}
.tag-red{background:var(--red); border-color:var(--red); margin-left:0.6rem; vertical-align:middle;}

.price-notes{list-style:none; margin:var(--space-2) 0 0; padding:0; display:flex; flex-direction:column; gap:0.45rem; color:var(--grey); font-size:var(--fs-small);}
.price-notes li{padding-left:1rem; position:relative;}
.price-notes li::before{content:""; position:absolute; left:0; top:0.6em; width:5px; height:5px; background:var(--red);}
.price-notes a{color:var(--white); text-decoration:underline; text-underline-offset:2px;}

@media (max-width:768px){
  .price-table-head{padding:1rem 1.2rem;}
  table.price-table thead{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);}
  table.price-table, table.price-table tbody, table.price-table tr, table.price-table th, table.price-table td{display:block;}
  table.price-table tr.price-group th{padding:0.7rem 1.2rem;}
  table.price-table tbody tr:not(.price-group){padding:1rem 1.2rem; border-bottom:1px solid var(--line);}
  table.price-table tbody tr:last-child{border-bottom:0;}
  table.price-table tbody tr:not(.price-group) th, table.price-table tbody tr:not(.price-group) td{padding:0; border:0; text-align:left;}
  table.price-table tbody th[scope="row"]{font-size:1.05rem; margin-bottom:0.6rem;}
  table.price-table tr.is-featured th[scope="row"]{box-shadow:none;}
  table.price-table tbody tr.is-featured{box-shadow:inset 3px 0 0 var(--red);}
  table.price-table tbody td{display:flex; justify-content:space-between; align-items:center; padding:0.35rem 0; text-align:right !important;}
  table.price-table tbody td::before{content:attr(data-label); color:var(--silver); font-size:0.75rem; text-transform:uppercase; letter-spacing:0.06em; text-align:left;}
  table.price-table td:last-child{background:none;}
}

.price-note{display:flex; gap:0.6rem; align-items:flex-start; color:var(--grey); font-size:var(--fs-small); margin-top:var(--space-2);}
.price-note svg{width:16px;height:16px;color:var(--red); flex-shrink:0; margin-top:2px;}
.todo-flag{
  border:1px dashed var(--red); color:#ff8f8a; background:rgba(225,6,0,0.06);
  padding:0.8rem 1rem; font-size:var(--fs-small); margin-top:var(--space-2);
}
.todo-flag strong{color:var(--red);}

/* ---------- Team ---------- */
.team-grid{display:grid; grid-template-columns:1fr; gap:var(--space-3); max-width:520px;}
.team-card{display:flex; gap:var(--space-3); align-items:center; background:var(--bg-card); border:1px solid var(--line); padding:var(--space-3);}
.team-photo{width:96px; height:96px; border-radius:50%; flex-shrink:0;}
.team-photo img{width:100%; height:100%; object-fit:cover; border-radius:50%;}
.team-card h3{margin-bottom:0.3rem;}
.team-role{color:var(--red); font-size:0.8rem; text-transform:uppercase; letter-spacing:0.08em; font-weight:700; margin-bottom:0.5rem; display:block;}
.team-card p{color:var(--grey); font-size:0.9rem;}

/* ---------- Hours & Location ---------- */
.split-grid{display:grid; grid-template-columns:1fr 1fr; gap:var(--space-4);}
@media (max-width:860px){.split-grid{grid-template-columns:1fr;}}

.hours-free{
  background:linear-gradient(155deg,#1a1010,#141414); border:1px solid var(--red); padding:var(--space-3);
  display:flex; flex-direction:column; gap:0.8rem; margin-bottom:var(--space-3);
}
.hours-free .big{font-family:var(--font-display); font-weight:700; font-size:clamp(1.8rem,2vw+1rem,2.6rem); color:var(--red);}
.hours-table{width:100%; border-collapse:collapse; font-size:0.9rem;}
.hours-table td{padding:0.55rem 0; border-bottom:1px solid var(--line); font-variant-numeric:tabular-nums;}
.hours-table td:first-child{color:var(--white); font-weight:600; width:38%;}
.hours-table td:last-child{color:var(--grey);}

.info-list{list-style:none; margin:var(--space-2) 0 0; padding:0; display:flex; flex-direction:column; gap:0.7rem;}
.info-list li{display:flex; gap:0.7rem; align-items:flex-start; color:var(--grey); font-size:0.92rem;}
.info-list svg{width:18px;height:18px;color:var(--red); flex-shrink:0; margin-top:2px;}
.info-list a{color:inherit; text-decoration:underline; text-underline-offset:2px;}
.info-list a:hover{color:var(--red);}

.map-embed{aspect-ratio:4/3; border:1px solid var(--line); width:100%; overflow:hidden;}
.map-embed iframe{width:100%; height:100%; border:0; filter:grayscale(0.15) contrast(1.05);}
.map-consent{
  height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1rem;
  text-align:center; padding:1.5rem; background:linear-gradient(160deg,#171717,#0e0e0e);
}
.map-consent p{color:var(--grey); font-size:0.9rem; max-width:34ch;}
.map-consent-actions{display:flex; flex-wrap:wrap; gap:0.7rem; justify-content:center;}
.map-consent .btn{padding:0.75em 1.2em; font-size:0.85rem;}

/* ---------- FAQ ---------- */
.faq-list{display:flex; flex-direction:column; gap:0.8rem; max-width:860px;}
.faq-item{background:var(--bg-card); border:1px solid var(--line); transition:border-color .2s ease;}
.faq-item[open]{border-color:var(--red);}
.faq-item summary{
  list-style:none; cursor:pointer; padding:1.1rem var(--space-3); display:flex; align-items:center;
  justify-content:space-between; gap:1rem; font-weight:600; font-size:1rem;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary .plus{
  flex-shrink:0; width:22px; height:22px; position:relative; color:var(--red);
}
.faq-item summary .plus::before, .faq-item summary .plus::after{
  content:""; position:absolute; background:currentColor; transition:transform .2s ease;
}
.faq-item summary .plus::before{left:0; top:50%; width:100%; height:2px; transform:translateY(-50%);}
.faq-item summary .plus::after{top:0; left:50%; width:2px; height:100%; transform:translateX(-50%);}
.faq-item[open] summary .plus::after{transform:translateX(-50%) scaleY(0);}
.faq-item p{padding:0 var(--space-3) 1.1rem; color:var(--grey); font-size:0.94rem;}

/* ---------- Testimonials ---------- */
.testi-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-3);}
@media (max-width:900px){.testi-grid{grid-template-columns:1fr; max-width:440px; margin-inline:auto;}}
.testi-card{background:var(--bg-card); border:1px solid var(--line); padding:var(--space-3); display:flex; flex-direction:column; gap:0.8rem;}
.testi-stars{color:var(--red); letter-spacing:0.15em;}
.testi-card p{color:var(--grey); font-size:0.92rem; font-style:italic;}
.testi-name{font-weight:700; font-size:0.88rem;}
.testi-meta{font-size:0.72rem; color:var(--grey-dim); border-top:1px solid var(--line); padding-top:0.6rem;}

/* ---------- CTA / Form ---------- */
.cta-block{
  background:radial-gradient(70% 100% at 20% 0%, rgba(225,6,0,0.16), transparent 60%), var(--bg-card);
  border:1px solid var(--line); padding:var(--space-4); display:grid; grid-template-columns:1fr 1fr; gap:var(--space-4);
}
@media (max-width:860px){.cta-block{grid-template-columns:1fr;}}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:var(--space-2);}
.form-grid .full{grid-column:1/-1;}
@media (max-width:520px){.form-grid{grid-template-columns:1fr;}}
label{display:block; font-size:0.78rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--silver); margin-bottom:0.4rem;}
input, select, textarea{
  width:100%; background:#1c1c1c; border:1px solid rgba(184,188,192,0.4); color:var(--white);
  padding:0.75em 0.9em; font-family:var(--font-body); font-size:0.92rem; border-radius:2px;
  transition:border-color .2s ease, background .2s ease;
}
input::placeholder, textarea::placeholder{color:var(--grey-dim);}
input:hover, select:hover, textarea:hover{border-color:rgba(184,188,192,0.65);}
input:focus, select:focus, textarea:focus{outline:2px solid var(--red); outline-offset:1px; border-color:var(--red); background:#221515;}
input[aria-invalid="true"], textarea[aria-invalid="true"]{border-color:var(--red);}
.field-error{color:var(--red); font-size:0.76rem; margin-top:0.3rem; min-height:1em;}
.consent{display:flex; align-items:flex-start; gap:0.6rem; font-size:0.8rem; color:var(--grey);}
.consent input{width:16px; height:16px; margin-top:3px; flex-shrink:0;}
.form-note{font-size:0.72rem; color:var(--grey-dim); margin-top:0.6rem;}
.form-status{font-size:0.88rem; margin-top:0.8rem; padding:0.7em 1em; border-radius:2px; display:none;}
.form-status.success{display:block; background:rgba(16,163,74,0.12); border:1px solid #10a34a; color:#6fe3a0;}
.form-status.error{display:block; background:rgba(225,6,0,0.1); border:1px solid var(--red); color:#ff8f8a;}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--line); padding-block:var(--space-4) var(--space-3); background:var(--bg);}
.footer-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:var(--space-4); margin-bottom:var(--space-3);}
@media (max-width:760px){.footer-grid{grid-template-columns:1fr; gap:var(--space-3);}}
.footer-grid h4{
  font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.06em;
  font-size:0.85rem; color:var(--silver); margin-bottom:0.9rem;
}
.footer-grid ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0.55rem;}
.footer-grid a{text-decoration:none; color:var(--grey); font-size:0.88rem;}
.footer-grid a:hover{color:var(--red);}
.social-row{display:flex; gap:0.7rem; margin-top:1rem;}
.social-row a{
  width:36px; height:36px; border:1px solid var(--line); border-radius:50%;
  display:flex; align-items:center; justify-content:center; color:var(--grey); transition:border-color .2s, color .2s;
}
.social-row a:hover{border-color:var(--red); color:var(--red);}
.footer-bottom{
  border-top:1px solid var(--line); padding-top:var(--space-2); display:flex; flex-wrap:wrap; gap:0.8rem 1.6rem;
  justify-content:space-between; align-items:center; font-size:0.76rem; color:var(--grey-dim);
}
.footer-bottom .legal-links{display:flex; gap:1.2rem; flex-wrap:wrap;}
.footer-bottom a{color:var(--grey-dim); text-decoration:none;}
.footer-bottom a:hover{color:var(--red);}

/* ---------- Sticky mobile CTA ---------- */
.mobile-cta{
  display:none; position:fixed; left:0; right:0; bottom:0; z-index:60;
  background:var(--bg-card); border-top:1px solid var(--line); padding:0.7rem 1rem;
}
@media (max-width:640px){
  .mobile-cta{display:block;}
  body{padding-bottom:68px;}
}

/* ---------- Legal pages (mentions, confidentialite, cgv) ---------- */
.legal-content{max-width:820px;}
.legal-content h2{font-size:clamp(1.6rem,1.2vw+1.3rem,2.2rem); margin-top:var(--space-4);}
.legal-content h2:first-child{margin-top:0;}
.legal-content p, .legal-content li{color:var(--grey); font-size:0.98rem; line-height:1.7;}
.legal-content ul{padding-left:1.2rem;}
.legal-content a{color:var(--red);}
.legal-content h3{font-size:clamp(1.05rem,0.5vw + 0.95rem,1.3rem); margin:var(--space-4) 0 0.6rem; scroll-margin-top:90px;}
.legal-content h4{font-family:var(--font-body); font-size:0.98rem; font-weight:600; color:var(--white); margin:1.1rem 0 0.3rem;}
.legal-content p + p, .legal-content p + ul, .legal-content ul + p{margin-top:1.25rem;}
.legal-content li + li{margin-top:0.55rem;}
.legal-content h3 + p, .legal-content h4 + ul{margin-top:0;}
.legal-meta{color:var(--silver); font-size:0.9rem;}

/* ---------- Bandeau de consentement cookies ---------- */
.cookie-banner{
  position:fixed; left:0; right:0; bottom:0; z-index:90;
  background:var(--bg-card); border-top:1px solid var(--line); box-shadow:0 -12px 32px rgba(0,0,0,0.5);
  padding:1rem 0;
}
.cookie-banner-inner{
  max-width:var(--container); margin:0 auto; padding-inline:clamp(1.2rem,4vw,2.5rem);
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-3);
}
.cookie-banner strong{font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.04em; font-size:1rem;}
.cookie-banner p{color:var(--grey); font-size:0.88rem; margin-top:0.25rem; max-width:70ch;}
.cookie-banner p a{color:var(--white); text-decoration:underline; text-underline-offset:2px;}
.cookie-actions{display:flex; gap:0.7rem; flex-shrink:0;}
.cookie-actions .btn{padding:0.8em 1.4em; min-width:7.5rem;}
@media (max-width:700px){
  .cookie-banner-inner{flex-direction:column; align-items:stretch; gap:1rem;}
  .cookie-actions .btn{flex:1;}
}
