/* ============================================================
   Villa des Jardins — main.css (reproduction Framer)
   ============================================================ */
:root{
  --cream:#FFFDF2;
  --cream-2:#F7F7EE;
  --cream-3:#EFEDE2;
  --sand:#E5E1CF;
  --white:#FFFFFF;
  --band:#F6EEDD;         /* champagne clair (teinte de #EACC9F) : alternance chaude */
  --ink:#3F3E39;          /* titres sombres */
  --body:#5C5A53;         /* texte courant */
  --muted:#8A887F;
  --slate:#34421F;        /* titres = vert olive de la charte */
  --slate-2:#6E7A52;      /* sur-titres / icônes = olive adouci */
  --gold:#C19435;         /* accent or principal */
  --gold-dk:#A57E29;      /* or foncé (hover) */
  --gold-light:#EACC9F;   /* or clair / champagne */
  --olive:#34421F;        /* vert olive profond, élégant */
  --olive-dk:#2A3618;
  --terracotta:#C19435;   /* accent (repointé sur l'or) */
  --terracotta-dk:#A57E29;
  --promo:#C19435;
  --faq-bg:#FFFFFF;
  --taupe:#56554F;        /* footer */
  --taupe-dk:#4B4A45;
  --line:#E2DECF;
  --serif:'Inria Serif', Georgia, serif;
  --sans:'Plus Jakarta Sans', system-ui, sans-serif;
  --script:'Playwrite AU QLD','Playwrite BE VLG', cursive;
  --wrap:1200px;
  --radius:14px;

  /* Composantes RVB : permet de construire ombres et voiles sans jamais
     écrire une couleur en dur (règle 1 de l'agence). */
  --olive-rgb: 52 66 31;
  --gold-rgb:  193 148 53;

  /* Échelle d'élévation unique, au lieu d'une ombre inventée par bloc. */
  --shadow-1: 0 14px 34px rgb(var(--olive-rgb) / .08);
  --shadow-2: 0 24px 54px rgb(var(--olive-rgb) / .14);
  --shadow-3: 0 34px 74px rgb(var(--olive-rgb) / .20);

  /* Échelle de respiration verticale : 4 valeurs, au lieu des 11 paddings
     différents relevés à l'audit. */
  --sp-sm: 72px;
  --sp-md: 96px;
  --sp-lg: 128px;
  --sp-xl: 160px;

  /* Cadre élargi, réservé aux blocs éditoriaux qui doivent rompre la largeur. */
  --wrap-wide:1400px;
}
@media (max-width:900px){
  :root{ --sp-sm:52px; --sp-md:68px; --sp-lg:88px; --sp-xl:104px; }
}

