/* ============================================================
   OENO DIGITAL — landing page
   Tokens pilotés par le panneau Tweaks (data-palette sur <html>)
   ============================================================ */

:root {
  /* Palette « Cave & or » (défaut) */
  --bg: #faf6f0;
  --bg-soft: #f3ecdf;
  --surface: #fffdf9;
  --ink: #2d2a26;
  --ink-soft: #6b6258;
  --accent: #5e1a2e;
  --accent-hover: #4a1424;
  --on-accent: #fdf9f3;
  --accent-2: #b08d57;
  --line: rgba(45, 42, 38, 0.13);
  --shadow: 0 18px 50px -22px rgba(45, 30, 20, 0.35);

  --font-display: 'Cormorant Garamond', Georgia, serif;
  --font-body: 'Outfit', 'Helvetica Neue', sans-serif;

  --radius: 14px;
  --container: 1180px;
}

html[data-palette="nuit"] {
  --bg: #0e1218;
  --bg-soft: #141a23;
  --surface: #171e28;
  --ink: #edf0e4;
  --ink-soft: #99a0a8;
  --accent: #c8e457;
  --accent-hover: #d8f06e;
  --on-accent: #10141b;
  --accent-2: #8fa3b8;
  --line: rgba(237, 240, 228, 0.14);
  --shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.7);
}

html[data-palette="vigne"] {
  --bg: #f6f4ec;
  --bg-soft: #ecf0e2;
  --surface: #fdfcf7;
  --ink: #1f241c;
  --ink-soft: #5f6657;
  --accent: #2e4630;
  --accent-hover: #243a26;
  --on-accent: #f4f6ec;
  --accent-2: #c4a35a;
  --line: rgba(31, 36, 28, 0.13);
  --shadow: 0 18px 50px -22px rgba(20, 30, 18, 0.35);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--ink);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  transition: background 0.35s ease, color 0.35s ease;
}

img { max-width: 100%; display: block; }

.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 32px;
}

/* ---------- Typo ---------- */
h1, h2, h3, .display {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.01em;
  text-wrap: balance;
}

h1 { font-size: clamp(44px, 5.4vw, 72px); }
h2 { font-size: clamp(32px, 3.6vw, 48px); }
h3 { font-size: 24px; }

p { text-wrap: pretty; }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-2);
}
.eyebrow::before {
  content: "";
  width: 26px;
  height: 1px;
  background: var(--accent-2);
}

.lead { font-size: 19px; color: var(--ink-soft); max-width: 60ch; }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  white-space: nowrap;
  padding: 15px 28px;
  border-radius: 999px;
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.btn:active { transform: scale(0.97); }

.btn-primary {
  background: var(--accent);
  color: var(--on-accent);
  box-shadow: var(--shadow);
}
.btn-primary:hover { background: var(--accent-hover); transform: translateY(-2px); }

.btn-ghost {
  background: transparent;
  color: var(--ink);
  border-color: var(--line);
}
.btn-ghost:hover { border-color: var(--ink-soft); transform: translateY(-2px); }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line);
}
.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 72px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  color: var(--ink);
}
.brand img { width: 38px; height: 38px; border-radius: 10px; }
.brand span {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 600;
  white-space: nowrap;
}
.nav-links { display: flex; align-items: center; gap: 30px; }
.nav-links a:not(.btn) {
  text-decoration: none;
  color: var(--ink-soft);
  font-size: 15px;
  font-weight: 500;
  transition: color 0.15s ease;
}
.nav-links a:not(.btn):hover { color: var(--ink); }
.site-header .btn { padding: 11px 22px; font-size: 15px; }

/* ---------- Hero ---------- */
.hero { position: relative; padding: 90px 0 100px; overflow: hidden; }
.hero .container {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 64px;
  align-items: center;
}
.hero-copy { display: flex; flex-direction: column; gap: 26px; align-items: flex-start; }
#hero-title, #plateforme-title,#performance-title, #accompagnement-title, #demo-title, #team-title {
  max-width: 820px;
  font-size: clamp(58px, 6.4vw, 96px);
  line-height: 0.98;
  letter-spacing: -0.035em;
}
#hero-title span,
#hero-title em {
  display: block;
}
.hero h1 em {
  font-style: italic;
  color: var(--accent);
}
html[data-palette="nuit"] .hero h1 em { color: var(--accent); }
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; }
.hero-note {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--ink-soft);
}
.hero-note .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent-2);
}

/* Visuel hero : photo placeholder + notifications animées */
.hero-visual { position: relative; min-height: 520px; }
.hero-photo {
  position: absolute;
  inset: 0 0 0 8%;
  border-radius: 210px 210px 24px 24px;
  overflow: hidden;
  box-shadow: var(--shadow);
}
.placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: repeating-linear-gradient(
    -45deg,
    var(--bg-soft),
    var(--bg-soft) 14px,
    color-mix(in srgb, var(--bg-soft) 80%, var(--ink) 6%) 14px,
    color-mix(in srgb, var(--bg-soft) 80%, var(--ink) 6%) 28px
  );
  border: 1px dashed var(--line);
}
.placeholder code {
  font-family: 'SFMono-Regular', Menlo, monospace;
  font-size: 12.5px;
  color: var(--ink-soft);
  background: var(--surface);
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
}

.notif-stack {
  position: absolute;
  left: 0;
  bottom: 36px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: min(330px, 88%);
}
.notif {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 16px;
  box-shadow: var(--shadow);
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.notif.show { opacity: 1; transform: translateY(0); }
.notif-icon {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--accent) 12%, var(--surface));
  color: var(--accent);
  font-size: 17px;
  flex-shrink: 0;
  font-family: var(--font-display);
  font-weight: 700;
}
.notif b { display: block; font-size: 14.5px; font-weight: 600; }
.notif small { font-size: 13px; color: var(--ink-soft); }

