/* =====================================================================
   CDL DÉVELOPPEMENT — LANDING TOUR DE FRANCE
   Feuille de style commune (page globale + page ville)
   Direction : éditorial moderne, angles nets, hairlines, typographie forte.
   Touches du design system CDL : rouge #E61A07, marine #10153A,
   encre #161E2A, texte #595959, radius 4 / 14 / pill 30, Poppins.
   ===================================================================== */

:root{
  /* Couleurs */
  --ink:        #0C0E14;
  --text:       #161E2A;
  --sub:        #595959;
  --muted:      #8A8F98;
  --marine:     #10153A;
  --marine-2:   #1A2050;
  --red:        #E61A07;
  --red-dark:   #B91404;
  --paper:      #FBFAF8;
  --paper-2:    #F3F2EE;
  --white:      #FFFFFF;
  --line:       #E4E2DD;
  --line-dark:  rgba(255,255,255,.14);

  /* Typo */
  --sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --display: 'Poppins', 'Inter', system-ui, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Rythme */
  --shell: 1180px;
  --pad: 24px;
  --sec: clamp(72px, 9vw, 128px);
  --r: 4px;
  --r-media: 14px;
  --ease: cubic-bezier(.16,1,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--sans);
  font-size:16px;
  line-height:1.65;
  color:var(--text);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
h1,h2,h3,h4{ font-family:var(--display); font-weight:700; line-height:1.12; letter-spacing:-.02em; margin:0; color:var(--text); }
p{ margin:0; }

/* ------------------------------ Layout ------------------------------ */
.shell{ width:100%; max-width:var(--shell); margin:0 auto; padding:0 var(--pad); }
section{ position:relative; }
.sec{ padding:var(--sec) 0; }
.sec--tight{ padding:calc(var(--sec) * .62) 0; }
.paper-2{ background:var(--paper-2); }
.dark{ background:var(--marine); color:#fff; }
.dark h1,.dark h2,.dark h3,.dark h4{ color:#fff; }
.dark p{ color:rgba(255,255,255,.72); }

/* ------------------------------ Eyebrow / titres ------------------------------ */
.eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--mono); font-size:11.5px; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:var(--red-dark);
  margin-bottom:18px;
}
.eyebrow::before{ content:""; width:26px; height:1px; background:var(--red-dark); display:block; }
.dark .eyebrow{ color:#FF6A4D; }
.dark .eyebrow::before{ background:#FF6A4D; }

.h-display{ font-size:clamp(38px,6.4vw,74px); line-height:1.03; letter-spacing:-.035em; }
.h-sec{ font-size:clamp(30px,4vw,46px); letter-spacing:-.03em; }
.h-card{ font-size:19px; letter-spacing:-.01em; }
.lede{ font-size:clamp(16px,1.6vw,19px); color:var(--sub); max-width:62ch; }
.dark .lede{ color:rgba(255,255,255,.74); }
.sec-head{ max-width:760px; margin-bottom:clamp(40px,5vw,64px); }
.sec-head .h-sec{ margin-bottom:18px; }

/* Filet fin */
.rule{ height:1px; background:var(--line); border:0; margin:0; }
.dark .rule{ background:var(--line-dark); }

/* ------------------------------ Boutons ------------------------------ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--display); font-weight:700; font-size:16.5px; letter-spacing:-.01em;
  padding:15px 30px; border-radius:var(--r); border:1px solid transparent;
  text-decoration:none; cursor:pointer; position:relative;
  transition:transform .28s var(--ease), background .22s, color .22s, border-color .22s, box-shadow .28s;
}
.btn--primary{ background:var(--red); color:#fff; box-shadow:0 1px 0 rgba(0,0,0,.06); }
.btn--primary:hover{ background:var(--red-dark); transform:translateY(-2px); box-shadow:0 12px 26px -12px rgba(230,26,7,.6); }
.btn--ghost{ background:transparent; color:var(--text); border-color:var(--line); }
.btn--ghost:hover{ border-color:var(--text); transform:translateY(-2px); }
.btn--light{ background:#fff; color:var(--marine); }
.btn--light:hover{ transform:translateY(-2px); box-shadow:0 14px 30px -14px rgba(0,0,0,.5); }
.btn--outline-light{ background:transparent; color:#fff; border-color:rgba(255,255,255,.3); }
.btn--outline-light:hover{ border-color:#fff; transform:translateY(-2px); }
.btn--pill{ border-radius:30px; }
.btn--block{ width:100%; }
.btn__arrow{ transition:transform .3s var(--ease); }
.btn:hover .btn__arrow{ transform:translateX(4px); }

.link-u{ text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:1px; transition:color .2s; }
.link-u:hover{ color:var(--red); }

/* ------------------------------ Nav ------------------------------ */
.nav{
  position:sticky; top:0; z-index:60;
  background:rgba(251,250,248,.86);
  backdrop-filter:blur(14px) saturate(1.4);
  border-bottom:1px solid var(--line);
}
.nav__in{ display:flex; align-items:center; gap:28px; height:68px; }
.nav__logo{ height:26px; width:auto; }
.nav__links{ display:flex; gap:26px; margin-left:auto; }
.nav__links a{
  font-size:14.5px; font-weight:500; color:var(--sub); text-decoration:none;
  position:relative; padding:4px 0; transition:color .2s;
}
.nav__links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:0;
  background:var(--red); transition:width .32s var(--ease);
}
.nav__links a:hover{ color:var(--text); }
.nav__links a:hover::after{ width:100%; }
.nav__cta{ margin-left:auto; }
.nav__cta .btn{ padding:11px 20px; font-size:14.5px; }
.nav__links + .nav__cta{ margin-left:8px; }
@media (max-width:900px){ .nav__links{ display:none; } }

/* ------------------------------ Hero (page globale) ------------------------------ */
.hero{ padding:clamp(56px,7vw,104px) 0 clamp(48px,6vw,84px); position:relative; overflow:hidden; }
.hero__grid{
  display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(32px,5vw,72px); align-items:end;
}
@media (max-width:940px){ .hero__grid{ grid-template-columns:1fr; gap:40px; } }
.hero h1{ margin-bottom:26px; }
.hero h1 .hl{ color:var(--red); display:inline-block; }
.hero h1 .uword{ position:relative; white-space:nowrap; }
.hero h1 .uword::after{
  content:""; position:absolute; left:0; right:0; bottom:.06em; height:.1em;
  background:var(--red); opacity:.9; transform:scaleX(0); transform-origin:left;
  animation:swipe 1s var(--ease) .55s forwards;
}
@keyframes swipe{ to{ transform:scaleX(1); } }
.hero__sub{ font-size:clamp(16.5px,1.5vw,19px); color:var(--sub); max-width:56ch; }
.hero__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.hero__note{ margin-top:16px; font-size:13.5px; color:var(--muted); }

.hero__media{ position:relative; }
.hero__media img{ width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:var(--r-media); filter:saturate(.94); }
.hero__badge{
  position:absolute; left:-18px; bottom:26px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:14px 18px; box-shadow:0 20px 44px -26px rgba(12,14,20,.5);
}
.hero__badge b{ font-family:var(--display); font-size:22px; display:block; letter-spacing:-.02em; }
.hero__badge span{ font-size:12.5px; color:var(--sub); }
@media (max-width:940px){ .hero__badge{ left:12px; } }

/* Bandeau de faits */
.facts{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:#fff; }
.facts__in{ display:grid; grid-template-columns:repeat(4,1fr); }
.fact{ padding:26px 24px; border-right:1px solid var(--line); }
.fact:last-child{ border-right:0; }
.fact__n{ font-family:var(--display); font-weight:700; font-size:clamp(24px,2.6vw,32px); letter-spacing:-.03em; line-height:1; }
.fact__n em{ font-style:normal; color:var(--red); }
.fact__l{ margin-top:8px; font-size:13px; color:var(--sub); line-height:1.45; }
@media (max-width:820px){
  .facts__in{ grid-template-columns:1fr 1fr; }
  .fact{ border-bottom:1px solid var(--line); }
  .fact:nth-child(2n){ border-right:0; }
  .fact:nth-last-child(-n+2){ border-bottom:0; }
}

/* ------------------------------ Bandeau certif ------------------------------ */
.cert{ background:var(--marine); color:#fff; }
.cert__in{ display:flex; flex-wrap:wrap; align-items:center; gap:18px 34px; padding:20px 0; }
.cert__pill{
  display:inline-flex; align-items:center; gap:10px;
  font-size:13px; font-weight:600; letter-spacing:.02em;
  border:1px solid rgba(255,255,255,.22); border-radius:30px; padding:8px 16px;
}
.cert__dot{ width:7px; height:7px; border-radius:50%; background:#3FCF8E; box-shadow:0 0 0 4px rgba(63,207,142,.18); }
.cert__txt{ font-size:14px; color:rgba(255,255,255,.78); }
.cert__txt b{ color:#fff; }

/* ------------------------------ Cartes "pourquoi" ------------------------------ */
.why{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
@media (max-width:820px){ .why{ grid-template-columns:1fr; } }
.why__item{ background:var(--paper); padding:clamp(26px,3vw,40px); transition:background .3s; }
.why__item:hover{ background:#fff; }
.why__num{ font-family:var(--mono); font-size:12px; color:var(--red); letter-spacing:.1em; }
.why__item h3{ margin:16px 0 10px; }
.why__item p{ color:var(--sub); font-size:15.5px; }

/* ------------------------------ Programme (timeline) ------------------------------ */
.prog{ border-top:1px solid var(--line); }
.prog__row{
  display:grid; grid-template-columns:120px 1fr; gap:28px;
  padding:26px 4px; border-bottom:1px solid var(--line);
  transition:background .25s, padding-left .3s var(--ease);
}
.prog__row:hover{ background:#fff; padding-left:14px; }
.prog__time{ font-family:var(--mono); font-size:13px; color:var(--red); padding-top:3px; letter-spacing:.02em; }
.prog__body h3{ font-size:17.5px; margin-bottom:6px; }
.prog__body p{ color:var(--sub); font-size:15px; max-width:70ch; }
@media (max-width:640px){ .prog__row{ grid-template-columns:1fr; gap:8px; } }

/* ------------------------------ Méthode ------------------------------ */
.methods{ display:flex; flex-wrap:wrap; gap:12px; }
.method{
  display:flex; flex-direction:column; gap:6px;
  border:1px solid var(--line); border-radius:var(--r); background:#fff;
  padding:18px 22px; min-width:210px; flex:1 1 210px;
  transition:transform .3s var(--ease), border-color .25s, box-shadow .3s;
}
.method:hover{ transform:translateY(-4px); border-color:var(--text); box-shadow:0 18px 40px -30px rgba(12,14,20,.55); }
.method b{ font-family:var(--display); font-size:16px; letter-spacing:-.01em; }
.method span{ font-size:13.5px; color:var(--sub); line-height:1.5; }

/* ------------------------------ Christian ------------------------------ */
.about{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(30px,5vw,72px); align-items:center; }
@media (max-width:900px){ .about{ grid-template-columns:1fr; } }
.about__photo{ position:relative; }
.about__photo img{ border-radius:var(--r-media); aspect-ratio:1/1.15; object-fit:cover; width:100%; }
.about__tag{
  position:absolute; right:-14px; top:22px; background:var(--red); color:#fff;
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  padding:8px 12px; border-radius:var(--r);
}
@media (max-width:900px){ .about__tag{ right:14px; } }
.about__quote{ font-family:var(--display); font-weight:700; font-size:clamp(20px,2.4vw,27px); line-height:1.3; letter-spacing:-.02em; margin:22px 0 20px; }
.about__list{ display:grid; gap:10px; margin-top:24px; }
.about__list li{ list-style:none; display:flex; gap:12px; font-size:15px; color:var(--sub); }
.about__list li::before{ content:"—"; color:var(--red); }
.about__list{ padding:0; }

/* ------------------------------ Tarif ------------------------------ */
.price{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
@media (max-width:820px){ .price{ grid-template-columns:1fr; } }
.price__main{ background:#fff; padding:clamp(28px,3.4vw,44px); }
.price__amount{ font-family:var(--display); font-weight:700; font-size:clamp(40px,5vw,58px); letter-spacing:-.04em; line-height:1; }
.price__amount small{ font-size:16px; font-weight:500; color:var(--sub); letter-spacing:0; display:block; margin-top:10px; }
.price__inc{ margin-top:26px; display:grid; gap:11px; padding:0; }
.price__inc li{ list-style:none; display:flex; gap:12px; font-size:15px; }
.price__inc li::before{ content:"✓"; color:var(--red); font-weight:700; }
.price__side{ background:var(--paper-2); padding:clamp(28px,3.4vw,44px); }
.price__side h3{ margin-bottom:14px; }
.price__side p{ color:var(--sub); font-size:15px; }
.price__side .btn{ margin-top:24px; }
.badge-cert{
  display:inline-flex; align-items:center; gap:9px; margin-bottom:16px;
  background:#fff; border:1px solid var(--line); border-radius:30px; padding:7px 14px;
  font-size:12.5px; font-weight:600;
}

/* ------------------------------ Avis ------------------------------ */
.talks{ columns:3; column-gap:22px; }
@media (max-width:960px){ .talks{ columns:2; } }
@media (max-width:620px){ .talks{ columns:1; } }
.talk{
  break-inside:avoid; margin:0 0 22px; background:#fff;
  border:1px solid var(--line); border-radius:var(--r); padding:26px 26px 22px;
  position:relative; transition:transform .35s var(--ease), box-shadow .35s;
}
.talk:hover{ transform:translateY(-4px); box-shadow:0 24px 50px -34px rgba(12,14,20,.5); }
.talk::before{
  content:"“"; position:absolute; top:8px; right:20px;
  font-family:var(--display); font-size:58px; line-height:1; color:var(--red); opacity:.16;
}
.talk__q{ font-size:15.5px; line-height:1.62; }
.talk__who{ display:flex; align-items:center; gap:12px; margin-top:20px; padding-top:16px; border-top:1px solid var(--line); }
.talk__av{
  width:36px; height:36px; border-radius:50%; flex:0 0 36px;
  display:grid; place-items:center; font-family:var(--display); font-weight:700; font-size:14px;
  background:var(--marine); color:#fff;
}
.talk__av--red{ background:var(--red); }
.talk__who b{ font-size:14px; display:block; letter-spacing:-.01em; }
.talk__who span{ font-size:12.5px; color:var(--sub); }
.talk--feature{ background:var(--marine); border-color:var(--marine); }
.talk--feature .talk__q{ color:#fff; font-size:17px; }
.talk--feature .talk__who{ border-top-color:rgba(255,255,255,.16); }
.talk--feature .talk__who b{ color:#fff; }
.talk--feature .talk__who span{ color:rgba(255,255,255,.65); }
.talk--feature::before{ color:#fff; opacity:.2; }

/* ------------------------------ Villes ------------------------------ */
.cities{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:940px){ .cities{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:620px){ .cities{ grid-template-columns:1fr; } }
.city{
  border:1px solid var(--line); border-radius:var(--r); background:#fff; overflow:hidden;
  display:flex; flex-direction:column; text-decoration:none;
  transition:transform .35s var(--ease), box-shadow .35s, border-color .25s;
}
.city:hover{ transform:translateY(-5px); box-shadow:0 26px 54px -36px rgba(12,14,20,.55); border-color:#CFCCC5; }
.city__top{ display:flex; align-items:baseline; justify-content:space-between; padding:22px 22px 16px; gap:12px; }
.city__name{ font-family:var(--display); font-weight:700; font-size:21px; letter-spacing:-.02em; }
.city__date{ font-family:var(--mono); font-size:12.5px; color:var(--red); white-space:nowrap; }
.city__place{ padding:0 22px 20px; font-size:13.5px; color:var(--sub); line-height:1.5; }
.city__foot{
  margin-top:auto; border-top:1px solid var(--line); padding:14px 22px;
  display:flex; align-items:center; justify-content:space-between;
  font-size:13.5px; font-weight:600; color:var(--text);
}
.city__foot em{ font-style:normal; color:var(--red); }
.city--soon{ opacity:.62; }
.city--soon .city__foot{ color:var(--muted); }

/* ------------------------------ FAQ ------------------------------ */
.faq{ border-top:1px solid var(--line); }
.faq details{ border-bottom:1px solid var(--line); }
.faq summary{
  list-style:none; cursor:pointer; padding:22px 44px 22px 0; position:relative;
  font-family:var(--display); font-weight:700; font-size:17px; letter-spacing:-.01em;
  transition:color .2s;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary:hover{ color:var(--red); }
.faq summary::after{
  content:""; position:absolute; right:12px; top:calc(50% - 5px);
  width:10px; height:10px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:rotate(45deg); transition:transform .3s var(--ease);
}
.faq details[open] summary::after{ transform:rotate(-135deg); top:calc(50% - 2px); }
.faq__a{ padding:0 60px 24px 0; color:var(--sub); font-size:15.5px; }

/* ------------------------------ CTA final ------------------------------ */
.final{ text-align:center; }
.final .h-sec{ max-width:22ch; margin:0 auto 18px; }
.final .lede{ margin:0 auto 34px; }
.final__row{ display:flex; flex-wrap:wrap; gap:14px; justify-content:center; }
.final__meta{ margin-top:26px; font-size:13.5px; color:rgba(255,255,255,.6); }

/* ------------------------------ Footer ------------------------------ */
.foot{ background:var(--ink); color:rgba(255,255,255,.62); font-size:13.5px; padding:52px 0 40px; }
.foot__grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:36px; }
@media (max-width:760px){ .foot__grid{ grid-template-columns:1fr; gap:26px; } }
.foot img{ height:24px; margin-bottom:16px; }
.foot a{ color:rgba(255,255,255,.62); text-decoration:none; border-bottom:1px solid rgba(255,255,255,.2); }
.foot a:hover{ color:#fff; }
.foot h4{ font-size:13px; font-family:var(--mono); letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.5); margin-bottom:14px; font-weight:500; }
.foot__legal{ margin-top:38px; padding-top:22px; border-top:1px solid rgba(255,255,255,.12); display:flex; flex-wrap:wrap; gap:8px 20px; justify-content:space-between; font-size:12.5px; color:rgba(255,255,255,.42); }

/* =====================================================================
   PAGE VILLE — spécifique
   ===================================================================== */

/* Hero ville */
.vhero{ padding:clamp(44px,5vw,76px) 0 0; }
.vhero__grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(30px,4vw,64px); align-items:center; }
@media (max-width:940px){ .vhero__grid{ grid-template-columns:1fr; } }
.vhero__crumbs{ font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); margin-bottom:20px; }
.vhero__crumbs a{ text-decoration:none; }
.vhero__crumbs a:hover{ color:var(--red); }
.vhero h1{ font-size:clamp(36px,5.6vw,64px); margin-bottom:22px; }
.vhero h1 .city-hl{ display:block; color:var(--red); }
.vhero__sub{ font-size:17px; color:var(--sub); max-width:52ch; }
.vhero__photo{ position:relative; }
.vhero__photo img{ border-radius:var(--r-media); aspect-ratio:4/3.4; object-fit:cover; width:100%; }
.vhero__photo--ph{
  border-radius:var(--r-media); aspect-ratio:4/3.4; width:100%;
  background:repeating-linear-gradient(135deg,#EFEEE9 0 12px,#E7E5DF 12px 24px);
  border:1px dashed #C9C6BF; display:grid; place-items:center; text-align:center; padding:20px;
}
.vhero__photo--ph span{ font-family:var(--mono); font-size:11.5px; color:#8A877F; letter-spacing:.06em; }

/* Fiche session (encadré) */
.session{
  border:1px solid var(--line); border-radius:var(--r); background:#fff;
  margin-top:clamp(32px,4vw,52px); overflow:hidden;
}
.session__grid{ display:grid; grid-template-columns:repeat(4,1fr); }
@media (max-width:820px){ .session__grid{ grid-template-columns:1fr 1fr; } }
.session__cell{ padding:22px 24px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.session__cell:nth-child(4n){ border-right:0; }
.session__c-l{ font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
.session__c-v{ font-family:var(--display); font-weight:700; font-size:16.5px; letter-spacing:-.02em; }
.session__c-v small{ display:block; font-family:var(--sans); font-weight:400; font-size:13px; color:var(--sub); letter-spacing:0; margin-top:4px; }
.session__bar{
  display:flex; flex-wrap:wrap; gap:14px 22px; align-items:center; justify-content:space-between;
  padding:20px 24px; background:var(--paper-2); border-top:1px solid var(--line);
}
.session__bar--last{ border-top:0; }
.session__bar .btn{ padding:13px 26px; }

/* Bloc urgence / places */
.urgency{ display:flex; flex-wrap:wrap; gap:16px; align-items:center; }
.seats{ flex:1 1 240px; }
.seats__top{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; }
.seats__n{ font-family:var(--display); font-weight:700; font-size:15px; }
.seats__n b{ color:var(--red); }
.seats__bar{ height:6px; border-radius:3px; background:#E4E2DD; overflow:hidden; }
.seats__fill{ height:100%; width:40%; background:var(--red); border-radius:3px; }
.seats__note{ font-size:12px; color:var(--muted); margin-top:8px; display:flex; align-items:center; gap:6px; }
.seats__note i{ width:5px; height:5px; border-radius:50%; background:var(--muted); display:block; }

/* Bloc local */
.local{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
@media (max-width:820px){ .local{ grid-template-columns:1fr; } }
.local__cell{ background:#fff; padding:clamp(26px,3vw,38px); }
.local__cell h3{ margin-bottom:12px; }
.local__cell p{ color:var(--sub); font-size:15.5px; }
.local__cell ul{ margin:16px 0 0; padding:0; display:grid; gap:10px; }
.local__cell li{ list-style:none; display:flex; gap:12px; font-size:15px; color:var(--sub); }
.local__cell li::before{ content:"→"; color:var(--red); }

/* Barre de réservation collante */
.sticky{
  position:fixed; left:0; right:0; bottom:0; z-index:70;
  background:rgba(16,21,58,.97); backdrop-filter:blur(10px); color:#fff;
  border-top:1px solid rgba(255,255,255,.14);
  transform:translateY(110%); transition:transform .45s var(--ease);
}
.sticky.is-on{ transform:translateY(0); }
.sticky__in{ display:flex; align-items:center; gap:18px; padding:14px var(--pad); max-width:var(--shell); margin:0 auto; }
.sticky__txt{ font-size:14.5px; line-height:1.35; }
.sticky__txt b{ font-family:var(--display); }
.sticky__txt span{ display:block; font-size:12.5px; color:rgba(255,255,255,.62); }
.sticky .btn{ margin-left:auto; padding:12px 24px; font-size:15px; }
.sticky__cd{ font-family:var(--mono); font-size:12.5px; color:#FF8A70; margin-left:auto; }
@media (max-width:640px){
  .sticky__cd{ display:none; }
  .sticky .btn{ margin-left:auto; padding:11px 18px; font-size:14px; }
}

/* Bandeau countdown (page globale) */
.cdband{ background:var(--red); color:#fff; }
.cdband__in{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px 16px; padding:14px 0; font-size:14.5px; }
.cdband b{ font-family:var(--mono); font-weight:500; letter-spacing:.02em; }
.cdband a{ color:#fff; }

/* ------------------------------ Toast (CTA démo) ------------------------------ */
.toast{
  position:fixed; left:50%; bottom:88px; transform:translate(-50%,14px);
  z-index:120; background:var(--ink); color:#fff;
  border:1px solid rgba(255,255,255,.16); border-radius:var(--r);
  padding:14px 20px; font-size:14px; line-height:1.4; max-width:min(92vw,420px);
  box-shadow:0 24px 54px -22px rgba(0,0,0,.7); text-align:center;
  opacity:0; pointer-events:none; transition:opacity .3s, transform .35s var(--ease);
}
.toast.is-on{ opacity:1; transform:translate(-50%,0); pointer-events:auto; }
.toast b{ color:#FF8A70; }

/* ------------------------------ Reveal animations ------------------------------ */
/* Les éléments sont VISIBLES par défaut (aucun contenu ne peut rester caché).
   JS ajoute .pre-animate juste avant d'observer, puis .is-in à l'apparition. */
.reveal{ transition:opacity .8s var(--ease), transform .8s var(--ease); transition-delay:var(--d,0ms); }
.reveal.pre-animate{ opacity:0; transform:translateY(26px); }
.reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal.pre-animate{ opacity:1 !important; transform:none !important; transition:none; }
  .hero h1 .uword::after{ transform:scaleX(1); animation:none; }
}
