/* ===========================================================================
   Trail de Chaumuzy 2027 — hi-fi landing page
   Palette + type from the event deck (Marne Outdoor XP). Accent is tweakable;
   --accent-safe / --accent-fg are computed in JS for contrast safety.
   =========================================================================== */
:root{
  /* surfaces */
  --ink:#161310;            /* warm near-black, dark sections */
  --ink-2:#221d17;
  --ink-soft:#3a332b;
  --cream:#F5F0E8;
  --cream-2:#EEE6D8;
  --white:#ffffff;
  --paper:#FBF8F2;

  /* text */
  --tx:#241F19;             /* body on light */
  --tx-2:#5c5247;           /* muted on light */
  --tx-3:#8a7d6e;
  --on-ink:#F5F0E8;         /* text on dark */
  --on-ink-2:rgba(245,240,232,.62);

  /* brand */
  --accent:#E8631C;         /* golden orange (primary, tweakable) */
  --accent-safe:#E8631C;    /* darkened-if-too-light, computed in JS */
  --accent-fg:#ffffff;      /* legible text on accent fill, computed in JS */
  --accent-soft:rgba(232,99,28,.12);
  --gold:#D6A23E;
  --gold-deep:#A9762A;
  --gold-ink:#9A6B1E;        /* legible gold on light surfaces, computed in JS */
  --gold-soft:rgba(214,162,62,.14);
  --champagne:#6E3FA3;
  --champagne-soft:rgba(110,63,163,.10);

  /* lines / borders */
  --hair:rgba(36,31,25,.14);
  --hair-strong:rgba(36,31,25,.26);
  --hair-on-ink:rgba(245,240,232,.16);

  /* shadow — warm, soft */
  --sh-sm:0 1px 2px rgba(22,19,16,.06), 0 4px 14px rgba(22,19,16,.06);
  --sh-md:0 6px 18px rgba(22,19,16,.10), 0 18px 48px rgba(22,19,16,.10);
  --sh-lg:0 20px 60px rgba(22,19,16,.18);

  --radius:14px;
  --radius-lg:22px;
  --radius-sm:10px;

  --maxw:1180px;

  /* type — driven by the Typographie tweak (defaults = impact model) */
  --display:'Bebas Neue', 'Barlow Condensed', sans-serif;
  --text:'Barlow', system-ui, sans-serif;
  --disp-tr:uppercase;      /* heading case */
  --disp-wt:400;            /* heading weight */
  --disp-tk:.005em;         /* heading tracking */
}

*{box-sizing:border-box}
html{scroll-behavior:smooth; overflow-x:clip; max-width:100%;}
section[id], header[id]{ scroll-margin-top:74px; }
body{
  margin:0; background:var(--cream); color:var(--tx); overflow-x:clip; max-width:100%;
  font-family:var(--text); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block; max-width:100%}
a{color:inherit; text-decoration:none}

/* ---------- keyboard focus (a11y) — visible ring only for keyboard users ---------- */
:focus{ outline:none; }
:focus-visible{ outline:2px solid var(--accent-safe); outline-offset:3px; border-radius:5px; }
.btn:focus-visible{ outline-offset:4px; }
.dark :focus-visible, .hero :focus-visible, .nav :focus-visible,
.sticky-cta :focus-visible, .mobile-menu :focus-visible, .par-right :focus-visible{ outline-color:var(--gold); }

/* ---------- type ---------- */
.display{
  font-family:var(--display); font-weight:var(--disp-wt);
  text-transform:var(--disp-tr); letter-spacing:var(--disp-tk);
  line-height:.92; margin:0;
}
.eyebrow{
  font-family:var(--text); font-weight:700; text-transform:uppercase;
  letter-spacing:.22em; font-size:13px; color:var(--accent-safe);
  display:inline-flex; align-items:center; gap:9px;
}
.eyebrow::before{ content:""; width:26px; height:2px; background:currentColor; display:inline-block; }
.eyebrow.center::after{ content:""; width:26px; height:2px; background:currentColor; display:inline-block; }
.lead{ font-size:19px; color:var(--tx-2); line-height:1.62; }
#territoire .reveal > p.lead{ text-align:justify; hyphens:none; -webkit-hyphens:none; word-break:keep-all; }
.par-left > p.lead{ text-align:justify; hyphens:none; -webkit-hyphens:none; word-break:keep-all; }
.muted{ color:var(--tx-2); }

/* ---------- layout ---------- */
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 28px; }
.section{ padding:96px 0; position:relative; }
.section-head{ max-width:680px; margin:0 0 52px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.section-head .display{ font-size:clamp(40px,6vw,68px); margin-top:14px; color:var(--ink); }
.section-head .lead{ margin-top:18px; }

.dark{ background:var(--ink); color:var(--on-ink); }
.dark .display{ color:var(--on-ink); }
.dark .muted{ color:var(--on-ink-2); }
.dark .eyebrow{ color:var(--gold); }

.cream-2{ background:var(--cream-2); }

/* ---------- buttons ---------- */
.btn{
  font-family:var(--text); font-weight:700; font-size:15px; letter-spacing:.02em;
  display:inline-flex; align-items:center; gap:9px; cursor:pointer;
  padding:14px 26px; border-radius:999px; border:2px solid transparent;
  transition:transform .16s cubic-bezier(.2,.7,.3,1), box-shadow .16s, background .16s, color .16s, border-color .16s;
  white-space:nowrap; text-transform:uppercase;
}
.btn svg{ width:17px; height:17px; }
.btn-primary{ background:var(--accent); color:var(--accent-fg); border-color:var(--accent); box-shadow:var(--sh-sm); }
.btn-primary:hover{ transform:translateY(-2px); box-shadow:var(--sh-md); }
.btn-primary:active{ transform:translateY(0) scale(.98); }
/* secondary ("gold") CTA: bright on dark sections, legible-ink on light */
.btn-gold{ background:transparent; color:var(--gold-ink); border-color:var(--gold-ink); }
.btn-gold:hover{ background:var(--gold-ink); color:var(--cream); transform:translateY(-2px); }
.btn.is-disabled{ opacity:.5; cursor:default; pointer-events:none; }
.btn.is-disabled:hover{ background:transparent; color:inherit; transform:none; }
.dark .btn-gold, .hero .btn-gold, .sticky-cta .btn-gold, .nav .btn-gold{ color:var(--gold); border-color:var(--gold); }
.dark .btn-gold:hover, .hero .btn-gold:hover, .sticky-cta .btn-gold:hover, .nav .btn-gold:hover{ background:var(--gold); color:var(--ink); }
.btn-ghost-dark{ background:transparent; color:var(--on-ink); border-color:var(--hair-on-ink); }
.btn-ghost-dark:hover{ border-color:var(--on-ink); transform:translateY(-2px); }

/* ---------- chips / pills ---------- */
.chip{
  font-family:var(--text); font-weight:600; font-size:14px;
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 15px; border-radius:999px; border:1.5px solid var(--hair-strong);
  background:var(--white); color:var(--tx);
}
.chip svg{ width:15px; height:15px; color:var(--accent-safe); }
.dark .chip{ background:rgba(245,240,232,.06); border-color:var(--hair-on-ink); color:var(--on-ink); }
.dark .chip svg{ color:var(--gold); }

/* ---------- cards ---------- */
.card{
  background:var(--white); border:1px solid var(--hair); border-radius:var(--radius-lg);
  box-shadow:var(--sh-sm); transition:transform .18s cubic-bezier(.2,.7,.3,1), box-shadow .18s;
}
.card.hover:hover{ transform:translateY(-3px); box-shadow:var(--sh-md); }

/* ---------- nav ---------- */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:50;
  display:flex; align-items:center; gap:24px;
  padding:18px 32px; transition:background .25s, padding .25s, box-shadow .25s, border-color .25s;
  border-bottom:1px solid transparent;
}
.nav.solid{ background:rgba(22,19,16,.86); backdrop-filter:blur(12px); padding:12px 32px; border-color:var(--hair-on-ink); }
.nav .logo{ height:34px; width:auto; flex-shrink:0; }
.nav-links{ display:flex; gap:26px; margin-left:14px; }
.nav-links a{ color:var(--on-ink); font-weight:600; font-size:15px; opacity:.82; transition:opacity .15s, color .15s; position:relative; }
.nav-links a:hover{ opacity:1; color:var(--gold); }
.nav-cta{ margin-left:auto; display:flex; align-items:center; gap:12px; }
.nav-cta .btn{ padding:11px 18px; font-size:14px; }
.nav-burger{ display:none; background:none; border:0; color:var(--on-ink); cursor:pointer; }
.nav-burger svg{ width:26px; height:26px; }