/* ---------- Variantes du hero (Tweaks) ---------- */
/* Variante « Immersif » : photo plein écran derrière le texte */
html[data-hero="plein"] .hero { position: relative; padding: 150px 0 130px; }
html[data-hero="plein"] .hero .container { display: block; }
html[data-hero="plein"] .hero-visual { position: static; min-height: 0; }
html[data-hero="plein"] .hero-photo {
  position: absolute;
  inset: 0;
  border-radius: 0;
  box-shadow: none;
  z-index: 0;
}
html[data-hero="plein"] .hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, rgba(18, 12, 9, 0.8) 0%, rgba(18, 12, 9, 0.5) 52%, rgba(18, 12, 9, 0.12) 100%);
}
html[data-hero="plein"] .hero-copy {
  position: relative;
  z-index: 1;
  max-width: 680px;
}
html[data-hero="plein"] .hero h1 { color: #fdfaf4; }
html[data-hero="plein"] .hero h1 em { color: var(--accent-2); }
html[data-hero="plein"] .hero .lead { color: rgba(246, 242, 234, 0.85); }
html[data-hero="plein"] .hero-note { color: rgba(246, 242, 234, 0.75); }
html[data-hero="plein"] .hero .btn-ghost { color: #fdfaf4; border-color: rgba(253, 250, 244, 0.45); }
html[data-hero="plein"] .hero .btn-ghost:hover { border-color: #fdfaf4; }
html[data-hero="plein"] .notif-stack {
  position: absolute;
  right: 44px;
  bottom: 44px;
  left: auto;
  z-index: 1;
}

/* Variante « Éditorial » : titre centré, photo en bannière dessous */
html[data-hero="editorial"] .hero { padding: 72px 0 90px; }
html[data-hero="editorial"] .hero .container { grid-template-columns: 1fr; gap: 52px; }
html[data-hero="editorial"] .hero-copy {
  align-items: center;
  text-align: center;
  max-width: 860px;
  margin: 0 auto;
}
html[data-hero="editorial"] .hero h1 { font-size: clamp(48px, 5.8vw, 80px); }
html[data-hero="editorial"] .hero-ctas { justify-content: center; }
html[data-hero="editorial"] .hero-visual { min-height: 460px; }
html[data-hero="editorial"] .hero-photo { inset: 0; }
html[data-hero="editorial"] .notif-stack { left: 32px; bottom: 32px; }

/* ====== Variante « Magazine » : texte aligné à droite, photo à gauche ====== */
html[data-hero="mag"] .hero .container {
  grid-template-columns: 0.95fr 1.05fr;
}
html[data-hero="mag"] .hero-visual { order: -1; }
html[data-hero="mag"] .hero-photo { inset: 0 8% 0 0; border-radius: 24px 24px 210px 210px; }
html[data-hero="mag"] .hero-copy { align-items: flex-end; text-align: right; }
html[data-hero="mag"] .hero-ctas { justify-content: flex-end; }
html[data-hero="mag"] .hero-note { flex-direction: row-reverse; }
html[data-hero="mag"] .notif-stack { left: auto; right: 0; }

/* ====== Variante « Affiche » : photo plein-bleed, contenu ancré en bas ====== */
html[data-hero="bottom"] .hero { position: relative; padding: 0; min-height: 88vh; display: flex; }
html[data-hero="bottom"] .hero .container {
  display: flex;
  align-items: flex-end;
  padding-top: 120px;
  padding-bottom: 64px;
}
html[data-hero="bottom"] .hero-visual { position: static; min-height: 0; }
html[data-hero="bottom"] .hero-photo {
  position: absolute;
  inset: 0;
  border-radius: 0;
  box-shadow: none;
  z-index: 0;
}
html[data-hero="bottom"] .hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(18, 12, 9, 0.86) 0%, rgba(18, 12, 9, 0.5) 38%, rgba(18, 12, 9, 0.1) 70%);
}
html[data-hero="bottom"] .hero-copy { position: relative; z-index: 1; max-width: 760px; }
html[data-hero="bottom"] .hero h1 { color: #fdfaf4; font-size: clamp(44px, 6vw, 78px); }
html[data-hero="bottom"] .hero h1 em { color: var(--accent-2); }
html[data-hero="bottom"] .hero .lead { color: rgba(246, 242, 234, 0.85); }
html[data-hero="bottom"] .hero-note { color: rgba(246, 242, 234, 0.75); }
html[data-hero="bottom"] .hero .btn-ghost { color: #fdfaf4; border-color: rgba(253, 250, 244, 0.45); }
html[data-hero="bottom"] .hero .btn-ghost:hover { border-color: #fdfaf4; }
html[data-hero="bottom"] .notif-stack { display: none; }

/* ====== Variante « Carte » : photo plein-bleed, contenu dans une carte verre ====== */
html[data-hero="card"] .hero { position: relative; padding: 96px 0; }
html[data-hero="card"] .hero .container { display: flex; justify-content: flex-start; }
html[data-hero="card"] .hero-visual {
  position: absolute;
  inset: 0;
  min-height: 0;
  z-index: 0;
}
html[data-hero="card"] .hero-photo {
  position: absolute;
  inset: 0;
  border-radius: 0;
  box-shadow: none;
}
html[data-hero="card"] .hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(18, 12, 9, 0.28);
}
html[data-hero="card"] .hero-copy {
  position: relative;
  z-index: 1;
  max-width: 560px;
  padding: 44px 46px;
  background: color-mix(in srgb, var(--surface) 80%, transparent);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid color-mix(in srgb, var(--ink) 10%, transparent);
  border-radius: 26px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) inset, 0 30px 70px -30px rgba(20, 12, 8, 0.6);
}
html[data-hero="card"] .notif-stack { display: none; }

@media (max-width: 1150px) {
  /* Sous ~1150px, les notifs chevauchent le texte en mode immersif : on les masque */
  html[data-hero="plein"] .notif-stack { display: none; }
}

/* ---------- Mobile-first : toutes les variantes s'empilent proprement ---------- */
@media (max-width: 860px) {
  /* Hero : une seule colonne, texte d'abord, photo arche en dessous */
  html[data-hero] .hero .container {
    grid-template-columns: 1fr !important;
    display: grid !important;
    gap: 36px;
    text-align: left;
    align-items: stretch;
  }
  html[data-hero] .hero-copy {
    align-items: flex-start !important;
    text-align: left !important;
    max-width: 100% !important;
    order: 0 !important;
    margin: 0 !important;
  }
  html[data-hero] .hero-ctas { justify-content: flex-start !important; }
  html[data-hero] .hero-note { flex-direction: row !important; }
  html[data-hero] .hero-visual {
    position: relative !important;
    order: 1 !important;
    min-height: 320px !important;
    inset: auto !important;
  }
  /* Sur mobile : variantes plein-bleed (immersif/affiche/carte) gardent la photo en fond + voile */
  html[data-hero="plein"] .hero,
  html[data-hero="bottom"] .hero,
  html[data-hero="card"] .hero {
    padding: 120px 0 56px !important;
    min-height: 0 !important;
  }
  html[data-hero="plein"] .hero-visual,
  html[data-hero="bottom"] .hero-visual,
  html[data-hero="card"] .hero-visual {
    position: absolute !important;
    inset: 0 !important;
    order: -1 !important;
  }
  html[data-hero="card"] .hero-copy { padding: 32px 28px; }
  /* Toutes les photos arche reprennent une forme douce sur mobile */
  html[data-hero="split"] .hero-photo,
  html[data-hero="mag"] .hero-photo,
  html[data-hero="editorial"] .hero-photo {
    position: relative !important;
    inset: auto !important;
    height: 320px;
    border-radius: 150px 150px 24px 24px !important;
  }
  .hero h1 { font-size: clamp(36px, 9vw, 52px) !important; }
  #hero-title { font-size: clamp(42px, 12vw, 60px) !important; line-height: 1.02; }
}
@media (max-width: 860px) {
  /* Pas de hover sur tactile : on révèle les descriptions des cartes premium */
  .feature .feature-body p { max-height: 160px; opacity: 1; transform: none; }
  .feature { height: 340px; }
}
@media (max-width: 960px) {
  html[data-hero="editorial"] .hero-visual { min-height: 360px; }
}

/* ---------- Bandeau expérience ---------- */
.experience-band {
  position: relative;
  background:
    linear-gradient(135deg,
      oklch(0.26 0.09 25) 0%,
      oklch(0.18 0.06 330) 28%,
      oklch(0.14 0.04 270) 54%,
      oklch(0.22 0.08 30) 78%,
      oklch(0.30 0.10 55) 100%
    );
  background-size: 400% 400%;
  color: var(--on-accent);
  padding: clamp(110px, 16vh, 200px) 0 0;
  overflow: hidden;
}
.experience-band::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 70% 60% at 80% 50%, oklch(0.38 0.11 55 / 0.35) 0%, transparent 70%),
    radial-gradient(ellipse 55% 80% at 10% 80%, oklch(0.22 0.08 340 / 0.4) 0%, transparent 65%);
  pointer-events: none;
  z-index: 0;
}
.experience-band .container {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 26px;
  max-width: 1080px;
}
.experience-band .eb-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent-2);
}
.experience-band .eb-eyebrow::before {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--accent-2);
}
.experience-band .big-o {
  position: absolute;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(420px, 58vw, 820px);
  line-height: 0.74;
  top: 50%;
  right: -6%;
  transform: translateY(-50%);
  color: var(--on-accent);
  opacity: 0.05;
  pointer-events: none;
  z-index: 1;
}
.word-marquee { position: relative; z-index: 1; }
.experience-band h2 {
  font-size: clamp(40px, 6vw, 88px);
  line-height: 1.04;
  font-weight: 600;
  max-width: 18ch;
}
.experience-band h2 em {
  font-style: italic;
  color: var(--accent-2);
}
.experience-band p {
  font-size: clamp(17px, 1.5vw, 21px);
  opacity: 0.86;
  max-width: 60ch;
  line-height: 1.55;
}
.eb-points {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-top: 4px;
}
.eb-points li {
  display: flex;
  align-items: baseline;
  gap: 14px;
  font-size: clamp(18px, 1.7vw, 23px);
  font-weight: 300;
  letter-spacing: 0.005em;
}
.eb-points .eb-lead {
  font-family: var(--font-display);
  font-size: clamp(26px, 3vw, 42px);
  font-weight: 600;
  margin-bottom: 8px;
  line-height: 1.15;
}
.eb-points .eb-lead em { font-style: italic; color: var(--accent-2); }
.eb-points .eb-mark {
  color: var(--accent-2);
  font-size: 13px;
  transform: translateY(-2px);
  flex-shrink: 0;
}

