/* =========================================================
   Résidence L'Oliveraie — feuille de style
   Palette : olive / saphir / sable
   ========================================================= */
:root{
  --olive-900:#2b3320;
  --olive-700:#3f4d2c;
  --olive-600:#556b2f;
  --olive-500:#6b8240;
  --leaf:#84a23f;
  --leaf-soft:#e7edd6;
  --saphir-700:#0e5e6b;
  --saphir-600:#13788a;
  --saphir-500:#1c93a6;
  --sand-50:#faf6ee;
  --sand-100:#f4ede0;
  --sand-200:#e9dec9;
  --terra:#c2703d;
  --terra-dark:#a85a2c;
  --ink:#262219;
  --ink-soft:#5b574c;
  --white:#ffffff;
  --radius:18px;
  --radius-sm:12px;
  --shadow-sm:0 4px 14px rgba(43,51,32,.08);
  --shadow:0 18px 50px -18px rgba(43,51,32,.35);
  --shadow-lg:0 40px 80px -30px rgba(14,94,107,.45);
  --maxw:1200px;
  --ease:cubic-bezier(.22,1,.36,1);
  --font-serif:"Fraunces",Georgia,"Times New Roman",serif;
  --font-sans:"Plus Jakarta Sans",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  font-family:var(--font-sans);
  color:var(--ink);
  background:var(--sand-50);
  line-height:1.65;
  font-weight:400;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
sup{font-size:.6em}

.container{width:min(100% - 2.5rem,var(--maxw));margin-inline:auto}

/* ---------- Typographie ---------- */
.h2{
  font-family:var(--font-serif);
  font-weight:600;
  font-size:clamp(1.9rem,4vw,3rem);
  line-height:1.08;
  letter-spacing:-.01em;
  color:var(--olive-900);
}
.h2--light{color:#fff}
.kicker{
  font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  color:var(--terra);margin-bottom:.9rem;
}
.kicker--light{color:#e9c9a6}
.lead{font-size:1.12rem;color:var(--ink-soft);margin-top:1rem;max-width:56ch}
.lead--light{color:rgba(255,255,255,.78)}
.lead.center{margin-inline:auto;text-align:center}
em{font-style:italic}

/* ---------- Boutons ---------- */
.btn{
  --pad:.8rem 1.4rem;
  display:inline-flex;align-items:center;justify-content:center;
  padding:var(--pad);border-radius:999px;font-weight:600;font-size:.95rem;
  cursor:pointer;border:1.5px solid transparent;transition:.35s var(--ease);
  font-family:var(--font-sans);white-space:nowrap;
}
.btn--lg{--pad:1rem 1.9rem;font-size:1rem}
.btn--solid{background:var(--terra);color:#fff;box-shadow:0 10px 24px -10px rgba(194,112,61,.8)}
.btn--solid:hover{background:var(--terra-dark);transform:translateY(-2px);box-shadow:0 16px 30px -10px rgba(194,112,61,.9)}
.btn--soft{background:var(--sand-200);color:var(--olive-900)}
.btn--soft:hover{background:var(--olive-600);color:#fff;transform:translateY(-2px)}
.btn--ghost{background:transparent;border-color:rgba(255,255,255,.6);color:#fff}
.btn--ghost:hover{background:#fff;color:var(--olive-900);transform:translateY(-2px)}
.btn--ghost-light{border-color:rgba(255,255,255,.5);color:#fff}
.btn--ghost-light:hover{background:rgba(255,255,255,.12)}

/* ---------- Loader ---------- */
.loader{
  position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.8rem;background:var(--olive-900);
  color:var(--sand-100);transition:opacity .7s ease,visibility .7s ease;
}
.loader span{font-family:var(--font-serif);font-size:1.4rem;letter-spacing:.05em;opacity:.85}
.loader__leaf{animation:leaf 1.6s var(--ease) infinite}
@keyframes leaf{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-8px) rotate(4deg)}}
body.loaded .loader{opacity:0;visibility:hidden}

/* ---------- Header ---------- */
.header{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  transition:.4s var(--ease);
}
.header__inner{
  width:min(100% - 2.5rem,var(--maxw));margin-inline:auto;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.1rem 0;transition:.4s var(--ease);
}
.header.scrolled{background:rgba(250,246,238,.86);backdrop-filter:blur(14px);box-shadow:var(--shadow-sm)}
.header.scrolled .header__inner{padding:.6rem 0}
.brand{display:flex;align-items:center;gap:.7rem}
.brand__logo{width:56px;height:56px;object-fit:contain;background:#fff;border-radius:50%;padding:7px;box-shadow:0 6px 16px -6px rgba(0,0,0,.35);transition:.4s var(--ease)}
.header.scrolled .brand__logo{width:46px;height:46px}
.brand__text{display:flex;flex-direction:column;font-family:var(--font-serif);font-weight:600;font-size:1.3rem;line-height:1;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.35)}
.brand__text small{font-family:var(--font-sans);font-weight:500;font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;opacity:.85;margin-top:.28rem}
.header.scrolled .brand__text{color:var(--olive-900);text-shadow:none}
.header.scrolled .brand__text small{color:var(--ink-soft)}

.nav{display:flex;align-items:center;gap:.4rem}
.nav>a{
  padding:.55rem .85rem;border-radius:999px;font-weight:500;font-size:.95rem;color:#fff;
  text-shadow:0 2px 10px rgba(0,0,0,.35);transition:.25s var(--ease);position:relative;
}
.header.scrolled .nav>a{color:var(--ink);text-shadow:none}
.nav>a:not(.nav__cta):hover{background:rgba(255,255,255,.16)}
.header.scrolled .nav>a:not(.nav__cta):hover{background:var(--sand-200)}
.nav__cta{margin-left:.5rem}

.header__tools{display:flex;align-items:center;gap:.4rem}
.icon-btn{
  width:42px;height:42px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:rgba(255,255,255,.15);color:#fff;border:none;transition:.3s var(--ease);
}
.header.scrolled .icon-btn{background:var(--sand-200);color:var(--olive-900)}
.icon-btn:hover{transform:translateY(-2px)}
.icon-btn .ic-sound-on{display:none}
.icon-btn.on .ic-sound-on{display:block}
.icon-btn.on .ic-sound-off{display:none}
.icon-btn.on{background:var(--terra);color:#fff}

.burger{display:none;flex-direction:column;gap:5px;width:42px;height:42px;border:none;background:transparent;cursor:pointer;padding:10px}
.burger span{height:2px;width:100%;background:#fff;border-radius:2px;transition:.3s var(--ease)}
.header.scrolled .burger span{background:var(--olive-900)}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;color:#fff}
.hero__bg{
  position:absolute;inset:-3% ;background-size:cover;background-position:center;
  animation:kenburns 22s ease-in-out infinite alternate;will-change:transform;
}
@keyframes kenburns{from{transform:scale(1.04) translate(0,0)}to{transform:scale(1.16) translate(-1.5%,-1.5%)}}
.hero__veil{position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(24,32,16,.62) 0%,rgba(24,32,16,.30) 40%,rgba(24,32,16,.46) 72%,rgba(16,52,52,.82) 100%),
  radial-gradient(130% 90% at 22% 52%,rgba(0,0,0,.42),transparent 58%);}
.hero__content{position:relative;width:min(100% - 2.5rem,var(--maxw));margin-inline:auto;padding:7rem 0 5rem}
.hero__eyebrow{font-weight:700;letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;color:#f3d9b6;text-shadow:0 2px 14px rgba(0,0,0,.5)}
.hero__title{font-family:var(--font-serif);font-weight:600;font-size:clamp(2.8rem,7vw,5.4rem);line-height:1.02;letter-spacing:-.02em;margin:1rem 0;text-shadow:0 2px 8px rgba(0,0,0,.55),0 10px 44px rgba(0,0,0,.6)}
.hero__title em{color:#f3c58a}
.hero__lead{max-width:46ch;font-size:clamp(1.05rem,1.6vw,1.25rem);color:rgba(255,255,255,.94);text-shadow:0 2px 6px rgba(0,0,0,.5),0 2px 22px rgba(0,0,0,.5)}
.hero__actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}
.hero__facts{display:flex;flex-wrap:wrap;gap:2.5rem;margin-top:3.5rem}
.hero__facts div{display:flex;flex-direction:column}
.hero__facts b{font-family:var(--font-serif);font-size:2rem;line-height:1;color:#fff}
.hero__facts span{font-size:.85rem;opacity:.8;margin-top:.3rem;letter-spacing:.02em}
.hero__scroll{position:absolute;left:50%;bottom:1.6rem;transform:translateX(-50%);width:26px;height:42px;border:2px solid rgba(255,255,255,.6);border-radius:14px;display:grid;justify-items:center;padding-top:7px}
.hero__scroll span{width:4px;height:8px;background:#fff;border-radius:2px;animation:scrolldot 1.6s infinite}
@keyframes scrolldot{0%{opacity:0;transform:translateY(-4px)}40%{opacity:1}80%{opacity:0;transform:translateY(10px)}}

/* ---------- Sections ---------- */
.section{padding:clamp(4rem,9vw,7.5rem) 0;position:relative}
.section--alt{background:var(--sand-100)}
.section--dark{background:linear-gradient(160deg,var(--olive-900),var(--saphir-700));color:#fff}
.section__head{text-align:center;max-width:720px;margin-inline:auto;margin-bottom:3.5rem}
.section__head .kicker{display:block}
.sprig{display:block;width:128px;height:26px;margin:1.1rem auto 0;color:var(--leaf);opacity:.95}
.sprig--left{margin:1rem 0 0}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
.grid-2--contact{align-items:stretch}

/* Stats / ticks */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:2.2rem 0}
.stat{background:#fff;border:1px solid var(--sand-200);border-radius:var(--radius-sm);padding:1.1rem .6rem;text-align:center;box-shadow:var(--shadow-sm)}
.stat b{display:block;font-family:var(--font-serif);font-size:2rem;color:var(--olive-600);line-height:1}
.stat span{font-size:.78rem;color:var(--ink-soft);margin-top:.25rem;display:block}
.ticks{list-style:none;display:grid;gap:.7rem;margin-top:1rem}
.ticks li{position:relative;padding-left:2rem;color:var(--ink-soft)}
.ticks li::before{content:"";position:absolute;left:0;top:.45em;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--olive-600);
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/></svg>") center/72% no-repeat;
          mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/></svg>") center/72% no-repeat;}

/* media stack */
.media-stack{position:relative}
.media-stack__main{width:100%;border-radius:var(--radius);box-shadow:var(--shadow);aspect-ratio:4/3.4;object-fit:cover}
.media-stack__float{position:absolute;right:-1.5rem;bottom:-1.8rem;width:48%;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);border:5px solid #fff;aspect-ratio:4/3;object-fit:cover}
.media-stack__badge{position:absolute;left:-1rem;top:1.4rem;background:#fff;border-radius:var(--radius-sm);padding:.7rem 1.1rem;box-shadow:var(--shadow);display:flex;flex-direction:column}
.media-stack__badge b{font-family:var(--font-serif);color:var(--terra);font-size:1.05rem}
.media-stack__badge span{font-size:.72rem;color:var(--ink-soft);letter-spacing:.04em}

/* ---------- Bannière ---------- */
.banner{position:relative;height:46vh;min-height:340px;display:grid;place-items:center;overflow:hidden}
.banner__img{position:absolute;inset:0;background-size:cover;background-position:center;background-attachment:fixed}
.banner::after{content:"";position:absolute;inset:0;background:rgba(14,60,67,.5)}
.banner__quote{position:relative;z-index:1;color:#fff;font-family:var(--font-serif);font-style:italic;font-size:clamp(1.4rem,3.2vw,2.4rem);text-align:center;max-width:24ch;text-shadow:0 4px 30px rgba(0,0,0,.4);padding:0 1.5rem}
@media (hover:none){.banner__img{background-attachment:scroll}}

/* ---------- Appartements ---------- */
.apparts{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem}
.appart{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--sand-200);transition:.4s var(--ease);display:flex;flex-direction:column}
.appart:hover{transform:translateY(-8px);box-shadow:var(--shadow)}
.appart--featured{transform:scale(1.03);border-color:var(--terra);box-shadow:var(--shadow)}
.appart--featured:hover{transform:scale(1.03) translateY(-8px)}
.appart__media{position:relative;aspect-ratio:4/3;overflow:hidden}
.appart__media img{width:100%;height:100%;object-fit:cover;transition:.6s var(--ease)}
.appart:hover .appart__media img{transform:scale(1.07)}
.appart__tag{position:absolute;top:.9rem;left:.9rem;background:rgba(43,51,32,.82);color:#fff;font-size:.72rem;font-weight:600;padding:.32rem .7rem;border-radius:999px;letter-spacing:.03em}
.appart--featured .appart__tag{background:var(--terra)}
.appart__body{padding:1.5rem;display:flex;flex-direction:column;flex:1}
.appart__top{display:flex;align-items:baseline;justify-content:space-between}
.appart__top h3{font-family:var(--font-serif);font-size:2rem;color:var(--olive-900)}
.appart__area{font-weight:700;color:var(--olive-600)}
.appart__body p{color:var(--ink-soft);font-size:.95rem;margin:.6rem 0 1rem}
.appart__specs{list-style:none;display:grid;gap:.5rem;margin-bottom:1.4rem}
.appart__specs li{position:relative;padding-left:1.5rem;font-size:.9rem}
.appart__specs li::before{content:"";position:absolute;left:0;top:.5em;width:.5rem;height:.5rem;border-radius:50%;background:var(--olive-500)}
.appart__price{margin-top:auto;padding:.55rem 0 .8rem;font-size:.9rem;color:var(--ink-soft);border-top:1px dashed var(--sand-200)}
.appart__price b{font-family:var(--font-serif);font-size:1.25rem;color:var(--terra)}
.appart .btn{margin-top:0}

/* ---------- Galerie ---------- */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;gap:1rem}
.gallery__item{position:relative;overflow:hidden;border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-sm);margin:0}
.gallery__item img{width:100%;height:100%;object-fit:cover;transition:.6s var(--ease)}
.gallery__item--tall{grid-row:span 2}
.gallery__item--wide{grid-column:span 2}
.gallery__item:hover img{transform:scale(1.08)}
.gallery__item figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.4rem .9rem .7rem;color:#fff;font-size:.85rem;font-weight:500;background:linear-gradient(transparent,rgba(0,0,0,.65));opacity:0;transform:translateY(8px);transition:.35s var(--ease)}
.gallery__item:hover figcaption{opacity:1;transform:none}

/* ---------- Features ---------- */
.features{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem}
.feature{background:#fff;border:1px solid var(--sand-200);border-radius:var(--radius);padding:1.6rem 1.4rem;transition:.35s var(--ease)}
.feature:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:transparent}
.feature__ic{font-size:1.8rem;display:inline-grid;place-items:center;width:3.2rem;height:3.2rem;border-radius:14px;background:var(--sand-100);margin-bottom:1rem}
.feature h3{font-family:var(--font-serif);font-size:1.2rem;color:var(--olive-900);margin-bottom:.4rem}
.feature p{font-size:.9rem;color:var(--ink-soft)}

/* ---------- Réserver / Booking ---------- */
.booking{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:1.8rem;align-items:start}
.booking__main{display:flex;flex-direction:column;gap:1.1rem}
.calendar,.bform{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.6rem}
.calendar__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.calendar__head h3{font-family:var(--font-serif);font-size:1.3rem;color:var(--olive-900);text-transform:capitalize}
.cal-nav{width:40px;height:40px;border-radius:50%;border:1px solid var(--sand-200);background:var(--sand-50);font-size:1.4rem;color:var(--olive-700);cursor:pointer;transition:.25s var(--ease);line-height:1}
.cal-nav:hover{background:var(--olive-600);color:#fff}
.cal-nav:disabled{opacity:.3;cursor:not-allowed}
.calendar__dows{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem;margin-bottom:.4rem}
.calendar__dows span{text-align:center;font-size:.72rem;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}
.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}
.cal-day{aspect-ratio:1;border:none;background:var(--sand-50);border-radius:10px;font-family:var(--font-sans);font-size:.92rem;font-weight:500;color:var(--ink);cursor:pointer;transition:.18s var(--ease);position:relative}
.cal-day:hover:not(:disabled){background:var(--olive-500);color:#fff;transform:scale(1.06)}
.cal-day.empty{background:transparent;cursor:default}
.cal-day.past,.cal-day.busy{color:#c4bdac;cursor:not-allowed;text-decoration:line-through;background:repeating-linear-gradient(45deg,var(--sand-100),var(--sand-100) 4px,var(--sand-200) 4px,var(--sand-200) 8px)}
.cal-day.busy:hover{transform:none;background:repeating-linear-gradient(45deg,var(--sand-100),var(--sand-100) 4px,var(--sand-200) 4px,var(--sand-200) 8px);color:#c4bdac}
.cal-day.today{box-shadow:inset 0 0 0 2px var(--olive-500)}
.cal-day.in-range{background:var(--leaf-soft);color:var(--olive-900);border-radius:0}
.cal-day.sel-start,.cal-day.sel-end{background:var(--olive-600);color:#fff;transform:none}
.cal-day.sel-start{border-radius:10px 0 0 10px}
.cal-day.sel-end{border-radius:0 10px 10px 0}
.cal-day.sel-start.sel-end{border-radius:10px}
.calendar__legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.1rem;font-size:.78rem;color:var(--ink-soft)}
.calendar__legend span{display:inline-flex;align-items:center;gap:.4rem}
.lg{width:.9rem;height:.9rem;border-radius:4px;display:inline-block}
.lg--free{background:var(--sand-50);border:1px solid var(--sand-200)}
.lg--sel{background:var(--olive-600)}
.lg--busy{background:repeating-linear-gradient(45deg,var(--sand-100),var(--sand-100) 3px,var(--sand-200) 3px,var(--sand-200) 6px)}
.calendar__note{font-size:.72rem;color:var(--ink-soft);margin-top:.7rem;font-style:italic}

.bform__dates{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.8rem;background:var(--sand-50);border:1px dashed var(--sand-200);border-radius:var(--radius-sm);padding:1rem;margin-bottom:1.2rem;position:relative}
.bform__date{text-align:center}
.bform__date-lbl{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-weight:600}
.bform__date strong{font-family:var(--font-serif);font-size:1.15rem;color:var(--olive-900)}
.bform__arrow{color:var(--terra);font-size:1.2rem}
.bform__nights{position:absolute;top:-.7rem;left:50%;transform:translateX(-50%);background:var(--terra);color:#fff;font-size:.72rem;font-weight:600;padding:.15rem .7rem;border-radius:999px;opacity:0;transition:.3s var(--ease)}
.bform__nights.show{opacity:1}
.bform__row{margin-bottom:1rem}
.bform__row--2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.bform label{display:flex;flex-direction:column;font-size:.82rem;font-weight:600;color:var(--olive-900);gap:.4rem}
.bform input,.bform select,.bform textarea{
  font-family:var(--font-sans);font-size:.95rem;font-weight:400;color:var(--ink);
  border:1.5px solid var(--sand-200);border-radius:10px;padding:.7rem .8rem;background:var(--sand-50);transition:.25s var(--ease);width:100%;
}
.bform input:focus,.bform select:focus,.bform textarea:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(132,162,63,.18)}
.bform textarea{resize:vertical}
.bform__actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:.4rem}
.bform__actions .btn{flex:1;min-width:180px}
.bform__hint{margin-top:.8rem;font-size:.82rem;color:var(--olive-600);min-height:1.2em}
.bform__hint.error{color:#b4452f}

/* ---------- À visiter ---------- */
.places{display:grid;grid-template-columns:repeat(6,1fr);gap:1.2rem}
.place{position:relative;min-height:300px;border-radius:var(--radius);overflow:hidden;background-size:cover;background-position:center;grid-column:span 2;box-shadow:var(--shadow-sm);isolation:isolate}
.place--lg{grid-column:span 4;min-height:340px}
.place::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 30%,rgba(20,30,15,.85));z-index:-1;transition:.4s var(--ease)}
.place__body{position:absolute;inset:auto 0 0 0;padding:1.6rem;color:#fff}
.place__body h3{font-family:var(--font-serif);font-size:1.5rem;margin-bottom:.3rem}
.place__body p{font-size:.92rem;color:rgba(255,255,255,.85);max-width:46ch}
.place{transition:.5s var(--ease)}
.place:hover{transform:translateY(-6px)}
.place:hover::after{background:linear-gradient(transparent 10%,rgba(14,60,67,.9))}

/* ---------- Contact ---------- */
.contact-list{list-style:none;display:grid;gap:1.4rem;margin:2rem 0}
.contact-list li{display:flex;gap:1rem;align-items:flex-start}
.contact-list__ic{font-size:1.2rem;width:2.6rem;height:2.6rem;display:grid;place-items:center;background:rgba(255,255,255,.12);border-radius:12px;flex-shrink:0}
.contact-list b{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:#e9c9a6;margin-bottom:.2rem}
.contact-list div{color:rgba(255,255,255,.9);font-size:.95rem;line-height:1.5}
.contact-list a{border-bottom:1px solid rgba(255,255,255,.3)}
.contact-list a:hover{border-color:#fff}
.contact-cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.5rem}
.map-card{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg);min-height:380px;border:6px solid rgba(255,255,255,.1)}
.map-card iframe{width:100%;height:100%;min-height:380px;border:0;display:block;filter:grayscale(.2) contrast(1.05)}

/* ---------- Footer ---------- */
.footer{background:var(--olive-900);color:rgba(255,255,255,.75);padding:3.5rem 0 2rem}
.footer__inner{display:grid;grid-template-columns:1.4fr 1fr;gap:2rem;align-items:start}
.footer__brand{display:flex;flex-direction:column;gap:1rem;max-width:42ch}
.footer__brand img{width:64px}
.footer__brand p{font-size:.92rem}
.footer__nav{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;align-content:start;justify-content:flex-end}
.footer__nav a{font-size:.92rem;transition:.2s}
.footer__nav a:hover{color:#fff}
.footer__copy{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.12);margin-top:1.5rem;padding-top:1.5rem;font-size:.82rem;opacity:.7;text-align:center}

/* ---------- FAB WhatsApp ---------- */
.fab{position:fixed;right:1.3rem;bottom:1.3rem;z-index:900;width:58px;height:58px;border-radius:50%;background:#25d366;color:#fff;display:grid;place-items:center;box-shadow:0 14px 30px -8px rgba(37,211,102,.7);transition:.3s var(--ease);animation:fabin .5s var(--ease) 1.2s both}
.fab:hover{transform:scale(1.08) translateY(-2px)}
@keyframes fabin{from{transform:scale(0)}to{transform:scale(1)}}
.fab::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #25d366;animation:pulse 2.2s ease-out infinite}
@keyframes pulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.6);opacity:0}}

/* ---------- Lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:1500;background:rgba(20,24,14,.94);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:.35s var(--ease);padding:2rem}
.lightbox.open{opacity:1;visibility:visible}
.lightbox__fig{max-width:92vw;max-height:86vh;display:flex;flex-direction:column;align-items:center;gap:.8rem}
.lightbox__fig img{max-width:92vw;max-height:80vh;border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.6);object-fit:contain}
.lightbox__fig figcaption{color:rgba(255,255,255,.8);font-size:.95rem}
.lightbox__close{position:absolute;top:1.2rem;right:1.4rem;width:48px;height:48px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:1.8rem;cursor:pointer;line-height:1;transition:.25s}
.lightbox__close:hover{background:rgba(255,255,255,.25);transform:rotate(90deg)}
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:54px;height:54px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:2rem;cursor:pointer;line-height:1;transition:.25s}
.lightbox__nav:hover{background:rgba(255,255,255,.28)}
.lightbox__nav--prev{left:1.4rem}
.lightbox__nav--next{right:1.4rem}

/* ---------- Reveal animations ---------- */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .hero__bg{animation:none}
  .fab,.hero__scroll span{animation:none}
}

/* ---------- Sélecteurs type/étage ---------- */
.picker{display:grid;grid-template-columns:1fr 1fr;gap:1rem;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.3rem 1.6rem}
.picker label{display:flex;flex-direction:column;font-size:.74rem;font-weight:700;letter-spacing:.04em;color:var(--olive-900);gap:.45rem;text-transform:uppercase}
.picker select{font-family:var(--font-sans);font-size:.98rem;font-weight:500;color:var(--ink);border:1.5px solid var(--sand-200);border-radius:10px;padding:.72rem .8rem;background:var(--sand-50);cursor:pointer;transition:.25s var(--ease)}
.picker select:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(132,162,63,.18)}

/* ---------- États supplémentaires du calendrier ---------- */
.cal-day.booked{background:#e9cdbe;color:#9c5f43;font-weight:600;cursor:not-allowed}
.cal-day.booked:hover{transform:none;background:#e9cdbe;color:#9c5f43}
.cal-day.booked::after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:#9c5f43}
.cal-day.pending{background:#f6d98a;color:#7d611f;cursor:not-allowed;animation:pendPulse 1.8s ease-in-out infinite}
.cal-day.pending:hover{transform:none;color:#7d611f}
.cal-day.pending::after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:#b8861f}
@keyframes pendPulse{0%,100%{box-shadow:inset 0 0 0 0 rgba(184,134,31,0)}50%{box-shadow:inset 0 0 0 2px rgba(184,134,31,.6)}}
.lg--pending{background:#f6d98a}
.lg--booked{background:#e9cdbe}
.calendar.loading{opacity:.55;pointer-events:none;transition:opacity .2s}

/* ---------- Récapitulatif (aside) ---------- */
.summary{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.7rem;position:sticky;top:90px}
.summary__title{font-family:var(--font-serif);font-size:1.4rem;color:var(--olive-900);margin-bottom:1rem}
.summary__apt{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem;font-weight:600;color:var(--ink)}
.summary__badge{background:var(--olive-600);color:#fff;font-weight:700;font-size:.85rem;padding:.25rem .6rem;border-radius:8px;letter-spacing:.02em}
.summary__dates{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;background:var(--sand-50);border:1px dashed var(--sand-200);border-radius:12px;padding:.9rem;text-align:center;margin-bottom:1rem}
.summary__dates span{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-weight:600}
.summary__dates strong{font-family:var(--font-serif);font-size:1.05rem;color:var(--olive-900)}
.summary__arrow{color:var(--terra);font-size:1.1rem}
.summary__line{display:flex;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px dashed var(--sand-200);font-size:.95rem;color:var(--ink-soft)}
.summary__line strong{color:var(--ink);font-weight:600}
.summary__line--total{border-bottom:none;padding-top:.9rem}
.summary__line--total span{font-weight:600;color:var(--olive-900)}
.summary__line--total strong{font-family:var(--font-serif);font-size:1.5rem;color:var(--olive-600)}
.summary__cta{width:100%;margin-top:1rem}
.summary__cta:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.summary__alt{display:block;text-align:center;margin-top:.9rem;font-size:.85rem;color:var(--olive-600);border-bottom:1px solid transparent;width:fit-content;margin-inline:auto}
.summary__alt:hover{border-color:var(--olive-600)}
.summary__hint{font-size:.82rem;color:var(--olive-600);margin-top:.8rem;min-height:1.2em}
.summary__hint.error{color:#b4452f}

/* =========================================================
   Page de paiement
   ========================================================= */
.pay-body{background:var(--sand-100)}
.pay-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem clamp(1rem,4vw,2.5rem);background:rgba(250,246,238,.92);backdrop-filter:blur(12px);box-shadow:var(--shadow-sm)}
.pay-header .brand__logo{width:48px;height:48px}
.pay-header .brand__text{color:var(--olive-900);text-shadow:none}
.pay-header .brand__text small{color:var(--ink-soft)}
.pay-back{font-weight:600;color:var(--olive-700);font-size:.92rem}
.pay-back:hover{color:var(--terra)}
.pay{padding:2.4rem 0 4rem}
.pay-steps{list-style:none;display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;counter-reset:step;margin-bottom:1.3rem;padding:0}
.pay-steps li{counter-increment:step;font-size:.84rem;color:var(--ink-soft);display:flex;align-items:center;gap:.5rem;font-weight:600}
.pay-steps li::before{content:counter(step);width:1.6rem;height:1.6rem;border-radius:50%;background:var(--sand-200);color:var(--ink-soft);display:grid;place-items:center;font-size:.78rem}
.pay-steps li:not(:last-child)::after{content:"";width:1.4rem;height:1px;background:var(--sand-200);margin-left:.3rem}
.pay-steps li.done::before{content:"✓";background:var(--olive-600);color:#fff}
.pay-steps li.current::before{background:var(--terra);color:#fff}
.pay-steps li.current{color:var(--olive-900)}
.pay-h1{font-family:var(--font-serif);font-weight:600;font-size:clamp(1.8rem,4vw,2.6rem);color:var(--olive-900);text-align:center;margin-bottom:2.2rem}
.pay-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:1.6rem;align-items:start}
.pay-left{display:flex;flex-direction:column;gap:1.2rem}
.pay-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem}
.pay-card__title{font-family:var(--font-serif);font-size:1.25rem;color:var(--olive-900);margin-bottom:1rem}
.pay-recap{display:flex;gap:1.2rem;align-items:center}
.pay-recap img{width:130px;height:110px;object-fit:cover;border-radius:12px;flex-shrink:0}
.pay-recap__info h2{font-family:var(--font-serif);font-size:1.35rem;color:var(--olive-900);margin:.45rem 0 .35rem}
.pay-recap__dates{color:var(--ink);font-weight:600}
.pay-recap__nights{color:var(--ink-soft);font-size:.9rem}
.opts{display:flex;flex-direction:column;gap:.7rem}
.opt{display:flex;align-items:center;gap:.9rem;border:1.5px solid var(--sand-200);border-radius:12px;padding:.85rem 1rem;cursor:pointer;transition:.2s var(--ease)}
.opt:hover{border-color:var(--olive-500);background:var(--sand-50)}
.opt input{width:20px;height:20px;accent-color:var(--olive-600);flex-shrink:0;cursor:pointer}
.opt__main{display:flex;flex-direction:column;flex:1}
.opt__main b{color:var(--olive-900);font-weight:600}
.opt__main small{color:var(--ink-soft);font-size:.8rem}
.opt__price{font-weight:700;color:var(--olive-600);white-space:nowrap}
.opt:has(input:checked){border-color:var(--olive-600);background:var(--leaf-soft)}
.pay-form{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.pay-form .full{grid-column:1/-1}
.pay-form label{display:flex;flex-direction:column;font-size:.8rem;font-weight:600;color:var(--olive-900);gap:.4rem}
.pay-form input,.pay-form select,.pay-form textarea{font-family:var(--font-sans);font-size:.95rem;font-weight:400;color:var(--ink);border:1.5px solid var(--sand-200);border-radius:10px;padding:.7rem .8rem;background:var(--sand-50);transition:.25s var(--ease);width:100%}
.pay-form input:focus,.pay-form select:focus,.pay-form textarea:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(132,162,63,.18)}
.pay-form input.invalid{border-color:#c2492f;box-shadow:0 0 0 3px rgba(194,73,47,.15)}
.phone-row{display:flex;gap:.5rem}
.phone-row select{width:118px;flex-shrink:0;cursor:pointer}
.phone-row input{flex:1;min-width:0}
.pay-form textarea{resize:vertical}
.pay-demo{background:#fff7e6;border:1px solid #f0d9a8;color:#8a6a23;border-radius:12px;padding:.8rem 1rem;font-size:.86rem;margin-bottom:1.1rem}
.pay-right{position:sticky;top:88px}
.pay-summary{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.6rem}
.pay-summary__title{font-family:var(--font-serif);font-size:1.3rem;color:var(--olive-900);margin-bottom:1rem}
.pay-line{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px dashed var(--sand-200);font-size:.92rem;color:var(--ink-soft)}
.pay-line b{color:var(--ink);font-weight:600;white-space:nowrap}
.pay-line--total{border-bottom:none;border-top:2px solid var(--sand-200);margin-top:.4rem;padding-top:.9rem}
.pay-line--total span{font-weight:700;color:var(--olive-900);font-size:1rem}
.pay-line--total b{font-family:var(--font-serif);font-size:1.6rem;color:var(--olive-600)}
.pay-caution{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--sand-50);border-radius:10px;padding:.7rem .9rem;margin-top:.9rem;font-size:.85rem;color:var(--ink-soft)}
.pay-caution span{display:flex;flex-direction:column}
.pay-caution small{font-size:.72rem}
.pay-caution b{color:var(--olive-900);white-space:nowrap}
.pay-btn{width:100%;margin-top:1.1rem}
.pay-secure{font-size:.76rem;color:var(--ink-soft);text-align:center;margin-top:.8rem}
/* ---------- Règlement en espèces ---------- */
.cash-note{display:flex;gap:1rem;align-items:flex-start;background:var(--leaf-soft);border:1.5px solid var(--olive-500);border-radius:12px;padding:1rem 1.1rem}
.cash-note__ic{font-size:1.6rem;flex-shrink:0}
.cash-note b{color:var(--olive-900)}
.cash-note p{font-size:.9rem;color:var(--ink-soft);margin-top:.3rem}

/* ---------- Facture ---------- */
.invoice-actions{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;margin-bottom:1.6rem}
.invoice{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(1.4rem,4vw,2.8rem);max-width:860px;margin:0 auto}
.invoice__head{display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;border-bottom:2px solid var(--olive-600);padding-bottom:1.4rem;margin-bottom:1.4rem}
.invoice__brand{display:flex;gap:1rem;align-items:flex-start}
.invoice__brand img{width:74px;height:auto}
.invoice__brand b{display:block;font-family:var(--font-serif);font-size:1.25rem;color:var(--olive-900)}
.invoice__brand span{display:block;font-size:.8rem;color:var(--ink-soft);margin-top:.35rem;line-height:1.45}
.invoice__meta h1{font-family:var(--font-serif);font-size:1.7rem;color:var(--olive-900);text-align:right}
.invoice__pro{font-size:.85rem;color:var(--terra);font-style:italic;vertical-align:middle}
.invoice__meta table{margin-left:auto;margin-top:.5rem;font-size:.9rem;border-collapse:collapse}
.invoice__meta td{padding:.15rem .4rem;color:var(--ink-soft)}
.invoice__meta td:last-child{font-weight:700;color:var(--ink)}
.invoice__parties{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.6rem}
.invoice__parties h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--terra);margin-bottom:.4rem}
.invoice__parties b{display:block;color:var(--ink);font-size:1.02rem}
.invoice__parties span{display:block;font-size:.88rem;color:var(--ink-soft);margin-top:.15rem}
.invoice__table{width:100%;border-collapse:collapse;margin-bottom:1.4rem}
.invoice__table th{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);text-align:left;padding:.55rem .6rem;border-bottom:1.5px solid var(--sand-200)}
.invoice__table td{padding:.7rem .6rem;font-size:.94rem;border-bottom:1px dashed var(--sand-200);color:var(--ink)}
.invoice__table td:nth-child(2){color:var(--ink-soft);font-size:.86rem}
.invoice__table .num{text-align:right;font-weight:600;white-space:nowrap}
.invoice__total td{border-bottom:none;border-top:2px solid var(--olive-600);font-weight:700;color:var(--olive-900);padding-top:.9rem}
.invoice__total .num{font-family:var(--font-serif);font-size:1.4rem;color:var(--olive-600)}
.invoice__total small,.invoice__cau small{font-weight:400;color:var(--ink-soft)}
.invoice__cau td{border-bottom:none;font-size:.88rem;color:var(--ink-soft);padding-top:.1rem}
.invoice__notes{background:var(--sand-50);border-radius:10px;padding:.9rem 1.1rem;font-size:.82rem;color:var(--ink-soft);line-height:1.55;margin-bottom:2rem}
.invoice__notes p+p{margin-top:.5rem}
.invoice__foot{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:1rem}
.invoice__foot div{border-top:1.5px solid var(--sand-200);padding-top:.5rem;min-height:70px}
.invoice__foot span{font-size:.76rem;color:var(--ink-soft)}

/* ---------- Confirmation de réservation ---------- */
.confirm{max-width:640px;margin:0 auto;text-align:center}
.confirm__check{width:72px;height:72px;border-radius:50%;background:var(--olive-600);color:#fff;font-size:2.3rem;display:grid;place-items:center;margin:0 auto 1.2rem;animation:pop .4s var(--ease)}
.confirm__title{font-family:var(--font-serif);font-weight:600;font-size:clamp(1.5rem,3.5vw,2.1rem);color:var(--olive-900);margin-bottom:.8rem}
.confirm__intro{color:var(--ink-soft);max-width:48ch;margin:0 auto 0.6rem}
.confirm__mail{color:var(--olive-600);font-weight:600;font-size:.92rem;margin-bottom:.4rem}
.confirm__card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.8rem;margin:1.6rem 0;text-align:left}
.confirm__card h2{font-family:var(--font-serif);font-size:1.25rem;color:var(--olive-900);margin-bottom:1rem}
.confirm__table{width:100%;border-collapse:collapse}
.confirm__table td{padding:.6rem .2rem;border-bottom:1px dashed var(--sand-200);font-size:.95rem}
.confirm__table td:first-child{color:var(--ink-soft)}
.confirm__table td:last-child{text-align:right;font-weight:600;color:var(--ink)}
.confirm__total td{border-bottom:none;padding-top:.9rem}
.confirm__total td:first-child{font-weight:700;color:var(--olive-900)}
.confirm__total td:last-child{font-family:var(--font-serif);font-size:1.4rem;color:var(--olive-600)}
.confirm__note{font-size:.82rem;color:var(--ink-soft);margin-top:.9rem;background:var(--sand-50);border-radius:8px;padding:.7rem .9rem}
.confirm__actions{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center}

/* ---------- Impression : seule la facture ---------- */
@media print{
  body.pay-body{background:#fff}
  .pay-header,.invoice-actions,.pay-steps{display:none!important}
  #invoiceView{padding:0}
  .invoice{box-shadow:none;border-radius:0;max-width:none;padding:0}
  .invoice__notes{background:#fff;border:1px solid #ddd}
}

.pay-modal{position:fixed;inset:0;z-index:1500;background:rgba(20,24,14,.62);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;visibility:hidden;transition:.3s var(--ease)}
.pay-modal.open{opacity:1;visibility:visible}
.pay-modal__card{background:#fff;border-radius:var(--radius);padding:2.4rem 2rem;max-width:470px;text-align:center;box-shadow:var(--shadow-lg);transform:translateY(14px);transition:.35s var(--ease)}
.pay-modal.open .pay-modal__card{transform:none}
.pay-modal__check{width:64px;height:64px;border-radius:50%;background:var(--olive-600);color:#fff;font-size:2rem;display:grid;place-items:center;margin:0 auto 1rem;animation:pop .4s var(--ease)}
@keyframes pop{from{transform:scale(0)}to{transform:scale(1)}}
.pay-modal__card h2{font-family:var(--font-serif);font-size:1.7rem;color:var(--olive-900);margin-bottom:.6rem}
.pay-modal__card p{color:var(--ink-soft);margin-bottom:1.4rem;line-height:1.6}
.pay-modal__actions{display:flex;flex-direction:column;gap:.7rem}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .pay-grid{grid-template-columns:1fr}
  .pay-right{position:static}
  .summary{position:static}
}
@media (max-width:560px){
  .picker{grid-template-columns:1fr}
  .pay-form{grid-template-columns:1fr}
  .pay-recap{flex-direction:column;text-align:center}
  .pay-recap img{width:100%;height:170px}
  .pay-header .brand__text small{display:none}
}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .gallery{grid-template-columns:repeat(3,1fr)}
  .features{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .nav{
    position:fixed;inset:0 0 0 auto;width:min(82vw,340px);background:var(--sand-50);
    flex-direction:column;align-items:stretch;justify-content:center;gap:.4rem;padding:2rem;
    transform:translateX(100%);transition:transform .4s var(--ease);box-shadow:var(--shadow-lg);z-index:1100;
  }
  .nav.open{transform:none}
  .nav>a{color:var(--ink)!important;text-shadow:none!important;font-size:1.15rem;padding:.8rem 1rem}
  .nav>a:hover{background:var(--sand-200)!important}
  .nav__cta{margin-top:1rem;text-align:center}
  .burger{display:flex}
  .burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .burger.open span:nth-child(2){opacity:0}
  .burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .grid-2{grid-template-columns:1fr}
  .booking{grid-template-columns:1fr}
  .apparts{grid-template-columns:1fr;max-width:480px;margin-inline:auto}
  .appart--featured{transform:none}
  .appart--featured:hover{transform:translateY(-8px)}
  .places{grid-template-columns:1fr}
  .place,.place--lg{grid-column:auto}
  .footer__inner{grid-template-columns:1fr}
  .footer__nav{justify-content:flex-start}
  .media-stack{margin-bottom:2rem}
}
@media (max-width:560px){
  .gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .gallery__item--wide{grid-column:span 2}
  .features{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
  .hero__facts{gap:1.5rem}
  .bform__row--2{grid-template-columns:1fr}
  .brand__text{font-size:1.1rem}
  .media-stack__float{display:none}
  .banner__img{background-attachment:scroll}
}