/* mobile menu */
.mobile-menu{ position:fixed; inset:0 0 0 auto; width:min(82vw,330px); background:var(--ink); z-index:60;
  transform:translateX(100%); transition:transform .3s cubic-bezier(.2,.7,.3,1); display:flex; flex-direction:column; padding:90px 30px 30px; gap:6px; border-left:1px solid var(--hair-on-ink); }
.mobile-menu.open{ transform:translateX(0); }
.mobile-menu a{ color:var(--on-ink); font-family:var(--display); font-size:30px; padding:10px 0; border-bottom:1px solid var(--hair-on-ink); }
.mobile-menu-cta{ margin-top:auto; font-family:var(--text)!important; font-size:15px!important; border-bottom:0!important; justify-content:center; text-align:center; }
.menu-scrim{ position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:55; opacity:0; pointer-events:none; transition:opacity .3s; }
.menu-scrim.open{ opacity:1; pointer-events:auto; }

/* ---------- hero ---------- */
.hero{ position:relative; min-height:100svh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:140px 28px 64px; overflow:hidden; }
.hero .contour{ position:absolute; inset:0; width:100%; height:100%; opacity:.5; pointer-events:none; }
.hero-veil{ position:absolute; inset:0; background:radial-gradient(120% 80% at 50% 0%, rgba(232,99,28,.10), transparent 60%); pointer-events:none; }
.hero-inner{ position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; gap:26px; max-width:980px; }
.hero-logo{ height:84px; width:auto; }
.hero-date{ font-family:var(--text); font-weight:700; text-transform:uppercase; letter-spacing:.26em; font-size:15px; color:var(--gold); }
.hero-title{ font-size:clamp(72px,15vw,190px); color:var(--on-ink); line-height:.84; }
.hero-title .l2{ color:var(--accent); }
.hero-sub{ font-size:19px; color:var(--on-ink-2); max-width:620px; }
.hero-tag{ font-family:var(--display); text-transform:uppercase; letter-spacing:.06em; font-size:clamp(20px,2.4vw,28px); color:var(--gold); margin:0; }
.hero-cta{ display:flex; gap:14px; flex-wrap:wrap; justify-content:center; }
.hero-cta .btn{ white-space:normal; text-align:center; }
.hero-scroll{ display:none; position:absolute; bottom:18px; left:50%; transform:translateX(-50%); z-index:2; color:var(--on-ink-2); flex-direction:column; align-items:center; gap:6px; font-size:12px; letter-spacing:.2em; text-transform:uppercase; text-shadow:0 1px 10px var(--ink), 0 0 20px var(--ink); }
.hero-scroll svg{ width:20px; height:20px; animation:bob 1.8s ease-in-out infinite; }
@keyframes bob{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(6px) } }

/* stat strip */
.stat-strip{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--hair-on-ink); border-radius:var(--radius); overflow:hidden; }
.stat-strip .st{ padding:18px 22px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px; border-right:1px solid var(--hair-on-ink); text-align:center; }
.stat-strip .st:last-child{ border-right:0; }
.stat-strip .st b{ font-family:var(--display); font-size:40px; color:var(--gold); line-height:1; height:38px; display:flex; align-items:center; }
.stat-strip .st span{ font-size:20px; letter-spacing:.08em; text-transform:uppercase; color:var(--on-ink-2); line-height:1.25; }

/* ---------- countdown ---------- */
.countdown{ display:flex; gap:16px; }
.cd-unit{ display:flex; flex-direction:column; align-items:center; gap:9px; }
.cd-ring{ position:relative; width:96px; height:96px; }
.cd-ring svg{ width:100%; height:100%; transform:rotate(-90deg); }
.cd-ring .num{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-size:42px; color:var(--on-ink); }
.cd-unit .lbl{ font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--on-ink-2); }
.cd-unit.lead-unit .num{ color:var(--accent); }

/* ---------- pulse divider — live ECG heartbeat ---------- */
.pulse{ width:100%; height:48px; display:block; color:var(--accent-safe); overflow:visible; }
.pulse path{ fill:none; stroke-linecap:round; stroke-linejoin:round; }
/* faint baseline trace */
.pulse-base{ stroke:currentColor; stroke-width:2; opacity:.28; }
.pulse.draw .pulse-base{ stroke-dasharray:var(--len); stroke-dashoffset:var(--len); }
.revealed .pulse.draw .pulse-base{ animation:draw 1.4s cubic-bezier(.4,0,.2,1) forwards; }
/* bright beam: a short lit segment that sweeps the whole trace, following the spikes */
.pulse-beam{ stroke:currentColor; stroke-width:3; opacity:0;
  stroke-dasharray:var(--seg) var(--len); stroke-dashoffset:var(--len);
  filter:drop-shadow(0 0 5px currentColor) drop-shadow(0 0 12px currentColor); }