/* ---------- Sections génériques ---------- */
.section { padding: 100px 0; }
.section-alt { background: var(--bg-soft); }
.section-head {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 720px;
  margin-bottom: 56px;
}

/* ---------- Modules (accordéon) ---------- */
.modules-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  align-items: start;
  width: 100%;
}
.accordion {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--line);
  width: 100%;
  max-width: none;
}
.acc-item { border-bottom: 1px solid var(--line); }
.acc-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 20px 4px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  color: var(--ink);
  font-family: var(--font-body);
  transition: padding 0.2s ease;
}
.acc-btn:hover { padding-left: 10px; }
.acc-ico {
  width: 44px; height: 44px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: var(--ink-soft);
  background: color-mix(in srgb, var(--ink) 5%, var(--surface));
  border: 1px solid var(--line);
  transition: color 0.25s ease, background 0.25s ease, border-color 0.25s ease;
}
.acc-item.open .acc-ico {
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 9%, var(--surface));
  border-color: color-mix(in srgb, var(--accent) 28%, transparent);
}
.acc-ico svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.acc-num {
  font-family: var(--font-display);
  font-size: 18px;
  font-style: italic;
  color: var(--accent-2);
  flex-shrink: 0;
}
.acc-title { font-size: 18px; font-weight: 600; flex: 1; line-height: 1.25; }
.acc-price {
  font-size: 16px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
  text-align: right;
  min-width: 86px;
}
.acc-price small { display: block; font-size: 11px; font-weight: 500; letter-spacing: 0.04em; color: var(--ink-soft); }
.acc-price.is-included { color: var(--accent-2); }
.acc-chevron {
  width: 30px; height: 30px;
  border-radius: 50%;
  border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px;
  color: var(--ink-soft);
  transition: transform 0.3s ease, background 0.3s ease, color 0.3s ease;
  flex-shrink: 0;
}
.acc-item.open .acc-chevron {
  transform: rotate(45deg);
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}
.acc-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}
.acc-body p {
  padding: 0 4px 24px 62px;
  color: var(--ink-soft);
  max-width: 92ch;
}

