/* ═══════════════════════════════════════════════
   RESET & VARIABLES
═══════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#faf9f7;--surface:#f0ebe3;--ink:#1a1814;--sand:#e8e0d3;
  --stone:#b5aa9a;--accent:#c4a882;--text:#3a3630;--muted:#8a8278;
  --serif:'EB Garamond',Georgia,serif;
  --sans:'DM Sans',sans-serif;
  --nav-h:64px;--tab-h:50px;--tr:0.32s ease;
  --panel-sand:#e8e0d3;
}
[data-theme="dark"]{
  --bg:#141210;--surface:#1c1a15;--ink:#ede8df;--sand:#2c2920;
  --stone:#5a5448;--accent:#d4b892;--text:#c0b8a8;--muted:#706860;
  --panel-sand:#242018;
}

/* ═══ SKIP NAV ═══ */
.skip-link{position:absolute;top:-100px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:.8rem 1.5rem;font-size:.85rem;z-index:9999;transition:top .2s;border-radius:0 0 8px 8px;}
.skip-link:focus{top:0;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{font-family:var(--sans);background:var(--bg);color:var(--text);overflow-x:hidden;transition:background var(--tr),color var(--tr);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
img{max-width:100%;height:auto;display:block;}
button{font-family:var(--sans);cursor:pointer;}
button svg,a svg{pointer-events:none;}
a{text-decoration:none;}

/* Hide feather icons before feather.replace() runs */
[data-feather]{display:none;}
/* Inactive panels are hidden via display:none (set by JS in switchTab) */
/* Subtle grain overlay for depth */
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:9998;opacity:.018;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
::selection{background:var(--accent);color:var(--bg);}

/* ═══════════════════════════════════════════════
   TOP NAVIGATION
═══════════════════════════════════════════════ */
.top-nav{
  position:fixed;top:0;left:0;right:0;z-index:300;height:var(--nav-h);
  display:flex;align-items:center;justify-content:space-between;padding:0 2.5rem;
  background:rgba(250,249,247,0.95);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-bottom:1px solid var(--sand);transition:background var(--tr),border-color var(--tr);
}
[data-theme="dark"] .top-nav{background:rgba(20,18,16,0.95);}
.nav-logo{font-family:var(--serif);font-size:1.35rem;font-weight:300;letter-spacing:.08em;color:var(--ink);flex-shrink:0;transition:color var(--tr);}
.nav-logo span{font-size:.85em;color:var(--accent);letter-spacing:.04em;}
.nav-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;justify-content:flex-end;}
.lang-sw{display:flex;gap:2px;border:1px solid var(--sand);padding:2px;transition:border-color var(--tr);border-radius:8px;}
.lang-btn{background:none;border:none;font-size:.62rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:.3rem .5rem;transition:all .2s;border-radius:6px;}
.lang-btn.active{background:var(--ink);color:var(--bg);}
.lang-btn:hover:not(.active){color:var(--ink);}
.theme-btn{background:none;border:1px solid var(--sand);width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:.92rem;color:var(--text);transition:all .2s;border-radius:8px;}
.theme-btn:hover{border-color:var(--accent);background:var(--surface);}
.nav-cta{font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--bg);background:var(--ink);padding:.55rem 1.2rem;border:none;transition:background .2s;white-space:nowrap;border-radius:8px;}
.nav-cta:hover{background:var(--accent);}

/* Desktop: hide mobile-only elements */
.nav-burger{display:none;}
.mob-lang{display:none;}
.burger-menu{display:none;}

/* ═══════════════════════════════════════════════
   TAB BAR
═══════════════════════════════════════════════ */
.tab-bar{
  position:fixed;top:var(--nav-h);left:0;right:0;z-index:299;height:var(--tab-h);
  background:var(--bg);border-bottom:1px solid var(--sand);
  display:flex;align-items:stretch;overflow-x:auto;scrollbar-width:none;
  transition:background var(--tr),border-color var(--tr);
}
.tab-bar::-webkit-scrollbar{display:none;}
.tab-btn{
  flex:1;min-width:100px;background:none;border:none;
  font-size:.66rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);position:relative;transition:color .2s;white-space:nowrap;padding:0 .7rem;
  display:flex;align-items:center;justify-content:center;
}
.tab-btn:hover{color:var(--ink);}
.tab-btn.active{color:var(--ink);font-weight:500;}
.tab-btn.active::after{content:'';position:absolute;bottom:0;left:10%;right:10%;height:2px;background:var(--accent);}

/* ═══════════════════════════════════════════════
   PANELS
═══════════════════════════════════════════════ */
.tab-content{padding-top:calc(var(--nav-h) + var(--tab-h));}

.tab-panel{display:none;}
.tab-panel.active{display:block;animation:fadeUp .4s ease;will-change:opacity,transform;}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}

/* ═══════════════════════════════════════════════
   SHARED TYPOGRAPHY
═══════════════════════════════════════════════ */
.si{padding:5rem 5rem 4rem;}
.stag{font-size:.68rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:.9rem;}
.stitle{font-family:var(--serif);font-size:clamp(2rem,3.5vw,3rem);font-weight:400;color:var(--ink);line-height:1.12;margin-bottom:1.2rem;transition:color var(--tr);}
.stitle em{font-style:italic;}
.sdesc{font-size:.92rem;font-weight:300;color:var(--muted);line-height:1.8;max-width:520px;}
.btn-p{font-size:.76rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--bg);background:var(--ink);padding:.85rem 1.7rem;display:inline-block;transition:background .2s;border:none;border-radius:8px;}
.btn-p:hover{background:var(--accent);}
.btn-g{font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:inline-flex;align-items:center;gap:.5rem;transition:color .2s;background:none;border:none;border-radius:8px;}
.btn-g:hover{color:var(--ink);}
.btn-g::after{content:'→';}

/* ═══════════════════════════════════════════════
   FOOTER (per-panel)
═══════════════════════════════════════════════ */
.panel-footer{background:var(--ink);padding:2rem 5rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;transition:background var(--tr);}
[data-theme="dark"] .panel-footer{background:var(--surface);border-top:1px solid var(--sand);}
.ftlogo{font-family:var(--serif);font-size:1.2rem;font-weight:300;color:#f0ece4;transition:color var(--tr);flex:1;}
[data-theme="dark"] .ftlogo{color:var(--ink);}
.ftlogo em{font-style:normal;font-size:.85em;color:var(--accent);}
.ftlinks{display:flex;gap:1.5rem;}
.ftlinks a{font-size:.7rem;letter-spacing:.08em;color:#8a8278;transition:color .2s;}
.ftlinks a:hover{color:var(--accent);}
.ft-logo-img{height:40px;width:40px;object-fit:contain;object-position:center;opacity:.9;border-radius:8px;transition:opacity .2s;vertical-align:middle;flex-shrink:0;}
.ft-logo-img:hover{opacity:1;}
.ftcopy{font-size:.7rem;color:#5a5448;flex:1;text-align:right;}

/* ═══════════════════════════════════════════════
   HOME / HERO
═══════════════════════════════════════════════ */
.hero-wrap{display:grid;grid-template-columns:1fr 1fr;min-height:calc(100vh - var(--nav-h) - var(--tab-h));}
.hero-text{display:flex;flex-direction:column;justify-content:center;padding:5rem 4rem 5rem 5rem;}
.htag{font-size:.7rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1.5rem;}
.htitle{font-family:var(--serif);font-size:clamp(3rem,5vw,5.2rem);font-weight:400;line-height:1.05;color:var(--ink);margin-bottom:1rem;transition:color var(--tr);}
.htitle em{font-style:italic;color:var(--accent);}
.hsub{font-size:.96rem;font-weight:300;color:var(--muted);line-height:1.75;max-width:380px;margin-bottom:3rem;}
.hactions{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;}
.hstats{display:flex;gap:2.5rem;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--sand);justify-content:flex-start;}
.snum{font-family:var(--serif);font-size:2rem;font-weight:300;color:var(--ink);display:block;transition:color var(--tr);}
.slbl{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);}
.hero-img{position:relative;overflow:hidden;}
.hero-img::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(196,168,130,.15),transparent 60%);z-index:1;}