.revealed .pulse-beam{ opacity:1; animation:beam 3.2s linear infinite; animation-delay:1.1s; }
/* glowing dot riding the leading edge */
.pulse-blip{ fill:#fff; opacity:0; filter:drop-shadow(0 0 4px currentColor) drop-shadow(0 0 10px currentColor); }
.revealed .pulse-blip{ opacity:1; animation:blip 3.2s ease-in-out infinite; animation-delay:1.1s; }
@keyframes draw{ to{ stroke-dashoffset:0; } }
@keyframes beam{ from{ stroke-dashoffset:var(--len); } to{ stroke-dashoffset:calc(var(--seg) * -1); } }
@keyframes blip{ 0%,100%{ r:3.5; } 8%,18%{ r:6.5; } }

/* ---------- territoire ---------- */
.terr-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:54px; align-items:center; }
.terr-photo{ position:relative; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--sh-md); aspect-ratio:16/12; }
.terr-photo img{ width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.3,1); }
.terr-photo:hover img{ transform:scale(1.04); }
.terr-photo .tag{ position:absolute; left:16px; bottom:16px; background:rgba(22,19,16,.78); color:var(--on-ink); padding:8px 15px; border-radius:999px; font-size:13px; font-weight:600; display:flex; gap:8px; align-items:center; backdrop-filter:blur(4px); }
.terr-photo .tag svg{ width:15px; height:15px; color:var(--gold); }
.commune-list{ display:flex; flex-direction:column; gap:0; margin-top:26px; border-top:1px solid var(--hair); }
.commune{ display:flex; align-items:center; gap:14px; padding:15px 4px; border-bottom:1px solid var(--hair); }
.commune .idx{ font-family:var(--display); font-size:22px; color:var(--accent-safe); min-width:34px; }
.commune .nm{ font-weight:600; font-size:17px; }
.commune .nm a{ color:inherit; text-decoration:none; transition:color .18s cubic-bezier(.2,.7,.3,1); }
.commune .nm a:hover{ color:var(--accent-safe); }
.commune .meta{ margin-left:auto; font-size:13px; color:var(--tx-3); }

/* ---------- œnotourisme ---------- */
.oeno-head{ max-width:720px; margin:0 0 46px; }
.oeno-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.oeno-card{ background:var(--cream); border:1px solid var(--hair); border-radius:var(--radius-lg); padding:34px 32px 38px; }
.oeno-ic{ width:52px; height:52px; border-radius:14px; background:var(--accent-soft); color:var(--accent-safe); display:flex; align-items:center; justify-content:center; margin-bottom:26px; }
.oeno-card h3{ font-size:28px; color:var(--ink); line-height:1.05; margin:0 0 16px; min-height:2.1em; }
.oeno-card p{ font-size:16px; line-height:1.6; margin:0; }

/* ---------- parcours comparator ---------- */
.par-tabs{ display:inline-flex; gap:6px; padding:6px; background:var(--cream-2); border-radius:999px; border:1px solid var(--hair); }
.par-tab{ font-family:var(--text); font-weight:700; text-transform:uppercase; letter-spacing:.04em; font-size:15px;
  padding:11px 24px; border-radius:999px; border:0; background:transparent; color:var(--tx-2); cursor:pointer; transition:.16s; }
.par-tab.on{ background:var(--accent); color:var(--accent-fg); box-shadow:var(--sh-sm); }
.par-card{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:0; overflow:hidden; }
.par-card > *{ min-width:0; }
.par-left{ padding:42px 44px; }
.par-km{ font-family:var(--display); font-size:clamp(86px,11vw,150px); line-height:.82; color:var(--ink); }
.par-km .u{ font-size:.34em; color:var(--accent-safe); margin-left:8px; letter-spacing:.04em; }
.par-role{ display:inline-flex; margin:0 0 8px; line-height:1.2; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.par-stats{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px 26px; margin:30px 0; }
.par-stat .k{ font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--tx-3); display:flex; gap:7px; align-items:center; }
.par-stat .k svg{ width:15px; height:15px; color:var(--accent-safe); }
.par-stat .v{ font-family:var(--display); font-size:34px; color:var(--ink); line-height:1; margin-top:6px; }
.par-stat .v small{ font-family:var(--text); font-size:14px; color:var(--tx-2); font-weight:600; letter-spacing:0; }
.par-meta{ display:flex; gap:10px; flex-wrap:wrap; }
.par-right{ position:relative; background:var(--ink); color:var(--on-ink); padding:34px 36px; display:flex; flex-direction:column; }
.par-right .elev-h{ font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--on-ink-2); display:flex; justify-content:space-between; }
.elev{ flex:1; min-height:200px; margin-top:14px; }
.elev svg{ width:100%; height:100%; overflow:visible; }
.elev .area{ opacity:.9; }
.elev .line{ fill:none; stroke:var(--gold); stroke-width:2.5; }
.elev .axis{ stroke:var(--hair-on-ink); stroke-width:1; }
/* metric Y-axis + grid */
.elev .elev-grid{ stroke:var(--hair-on-ink); stroke-width:1; stroke-dasharray:2 4; opacity:.55; }
.elev .elev-base{ stroke:var(--hair-on-ink); stroke-width:1.4; }
.elev .elev-ytick{ fill:var(--on-ink-2); font-size:11px; font-family:var(--text); }
.elev .elev-xtick{ fill:var(--on-ink-2); font-size:10.5px; font-family:var(--text); }
.elev .elev-unit{ fill:var(--on-ink-2); font-size:10px; font-family:var(--text); text-transform:uppercase; letter-spacing:.1em; }
.elev .elev-dplus{ fill:var(--gold); font-size:12px; font-weight:700; font-family:var(--text); }

/* ---------- route map (real GPS trace) ---------- */
.routemap{ flex:1; min-height:230px; display:flex; flex-direction:column; }
.routemap svg{ width:100%; flex:1; min-height:0; overflow:visible;
  background-image:radial-gradient(rgba(245,240,232,.10) 1px, transparent 1px); background-size:22px 22px; border-radius:10px; }