.modules-visual { position: sticky; top: 110px; }
.module-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 150px 150px 20px 20px;
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.mc-photo { height: 235px; overflow: hidden; }
.mc-photo img { width: 100%; height: 100%; object-fit: cover; }
.module-card .mc-body {
  padding: 24px 32px 30px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.module-card .mc-num {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 42px;
  line-height: 1;
  color: color-mix(in srgb, var(--accent) 30%, transparent);
}
.module-card .mc-title { font-family: var(--font-display); font-size: 26px; font-weight: 600; }
.module-card .mc-desc { color: var(--ink-soft); }
.module-card .mc-tag {
  align-self: flex-start;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
  padding: 6px 14px;
  border-radius: 999px;
}

/* ---------- Logos compatibles ---------- */
.logos-strip { padding: 56px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.logos-strip p {
  text-align: center;
  font-size: 13.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 28px;
  font-weight: 600;
}
.logos-marquee {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent);
}
.logos-track { display: flex; width: max-content; }
.logos-set { display: flex; align-items: center; gap: 18px; padding-right: 18px; }
.logo-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 132px;
  height: 52px;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 10px 24px;
  background: var(--surface);
  transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
.logo-chip:hover {
  border-color: var(--accent-2);
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(44, 38, 32, 0.08);
}
.logo-chip-image img {
  display: block;
  width: auto;
  max-width: 92px;
  max-height: 24px;
  object-fit: contain;
}
@media (max-width: 640px) {
  .logo-chip { min-width: 112px; height: 48px; padding: 9px 20px; }
  .logo-chip-image img { max-width: 78px; max-height: 22px; }
}

/* ---------- Performance (features) ---------- */
.badge-callout {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: var(--surface);
  border: 1px solid var(--accent-2);
  border-radius: 999px;
  padding: 12px 24px;
  font-size: 15px;
  font-weight: 500;
}
.badge-callout .medal {
  font-family: var(--font-display);
  color: var(--accent-2);
  font-size: 20px;
  font-weight: 700;
}
.features-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  margin-top: 48px;
}
.feature {
  position: relative;
  min-height: 250px;
  border-radius: 24px;
  overflow: hidden;
  isolation: isolate;
  display: flex;
  align-items: stretch;
  background:
    radial-gradient(circle at 82% 18%, color-mix(in srgb, var(--accent-2) 16%, transparent), transparent 38%),
    linear-gradient(135deg, var(--surface) 0%, color-mix(in srgb, var(--bg-soft) 82%, white 18%) 100%);
  border: 1px solid color-mix(in srgb, var(--line) 88%, var(--accent-2) 12%);
  box-shadow: 0 18px 44px -32px rgba(30, 18, 10, 0.45);
  transition: transform 0.28s cubic-bezier(0.22, 0.7, 0.25, 1), box-shadow 0.28s ease, border-color 0.28s ease;
}
.feature:hover {
  transform: translateY(-5px);
  border-color: color-mix(in srgb, var(--accent-2) 42%, var(--line) 58%);
  box-shadow: 0 26px 58px -34px rgba(30, 18, 10, 0.52);
}
.feature::after {
  content: "";
  position: absolute;
  right: -58px;
  bottom: -58px;
  width: 150px;
  height: 150px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--accent-2) 24%, transparent);
  opacity: 0.65;
  pointer-events: none;
}
.feature::before {
  content: "";
  position: absolute;
  left: 28px;
  top: 28px;
  width: 44px;
  height: 44px;
  border-radius: 16px;
  background: color-mix(in srgb, var(--accent-2) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent-2) 26%, var(--line) 74%);
  pointer-events: none;
}
.feature-media { display: none; }
.feature-body {
  position: relative;
  z-index: 2;
  padding: 92px 30px 30px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  color: var(--ink);
  width: 100%;
}
.f-icon {
  position: absolute;
  left: 38px;
  top: 38px;
  width: 24px;
  height: 24px;
  color: var(--accent-2);
  overflow: visible;
  flex-shrink: 0;
}
.f-icon path, .f-icon circle, .f-icon rect {
  stroke: currentColor;
  stroke-width: 1.8;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.feature h3 {
  font-size: clamp(22px, 2vw, 30px);
  color: var(--ink);
  line-height: 1.06;
  max-width: 12ch;
}
.feature-body p {
  font-size: 15px;
  line-height: 1.55;
  color: var(--ink-soft);
  max-width: 42ch;
  max-height: none;
  opacity: 1;
  transform: none;
  overflow: visible;
}

/* ---------- Étapes ---------- */
.steps-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
  counter-reset: step;
}
.step {
  position: relative;
  padding-top: 26px;
  border-top: 2px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.step::before {
  content: "";
  position: absolute;
  top: -2px; left: 0;
  width: 46px; height: 2px;
  background: var(--accent);
}
.step-num {
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent-2);
}
.step h3 { font-size: 21px; }
.step p { font-size: 15.5px; color: var(--ink-soft); }

/* ---------- Équipe ---------- */
.team-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
.team-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 32px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.portrait {
  width: 96px; height: 96px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
}
.team-card h3 { font-size: 23px; }
.team-role {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent-2);
  margin-top: -10px;
}
.team-card p { font-size: 15.5px; color: var(--ink-soft); }

/* ---------- Pour qui ---------- */
.who-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
  margin: 48px 0;
}
.who-item {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 22px 24px;
  font-size: 17px;
  font-weight: 500;
}
.who-check {
  width: 34px; height: 34px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--on-accent);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}