*{box-sizing:border-box;}
/* overflow-x:clip (et pas hidden) : empêche le débordement horizontal SANS créer de
   conteneur de défilement qui casserait position:sticky (photo À propos qui suit le scroll). */
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; overflow-x:clip; }
body{
  margin:0; background:var(--cream); color:var(--body);
  font-family:var(--sans); font-size:17px; line-height:1.7; font-weight:400;
  overflow-x:clip; max-width:100vw;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img{max-width:100%; height:auto; display:block;}
a{color:inherit; text-decoration:none;}
button{font-family:inherit;}
.skip-link{position:absolute; left:-9999px;}
.skip-link:focus{left:16px; top:16px; background:#fff; padding:10px 16px; z-index:9999; border-radius:8px;}

.villa-wrap{max-width:var(--wrap); margin:0 auto; padding:0 32px; width:100%;}

.villa-h2{
  font-family:var(--serif); font-weight:400; color:var(--slate);
  font-size:clamp(27px,3.4vw,40px); line-height:1.14; letter-spacing:.2px; margin:0 0 22px;
}
.villa-lead{ color:var(--body); font-size:16px; line-height:1.75; max-width:46ch; }
.villa-lead p{margin:0 0 1em;}
.villa-script{ font-family:var(--script); font-weight:400; color:var(--slate-2); font-style:normal; }
.villa-kicker{ display:block; font-family:var(--sans); font-size:12.5px; font-weight:600; letter-spacing:2.4px; text-transform:uppercase; color:var(--gold); margin:0 0 14px; }

/* ---------- Boutons « Réservations » ---------- */
.btn-resa{
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--cream); color:var(--ink); border:1px solid rgba(63,62,57,.12);
  font-family:var(--sans); font-size:14px; font-weight:500; letter-spacing:.2px;
  padding:11px 22px; border-radius:40px; transition:all .25s ease; white-space:nowrap;
}
.btn-resa:hover{ background:var(--taupe); color:#fff; border-color:var(--taupe); }

/* ---------- Lien losange terracotta ---------- */
.villa-diamond-link{ display:inline-flex; align-items:center; gap:14px; color:var(--terracotta); margin-top:26px; font-size:15px; font-weight:500; }
.villa-diamond{ width:44px; height:44px; flex:0 0 44px; color:var(--terracotta); transition:transform .3s ease; }
.villa-diamond svg{width:100%; height:100%;}
.villa-diamond-link:hover .villa-diamond{ transform:translateX(4px); }
.villa-diamond-link__label{ position:relative; }

/* ============================================================
   HEADER
   ============================================================ */
.vh-header{ position:fixed; top:0; left:0; right:0; z-index:120; padding:18px 0; transition:background .35s ease, box-shadow .35s ease, padding .35s ease; }
.vh-header__inner{ max-width:1320px; margin:0 auto; padding:0 32px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.vh-burger{ display:inline-flex; align-items:center; gap:12px; background:none; border:0; cursor:pointer; color:#fff; padding:6px 4px; }
.vh-burger__icon{ display:inline-flex; flex-direction:column; gap:4px; width:22px; }
.vh-burger__icon span{ height:1.5px; background:currentColor; border-radius:2px; transition:.3s; }
.vh-burger__label{ font-size:13px; letter-spacing:2px; font-weight:500; }
.vh-brand{ display:inline-flex; align-items:center; gap:10px; color:#fff; }
.vh-brand__mark{ width:26px; height:32px; opacity:.9; }
.vh-brand__mark svg{width:100%; height:100%;}
.vh-brand__name{ font-family:var(--serif); font-size:21px; letter-spacing:.5px; }
.vh-resa{ background:rgba(255,253,242,.92); }

/* header scrolled state */
.vh-header.is-scrolled{ background:var(--cream); box-shadow:0 1px 0 rgba(63,62,57,.08); padding:12px 0; }
.vh-header.is-scrolled .vh-burger,
.vh-header.is-scrolled .vh-brand{ color:var(--ink); }
.vh-header.is-scrolled .vh-resa{ background:var(--taupe); color:#fff; border-color:var(--taupe); }

/* slide menu */
.vh-menu{ position:fixed; inset:0; z-index:200; visibility:hidden; pointer-events:none; }
.vh-menu.is-open{ visibility:visible; pointer-events:auto; }
.vh-menu__backdrop{ position:absolute; inset:0; background:rgba(20,20,18,.45); opacity:0; transition:opacity .4s ease; }
.vh-menu.is-open .vh-menu__backdrop{ opacity:1; }
.vh-menu__panel{ position:absolute; top:0; left:0; height:100%; width:min(420px,86vw); background:var(--cream); padding:90px 48px 48px; transform:translateX(-100%); transition:transform .42s cubic-bezier(.6,0,.2,1); display:flex; flex-direction:column; box-shadow:0 0 60px rgba(0,0,0,.2); }
.vh-menu.is-open .vh-menu__panel{ transform:translateX(0); }
.vh-menu__close{ position:absolute; top:28px; right:36px; background:none; border:0; font-size:34px; line-height:1; color:var(--ink); cursor:pointer; }
.vh-menu__list{ list-style:none; margin:0; padding:0; }
.vh-menu__list li{ border-bottom:1px solid var(--line); }
.vh-menu__list a{ display:block; padding:18px 0; font-family:var(--serif); font-size:24px; color:var(--ink); transition:color .2s, padding-left .25s; }
.vh-menu__list a:hover{ color:var(--terracotta); padding-left:8px; }
.vh-menu__resa{ margin-top:auto; align-self:flex-start; }

/* ============================================================
   HEADER V2 — navbar horizontale (logo gauche, menu centré, sans hamburger)
   ============================================================ */
.vh2{ position:fixed; top:0; left:0; right:0; z-index:120; padding:18px 0; transition:background .35s ease, box-shadow .35s ease, padding .35s ease; }
.vh2__inner{ max-width:1320px; margin:0 auto; padding:0 32px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:24px; }
.vh2__brand{ display:inline-flex; align-items:center; justify-self:start; }
.vh2__logo{ height:54px; width:auto; display:block; transition:height .35s ease; }
.vh2__logo--color{ display:none; }
/* swap : blanc au-dessus du hero sombre, couleur quand la navbar devient crème */
.vh2.is-scrolled .vh2__logo--white,.vh2--solid .vh2__logo--white{ display:none; }
.vh2.is-scrolled .vh2__logo--color,.vh2--solid .vh2__logo--color{ display:block; }
.vh2.is-scrolled .vh2__logo,.vh2--solid .vh2__logo{ height:46px; }
.vh2__nav{ justify-self:center; }
.vh2__menu{ list-style:none; margin:0; padding:0; display:flex; align-items:center; gap:32px; }
.vh2__menu li{ position:relative; }
.vh2__menu a{ font-family:var(--sans); font-size:14.5px; font-weight:500; letter-spacing:.2px; color:#fff; padding:6px 0; position:relative; white-space:nowrap; transition:color .25s; }
.vh2__menu a::after{ content:""; position:absolute; left:0; bottom:-2px; width:100%; height:1.5px; background:var(--gold); transform:scaleX(0); transform-origin:right; transition:transform .3s cubic-bezier(.16,1,.3,1); }
.vh2__menu a:hover::after,.vh2__menu .current-menu-item > a::after,.vh2__menu .current_page_item > a::after{ transform:scaleX(1); transform-origin:left; }
.vh2__cta{ justify-self:end; display:inline-flex; align-items:center; justify-content:center; font-family:var(--sans); font-size:14px; font-weight:600; letter-spacing:.3px; padding:11px 22px; border-radius:40px; border:1px solid rgba(255,255,255,.6); color:#fff; white-space:nowrap; transition:background .25s, color .25s, border-color .25s, transform .25s; }
.vh2__cta:hover{ background:var(--gold); border-color:var(--gold); color:#fff; transform:translateY(-2px); }

/* scrolled OU page sans hero -> navbar solide crème, texte sombre */
.vh2.is-scrolled,.vh2--solid{ background:var(--cream); box-shadow:0 1px 0 rgba(63,62,57,.08); padding:12px 0; }
.vh2.is-scrolled .vh2__brand,.vh2--solid .vh2__brand,
.vh2.is-scrolled .vh2__name,.vh2--solid .vh2__name{ color:var(--olive); }
.vh2.is-scrolled .vh2__menu a,.vh2--solid .vh2__menu a{ color:var(--ink); }
.vh2.is-scrolled .vh2__menu .current-menu-item > a,.vh2--solid .vh2__menu .current-menu-item > a,
.vh2.is-scrolled .vh2__menu .current_page_item > a,.vh2--solid .vh2__menu .current_page_item > a{ color:var(--gold); }
.vh2.is-scrolled .vh2__cta,.vh2--solid .vh2__cta{ border-color:var(--olive); color:var(--olive); }
.vh2.is-scrolled .vh2__cta:hover,.vh2--solid .vh2__cta:hover{ background:var(--gold); border-color:var(--gold); color:#fff; }

/* pages sans hero : décaler le contenu sous la navbar fixe */
body.no-hero{ padding-top:72px; }

/* ---------- Burger (mobile uniquement) ---------- */
.vh2__burger{ display:none; background:none; border:0; cursor:pointer; padding:10px; justify-self:end; }
.vh2__burger span{ display:block; width:24px; height:2px; background:#fff; border-radius:2px; margin:5px 0; transition:transform .3s cubic-bezier(.16,1,.3,1), opacity .3s; }
.vh2.is-scrolled .vh2__burger span,.vh2--solid .vh2__burger span,.vh2.is-open .vh2__burger span{ background:var(--olive); }
.vh2.is-open .vh2__burger span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.vh2.is-open .vh2__burger span:nth-child(2){ opacity:0; }
.vh2.is-open .vh2__burger span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* ---------- Panneau nav mobile ---------- */
.vh2__mnav{ display:none; }

@media (max-width:820px){
  .vh2{ padding:10px 0; }
  .vh2__inner{ grid-template-columns:auto 1fr auto; gap:12px; padding:0 16px; }
  .vh2__brand{ justify-self:start; }
  .vh2__logo,.vh2.is-scrolled .vh2__logo,.vh2--solid .vh2__logo{ height:44px; }
  .vh2__nav,.vh2__cta{ display:none; }           /* nav desktop + CTA cachés */
  .vh2__burger{ display:block; grid-column:3; }  /* burger visible */
  .vh2--solid,.vh2.is-scrolled{ padding:8px 0; }
  body.no-hero{ padding-top:66px; }

  /* menu ouvert : panneau plein écran sous la barre, fond crème */
  .vh2.is-open{ background:var(--cream); box-shadow:0 1px 0 rgba(63,62,57,.08); }
  .vh2.is-open .vh2__brand{ color:var(--olive); }
  .vh2.is-open .vh2__logo--white{ display:none; }
  .vh2.is-open .vh2__logo--color{ display:block; }
  .vh2__mnav{ display:block; position:fixed; top:64px; left:0; right:0; bottom:0; background:var(--cream); padding:26px 24px 40px; overflow-y:auto; opacity:0; transform:translateY(-8px); pointer-events:none; transition:opacity .3s ease, transform .35s cubic-bezier(.16,1,.3,1); }
  .vh2.is-open .vh2__mnav{ opacity:1; transform:none; pointer-events:auto; }
  .vh2__mmenu{ list-style:none; margin:0 0 26px; padding:0; }
  .vh2__mmenu li{ border-bottom:1px solid var(--line); }
  .vh2__mmenu a{ display:block; padding:17px 2px; font-family:var(--serif); font-size:21px; color:var(--ink); }
  .vh2__mmenu .current-menu-item > a,.vh2__mmenu .current_page_item > a{ color:var(--gold); }
  .vh2__mcta{ width:100%; background:var(--olive); color:#fff; }
  body.vh2-locked{ overflow:hidden; }
}

/* ============================================================
   HERO
   ============================================================ */
.villa-hero{ position:relative; min-height:100vh; display:flex; align-items:center; justify-content:center; text-align:center; overflow:hidden; }
.villa-hero__bg{ position:absolute; inset:0; z-index:0; }
.villa-hero__video,.villa-hero__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.villa-hero__veil{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(60,64,58,.55), rgba(60,64,58,.42) 45%, rgba(45,48,44,.6)); }
.villa-hero__content{ position:relative; z-index:2; color:#fff; padding:120px 24px; max-width:1000px; }
.villa-hero__eyebrow{ display:block; color:rgba(255,255,255,.92); font-size:clamp(18px,2vw,24px); margin-bottom:18px; }
.villa-hero__title{ font-family:var(--serif); font-weight:300; font-size:clamp(34px,5vw,64px); line-height:1.08; letter-spacing:.4px; margin:0; color:#fff; }
.villa-hero__line{ display:block; }
.villa-hero__sub{ margin:24px auto 0; max-width:54ch; color:rgba(255,255,255,.92); font-size:clamp(16px,1.5vw,19px); line-height:1.7; }
.villa-hero__actions{ margin-top:34px; display:flex; gap:16px; justify-content:center; flex-wrap:wrap; }

/* ---------- Boutons ---------- */
.villa-btn{ display:inline-flex; align-items:center; justify-content:center; font-family:var(--sans); font-size:15px; font-weight:500; letter-spacing:.3px; padding:15px 30px; border-radius:40px; transition:background .25s, color .25s, border-color .25s, transform .25s; border:1px solid transparent; }
.villa-btn--light{ background:rgba(255,255,255,.96); color:var(--ink); }
.villa-btn--light:hover{ background:var(--terracotta); color:#fff; transform:translateY(-2px); }
.villa-btn--solid{ background:var(--terracotta); color:#fff; }
.villa-btn--solid:hover{ background:var(--terracotta-dk); color:#fff; transform:translateY(-2px); }
.villa-promo{ position:absolute; right:32px; bottom:32px; z-index:3; background:rgba(40,42,38,.66); backdrop-filter:blur(6px); color:#fff; border-radius:12px; padding:14px 18px; display:flex; flex-direction:column; gap:2px; max-width:240px; text-align:left; border:1px solid rgba(255,255,255,.12); }
.villa-promo__label{ font-size:12px; letter-spacing:1.5px; text-transform:uppercase; color:var(--promo); font-weight:600; }
.villa-promo__text{ font-family:var(--serif); font-size:16px; }

/* ============================================================
   INTRO + PARTENAIRES
   ============================================================ */
.villa-intro{ position:relative; background:var(--white); padding:0 0 90px; }
.villa-intro__rule{ display:block; width:1px; height:110px; background:var(--line); margin:0 auto; transform:translateY(-1px); }
.villa-intro__grid{ display:grid; grid-template-columns:1.02fr .98fr; gap:64px; align-items:center; padding-top:80px; }
.villa-intro__copy{ max-width:560px; }
.villa-intro .villa-h2{ max-width:16ch; }
.villa-intro__media{ position:relative; border-radius:var(--radius); overflow:hidden; aspect-ratio:4/3.3; box-shadow:0 26px 54px rgba(60,55,45,.18); }
.villa-intro__media img{ width:100%; height:100%; object-fit:cover; }
.villa-intro__media::after{ content:""; position:absolute; inset:0; border:1px solid rgba(255,255,255,.35); border-radius:var(--radius); pointer-events:none; }

.villa-partners{ margin-top:70px; padding:30px 0 10px; overflow:hidden; }
.villa-partners__label{ text-align:center; font-size:clamp(16px,1.6vw,20px); color:var(--muted); margin:0 0 26px; }
.villa-partners__track{ display:flex; align-items:center; gap:70px; width:max-content; animation:villa-marquee 32s linear infinite; padding:0 35px; }
.villa-partners__item{ flex:0 0 auto; }
.villa-partners__logo{ height:48px; width:auto; object-fit:contain; filter:grayscale(1) opacity(.55); }
@keyframes villa-marquee{ from{transform:translateX(0);} to{transform:translateX(-50%);} }

/* ============================================================
   CARTES SERVICES
   ============================================================ */
.villa-services{ padding:70px 0 90px; background:var(--band); }
.villa-services__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:54px 44px; }
.villa-card{ display:block; color:inherit; }
.villa-card__media{ aspect-ratio:16/11; border-radius:var(--radius); overflow:hidden; background:var(--sand); }
.villa-card__media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s ease; }
.villa-card__title{ font-family:var(--serif); font-weight:400; color:var(--ink); font-size:24px; margin:22px 0 8px; }
.villa-card__text{ color:var(--muted); font-size:15px; margin:0; max-width:42ch; }
.villa-card--link{ cursor:pointer; }
.villa-card--link:hover .villa-card__media img{ transform:scale(1.04); }
.villa-card--link:hover .villa-card__title{ color:var(--terracotta); }

/* ============================================================
   HÉRITAGE
   ============================================================ */
.villa-heritage{ position:relative; background:var(--olive); padding:124px 0; overflow:hidden; }
.villa-heritage::before{ content:""; position:absolute; inset:0; background:url(../img/deco-gold.webp) center/cover; opacity:.16; pointer-events:none; }
.villa-heritage__inner{ position:relative; z-index:1; max-width:680px; margin:0 auto; text-align:center; }
.villa-heritage__crest img{ width:64px; height:auto; margin:0 auto 26px; opacity:.85; }
.villa-heritage .villa-h2{ margin-bottom:20px; color:#fff; }
.villa-heritage .villa-lead{ margin:0 auto; color:rgba(255,255,255,.86); }
.villa-heritage .villa-diamond-link{ justify-content:center; color:var(--gold-light); }
.villa-heritage .villa-diamond{ color:var(--gold-light); }
.villa-heritage .villa-kicker{ color:var(--gold-light); }

/* ============================================================
   ÉQUIPEMENTS + COLLAGE
   ============================================================ */
.villa-amen{ background:var(--band); padding:116px 0; }
.villa-amen__grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.villa-amen__collage{ position:relative; aspect-ratio:4/4.4; }
.villa-amen__photo{ position:absolute; border-radius:var(--radius); overflow:hidden; box-shadow:0 26px 50px rgba(60,55,45,.16); }
.villa-amen__photo img{ width:100%; height:100%; object-fit:cover; }
.villa-amen__photo--main{ left:0; bottom:0; width:74%; aspect-ratio:3/3.4; z-index:1; }
.villa-amen__photo--vintage{ right:0; top:0; width:54%; aspect-ratio:4/3; z-index:2; transform:rotate(2.5deg); border:6px solid #fff; }
.villa-amen__eyebrow{ display:block; font-size:18px; margin-bottom:14px; }
.villa-amen__list{ list-style:none; margin:26px 0 0; padding:0; display:grid; grid-template-columns:repeat(3,1fr); gap:26px 18px; }
.villa-amen__item{ display:flex; flex-direction:column; align-items:flex-start; gap:9px; font-size:13.5px; color:var(--muted); }
.villa-amen__item i{ font-size:22px; color:var(--slate-2); }

/* ============================================================
   OFFRES
   ============================================================ */
.villa-offers{ background:var(--white); padding:0 0 96px; }
.villa-offers__grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.villa-offers__media{ aspect-ratio:5/5.2; border-radius:var(--radius); overflow:hidden; background:var(--sand); margin-top:-60px; box-shadow:0 26px 50px rgba(60,55,45,.14); }
.villa-offers__media img{ width:100%; height:100%; object-fit:cover; }
.villa-offers__copy .villa-h2{ max-width:12ch; }

/* ============================================================
   TÉMOIGNAGES
   ============================================================ */
.villa-testi{ background:var(--cream); padding:110px 0 120px; text-align:center; }
.villa-testi__quote{ font-family:var(--serif); font-size:90px; line-height:.6; color:var(--ink); display:block; margin-bottom:30px; }
.villa-testi__viewport{ overflow:hidden; max-width:980px; margin:0 auto; }
.villa-testi__track{ display:flex; transition:transform .6s cubic-bezier(.6,0,.2,1); }
.villa-testi__slide{ flex:0 0 100%; margin:0; padding:0 20px; }
.villa-testi__text{ font-size:clamp(22px,2.7vw,34px); line-height:1.5; color:var(--body); margin:0 0 34px; }
.villa-testi__meta{ display:inline-flex; align-items:center; gap:26px; }
.villa-testi__stars{ color:#D9B25A; font-size:14px; letter-spacing:3px; }
.villa-testi__name{ font-size:15px; color:var(--body); }
.villa-testi__dots{ display:flex; justify-content:center; gap:10px; margin-top:42px; }
.villa-testi__dots button{ width:8px; height:8px; border-radius:50%; border:0; background:var(--sand); cursor:pointer; padding:0; transition:background .25s; }
.villa-testi__dots button.is-active{ background:var(--slate-2); }

/* ============================================================
   GALERIE
   ============================================================ */
.villa-gallery{ background:var(--band); padding:116px 0 110px; }
.villa-gallery__title{ text-align:center; font-size:clamp(28px,3.8vw,46px); margin-bottom:54px; }
.villa-gallery__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.villa-gallery__item{ margin:0; }
.villa-gallery__media{ aspect-ratio:4/3; border-radius:var(--radius); overflow:hidden; background:var(--sand); box-shadow:0 18px 38px rgba(60,55,45,.12); }
.villa-gallery__media img{ width:100%; height:100%; object-fit:cover; transition:transform .7s ease; }
.villa-gallery__item:hover .villa-gallery__media img{ transform:scale(1.06); }
.villa-gallery__cap{ font-size:14px; color:var(--body); margin-top:14px; padding-left:2px; }

/* ============================================================
   TÉMOIGNAGES — carrousel défilant 2 lignes opposées
   ============================================================ */
.villa-testi2{ background:var(--white); padding:104px 0 110px; overflow:hidden; }
.villa-testi2__title{ text-align:center; margin-bottom:50px; }
.villa-testi2__rows{ display:flex; flex-direction:column; gap:24px; }
.villa-testi2__track{ display:flex; gap:24px; width:max-content; will-change:transform; }
.villa-testi2__track--rtl{ animation:villa-testi-rtl 52s linear infinite; }
.villa-testi2__track--ltr{ animation:villa-testi-ltr 52s linear infinite; }
.villa-testi2:hover .villa-testi2__track{ animation-play-state:paused; }
@keyframes villa-testi-rtl{ from{transform:translateX(0);} to{transform:translateX(-50%);} }
@keyframes villa-testi-ltr{ from{transform:translateX(-50%);} to{transform:translateX(0);} }
.villa-testi2__card{ flex:0 0 380px; max-width:82vw; background:var(--band); border:1px solid var(--line); border-radius:18px; padding:26px 30px 24px; margin:0; box-shadow:0 12px 30px rgba(60,55,45,.08); }
.villa-testi2__quote{ font-family:var(--serif); font-size:52px; line-height:.1; color:var(--gold); display:block; height:22px; }
.villa-testi2__text{ margin:0 0 16px; font-size:15.5px; line-height:1.7; color:var(--body); }
.villa-testi2__by{ display:flex; flex-direction:column; gap:1px; }
.villa-testi2__by strong{ font-family:var(--serif); font-weight:400; font-size:17px; color:var(--ink); }
.villa-testi2__by span{ font-size:13px; color:var(--muted); }

/* ============================================================
   FAQ
   ============================================================ */
.villa-faq{ background:var(--white); padding:50px 0 120px; }
.villa-faq__title{ text-align:center; font-size:clamp(28px,4vw,46px); margin-bottom:54px; }
.villa-faq__list{ max-width:880px; margin:0 auto; display:flex; flex-direction:column; gap:22px; }
.villa-faq__item{ background:var(--band); border:1px solid transparent; border-radius:18px; padding:6px 32px; transition:box-shadow .25s, border-color .25s, background .25s; }
.villa-faq__item[open]{ background:#fff; border-color:var(--line); box-shadow:0 14px 34px rgba(80,75,60,.10); }
.villa-faq__q{ list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:24px 0; font-family:var(--serif); font-size:21px; color:var(--ink); }
.villa-faq__q::-webkit-details-marker{ display:none; }
.villa-faq__chevron{ flex:0 0 auto; color:var(--slate-2); transition:transform .3s ease; }
.villa-faq__item[open] .villa-faq__chevron{ transform:rotate(180deg); }
.villa-faq__a{ color:var(--body); font-size:15.5px; padding:0 0 26px; max-width:62ch; }

/* ============================================================
   APPEL FINAL
   ============================================================ */
.villa-cta{ position:relative; background:linear-gradient(rgba(36,46,21,.80), rgba(42,54,24,.86)), url(../img/deco-gold.webp) center/cover; padding:118px 0 124px; text-align:center; overflow:hidden; }
.villa-cta::before{ content:""; position:absolute; inset:0; background:radial-gradient(120% 90% at 50% 0%, rgba(193,148,53,.22), transparent 60%); pointer-events:none; }
.villa-cta__inner{ position:relative; z-index:1; max-width:720px; }
.villa-cta__title{ font-family:var(--serif); font-weight:300; font-size:clamp(32px,4.6vw,56px); line-height:1.12; color:#fff; margin:0 0 18px; }
.villa-cta__text{ color:rgba(255,255,255,.82); font-size:17px; line-height:1.7; margin:0 auto 34px; max-width:46ch; }

/* ============================================================
   FOOTER
   ============================================================ */
.vf{ background:var(--olive-dk); color:rgba(255,255,255,.82); }
.vf__inner{ max-width:var(--wrap); margin:0 auto; padding:70px 32px 40px; }
.vf__brand{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:12px; padding-bottom:46px; border-bottom:1px solid rgba(255,255,255,.14); }
.vf__logo{ height:74px; width:auto; }
.vf__cols{ display:grid; grid-template-columns:1.1fr 1.2fr 1fr 1.2fr 1.2fr; gap:36px 28px; padding-top:46px; }
/* Moins de colonnes de pages (une colonne vide n'est pas affichée) : la grille suit. */
.vf__cols--4{ grid-template-columns:1.1fr 1.2fr 1fr 1.2fr; }
.vf__cols--3{ grid-template-columns:1.1fr 1.2fr 1.2fr; }
.vf__coltitle{ font-family:var(--sans); font-size:12.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--gold-light); margin:0 0 16px; font-weight:600; }
.vf__menu{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; }
.vf__menu a{ font-family:var(--sans); font-size:15px; color:rgba(255,255,255,.82); transition:color .2s, padding-left .2s; }
.vf__menu a:hover{ color:var(--gold-light); padding-left:3px; }
.vf__contact h3{ font-family:var(--sans); font-size:12.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--gold-light); margin:0 0 16px; font-weight:600; }
@media (max-width:980px){ .vf__cols{ grid-template-columns:repeat(2,1fr); gap:34px; } }
@media (max-width:560px){ .vf__cols{ grid-template-columns:1fr; } }
.vf__contact a,.vf__contact p{ display:block; color:rgba(255,255,255,.82); margin:0 0 8px; font-size:15px; }
.vf__contact a:hover{ color:#fff; }
.vf__social{ display:flex; gap:14px; margin-top:14px; font-size:18px; }
.vf__bottom{ max-width:var(--wrap); margin:0 auto; padding:22px 32px; border-top:1px solid rgba(255,255,255,.12); display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; font-size:13px; color:rgba(255,255,255,.6); }
.vf__bottom a{ color:rgba(255,255,255,.8); text-decoration:underline; }

/* ============================================================
   CONTACT
   ============================================================ */
.villa-chero{ position:relative; min-height:74vh; display:flex; align-items:center; justify-content:center; text-align:center; overflow:hidden; }
.villa-chero--page{ min-height:52vh; background:var(--taupe); }
.villa-chero .villa-hero__title{ font-size:clamp(40px,6vw,72px); }
.villa-cinfo{ background:var(--cream); padding:46px 0; border-bottom:1px solid var(--line); }
.villa-cinfo__grid{ display:flex; justify-content:space-between; gap:30px; flex-wrap:wrap; }
.villa-cinfo__item h3{ font-size:12px; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted); margin:0 0 8px; font-weight:600; }
.villa-cinfo__item p,.villa-cinfo__item a{ font-size:15px; color:var(--body); margin:0; }
.villa-cinfo__social{ display:flex; gap:14px; align-items:center; font-size:18px; color:var(--slate); margin-left:auto; }
.villa-form-sec{ background:var(--cream-2); padding:80px 0 110px; }
.villa-form-sec__title{ text-align:center; margin-bottom:46px; font-size:clamp(34px,5vw,52px); }
.villa-form{ max-width:920px; margin:0 auto; }
.villa-form__row{ display:grid; grid-template-columns:1fr 1fr; gap:30px; margin-bottom:30px; }
.villa-form__field{ display:flex; flex-direction:column; gap:10px; }
.villa-form__field span{ font-size:15px; color:var(--body); }
.villa-form__field--full{ margin-bottom:30px; }
.villa-form input,.villa-form textarea{ font-family:var(--sans); font-size:15px; color:var(--ink); background:#fff; border:1px solid var(--line); border-radius:8px; padding:14px 16px; transition:border-color .2s; }
.villa-form input:focus,.villa-form textarea:focus{ outline:none; border-color:var(--slate-2); }
.villa-form__submit{ display:block; width:100%; background:var(--taupe); color:#fff; border:0; border-radius:40px; padding:18px; font-size:16px; cursor:pointer; transition:background .25s; }
.villa-form__submit:hover{ background:var(--taupe-dk); }
.villa-form__notice{ max-width:920px; margin:0 auto 26px; padding:14px 20px; border-radius:10px; text-align:center; }
.villa-form__notice--ok{ background:#E7F1E7; color:#37633c; }
.villa-form__notice--err{ background:#F6E4E2; color:#8a3b34; }

/* page générique */
.villa-page{ padding:70px 0 90px; background:var(--cream); }
.villa-richtext{ max-width:760px; }
.villa-richtext h2{ font-family:var(--serif); color:var(--slate); }
.villa-richtext a{ color:var(--terracotta); text-decoration:underline; }

/* ============================================================
   ANIMATIONS (reveal)
   ============================================================ */
.reveal{ opacity:0; transform:translateY(32px); transition:opacity .9s cubic-bezier(.22,.61,.36,1), transform .9s cubic-bezier(.22,.61,.36,1); }
.reveal.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ .reveal{opacity:1!important; transform:none!important; transition:none;} .villa-partners__track,.villa-testi2__track{animation:none!important;} }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:900px){
  .villa-services__grid{ gap:40px 30px; }
  .villa-intro__grid{ grid-template-columns:1fr; gap:38px; padding-top:64px; }
  .villa-intro__copy{ max-width:none; }
  .villa-intro__media{ aspect-ratio:16/10; }
  .villa-amen__grid,.villa-offers__grid{ grid-template-columns:1fr; gap:40px; }
  .villa-offers__media{ margin-top:0; }
  .villa-amen__list{ grid-template-columns:repeat(4,1fr); }
  .villa-offers__copy{ order:2; }
  .villa-gallery__grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:720px){
  body{ font-size:16px; }
  .villa-wrap{ padding:0 20px; }
  .vh-header__inner{ padding:0 18px; }
  .vh-brand__name{ font-size:18px; }
  .vh-burger__label{ display:none; }
  .villa-hero__content{ padding:90px 18px; }
  .villa-promo{ right:16px; bottom:16px; left:16px; max-width:none; }
  .villa-services__grid{ grid-template-columns:1fr; gap:34px; }
  .villa-amen__list{ grid-template-columns:repeat(3,1fr); gap:20px 12px; }
  .villa-amen__collage{ aspect-ratio:4/4; }
  .villa-heritage,.villa-amen,.villa-gallery,.villa-cta,.villa-testi2{ padding:64px 0; }
  .villa-testi2__card{ flex-basis:300px; }
  .villa-gallery__grid{ gap:14px; }
  .villa-form__row{ grid-template-columns:1fr; gap:22px; margin-bottom:22px; }
  .villa-cinfo__grid{ gap:22px; }
  .villa-cinfo__social{ margin-left:0; }
  .vf__cols{ gap:32px; }
}

/* ==========================================================================
   Bandeau cookies (plugin youvanna-cookies) : couleurs de la charte + version
   mobile plus compacte. Le plugin lit --color-primary-dark, il suffit de le
   définir ici pour remplacer le bordeaux par défaut.
   ========================================================================== */
:root{
  --color-primary:var(--slate);
  --color-primary-dark:var(--slate);
}
.yv-cb .yv-cb-btn--accept:hover{ background:var(--gold); border-color:var(--gold); color:#fff; opacity:1; }
.yv-cb .yv-cb-link{ color:var(--slate); }
@media(max-width:640px){
  .yv-cb .yv-cb-inner{ padding:14px; gap:11px; border-radius:10px; }
  .yv-cb .yv-cb-title{ font-size:14px; }
  .yv-cb .yv-cb-desc{ font-size:12.5px; line-height:1.45; }
  .yv-cb .yv-cb-btn{ padding:9px 14px; font-size:13px; }
}

/* Icônes de réseaux sociaux en SVG intégré (remplacent Font Awesome Brands).
   width/height à 1em : elles suivent le font-size du conteneur, exactement
   comme le faisait la police d'icônes. */
.villa-ico{ display:inline-block; vertical-align:-0.125em; }