.rm-shadow{ fill:none; stroke:rgba(0,0,0,.45); stroke-width:9; stroke-linecap:round; stroke-linejoin:round; transform:translate(2px,3px); }
.rm-line{ fill:none; stroke-width:6; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 6px rgba(214,162,62,.35)); }
.rm-runner{ filter:drop-shadow(0 1px 3px rgba(0,0,0,.5)); }
.rm-legend{ display:flex; justify-content:space-between; align-items:center; margin-top:12px; font-size:12px; color:var(--on-ink-2); flex-wrap:wrap; gap:8px 16px; }
.rm-leg-grp{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.rm-leg-grp > span{ display:inline-flex; align-items:center; }
.rm-leg-rav{ gap:6px; }
.rm-leg-rav svg{ color:var(--gold); }
.rm-legend i{ display:inline-block; width:12px; height:12px; border-radius:50%; margin-right:7px; vertical-align:-1px; border:2px solid var(--ink); }
.rm-legend .rm-km{ font-family:var(--display); font-size:17px; color:var(--gold); letter-spacing:.04em; }
/* commune markers on the trace */
.rm-commune circle{ fill:var(--cream); stroke:var(--ink); stroke-width:3; }
.rm-commune text, .rm-pin text{ fill:var(--on-ink); font-family:var(--text); font-weight:700; font-size:36px; paint-order:stroke; stroke:var(--ink); stroke-width:7px; stroke-linejoin:round; }
.rm-pin text{ fill:var(--gold); }
/* commune partner slots */
/* commune partner slots — name always on ONE line, 4 slots equal width & height */
.commune-slot{ flex-direction:column; gap:9px; padding:16px 10px; height:auto; min-height:100px; justify-content:center; text-align:center;
  white-space:nowrap; font-size:13px; min-width:0; max-width:none; flex:1 1 0; }
.commune-slot .blason{ width:34px; height:34px; border-radius:8px; background:var(--accent-soft); display:flex; align-items:center; justify-content:center; color:var(--accent-safe); flex-shrink:0; }

/* ---------- programme (agenda) ---------- */
.agenda{ display:flex; flex-direction:column; gap:0; border-top:1px solid var(--hair); }
.agenda-row{ display:grid; grid-template-columns:160px 1fr auto; gap:24px; align-items:center; padding:22px 8px; border-bottom:1px solid var(--hair); transition:background .16s; position:relative; }
.agenda-row:hover{ background:var(--paper); }
.agenda-row.key{ }
.agenda-row .when .d{ font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--tx-3); }
.agenda-row .when .t{ font-family:var(--display); font-size:30px; line-height:1; color:var(--ink); }
.agenda-row.key .when .t{ color:var(--accent-safe); }
.agenda-row .what{ font-size:18px; font-weight:600; display:flex; align-items:center; gap:11px; }
.agenda-row .what .bolt{ color:var(--accent-safe); display:inline-flex; }
.agenda-row .what .bolt svg{ width:20px; height:20px; }
.agenda-row .tag-sm{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--tx-3); }
.agenda-row .tag-gps{ display:inline-flex; align-items:center; gap:9px; color:var(--accent-safe); transition:gap .15s, color .15s; }
.agenda-row .tag-gps:hover{ color:var(--gold-deep); }
.agenda-row .tag-gps:hover .gps-pin{ background:var(--accent-safe); color:var(--accent-fg); transform:scale(1.06); box-shadow:var(--sh-sm); }
.agenda-row .tag-gps .gps-pin{ display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; flex-shrink:0;
  border-radius:50%; background:var(--accent-soft); color:var(--accent-safe); border:1.5px solid var(--accent-safe);
  transition:background .15s, color .15s, transform .15s, box-shadow .15s; }
.agenda-row .tag-gps .gps-pin svg{ flex-shrink:0; }

/* ---------- inscriptions ---------- */
.alert{ display:flex; gap:16px; align-items:center; padding:20px 24px; border-radius:var(--radius);
  background:var(--accent-soft); border:1.5px solid var(--accent-safe); }
.alert svg{ width:24px; height:24px; color:var(--accent-safe); flex-shrink:0; }
.alert b{ font-weight:700; }
.tarif-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px; margin-top:30px; }
.tarif-grid > *{ min-width:0; }
.tarif{ padding:34px 32px; }
.tarif .top{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:8px; }
.tarif .top .km{ font-family:var(--display); font-size:54px; color:var(--ink); }
.tarif .top .km .u{ font-size:.42em; color:var(--accent-safe); }
.tarif-rows{ margin:18px 0; }
.tarif-row{ display:flex; justify-content:space-between; align-items:center; gap:12px; padding:12px 0; border-bottom:1px dashed var(--hair); }
.tarif-row:last-child{ border-bottom:0; }
.tarif-row .lab{ font-size:15px; color:var(--tx); flex:1; min-width:0; }
.tarif-row .lab small{ display:block; color:var(--tx-3); font-size:12px; }
.tarif-row .qte{ font-size:12.5px; color:var(--tx-2); white-space:nowrap; text-align:right; }
.tarif-row .qte b{ font-family:var(--display); font-size:18px; color:var(--ink); font-weight:400; }
.tarif-row .pr{ font-family:var(--display); font-size:30px; color:var(--ink); min-width:62px; text-align:right; }
.tarif-row .pr.acc{ color:var(--accent-safe); }
.req{ display:flex; gap:10px; align-items:flex-start; justify-content:center; margin-top:22px; font-size:13px; color:var(--tx-2); max-width:640px; margin-left:auto; margin-right:auto; }
.req svg{ width:16px; height:16px; color:var(--accent-safe); flex-shrink:0; margin-top:2px; }

/* ---------- B2C urgency: gauge + early-bird ---------- */
.gauge{ margin-top:24px; padding:22px 26px; background:var(--white); border:1px solid var(--hair); border-radius:var(--radius-lg); box-shadow:var(--sh-sm); }
.gauge-top{ display:flex; align-items:flex-end; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:12px; }
.gauge-head{ display:flex; align-items:baseline; gap:9px; }
.gauge-num{ font-family:var(--display); font-size:46px; line-height:.9; color:var(--accent-safe); }
.gauge-tot{ font-size:15px; font-weight:600; color:var(--tx-2); }
.gauge-left{ display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.06em;
  color:var(--accent-safe); background:var(--accent-soft); padding:7px 13px; border-radius:999px; }
.gauge-left svg{ flex-shrink:0; }
.gauge-left.hot{ color:var(--accent-fg); background:var(--accent); animation:gaugePulse 2s ease-in-out infinite; }
@keyframes gaugePulse{ 0%,100%{ box-shadow:0 0 0 0 var(--accent-soft); } 50%{ box-shadow:0 0 0 6px transparent; } }
.gauge-track{ height:14px; border-radius:999px; background:var(--cream-2); overflow:hidden; border:1px solid var(--hair); }
.gauge-fill{ height:100%; border-radius:999px; width:0;
  background:linear-gradient(90deg, var(--gold), var(--accent)); transition:width 1.3s cubic-bezier(.2,.7,.3,1); }