.hero-badge{position:absolute;bottom:2rem;left:2rem;z-index:2;background:rgba(250,249,247,.96);padding:1rem 1.4rem;display:flex;align-items:center;gap:.8rem;transition:background var(--tr);border-radius:10px;}
[data-theme="dark"] .hero-badge{background:rgba(28,26,21,.96);}
.bstars{color:var(--accent);font-size:.9rem;letter-spacing:2px;}
.btxt{font-size:.72rem;color:var(--text);}
.btxt strong{display:block;font-size:.82rem;}

/* ═══════════════════════════════════════════════
   GALLERY
═══════════════════════════════════════════════ */
#panel-gallery .si{background:var(--panel-sand);transition:background var(--tr);}
.gal-filters{display:flex;gap:.5rem;flex-wrap:wrap;margin:1.8rem 0 2rem;}
.fbtn{font-size:.68rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid var(--stone);color:var(--muted);padding:.5rem 1.1rem;min-height:36px;transition:all .2s;border-radius:8px;}
.fbtn:hover,.fbtn.active{background:var(--ink);color:var(--bg);border-color:var(--ink);}

.gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.gal-item{position:relative;overflow:hidden;cursor:pointer;border-radius:8px;transition:transform .3s,opacity .3s;}
.gal-item:hover{transform:scale(1.015);}
.gal-item:hover .gal-over{opacity:1;}
.gal-item.hidden{display:none;}
.gal-over{position:absolute;inset:0;background:rgba(26,24,20,.35);opacity:0;transition:opacity .3s;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.6rem;}
.gal-ph{width:100%;display:block;aspect-ratio:4/3;object-fit:cover;border-radius:8px;}
.gal-item img{opacity:0;transition:opacity .4s ease;}
.gal-item img.loaded{opacity:1;}