/* ---------- Témoignages ---------- */
.testi-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
.testi-card {
  background: var(--surface);
  border: 1px dashed var(--line);
  border-radius: 20px;
  padding: 32px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.testi-card .quote-mark {
  font-family: var(--font-display);
  font-size: 56px;
  line-height: 0.6;
  color: var(--accent-2);
}

/* ---------- Bento "Pour qui" ---------- */
.bento-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 52px;
}
.bento-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 22px;
  padding: 30px 32px;
  min-height: 200px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform 0.28s ease, box-shadow 0.28s ease;
}
.bento-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}
.bento-card h3 {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
}
.bento-card p { font-size: 15.5px; color: var(--ink-soft); }
.bento-wide { grid-column: span 2; }
.bento-tall { grid-row: span 2; min-height: 460px; }
.bento-testi {
  border: 1px dashed var(--line);
  justify-content: space-between;
  min-height: 180px;
}
.bento-testi .quote-mark {
  font-family: var(--font-display);
  font-size: 52px;
  line-height: 0.65;
  color: var(--accent-2);
}
.bento-img {
  position: relative;
  overflow: hidden;
  padding: 0;
  border: none;
  isolation: isolate;
}
.bento-img .bc-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s cubic-bezier(0.22, 0.7, 0.25, 1);
}
.bento-img::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top, rgba(18, 12, 9, 0.88) 0%, rgba(18, 12, 9, 0.4) 42%, rgba(18, 12, 9, 0.06) 72%);
}
.bento-img:hover .bc-media { transform: scale(1.06); }
.bento-img .bc-body {
  position: relative;
  z-index: 2;
  margin-top: auto;
  padding: 28px 32px 32px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  color: #fdfaf4;
}
.bento-img h3 { font-family: var(--font-display); font-size: 26px; font-weight: 600; color: #fdfaf4; line-height: 1.15; }
.bento-check { background: var(--accent-2) !important; color: #241308 !important; }

@media (max-width: 860px) {
  .bento-grid { grid-template-columns: 1fr; }
  .bento-wide, .bento-tall { grid-column: span 1; grid-row: span 1; }
  .bento-img { min-height: 280px; }
}
@media (min-width: 861px) and (max-width: 1060px) {
  .bento-grid { grid-template-columns: repeat(2, 1fr); }
}
.testi-lines { display: flex; flex-direction: column; gap: 10px; }
.testi-lines span {
  height: 11px;
  border-radius: 6px;
  background: repeating-linear-gradient(
    -45deg,
    var(--bg-soft),
    var(--bg-soft) 8px,
    color-mix(in srgb, var(--bg-soft) 80%, var(--ink) 7%) 8px,
    color-mix(in srgb, var(--bg-soft) 80%, var(--ink) 7%) 16px
  );
}
.testi-lines span:nth-child(2) { width: 88%; }
.testi-lines span:nth-child(3) { width: 64%; }
.testi-who { display: flex; align-items: center; gap: 12px; margin-top: 6px; }
.testi-who .avatar {
  width: 42px; height: 42px;
  border-radius: 50%;
  border: 1px dashed var(--line);
  background: var(--bg-soft);
}
.testi-who code {
  font-family: 'SFMono-Regular', Menlo, monospace;
  font-size: 12px;
  color: var(--ink-soft);
}

/* ---------- Formulaire démo ---------- */
.demo-section .container {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 64px;
  align-items: start;
}
.demo-copy { display: flex; flex-direction: column; gap: 22px; position: sticky; top: 110px; }
.demo-points { display: flex; flex-direction: column; gap: 14px; }
.demo-points li {
  list-style: none;
  display: flex;
  gap: 12px;
  align-items: baseline;
  color: var(--ink-soft);
  font-size: 16px;
}
.demo-points li::before {
  content: "—";
  color: var(--accent-2);
  font-weight: 700;
}

.demo-form {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 22px;
  padding: 42px;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.field { display: flex; flex-direction: column; gap: 8px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.field label { font-size: 14.5px; font-weight: 600; }
.field input,
.field select,
.field textarea {
  font-family: var(--font-body);
  font-size: 16px;
  color: var(--ink);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 13px 16px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  width: 100%;
}
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent);
}
.field.invalid input,
.field.invalid textarea { border-color: #c0392b; }
.field .err {
  display: none;
  font-size: 13px;
  color: #c0392b;
}
.field.invalid .err { display: block; }
.consent {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  font-size: 13.5px;
  color: var(--ink-soft);
}
.consent input { margin-top: 4px; accent-color: var(--accent); }
.consent.invalid { color: #c0392b; }
.form-success {
  display: none;
  flex-direction: column;
  gap: 16px;
  align-items: flex-start;
  padding: 24px 0;
}
.form-success .success-icon {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--on-accent);
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
}
.demo-form.sent form { display: none; }
.demo-form.sent .form-success { display: flex; }

/* ---------- Footer ---------- */
.site-footer {
  border-top: 1px solid var(--line);
  padding: 48px 0;
}
.site-footer .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  font-size: 14px;
  color: var(--ink-soft);
}
.footer-links { display: flex; gap: 24px; }
.footer-links a { color: var(--ink-soft); text-decoration: none; }
.footer-links a:hover { color: var(--ink); }

/* ---------- Révélation au scroll ---------- */
@media (prefers-reduced-motion: no-preference) {
  html[data-anim="on"] .reveal {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 0.7s ease, transform 0.7s ease;
  }
  html[data-anim="on"] .reveal.in {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .hero .container,
  .modules-grid,
  .demo-section .container { grid-template-columns: 1fr; }
  .hero-visual { min-height: 420px; }
  .features-grid { grid-template-columns: 1fr 1fr; }
  .steps-grid { grid-template-columns: 1fr 1fr; }
  .team-grid, .testi-grid { grid-template-columns: 1fr; }
  .who-grid { grid-template-columns: 1fr; }
  .nav-links { display: none; }
  .nav-burger { display: flex; }
  .modules-visual { position: static; }
  .demo-copy { position: static; }
  .experience-band .container { grid-template-columns: 1fr; gap: 16px; }
}
@media (max-width: 640px) {
  .features-grid, .steps-grid, .field-row { grid-template-columns: 1fr; }
  .section { padding: 64px 0; }
}

/* ============================================================
   ENRICHISSEMENTS — animations, marquees, icônes, décor
   ============================================================ */

/* ---------- Burger + menu mobile ---------- */
.nav-burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 46px;
  height: 46px;
  padding: 0 11px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.nav-burger span {
  display: block;
  height: 2px;
  width: 100%;
  background: var(--ink);
  border-radius: 2px;
  transition: transform 0.28s cubic-bezier(0.4, 0.1, 0.2, 1), opacity 0.2s ease;
}
.nav-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* En-tête « couleur pleine » : burger inversé */
html[data-header="solid"] .nav-burger {
  background: color-mix(in srgb, var(--on-accent) 14%, transparent);
  border-color: color-mix(in srgb, var(--on-accent) 26%, transparent);
}
html[data-header="solid"] .nav-burger span { background: var(--on-accent); }

.mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 49;
  background: color-mix(in srgb, var(--ink) 42%, transparent);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.mobile-menu.open { opacity: 1; visibility: visible; }
.mm-panel {
  position: absolute;
  top: 0;
  right: 0;
  width: min(82vw, 340px);
  height: 100%;
  background: var(--bg);
  border-left: 1px solid var(--line);
  box-shadow: -30px 0 70px -30px rgba(20, 12, 8, 0.6);
  padding: 96px 30px 40px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transform: translateX(100%);
  transition: transform 0.34s cubic-bezier(0.22, 0.7, 0.25, 1);
}
.mobile-menu.open .mm-panel { transform: translateX(0); }
.mm-link {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  transition: color 0.18s ease, padding-left 0.18s ease;
}
.mm-link:hover { color: var(--accent); padding-left: 8px; }
.mm-cta {
  margin-top: 24px;
  width: 100%;
  font-family: var(--font-body);
}

.site-header { transition: box-shadow 0.25s ease; }
.site-header.scrolled { box-shadow: 0 12px 34px -22px rgba(30, 18, 10, 0.45); }

/* Flèche des CTA */
.btn-arrow::after {
  content: "→";
  display: inline-block;
  transition: transform 0.2s ease;
}
.btn-arrow:hover::after { transform: translateX(5px); }

/* Reflet au survol des boutons pleins */
.btn-primary { position: relative; overflow: hidden; }
.btn-primary::before {
  content: "";
  position: absolute;
  top: 0; bottom: 0; left: 0;
  width: 55%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.28), transparent);
  transform: translateX(-130%) skewX(-18deg);
  pointer-events: none;
}
.btn-primary:hover::before { animation: sheen 0.85s ease; }
@keyframes sheen { to { transform: translateX(320%) skewX(-18deg); } }

/* Carte module : transition de contenu */
.module-card.switching { opacity: 0; transform: translateY(10px); }

/* Marquee de mots (bandeau expérience) */
.word-marquee {
  overflow: hidden;
  margin-top: clamp(70px, 11vh, 130px);
  padding: 26px 0 32px;
  border-top: 1px solid color-mix(in srgb, var(--on-accent) 22%, transparent);
}
.wm-track { display: flex; width: max-content; }
.wm-set {
  display: flex;
  align-items: center;
  gap: 44px;
  padding-right: 44px;
  white-space: nowrap;
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(30px, 3.2vw, 44px);
  opacity: 0.5;
}
.wm-set i { font-style: normal; font-size: 15px; opacity: 0.85; }

/* Grappe décorative */
#pour-qui { position: relative; }
#pour-qui .container { position: relative; z-index: 1; }
.deco-grapes {
  position: absolute;
  right: 4%;
  top: 56px;
  width: 160px;
  color: var(--accent);
  opacity: 0.08;
  pointer-events: none;
  z-index: 0;
}
.deco-grapes circle { fill: currentColor; }

/* ---------- Animations (si activées + pas de motion réduite) ---------- */
@media (prefers-reduced-motion: no-preference) {
  @keyframes rise {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: none; }
  }
  @keyframes kenburns {
    from { transform: scale(1); }
    to { transform: scale(1.09); }
  }
  @keyframes marquee {
    to { transform: translateX(-50%); }
  }
  @keyframes floaty {
    to { transform: translateY(-16px) rotate(2deg); }
  }
  @keyframes drawIcon {
    to { stroke-dashoffset: 0; }
  }

  /* Entrée du hero au chargement */
  html[data-anim="on"] .hero-copy > * { animation: rise 0.85s cubic-bezier(0.22, 0.7, 0.25, 1) backwards; }
  html[data-anim="on"] .hero-copy > *:nth-child(1) { animation-delay: 0.05s; }
  html[data-anim="on"] .hero-copy > *:nth-child(2) { animation-delay: 0.16s; }
  html[data-anim="on"] .hero-copy > *:nth-child(3) { animation-delay: 0.3s; }
  html[data-anim="on"] .hero-copy > *:nth-child(4) { animation-delay: 0.44s; }
  html[data-anim="on"] .hero-copy > *:nth-child(5) { animation-delay: 0.56s; }
  html[data-anim="on"] .hero-visual { animation: rise 1s 0.4s cubic-bezier(0.22, 0.7, 0.25, 1) backwards; }

  /* Lent zoom Ken Burns sur la photo */
  html[data-anim="on"] .hero-photo img { animation: kenburns 18s ease-in-out infinite alternate; }

  /* Marquees */
  html[data-anim="on"] .logos-track { animation: marquee 28s linear infinite; }
  html[data-anim="on"] .logos-marquee:hover .logos-track { animation-play-state: paused; }
  html[data-anim="on"] .wm-track { animation: marquee 34s linear infinite; }

  /* Grappe flottante */
  html[data-anim="on"] .deco-grapes { animation: floaty 8s ease-in-out infinite alternate; }

  /* Révélation décalée des grilles */
  html[data-anim="on"] .reveal-stagger > * {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 0.65s ease, transform 0.65s cubic-bezier(0.22, 0.7, 0.25, 1);
  }
  html[data-anim="on"] .reveal-stagger.in > * { opacity: 1; transform: none; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(1) { transition-delay: 0.05s; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(2) { transition-delay: 0.13s; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(3) { transition-delay: 0.21s; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(4) { transition-delay: 0.29s; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(5) { transition-delay: 0.37s; }
  html[data-anim="on"] .reveal-stagger > *:nth-child(6) { transition-delay: 0.45s; }

  /* Icônes qui se tracent */
  html[data-anim="on"] .reveal-stagger .f-icon :is(path, circle, rect) {
    stroke-dasharray: 80;
    stroke-dashoffset: 80;
  }
  html[data-anim="on"] .reveal-stagger.in .f-icon :is(path, circle, rect) {
    animation: drawIcon 1.1s ease 0.3s forwards;
  }

  /* Lignes des étapes qui se dessinent */
  html[data-anim="on"] .steps-grid .step::before { width: 0; transition: width 0.8s cubic-bezier(0.22, 0.7, 0.25, 1); }
  html[data-anim="on"] .steps-grid.in .step::before { width: 46px; }
  html[data-anim="on"] .steps-grid.in .step:nth-child(1)::before { transition-delay: 0.15s; }
  html[data-anim="on"] .steps-grid.in .step:nth-child(2)::before { transition-delay: 0.3s; }
  html[data-anim="on"] .steps-grid.in .step:nth-child(3)::before { transition-delay: 0.45s; }
  html[data-anim="on"] .steps-grid.in .step:nth-child(4)::before { transition-delay: 0.6s; }

  /* Coches « Pour qui » bento */
  html[data-anim="on"] .bento-grid .who-check { transform: scale(0); transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.25s; }
  html[data-anim="on"] .bento-grid.in .who-check { transform: scale(1); }

  /* Formes organiques en mouvement */
  @keyframes blobMorph {
    0%, 100% { border-radius: 46% 54% 60% 40% / 55% 44% 56% 45%; transform: rotate(0deg) scale(1); }
    33% { border-radius: 58% 42% 44% 56% / 42% 58% 42% 58%; transform: rotate(7deg) scale(1.07); }
    66% { border-radius: 40% 60% 52% 48% / 60% 40% 60% 40%; transform: rotate(-5deg) scale(0.96); }
  }
  @keyframes slowSpin { to { transform: rotate(360deg); } }
  html[data-anim="on"] .blob { animation: blobMorph 18s ease-in-out infinite; }
  html[data-anim="on"] .wine-ring { animation: slowSpin 70s linear infinite; }

  @keyframes blobSoft {
    0%, 100% { border-radius: 58% 42% 46% 54% / 48% 56% 44% 52%; }
    50% { border-radius: 44% 56% 58% 42% / 56% 44% 56% 44%; }
  }
  html[data-anim="on"] .organic-photo { animation: blobSoft 14s ease-in-out infinite; }

  @keyframes gradShift {
    0%   { background-position: 0% 60%; }
    33%  { background-position: 80% 20%; }
    66%  { background-position: 20% 80%; }
    100% { background-position: 0% 60%; }
  }
  html[data-anim="on"] .experience-band { animation: gradShift 16s ease infinite; }
}

/* ============================================================
   FORMES ORGANIQUES — taches de vin, halos, sarments
   ============================================================ */

.blob {
  position: absolute;
  border-radius: 46% 54% 60% 40% / 55% 44% 56% 45%;
  filter: blur(48px);
  pointer-events: none;
  z-index: 0;
}
.blob-hero-a {
  width: 520px; height: 440px;
  top: -140px; left: -180px;
  background: color-mix(in srgb, var(--accent) 11%, transparent);
}
.blob-hero-b {
  width: 460px; height: 400px;
  bottom: -160px; right: -140px;
  background: color-mix(in srgb, var(--accent-2) 16%, transparent);
}
.blob-team {
  width: 540px; height: 460px;
  top: -170px; right: -200px;
  background: color-mix(in srgb, var(--accent-2) 13%, transparent);
}
.blob-demo {
  width: 500px; height: 440px;
  bottom: -180px; left: -170px;
  background: color-mix(in srgb, var(--accent) 9%, transparent);
}
#equipe, .demo-section, #accompagnement { position: relative; overflow: hidden; }
#equipe .container, .demo-section .container, #accompagnement .container { position: relative; z-index: 1; }

/* Taches de vin (cercles irréguliers, comme un fond de verre) */
.wine-ring {
  position: absolute;
  border: 2px solid color-mix(in srgb, var(--accent) 26%, transparent);
  border-radius: 48% 52% 50% 50% / 52% 48% 52% 48%;
  pointer-events: none;
  z-index: 0;
}
.wine-ring::after {
  content: "";
  position: absolute;
  inset: -9px;
  border: 1px solid color-mix(in srgb, var(--accent) 13%, transparent);
  border-radius: 50% 50% 48% 52% / 49% 51% 50% 50%;
}
.ring-hero { width: 230px; height: 220px; right: 9%; top: 52px; }
.ring-steps { width: 320px; height: 308px; right: -90px; top: 36%; }

/* Photos organiques (masque souple) */
.organic-photo {
  overflow: hidden;
  border-radius: 58% 42% 46% 54% / 48% 56% 44% 52%;
  box-shadow: var(--shadow);
}
.organic-photo img { width: 100%; height: 100%; object-fit: cover; }
.demo-photo { width: 280px; height: 310px; margin-top: 10px; }

/* Panorama plein écran en forme de colline */
.panorama {
  height: clamp(240px, 34vw, 400px);
  overflow: hidden;
  border-radius: 50% 50% 0 0 / 90px 90px 0 0;
}
.panorama img { width: 100%; height: 100%; object-fit: cover; }

/* Sarment de vigne (ornement) */.vine-ornament {
  display: block;
  width: 240px;
  height: 26px;
  margin: 0 auto 30px;
  color: var(--accent-2);
  opacity: 0.85;
}
.vine-ornament.vine-left { margin: 6px 0 0; width: 200px; }

/* ============================================================
   EN-TÊTES — 4 directions visuelles (Tweaks)
   ============================================================ */

/* Base raffinée : soulignement animé des liens */
.nav-links a:not(.btn) { position: relative; padding: 4px 0; }
.nav-links a:not(.btn)::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  height: 1px; width: 100%;
  background: var(--accent-2);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s ease;
}
.nav-links a:not(.btn):hover::after { transform: scaleX(1); }

/* — Verre dépoli : pilule flottante glassmorphism — */
html[data-header="glass"] .site-header {
  background: transparent;
  border-bottom: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  padding: 14px 16px 0;
}
html[data-header="glass"] .site-header .container {
  max-width: 1060px;
  height: 64px;
  padding: 0 8px 0 24px;
  background: color-mix(in srgb, var(--surface) 52%, transparent);
  backdrop-filter: blur(22px) saturate(170%);
  -webkit-backdrop-filter: blur(22px) saturate(170%);
  border: 1px solid color-mix(in srgb, var(--ink) 12%, transparent);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.35) inset, 0 16px 44px -22px rgba(30, 18, 10, 0.45);
  border-radius: 999px;
}
html[data-header="glass"] .site-header.scrolled { box-shadow: none; }
html[data-header="glass"] .nav-links { gap: 26px; }
html[data-header="glass"] .site-header .btn {
  height: 48px;
  padding: 0 26px;
  font-size: 15px;
  box-shadow: 0 6px 18px -8px color-mix(in srgb, var(--accent) 65%, transparent);
}
html[data-header="glass"] .site-header .btn:hover { transform: translateY(-1px); }

/* — Éditorial centré : logo au centre, nav petites capitales — */
html[data-header="center"] .site-header .container {
  flex-direction: column;
  height: auto;
  gap: 0;
  padding-top: 20px;
}
html[data-header="center"] .brand { flex-direction: column; gap: 7px; }
html[data-header="center"] .brand span { font-size: 27px; }
html[data-header="center"] .nav-links {
  width: 100%;
  justify-content: center;
  gap: 40px;
  border-top: 1px solid var(--line);
  margin-top: 16px;
  padding: 13px 0;
}
html[data-header="center"] .nav-links a:not(.btn) {
  font-size: 12.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
}
html[data-header="center"] .site-header .btn {
  position: absolute;
  right: 32px;
  top: 24px;
  padding: 10px 20px;
}

/* — Couleur pleine : bandeau accent — */
html[data-header="solid"] .site-header {
  background: var(--accent);
  border-bottom: 1px solid color-mix(in srgb, var(--on-accent) 16%, transparent);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
html[data-header="solid"] .brand span { color: var(--on-accent); }
html[data-header="solid"] .nav-links a:not(.btn) { color: color-mix(in srgb, var(--on-accent) 78%, transparent); }
html[data-header="solid"] .nav-links a:not(.btn):hover { color: var(--on-accent); }
html[data-header="solid"] .site-header .btn-primary {
  background: var(--accent-2);
  color: #241308;
  box-shadow: none;
}
html[data-header="solid"] .site-header .btn-primary:hover {
  background: color-mix(in srgb, var(--accent-2) 85%, #fff);
}

@media (max-width: 960px) {
  /* Sur mobile, l'en-tête « centré » repasse en barre simple (logo + burger) */
  html[data-header="center"] .site-header .container {
    flex-direction: row;
    padding: 0 32px;
    height: 72px;
  }
  html[data-header="center"] .brand { flex-direction: row; gap: 12px; }
  html[data-header="center"] .brand span { font-size: 22px; }
  html[data-header="center"] .site-header .btn { position: static; }
  .ring-hero { display: none; }
}

/* Ajustements dynamiques PHP */
.team-grid.grid-one, .testi-grid.grid-one {
  grid-template-columns: minmax(0, 1fr);
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}
.team-grid.grid-two, .testi-grid.grid-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 860px;
  margin-left: auto;
  margin-right: auto;
}
.team-grid.grid-three, .testi-grid.grid-three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 960px) {
  .team-grid.grid-one,
  .team-grid.grid-two,
  .team-grid.grid-three,
  .testi-grid.grid-one,
  .testi-grid.grid-two,
  .testi-grid.grid-three {
    grid-template-columns: 1fr;
    max-width: none;
  }
}

/* ============================================================
   Correctif anti-scroll horizontal — témoignages dynamiques
   Les avis peuvent être ajoutés sans limite depuis l'admin :
   on force les cartes, logos et commentaires à rester contenus.
   ============================================================ */
html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

.container,
.section,
.section-alt,
.team-grid,
.testi-grid {
  max-width: 100%;
  min-width: 0;
}

#temoignages {
  overflow: hidden;
}

#temoignages .team-grid,
.testi-grid {
  width: 100%;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
}

#temoignages .team-grid.grid-one,
#temoignages .testi-grid.grid-one {
  grid-template-columns: minmax(0, 1fr);
  max-width: 520px;
}

#temoignages .team-grid.grid-two,
#temoignages .testi-grid.grid-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 860px;
}