.gauge-foot{ margin-top:10px; font-size:13px; }
.gauge-quotas{ display:flex; flex-direction:column; gap:14px; margin-top:18px; }
.quota-row{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.quota-label{ font-size:13px; font-weight:700; color:var(--tx); text-transform:uppercase; letter-spacing:.06em; }
.quota-left{ font-size:13px; color:var(--tx-2); }
.quota-left b{ color:var(--ink); font-weight:700; }
.quota-left.full{ color:var(--accent-safe); font-weight:700; }
.quota-track{ height:8px; border-radius:99px; background:var(--cream-2); overflow:hidden; }
.quota-fill{ height:100%; border-radius:99px; transition:width 1.1s cubic-bezier(.22,.8,.3,1); }
.quota-fill.cat0{ background:var(--ink); }
.quota-fill.cat1{ background:var(--accent); }
.quota-fill.cat2{ background:var(--gold); }
.gauge-cta{ margin-top:16px; width:100%; justify-content:center; }
.earlybird{ margin-top:16px; padding:18px 24px; border-radius:var(--radius-lg); background:var(--ink); color:var(--on-ink);
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; box-shadow:var(--sh-md); }
.eb-left{ display:flex; align-items:center; gap:16px; }
.eb-badge{ display:inline-flex; align-items:center; gap:7px; flex-shrink:0; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.08em;
  color:var(--ink); background:var(--gold); padding:8px 13px; border-radius:999px; }
.eb-text{ display:flex; flex-direction:column; gap:2px; }
.eb-text b{ font-size:16px; }
.eb-text span{ font-size:13.5px; color:var(--on-ink-2); }
.eb-count{ display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.eb-days{ font-family:var(--display); font-size:42px; line-height:.9; color:var(--gold); }
.eb-unit{ font-size:11px; text-transform:uppercase; letter-spacing:.14em; color:var(--on-ink-2); }
@media (max-width:600px){
  .gauge-num{ font-size:38px; }
  .earlybird{ padding:16px 18px; }
  .eb-left{ gap:12px; }
  .eb-count{ flex-direction:row; align-items:baseline; gap:8px; }
}

/* ---------- B2B enterprise offer (3 tweakable presentations) ---------- */
.b2b{ margin-top:30px; }
.b2b h3{ font-family:var(--display); color:var(--ink); margin:8px 0 8px; text-transform:var(--disp-tr); letter-spacing:var(--disp-tk); line-height:1; }
.b2b-cta-row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
/* premium (2-col, dark left) */
.b2b-premium{ display:grid; grid-template-columns:1fr 1fr; gap:0; overflow:hidden; padding:0; }
.b2b-prem-left{ background:var(--ink); color:var(--on-ink); padding:38px 40px; display:flex; flex-direction:column; gap:14px; align-items:flex-start; }
.b2b-prem-left h3{ color:var(--on-ink); font-size:clamp(30px,4vw,44px); }
.b2b-prem-left p{ color:var(--on-ink-2); margin:0; }
.b2b-prem-right{ padding:38px 40px; display:flex; flex-direction:column; justify-content:center; }
.b2b-incl-title{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.16em; color:var(--tx-3); margin-bottom:16px; }
.b2b-incl{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:13px; }
.b2b-incl li{ display:flex; gap:11px; align-items:flex-start; font-size:15.5px; color:var(--tx); font-weight:500; }
.b2b-incl li svg{ color:var(--accent-safe); flex-shrink:0; margin-top:2px; }
/* B2B simulator */
.b2b-sim{ width:100%; background:rgba(245,240,232,.07); border:1px solid var(--hair-on-ink); border-radius:var(--radius); padding:18px 18px; margin:4px 0 4px; }
.b2b-sim-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.b2b-sim-lab{ font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--on-ink-2); }
.b2b-stepper{ display:flex; align-items:center; gap:12px; }
.b2b-stepper button{ width:34px; height:34px; border-radius:50%; border:1.5px solid var(--gold); background:transparent; color:var(--gold);
  font-size:20px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:.15s; }
.b2b-stepper button:hover{ background:var(--gold); color:var(--ink); }
.b2b-stepper-n{ font-family:var(--display); font-size:30px; color:var(--on-ink); display:flex; align-items:baseline; gap:5px; min-width:96px; justify-content:center; }
.b2b-stepper-n small{ font-family:var(--text); font-size:12px; font-weight:600; color:var(--on-ink-2); }
.b2b-range{ width:100%; accent-color:var(--gold); margin:2px 0 12px; cursor:pointer; }
.b2b-sim-total{ display:flex; align-items:baseline; gap:9px; padding-top:12px; border-top:1px solid var(--hair-on-ink); flex-wrap:wrap; }
.b2b-sim-total > span{ font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--on-ink-2); }
.b2b-sim-total b{ font-family:var(--display); font-size:34px; color:var(--gold); line-height:1; }
.b2b-sim-total small{ font-size:13px; color:var(--on-ink-2); }
.b2b-rse{ display:flex; gap:9px; align-items:flex-start; margin-top:16px; padding-top:16px; border-top:1px solid var(--hair); font-size:13.5px; color:var(--tx-2); }
.b2b-rse svg{ color:var(--accent-safe); flex-shrink:0; margin-top:1px; }
@media (max-width:720px){
  .b2b-cta-row .btn{ flex:1; justify-content:center; }
}
@media (max-width:720px){
  .b2b-premium{ grid-template-columns:1fr; }
  .b2b-prem-left, .b2b-prem-right{ padding:28px 24px; }
}

/* ---------- pre-inscription form (Brevo) ---------- */
.preinsc{ margin-top:30px; padding:38px 40px; }
.preinsc-head{ text-align:center; max-width:520px; margin:0 auto 26px; }
.preinsc-head .eyebrow{ justify-content:center; }
.preinsc-head h3{ font-family:var(--display); font-size:clamp(30px,4.5vw,44px); color:var(--ink); margin:10px 0 8px; text-transform:var(--disp-tr); letter-spacing:var(--disp-tk); }
.preinsc-form{ max-width:560px; margin:0 auto; display:flex; flex-direction:column; gap:16px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.field{ display:flex; flex-direction:column; gap:7px; }
.field > span{ font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--tx-2); }
.field input[type=text], .field input[type=email]{ font-family:var(--text); font-size:16px; color:var(--tx);
  padding:13px 15px; border:1.5px solid var(--hair-strong); border-radius:var(--radius-sm); background:var(--white); transition:border-color .15s, box-shadow .15s; }
