/* ===========================================================
   Argilea Villa — Kefalonia
   Design system extracted from Illustrator templates
   Fonts: Jost (UI) + Marcellus (display)
   Fonts are loaded via <link> in each page <head> (parallel, non-blocking)
   instead of @import here, which previously chained behind this stylesheet.
   =========================================================== */

:root{
  --clay:#a8967e;          /* primary accent */
  --clay-dark:#8a7860;
  --sand:#d4c8b3;          /* light sand band */
  --ink:#1f1f1f;           /* near-black text */
  --brown:#312419;         /* deep brown */
  --paper:#fbfaf8;         /* off-white bg */
  --paper-2:#f8f6f1;       /* warm off-white */
  --grey:#606060;
  --line:rgba(168,150,126,.4);

  --serif:'Marcellus',Georgia,serif;
  --sans:'Jost',-apple-system,Segoe UI,sans-serif;

  --maxw:1280px;
  --gutter:clamp(20px,5vw,80px);
  --nav-h:84px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:hidden;scroll-padding-top:var(--nav-h)}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  line-height:1.75;
  font-weight:300;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  padding-top:var(--nav-h);
  font-variant-numeric:lining-nums;
}
.cal-grid,.vo-specs,.spec b,.spec small,.avail-field,.score{font-variant-numeric:lining-nums tabular-nums}
body.has-hero{padding-top:0}
/* reserve scrollbar space always, so locking scroll doesn't shift the fixed nav */
html{scrollbar-gutter:stable}
/* lock background scroll while the menu drawer is open */
html.menu-open,html.menu-open body{overflow:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

/* ---------- typography ---------- */
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;line-height:1.18;color:var(--ink)}
.serif{font-family:var(--serif)}
.section-title{
  font-size:clamp(1.9rem,3.5vw,3rem);
  color:var(--clay);
  letter-spacing:.01em;
  margin-bottom:1.4rem;
}
.eyebrow{
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.32em;
  font-size:.72rem;
  font-weight:500;
  color:var(--clay);
  margin-bottom:1rem;
  display:block;
}
p{margin-bottom:1.1rem;color:#3a352e}
p:last-child{margin-bottom:0}

/* ---------- layout ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
section{position:relative}
.pad{padding-block:clamp(34px,4.2vw,62px)}
.pad-sm{padding-block:clamp(26px,3vw,44px)}
.bg-paper2{background:var(--paper-2)}
.bg-sand{background:var(--sand)}
.center{text-align:center}

/* ---------- buttons ---------- */
.btn{
  display:inline-block;
  font-family:var(--sans);
  font-size:.82rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  padding:1rem 2.4rem;
  border:1.5px solid var(--clay);
  background:transparent;
  color:var(--clay);
  cursor:pointer;
  transition:.35s ease;
}
.btn:hover{background:var(--clay);color:#fff}
.btn-fill{background:var(--clay);color:#fff}
.btn-fill:hover{background:var(--clay-dark);border-color:var(--clay-dark)}

/* Book Now — uses the supplied CTA.svg decorative frame */
.cta{
  display:inline-flex;align-items:center;justify-content:center;
  background:url('../cta.svg') center/100% 100% no-repeat;
  width:172px;height:60px;padding:0 20px 0 46px;
  font-family:var(--sans);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;font-weight: bold;
  color:var(--clay-dark);transition:opacity .3s ease,transform .3s ease;
}
.cta:hover{opacity:.7;transform:translateY(-1px)}

/* ===========================================================
   NAV
   =========================================================== */
.nav{
  position:fixed;top:0;left:0;width:100%;z-index:100;
  height:var(--nav-h);
  display:flex;align-items:center;
  background:var(--paper);
  border-bottom:1px solid rgba(168,150,126,.28);
  transition:background .45s ease,border-color .45s ease;
}
/* Home: transparent over the hero, solid once scrolled */
body.has-hero .nav:not(.solid){background:transparent;border-bottom-color:transparent}
body.has-hero .nav:not(.solid) .menu-toggle{color:#fff}
/* While the menu drawer is open, the bar blends into the beige overlay (white logo + toggle) */
html.menu-open .nav{background:transparent!important;border-bottom-color:transparent!important}
html.menu-open .nav .logo-solid{display:none!important}
html.menu-open .nav .logo-white{display:block!important}
html.menu-open .nav .brand-emblem{display:none!important}
html.menu-open .nav .brand-emblem-w{display:block!important}
html.menu-open .nav .menu-toggle{color:#fff!important}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}
.brand{display:flex;align-items:center;gap:10px}
.brand img{width:auto;display:block}
.brand-emblem,.brand-emblem-w{height:42px}
.brand-word{height:32px}              /* refined, restrained — luxury */
.brand .logo-white{display:none}
.brand .brand-emblem-w{display:none}  /* white crest, shown only while the menu is open */
/* Home over hero: show white-lettered logo while bar is transparent */
body.has-hero .nav:not(.solid) .logo-solid{display:none}
body.has-hero .nav:not(.solid) .logo-white{display:block}
.nav-right{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2rem)}

/* Menu toggle (word + animated lines) */
.menu-toggle{display:inline-flex;align-items:center;gap:.6rem;background:none;border:0;cursor:pointer;padding:.4rem 0;color:var(--ink)}
.menu-toggle .menu-label{font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500}
.menu-toggle .menu-icon{position:relative;width:28px;height:14px;display:inline-block;flex-shrink:0}
.menu-toggle .menu-icon span{position:absolute;left:0;width:28px;height:2px;background:currentColor;transition:transform .35s ease,top .35s ease,bottom .35s ease;border-radius:2px}
.menu-toggle .menu-icon span:nth-child(1){top:0}
.menu-toggle .menu-icon span:nth-child(2){bottom:0}
.menu-toggle.active .menu-icon span:nth-child(1){top:6px;transform:rotate(45deg)}
.menu-toggle.active .menu-icon span:nth-child(2){bottom:6px;transform:rotate(-45deg)}

/* Full-screen drawer overlay */
.nav-overlay{
  position:fixed;inset:0;z-index:90;background:var(--clay);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transform:translateY(-12px);
  transition:opacity .45s ease,transform .45s ease,visibility .45s;
  padding:calc(var(--nav-h) + 2rem) var(--gutter) clamp(28px,5vh,56px);
  overflow-y:auto;
}
.nav-overlay.open{opacity:1;visibility:visible;transform:none}
.menu-close{display:none}
.overlay-inner{display:grid;grid-template-columns:auto 1fr;gap:clamp(2.5rem,9vw,8rem);
  width:100%;max-width:880px;margin:auto;align-items:center}
/* left column: Book Now + address + socials */
.overlay-left{display:flex;flex-direction:column;align-items:flex-start;gap:1.6rem}
.overlay-left .cta{filter:brightness(0) invert(1)}
.overlay-contact{display:flex;flex-direction:column;gap:.55rem;font-size:.92rem;letter-spacing:.02em;color:rgba(255,255,255,.9)}
.overlay-contact a{color:rgba(255,255,255,.9)}
.overlay-contact a:hover{color:#fff}
.ov-socials{display:flex;gap:1rem;margin-top:.2rem}
.ov-socials a{color:#fff}
.ov-socials svg{width:24px;height:24px;fill:#fff;opacity:.9;transition:opacity .25s}
.ov-socials a:hover svg{opacity:1}
/* right column: links, left-aligned */
.overlay-links{display:flex;flex-direction:column;align-items:flex-end;gap:clamp(.4rem,1.6vh,1.1rem);text-align:right}
.overlay-links a{
  font-family:var(--serif);color:#fff;font-size:clamp(1.7rem,4.4vw,3rem);font-weight:500;line-height:1.12;
  opacity:.92;transition:opacity .3s,padding-right .3s;
}
.overlay-links a:hover{opacity:1;padding-right:.4rem}
.overlay-links a.active{opacity:1;color:#f3ece1}
/* WordPress menu compatibility: items come wrapped in <ul class="ov-menu"><li> */
.overlay-links .ov-menu{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:flex-end;gap:clamp(.4rem,1.6vh,1.1rem)}
.overlay-links .ov-menu li{margin:0;padding:0}
.overlay-links .current-menu-item>a,.overlay-links .current_page_item>a{opacity:1;color:#f3ece1}

/* ===========================================================
   HERO (clean image/video + serif wordmark, sits below nav)
   =========================================================== */
.hero{position:relative;height:100vh;min-height:560px;overflow:hidden}
.hero video,.hero .hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* hero image slider (crossfade + slow zoom) */
.hero-slider{position:absolute;inset:0;z-index:0}
/* Hero slides: crossfade + gentle Ken-Burns zoom (same approach as the Alaya site, which runs
   smoothly). IMPORTANT: NO `will-change` here — adding it pinned a full-screen GPU layer and
   starved video playback. The JS still pauses the zoom when the hero is off-screen / window
   blurred / tab hidden, as a bonus. */
.hero-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.04);transition:opacity 1.6s ease}
.hero-slide.is-active{opacity:1;animation:heroZoom 8s ease-out forwards}
@keyframes heroZoom{from{transform:scale(1.04)}to{transform:scale(1.12)}}
.hero.anim-paused .hero-slide.is-active{animation-play-state:paused}
@media (prefers-reduced-motion: reduce){
  .hero-slide,.hero-slide.is-active{animation:none!important;transform:none!important}
}
.hero-dots{position:absolute;z-index:3;left:0;right:0;bottom:clamp(18px,3vh,30px);display:flex;justify-content:center;gap:10px}
.hero-dots button{width:9px;height:9px;border-radius:50%;border:1px solid rgba(255,255,255,.7);background:transparent;cursor:pointer;padding:0;transition:.3s}
.hero-dots button.on{background:#fff;border-color:#fff;transform:scale(1.1)}
.hero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,17,14,.34) 0%,rgba(20,17,14,.04) 32%,rgba(20,17,14,.05) 55%,rgba(20,17,14,.5) 100%)}
.hero .wordmark{
  position:absolute;z-index:2;right:clamp(20px,5vw,72px);bottom:clamp(22px,5vh,56px);
  font-family:var(--serif);font-weight:500;color:#fff;
  font-size:clamp(1.5rem,3vw,2.6rem);letter-spacing:.02em;text-shadow:0 2px 24px rgba(0,0,0,.45);
}
/* hero overlay content (eyebrow + title + subtitle), lower-right */
.hero .hero-content{position:absolute;z-index:2;left:0;right:0;bottom:0;width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter) clamp(90px,15vh,150px);
  display:flex;flex-direction:column;align-items:flex-end;text-align:right}
.hero-eyebrow{display:block;color:#fff;font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;margin-bottom:1rem;text-shadow:0 1px 14px rgba(0,0,0,.45)}
.hero h1{color:#fff;font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,4.4vw,3.8rem);line-height:1.1;max-width:20ch;text-shadow:0 2px 30px rgba(0,0,0,.4)}
.hero .sub{color:#f2ede7;max-width:44ch;margin-top:1.1rem;font-size:clamp(1rem,1.4vw,1.18rem);text-shadow:0 1px 16px rgba(0,0,0,.45)}
.hero .hero-actions{margin-top:2rem;display:flex;gap:1rem;flex-wrap:wrap}
.hero .hero-actions .btn{color:#fff;border-color:#fff}
.hero .hero-actions .btn:hover{background:#fff;color:var(--ink)}
.hero .hero-actions .btn-fill{background:var(--clay);border-color:var(--clay)}
.hero .hero-actions .btn-fill:hover{background:var(--clay-dark);border-color:var(--clay-dark);color:#fff}

/* ===========================================================
   CHECK AVAILABILITY BAR (front-end; booking engine wired later)
   =========================================================== */
.availability{position:relative;z-index:6;margin-top:-46px;padding:0 var(--gutter)}
.avail-bar{
  max-width:1000px;margin:0 auto;background:#fff;border:1px solid var(--line);
  box-shadow:0 20px 55px rgba(49,36,25,.16);
  display:flex;align-items:stretch;flex-wrap:nowrap;
}
.avail-field{flex:1 1 0;display:flex;flex-direction:column;gap:.35rem;padding:1.05rem 1.5rem;border-right:1px solid var(--line);min-width:0}
.avail-field label{font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--grey);font-weight:600}
.avail-field input,.avail-field select{
  border:0;background:none;font-family:var(--sans);font-size:.95rem;color:var(--ink);
  width:100%;outline:none;cursor:pointer;padding:0;
}
.avail-field input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.5}
.avail-btn{border:0;cursor:pointer;background:var(--clay);color:#fff;font-family:var(--sans);
  font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;padding:0 2.4rem;white-space:nowrap;transition:background .35s ease}
.avail-btn:hover{background:var(--clay-dark)}
.avail-note{max-width:1000px;margin:1rem auto 0;text-align:center;color:var(--clay-dark);font-size:.9rem;display:none}

/* HOME about block: big left image + two small images + text */
.about-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,4vw,4rem);align-items:stretch}
.about-main{position:relative;min-height:520px}
.about-main img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.about-figs{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:1.8rem}
.about-figs img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* Google rating placeholder block */
.google-rating{border:1px solid var(--line);background:var(--paper-2);padding:clamp(2.4rem,5vw,4rem);text-align:center;display:flex;flex-direction:column;align-items:center;gap:.6rem}
.google-rating .score{font-family:var(--serif);font-size:3.4rem;color:var(--ink);line-height:1}
.google-rating .stars{color:var(--clay);letter-spacing:5px;font-size:1.4rem}
.google-rating .src{display:inline-flex;align-items:center;gap:.5rem;color:var(--grey);font-size:.95rem;margin-top:.4rem}
.google-rating small{color:var(--grey);font-size:.8rem;letter-spacing:.06em}

/* page banner (interior pages) */
.banner{background:var(--clay);color:#fff;text-align:center;padding:clamp(42px,6vw,66px) var(--gutter)}
.banner h1{color:#fff;font-size:clamp(2rem,4.5vw,3.4rem);letter-spacing:.02em}
.banner p{color:rgba(255,255,255,.9);max-width:60ch;margin:1rem auto 0}

/* ===========================================================
   GENERIC SPLIT / INTRO
   =========================================================== */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.split.reverse .split-media{order:2}
.split-media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5;border:1px solid var(--line)}
.lead{font-size:1.15rem;line-height:1.7;color:var(--clay);font-family:var(--serif);font-style:italic}

.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:start}
@media(max-width:820px){.intro-grid{grid-template-columns:1fr}}

/* ===========================================================
   GALLERY GRIDS
   =========================================================== */
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.gallery-grid.preview{grid-template-columns:repeat(3,1fr)}
.gallery-grid figure{overflow:hidden;position:relative;cursor:pointer;aspect-ratio:4/3;background:var(--paper-2)}
.gallery-grid img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease,filter .8s ease}
.gallery-grid figure:hover img{transform:scale(1.06)}
.gallery-grid figure::after{content:'';position:absolute;inset:0;background:rgba(168,150,126,0);transition:.4s}
.gallery-grid figure:hover::after{background:rgba(49,36,25,.12)}

/* ---- villa gallery carousel (horizontal strip, arrows + swipe) ---- */
.vg-carousel{position:relative}
.vg-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.vg-track::-webkit-scrollbar{display:none}
.vg-track figure{flex:0 0 auto;width:min(420px,76vw);aspect-ratio:4/3;margin:0;overflow:hidden;position:relative;cursor:pointer;scroll-snap-align:center;background:var(--paper)}
.vg-track img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease}
.vg-track figure:hover img{transform:scale(1.06)}
.vg-track figure::after{content:'';position:absolute;inset:0;background:rgba(168,150,126,0);transition:.4s}
.vg-track figure:hover::after{background:rgba(49,36,25,.12)}
.vg-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:46px;height:46px;border-radius:50%;
  border:1px solid var(--clay);background:var(--paper);color:var(--clay-dark);padding:0;
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.25s;box-shadow:0 3px 14px rgba(49,36,25,.14)}
.vg-btn svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.vg-btn:hover{background:var(--clay);color:#fff}
.vg-prev{left:-10px}
.vg-next{right:-10px}
@media(max-width:700px){
  .vg-btn{width:38px;height:38px}
  .vg-btn svg{width:14px;height:14px}
  .vg-prev{left:-6px}
  .vg-next{right:-6px}
}

/* ---------- Instagram feed (Behold) ---------- */
.ig-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ig-item{position:relative;overflow:hidden;aspect-ratio:1;display:block;background:var(--paper-2)}
.ig-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.ig-item:hover img{transform:scale(1.07)}
.ig-ov{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(49,36,25,0);opacity:0;transition:opacity .35s ease,background .35s ease}
.ig-item:hover .ig-ov{opacity:1;background:rgba(49,36,25,.34)}
.ig-ov svg{width:26px;height:26px;fill:#fff}

/* ===========================================================
   AMENITIES
   =========================================================== */
/* Amenities — hairline matrix grid (1px gaps reveal the line colour) */
.amenity-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  border:1px solid var(--line);background:var(--line);
}
.amenity{
  display:flex;flex-direction:column;align-items:center;gap:1.3rem;
  padding:clamp(2rem,3.5vw,3rem) 1.2rem;text-align:center;
  background:var(--paper-2);transition:background .4s ease;
}
.amenity:hover{background:#fff}
.amenity .ring{
  width:66px;height:66px;border-radius:50%;border:1px solid var(--clay);
  display:flex;align-items:center;justify-content:center;color:var(--clay);
  transition:background .4s ease,color .4s ease,transform .4s ease;
}
.amenity:hover .ring{background:var(--clay);color:#fff;transform:translateY(-3px)}
.amenity .ring svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.amenity span{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:#6a6053;font-weight:500}

/* Additional Information — refined dark band */
.info-band{background:var(--brown);color:#f3ece1;padding:clamp(2.6rem,5vw,3.6rem) clamp(1.5rem,4vw,3.5rem);margin-top:clamp(3rem,6vw,5rem)}
.info-head{text-align:center;font-family:var(--sans);text-transform:uppercase;letter-spacing:.3em;font-size:.74rem;color:var(--clay);margin-bottom:2.4rem}
.specs{display:flex;justify-content:center;align-items:stretch;flex-wrap:wrap}
.spec{flex:1;min-width:140px;padding:.4rem clamp(1rem,3vw,2.4rem);text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:.7rem;
  border-right:1px solid rgba(255,255,255,.16)}
.spec:last-child{border-right:0}
.spec .ico-line{height:34px;display:flex;align-items:center;color:var(--clay)}
.spec .ico-line svg{height:32px;width:auto;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.spec b{font-family:var(--serif);font-size:clamp(1.9rem,3vw,2.6rem);font-weight:500;color:#fff;line-height:1}
.spec small{font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(243,236,225,.65)}
.checkinfo{margin-top:2.4rem;padding-top:1.8rem;border-top:1px solid rgba(255,255,255,.16);text-align:center;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(243,236,225,.8)}
.checkinfo b{color:var(--clay);font-weight:600;font-family:var(--sans)}

/* ===========================================================
   VILLA OVERVIEW (gallery + details + share)
   =========================================================== */
.villa-overview .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,4vw,4rem);align-items:start}
.vo-feature{margin:0;overflow:hidden;cursor:pointer}
.vo-feature img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .6s ease}
.vo-feature:hover img{transform:scale(1.04)}
.vo-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}
.vo-thumbs figure{margin:0;overflow:hidden;cursor:pointer}
.vo-thumbs img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .5s ease}
.vo-thumbs figure:hover img{transform:scale(1.06)}
.vo-details .eyebrow{margin-bottom:.6rem}
.vo-specs{list-style:none;display:flex;flex-wrap:wrap;gap:1.6rem 2rem;margin:1.6rem 0 1.8rem;padding:1.4rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.vo-specs li{display:flex;align-items:center;gap:.6rem;font-size:.92rem;color:var(--ink)}
.vo-specs svg{width:26px;height:26px;stroke:var(--clay);fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.vo-specs b{font-family:var(--serif);font-weight:500;font-size:1.15rem;color:var(--clay-dark)}
.vo-actions{display:flex;align-items:center;gap:1.6rem;margin-top:1.5rem;flex-wrap:wrap}
.vo-actions .btn{padding:.95rem 2.2rem;font-size:.76rem}
.vo-textlink{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--clay-dark);display:inline-flex;align-items:center;gap:.4rem;transition:gap .25s,color .25s}
.vo-textlink span{font-size:1.1em;transition:transform .25s}
.vo-textlink:hover{color:var(--clay)}
.vo-textlink:hover span{transform:translateX(3px)}

/* ===========================================================
   AMENITIES — compact one-screen list
   =========================================================== */
.amenities-compact{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.am-item{display:flex;align-items:center;gap:1rem;padding:1.15rem 1.4rem;background:transparent;box-shadow:inset -1px 0 0 var(--line),inset 0 -1px 0 var(--line);transition:background .3s}
.am-item:hover{background:#fff}
.am-item svg{width:30px;height:30px;stroke:var(--clay);fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.am-item span{font-size:.92rem;color:var(--ink);letter-spacing:.01em}

/* ===========================================================
   SERVICES CARDS
   =========================================================== */
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.service{
  position:relative;min-height:330px;overflow:hidden;color:#fff;
  display:flex;flex-direction:column;justify-content:flex-end;padding:2rem;
  background-size:cover;background-position:center;isolation:isolate;
}
.service::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(30,24,18,.15),rgba(30,24,18,.82));transition:.4s}
.service:hover::after{background:linear-gradient(180deg,rgba(30,24,18,.3),rgba(30,24,18,.9))}
.service .ico{width:42px;height:42px;margin-bottom:1rem;align-self:flex-start}
.service .ico svg{width:100%;height:100%;fill:var(--clay)}
.service .ico-img{height:40px;width:auto;margin-bottom:1rem;filter:brightness(0) invert(1);opacity:.92;align-self:flex-start}
.service h3{color:#fff;font-size:1.4rem;margin-bottom:.6rem}
.service p{color:rgba(255,255,255,.85);font-size:.92rem;line-height:1.6;margin:0}

/* ===========================================================
   FEATURE HOVER (services — image swaps as you hover titles)
   =========================================================== */
.services-intro{display:flex;align-items:center;justify-content:space-between;gap:clamp(1.5rem,4vw,3rem);flex-wrap:wrap}
.services-intro .si-text{max-width:64ch}
.services-intro .btn{flex-shrink:0}
.feature-hover{position:relative;height:min(72vh,640px);min-height:420px;overflow:hidden;background:var(--ink)}
.fh-bg{position:absolute;inset:0;z-index:0}
.fh-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);
  transition:opacity 1.1s ease,transform 8s ease}
.fh-img.is-active{opacity:1;transform:scale(1)}
.feature-hover::after{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(30,24,18,.3),rgba(30,24,18,.5))}
.fh-eyebrow{position:absolute;top:clamp(28px,5vh,52px);left:0;width:100%;z-index:2;text-align:center;
  color:rgba(255,255,255,.85);font-size:.72rem;letter-spacing:.32em;text-transform:uppercase}
.fh-titles{position:relative;z-index:2;height:100%;display:flex;align-items:center}
.fh-item{flex:1;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;
  color:#fff;font-family:var(--serif);font-size:clamp(1.35rem,2.6vw,2.3rem);
  border-right:1px solid rgba(255,255,255,.25);transition:flex-grow .6s ease}
.fh-item:last-child{border-right:0}
.fh-item span{position:relative;opacity:.82;padding-bottom:.35rem;transition:opacity .4s ease,letter-spacing .5s ease}
.fh-item span::after{content:'';position:absolute;left:50%;bottom:0;width:0;height:1px;background:#fff;transform:translateX(-50%);transition:width .45s ease}
.fh-item:hover span,.fh-item.is-active span{opacity:1;letter-spacing:.04em}
.fh-item:hover span::after,.fh-item.is-active span::after{width:64%}

/* ===========================================================
   CTA BAND
   =========================================================== */
.cta-band{background:var(--paper-2);text-align:left}
.cta-band .wrap{display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.cta-band h2{font-size:clamp(1.6rem,3vw,2.4rem);color:var(--clay)}
.cta-band p{max-width:48ch;margin-top:.6rem}
.divider-band{height:46px;background:var(--clay)}

/* ===========================================================
   RATING
   =========================================================== */
/* Google reviews summary */
.gr-summary{display:flex;align-items:center;justify-content:center;gap:clamp(1.4rem,3vw,2.6rem);flex-wrap:wrap;
  background:var(--paper);border:1px solid var(--line);padding:1.8rem clamp(1.6rem,4vw,2.8rem);margin-bottom:28px;text-align:center}
.gr-summary .gr-g{width:34px;height:34px;flex-shrink:0}
.gr-score{display:flex;flex-direction:column;align-items:center;gap:.15rem}
.gr-score b{font-family:var(--serif);font-size:2.4rem;line-height:1;color:var(--ink)}
.gr-score .gr-stars{color:var(--clay);letter-spacing:3px;font-size:1.05rem}
.gr-score .gr-meta{font-size:.8rem;letter-spacing:.05em;color:var(--grey)}
.gr-summary .gr-divider{width:1px;align-self:stretch;background:var(--line)}
.gr-summary .btn{flex-shrink:0}
@media(max-width:560px){.gr-summary .gr-divider{display:none}}

.rating-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px}
.review{background:var(--paper);border:1px solid var(--line);padding:2rem;display:flex;flex-direction:column}
.review .stars{color:var(--clay);letter-spacing:3px;margin-bottom:.8rem}
.review p{font-style:italic;font-family:var(--serif);color:#4a443c}
.review .who{margin-top:1.2rem;font-size:.85rem;letter-spacing:.05em;color:var(--grey);font-style:normal;font-family:var(--sans)}
.review .who .gr-g{width:15px;height:15px;vertical-align:-2px;margin-left:.5rem;opacity:.9}

/* ===========================================================
   LOCATION
   =========================================================== */
.loc-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:2.5rem}
.loc-photos img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line)}
.loc-feature img{width:100%;aspect-ratio:16/11;object-fit:cover}

/* ===========================================================
   CONTACT
   =========================================================== */
.contact-top{display:flex;flex-wrap:wrap;gap:clamp(1.5rem,4vw,3rem);justify-content:center;margin-bottom:3rem}
.contact-chip{display:flex;align-items:center;gap:.7rem;font-size:.95rem;color:#4a443c}
.contact-chip .dot{width:42px;height:42px;border-radius:50%;background:var(--clay);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}
.contact-chip svg{width:18px;height:18px;fill:#fff}
.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:start}
.contact-form{display:flex;flex-direction:column;gap:1.4rem}
.field label{display:block;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--clay);margin-bottom:.5rem}
.field input,.field textarea{
  width:100%;border:0;border-bottom:1.5px solid var(--line);background:transparent;
  font-family:var(--sans);font-size:1rem;padding:.6rem 0;color:var(--ink);transition:border-color .3s;
}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--clay)}
.field textarea{resize:vertical;min-height:90px}
.field select{width:100%;border:0;border-bottom:1.5px solid var(--line);background:transparent;font-family:var(--sans);font-size:1rem;padding:.6rem 0;color:var(--ink);transition:border-color .3s;cursor:pointer}

/* ---------- Booking request form ---------- */
.booking-form{display:flex;flex-direction:column;gap:1.5rem}
.booking-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem 1.6rem;align-items:start}
.booking-grid .full{grid-column:1 / -1}
.terms{display:flex;align-items:flex-start;gap:.7rem;font-size:.9rem;color:#4a443c;cursor:pointer}
.terms input{width:18px;height:18px;margin-top:.15rem;accent-color:var(--clay);flex-shrink:0}
.terms a{color:var(--clay-dark);text-decoration:underline}
.booking-note{display:none;background:var(--paper-2);border:1px solid var(--line);border-left:3px solid var(--clay);padding:1rem 1.2rem;color:var(--clay-dark);font-size:.94rem}

/* contact-us details column */
.contact-details{display:flex;flex-direction:column;gap:1.1rem}
.contact-details h3{font-size:1.4rem;color:var(--clay-dark)}
.cd-row{display:flex;align-items:center;gap:.85rem;color:#4a443c;font-size:.96rem}
.cd-row .ico{width:40px;height:40px;border-radius:50%;background:rgba(168,150,126,.16);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cd-row .ico svg{width:18px;height:18px;fill:var(--clay-dark)}
.cd-row a{color:#4a443c}.cd-row a:hover{color:var(--clay-dark)}
.contact-details .socials{margin-top:.5rem}
.contact-details .socials a{border:1px solid var(--line)}
.contact-details .socials svg{fill:var(--clay-dark)}
.contact-details .socials a:hover{background:var(--clay);border-color:var(--clay)}
.contact-details .socials a:hover svg{fill:#fff}

/* ---------- Availability calendar (placeholder until plugin) ---------- */
.cal-wrap{border:1px solid var(--line);background:#fff;padding:clamp(1.2rem,3vw,2rem)}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem}
.cal-head h3{font-size:1.3rem;color:var(--clay-dark)}
.cal-nav{display:flex;gap:.5rem}
.cal-nav button{width:34px;height:34px;border:1px solid var(--line);background:none;cursor:pointer;color:var(--clay-dark);font-size:1rem;display:flex;align-items:center;justify-content:center;transition:.25s}
.cal-nav button:hover{background:var(--clay);color:#fff;border-color:var(--clay)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-grid .dow{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--grey);text-align:center;padding-bottom:.4rem}
.cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--ink);background:var(--paper-2);border:1px solid transparent}
.cal-day.empty{background:none}
.cal-day.past{color:#c3bcb0;background:none}
.cal-day.booked{background:#efe6da;color:#b0a48e;text-decoration:line-through}
.cal-day.avail{background:#fff;border-color:var(--line)}
.cal-legend{display:flex;gap:1.4rem;flex-wrap:wrap;margin-top:1.1rem;font-size:.78rem;color:var(--grey)}
.cal-legend span{display:inline-flex;align-items:center;gap:.5rem}
.cal-legend i{width:14px;height:14px;display:inline-block;border:1px solid var(--line)}
.cal-legend i.av{background:#fff}.cal-legend i.bk{background:#efe6da}
.cal-soon{margin-top:1rem;font-size:.8rem;color:var(--grey);font-style:italic}
.map-embed{min-height:340px;border:1px solid var(--line);background:var(--paper-2);width:100%}
.map-embed iframe{width:100%;height:340px;border:0;display:block;filter:grayscale(.3) sepia(.1)}

/* ---------- Interactive property map ---------- */
.imap{position:relative;max-width:1040px;margin:0 auto;line-height:0;border:1px solid var(--line)}
.imap > img{width:100%;height:auto;display:block}
.imap-pt{position:absolute;transform:translate(-50%,-50%);background:none;border:0;padding:0;cursor:pointer;z-index:2}
.imap-pt.open,.imap-pt:hover,.imap-pt:focus{z-index:6;outline:none}
.imap-dot{position:relative;width:clamp(26px,2.6vw,34px);height:clamp(26px,2.6vw,34px);border-radius:50%;
  background:rgba(49,36,25,.85);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 10px rgba(0,0,0,.35);transition:transform .3s ease,background .3s ease}
.imap-dot::before{content:'';position:absolute;inset:-5px;border-radius:50%;border:1.5px solid var(--clay);opacity:0;animation:imapPulse 2.4s ease-out infinite}
@keyframes imapPulse{0%{transform:scale(.7);opacity:.7}100%{transform:scale(1.5);opacity:0}}
.imap-dot svg{width:56%;height:56%;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.imap-pt:hover .imap-dot,.imap-pt.open .imap-dot,.imap-pt:focus .imap-dot{background:var(--clay);transform:scale(1.14)}
.imap-tip{position:absolute;left:50%;bottom:calc(100% + 13px);transform:translateX(-50%);
  width:max-content;max-width:230px;background:#fbf8f3;border:1px solid var(--line);box-shadow:0 14px 34px rgba(49,36,25,.2);
  padding:.7rem .9rem;text-align:left;line-height:1.4;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease;pointer-events:none;z-index:7}
.imap-tip b{display:block;font-family:var(--serif);font-weight:400;font-size:1rem;color:var(--clay-dark);margin-bottom:.15rem}
.imap-tip i{font-style:italic;font-size:.82rem;color:#5a5145}
.imap-pt:hover .imap-tip,.imap-pt.open .imap-tip,.imap-pt:focus .imap-tip{opacity:1;visibility:visible}
/* tooltip position variants (keep it inside the frame near edges) */
.imap-pt.t-below .imap-tip{bottom:auto;top:calc(100% + 13px)}
.imap-pt.t-l .imap-tip{left:auto;right:0;transform:none}
.imap-pt.t-r .imap-tip{left:0;right:auto;transform:none}

/* ---------- FAQ ---------- */
.faq{max-width:860px;margin:0 auto}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{width:100%;text-align:left;background:none;border:0;cursor:pointer;
  padding:1.4rem 0;display:flex;justify-content:space-between;align-items:center;gap:1rem;
  font-family:var(--serif);font-size:1.1rem;color:var(--ink)}
.faq-q .chev{transition:transform .3s;color:var(--clay);flex-shrink:0}
.faq-item.open .chev{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s ease}
.faq-a p{padding:0 0 1.4rem;color:#4a443c}

/* ===========================================================
   FOOTER (4 columns → copyright bar)
   =========================================================== */
.footer{background:var(--clay);color:#fff;padding:clamp(48px,6vw,78px) var(--gutter) 0}
.footer .wrap{padding:0;max-width:var(--maxw);margin:0 auto}
.footer-cols{display:grid;grid-template-columns:1.5fr 1fr 1.3fr 1fr;gap:clamp(2rem,4vw,3.5rem);padding-bottom:3rem}
.footer-brand img{height:94px;width:auto;margin-bottom:1.2rem;display:block}
.footer-brand p{color:rgba(255,255,255,.82);font-size:.9rem;max-width:32ch;line-height:1.7}
.footer h4{color:#fff;font-family:var(--sans);text-transform:uppercase;letter-spacing:.18em;font-size:.8rem;font-weight:600;margin-bottom:1.3rem;opacity:.92}
.footer a,.footer p{color:rgba(255,255,255,.9);font-size:.92rem}
.footer a:hover{color:#fff}
.foot-links{list-style:none;display:flex;flex-direction:column;gap:.7rem}
.foot-links a{position:relative;transition:padding-left .25s}
.foot-links a:hover{padding-left:.35rem}
.foot-row{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}
.foot-row .ico{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.foot-row .ico svg{width:16px;height:16px;fill:#fff}
.socials{display:flex;gap:.8rem;margin-top:.2rem}
.socials a{width:42px;height:42px;border:1px solid rgba(255,255,255,.35);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:.3s}
.socials svg{width:20px;height:20px;fill:#fff}
.socials a:hover{background:#fff}
.socials a:hover svg{fill:var(--clay)}
.footer-bottom{border-top:1px solid rgba(255,255,255,.22);padding:1.4rem 0;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.8rem;color:rgba(255,255,255,.78)}
.footer-bottom a{color:rgba(255,255,255,.78)}.footer-bottom a:hover{color:#fff}

/* ===========================================================
   LEGAL (privacy / cookies)
   =========================================================== */
.legal{max-width:780px;margin:0 auto}
.legal h2{font-size:clamp(1.25rem,2.3vw,1.6rem);color:var(--clay-dark);margin:2.2rem 0 .7rem}
.legal p,.legal li{color:#4a443c;line-height:1.8}
.legal ul{margin:0 0 1.1rem 1.2rem}
.legal li{margin-bottom:.4rem}
.legal a{color:var(--clay-dark);text-decoration:underline}
.legal-updated{font-size:.85rem;color:var(--grey);letter-spacing:.05em;text-transform:uppercase;margin-bottom:1.6rem}
.legal-link{background:none;border:0;color:var(--clay-dark);text-decoration:underline;cursor:pointer;font:inherit;padding:0}

/* ===========================================================
   COOKIE CONSENT BANNER
   =========================================================== */
.cookie-bar{position:fixed;left:clamp(14px,3vw,28px);bottom:clamp(14px,3vw,28px);z-index:120;
  width:min(380px,calc(100vw - 28px));background:var(--paper);border:1px solid var(--line);
  box-shadow:0 18px 50px rgba(49,36,25,.22);padding:1.4rem 1.5rem;
  opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.cookie-bar.show{opacity:1;transform:none}
.cookie-bar h4{font-family:var(--serif);font-weight:400;font-size:1.2rem;color:var(--clay-dark);margin-bottom:.5rem}
.cookie-bar p{font-size:.86rem;line-height:1.65;color:#5a5145;margin-bottom:1.1rem}
.cookie-bar p.ck-link{margin:.85rem 0 0;font-size:.78rem}
.cookie-bar a{color:var(--clay-dark);text-decoration:underline}
.cookie-actions{display:flex;gap:.7rem;flex-wrap:wrap}
.cookie-actions button{font-family:var(--sans);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;padding:.7rem 1.4rem;border:1px solid var(--clay);transition:.3s}
.ck-accept{background:var(--clay);color:#fff}
.ck-accept:hover{background:var(--clay-dark);border-color:var(--clay-dark)}
.ck-decline{background:transparent;color:var(--clay-dark)}
.ck-decline:hover{background:var(--paper-2)}

/* ===========================================================
   LIGHTBOX
   =========================================================== */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(20,17,14,.94);display:none;align-items:center;justify-content:center;padding:4vw}
.lightbox.open{display:flex}
.lightbox img{max-width:92vw;max-height:88vh;object-fit:contain;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb-btn{position:absolute;background:none;border:0;color:#fff;cursor:pointer;font-size:2.4rem;line-height:1;opacity:.8;transition:.2s;padding:1rem}
.lb-btn:hover{opacity:1}
.lb-close{top:10px;right:18px}
.lb-prev{left:8px;top:50%;transform:translateY(-50%)}
.lb-next{right:8px;top:50%;transform:translateY(-50%)}

/* ===========================================================
   REVEAL ANIMATION
   =========================================================== */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s ease}
.reveal.in{opacity:1;transform:none}

/* ===========================================================
   RESPONSIVE
   =========================================================== */
@media(max-width:980px){
  .footer-cols{grid-template-columns:1fr 1fr;gap:2.4rem}
  .service-grid,.gallery-grid,.gallery-grid.preview,.loc-photos{grid-template-columns:repeat(2,1fr)}
  .amenity-grid{grid-template-columns:repeat(3,1fr)}
  .villa-overview .wrap{grid-template-columns:1fr;gap:2.4rem}
  .amenities-compact{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  .feature-hover{height:auto;min-height:0}
  .fh-titles{flex-direction:column}
  .fh-item{border-right:0;border-bottom:1px solid rgba(255,255,255,.25);padding:1.4rem 0;height:auto;min-height:74px}
  .fh-eyebrow{position:static;padding-top:1.8rem}
  .feature-hover .fh-titles{padding-top:3rem}
}
@media(max-width:760px){
  :root{--nav-h:74px}
  .brand-emblem,.brand-emblem-w{height:36px}
  .brand-word{height:28px}
  .menu-toggle .menu-label{display:none}
  .overlay-inner{grid-template-columns:1fr;gap:2.2rem;max-width:420px}
  .overlay-links{order:-1}
  .overlay-links a{font-size:clamp(1.7rem,8vw,2.4rem)}
  .split,.split.reverse .split-media,.contact-layout,.about-split{grid-template-columns:1fr}
  .booking-grid{grid-template-columns:1fr}
  .split.reverse .split-media{order:0}
  .split-media img{aspect-ratio:4/3}
  .about-main{min-height:0;aspect-ratio:4/3}
  .hero{height:82vh;height:82svh;min-height:440px;max-height:680px}
  .hero-slide{background-position:center 38%}
  .hero .hero-content{padding-bottom:clamp(64px,9vh,96px)}
  .hero h1{font-size:clamp(2rem,9vw,2.8rem)}
  .amenity:last-child{grid-column:1 / -1}
  .availability{margin-top:-30px}
  .avail-bar{flex-direction:column}
  .avail-field{border-right:0;border-bottom:1px solid var(--line)}
  .avail-btn{padding:1.1rem}
  .specs{gap:1.6rem 0}
  .spec{flex:0 0 50%;min-width:0;border-right:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16);padding-bottom:1.6rem}
  .spec:nth-child(2n){border-right:0}
  .spec:nth-last-child(-n+2){border-bottom:0;padding-bottom:0}
  .amenity-grid{grid-template-columns:repeat(2,1fr)}
  .cta-band .wrap{flex-direction:column;align-items:flex-start}
}
@media(max-width:760px){
  .footer-cols{grid-template-columns:1fr;gap:2rem;text-align:left}
  .vo-thumbs{grid-template-columns:repeat(3,1fr)}
  .ig-grid{grid-template-columns:repeat(2,1fr)}
  .imap-tip{max-width:46vw;padding:.5rem .65rem}
  .imap-tip b{font-size:.84rem}
  .imap-tip i{font-size:.74rem}
  .footer-bottom{justify-content:center;text-align:center}
}
@media(max-width:480px){
  .gallery-grid,.gallery-grid.preview,.loc-photos,.service-grid{grid-template-columns:1fr}
  .amenity-grid{grid-template-columns:1fr 1fr}
  .amenities-compact{grid-template-columns:1fr}
}

/* ===========================================================
   FLOATING ACTION BUTTONS (WhatsApp + back-to-top)
   =========================================================== */
.floating-btn{
  position:fixed;right:24px;width:54px;height:54px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;z-index:60;padding:0;cursor:pointer;
  box-shadow:0 6px 22px rgba(30,24,18,.28);transition:transform .3s ease,opacity .3s ease,background .3s ease,color .3s ease;
}
.floating-btn svg{width:27px;height:27px;display:block}
/* WhatsApp — on-brand clay, always visible */
.wa-float{bottom:24px;background:var(--clay);border:0}
.wa-float svg{fill:#fff}
.wa-float:hover{background:var(--clay-dark);transform:translateY(-3px)}
/* Back to top — appears on scroll (JS toggles .show) */
.to-top{bottom:90px;background:var(--paper);border:1px solid var(--line);color:var(--clay);
  opacity:0;visibility:hidden;transform:translateY(12px)}
.to-top.show{opacity:1;visibility:visible;transform:translateY(0)}
.to-top:hover{background:var(--clay);color:#fff;border-color:var(--clay)}
@media(max-width:560px){
  .floating-btn{right:16px;width:48px;height:48px}
  .floating-btn svg{width:24px;height:24px}
  .wa-float{bottom:18px}
  .to-top{bottom:78px}
}

/* ===========================================================
   AREA TOUR MAP (Location page) — interactive guide
   =========================================================== */
.area-tour{--tour-h:min(66vh,600px)}
.area-intro{max-width:60ch;margin:0 auto 1.8rem;text-align:center}
.area-filters{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;margin-bottom:.7rem}
.area-chip{border:1px solid var(--line);background:var(--paper);padding:.5rem 1.05rem;border-radius:40px;
  font-family:var(--sans);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--clay-dark);
  cursor:pointer;transition:.25s ease}
.area-chip:hover{border-color:var(--clay)}
.area-chip.on{background:var(--clay);color:#fff;border-color:var(--clay)}
.area-tourbar{display:flex;align-items:center;justify-content:center;gap:.8rem;margin-bottom:1.4rem;flex-wrap:wrap}
.area-tourbar .tbtn{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--clay);background:transparent;
  color:var(--clay-dark);padding:.5rem 1.1rem;border-radius:40px;font-family:var(--sans);font-size:.72rem;
  letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:.25s}
.area-tourbar .tbtn:hover{background:var(--clay);color:#fff}
.area-tourbar .tstep{font-size:.78rem;color:var(--grey);letter-spacing:.05em;min-width:120px;text-align:center}

.area-layout{display:grid;grid-template-columns:1.45fr 1fr;gap:22px;align-items:start}
.area-map-wrap{position:sticky;top:calc(var(--nav-h) + 12px)}
#areaMap{height:var(--tour-h);border:1px solid var(--line);background:var(--paper-2);z-index:1}
.area-legend{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.7rem;font-size:.72rem;color:var(--grey)}
.area-legend span{display:inline-flex;align-items:center;gap:.4rem}
.area-legend i{width:11px;height:11px;border-radius:50%;display:inline-block}

.area-list{display:flex;flex-direction:column;gap:12px;max-height:var(--tour-h);overflow:auto;padding-right:6px;scrollbar-width:thin}
.area-group-h{font-family:var(--sans);text-transform:uppercase;letter-spacing:.2em;font-size:.68rem;color:var(--clay-dark);
  margin:.4rem 0 .2rem;font-weight:500}
.area-card{display:grid;grid-template-columns:88px 1fr;gap:13px;border:1px solid var(--line);background:var(--paper);
  padding:11px;cursor:pointer;transition:border-color .25s ease,box-shadow .25s ease;text-align:left;width:100%;font:inherit;color:inherit}
.area-card:hover,.area-card.active{border-color:var(--clay);box-shadow:0 8px 22px rgba(30,24,18,.09)}
.area-thumb{position:relative;width:88px;height:88px;background:var(--sand);overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.area-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.area-thumb svg{width:26px;height:26px;fill:var(--clay-dark);opacity:.45}
.area-card h4{font-family:var(--serif);color:var(--ink);font-size:1.08rem;line-height:1.2;margin:0 0 .2rem}
.area-card .amc{display:flex;align-items:center;gap:.5rem;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--grey);margin-bottom:.35rem}
.area-card .amc b{color:var(--clay-dark);font-weight:500}
.area-card p{font-size:.83rem;color:#4a443c;margin:0;line-height:1.5}
.area-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem}
.area-tag{font-size:.66rem;background:var(--paper-2);border:1px solid var(--line);padding:.12rem .5rem;color:var(--clay-dark);letter-spacing:.03em}

/* Leaflet custom pins + popup on-brand */
.area-pin{width:28px;height:28px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;
  box-shadow:0 3px 9px rgba(30,24,18,.35);display:flex;align-items:center;justify-content:center}
.area-pin svg{transform:rotate(45deg);width:14px;height:14px;fill:#fff}
.area-pin.pin-home{background:var(--brown);width:32px;height:32px}
.area-pin.pin-beach{background:var(--clay)}
.area-pin.pin-village{background:var(--clay-dark)}
.area-pin.pin-food{background:#b5744e}
.area-pin.pin-sight{background:#7c8a6b}
.area-pin.is-active{outline:3px solid rgba(168,150,126,.45);outline-offset:2px}
.leaflet-popup-content-wrapper{border-radius:3px;box-shadow:0 10px 30px rgba(30,24,18,.25)}
.leaflet-popup-content{margin:0;width:230px!important}
.area-pop-img{position:relative;height:120px;background:var(--sand);display:flex;align-items:center;justify-content:center;overflow:hidden}
.area-pop-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.area-pop-img svg{width:30px;height:30px;fill:var(--clay-dark);opacity:.45}
.area-pop-body{padding:12px 14px 14px}
.area-pop-body h4{font-family:var(--serif);font-size:1.15rem;color:var(--ink);margin:0 0 .25rem}
.area-pop-body .amc{font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--grey);margin-bottom:.45rem}
.area-pop-body .amc b{color:var(--clay-dark);font-weight:500}
.area-pop-body p{font-size:.82rem;color:#4a443c;line-height:1.5;margin:0 0 .5rem}
.area-pop-tip{font-size:.76rem;color:var(--clay-dark);border-top:1px solid var(--line);padding-top:.5rem;margin-top:.2rem}
.area-pop-tip b{font-weight:500}

@media(max-width:860px){
  .area-layout{grid-template-columns:1fr;gap:12px}
  .area-map-wrap{position:static}
  #areaMap{height:46vh;min-height:300px}
  /* list becomes a swipeable horizontal card strip (map stays in view) */
  .area-list{max-height:none;overflow-x:auto;overflow-y:hidden;flex-direction:row;gap:12px;order:2;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 8px;scrollbar-width:none}
  .area-list::-webkit-scrollbar{display:none}
  .area-group-h{display:none}
  .area-card{scroll-snap-align:center;flex:0 0 84%;max-width:84%}
  /* compact map popup so the info card fits the shorter mobile map */
  .leaflet-popup-content{width:210px!important}
  .area-pop-img{height:78px}
  .area-pop-body{padding:10px 12px 12px}
  .area-pop-body h4{font-size:1.02rem}
  .area-pop-body p{font-size:.76rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .area-pop-body .area-tags{display:none}
}

/* ===========================================================
   EXPERIENCES (Services page) — "menu of possibilities"
   =========================================================== */
.exp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:1024px){.exp-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.exp-grid{grid-template-columns:1fr}}
.exp-card{background:var(--paper);border:1px solid var(--line);padding:1.9rem 1.8rem;transition:border-color .3s ease,box-shadow .3s ease}
.exp-card:hover{border-color:var(--clay);box-shadow:0 10px 26px rgba(30,24,18,.07)}
.exp-num{display:block;font-family:var(--serif);font-size:1rem;letter-spacing:.18em;color:var(--clay)}
.exp-card h3{font-family:var(--serif);font-weight:400;font-size:1.3rem;color:var(--ink);line-height:1.22;margin:.5rem 0 1.1rem}
.exp-items{list-style:none;display:flex;flex-direction:column;gap:.6rem}
.exp-items li{position:relative;padding-left:1.15rem;font-size:.92rem;color:#4a443c;line-height:1.4}
.exp-items li::before{content:'';position:absolute;left:0;top:.66em;width:7px;height:1px;background:var(--clay)}

/* ---------- Events page: editorial rows ---------- */
.event-row{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:clamp(28px,4.5vw,72px);
  align-items:center;
  padding-block:clamp(30px,4vw,56px);
  border-bottom:1px solid var(--line);
}
.event-row:first-child{padding-top:0}
.event-row:last-child{border-bottom:0;padding-bottom:0}
.event-row.flip .event-photo{order:2}
.event-photo{margin:0}
.event-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
.event-body h3{font-size:clamp(1.5rem,2.6vw,2.1rem);color:var(--ink);margin:.5rem 0 .9rem}
.event-facts{
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.72rem;
  font-weight:500;
  color:var(--clay-dark);
  margin-bottom:1rem;
}
.event-desc{margin-bottom:1.3rem}
.event-items{display:grid;grid-template-columns:1fr 1fr;gap:.55rem 1.2rem}
.event-enquire{
  display:inline-block;
  margin-top:1.5rem;
  font-family:var(--sans);
  font-size:.8rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--clay);
  border-bottom:1px solid var(--clay);
  padding-bottom:.25rem;
  transition:color .3s ease,border-color .3s ease;
}
.event-enquire:hover{color:var(--clay-dark);border-color:var(--clay-dark)}
@media(max-width:880px){
  .event-row{grid-template-columns:1fr;gap:1.6rem}
  .event-row.flip .event-photo{order:0}
  .event-items{grid-template-columns:1fr}
}

/* ---------- Services page: Events teaser band ---------- */
.events-teaser{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:clamp(28px,4.5vw,72px);
  align-items:center;
}
.events-teaser-photo{margin:0}
.events-teaser-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
.events-teaser-body .btn{margin-top:1.4rem}
@media(max-width:880px){
  .events-teaser{grid-template-columns:1fr;gap:1.6rem}
}

/* ===========================================================
   MARKETING / INQUIRY POPUP
   =========================================================== */
.promo-overlay{position:fixed;inset:0;z-index:200;background:rgba(20,17,14,.62);
  display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto;
  opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s}
.promo-overlay.show{opacity:1;visibility:visible}
.promo-modal{position:relative;width:100%;max-width:560px;background-size:cover;background-position:center;
  padding:clamp(16px,3.5vw,32px);box-shadow:0 30px 80px rgba(0,0,0,.5);
  transform:translateY(16px) scale(.98);transition:transform .45s ease}
.promo-overlay.show .promo-modal{transform:none}
.promo-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border:0;cursor:pointer;
  background:rgba(20,17,14,.4);color:#fff;font-size:1.5rem;line-height:1;border-radius:50%;
  display:flex;align-items:center;justify-content:center;transition:background .25s}
.promo-close:hover{background:rgba(20,17,14,.68)}
.promo-card{background:var(--paper);border:1px solid var(--line);text-align:center;
  padding:clamp(26px,5vw,44px) clamp(20px,5vw,42px)}
.promo-title{font-family:var(--serif);font-weight:400;color:var(--ink);line-height:1.12;
  font-size:clamp(1.7rem,4.4vw,2.4rem);margin-bottom:1rem}
.promo-sub{font-family:var(--sans);text-transform:uppercase;letter-spacing:.16em;font-weight:500;
  font-size:.76rem;color:var(--clay-dark);margin-bottom:.9rem}
.promo-q{font-family:var(--serif);font-style:italic;color:var(--clay);font-size:1.15rem;line-height:1.3;margin-bottom:1rem}
.promo-text{font-size:.9rem;color:#4a443c;line-height:1.6;margin-bottom:1.5rem}
.promo-cta.cta{width:236px;max-width:100%;height:84px;padding:8px 22px 8px 58px;justify-content:center;text-align:center;font-size:.94rem;letter-spacing:.08em;line-height:1.32;white-space:normal;margin-bottom:.9rem}
.promo-foot{font-size:.84rem;color:var(--grey);line-height:1.5;margin:0}
@media(max-width:480px){
  .promo-card{padding:26px 18px}
}
