/* ============================================================================
   WEBENA V7 · RYTHME, ESPACEMENTS, DIMENSIONS, CONTRASTES
   ----------------------------------------------------------------------------
   Fichier unique de finition. Il remplace les couches fixes-v6 et les règles
   d'espacement de wow-v5. Principe : une seule échelle d'espacement, une
   section = une couleur, un dégradé = une transition (jamais une section).
   Chaque maquette garde sa personnalité, mais son rythme interne est régulier.
   ============================================================================ */

/* ---------------------------------------------------------------- 1. ÉCHELLE */
:root{
  /* espacements atomiques */
  --space-3xs:4px;
  --space-2xs:8px;
  --space-xs:clamp(10px,1.1vw,14px);   /* détails, chips, puces */
  --space-sm:clamp(14px,1.6vw,20px);   /* éléments liés entre eux */
  --space-md:clamp(20px,2.4vw,30px);   /* titre -> contenu */
  --space-lg:clamp(28px,3.6vw,44px);   /* bloc -> bloc */
  --space-xl:clamp(40px,5vw,64px);     /* groupe -> groupe */
  --space-2xl:clamp(56px,6.6vw,88px);  /* interne d'une grande section */

  /* rythme des sections */
  --section-y:clamp(56px,6.6vw,104px);        /* respiration verticale */
  --section-y-tight:clamp(40px,4.6vw,72px);   /* sections courtes */
  --gutter:clamp(20px,4.4vw,56px);            /* marge latérale */
  --measure:66ch;                             /* longueur de ligne max */

  /* transition de couleur : toujours plus courte que la respiration,
     pour que le dégradé soit terminé quand le contenu commence. */
  --bridge:clamp(52px,5.4vw,86px);
  --v5-bridge:var(--bridge);
}
@media(max-width:720px){
  :root{ --section-y:56px; --section-y-tight:42px; --bridge:52px; }
}

/* ------------------------------------------------ 2. GARDE-FOUS DE DIMENSION */
/* Aucun mot, prénom, date ou chiffre ne doit être coupé. */
h1,h2,h3,h4,h5,legend,summary,
.page-title,.hero__n,.cover__n,.head__n,.st,.bot-copy h2,.edit-name,.foot h3{
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
  text-wrap:balance;
  max-width:100%;
}
p,li,dd,figcaption,blockquote{overflow-wrap:break-word}
.home-hero>*,.home-creations>*,.home-value>*,.home-founder>*,.page-scene>*,
.wed-overview>*,.wed-works>*,.wed-backoffice>*,.feature-main>*,.row>*,
.sec__in>*,.art__in>*,.cfg__in>*,.bot-hero>*,.bot-split>*,.bot-rsvp>*{
  min-width:0;
}
.work-index,.pack-table,.chips,.excel-preview,.v3-features .chips{min-width:0;max-width:100%}
img,svg,video,canvas,iframe{max-width:100%}
img{height:auto}

/* Les libellés de navigation ne se coupent jamais en plein mot :
   la barre défile, elle ne casse pas. */
.v3-nav a,.v3-project,.t-nav__links a,.nav2 a,.bot-nav button,.mast a,
.feature-families button{white-space:nowrap}
.pending-page,.care-page{padding-block:var(--section-y)}

/* Care, Events, Business : des pages courtes, pas des écrans vides.
   Le contenu commence en haut de la page, pas au milieu d'un bloc de 62svh. */
.care-page{padding-block:var(--section-y);max-width:1180px;margin-inline:auto}
.care-intro{min-height:0;align-items:start;gap:var(--space-xl) clamp(40px,6vw,110px)}
.care-intro h1{font-size:clamp(58px,8.6vw,120px);line-height:.88}
.care-intro p{font-size:clamp(15px,1.4vw,18px);max-width:52ch}
.care-list{margin-top:var(--space-2xl)}
.care-row{padding:var(--space-md) 0;gap:var(--space-md)}
.care-actions{margin-top:var(--space-xl)}
.pending-page{padding-block:var(--section-y);min-height:0;align-content:start}
.pending-page h1{line-height:.9}
.project-shell{max-width:1000px;margin-inline:auto;width:100%}
.project-progress{margin-bottom:var(--space-xl)}
.project-step.is-active{gap:var(--space-lg)}
.project-controls{margin-top:var(--space-lg)}
.form-grid{gap:var(--space-md)}
.project-summary{padding-left:var(--space-md)}

/* Grilles : sur mobile, une seule colonne réellement contrainte. */
@media(max-width:980px){
  .home-hero,.home-creations,.home-value,.home-founder,.page-scene,
  .wed-overview,.wed-works,.case-hero{grid-template-columns:minmax(0,1fr)}
  .work-index{overflow-x:auto;scrollbar-width:none}
  .work-index::-webkit-scrollbar{display:none}
  .pack-table{display:block;overflow-x:auto;scrollbar-width:none}
}