.field input::placeholder{ color:var(--tx-3); }
.field input:focus{ outline:none; border-color:var(--accent-safe); box-shadow:0 0 0 3px var(--accent-soft); }
.seg{ display:flex; gap:8px; flex-wrap:wrap; }
.seg-opt{ position:relative; flex:1; min-width:140px; display:flex; align-items:center; justify-content:center; text-align:center; white-space:nowrap;
  font-size:14px; font-weight:600; padding:12px 12px; border:1.5px solid var(--hair-strong); border-radius:var(--radius-sm);
  background:var(--white); color:var(--tx-2); cursor:pointer; transition:.15s; }
.seg-opt input{ position:absolute; opacity:0; pointer-events:none; }
.seg-opt:hover{ border-color:var(--accent-safe); }
.seg-opt.on{ border-color:var(--accent-safe); color:var(--accent-safe); background:var(--accent-soft); font-weight:700; }
.consent{ display:flex; gap:11px; align-items:flex-start; font-size:13.5px; color:var(--tx-2); line-height:1.5; cursor:pointer; }
.consent input{ width:20px; height:20px; margin-top:1px; flex-shrink:0; accent-color:var(--accent-safe); cursor:pointer; }
.consent a{ color:var(--accent-safe); text-decoration:underline; text-underline-offset:2px; }
.preinsc-form .btn-primary{ margin-top:4px; }
.form-err{ color:var(--accent-safe); font-size:14px; font-weight:600; text-align:center; margin:0; }
.form-fine{ font-size:12.5px; color:var(--tx-3); text-align:center; margin:2px 0 0; }
/* success */
.preinsc-done{ text-align:center; padding:48px 40px; display:flex; flex-direction:column; align-items:center; gap:6px; }
.preinsc-check{ width:72px; height:72px; border-radius:50%; background:var(--accent-soft); color:var(--accent-safe); display:flex; align-items:center; justify-content:center; margin-bottom:8px; }
.preinsc-done h3{ font-family:var(--display); font-size:38px; color:var(--ink); margin:0; text-transform:var(--disp-tr); letter-spacing:var(--disp-tk); }
.preinsc-done p{ color:var(--tx-2); max-width:440px; margin:0 0 14px; }
.cal-block{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.cal-label{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.16em; color:var(--tx-3); }
.cal-row{ display:flex; gap:12px; flex-wrap:wrap; justify-content:center; }
.cal-google{ color:var(--ink); border-color:var(--hair-strong); }
.cal-google:hover{ border-color:var(--ink); }
@media (max-width:600px){
  .preinsc{ padding:30px 22px; }
  .field-row{ grid-template-columns:1fr; }
  .seg{ flex-direction:column; }
  .seg-opt{ min-width:0; width:100%; white-space:normal; }
  .preinsc-done{ padding:38px 22px; }
}

/* ---------- partenaires ---------- */
/* partner tiers (sponsor sales) */
.tier-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-bottom:30px; align-items:stretch; }
.tier-grid-2{ grid-template-columns:repeat(2,minmax(0,340px)); justify-content:center; }
.tier{ display:flex; flex-direction:column; background:var(--white); border:1px solid var(--hair); border-radius:var(--radius-lg); padding:26px 22px; box-shadow:var(--sh-sm); position:relative; }
.tier-feat{ border-color:var(--accent-safe); box-shadow:0 0 0 2px var(--accent-soft), var(--sh-md); }
.tier-ribbon{ position:absolute; top:-12px; left:50%; transform:translateX(-50%); white-space:nowrap;
  font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.1em; color:var(--accent-fg);
  background:var(--accent); padding:5px 14px; border-radius:999px; }