#temoignages .team-grid.grid-three,
#temoignages .testi-grid.grid-three {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  max-width: none;
}

#temoignages .team-card {
  min-width: 0;
  overflow: hidden;
}

.testimonial-logo {
  width: 96px;
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface) 86%, var(--bg-soft));
  flex-shrink: 0;
  overflow: hidden;
}

.testimonial-logo img {
  max-width: 100%;
  max-height: 100%;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

#temoignages .team-card p {
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (max-width: 960px) {
  #temoignages .team-grid.grid-one,
  #temoignages .team-grid.grid-two,
  #temoignages .team-grid.grid-three,
  #temoignages .testi-grid.grid-one,
  #temoignages .testi-grid.grid-two,
  #temoignages .testi-grid.grid-three {
    grid-template-columns: 1fr;
    max-width: none;
  }
}

/* ============================================================
   Correctif débord visuel — section témoignages
   Le halo décoratif .blob-team était absolu sans parent positionné :
   selon le nombre d'avis, il pouvait élargir la page et créer une zone
   vide/noire à droite. On borne explicitement la section.
   ============================================================ */
html,
body {
  width: 100%;
  min-width: 0;
  background: var(--bg);
  overflow-x: hidden;
}

@supports (overflow: clip) {
  html,
  body {
    overflow-x: clip;
  }
}

#temoignages {
  position: relative;
  isolation: isolate;
  width: 100%;
  max-width: 100vw;
  overflow: hidden;
  background: var(--bg-soft);
}

#temoignages .container {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container);
  min-width: 0;
}

#temoignages .blob-team {
  right: max(-180px, calc((100vw - var(--container)) / 2 - 220px));
  max-width: min(540px, 75vw);
}

#temoignages .team-grid {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  overflow: visible;
}

#temoignages .team-card,
#temoignages .testimonial-logo,
#temoignages .testimonial-logo img,
#temoignages .team-card p {
  min-width: 0;
  max-width: 100%;
}