/* ------------------------------------------------- 4. WEDDINGS : ESPACES */
.wed-overview--text{grid-template-columns:minmax(0,840px);justify-content:start}
.wed-overview--text>div{max-width:820px}
.wed-backoffice{
  display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:var(--space-xl) clamp(36px,5vw,80px);align-items:start;
}
.wed-backoffice-links{display:grid;border-top:1px solid var(--wb-line);margin-top:var(--space-md)}
.wed-backoffice-links a{
  padding:var(--space-md) 0;border-bottom:1px solid var(--wb-line);
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-md);align-items:center;
}
.wed-backoffice-links strong{font-family:var(--wb-serif);font-size:clamp(26px,2.7vw,38px);font-weight:400}
.wed-backoffice-links small{display:block;margin-top:6px;color:#6E675F;line-height:1.6;font-size:12px}
.wed-backoffice-links em{font-style:normal;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:#7F6432}
.page-actions a.options-cta,.wed-backoffice a.options-cta,a.options-cta{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:58px;padding:0 30px;margin-top:var(--space-md);
  background:var(--wb-ink);color:var(--wb-ivory);border:1px solid var(--wb-ink);
  font-size:12px;letter-spacing:.12em;text-transform:uppercase;
}
.options-cta:hover{background:#000}
.wb-note{
  margin-top:var(--space-lg);padding-top:var(--space-md);
  border-top:1px solid var(--wb-gold);max-width:70ch;
  font-size:12.5px;line-height:1.75;color:#5F584F;
}
.wb-note a{border-bottom:1px solid currentColor}
@media(max-width:980px){ .wed-backoffice{grid-template-columns:minmax(0,1fr)} .options-cta{width:100%} }

/* ==================================================== 5. DÉMOS : RYTHME */
/* Toutes les accroches (.hero, .edit-hero) vivent HORS de <main> : chaque
   section de <main> reçoit donc la respiration complète, sans exception. */
body.demo-v4 main>section,
body.demo-v4 main>article{
  min-height:0;
  padding-block:var(--section-y);
}
/* Une section qui commence une nouvelle couleur laisse le dégradé finir
   avant que le contenu n'apparaisse : le dégradé est une transition. */
body.demo-v4 main>section+section,
body.demo-v4 main>article+article,
body.demo-v4 main>section+article,
body.demo-v4 main>article+section{
  padding-top:calc(var(--section-y) + var(--space-2xs));
}
body.demo-v4 main>footer,body.demo-v4 .foot{
  padding-block:var(--section-y) calc(var(--section-y) + 46px);
}
/* Botanical est un enchaînement de plein-cadres photographiques :
   sa respiration vit dans .bot-copy, pas dans un padding de section. */
body.demo-theme-botanical main>section{padding-top:0;padding-bottom:0;min-height:0}
body.demo-theme-botanical .bot-copy,
body.demo-theme-botanical .bot-intro,
body.demo-theme-botanical .bot-rsvp-copy,
body.demo-theme-botanical .bot-rsvp-form{
  padding-block:var(--section-y);
}
body.demo-theme-botanical .bot-faq{
  display:block;padding:var(--section-y) var(--gutter);place-items:start;
}
body.demo-theme-botanical .bot-faq>div{margin-inline:auto}
body.demo-theme-botanical .bot-scene{align-content:start}
body.demo-theme-botanical .bot-hero,
body.demo-theme-botanical .bot-split,
body.demo-theme-botanical .bot-location-grid,
body.demo-theme-botanical .bot-rsvp{min-height:0}
body.demo-theme-botanical .bot-gallery{padding-block:var(--space-lg)}

body.demo-v4 .sec__in,body.demo-v4 .cfg__in,body.demo-v4 .art__in,
body.demo-v4 .rsvpwrap,body.demo-v4 .places,body.demo-v4 .trio{
  gap:var(--space-xl) clamp(28px,4vw,58px);
}
body.demo-v4 .body p + p,body.demo-v4 .page-copy + .page-copy{margin-top:var(--space-sm)}
body.demo-v4 .gal,body.demo-v4 .t-gal,body.demo-v4 .strip{margin-top:var(--space-lg)}
body.demo-v4 .t-faq,body.demo-v4 .t-form{margin-top:var(--space-md)}

/* Accroches : présence, sans écran vide. Elles gèrent leur propre padding. */
body.demo-v4 .hero,body.demo-v4 .edit-hero{padding-bottom:var(--section-y-tight)}
body.demo-theme-minimal .hero,
body.demo-theme-afro .hero,
body.demo-theme-destination .hero,
body.demo-theme-black .hero{min-height:min(720px,80svh)}
body.demo-theme-editorial .edit-hero{min-height:0}
body.demo-theme-editorial .art,
body.demo-theme-afro .sec,
body.demo-theme-destination .sec,
body.demo-theme-black .sec{min-height:0;align-content:start}
body.demo-theme-editorial .foot{min-height:0;height:auto}
@media(max-width:720px){
  body.demo-theme-minimal .hero,body.demo-theme-afro .hero,
  body.demo-theme-destination .hero,body.demo-theme-black .hero{min-height:0}
}

/* Photographies : le visage prime sur le centrage géométrique. */
body.demo-v4 .hero__img img,
body.demo-v4 .cover__img img,
body.demo-v4 .bot-photo img,
body.demo-v4 .gal img,
body.demo-v4 .t-gal img{object-fit:cover;object-position:50% 28%}
body.demo-v4 img[data-focus="top"]{object-position:50% 14%!important}
body.demo-v4 img[data-focus="face"]{object-position:50% 24%!important}
body.demo-v4 img[data-focus="center"]{object-position:50% 50%!important}
body.demo-v4 img[data-focus="low"]{object-position:50% 68%!important}

/* Menus des démos : défilent, ne se superposent pas, ne coupent rien. */
body.demo-v4 .t-nav__links,body.demo-v4 .nav2,body.demo-v4 .bot-nav{
  min-width:0;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:none;
}
body.demo-v4 .t-nav__links::-webkit-scrollbar,
body.demo-v4 .nav2::-webkit-scrollbar,
body.demo-v4 .bot-nav::-webkit-scrollbar{display:none}
body.demo-v4 .t-nav__links a,body.demo-v4 .nav2 a,body.demo-v4 .bot-nav button{flex:0 0 auto}
body.demo-v4 .t-nav,body.demo-v4 .nav2,body.demo-v4 .mast{max-width:100%}
/* Un menu collant décale les ancres pour ne jamais masquer un début de section. */
body.demo-v4 [id]{scroll-margin-top:104px}
@media(max-width:720px){ body.demo-v4 [id]{scroll-margin-top:84px} }

/* ============================== 6. COMPTES À REBOURS : TOUJOURS LISIBLES */
.t-cd__n,.cd__n{color:inherit}
.t-cd__l,.cd__l{opacity:1}
.v3-features .sd .t-cd__n{color:#FFFDF9}
.v3-features .sd .t-cd__l{color:#DCC08A;opacity:1}
body.demo-theme-black .t-cd__n{color:#F7F1E8}
body.demo-theme-black .t-cd__l{color:#D9B87E;opacity:1}
body.demo-theme-minimal .t-cd__n{color:var(--t-ink)}
body.demo-theme-minimal .t-cd__l{color:var(--t-ink-soft);opacity:1}
body.demo-theme-editorial .t-cd__n{color:var(--t-ink)}
body.demo-theme-editorial .t-cd__l{color:var(--t-ink-soft);opacity:1}
body.demo-theme-afro .t-cd__n{color:#FFF6EC}
body.demo-theme-afro .t-cd__l{color:#E8CDB4;opacity:1}
body.demo-theme-destination .t-cd__n{color:#2F261E}
body.demo-theme-destination .t-cd__l{color:#6B5A46;opacity:1}
body.demo-theme-botanical .t-cd__n{color:#233024}
body.demo-theme-botanical .t-cd__l{color:#55634F;opacity:1}
.cover__cd .t-cd__n,.head__in .t-cd__n{color:#FFFDF9}
.cover__cd .t-cd__l,.head__in .t-cd__l{color:#F3E3CB;opacity:1}

/* ================================= 7. MINIMAL LUXURY · CONFIGURATEUR */
/* Le configurateur ne repeint pas des boutons : il change d'univers.
   Chaque palette porte trois fonds réellement distincts, que les sections
   enchaînent (bg -> surface -> tint -> bg), avec un dégradé en guise de pont.
   Le texte, l'accent et les traits sont recalculés pour chaque fond par
   apply() dans la page, donc aucune couleur ne devient illisible. */
body.demo-theme-minimal{
  background:var(--t-bg);
  color:var(--t-ink-bg,var(--t-ink));
}
body.demo-theme-minimal,
body.demo-theme-minimal main>section,
body.demo-theme-minimal .hero,
body.demo-theme-minimal .foot,
body.demo-theme-minimal .t-nav{
  transition:background-color .55s ease,color .45s ease,border-color .45s ease;
}

/* L'accroche pose la couleur de départ. */
body.demo-theme-minimal .hero{
  background:var(--t-bg);
  color:var(--t-ink-bg,var(--t-ink));
  --sec-ink:var(--t-ink-bg);--sec-soft:var(--t-soft-bg);
  --sec-accent:var(--t-accent-bg);--sec-accent-text:var(--t-accent-text-bg);--sec-line:var(--t-line-bg);
  --sec-line-soft:var(--t-line-soft-bg);--sec-veil:var(--t-veil-bg);--sec-field:var(--t-field-bg);
}

/* Cycle de trois fonds. Le dégradé part de la couleur de la section
   précédente et se termine avant l'arrivée du contenu. */
body.demo-theme-minimal main>section:nth-of-type(3n+1){
  --sec-from:var(--t-bg);--sec-to:var(--t-surface);
  --sec-ink:var(--t-ink-surface);--sec-soft:var(--t-soft-surface);
  --sec-accent:var(--t-accent-surface);--sec-accent-text:var(--t-accent-text-surface);--sec-line:var(--t-line-surface);
  --sec-line-soft:var(--t-line-soft-surface);--sec-veil:var(--t-veil-surface);
  --sec-field:var(--t-field-surface);
}
body.demo-theme-minimal main>section:nth-of-type(3n+2){
  --sec-from:var(--t-surface);--sec-to:var(--t-tint);
  --sec-ink:var(--t-ink-tint);--sec-soft:var(--t-soft-tint);
  --sec-accent:var(--t-accent-tint);--sec-accent-text:var(--t-accent-text-tint);--sec-line:var(--t-line-tint);
  --sec-line-soft:var(--t-line-soft-tint);--sec-veil:var(--t-veil-tint);
  --sec-field:var(--t-field-tint);
}
body.demo-theme-minimal main>section:nth-of-type(3n+3){
  --sec-from:var(--t-tint);--sec-to:var(--t-bg);
  --sec-ink:var(--t-ink-bg);--sec-soft:var(--t-soft-bg);
  --sec-accent:var(--t-accent-bg);--sec-accent-text:var(--t-accent-text-bg);--sec-line:var(--t-line-bg);
  --sec-line-soft:var(--t-line-soft-bg);--sec-veil:var(--t-veil-bg);
  --sec-field:var(--t-field-bg);
}
body.demo-theme-minimal main>section{
  background:
    linear-gradient(180deg,var(--sec-from) 0,transparent var(--bridge)),
    var(--sec-to);
  color:var(--sec-ink);
}
body.demo-theme-minimal .foot{
  background:var(--t-tint);color:var(--t-ink-tint);
  --sec-ink:var(--t-ink-tint);--sec-soft:var(--t-soft-tint);
  --sec-accent:var(--t-accent-tint);--sec-accent-text:var(--t-accent-text-tint);--sec-line:var(--t-line-tint);
}

/* Tout ce qui vit dans une section suit la couleur de cette section. */
body.demo-theme-minimal main>section h1,
body.demo-theme-minimal main>section h2,
body.demo-theme-minimal main>section h3,
body.demo-theme-minimal main>section h4,
body.demo-theme-minimal main>section .st,
body.demo-theme-minimal main>section strong,
body.demo-theme-minimal main>section .num,
body.demo-theme-minimal .foot h2,body.demo-theme-minimal .foot h3{color:var(--sec-ink)}
body.demo-theme-minimal main>section p,
body.demo-theme-minimal main>section li,
body.demo-theme-minimal main>section small,
body.demo-theme-minimal main>section .t-p,
body.demo-theme-minimal main>section .body,
body.demo-theme-minimal main>section .note,
body.demo-theme-minimal main>section figcaption,
body.demo-theme-minimal main>section time,
body.demo-theme-minimal .foot p{color:var(--sec-soft)}
body.demo-theme-minimal main>section .eye,
body.demo-theme-minimal main>section .t-label,
body.demo-theme-minimal main>section .t-cd__l,
body.demo-theme-minimal main>section .t-prog__t,
body.demo-theme-minimal main>section .side span,
body.demo-theme-minimal main>section a:not(.t-btn){color:var(--sec-accent-text,var(--sec-accent))}
body.demo-theme-minimal main>section .t-cd__n{color:var(--sec-ink)}
body.demo-theme-minimal main>section hr,
body.demo-theme-minimal main>section .t-line,
body.demo-theme-minimal main>section .t-item,
body.demo-theme-minimal main>section .t-place,
body.demo-theme-minimal main>section .t-faq details,
body.demo-theme-minimal main>section table,
body.demo-theme-minimal main>section th,
body.demo-theme-minimal main>section td,
body.demo-theme-minimal main>section .line,
body.demo-theme-minimal main>section .step{border-color:var(--sec-line)}
body.demo-theme-minimal main>section .t-place,
body.demo-theme-minimal main>section .t-item,
body.demo-theme-minimal main>section .blk{background:var(--sec-veil)}

/* Formulaires : champ, libellé, texte saisi et placeholder suivent le fond. */
body.demo-theme-minimal main>section .t-input,
body.demo-theme-minimal main>section .t-select,
body.demo-theme-minimal main>section .t-textarea,
body.demo-theme-minimal main>section input,
body.demo-theme-minimal main>section select,
body.demo-theme-minimal main>section textarea{
  background:var(--sec-field);color:var(--sec-ink);border-color:var(--sec-line);
}
body.demo-theme-minimal main>section ::placeholder{color:var(--sec-soft);opacity:1}
body.demo-theme-minimal main>section .t-check{border-color:var(--sec-line);background:var(--sec-field)}
body.demo-theme-minimal main>section .t-check:checked{background:var(--sec-accent);border-color:var(--sec-accent)}

/* Boutons : plein sur l'accent recalculé, contour sur le trait de la section. */
body.demo-theme-minimal .t-btn--accent,
body.demo-theme-minimal main>section .t-btn--accent{
  background:var(--sec-accent,var(--t-accent));
  border-color:var(--sec-accent,var(--t-accent));
  color:var(--sec-to,var(--t-bg));
}
body.demo-theme-minimal main>section .t-btn:not(.t-btn--accent){
  color:var(--sec-ink);border-color:var(--sec-line);background:transparent;
}
body.demo-theme-minimal main>section .t-btn:not(.t-btn--accent):hover,
body.demo-theme-minimal main>section .t-btn:not(.t-btn--accent):focus-visible{
  background:var(--sec-veil);border-color:var(--sec-accent);color:var(--sec-ink);
}
body.demo-theme-minimal main>section .t-btn--accent:hover{filter:brightness(1.08)}

/* Navigation collante et pied de page. */
body.demo-theme-minimal .t-nav{
  background:color-mix(in srgb,var(--t-bg) 92%,transparent);
  color:var(--t-ink-bg);border-color:var(--t-line-bg);
}
body.demo-theme-minimal .t-nav__links a{color:var(--t-soft-bg)}
body.demo-theme-minimal .t-nav__links a:hover,
body.demo-theme-minimal .t-nav__links a.is-v4-active{color:var(--t-accent-bg)}
body.demo-theme-minimal .t-lang button{color:var(--t-soft-bg);border-color:var(--t-line-bg)}
body.demo-theme-minimal .t-lang button[aria-pressed="true"]{
  background:var(--t-ink-bg);color:var(--t-bg);border-color:var(--t-ink-bg);
}
body.demo-theme-minimal .demo-v4-progress i{background:var(--t-accent-bg)}

/* Le panneau du configurateur montre lui-même la palette en cours. */
body.demo-theme-minimal .cfg .palbtn{
  color:var(--sec-ink);border-color:var(--sec-line);background:transparent;
}
body.demo-theme-minimal .cfg .palbtn[aria-pressed="true"]{
  border-color:var(--sec-accent);background:var(--sec-veil);color:var(--sec-ink);
}
body.demo-theme-minimal .cfg .palbtn u,body.demo-theme-minimal #swatches{
  display:inline-flex;gap:4px;text-decoration:none;
}
body.demo-theme-minimal .cfg .palbtn i,body.demo-theme-minimal #swatches i{
  display:block;width:15px;height:15px;border:1px solid var(--sec-line-soft);
}
body.demo-theme-minimal .cfg .demo-v4-font-note{border-color:var(--sec-line);color:var(--sec-soft)}

/* Couverture complète : rien ne conserve une couleur figée dans une section. */
body.demo-theme-minimal main>section .side span,
body.demo-theme-minimal main>section .t-prog__t,
body.demo-theme-minimal main>section .demo-v4-font-note,
body.demo-theme-minimal main>section .t-maps a,
body.demo-theme-minimal main>section .t-item span,
body.demo-theme-minimal main>section .t-item em,
body.demo-theme-minimal main>section .blk .t-p,
body.demo-theme-minimal main>section .step p,
body.demo-theme-minimal main>section .line p{color:var(--sec-soft)}
body.demo-theme-minimal main>section .side b,
body.demo-theme-minimal main>section .line>b,
body.demo-theme-minimal main>section .step>b{color:var(--sec-accent-text,var(--sec-accent))}
body.demo-theme-minimal main>section summary,
body.demo-theme-minimal main>section details,
body.demo-theme-minimal main>section .t-faq summary{color:var(--sec-ink)}
body.demo-theme-minimal main>section summary::marker,
body.demo-theme-minimal main>section summary::-webkit-details-marker{color:var(--sec-accent)}
body.demo-theme-minimal main>section .note{border-left-color:var(--sec-accent);color:var(--sec-soft)}
body.demo-theme-minimal main>section .t-gal img,
body.demo-theme-minimal main>section .duo img,
body.demo-theme-minimal main>section figure{border-color:var(--sec-line)}
body.demo-theme-minimal main>section .t-btn--ghost{color:var(--sec-ink);border-color:var(--sec-line)}
body.demo-theme-minimal main>section .wbt__back{color:var(--sec-soft)}
/* La bande sticky des numéros et la timeline suivent aussi le fond. */
body.demo-theme-minimal main>section .t-prog,
body.demo-theme-minimal main>section .t-prog__b{background:var(--sec-veil);border-color:var(--sec-line)}
body.demo-theme-minimal main>section .t-prog__b>i{background:var(--sec-accent)}

/* La galerie et les photos gardent leur cadrage quelle que soit la palette. */
body.demo-theme-minimal .t-gal img,body.demo-theme-minimal .hero__img img{background:var(--t-surface)}

/* ================================================ 8. BLACK TIE · ESPACES */
body.demo-theme-black .sec{min-height:0}
body.demo-theme-black details{max-width:900px}
body.demo-theme-black .sec__in{padding-bottom:0}

/* ========================================= 9. FONCTIONNALITÉS · LAYOUT */
body.v3-features{overflow:auto}
.v3-features .feature-shell{height:auto;min-height:100vh;display:block}
.v3-features .feature-main{
  display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-height:0;align-items:start;
}
.v3-features .feature-menu{
  border-right:0;border-bottom:1px solid var(--wb-line);overflow:visible;
  padding:var(--section-y-tight) var(--gutter);
}
.v3-features .feature-menu h1{
  font-family:var(--wb-serif);font-weight:400;
  font-size:clamp(30px,4.4vw,46px);line-height:1.06;letter-spacing:-.01em;
  margin:0 0 var(--space-sm);max-width:22ch;text-wrap:balance;
}
.v3-features .feature-menu p{font-size:13px;line-height:1.7;color:#665F58;max-width:60ch;margin-bottom:var(--space-md)}
.v3-features .feature-note{
  margin:0 0 var(--space-md);padding:var(--space-sm) 0;
  border-top:1px solid var(--wb-gold);border-bottom:1px solid var(--wb-line);
  font-size:12px;line-height:1.7;color:#5F584F;max-width:72ch;
}
.v3-features .feature-note a{border-bottom:1px solid currentColor}
.v3-features .feature-families{
  display:flex;gap:0;border-top:1px solid var(--wb-line);border-bottom:0;
  overflow-x:auto;scrollbar-width:none;
}
.v3-features .feature-families::-webkit-scrollbar{display:none}
.v3-features .feature-families button{
  flex:0 0 auto;border:0;border-bottom:2px solid transparent;background:none;
  text-align:left;padding:var(--space-sm) 18px var(--space-sm) 0;margin-right:18px;
  font-family:var(--wb-serif);font-size:clamp(19px,2.2vw,24px);color:#6E665C;
}
.v3-features .feature-families button:last-child{margin-right:0}
.v3-features .feature-families button.is-active{color:var(--wb-ink);border-bottom-color:var(--wb-gold)}
.v3-features .feature-stage{position:static;overflow:visible;min-width:0}
.v3-features .feature-family{
  position:static;inset:auto;display:none;opacity:1;visibility:visible;transform:none;
  overflow:visible;padding:var(--section-y-tight) var(--gutter) var(--section-y);
}
.v3-features .feature-family.is-active{display:block}
.v3-features .feature-family-header{
  display:grid;gap:var(--space-2xs);align-items:end;
  border-bottom:1px solid var(--wb-line);
  padding-bottom:var(--space-sm);margin-bottom:var(--space-2xs);
}
.v3-features .feature-family-header h2{
  font-family:var(--wb-serif);font-weight:400;margin:0;
  font-size:clamp(30px,4vw,52px);line-height:1.05;
}
.v3-features .feature-family-header p{font-size:12.5px;color:#665F58;line-height:1.6;max-width:60ch}
.v3-features .feature-mobile-select{display:none}

/* Colonne latérale seulement quand elle a la place d'être confortable. */
@media(min-width:1120px){
  .v3-features .feature-main{
    grid-template-columns:minmax(300px,340px) minmax(0,1fr);
    align-items:start;
  }
  .v3-features .feature-menu{
    position:sticky;top:0;align-self:start;max-height:100vh;overflow:auto;
    border-right:1px solid var(--wb-line);border-bottom:0;
    padding:var(--section-y-tight) clamp(28px,2.4vw,38px) var(--space-xl) var(--gutter);
    scrollbar-width:thin;
  }
  .v3-features .feature-menu h1{font-size:clamp(34px,2.6vw,44px);max-width:14ch}
  .v3-features .feature-families{
    display:grid;grid-auto-flow:row;overflow:visible;
    border-top:1px solid var(--wb-line);
  }
  .v3-features .feature-families button{
    width:100%;margin:0;padding:14px 0;
    border-bottom:1px solid var(--wb-line);border-left:1px solid transparent;
    white-space:normal;
  }
  .v3-features .feature-families button.is-active{
    border-bottom-color:var(--wb-line);border-left-color:var(--wb-gold);padding-left:12px;
  }
  .v3-features .feature-family{
    padding:var(--section-y-tight) clamp(40px,4vw,72px) var(--section-y);
  }
  .v3-features .feature-family-header{grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:var(--space-md)}
}

.v3-features .opt{padding:var(--space-lg) 0;border-bottom:1px solid var(--wb-line)}
.v3-features .opt:last-child{border-bottom:0}
.v3-features .opt__h{
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:var(--space-2xs) var(--space-md);
}
.v3-features .opt__h h3{font-family:var(--wb-serif);font-weight:400;margin:0;
  font-size:clamp(21px,2.4vw,28px);line-height:1.14}
.v3-features .opt__price{font-family:var(--wb-serif);font-size:clamp(18px,2vw,23px);color:#7F6432;white-space:nowrap}
.v3-features .opt>p{font-size:13.5px;line-height:1.75;color:#655D55;max-width:70ch;margin-top:var(--space-2xs)}
.v3-features .demo{
  margin-top:var(--space-md);border:0;border-left:1px solid var(--wb-gold);border-radius:0;
  background:#fff;padding:var(--space-md) clamp(18px,2.2vw,26px);overflow:hidden;
}
.v3-features .demo__c{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:#7F6432;margin-bottom:var(--space-sm)}
.v3-features .row{gap:var(--space-md)}
.v3-features .mini,.v3-features .b-btn{border-radius:0}
.v3-features .chips{gap:0;border:1px solid var(--wb-line);width:max-content;max-width:100%;
  margin-bottom:var(--space-sm);overflow-x:auto;scrollbar-width:none}
.v3-features .chips::-webkit-scrollbar{display:none}
.v3-features .chips .mini{border:0;border-right:1px solid var(--wb-line);min-height:40px;flex:0 0 auto}
.v3-features .chips .mini:last-child{border-right:0}
.v3-features .mini.is-on{background:var(--wb-ink);color:#fff}
.v3-features .recap{border-radius:0;background:#24211E;margin-top:var(--space-2xl)}
.v3-features .recap h2{margin-bottom:var(--space-2xs)}
.v3-features .recap div.l{padding:12px 0}
.v3-features .excel-preview{overflow-x:auto;border:1px solid var(--wb-line);background:#fff}
.v3-features .excel-preview table{border-collapse:collapse;width:100%;min-width:600px;font-size:11.5px}
.v3-features .excel-preview th,.v3-features .excel-preview td{
  padding:10px 12px;border-right:1px solid var(--wb-line-soft);
  border-bottom:1px solid var(--wb-line-soft);text-align:left}
.v3-features .excel-preview th{background:#F2ECE4;font-weight:600}
.v3-features .download-model{
  display:inline-flex;min-height:50px;align-items:center;padding-inline:22px;margin-top:var(--space-sm);
}
/* QR : uniquement des destinations Webena de démonstration. */
.v3-features .qr-demo-select{width:100%;min-height:48px;border:1px solid var(--wb-line);
  background:#fff;padding:0 14px;border-radius:0}
.v3-features .qrbox{padding:var(--space-md)}
.v3-features .qrbox canvas{max-width:190px;width:min(100%,190px);height:auto}

/* Galerie : bande défilante façon Road Too Asiamah 26. */
.v3-features .galdemo--strip{display:block;overflow:hidden;padding:var(--space-2xs) 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.v3-features .galdemo--strip .gal-strip-track{display:flex;gap:12px;width:max-content;
  animation:v7GalleryStrip 30s linear infinite}
.v3-features .galdemo--strip img{width:150px;aspect-ratio:4/5;flex:0 0 150px;border-radius:0;
  object-fit:cover}
.v3-features .galdemo--strip:hover .gal-strip-track,
.v3-features .galdemo--strip:focus-within .gal-strip-track{animation-play-state:paused}
@keyframes v7GalleryStrip{to{transform:translateX(calc(-50% - 6px))}}
@media(prefers-reduced-motion:reduce){
  .v3-features .galdemo--strip{overflow-x:auto}
  .v3-features .galdemo--strip .gal-strip-track{animation:none}
}
@media(max-width:720px){
  .v3-features .galdemo--strip img{width:118px;flex-basis:118px}
}

/* Catalogue en famille autonome : lisible, aéré, actionnable. */
.v3-features #catalogue{margin-top:0}
.v3-features .cat-intro{max-width:70ch;font-size:13.5px;line-height:1.75;color:#655D55;margin-bottom:var(--space-lg)}
.v3-features .cat-table{border-top:1px solid var(--wb-line);margin-bottom:var(--space-lg)}
.v3-features .cat-table .l{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-md);align-items:baseline;
  padding:14px 0;border-bottom:1px solid var(--wb-line-soft);font-size:14px;
}
.v3-features .cat-table .l span{color:#3A342E}
.v3-features .cat-table .l b{font-family:var(--wb-serif);font-size:19px;font-weight:400;
  color:#7F6432;white-space:nowrap}
.v3-features .cat-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-top:var(--space-lg)}
.v3-features .cat-actions .b-btn{min-height:52px;display:inline-flex;align-items:center;padding-inline:26px}

/* ============================================== 10. CONTRASTES GÉNÉRAUX */
.v3-mega small,.founder-photo span{color:#5F584F}
.v3-features .b-small,.v3-features .b-label,.v3-features .t-label,
.v3-features .feature-family-header p{color:#5F584F}
.v3-features .b-btn--or,.v3-features .t-btn--accent{color:#1F1F1F}
.v3-features .t-btn--accent{background:#5B4327;border-color:#5B4327;color:#FFF}
.home-caption small{background:#3B332D;color:#fff;text-shadow:none}
.pending-page h1 span{color:#5F5449}
body.w-body .w-tab{color:#5E5750}
body.w-body .hist span,body.w-body .w-stat__sub{color:#655D55}
::placeholder{color:#7A736B;opacity:1}
.gate input::placeholder,.t-input::placeholder{color:#8A837A}
:disabled,[aria-disabled="true"]{opacity:.55}
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,summary:focus-visible{
  outline:2px solid currentColor;outline-offset:3px;
}

/* Photographies porteuses de texte : voile systématique. */
.cover__bg::after{background:linear-gradient(180deg,rgba(18,16,14,.24) 0%,rgba(18,16,14,.34) 38%,rgba(18,16,14,.78) 100%)}
.cover__in{color:#FFFDF9;text-shadow:0 2px 18px rgba(0,0,0,.34)}
.cover__pre,.cover__d,.cover__cd .t-cd__l{color:#FFFDF9;opacity:.95}
.head__bg::after{background:linear-gradient(180deg,rgba(8,8,10,.3) 0%,rgba(8,8,10,.44) 42%,rgba(8,8,10,.84) 100%)}
.head__in{color:#FFFDF9;text-shadow:0 2px 20px rgba(0,0,0,.38)}
.head__pre,.head__meta,.head__n{color:#FFFDF9;opacity:1}
.head__n em{color:#E4C48F}
.lang .t-lang{background:rgba(255,255,255,.92)}
.lang .t-lang button:not([aria-pressed="true"]){color:#2D2925}
.scroll span{color:#FFFDF9;text-shadow:0 1px 12px rgba(0,0,0,.42)}

/* Une légende posée sur une photographie ne peut pas compter sur une ombre
   portée : elle reçoit un voile dégradé, comme les couvertures d'invitation. */
.wed-work-main,.home-hero-visual,.home-creation-photo{position:relative}
.wed-work-main::after,.home-hero-visual::before{
  content:"";position:absolute;left:0;right:0;bottom:0;height:58%;
  background:linear-gradient(180deg,rgba(16,14,12,0) 0%,rgba(16,14,12,.62) 100%);
  pointer-events:none;z-index:1;
}
.wed-work-caption,.home-caption{z-index:2;text-shadow:0 1px 14px rgba(0,0,0,.45)}
.wed-work-caption p,.wed-work-caption h3{color:#FFFDF9}

/* Bandeau de démonstration : jamais collé au contenu. */
body.has-demobar,body.demo-v4{padding-bottom:0}
body.demo-v4 .wb-demobar{z-index:200}

/* ------------------------------------------------------------- 11. MOBILE */
@media(max-width:720px){
  .v3-features .feature-menu{padding:var(--section-y-tight) 22px var(--space-md)}
  .v3-features .feature-family{padding:var(--space-xl) 22px var(--section-y)}
  .v3-features .demo{padding:var(--space-sm) 16px}
  .v3-features .row{grid-template-columns:minmax(0,1fr)}
  .v3-features .cat-table .l{grid-template-columns:minmax(0,1fr) auto;gap:var(--space-sm)}
  .v3-features .cat-actions .b-btn{width:100%;justify-content:center}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