.tier-ribbon-sold{ background:var(--ink); color:var(--cream); }
.tier-name{ font-family:var(--display); font-size:26px; line-height:1; margin-bottom:4px; }
.tier-slots{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.1em; color:var(--tx-3); min-height:18px; }
.tier-left b{ color:var(--accent-safe); font-size:14px; }
.tier-soldtag{ color:var(--accent-safe); }
.tier-price{ font-family:var(--display); font-size:34px; color:var(--ink); margin:12px 0 16px; padding-bottom:16px; border-bottom:1px solid var(--hair); }
.tier-perks{ list-style:none; margin:0 0 20px; padding:0; display:flex; flex-direction:column; gap:11px; flex:1; }
.tier-perks li{ display:flex; gap:9px; font-size:14px; color:var(--tx-2); line-height:1.4; align-items:flex-start; }
.tier-check{ flex-shrink:0; margin-top:1px; }
/* sold/reserved title tier — value signalling + scarcity */
.tier-sold{ border-color:var(--ink); background:linear-gradient(180deg, var(--cream-2), var(--white)); }
.tier-sold .tier-price{ color:var(--gold-ink); }
.tier-soldmsg{ flex:1; display:flex; flex-direction:column; justify-content:center; gap:14px; margin-bottom:20px; }
.tier-partner{ display:flex; align-items:center; gap:14px; }
.tier-partner-logo{ width:64px; height:64px; flex-shrink:0; background:#fff; border:1px solid var(--hair); border-radius:14px; display:flex; align-items:center; justify-content:center; padding:6px; box-shadow:var(--sh-sm); }
.tier-partner-logo img{ max-width:100%; max-height:100%; object-fit:contain; }
.tier-partner-name{ font-size:15px; line-height:1.25; color:var(--tx-2); text-transform:uppercase; letter-spacing:.05em; }
.tier-partner-name strong{ display:block; font-family:var(--display); font-size:24px; font-weight:700; letter-spacing:.01em; color:var(--ink); text-transform:none; }
.tier-soldmsg p{ margin:0; font-size:15.5px; color:var(--tx); line-height:1.5; }
.tier-soldmsg strong{ color:var(--accent-safe); }
.tier-soldmsg-sub{ font-size:13.5px !important; color:var(--tx-2) !important; }
.btn-sold{ width:100%; justify-content:center; background:transparent; border:1.5px dashed var(--hair-strong); color:var(--tx-3); cursor:not-allowed; pointer-events:none; }
.part-wall{ border-top:1px solid var(--hair); padding-top:44px; }
@media (max-width:920px){ .tier-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .tier-grid, .tier-grid-2{ grid-template-columns:1fr; } .tier-grid-2{ max-width:360px; margin-left:auto; margin-right:auto; } }

.part-tier{ margin-top:36px; }.part-tier h4{ font-family:var(--text); font-weight:700; text-transform:uppercase; letter-spacing:.16em; font-size:12px; color:var(--tx-3); text-align:center; margin:0 0 16px; }
.logo-row{ display:flex; gap:18px; flex-wrap:wrap; justify-content:center; }
.logo-slot{ background:var(--white); border:1px solid var(--hair); border-radius:var(--radius); display:flex; align-items:center; justify-content:center;
  color:var(--tx-3); font-weight:600; font-size:14px; height:84px; min-width:160px; flex:1; max-width:230px; transition:.16s; }
.logo-slot.lg{ height:120px; max-width:320px; }
.logo-slot.sm{ height:64px; min-width:120px; max-width:170px; font-size:13px; }
.logo-slot:hover{ box-shadow:var(--sh-sm); transform:translateY(-2px); }
.logo-slot.logo-filled{ flex-direction:column; gap:8px; padding:14px; color:var(--ink); }
.logo-slot.logo-filled img{ height:62px; width:auto; object-fit:contain; }
.logo-slot.logo-filled span{ font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.logo-slot.commune-slot.logo-filled{ height:auto; gap:8px; padding:14px 10px; }
.logo-slot.commune-slot.logo-filled img{ height:46px; }
.logo-slot.commune-slot.logo-filled span{ font-size:12px; }

/* ---------- FAQ ---------- */
.faq-list{ display:flex; flex-direction:column; border-top:1px solid var(--hair); }
.faq-item{ border-bottom:1px solid var(--hair); }
.faq-q{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:18px;
  background:none; border:0; cursor:pointer; text-align:left; padding:22px 4px;
  font-family:var(--text); font-size:18px; font-weight:600; color:var(--ink); transition:color .15s; }
.faq-q:hover{ color:var(--accent-safe); }
.faq-icon{ flex-shrink:0; width:34px; height:34px; border-radius:50%; border:1.5px solid var(--hair-strong);
  display:flex; align-items:center; justify-content:center; color:var(--accent-safe); transition:transform .25s cubic-bezier(.2,.7,.3,1), background .15s, border-color .15s; }
.faq-item.open .faq-icon{ transform:rotate(180deg); background:var(--accent-soft); border-color:var(--accent-safe); }
.faq-a{ overflow:hidden; max-height:0; transition:max-height .3s cubic-bezier(.2,.7,.3,1); }
.faq-a p{ margin:0 0 22px; padding-right:52px; color:var(--tx-2); font-size:16px; line-height:1.62; }
.faq-foot{ text-align:center; margin-top:30px; color:var(--tx-2); }
.faq-foot a{ color:var(--accent-safe); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
@media (max-width:600px){
  .faq-q{ font-size:16px; padding:18px 2px; gap:12px; }
  .faq-a p{ padding-right:0; }
}

/* ---------- footer ---------- */
.footer{ background:var(--ink); color:var(--on-ink); padding:72px 0 120px; }
.footer-top{ display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap; align-items:flex-start; }
.footer-cols{ display:flex; gap:60px; flex-wrap:wrap; }
.footer-col h5{ font-family:var(--text); text-transform:uppercase; letter-spacing:.14em; font-size:12px; color:var(--gold); margin:0 0 14px; }
.footer-col a, .footer-col p{ color:var(--on-ink-2); font-size:15px; margin:0 0 9px; display:block; transition:color .15s; }
.footer-col a:hover{ color:var(--on-ink); }
.footer-bottom{ margin-top:54px; padding-top:24px; border-top:1px solid var(--hair-on-ink); display:flex; justify-content:space-between; gap:18px; flex-wrap:wrap; font-size:13px; color:var(--on-ink-2); }

/* share row */
.share-row{ margin-top:44px; padding-top:26px; border-top:1px solid var(--hair-on-ink); display:flex; align-items:center; gap:18px 22px; flex-wrap:wrap; }
.share-label{ display:inline-flex; align-items:center; gap:10px; background:none; border:0; padding:0; cursor:pointer;
  font-family:var(--text); font-weight:700; text-transform:uppercase; letter-spacing:.2em; font-size:13px; color:var(--gold); }
.share-label svg{ flex-shrink:0; }
.share-btns{ display:flex; gap:12px; flex-wrap:wrap; }
.share-btn{ display:inline-flex; align-items:center; gap:9px; cursor:pointer;
  font-family:var(--text); font-weight:700; font-size:15px; color:var(--on-ink);
  background:rgba(245,240,232,.06); border:1px solid var(--hair-on-ink); border-radius:999px; padding:11px 20px;
  transition:background .15s, border-color .15s, transform .15s; }
.share-btn svg{ flex-shrink:0; color:var(--on-ink-2); transition:color .15s; }
.share-btn:hover{ background:rgba(245,240,232,.11); border-color:var(--on-ink); transform:translateY(-2px); }
.share-btn:hover svg{ color:var(--gold); }
.share-btn:active{ transform:translateY(0) scale(.98); }
.share-btn.is-copied{ border-color:var(--gold); color:var(--gold); }
.share-btn.is-copied svg{ color:var(--gold); }

/* ---------- sticky CTA bar ---------- */
.sticky-cta{ position:fixed; left:0; right:0; bottom:0; z-index:45; transform:translateY(120%); transition:transform .35s cubic-bezier(.2,.7,.3,1);
  background:rgba(22,19,16,.92); backdrop-filter:blur(12px); border-top:1px solid var(--hair-on-ink); color:var(--on-ink); }
.sticky-cta.show{ transform:translateY(0); }
.sticky-cta .inner{ max-width:var(--maxw); margin:0 auto; padding:14px 28px; display:flex; align-items:center; gap:18px; }
.sticky-cta .txt{ display:flex; flex-direction:column; }
.sticky-cta .txt b{ font-family:var(--display); font-size:24px; letter-spacing:.02em; }
.sticky-cta .txt span{ font-size:12px; color:var(--on-ink-2); letter-spacing:.04em; }
.sticky-cta .sp{ margin-left:auto; }

/* ---------- scroll reveal ---------- */
/* ---------- scroll reveal (state-driven so it survives React re-renders) ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s cubic-bezier(.2,.7,.3,1), transform .7s cubic-bezier(.2,.7,.3,1); }
.reveal.revealed{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.08s } .reveal.d2{ transition-delay:.16s } .reveal.d3{ transition-delay:.24s } .reveal.d4{ transition-delay:.32s }
/* HERO is above the fold: never hide it behind a load-time transition (some engines
   freeze transitions/animations triggered at mount). Show it instantly = better LCP too. */
.hero-inner .reveal{ opacity:1 !important; transform:none !important; transition:none; animation:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; }
  .pulse.draw .pulse-base{ stroke-dashoffset:0 !important; animation:none !important; opacity:.5; }
  .pulse-beam, .pulse-blip{ animation:none !important; }
  .pulse-beam{ opacity:0 !important; }
  .hero-scroll svg, .gauge-left.hot{ animation:none !important; }
  *, *::before, *::after{ transition-duration:.01ms !important; scroll-behavior:auto !important; }
}

/* ---------- responsive ---------- */
@media (max-width:920px){
  .terr-grid{ grid-template-columns:1fr; gap:32px; }
  .par-card{ grid-template-columns:minmax(0,1fr); }
  .par-right{ order:-1; }
  .elev{ min-height:150px; }
  .nav-links{ display:none; }
  .nav-partner{ display:none; }
  .nav-burger{ display:block; }
  .section{ padding:72px 0; }
}
@media (max-width:600px){
  body{ font-size:16px; }
  .wrap{ padding:0 20px; }
  /* hero: keep the countdown on one tidy row, title from overflowing */
  .hero{ padding:112px 20px 92px; min-height:100svh; }
  .hero-scroll{ display:flex; }
  .hero-logo{ height:62px; }
  .hero-title{ font-size:clamp(60px,19vw,96px); }
  .hero-sub{ font-size:17px; }
  .countdown{ gap:7px; }
  .cd-ring{ width:64px; height:64px; }
  .cd-ring .num{ font-size:27px; }
  .cd-unit .lbl{ font-size:10px; letter-spacing:.12em; }
  .hero-cta{ width:100%; flex-direction:column; align-items:stretch; }
  .hero-cta .btn{ width:100%; justify-content:center; min-width:0; }
  /* stat strip → 2×2 grid with clean dividers */
  .stat-strip{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); width:100%; }
  .stat-strip .st{ padding:16px 10px; border-right:1px solid var(--hair-on-ink); border-bottom:1px solid var(--hair-on-ink); }
  .stat-strip .st:nth-child(2n){ border-right:0; }
  .stat-strip .st:nth-last-child(-n+2){ border-bottom:0; }
  .stat-strip .st b{ font-size:34px; }
  .stat-strip .st span{ font-size:12px; letter-spacing:.06em; line-height:1.2; }
  /* tariffs + stats stack */
  .tarif-grid{ grid-template-columns:minmax(0,1fr); }
  .par-stats{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px 18px; }
  .par-left{ padding:30px 24px; text-align:center; }
  .par-role{ align-self:center; }
  .par-stat .k{ justify-content:center; }
  .par-meta{ justify-content:center; }
  .b2b-prem-left{ align-items:center; text-align:center; }
  .b2b-rse{ text-align:left; }
  .req{ text-align:left; }
  .par-right{ padding:26px 22px; }
  /* agenda: single-column stack so the GPS address stays visible & tappable */
  .agenda-row{ grid-template-columns:1fr; gap:5px; padding:18px 6px; align-items:flex-start; }
  .agenda-row .when{ display:flex; align-items:baseline; gap:10px; }
  .agenda-row .when .t{ font-size:26px; }
  .agenda-row .tag-sm{ display:block; }
  .agenda-row .tag-gps{ font-size:13px; }
  /* nav: logo + CTA compact permanent + burger */
  .nav{ padding:12px 16px; gap:10px; }
  .nav .nav-cta{ gap:8px; }
  .nav .nav-cta .btn-primary{ display:inline-flex; padding:9px 14px; font-size:13px; white-space:nowrap; }
  .nav-burger{ padding:6px; }
  /* sticky CTA: une seule action pleine largeur, date en micro-ligne au-dessus */
  .sticky-cta .inner{ flex-direction:column; align-items:stretch; padding:10px 16px calc(10px + env(safe-area-inset-bottom)); gap:8px; }
  .sticky-cta .inner > img{ display:none; }
  .sticky-cta .txt{ text-align:center; }
  .sticky-cta .txt b{ display:none; }
  .sticky-cta .txt span{ font-size:12px; line-height:1.35; }
  .sticky-cta .sp{ display:none; }
  .sticky-cta .btn-primary{ width:100%; justify-content:center; padding:14px 18px; font-size:15px; white-space:nowrap; }
  /* footer breathes */
  .footer{ padding:56px 0 96px; }
  .footer-cols{ gap:32px; }
  /* barre partager centrée sur mobile */
  .share-row{ flex-direction:column; align-items:center; text-align:center; gap:16px; }
  .share-btns{ justify-content:center; width:100%; }
  .share-btn{ flex:1 1 auto; justify-content:center; }
  .section-head{ margin-bottom:38px; }
  /* centrage global du contenu sur tout mobile, quelle que soit la largeur */
  .section-head{ margin-left:auto; margin-right:auto; text-align:center; }
  .section-head .eyebrow, .eyebrow{ justify-content:center; }
  .section-head .lead, .lead{ margin-left:auto; margin-right:auto; }
  .terr-text .lead{ text-align:center; }
  /* territoire: center the intro block + commune list for a balanced stack */
  .terr-text{ text-align:center; }
  .terr-text .eyebrow{ justify-content:center; }
  .commune-list{ margin-top:22px; }
  .commune{ justify-content:center; gap:12px; }
  .commune .idx{ min-width:0; }
  .commune .meta{ margin-left:8px; }
  .par-tabs{ width:100%; }
  .par-tab{ flex:1; padding:11px 10px; font-size:13px; }
}
@media (max-width:380px){
  .cd-ring{ width:58px; height:58px; }
  .cd-ring .num{ font-size:24px; }
  .hero-cta{ flex-direction:column; }
  .hero-cta .btn{ width:100%; }
}
/* generous tap targets on touch devices (WCAG 2.5.8 / Lighthouse >=44px) */
@media (hover:none){
  .btn{ min-height:46px; }
  .nav-links a, .footer-col a, .toc a, .faq-foot a, .legal-nav a{ display:inline-flex; align-items:center; min-height:44px; }
  .commune .nm a{ display:inline-flex; align-items:center; min-height:44px; }
  .prog-item .prog-gps, .prog-gps{ min-height:44px; display:inline-flex; align-items:center; }
  .seg-opt{ min-height:48px; }
  .consent input[type=checkbox], .seg-opt input[type=radio]{ width:22px; height:22px; }
  .consent{ align-items:center; }
  .share-btn{ min-height:44px; min-width:44px; }
}