/* ─── Feather icon sizing (all contexts) ─── */
.gal-over svg{width:24px;height:24px;stroke:#fff;stroke-width:2;}
.lb-close svg,.modal-close svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.8;}
.lb-prev svg,.lb-next svg{width:24px;height:24px;stroke:#fff;stroke-width:1.8;}
.car-btn svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.8;}
.btt svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.8;}
.vr-btn svg{width:16px;height:16px;stroke:#fff;stroke-width:1.8;}
.vr-close svg{width:16px;height:16px;stroke:rgba(255,255,255,.4);stroke-width:1.8;}
.vr-close:hover svg{stroke:#fff;}
.faq-ic svg{width:16px;height:16px;stroke:var(--accent);stroke-width:2;display:block;}
.dir-summary svg{width:16px;height:16px;stroke:var(--accent);stroke-width:1.8;display:inline;vertical-align:text-bottom;}
#toast svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;display:inline;vertical-align:text-bottom;}
.home-video-act svg{width:18px;height:18px;stroke:#fff;stroke-width:1.8;display:block;}
.dir-arrow svg{width:16px;height:16px;stroke:var(--accent);stroke-width:1.8;}
.exp-dist svg{width:12px;height:12px;stroke:var(--stone);stroke-width:1.8;display:inline;vertical-align:text-bottom;}

/* Gallery category header */
.gal-cat-header{grid-column:1/-1;padding:1.5rem 0 .5rem;font-family:var(--serif);font-size:1.3rem;font-weight:300;color:var(--ink);border-bottom:1px solid var(--stone);margin-bottom:.5rem;transition:color var(--tr);}
.gal-cat-header:first-of-type{padding-top:0;}


/* ═══════════════════════════════════════════════
   LIGHTBOX
═══════════════════════════════════════════════ */
.lb{position:fixed;inset:0;z-index:999;background:rgba(10,8,6,.96);display:none;flex-direction:column;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.lb.open{display:flex;}
.lb-wrap{position:relative;width:min(80vw,820px);height:min(75vh,600px);display:flex;align-items:center;justify-content:center;}
.lb-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:10px;overflow:hidden;background:#0a0806;}
.lb-close{position:absolute;top:-50px;right:0;background:none;border:1px solid rgba(255,255,255,.2);color:#fff;width:38px;height:38px;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all .2s;border-radius:8px;}
.lb-close:hover{background:rgba(255,255,255,.1);}
.lb-prev,.lb-next{position:fixed;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.15);color:#fff;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;transition:all .2s;z-index:1000;border-radius:8px;}
.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,.12);}
.lb-prev{left:2rem;}
.lb-next{right:2rem;}
.lb-meta{text-align:center;margin-top:1.2rem;}
.lb-cap{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.5);}
.lb-cnt{font-size:.65rem;color:rgba(255,255,255,.3);margin-top:.2rem;}

/* ═══════════════════════════════════════════════
   AMENITIES
═══════════════════════════════════════════════ */
.am-layout{display:grid;grid-template-columns:1fr 2fr;gap:5rem;align-items:start;}
.am-intro{position:sticky;top:calc(var(--nav-h)+var(--tab-h)+2rem);}
.am-big{font-family:var(--serif);font-size:5rem;font-weight:300;color:var(--sand);line-height:1;margin-bottom:.5rem;transition:color var(--tr);}
.am-grid{display:grid;grid-template-columns:repeat(3,1fr);}
.am-item{padding:1.7rem 1.4rem;border-bottom:1px solid var(--sand);border-right:1px solid var(--sand);transition:background .2s,border-color var(--tr),border-radius var(--tr);}
.am-item:hover{background:var(--surface);}
.am-item:nth-child(3n){border-right:none;}
.am-item:last-child{border-bottom:none;}
.am-item:nth-last-child(-n+3){border-bottom:none;}
.am-ico{font-size:1.3rem;margin-bottom:.65rem;display:block;}
.am-name{font-family:var(--serif);font-size:1rem;color:var(--ink);margin-bottom:.25rem;transition:color var(--tr);}
.am-desc{font-size:.76rem;color:var(--muted);line-height:1.5;}

/* ═══════════════════════════════════════════════
   REVIEWS
═══════════════════════════════════════════════ */
#panel-reviews .si{background:var(--panel-sand);transition:background var(--tr);padding-bottom:2.5rem;}
#panel-reviews .car-ctrl{margin-top:1.25rem;}
.rv-top{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:3rem;flex-wrap:wrap;gap:1rem;}
.rv-score-num{font-family:var(--serif);font-size:3.5rem;font-weight:300;color:var(--ink);line-height:1;transition:color var(--tr);}
.rv-score-stars{color:var(--accent);letter-spacing:3px;font-size:1rem;margin:.3rem 0;}
.rv-score-cnt{font-size:.7rem;color:var(--muted);letter-spacing:.08em;}

/* Carousel */
.car-viewport{position:relative;overflow:hidden;border-radius:8px;}
.car-track{display:flex;transition:transform .7s cubic-bezier(.4,0,.2,1);align-items:flex-start;}
.car-slide{min-width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;}
.rv-card{background:var(--bg);padding:2rem;position:relative;transition:background .2s;border:1px solid rgba(181,170,154,.2);display:flex;flex-direction:column;border-radius:10px;}
.rv-card:hover{background:var(--surface);}
.rv-stars{color:var(--accent);font-size:.78rem;letter-spacing:2px;margin-bottom:1rem;}
.rv-txt{font-family:var(--serif);font-size:1rem;font-weight:300;font-style:italic;color:var(--text);line-height:1.7;margin-bottom:1.5rem;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;}
.rv-txt.rv-expanded{-webkit-line-clamp:unset;display:block;}
.rv-read-more{background:none;border:none;padding:0 0 1rem;font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);cursor:pointer;display:block;}
.rv-auth{display:flex;align-items:center;gap:.8rem;}
.rv-av{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:500;color:#fff;flex-shrink:0;}
.rv-name{font-size:.8rem;font-weight:500;color:var(--ink);transition:color var(--tr);}
.rv-meta{font-size:.68rem;color:var(--muted);margin-top:.1rem;}
.rv-date{position:absolute;top:1.4rem;right:1.4rem;font-size:.65rem;color:var(--stone);}
.car-ctrl{display:flex;justify-content:center;align-items:center;gap:1.2rem;margin-top:2rem;}
.car-dots{display:flex;gap:.5rem;}
.car-dot{width:8px;height:8px;border-radius:50%;background:var(--stone);border:none;transition:all .3s;padding:0;}
.car-dot.active{background:var(--accent);transform:scale(1.35);}
.car-btns{display:flex;gap:.5rem;}
.car-btn{background:none;border:1px solid var(--stone);color:var(--text);width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all .2s;border-radius:8px;}
.car-btn:hover{border-color:var(--ink);background:var(--ink);color:var(--bg);}

/* ═══════════════════════════════════════════════
   EXPLORE & MAP
═══════════════════════════════════════════════ */
#villa-map{height:480px;width:100%;border:1px solid var(--sand);z-index:1;border-radius:8px 8px 0 0;transition:border-color var(--tr);}
.dir-bar{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:1rem 1.5rem;background:var(--surface);border:1px solid var(--sand);border-top:none;border-radius:0 0 8px 8px;flex-wrap:wrap;transition:background var(--tr),border-color var(--tr);}
.dir-label{font-family:var(--serif);font-size:1rem;color:var(--ink);transition:color var(--tr);}
.dir-btns{display:flex;gap:.6rem;flex-wrap:wrap;}
.dir-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.1rem;min-width:130px;justify-content:center;font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;border-radius:8px;transition:all .2s;color:#fff;}
.dir-btn:hover{opacity:.85;transform:translateY(-1px);}
.dir-google{background:#4285F4;}
.dir-apple{background:#333;}
[data-theme="dark"] .dir-apple{background:#555;}
.dir-waze{background:#33CCFF;color:#333;}
[data-theme="dark"] .leaflet-tile{filter:invert(1) hue-rotate(180deg) brightness(.85) contrast(1.1);}
[data-theme="dark"] .leaflet-control-zoom a{background:var(--surface);color:var(--ink);border-color:var(--sand);}
.leaflet-popup-content strong{font-family:var(--serif);}
.exp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:3rem;align-items:stretch;}
.exp-card{border:1px solid var(--sand);padding:1.5rem;transition:border-color .2s,transform .2s,background .2s;background:var(--bg);display:flex;flex-direction:column;border-radius:8px;}
.exp-card:hover{border-color:var(--accent);transform:translateY(-3px);}
.exp-ico{font-size:1.7rem;margin-bottom:.75rem;display:block;}
.exp-cat{font-size:.65rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:.3rem;}
.exp-name{font-family:var(--serif);font-size:1.05rem;color:var(--ink);margin-bottom:.4rem;transition:color var(--tr);}
.exp-desc{font-size:.77rem;color:var(--muted);line-height:1.6;margin-bottom:.65rem;}
.exp-dist{font-size:.68rem;color:var(--stone);margin-top:auto;padding-top:.5rem;}

/* Location info bar */
.loc-bar{display:grid;grid-template-columns:repeat(4,1fr);align-items:start;gap:1.5rem;margin-bottom:3rem;padding:2rem;background:var(--surface);border:1px solid var(--sand);border-radius:8px;transition:background var(--tr),border-color var(--tr);}
.loc-item{display:flex;align-items:flex-start;gap:.8rem;}
.loc-ico{font-size:1.1rem;margin-top:2px;}
.loc-label{font-size:.68rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);margin-bottom:.15rem;}
.loc-val{font-size:.88rem;color:var(--text);}

/* ═══════════════════════════════════════════════
   BOOK & FAQ
═══════════════════════════════════════════════ */
.bfaq-layout{display:grid;grid-template-columns:1fr 1fr;gap:5rem;margin-top:3rem;}
.plat-btns{display:flex;gap:1rem;margin-bottom:2.5rem;flex-wrap:wrap;}
.btn-airbnb{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1.1rem 2rem;min-height:56px;background:#FF5A5F;color:#fff;font-size:.82rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;border:none;transition:all .2s;flex:1;min-width:200px;border-radius:8px;}
.btn-airbnb:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 4px 16px rgba(255,90,95,.3);}
.btn-bkng{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1.1rem 2rem;min-height:56px;background:#003580;color:#fff;font-size:.82rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;border:none;transition:all .2s;flex:1;min-width:200px;border-radius:8px;}
.btn-bkng:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,53,128,.3);}
.plat-icon{font-size:1.1rem;}
.div-or{display:flex;align-items:center;gap:1rem;margin:2rem 0;color:var(--stone);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;}
.ci-info{margin-top:2.5rem;}
.ci-row{display:flex;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--sand);font-size:.84rem;transition:border-color var(--tr);}
.ci-lbl{font-weight:500;color:var(--stone);min-width:110px;}

/* FAQ */
.faq-box{background:var(--surface);padding:2.5rem;border:1px solid var(--sand);border-radius:8px;transition:background var(--tr),border-color var(--tr);}
.faq-box-title{font-family:var(--serif);font-size:1.55rem;font-weight:300;color:var(--ink);margin-bottom:1.5rem;transition:color var(--tr);}
.faq-item{border-bottom:1px solid var(--sand);transition:border-color var(--tr);}
.faq-q{width:100%;background:none;border:none;display:flex;justify-content:space-between;align-items:center;padding:1.1rem 0;text-align:left;gap:1rem;}
.faq-qt{font-family:var(--serif);font-size:.98rem;font-weight:400;color:var(--ink);transition:color var(--tr);text-align:left;}
.faq-ic{font-size:1.1rem;color:var(--accent);transition:transform .3s;flex-shrink:0;}
.faq-item.open .faq-ic{transform:rotate(45deg);}
.faq-a{font-size:.85rem;color:var(--muted);line-height:1.8;max-height:0;overflow:hidden;transition:max-height .4s ease,padding .3s;}
.faq-item.open .faq-a{max-height:280px;padding-bottom:1.1rem;}

/* ═══════════════════════════════════════════════
   COOKIE BANNER (GDPR)
═══════════════════════════════════════════════ */
#ck-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999;background:var(--ink);color:rgba(240,236,228,.9);padding:1rem 3rem calc(1rem + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;}
#ck-banner.hidden{display:none!important;}
[data-theme="dark"] #ck-banner{background:#0e0c08;}
.ck-txt{font-size:.8rem;line-height:1.5;flex:1;min-width:200px;}
.ck-txt a{color:var(--accent);text-decoration:underline;}
.ck-acts{display:flex;gap:.6rem;flex-shrink:0;position:relative;z-index:1;}
.ck-acc{background:var(--accent);color:var(--ink);border:none;padding:.65rem 1.4rem;font-size:.74rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;transition:background .2s,transform .1s;cursor:pointer;position:relative;z-index:802;-webkit-tap-highlight-color:rgba(196,168,130,.3);border-radius:8px;}
.ck-acc:active{transform:scale(.96);}
.ck-acc:hover{background:#d4c098;}
.ck-dec{background:none;color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.2);padding:.65rem 1.4rem;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;transition:all .2s,transform .1s;cursor:pointer;position:relative;z-index:802;-webkit-tap-highlight-color:rgba(255,255,255,.2);border-radius:8px;}
.ck-dec:active{transform:scale(.96);}
.ck-dec:hover{color:#fff;border-color:rgba(255,255,255,.4);}

/* ═══════════════════════════════════════════════
   TOAST
═══════════════════════════════════════════════ */
#toast{position:fixed;bottom:5rem;right:2rem;z-index:900;background:var(--ink);color:var(--bg);padding:.9rem 1.4rem;font-size:.82rem;transform:translateY(80px);opacity:0;transition:all .4s;border-radius:8px;}
#toast.show{transform:translateY(0);opacity:1;}

/* ═══════════════════════════════════════════════
   PRIVACY POLICY MODAL
═══════════════════════════════════════════════ */
.modal-overlay{position:fixed;inset:0;z-index:950;background:rgba(10,8,6,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:2rem;}
.modal-overlay.open{display:flex;}
.modal-box{background:var(--bg);max-width:720px;width:100%;max-height:85vh;overflow-y:auto;padding:3rem;position:relative;border:1px solid var(--sand);transition:background var(--tr),border-color var(--tr);border-radius:10px;}
.modal-close{position:absolute;top:1.2rem;right:1.2rem;background:none;border:1px solid var(--sand);color:var(--text);width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all .2s;border-radius:8px;}
.modal-close:hover{background:var(--surface);border-color:var(--accent);}
.modal-box h2{font-family:var(--serif);font-size:1.8rem;font-weight:300;color:var(--ink);margin-bottom:1.5rem;transition:color var(--tr);}
.modal-box h3{font-family:var(--serif);font-size:1.15rem;font-weight:400;color:var(--ink);margin:1.8rem 0 .6rem;transition:color var(--tr);}
.modal-box p{font-size:.88rem;color:var(--muted);line-height:1.8;margin-bottom:.8rem;}
.modal-box ul{margin:.5rem 0 1rem 1.5rem;font-size:.86rem;color:var(--muted);line-height:1.8;}
.modal-box ul li{margin-bottom:.3rem;}
.modal-box .pp-date{font-size:.72rem;color:var(--stone);letter-spacing:.1em;text-transform:uppercase;margin-bottom:1.5rem;}

/* ═══════════════════════════════════════════════
   ACCESSIBILITY WIDGET
═══════════════════════════════════════════════ */
.a11y-fab{position:fixed;bottom:calc(2rem + env(safe-area-inset-bottom,0px));left:2rem;z-index:700;width:52px;height:52px;border-radius:50%;background:var(--ink);color:var(--bg);border:2px solid var(--sand);display:flex;align-items:center;justify-content:center;font-size:1.35rem;box-shadow:0 4px 16px rgba(0,0,0,.2);transition:all .3s;cursor:pointer;touch-action:manipulation;}
.a11y-fab:hover{transform:scale(1.1);box-shadow:0 6px 24px rgba(0,0,0,.3);}
[data-theme="dark"] .a11y-fab{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 4px 20px rgba(212,184,146,.35);}
.a11y-panel{position:fixed;bottom:calc(6rem + env(safe-area-inset-bottom,0px));left:2rem;z-index:700;background:var(--bg);border:1px solid var(--sand);padding:1.8rem;width:290px;max-height:75vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.15);transform:translateY(12px);opacity:0;pointer-events:none;transition:all .3s;border-radius:8px;}
.a11y-panel.open{transform:translateY(0);opacity:1;pointer-events:all;}
/* Shift FAB and panel up when voice reader bar is active */
.vr-bar.active~.a11y-fab,.vr-bar.active+.a11y-fab{bottom:calc(5rem + env(safe-area-inset-bottom,0px))!important;}
body:has(.vr-bar.active) .a11y-fab{bottom:calc(5rem + env(safe-area-inset-bottom,0px));}
body:has(.vr-bar.active) .a11y-panel{bottom:calc(9rem + env(safe-area-inset-bottom,0px));}
@media(max-width:900px){
  body:has(.a11y-panel.open) .cfab,
  body:has(.a11y-panel.open) .cfab *,
  body:has(.a11y-panel.open) .btt{opacity:0!important;pointer-events:none!important;}
}
.a11y-panel-title{font-family:var(--serif);font-size:1.15rem;font-weight:400;color:var(--ink);margin-bottom:1.2rem;display:flex;align-items:center;gap:.5rem;transition:color var(--tr);}
.a11y-row{display:flex;align-items:center;justify-content:space-between;padding:.7rem 0;border-bottom:1px solid var(--sand);transition:border-color var(--tr);}
.a11y-row:last-child{border-bottom:none;}
.a11y-label{font-size:.78rem;color:var(--text);font-weight:400;}
.a11y-btns{display:flex;gap:3px;}
.a11y-btn{width:32px;height:32px;background:var(--surface);border:1px solid var(--sand);color:var(--text);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;transition:all .2s;border-radius:8px;}
.a11y-btn:hover{border-color:var(--accent);background:var(--accent);color:var(--bg);}
.a11y-btn.active{background:var(--ink);color:var(--bg);border-color:var(--ink);}
.a11y-toggle{position:relative;width:42px;height:24px;background:var(--sand);border:none;border-radius:12px;cursor:pointer;transition:background .2s;touch-action:manipulation;}
.a11y-toggle::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;background:var(--bg);border-radius:50%;transition:transform .2s;}
.a11y-toggle.on{background:var(--accent);}
.a11y-toggle.on::after{transform:translateX(18px);}
.a11y-reset{width:100%;margin-top:1rem;padding:.6rem;background:none;border:1px solid var(--sand);color:var(--muted);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;transition:all .2s;border-radius:8px;}
.a11y-reset:hover{border-color:var(--ink);color:var(--ink);}

/* Accessibility states */
html.a11y-large{font-size:118%;}
html.a11y-xlarge{font-size:136%;}
html.a11y-highcontrast{--muted:#555;--stone:#666;--text:#111;--sand:#ccc;}
html.a11y-highcontrast[data-theme="dark"]{--muted:#bbb;--stone:#aaa;--text:#f0f0f0;--sand:#555;}
html.a11y-dyslexia,html.a11y-dyslexia *{font-family:'Lexend','Comic Sans MS','OpenDyslexic',sans-serif!important;}
html.a11y-links a{text-decoration:underline!important;}
html.a11y-noanim *,html.a11y-noanim *::before,html.a11y-noanim *::after{animation:none!important;transition:none!important;}
/* Color blindness modes — palette remapping (works on all browsers including iOS Safari).
   Adjusts UI colors to be distinguishable for each type of color vision deficiency. */

/* Protanopia (red-blind): reds shifted to blue-violet, greens to teal */
html.a11y-protanopia{--accent:#7B9ACC;}
html.a11y-protanopia[data-theme="dark"]{--accent:#8CAAD8;}
html.a11y-protanopia .btn-airbnb,
html.a11y-protanopia .rv-cta-btn--air{background:#6A5ACD!important;}
html.a11y-protanopia .cfab-wa{background:#0097A7!important;}
html.a11y-protanopia .dir-waze{background:#0097A7!important;color:#fff!important;}
html.a11y-protanopia .rv-cta-btn--google,
html.a11y-protanopia .dir-google{background:#4A6CF7!important;}

/* Deuteranopia (green-blind): similar to protanopia — reds to violet, greens to cyan */
html.a11y-deuteranopia{--accent:#7B9ACC;}
html.a11y-deuteranopia[data-theme="dark"]{--accent:#8CAAD8;}
html.a11y-deuteranopia .btn-airbnb,
html.a11y-deuteranopia .rv-cta-btn--air{background:#9B59B6!important;}
html.a11y-deuteranopia .cfab-wa{background:#00ACC1!important;}
html.a11y-deuteranopia .dir-waze{background:#00ACC1!important;color:#fff!important;}
html.a11y-deuteranopia .rv-cta-btn--google,
html.a11y-deuteranopia .dir-google{background:#4A6CF7!important;}

/* Tritanopia (blue-yellow blind): blues shifted to magenta, accent to warm coral */
html.a11y-tritanopia{--accent:#D47B6A;}
html.a11y-tritanopia[data-theme="dark"]{--accent:#E08B7A;}
html.a11y-tritanopia .btn-bkng,
html.a11y-tritanopia .rv-cta-btn--bkng{background:#8B2252!important;}
html.a11y-tritanopia .rv-cta-btn--google,
html.a11y-tritanopia .dir-google{background:#8B2252!important;}
html.a11y-tritanopia .dir-waze{background:#E67300!important;color:#fff!important;}
html.a11y-tritanopia .cfab-wa{background:#2E8B57!important;}

/* Color blindness selector */
.a11y-cb-select{width:100%;padding:.4rem .6rem;background:var(--bg);border:1px solid var(--sand);font-family:var(--sans);font-size:.74rem;color:var(--text);outline:none;cursor:pointer;transition:border-color .2s;appearance:auto;border-radius:8px;}
.a11y-cb-select:focus{border-color:var(--accent);}

/* Voice reader bar */
.vr-bar{position:fixed;bottom:0;left:0;right:0;z-index:800;background:var(--ink);color:var(--bg);display:none;align-items:center;gap:1rem;padding:.8rem 2rem calc(.8rem + env(safe-area-inset-bottom,0px));border-top:2px solid var(--accent);transition:background var(--tr);}
.vr-bar.active{display:flex;z-index:10000;}
[data-theme="dark"] .vr-bar{background:var(--surface);}
.vr-btn{background:none;border:1px solid rgba(255,255,255,.25);color:#fff;width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:1rem;border-radius:50%;transition:all .2s;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:rgba(255,255,255,.2);}
.vr-btn:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.5);}
.vr-btn.playing{background:var(--accent);border-color:var(--accent);color:var(--ink);}
.vr-text{font-size:.76rem;color:rgba(255,255,255,.65);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
[data-theme="dark"] .vr-text{color:var(--muted);}
.vr-speed{background:none;border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.7);font-size:.65rem;font-weight:500;padding:.3rem .6rem;border-radius:10px;transition:all .2s;cursor:pointer;min-width:40px;text-align:center;}
.vr-speed:hover{color:#fff;border-color:rgba(255,255,255,.5);}
.vr-close{background:none;border:none;color:rgba(255,255,255,.4);font-size:1.1rem;transition:color .2s;flex-shrink:0;cursor:pointer;width:34px;height:34px;display:flex;align-items:center;justify-content:center;}
.vr-close:hover{color:#fff;}

/* ═══ CONTACT SPEED-DIAL FAB ═══ */
.cfab{position:fixed;bottom:calc(5.5rem + env(safe-area-inset-bottom,0px));right:2rem;z-index:700;display:flex;flex-direction:column;align-items:flex-end;gap:.65rem;pointer-events:none;}
.cfab-main{pointer-events:auto;}
.cfab-items{display:flex;flex-direction:column;align-items:flex-end;gap:.65rem;pointer-events:none;}
.cfab.open .cfab-items{pointer-events:auto;}
.cfab-row{display:flex;align-items:center;gap:.6rem;opacity:0;transform:translateY(8px) scale(.9);transition:opacity .2s,transform .2s;pointer-events:none;}
.cfab.open .cfab-row{opacity:1;transform:none;pointer-events:auto;}
.cfab.open .cfab-row:nth-child(1){transition-delay:.1s;}
.cfab.open .cfab-row:nth-child(2){transition-delay:.05s;}
.cfab.open .cfab-row:nth-child(3){transition-delay:0s;}
.cfab-label{background:rgba(30,20,10,.72);color:#fff;font-size:.68rem;font-family:var(--sans);padding:.22rem .52rem;border-radius:999px;white-space:nowrap;backdrop-filter:blur(6px);letter-spacing:.03em;}
.cfab-btn{width:44px;height:44px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;box-shadow:0 3px 12px rgba(0,0,0,.22);transition:transform .2s,box-shadow .2s;flex-shrink:0;}
.cfab-btn:hover{transform:scale(1.1);box-shadow:0 5px 18px rgba(0,0,0,.3);}
.cfab-btn svg{width:22px;height:22px;}
.cfab-wa{background:#25D366;}
.cfab-wa svg{fill:#fff;}
.cfab-ig{background:radial-gradient(circle at 30% 107%,#fdf497 0%,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285AEB 90%);}
.cfab-ig svg{stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.cfab-ms{background:linear-gradient(135deg,#00c6ff,#0078ff);}
.cfab-ms svg{fill:#fff;}
.cfab-main{width:52px;height:52px;border-radius:50%;background:var(--ink);color:var(--bg);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.25);transition:transform .3s,box-shadow .3s;position:relative;}
.cfab-main:hover{transform:scale(1.08);box-shadow:0 6px 22px rgba(0,0,0,.32);}
.cfab-main svg{width:24px;height:24px;position:absolute;transition:opacity .2s,transform .2s;}
.cfab-icon-chat{opacity:1;transform:scale(1);fill:currentColor;}
.cfab-icon-x{opacity:0;transform:scale(.6) rotate(-45deg);stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;}
.cfab.open .cfab-icon-chat{opacity:0;transform:scale(.6) rotate(45deg);}
.cfab.open .cfab-icon-x{opacity:1;transform:scale(1) rotate(0);}

/* ═══ BACK TO TOP ═══ */
.btt{position:fixed;bottom:calc(2rem + env(safe-area-inset-bottom,0px));right:7rem;z-index:600;width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--bg);border:none;display:flex;align-items:center;justify-content:center;font-size:1.1rem;box-shadow:0 3px 12px rgba(0,0,0,.2);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s,background .2s;transform:translateY(10px);}
.btt.visible{opacity:1;pointer-events:all;transform:translateY(0);}
.btt:hover{background:var(--accent);}
[data-theme="dark"] .btt{background:var(--accent);color:var(--bg);border:none;box-shadow:0 4px 20px rgba(212,184,146,.35);}

/* ═══════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════ */
@media(max-width:1200px){
  .exp-grid{grid-template-columns:repeat(2,1fr);}
  .bfaq-layout{grid-template-columns:1fr;}
  .loc-bar{grid-template-columns:1fr 1fr;}
}
@media(max-width:900px){
  .top-nav{padding:0 1rem;}
  .nav-logo{font-size:1.05rem;}
  .nav-controls{gap:.4rem;}
  .nav-cta{padding:.45rem .8rem;font-size:.62rem;}
  .tab-btn{min-width:auto;font-size:.58rem;padding:0 .6rem;flex:0 0 auto;}
  .tab-bar{justify-content:flex-start;}
  .hero-wrap{grid-template-columns:1fr;}
  .hero-text{padding:3rem 2rem;}
  .hero-img{height:55vw;}
  .si{padding:3rem 1.5rem;}
  .am-layout{grid-template-columns:1fr;gap:2rem;}
  .am-intro{position:static;}
  .am-grid{grid-template-columns:1fr 1fr;}
  /* Fix amenity borders for 2-col layout */
  .am-item:nth-child(3n){border-right:1px solid var(--sand);}
  .am-item:nth-child(2n){border-right:none;}
  .am-item:nth-last-child(-n+3){border-bottom:1px solid var(--sand);}
  .am-item:nth-last-child(-n+2){border-bottom:none;}
  .car-slide{grid-template-columns:1fr;}
  .gal-grid{grid-template-columns:1fr 1fr;}
  .exp-grid{grid-template-columns:1fr 1fr;}
  .loc-bar{grid-template-columns:1fr 1fr;}
  .panel-footer{padding:2rem 1.5rem;flex-direction:column;text-align:center;align-items:center;}
  .ftlinks{flex-wrap:wrap;justify-content:center;align-items:center;}
  .ft-logo-img{flex:0 0 100%;width:40px;margin:0 auto;display:block;}
  .car-btns{margin-right:0;}
  #villa-map{height:320px;}
  .dir-bar{flex-direction:column;text-align:center;}
  .dir-btns{justify-content:center;width:100%;}
  .dir-btn{flex:1;min-width:0;}
  .lb-prev{left:1rem;}
  .lb-next{right:1rem;}
  .plat-btns{flex-direction:column;}
  .btn-airbnb,.btn-bkng{min-width:0;width:100%;}
  .ct-row{flex-direction:column;}
  .contact-link{min-width:0;width:100%;}
  .bfaq-layout{gap:3rem;}
  .cfab{bottom:calc(5rem + env(safe-area-inset-bottom,0px));right:1rem;}
  .cfab-btn{width:40px;height:40px;}
  .cfab-btn svg{width:20px;height:20px;}
  .cfab-main{width:46px;height:46px;}
  .cfab-main svg{width:22px;height:22px;}
  .btt{right:4.5rem;width:40px;height:40px;font-size:.95rem;bottom:calc(2rem + env(safe-area-inset-bottom,0px));}
  .a11y-fab{width:48px;height:48px;bottom:calc(2rem + env(safe-area-inset-bottom,0px));left:1rem;}
  .a11y-panel{left:1rem;right:1rem;width:auto;bottom:calc(5.5rem + env(safe-area-inset-bottom,0px));}
}
@media(max-width:600px){
  /* Override nav height variable so var(--nav-h) resolves correctly on mobile */
  :root{--nav-h:56px;}

  /* ─ Nav base ─ */
  .nav-cta{display:none;}
  .top-nav{padding:0 .75rem;height:56px;}
  .nav-controls{gap:.3rem;order:2;flex-wrap:nowrap;}
  .theme-btn{width:32px;height:32px;font-size:.82rem;}

  /* Reorder: burger | controls | logo */
  .nav-logo{font-size:.95rem;order:3;}
  .nav-controls{order:2;}

  /* Hide desktop lang row, show mobile dropdown */
  .lang-sw{display:none!important;}

  /* Hide horizontal tab bar */
  .tab-bar{display:none;}
  .tab-content{padding-top:var(--nav-h);}

  /* ─ Hamburger button ─ */
  .nav-burger{
    display:-webkit-box;display:-ms-flexbox;display:flex;
    -webkit-box-align:center;-ms-flex-align:center;align-items:center;
    gap:.45rem;order:1;
    background:var(--ink);color:var(--bg);
    border:none;border-radius:14px;
    padding:.45rem .85rem;
    font-size:.68rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;
    white-space:nowrap;-ms-flex-negative:1;flex-shrink:1;min-width:0;max-width:calc(50vw - 2.5rem);min-height:42px;
    -webkit-transition:background .2s;transition:background .2s;
    font-family:var(--sans);cursor:pointer;
  }
  .nav-burger:hover,.nav-burger:active{background:var(--accent);}
  .burger-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;}
  .burger-bars{
    display:-webkit-box;display:-ms-flexbox;display:flex;
    -webkit-box-orient:vertical;-webkit-box-direction:normal;
    -ms-flex-direction:column;flex-direction:column;
    gap:3.5px;width:16px;-ms-flex-negative:0;flex-shrink:0;
  }
  .burger-bars span{
    display:block;height:2px;background:currentColor;border-radius:2px;
    -webkit-transition:-webkit-transform .25s ease,opacity .2s ease;
    transition:transform .25s ease,opacity .2s ease;
    -webkit-transform-origin:center;transform-origin:center;
  }
  .nav-burger[aria-expanded="true"] .burger-bars span:nth-child(1){
    -webkit-transform:translateY(5.5px) rotate(45deg);transform:translateY(5.5px) rotate(45deg);
  }
  .nav-burger[aria-expanded="true"] .burger-bars span:nth-child(2){
    opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0);
  }
  .nav-burger[aria-expanded="true"] .burger-bars span:nth-child(3){
    -webkit-transform:translateY(-5.5px) rotate(-45deg);transform:translateY(-5.5px) rotate(-45deg);
  }

  /* ─ Mobile language dropdown ─ */
  .mob-lang{display:block;position:relative;}
  .mob-lang-btn{
    display:-webkit-box;display:-ms-flexbox;display:flex;
    -webkit-box-align:center;-ms-flex-align:center;align-items:center;
    gap:.3rem;background:none;border:1px solid var(--sand);border-radius:8px;
    padding:.3rem .55rem;min-height:32px;min-width:52px;
    font-size:.6rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;
    color:var(--text);-webkit-transition:border-color .2s;transition:border-color .2s;
    font-family:var(--sans);cursor:pointer;
  }
  .mob-lang-btn:hover{border-color:var(--accent);}
  .mob-lang-arrow{-ms-flex-negative:0;flex-shrink:0;-webkit-transition:-webkit-transform .2s;transition:transform .2s;}
  .mob-lang-btn[aria-expanded="true"] .mob-lang-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg);}
  .mob-lang-panel{
    position:absolute;top:calc(100% + 6px);right:0;
    background:var(--bg);border:1px solid var(--sand);border-radius:10px;
    -webkit-box-shadow:0 8px 24px rgba(0,0,0,.12);box-shadow:0 8px 24px rgba(0,0,0,.12);
    overflow:hidden;display:none;z-index:400;min-width:148px;
  }
  .mob-lang-panel.open{display:block;}
  .mob-lang-opt{
    display:block;width:100%;text-align:left;
    padding:.75rem 1rem;background:none;border:none;
    font-size:.78rem;color:var(--text);letter-spacing:.03em;
    -webkit-transition:background .15s;transition:background .15s;
    font-family:var(--sans);cursor:pointer;
  }
  .mob-lang-opt:hover,.mob-lang-opt:active{background:var(--surface);}

  /* ─ Burger menu panel ─ */
  .burger-menu{
    display:block;position:fixed;top:56px;left:0;right:0;z-index:298;
    background:var(--bg);border-bottom:1px solid var(--sand);
    overflow:hidden;max-height:0;
    -webkit-transition:max-height .3s cubic-bezier(.4,0,.2,1);
    transition:max-height .3s cubic-bezier(.4,0,.2,1);
    -webkit-overflow-scrolling:touch;
  }
  .burger-menu.open{max-height:520px;}
  .bmenu-item{
    display:-webkit-box;display:-ms-flexbox;display:flex;
    -webkit-box-align:center;-ms-flex-align:center;align-items:center;
    width:100%;padding:.95rem 1.25rem;
    background:none;border:none;border-bottom:1px solid var(--sand);
    font-size:.78rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;
    color:var(--text);text-align:left;min-height:52px;
    -webkit-transition:background .15s,color .15s;transition:background .15s,color .15s;
    font-family:var(--sans);cursor:pointer;
  }
  .bmenu-item:hover,.bmenu-item:active{background:var(--surface);color:var(--ink);}
  .bmenu-cta{
    display:block;
    margin:1rem 1.25rem 1.25rem;
    padding:.9rem 1rem;
    width:calc(100% - 2.5rem);
    background:var(--ink);color:var(--bg);
    border:none;border-radius:14px;
    font-size:.78rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
    text-align:center;min-height:52px;
    -webkit-transition:background .2s;transition:background .2s;
    font-family:var(--sans);cursor:pointer;
  }
  .bmenu-cta:hover,.bmenu-cta:active{background:var(--accent);}

  /* ─ Layout ─ */
  .gal-grid{grid-template-columns:1fr;}
  .exp-grid{grid-template-columns:1fr;}
  .loc-bar{grid-template-columns:1fr;}
  .bfaq-layout{grid-template-columns:1fr;gap:2rem;}
  .am-grid{grid-template-columns:1fr 1fr;gap:1px;background:var(--sand);}
  .am-item{padding:1.2rem 1rem;border:none!important;background:var(--bg);}
  .am-ico{font-size:1.5rem;margin-bottom:.5rem;}
  .am-name{font-size:.92rem;}
  .am-desc{font-size:.72rem;line-height:1.45;}
  .am-big{font-size:3rem;}
  .hstats{gap:1.2rem;flex-wrap:wrap;}
  .rv-top{flex-direction:column;align-items:flex-start;}
  .car-slide{grid-template-columns:1fr;}
  .lb-wrap{width:92vw;height:auto;}
  .lb-photo{min-height:200px;}
  .si{padding:2.5rem 1.2rem;}
  .hero-text{padding:2.5rem 1.2rem;}
  .stitle{font-size:clamp(1.6rem,5vw,2.5rem);}
  .htitle{font-size:clamp(2.2rem,7vw,3.5rem);}
  .sdesc{font-size:.85rem;}
  .hsub{font-size:.88rem;margin-bottom:2rem;}
  /* Floating buttons — clear iOS Safari toolbar */
  .cfab{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));right:.8rem;}
  .btt{right:4rem;bottom:calc(1.8rem + env(safe-area-inset-bottom,0px));width:40px;height:40px;}
  .a11y-fab{bottom:calc(1.8rem + env(safe-area-inset-bottom,0px));left:.8rem;width:52px;height:52px;}
  .a11y-panel{left:.8rem;right:.8rem;bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));padding:1.4rem;}
}

@media print{
  .top-nav,.tab-bar,.a11y-fab,.a11y-panel,.cfab,.btt,.vr-bar,#ck-banner,.panel-footer,.car-ctrl,.gal-filters,.gal-over,.dir-btns,.plat-btns{display:none!important;}
  .tab-panel{display:block!important;page-break-before:always;}
  .tab-content{padding-top:0!important;}
  body{font-size:11pt;color:#000;background:#fff;}
  .stitle,.htitle{color:#000!important;}
  .hero-wrap{grid-template-columns:1fr!important;}
  .hero-img{display:none!important;}
  #villa-map{display:none!important;}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:0.01ms!important;transition-duration:0.01ms!important;}
  html{scroll-behavior:auto;}
}
/* ─── Lightbox loading state ─── */
.lb-photo.lb-loading {
  background-color: var(--surface) !important;
  background-image: none !important;
  position: relative;
}
.lb-photo.lb-loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 36px;
  height: 36px;
  margin: -18px 0 0 -18px;
  border: 3px solid rgba(255,255,255,.15);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: lb-spin .7s linear infinite;
}
@keyframes lb-spin { to { transform: rotate(360deg); } }

/* ─── Contact link hover (replaces inline onmouseover) ─── */
.contact-link {
  flex: 1;
  min-width: 180px;
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .9rem 1.2rem;
  border: 1px solid var(--sand);
  transition: border-color .2s, background .2s;
  background: var(--bg);
  text-decoration: none;
  border-radius: 8px;
}
.contact-link:hover { border-color: var(--accent); }

/* ─── Home Video / Reel Section ─── */
.home-video-section {
  padding: 5rem 0 4rem;
  background: var(--bg);
}
.home-video-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 2rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.home-video-text .stag { margin-bottom: .6rem; }
.home-video-text .stitle { margin-bottom: 1rem; }
.home-video-text .sdesc { margin-bottom: 2rem; }

/* Phone frame */
.home-video-wrap {
  display: flex;
  justify-content: center;
}
.home-video-phone {
  position: relative;
  width: 280px;
  height: 500px;
  border-radius: 32px;
  overflow: hidden;
  background: #000;
  box-shadow: 0 30px 80px rgba(0,0,0,.22), 0 0 0 2px rgba(0,0,0,.12);
}
.home-video-el {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Play/pause button overlay */
.home-video-play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: rgba(0,0,0,.45);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s, transform .2s;
  z-index: 2;
}
.home-video-play:hover { background: rgba(0,0,0,.65); transform: translate(-50%,-50%) scale(1.08); }

/* Instagram-style overlay UI at bottom */
.home-video-ui {
  position: absolute;
  bottom: 60px;
  left: 0;
  right: 0;
  padding: 0 56px 0 14px;
  z-index: 3;
}
.home-video-profile {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.home-video-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-family: var(--serif);
  font-size: .9rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid #fff;
}
.home-video-handle {
  color: #fff;
  font-size: .78rem;
  font-weight: 500;
  text-shadow: 0 1px 4px rgba(0,0,0,.5);
}
.home-video-follow {
  position: absolute;
  right: 12px;
  bottom: 85px;
  z-index: 3;
  color: #fff;
  font-size: .72rem;
  font-weight: 600;
  border: 1.5px solid rgba(255,255,255,.8);
  padding: 2px 10px;
  border-radius: 6px;
  text-decoration: none;
  transition: background .2s;
  text-align: center;
  white-space: nowrap;
}
.home-video-follow:hover { background: rgba(255,255,255,.15); }
.home-video-caption {
  color: #fff;
  font-size: .78rem;
  text-shadow: 0 1px 4px rgba(0,0,0,.5);
}

/* Side action buttons — fixed width so follow button text length doesn't shift circular buttons */
.home-video-actions {
  position: absolute;
  right: 12px;
  bottom: 130px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  z-index: 3;
  width: 36px;
  align-items: center;
}
.home-video-act {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(0,0,0,.35);
  border: none;
  cursor: pointer;
  color: #fff;
  font-size: .9rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  transition: background .2s;
}
.home-video-act:hover { background: rgba(0,0,0,.6); }

/* Progress bar at very bottom */
.home-video-phone::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--accent) 0%, transparent 100%);
  opacity: .7;
}

/* Note about missing video */
.home-video-phone::before {
  
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: rgba(255,255,255,.5);
  font-size: .7rem;
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

@media (max-width: 768px) {
  .home-video-inner {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
  .home-video-phone { width: 240px; height: 420px; }
}

/* ─── Hero image fill ─── */
.hero-img-fill{width:100%;height:100%;object-fit:cover;display:block;}

/* ─── Stat unit superscript ─── */
.stat-unit{font-size:1.1rem;}

/* ─── Feather icon sizing ─── */
.am-ico svg{width:22px;height:22px;stroke:var(--accent);stroke-width:1.5;}
.am-ico{display:flex;align-items:center;margin-bottom:.65rem;}
.loc-ico svg{width:18px;height:18px;stroke:var(--accent);stroke-width:1.8;display:block;margin-top:3px;}
.exp-ico svg{width:24px;height:24px;stroke:var(--accent);stroke-width:1.5;display:block;margin-bottom:.75rem;}
.ct-icon svg{width:20px;height:20px;stroke:var(--muted);stroke-width:1.5;display:block;}
.plat-icon svg{width:20px;height:20px;stroke:#fff;stroke-width:1.5;display:block;}
.theme-btn svg{width:16px;height:16px;stroke:var(--text);stroke-width:1.8;}
.home-video-caption svg{width:14px;height:14px;fill:#fff;stroke:#fff;vertical-align:text-bottom;display:inline;}
/* ─── Amenities extras ─── */
.sdesc--mt{margin-top:1rem;}
.sdesc--mb{margin-bottom:2rem;}
.am-count-lbl{font-size:.76rem;color:var(--stone);letter-spacing:.1em;text-transform:uppercase;}

/* ─── Reviews ─── */
.rv-score-right{text-align:right;}
.rv-cta-card{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:1.5rem;}
.rv-cta-hdg{font-family:var(--serif);font-size:1.3rem;font-weight:300;color:var(--ink);}
.rv-cta-sub{font-size:.85rem;color:var(--muted);max-width:250px;}
.rv-cta-btns{display:flex;gap:.8rem;flex-wrap:wrap;justify-content:center;}
.rv-cta-btn{font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#fff;padding:.6rem 1.2rem;border-radius:8px;}
.rv-cta-btn--air{background:#FF5A5F;}
.rv-cta-btn--bkng{background:#003580;}

/* ─── Directions details/summary ─── */
.dir-details{margin-top:1.5rem;border:1px solid var(--sand);border-radius:8px;transition:border-color var(--tr);}
.dir-summary{padding:1rem 1.5rem;cursor:pointer;font-family:var(--serif);font-size:1rem;color:var(--ink);display:flex;align-items:center;gap:.6rem;transition:color var(--tr);list-style:none;border-radius:8px 8px 0 0;}
.dir-summary::-webkit-details-marker{display:none;}
.dir-arrow{margin-left:auto;font-size:1.1rem;color:var(--accent);transition:transform .3s;display:inline-block;}
details[open] .dir-arrow{transform:rotate(90deg);}
.dir-body{padding:0 1.5rem 1.5rem;font-size:.85rem;color:var(--muted);line-height:1.8;}
.dir-step{margin-top:.6rem;}
.dir-note{margin-top:.8rem;font-size:.78rem;color:var(--stone);}

/* ─── loc-bar top margin (explore tab) ─── */
.loc-bar{margin-top:2.5rem;}

/* ─── Contact row (book tab) ─── */
.ct-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem;}
.ct-icon{font-size:1.2rem;}
.ct-lbl{font-size:.65rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);}
.ct-val{font-size:.88rem;color:var(--ink);}

/* ─── Accessibility panel variants ─── */
.a11y-btn--lg{font-size:.9rem;}
.a11y-btn--xl{font-size:1.05rem;}
.a11y-row--col{flex-direction:column;align-items:stretch;gap:.5rem;}

/* ─── SVG filter container ─── */
.svg-filters{position:absolute;width:0;height:0;overflow:hidden;}


/* ─── Google Reviews button ─── */
.rv-cta-btn--google{background:#4285F4;}
