/* ==========================================================================
   Nazaara Hills Retreat, Udaipur — production stylesheet (creative rebuild)
   Shared design system, ported from the Nazaara Dalhousie Playbook
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Marcellus&family=Montserrat:wght@300;400;500;600;700;800&family=Caveat:wght@500;600&display=swap');

:root{
  --bg:#faf6ef;
  --surface:#ffffff;
  --beige:#c8b89f;
  --beige-soft:#f0e7d8;
  --beige-line:#e6d9c4;
  --brown:#806248;
  --brown-deep:#5c4630;
  --sage:#6b7050;
  --sage-soft:#e4e6da;
  --ink:#2d221e;
  --ink-soft:rgba(45,34,30,.64);
  --ink-faint:rgba(45,34,30,.42);
  --line:rgba(45,34,30,.14);
  --ease:cubic-bezier(.4,0,.2,1);
  --radius:3px;
  --serif:'Marcellus','Iowan Old Style','Palatino Linotype',serif;
  --sans:'Montserrat','Helvetica Neue',Arial,sans-serif;
  --max:1280px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--bg);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
h1,h2,h3,h4{
  font-family:var(--serif); font-weight:400; color:var(--ink); margin:0;
  text-wrap:balance; letter-spacing:.01em;
}
p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
button{ font-family:inherit; }

.container{ max-width:var(--max); margin:0 auto; padding:0 24px; position:relative; }
@media (max-width:1023px){ .container{ padding:0 20px; } }
@media (max-width:639px){ .container{ padding:0 16px; } }

.eyebrow{
  font-family:var(--sans); font-size:.72rem; font-weight:700; letter-spacing:.24em;
  text-transform:uppercase; color:var(--sage); display:block; margin-bottom:14px;
}

section{ position:relative; padding:110px 0; }
@media (max-width:1023px){ section{ padding:80px 0; } }
@media (max-width:639px){ section{ padding:60px 0; } }

.section-head{ max-width:640px; margin-bottom:56px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.section-head h2{ font-size:clamp(1.9rem,3.8vw,2.8rem); margin-bottom:16px; }
.section-head p{ color:var(--ink-soft); font-size:1.02rem; }

a:focus-visible, button:focus-visible{ outline:2px solid var(--brown-deep); outline-offset:3px; border-radius:2px; }

/* ---------- reveal-on-scroll ---------- */
.reveal{ opacity:0; transform:translateY(20px); transition:opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
}

/* ---------- ridge divider (recurring terrain motif) ---------- */
.ridge{ display:block; width:100%; height:auto; position:relative; z-index:3; margin-bottom:-1px; }
.ridge-flip{ transform:scaleX(-1); }

/* ---------- buttons ---------- */
.btn{
  font-family:var(--sans); font-weight:600; font-size:.76rem; letter-spacing:.1em; text-transform:uppercase;
  padding:16px 36px; border-radius:0; border:1px solid transparent; cursor:pointer;
  transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);
  display:inline-flex; align-items:center; gap:8px; text-decoration:none;
}
.btn-primary{ background:var(--brown); color:#faf6ef; }
.btn-sm{ padding:12px 26px; font-size:.7rem; }
.btn-primary:hover{ background:var(--brown-deep); }
.btn-secondary{ background:transparent; color:var(--brown-deep); border-color:var(--brown); }
.btn-secondary:hover{ background:var(--brown); color:#faf6ef; }
.btn-on-dark{ border-color:rgba(250,246,239,.6); color:#faf6ef; }
.btn-on-dark:hover{ background:#faf6ef; color:var(--brown-deep); border-color:#faf6ef; }
.link-cta{
  color:var(--brown-deep); text-decoration:none; font-size:.82rem; font-weight:600; letter-spacing:.04em;
  display:inline-block; border-bottom:1px solid var(--brown); padding-bottom:2px;
  transition:border-color .15s var(--ease), letter-spacing .15s var(--ease);
}
.link-cta:hover{ border-color:var(--brown-deep); letter-spacing:.08em; }

/* ---------- header / nav ---------- */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100; padding:22px 0;
  transition:background .3s var(--ease), padding .3s var(--ease), box-shadow .3s var(--ease);
}
.site-header .container{ display:flex; align-items:center; justify-content:space-between; gap:20px; }
.brand{ display:flex; align-items:center; gap:10px; text-decoration:none; flex-shrink:0; }
.brand img{ width:220px; height:auto; object-fit:contain; }
.brand span{ font-family:var(--serif); font-size:1.15rem; color:#faf6ef; transition:color .3s var(--ease); }
.brand small{ display:block; font-family:var(--sans); font-size:.55rem; letter-spacing:.22em; text-transform:uppercase; color:rgba(250,246,239,.65); transition:color .3s var(--ease); }
.brand .logo-dark{ display:none; }
.brand .logo-light{ height:50px; }

.main-nav{ display:flex; align-items:center; gap:28px; flex-wrap:wrap; justify-content:center; flex:1; }
.main-nav a{
  font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:rgba(250,246,239,.85); text-decoration:none;
  padding-bottom:4px; border-bottom:1px solid transparent; transition:border-color .15s var(--ease), color .15s var(--ease);
  white-space:nowrap;
}
.main-nav a:hover{ color:#faf6ef; border-color:var(--beige); }
.header-actions{ display:flex; align-items:center; gap:16px; flex-shrink:0; }
.header-actions .btn{ padding:12px 24px; flex-shrink:0; }
.hamburger-btn{ display:none; width:26px; height:18px; position:relative; background:none; border:none; cursor:pointer; padding:0; }
.hamburger-btn span{ position:absolute; left:0; right:0; height:2px; background:#faf6ef; border-radius:2px; transition:background .3s var(--ease); }
.hamburger-btn span:nth-child(1){ top:0; } .hamburger-btn span:nth-child(2){ top:8px; } .hamburger-btn span:nth-child(3){ top:16px; }

.site-header.scrolled{ background:var(--bg); box-shadow:0 4px 24px -12px rgba(45,34,30,.18); padding:14px 0; }
.site-header.scrolled .brand span{ color:var(--ink); }
.site-header.scrolled .brand small{ color:var(--ink-faint); }
.site-header.scrolled .brand .logo-light{ display:none; }
.site-header.scrolled .brand .logo-dark{ display:block; }
.site-header.scrolled .main-nav a{ color:var(--ink-soft); }
.site-header.scrolled .main-nav a:hover{ color:var(--ink); border-color:var(--brown); }
.site-header.scrolled .hamburger-btn span{ background:var(--ink); }
.site-header.scrolled .btn-on-dark{ border-color:var(--brown); color:var(--brown-deep); }
.site-header.scrolled .btn-on-dark:hover{ background:var(--brown); color:#faf6ef; }

@media (max-width:960px){
  .main-nav{ display:none; }
  .hamburger-btn{ display:block; }
}

.mobile-menu{
  position:fixed; inset:0; background:var(--bg); z-index:200;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:28px;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease);
}
.mobile-menu.open{ opacity:1; visibility:visible; }
.mobile-menu a{ font-family:var(--serif); font-size:1.4rem; color:var(--ink); text-decoration:none; }
.mobile-menu .btn{ margin-top:10px; }
.mobile-menu-close{ position:absolute; top:26px; right:26px; width:40px; height:40px; border:none; background:none; cursor:pointer; font-size:1.6rem; color:var(--ink); line-height:1; }

/* ---------- header / nav v2 (brand-hub style; scoped with .nav-v2 so pages not yet migrated keep the nav above) ---------- */
.site-header.nav-v2 .container{ display:grid; grid-template-columns:1fr auto 1fr; gap:20px; }
.site-header.nav-v2 .brand{ justify-self:center; gap:0; height:36px; overflow:hidden; align-items:center; }
.site-header.nav-v2 .brand img{ width:auto; height:117.5px; object-fit:contain; }
.site-header.nav-v2 .header-actions{ justify-self:end; }
.site-header.nav-v2 .hamburger-btn{
  display:flex; align-items:center; gap:10px; justify-self:start; width:auto; height:auto;
}
.site-header.nav-v2 .hamburger-btn > .hamburger-icon{
  position:relative; top:auto; left:auto; right:auto; width:24px; height:16px; background:none; border-radius:0;
}
.site-header.nav-v2 .hamburger-btn > .hamburger-label{
  position:static; top:auto; left:auto; right:auto; height:auto; background:none; border-radius:0;
}
.site-header.nav-v2.scrolled .hamburger-icon span{ background:var(--ink); }
.site-header.nav-v2.scrolled .hamburger-label{ color:var(--ink); }
@media (max-width:800px){ .site-header.nav-v2 .header-actions{ display:none; } }
.nav-call-btn{
  display:none; grid-column:3; justify-self:end; width:38px; height:38px; align-items:center; justify-content:center;
  background:none; border:1px solid rgba(250,246,239,.6); color:#faf6ef; flex-shrink:0;
  transition:background .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease);
}
.site-header.scrolled .nav-call-btn{ border-color:var(--brown); color:var(--brown-deep); }
.nav-call-btn:hover{ background:var(--brown); border-color:var(--brown); color:#faf6ef; }
.nav-call-btn svg{ width:17px; height:17px; fill:currentColor; }
@media (max-width:800px){ .nav-call-btn{ display:flex; } }

.hamburger-icon{ width:24px; height:16px; position:relative; flex-shrink:0; }
.hamburger-icon span{ position:absolute; left:0; right:0; height:2px; background:#faf6ef; border-radius:2px; transition:background .3s var(--ease); }
.hamburger-icon span:nth-child(1){ top:0; } .hamburger-icon span:nth-child(2){ top:7px; } .hamburger-icon span:nth-child(3){ top:14px; }
.hamburger-label{
  font-family:var(--sans); font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:#faf6ef;
  transition:color .3s var(--ease); white-space:nowrap;
}
@media (max-width:640px){ .hamburger-label{ display:none; } }

.pick-retreat{ position:relative; }
.pick-retreat-chevron{ width:10px; height:10px; flex-shrink:0; }
.pick-retreat-trigger{ background:none; }
.pick-retreat-menu{
  position:absolute; top:100%; right:0; margin-top:10px; min-width:200px;
  background:var(--surface); border-radius:8px; box-shadow:0 20px 40px -16px rgba(45,34,30,.35);
  padding:8px; display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
  z-index:10;
}
.pick-retreat:hover .pick-retreat-menu,
.pick-retreat:focus-within .pick-retreat-menu,
.pick-retreat.open .pick-retreat-menu{
  opacity:1; visibility:visible; transform:translateY(0);
}
.pick-retreat-menu a{
  display:block; padding:10px 14px; border-radius:6px; text-decoration:none;
  font-family:var(--sans); font-size:.78rem; letter-spacing:.03em; color:var(--ink-soft);
  white-space:nowrap; transition:background .15s var(--ease), color .15s var(--ease);
}
.pick-retreat-menu a:hover{ background:var(--beige-soft); color:var(--ink); }

.mobile-menu.nav-v2{ display:block; background:none; align-items:initial; justify-content:initial; gap:0; }
.mobile-menu-overlay{ position:absolute; inset:0; background:rgba(20,14,10,.45); opacity:0; transition:opacity .3s var(--ease); }
.mobile-menu.open .mobile-menu-overlay{ opacity:1; }
.mobile-menu-panel{
  position:absolute; top:0; left:0; height:100%; width:86%; max-width:340px;
  background:var(--bg); box-shadow:0 0 44px rgba(20,14,10,.28);
  display:flex; flex-direction:column;
  transform:translateX(-100%); transition:transform .3s var(--ease);
}
.mobile-menu.open .mobile-menu-panel{ transform:translateX(0); }
.mobile-menu-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:22px 24px 18px; border-bottom:1px solid rgba(45,34,30,.1); flex-shrink:0;
}
.mobile-menu-home{ font-family:var(--serif); font-size:1.2rem; color:var(--ink); text-decoration:none; }
.mobile-menu-home:hover{ color:var(--brown); }
.mobile-menu.nav-v2 .mobile-menu-close{
  position:static; top:auto; right:auto; width:auto; height:auto; border:none; background:none; cursor:pointer;
  font-size:1.5rem; color:var(--ink); line-height:1;
}
.mobile-menu-links{
  flex:1; overflow-y:auto; padding:8px 24px; display:flex; flex-direction:column;
  scrollbar-width:thin; scrollbar-color:var(--beige) transparent;
}
.mobile-menu-links::-webkit-scrollbar{ width:6px; }
.mobile-menu-links::-webkit-scrollbar-track{ background:transparent; }
.mobile-menu-links::-webkit-scrollbar-thumb{ background:var(--beige); border-radius:3px; }
.mobile-menu-links > a{
  display:block; padding:13px 0; font-family:var(--serif); font-size:1.1rem; color:var(--ink); text-decoration:none;
  border-bottom:1px solid rgba(45,34,30,.07); text-align:left;
}
.mobile-menu-links > a:hover{ color:var(--brown); }

.drawer-dropdown{ border-bottom:1px solid rgba(45,34,30,.07); }
.drawer-toggle{
  display:flex; align-items:center; justify-content:space-between; width:100%;
  padding:13px 0; background:none; border:none; cursor:pointer;
}
.drawer-toggle a, .drawer-toggle span{ font-family:var(--serif); font-size:1.1rem; color:var(--ink); text-decoration:none; }
.drawer-toggle a:hover{ color:var(--brown); }
.drawer-chevron{ width:14px; height:14px; color:var(--ink-faint); flex-shrink:0; transition:transform .3s var(--ease); }
.drawer-toggle[aria-expanded="true"] .drawer-chevron{ transform:rotate(180deg); }
.drawer-submenu{ padding:0 0 10px 16px; display:flex; flex-direction:column; }
.drawer-submenu.hidden{ display:none; }
.drawer-submenu a{
  display:block; padding:9px 0; font-family:var(--sans); font-size:.9rem; color:var(--ink-soft); text-decoration:none; text-align:left;
}
.drawer-submenu a:hover{ color:var(--brown); }

.mobile-menu-foot{ padding:20px 24px; border-top:1px solid rgba(45,34,30,.1); flex-shrink:0; }
.mobile-menu-foot .btn{ display:block; text-align:center; width:100%; margin-top:0; font-family:var(--sans); font-size:.76rem; color:#faf6ef; }

/* ---------- brand strip (site-wide, sits flush above the header) ---------- */
.brand-strip-wrap{ position:fixed; top:0; left:0; right:0; z-index:101; }
.brand-strip{
  display:block; text-align:center;
  background:var(--sage-soft); color:var(--brown-deep);
  font-family:var(--sans); font-size:.7rem; font-weight:600; line-height:1.4;
  letter-spacing:.16em; text-transform:uppercase;
  padding:6px 20px; text-decoration:none;
  transition:color .18s var(--ease);
}
.brand-strip:hover{ color:var(--brown); text-decoration:underline; text-underline-offset:3px; }
body.has-brand-strip .site-header{ position:static; }
@media (max-width:639px){
  .brand-strip{ font-size:.62rem; letter-spacing:.1em; padding:10px 16px; }
}

/* ---------- hero ---------- */
.hero{
  position:relative; height:100svh; min-height:620px; overflow:hidden;
}
.hero-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center bottom; z-index:0; }
video.hero-bg{ object-position:center center; transform:scale(1.5); transform-origin:center center; }
.hero-slider{ position:absolute; inset:0; width:100%; height:100%; z-index:0; }
.hero-slider .hero-slide{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity 1s var(--ease); }
.hero-slider .hero-slide.is-active{ opacity:1; }
.hero-dots{
  position:absolute; left:50%; bottom:24px; transform:translateX(-50%); z-index:3;
  display:flex; gap:10px;
}
.hero-dot{
  width:8px; height:8px; border-radius:0; background:rgba(250,246,239,.4); border:none; padding:0; cursor:pointer;
  transition:background .2s var(--ease), transform .2s var(--ease);
}
.hero-dot.is-active{ background:#faf6ef; transform:scale(1.3); }
.hero .hero-booking{ position:absolute; left:0; right:0; bottom:calc(6% + 84px); margin-top:0; padding:0 24px; }
.hero-scroll-hint{
  position:absolute; left:50%; bottom:64px; transform:translateX(-50%); z-index:4;
  display:flex; flex-direction:column; align-items:center; gap:6px;
  color:rgba(250,246,239,.85); text-decoration:none;
  font-size:.62rem; letter-spacing:.22em; text-transform:uppercase; font-weight:600;
  transition:color .2s var(--ease);
}
.hero-scroll-hint:hover{ color:#fff; }
.hero-scroll-hint svg{ width:16px; height:16px; animation:heroScrollHintBounce 1.6s ease-in-out infinite; }
@keyframes heroScrollHintBounce{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }
@media (prefers-reduced-motion:reduce){ .hero-scroll-hint svg{ animation:none; } }
@media (max-width:639px){ .hero-scroll-hint{ display:none; } }
.hero .booking-bar{
  background:rgba(20,14,10,.62); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  border:1px solid rgba(250,246,239,.15); box-shadow:0 14px 30px -16px rgba(0,0,0,.45);
}
.hero .booking-field{ padding:11px 20px; }
.hero .booking-field label{ color:rgba(250,246,239,.65); margin-bottom:3px; }
.hero .booking-field input[type="date"]{ color:#faf6ef; }
.hero .booking-field input[type="date"]::-webkit-calendar-picker-indicator{ filter:invert(1); opacity:.8; }
.hero .booking-field select{ color:#faf6ef; }
.hero .booking-field select option{ color:var(--ink); }
.hero .guest-popover select{ color:var(--ink); }
.hero .guest-trigger{ color:#faf6ef; }
.hero .booking-divider{ background:rgba(250,246,239,.2); margin:10px 0; }
.hero .booking-submit{ padding:0 32px; }
@media (max-width:1023px){ .hero{ height:82vh; min-height:520px; } }
@media (max-width:639px){ .hero{ height:64vh; min-height:420px; } }
.hero-booking{ position:relative; z-index:3; width:100%; display:flex; justify-content:center; }

/* ---------- hero video control bar ---------- */
.hero-video-bar{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  display:flex; align-items:center; gap:16px; height:52px; padding:0 20px;
  background:linear-gradient(to top, rgba(12,9,7,.62) 0%, rgba(12,9,7,.32) 70%, rgba(12,9,7,0) 100%);
}
.hvb-btn{
  flex:0 0 auto; width:28px; height:28px; display:flex; align-items:center; justify-content:center;
  padding:0; border:none; background:none; cursor:pointer; color:#faf6ef; opacity:.9;
  transition:opacity .15s var(--ease);
}
.hvb-btn:hover{ opacity:1; }
.hvb-btn svg{ width:18px; height:18px; }

.hvb-progress{ flex:1 1 auto; display:flex; align-items:center; height:100%; cursor:pointer; touch-action:none; }
.hvb-progress-track{ position:relative; width:100%; height:3px; border-radius:2px; background:rgba(250,246,239,.3); }
.hvb-progress-fill{ position:absolute; left:0; top:0; height:100%; width:0%; border-radius:2px; background:var(--brown); }
.hvb-progress-thumb{
  position:absolute; top:50%; left:0%; width:11px; height:11px; border-radius:50%; background:#faf6ef;
  transform:translate(-50%,-50%); box-shadow:0 1px 4px rgba(0,0,0,.4);
}

.hvb-time{ flex:0 0 auto; color:#faf6ef; font-family:var(--sans); font-size:.7rem; letter-spacing:.02em; min-width:42px; text-align:right; }

.hvb-volume-wrap{ position:relative; flex:0 0 auto; }
.hvb-volume-popover{
  position:absolute; left:50%; bottom:calc(100% + 14px); transform:translateX(-50%);
  display:flex; justify-content:center;
}
.hvb-volume-popover[hidden]{ display:none; }
.hvb-volume-vtrack{ position:relative; width:4px; height:76px; border-radius:2px; background:rgba(250,246,239,.3); cursor:pointer; touch-action:none; }
.hvb-volume-vfill{ position:absolute; left:0; bottom:0; width:100%; height:100%; border-radius:2px; background:#faf6ef; }
.hvb-volume-vthumb{
  position:absolute; left:50%; bottom:100%; width:10px; height:10px; border-radius:50%; background:#faf6ef;
  transform:translate(-50%,50%); box-shadow:0 1px 4px rgba(0,0,0,.4);
}

@media (max-width:900px){
  .hero-video-bar{ gap:10px; padding:0 14px; height:46px; }
  .hvb-time{ min-width:36px; font-size:.65rem; }
}
@media (max-width:639px){
  .hero-video-bar{ display:none; }
}

/* rotating seal badge — recurring signature widget */
.seal{
  position:absolute; z-index:4; width:132px; height:132px;
  filter:drop-shadow(0 8px 20px rgba(20,14,10,.28));
}
.seal .ring{ animation:seal-spin 34s linear infinite; transform-origin:50% 50%; }
@media (prefers-reduced-motion:reduce){ .seal .ring{ animation:none; } }
@keyframes seal-spin{ from{ transform:rotate(0deg); } to{ transform:rotate(360deg); } }
.hero .seal{ right:6%; bottom:14%; }
@media (max-width:768px){ .hero .seal{ display:none; } }

/* ---------- booking bar ---------- */
.booking-bar{
  position:relative; z-index:10; background:var(--surface); max-width:900px; width:100%;
  border-radius:0; box-shadow:0 24px 50px -18px rgba(20,14,10,.5);
  display:flex; align-items:stretch; flex-wrap:wrap; text-align:left;
}
.booking-field{ flex:1 1 160px; padding:16px 24px; position:relative; min-width:150px; }
/* this booking bar now carries five fields (city, hotel, dates, guests) instead of
   two, so it needs more room to lay out in a single row before it wraps to mobile */
#bookingForm{ max-width:1180px; }
#bookingForm .booking-field{ flex:1 1 130px; padding:16px 18px; min-width:120px; }
.booking-field label{ display:block; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:6px; font-weight:600; }
.booking-field input[type="date"]{
  width:100%; border:none; background:none; font-family:var(--sans); font-size:.92rem; color:var(--ink); padding:0; cursor:pointer;
}
.booking-field input[type="date"]:focus{ outline:none; }
.booking-field select{
  width:100%; border:none; background:none; font-family:var(--sans); font-size:.92rem; color:var(--ink); padding:0; cursor:pointer;
}
.booking-field select:focus{ outline:none; }
.booking-divider{ width:1px; background:var(--line); margin:14px 0; flex-shrink:0; }
.guest-trigger{ width:100%; text-align:left; background:none; border:none; padding:0; font-family:var(--sans); font-size:.92rem; color:var(--ink); cursor:pointer; }
.booking-submit{ border-radius:0; padding:0 44px; flex:0 0 auto; }

.guest-popover{
  display:none; position:absolute; bottom:calc(100% + 10px); top:auto; right:0; left:auto;
  width:max-content; max-width:min(760px, calc(100vw - 48px)); max-height:70vh; overflow:auto;
  background:var(--surface); border:1px solid var(--line); border-radius:0; box-shadow:0 20px 40px -16px rgba(45,34,30,.3); padding:20px; z-index:20;
}
.rooms-list{ display:flex; flex-direction:row; gap:24px; }
.room-block{ flex:0 0 240px; width:240px; padding:0 24px 0 0; border-right:1px solid var(--line); }
.room-block:last-child{ padding-right:0; border-right:none; }
.room-block-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.room-label{ font-family:var(--serif); font-size:.98rem; font-weight:600; color:var(--brown-deep); }
.room-remove{
  background:none; border:none; color:var(--ink-faint); font-size:1.2rem; line-height:1; padding:2px 4px; cursor:pointer;
  transition:color .15s var(--ease);
}
.room-remove:hover{ color:var(--brown-deep); }
.add-room-btn{
  display:block; width:100%; text-align:left; background:none; border:none; border-top:1px solid var(--line);
  margin-top:16px; padding:14px 0 0; font-family:var(--sans); font-weight:600; font-size:.82rem; color:var(--brown-deep); cursor:pointer;
  transition:color .15s var(--ease);
}
.add-room-btn:hover{ color:var(--brown); }
.add-room-btn:disabled{ color:var(--ink-faint); cursor:not-allowed; }
.guest-popover.open{ display:block; }
.guest-row{ display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--line); }
.guest-row:last-of-type{ border-bottom:none; }
.guest-row b{ display:block; font-family:var(--serif); font-size:1rem; color:var(--ink); }
.guest-row span{ font-size:.72rem; color:var(--ink-faint); }
.stepper{ display:flex; align-items:center; gap:14px; }
.step-btn{
  width:28px; height:28px; border-radius:0; border:1px solid var(--brown); background:none; color:var(--brown-deep);
  font-size:1rem; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .15s var(--ease), color .15s var(--ease);
}
.step-btn:hover{ background:var(--brown); color:#faf6ef; }
.step-btn:disabled{ opacity:.35; cursor:not-allowed; border-color:var(--line); color:var(--ink-faint); background:none; }
.stepper span{ min-width:16px; text-align:center; font-weight:600; color:var(--ink); }
.child-ages{ display:flex; flex-direction:column; gap:12px; margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
.child-age-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.child-age-row > div{ display:flex; align-items:baseline; gap:6px; }
.child-age-row b{ font-family:var(--serif); font-size:1rem; color:var(--ink); white-space:nowrap; }
.child-age-row span{ font-size:.72rem; color:var(--ink-faint); }
.child-age-select{
  border:1px solid var(--line); background:var(--surface); border-radius:0; padding:8px 30px 8px 12px;
  font-family:var(--sans); font-size:.82rem; color:var(--ink); cursor:pointer; min-width:96px;
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M4 6l4 4 4-4%27 fill=%27none%27 stroke=%27%232d221e%27 stroke-width=%271.6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 10px center; background-size:11px;
}
.guest-done{
  width:100%; margin-top:14px; padding:11px; background:var(--brown); color:#faf6ef; border:none; border-radius:0;
  font-family:var(--sans); font-weight:600; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; cursor:pointer;
}
.guest-done:hover{ background:var(--brown-deep); }

@media (max-width:1140px){
  #bookingForm{ flex-direction:column; }
  #bookingForm .booking-field{ flex:0 0 auto; }
  #bookingForm .booking-divider{ width:auto; height:1px; margin:0 18px; }
  #bookingForm .booking-submit{ border-radius:0; padding:18px; width:100%; justify-content:center; }
}
@media (max-width:900px){
  .booking-bar{ flex-direction:column; }
  .hero-booking{ padding-bottom:24px; }
  .booking-divider{ width:auto; height:1px; margin:0 24px; }
  .booking-submit{ border-radius:0; padding:18px; width:100%; justify-content:center; }
  .guest-popover{ left:24px; right:24px; width:auto; max-width:none; }
  .rooms-list{ flex-direction:column; gap:0; }
  .room-block{ flex:1 1 auto; width:100%; padding:14px 0; border-right:none; border-bottom:1px solid var(--line); }
  .room-block:first-child{ padding-top:0; }
  .room-block:last-child{ padding-bottom:0; border-bottom:none; }
}
@media (max-width:639px){
  .hero-booking{ display:none; }
}

/* ---------- about / introduction (editorial travel journal) ---------- */
.about-section{
  --aj-bg:#f5f1e8; --aj-cream:#faf8f1; --aj-green:#4e583b; --aj-brown:#5a4430; --aj-beige:#d8c9ad;
  background:var(--aj-bg);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
  padding-bottom:70px;
}
.about-grid{
  display:grid; grid-template-columns:auto minmax(0,.86fr) minmax(0,1.1fr);
  gap:0 56px; align-items:start;
}
.about-rail{
  display:flex; flex-direction:column; align-items:center; gap:16px; height:100%; padding-top:6px; color:var(--aj-brown);
}
.about-rail .sprig-rail{ width:16px; height:auto; stroke:var(--aj-green); fill:none; stroke-width:1; opacity:.8; }
.rail-line{ width:1px; flex:1; min-height:40px; background:rgba(90,68,48,.25); }
.rail-text{
  writing-mode:vertical-rl; transform:rotate(180deg); font-size:.66rem; letter-spacing:.26em; text-transform:uppercase;
  white-space:nowrap; color:var(--aj-brown); opacity:.75;
}

.about-eyebrow{ color:var(--aj-green); font-size:.7rem; letter-spacing:.2em; }
.about-copy h1{
  font-size:clamp(2rem,3.6vw,2.9rem); line-height:1.22; color:var(--ink); font-weight:400; max-width:11.5ch;
  scroll-margin-top:144px;
}
.about-divider{ display:flex; align-items:center; gap:14px; margin:26px 0 22px; max-width:280px; }
.about-divider span{ flex:1; height:1px; background:rgba(90,68,48,.3); }
.pinecone{ width:13px; height:auto; flex-shrink:0; stroke:var(--aj-green); fill:none; stroke-width:1; opacity:.85; }
.about-location{
  display:flex; align-items:center; gap:8px; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--aj-brown); margin-bottom:26px;
}
.about-location .pin{ width:11px; height:auto; stroke:var(--aj-green); fill:none; flex-shrink:0; }
.about-p{ max-width:42ch; font-size:1rem; line-height:1.75; color:var(--ink-soft); }
.about-p + .about-p{ margin-top:16px; }

.about-stats{ display:flex; gap:0; margin-top:40px; padding-top:22px; border-top:1px solid rgba(90,68,48,.18); max-width:420px; }
.about-stats div{ flex:1; position:relative; padding-right:18px; }
.about-stats div + div{ padding-left:18px; }
.about-stats div + div::before{ content:''; position:absolute; left:0; top:2px; bottom:2px; width:1px; background:rgba(90,68,48,.22); }
.about-stats b{ display:block; font-family:var(--serif); font-size:2.1rem; color:var(--aj-brown); line-height:1; font-weight:400; }
.about-stats span{ display:block; margin-top:8px; font-size:.62rem; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-faint); }

/* ---------- polaroid collage ---------- */
.about-collage{ position:relative; aspect-ratio:1/1.12; }
.annotation{
  position:absolute; top:-30px; right:6%; font-family:'Caveat',cursive; font-size:1.15rem; color:var(--aj-brown);
  transform:rotate(-3deg); z-index:5;
}
.polaroid-slot{ position:absolute; }
.slot-main{ top:0; right:0; width:72%; }
.slot-views{ left:0; bottom:8%; width:38%; z-index:2; }
.slot-room{ right:4%; bottom:0; width:40%; z-index:3; }

.polaroid{
  background:var(--aj-cream); padding:10px 10px 34px; box-shadow:0 20px 44px -18px rgba(45,34,30,.4);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease); display:block; margin:0;
}
.polaroid img{ width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.polaroid-main{ transform:rotate(-2deg); }
.polaroid-main img{ aspect-ratio:4/4.7; }
.polaroid-main:hover{ transform:rotate(-2deg) translateY(-5px) scale(1.02); box-shadow:0 28px 54px -18px rgba(45,34,30,.46); }
.slot-views .polaroid{ transform:rotate(-4deg); }
.slot-views .polaroid:hover{ transform:rotate(-4deg) translateY(-5px) scale(1.02); }
.slot-room .polaroid{ transform:rotate(3deg); }
.slot-room .polaroid:hover{ transform:rotate(3deg) translateY(-5px) scale(1.02); }
.polaroid figcaption{
  font-family:'Caveat',cursive; font-size:1.15rem; color:var(--aj-brown); text-align:center; padding-top:8px;
}
.tape{
  position:absolute; top:-14px; left:50%; transform:translateX(-50%) rotate(-2deg); width:70px; height:24px;
  background:rgba(216,201,173,.75); box-shadow:0 2px 4px rgba(45,34,30,.15); z-index:4;
}

.about-seal{ position:absolute; left:-30px; bottom:14%; width:100px; height:100px; z-index:5; filter:drop-shadow(0 4px 10px rgba(45,34,30,.18)); }

.about-closing{
  max-width:var(--max); margin:56px auto 0; padding:0 24px; display:flex; align-items:center; justify-content:center; gap:12px;
}
.about-closing .sprig-small{ width:13px; height:auto; stroke:#4e583b; fill:none; stroke-width:1; opacity:.75; }
.about-closing span{ font-family:'Caveat',cursive; font-size:1.3rem; color:#5a4430; }

.about-contour{
  display:block; width:180px; height:auto; margin:34px auto 0; stroke:#5a4430; fill:none; stroke-width:1; opacity:.35;
}

@media (max-width:1100px){
  .about-grid{ grid-template-columns:auto 1fr; }
  .about-collage{ grid-column:1/-1; margin-top:48px; max-width:520px; margin-left:auto; margin-right:auto; }
}
@media (max-width:768px){
  .about-grid{ grid-template-columns:1fr; }
  .about-rail{ display:none; }
  .about-copy h1{ max-width:none; }
  .about-collage{ order:2; margin-top:36px; aspect-ratio:1/1.15; width:100%; }
  .about-p{ max-width:none; }
  .about-stats{ max-width:none; }
  .annotation{ display:none; }
  .about-seal{ display:none; }
}

@media (prefers-reduced-motion:reduce){
  .polaroid{ transition:none; }
}

/* ---------- rooms carousel (equal treatment, one at a time) ---------- */
.rooms{ background:var(--ink); color:#f3ecdf; overflow:hidden; }
.rooms .section-head h2, .rooms .section-head p{ color:#f3ecdf; }
.rooms .section-head p{ color:rgba(243,236,223,.7); }
.room-track-wrap{ position:relative; overflow:hidden; }
.room-track{ display:flex; gap:28px; will-change:transform; }
.room-slide{
  flex:0 0 auto; width:min(78vw,780px);
  display:grid; grid-template-columns:1fr 1fr; background:#382d24; border-radius:0; overflow:hidden;
}
.room-slide .media{ position:relative; aspect-ratio:4/3.8; }
.room-slide .media img{ width:100%; height:100%; object-fit:cover; }
.room-slide .index{
  position:absolute; top:18px; left:18px; font-family:var(--serif); font-size:.85rem; color:#f3ecdf;
  background:rgba(20,14,10,.5); backdrop-filter:blur(3px); padding:6px 12px; border-radius:0;
}
.room-slide .body{ padding:38px 34px; display:flex; flex-direction:column; justify-content:center; gap:14px; }
.room-slide h3{ font-size:1.5rem; color:#f3ecdf; }
.room-slide .tags{ display:flex; flex-wrap:wrap; gap:8px; }
.room-slide .tag{ font-size:.64rem; letter-spacing:.06em; text-transform:uppercase; color:rgba(243,236,223,.85); border:1px solid rgba(243,236,223,.25); padding:5px 12px; border-radius:0; }
.room-slide p.desc{ font-size:.9rem; color:rgba(243,236,223,.7); }
.room-slide .link-cta{ color:#e7cfa8; border-color:#e7cfa8; align-self:flex-start; }
.room-slide .link-cta:hover{ color:#fff; border-color:#fff; }

.room-controls{ display:flex; align-items:center; justify-content:center; gap:20px; margin-top:40px; }
.room-arrow{
  width:48px; height:48px; border-radius:0; border:1px solid rgba(243,236,223,.3); background:none; color:#f3ecdf;
  cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .2s var(--ease), border-color .2s var(--ease);
}
.room-arrow:hover{ background:rgba(243,236,223,.1); border-color:#f3ecdf; }
.room-arrow svg{ width:18px; height:18px; }
.room-dots{ display:flex; gap:9px; }
.room-dots button{ width:8px; height:8px; border-radius:0; background:rgba(243,236,223,.3); border:none; padding:0; cursor:pointer; transition:background .2s var(--ease), transform .2s var(--ease); }
.room-dots button.active{ background:#e7cfa8; transform:scale(1.3); }

@media (max-width:900px){
  .room-slide{ grid-template-columns:1fr; width:min(88vw,480px); }
  .room-slide .media{ aspect-ratio:4/3; }
}

/* ---------- facilities marquee ---------- */
.facilities{
  background:var(--surface); overflow:hidden;
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.marquee-row{ position:relative; overflow:hidden; }
.marquee-row::before, .marquee-row::after{
  content:''; position:absolute; top:0; bottom:0; width:clamp(28px,6vw,90px); z-index:2; pointer-events:none;
}
.marquee-row::before{ left:0; background:linear-gradient(90deg, var(--surface), transparent); }
.marquee-row::after{ right:0; background:linear-gradient(270deg, var(--surface), transparent); }
.marquee-row + .marquee-row{ margin-top:2px; }
.marquee-track{ display:flex; align-items:stretch; gap:20px; width:max-content; animation:marquee-scroll 56s linear infinite; }
.marquee-track.rev{ animation-name:marquee-scroll-rev; animation-duration:56s; }
.marquee-row:hover .marquee-track{ animation-play-state:paused; }
@keyframes marquee-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes marquee-scroll-rev{ from{ transform:translateX(-50%); } to{ transform:translateX(0); } }
@media (prefers-reduced-motion:reduce){
  .marquee-track{ animation:none; flex-wrap:wrap; width:100%; justify-content:center; }
}
.facility-card{
  display:flex; flex-direction:column; align-items:flex-start; gap:14px; width:220px; flex:0 0 auto;
  background:var(--surface); border:1px solid var(--line); border-radius:0; padding:26px 24px;
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.facility-card:hover{ transform:translateY(-4px); box-shadow:0 16px 32px -20px rgba(45,34,30,.3); }
.facility-card .ficon{ width:30px; height:30px; color:var(--brown); }
.facility-card .ficon svg{ width:100%; height:100%; display:block; stroke:currentColor; }
.facility-card .fname{ font-family:var(--serif); font-size:1.1rem; font-weight:400; color:var(--ink); }
.facility-card .fnote{ font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); }

/* ---------- dining (full-bleed photo + floating card) ---------- */
.dining{ background:var(--ink); padding:0; }
.dining-media{ position:absolute; inset:0; overflow:hidden; }
.dining-media img{ width:100%; height:100%; object-fit:cover; display:block; transform:scale(1.4); transform-origin:86% 50%; }
.dining-row{ position:relative; z-index:2; min-height:680px; display:flex; align-items:center; justify-content:flex-end; padding:56px 24px; }
.dining-card{
  position:relative; background:var(--beige-soft); border-radius:0; padding:60px 48px;
  max-width:620px; width:100%; text-align:center;
  box-shadow:0 40px 90px -32px rgba(20,15,12,.5);
}
.dining-card h2{ font-size:clamp(1.9rem,3vw,2.5rem); }
.dining-divider{ display:flex; align-items:center; justify-content:center; gap:10px; max-width:200px; margin:18px auto 30px; }
.dining-divider span{ flex:1; height:1px; background:var(--line); }
.dining-divider i{ width:6px; height:6px; border-radius:50%; border:1px solid var(--brown); flex-shrink:0; }
.dining-meta{ display:flex; align-items:flex-start; justify-content:center; margin-bottom:30px; }
.dining-meta div{ flex:0 0 auto; padding:0 20px; border-left:1px solid var(--line); white-space:nowrap; }
.dining-meta div:first-child{ border-left:none; padding-left:0; }
.dining-meta div:last-child{ padding-right:0; }
.dining-meta div span{ display:block; font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:var(--sage); font-weight:700; margin-bottom:6px; }
.dining-meta div b{ font-weight:500; font-size:.86rem; color:var(--ink); display:block; }
.dining-card p.desc{ color:var(--ink-soft); font-size:.95rem; line-height:1.7; max-width:42ch; margin:0 auto 34px; }
@media (max-width:900px){
  .dining-media{ position:absolute; inset:0; }
  .dining-media img{ transform:none; }
  .dining-row{ min-height:560px; display:flex; align-items:center; justify-content:center; padding:48px 20px; }
  .dining-card{ margin:0 auto; max-width:100%; padding:44px 28px; }
}
@media (max-width:520px){
  .dining-row{ min-height:480px; padding:40px 16px; }
  .dining-card{ padding:36px 22px; }
  .dining-meta{ flex-wrap:wrap; row-gap:18px; }
  .dining-meta div{ flex:1 1 33%; padding:0 8px; white-space:normal; }
}

/* ---------- experiences (staggered rhythm) ---------- */
.experiences{
  background:var(--bg); position:relative;
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.contour-bg{ position:absolute; inset:0; z-index:0; opacity:.5; pointer-events:none; }
.exp-grid{ position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,1fr); gap:28px 24px; }
.exp-grid > *:nth-child(2){ transform:translateY(38px); }
.exp-grid > *:nth-child(5){ transform:translateY(38px); }
.exp-card{ border:1px solid var(--line); border-radius:0; padding:34px 28px; background:var(--surface); transition:transform .25s var(--ease), box-shadow .25s var(--ease); }
.exp-card:hover{ transform:translateY(-6px); box-shadow:0 18px 34px -18px rgba(45,34,30,.28); }
.exp-grid > *:nth-child(2):hover, .exp-grid > *:nth-child(5):hover{ transform:translateY(32px); }
.exp-card .num{ font-family:var(--serif); font-size:.85rem; color:var(--beige); display:block; margin-bottom:16px; }
.exp-card svg{ width:28px; height:28px; stroke:var(--sage); margin-bottom:16px; }
.exp-card h3{ font-size:1.15rem; margin-bottom:10px; }
.exp-card p{ font-size:.88rem; color:var(--ink-soft); }
@media (max-width:960px){
  .exp-grid{ grid-template-columns:1fr 1fr; }
  .exp-grid > *:nth-child(2), .exp-grid > *:nth-child(5){ transform:none; }
}
@media (max-width:639px){ .exp-grid{ grid-template-columns:1fr; } }

/* ---------- gallery (asymmetric grid) ---------- */
.gallery{
  background:var(--beige-soft);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.gj-collage{
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.78fr) minmax(0,.78fr);
  grid-template-rows:1fr 1fr; gap:12px; margin-top:12px;
}
.gj-track{ display:contents; }
.gj-dots{ display:none; }
.gj-photo{ margin:0; position:relative; overflow:hidden; border-radius:0; cursor:pointer; }
.gj-chalet{ grid-column:1; grid-row:1/3; }
.gj-jacuzzi{ grid-column:2; grid-row:1; aspect-ratio:4/3; }
.gj-reception{ grid-column:3; grid-row:1; aspect-ratio:4/3; }
.gj-room{ grid-column:2; grid-row:2; aspect-ratio:4/3; }
.gj-view{ grid-column:3; grid-row:2; aspect-ratio:4/3; }

.gj-photo img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease); }
.gj-photo::after{
  content:''; position:absolute; inset:0; background:linear-gradient(to top, rgba(20,14,10,.62), transparent 55%);
  opacity:0; transition:opacity .3s var(--ease);
}
.gj-photo:hover img, .gj-photo:focus-visible img{ transform:scale(1.05); }
.gj-photo:hover::after, .gj-photo:focus-visible::after{ opacity:1; }
.gj-photo figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:16px 18px; z-index:1; color:#f3ecdf;
  font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;
  opacity:0; transform:translateY(6px); transition:opacity .3s var(--ease), transform .3s var(--ease);
}
.gj-photo:hover figcaption, .gj-photo:focus-visible figcaption{ opacity:1; transform:translateY(0); }

@media (max-width:900px){
  .gj-collage{ grid-template-columns:1fr 1fr; grid-template-rows:auto auto auto; }
  .gj-chalet{ grid-column:1/3; grid-row:1; aspect-ratio:16/10; }
  .gj-jacuzzi{ grid-column:1; grid-row:2; }
  .gj-reception{ grid-column:2; grid-row:2; }
  .gj-room{ grid-column:1; grid-row:3; }
  .gj-view{ grid-column:2; grid-row:3; }
}
@media (max-width:640px){
  .gj-collage{ display:block; }
  .gj-track{
    display:flex; flex-wrap:nowrap; gap:14px;
    overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
    overscroll-behavior-x:contain; touch-action:pan-x;
    padding:2px 2px 6px; -ms-overflow-style:none; scrollbar-width:none;
  }
  .gj-track::-webkit-scrollbar{ display:none; }
  .gj-chalet, .gj-jacuzzi, .gj-reception, .gj-room, .gj-view{
    grid-column:auto; grid-row:auto; flex:0 0 auto; width:82vw; max-width:340px; aspect-ratio:4/3.4; scroll-snap-align:center;
  }
  .gj-dots{ display:flex; justify-content:center; gap:9px; margin-top:14px; }
  .gj-dots button{
    width:8px; height:8px; border-radius:0; background:rgba(90,68,48,.25); border:none; padding:0;
    cursor:pointer; transition:background .2s var(--ease), transform .2s var(--ease);
  }
  .gj-dots button.active{ background:var(--brown); transform:scale(1.3); }
}
.gallery-more{ text-align:center; margin-top:44px; }
.exp-more{ text-align:center; margin-top:44px; }

.lightbox{ position:fixed; inset:0; background:rgba(20,14,10,.95); z-index:300; display:none; align-items:center; justify-content:center; padding:40px; }
.lightbox.active{ display:flex; }
.lightbox img{ max-width:min(1100px,90vw); max-height:85vh; object-fit:contain; border-radius:0; }
.lightbox-close{
  position:absolute; top:26px; right:32px; width:44px; height:44px; border-radius:0;
  background:rgba(250,246,239,.12); color:#faf6ef; border:1px solid rgba(250,246,239,.3);
  font-size:1.2rem; cursor:pointer; display:flex; align-items:center; justify-content:center;
}

/* ---------- location: distance dial ---------- */
.location{
  background:var(--surface);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.location-grid{ display:grid; grid-template-columns:.95fr 1.05fr; gap:48px; align-items:center; }
.dial-wrap{ display:flex; justify-content:center; }
.dial-wrap svg{ width:100%; max-width:460px; height:auto; }
.dial-label{ font-family:var(--sans); font-size:.62rem; letter-spacing:.03em; fill:var(--ink-soft); }
.dial-label b{ font-weight:700; }
.dial-ring{ fill:none; stroke:var(--line); stroke-dasharray:3 5; }
.dial-spoke{ stroke:var(--beige-line); stroke-width:1; }
.dial-point{ fill:var(--sage); }
.dial-center{ fill:var(--brown-deep); }
.dial-center-label{ font-family:var(--serif); font-size:11px; fill:#faf6ef; text-anchor:middle; }
@media (max-width:900px){ .location-grid{ grid-template-columns:1fr; gap:36px; } }

/* ---------- testimonials ---------- */
.testimonial-section{ background:var(--bg); }
.testimonial-row{ display:flex; justify-content:center; gap:26px; flex-wrap:wrap; padding:4px 0 8px; }
.testimonial-rail{ display:contents; }
.tst-track{ display:contents; }
.tst-set{ display:contents; }
.tst-set[aria-hidden]{ display:none; }
.testimonial-card{
  flex:0 1 380px; width:clamp(280px,26vw,380px); display:flex; flex-direction:column;
  background:var(--ink); color:#f3ecdf; padding:38px 32px; border-radius:0;
}
.testimonial-card .mark{ width:34px; height:34px; opacity:.5; margin-bottom:18px; stroke:#f3ecdf; fill:none; stroke-width:1.4; }
.testimonial-card p{ font-family:var(--serif); font-size:1.02rem; line-height:1.62; color:#faf6ef; }
.testimonial-card cite{ display:block; margin-top:auto; padding-top:24px; font-style:normal; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:rgba(250,246,239,.6); }

/* mobile only: continuous auto-scrolling marquee, same technique as the parent site's
   "What Our Guests Carry Home" rail -- a duplicated card set animated with CSS only */
@media (max-width:640px){
  .testimonial-row{ display:block; padding:0; }
  .testimonial-rail{ display:block; overflow:hidden; padding:4px 0 8px; }
  .tst-track{ display:flex; align-items:stretch; width:max-content; animation:tstScroll 20s linear infinite; }
  .testimonial-rail:hover .tst-track{ animation-play-state:paused; }
  .tst-set{ display:flex; align-items:stretch; flex:0 0 auto; }
  .tst-set[aria-hidden]{ display:flex; }
  @keyframes tstScroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
  .testimonial-card{ width:78vw; max-width:320px; margin-right:26px; }
}

/* ---------- offers ---------- */
.offers-band{ background:var(--beige-soft); }
.offer-grid{ display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.offer-grid-single{ grid-template-columns:1fr; max-width:520px; margin:0 auto; }
.offer-card{
  position:relative; border-radius:0; overflow:hidden; aspect-ratio:16/10;
  box-shadow:0 20px 44px -22px rgba(45,34,30,.35);
}
.offer-card img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:transform .5s var(--ease);
}
.offer-card:hover img{ transform:scale(1.06); }
.offer-card::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(20,14,10,.85) 0%, rgba(20,14,10,.4) 48%, rgba(20,14,10,0) 72%);
}
.offer-card-body{
  position:relative; z-index:1; height:100%; display:flex; flex-direction:column;
  justify-content:flex-end; padding:36px; color:#faf6ef;
}
.offer-card .offer-percent{
  font-family:var(--serif); font-size:2.8rem; line-height:1; color:#faf6ef;
  display:flex; align-items:flex-start; margin-bottom:10px;
}
.offer-card .offer-percent i{ font-style:normal; font-size:1.2rem; margin-top:4px; }
.offer-card h3{ color:#faf6ef; font-size:1.3rem; margin-bottom:8px; }
.offer-card p{ color:rgba(250,246,239,.82); font-size:.92rem; line-height:1.6; max-width:36ch; margin-bottom:18px; }
.offer-card .link-cta{ align-self:flex-start; color:#faf6ef; border-color:rgba(250,246,239,.6); }
.offer-card .link-cta:hover{ border-color:#faf6ef; }
@media (max-width:639px){
  .offer-grid{ grid-template-columns:1fr; gap:22px; }
  .offer-card{ aspect-ratio:4/3; }
  .offer-card-body{ padding:26px; }
}

/* ---------- final CTA ---------- */
.final-cta{ position:relative; text-align:center; color:#faf6ef; overflow:hidden; }
.final-cta img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 38%; z-index:0; }
.final-cta::after{ content:''; position:absolute; inset:0; background:rgba(20,14,10,.6); z-index:1; }
.final-cta .container{ position:relative; z-index:2; }
.final-cta h2{ color:#faf6ef; font-size:clamp(1.9rem,3.8vw,2.8rem); max-width:20ch; margin:0 auto 28px; }
.final-cta .seal{ position:absolute; left:50%; top:-66px; transform:translateX(-50%); }

/* ---------- footer ---------- */
.site-footer{ background:var(--ink); color:rgba(250,246,239,.7); padding:0 0 50px; }
.site-footer .container{ max-width:1380px; }
.footer-top{ padding-top:72px; }
.footer-brand{ display:flex; align-items:flex-start; margin-bottom:-34px; overflow:hidden; }
.footer-brand img{ width:220px; height:auto; margin-left:-42px; transform:translateY(-12px); }
@media (max-width:560px){ .footer-brand img{ width:170px; margin-left:-32px; } .footer-brand{ margin-bottom:-26px; } }
.footer-grid{ display:grid; grid-template-columns:1.2fr 1fr 1fr 1fr 1fr; gap:32px; padding-bottom:85px; border-bottom:1px solid rgba(250,246,239,.12); }
@media (min-width:901px){ .footer-brand-col{ margin-top:-32px; } }
.footer-col + .footer-col{ border-left:1px solid rgba(250,246,239,.12); padding-left:32px; }
.footer-col h4, .footer-col-heading{ font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#faf6ef; margin-bottom:26px; font-family:var(--sans); font-weight:700; }
.footer-col-toggle{ all:unset; box-sizing:border-box; display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; font:inherit; color:inherit; letter-spacing:inherit; text-transform:inherit; cursor:default; }
.footer-toggle-chevron{ display:none; flex:0 0 auto; width:14px; height:14px; color:rgba(250,246,239,.5); transition:transform .2s var(--ease); }
.footer-col a{ display:block; text-decoration:none; color:rgba(250,246,239,.68); font-size:.86rem; margin-bottom:15px; transition:color .15s var(--ease); }
.footer-col a:hover{ color:#faf6ef; }
.footer-social-list{ display:flex; flex-direction:column; gap:15px; }
.footer-social-list a{ display:inline-flex; align-items:center; gap:10px; text-decoration:none; color:rgba(250,246,239,.68); font-size:.86rem; margin-bottom:0; transition:color .15s var(--ease); }
.footer-social-list a:hover{ color:#faf6ef; }
.footer-social-list svg{ width:16px; height:16px; flex:0 0 auto; color:rgba(250,246,239,.5); transition:color .15s var(--ease); }
.footer-social-list a:hover svg{ color:#faf6ef; }
.footer-col address{ font-style:normal; display:flex; flex-direction:column; gap:17px; }
.fc-row{ display:flex; align-items:flex-start; gap:10px; }
.fc-row .fc-ic{ flex:0 0 auto; width:16px; height:16px; margin-top:2px; color:rgba(250,246,239,.5); }
.fc-row span, .fc-row a{ font-size:.86rem; color:rgba(250,246,239,.68); margin-bottom:0; }
.fc-row a:hover{ color:#faf6ef; }
.footer-bottom{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; padding-top:32px; font-size:.76rem; color:rgba(250,246,239,.5); }
.footer-sitemap-link{ justify-self:center; }
.footer-bottom .powered{ justify-self:end; }
@media (max-width:560px){ .footer-bottom{ grid-template-columns:1fr; justify-items:center; text-align:center; } .footer-sitemap-link, .footer-bottom .powered{ justify-self:center; } }
.footer-bottom .powered{ margin:0; }
.footer-bottom a{ color:rgba(250,246,239,.5); text-decoration:none; }
.footer-bottom a:hover{ color:#faf6ef; }
@media (max-width:900px){
  .footer-grid{ grid-template-columns:1fr 1fr; padding-bottom:64px; }
  .footer-col{ border-left:none; padding-left:0; }
  .footer-col:nth-child(n+3){ border-top:1px solid rgba(250,246,239,.12); padding-top:28px; }
  .footer-col:nth-child(2n){ border-left:1px solid rgba(250,246,239,.12); padding-left:32px; }
}
@media (max-width:560px){
  .footer-grid{ grid-template-columns:1fr; gap:0; padding-bottom:40px; }
  .footer-col{ border-left:none; padding-left:0; }
  .footer-col + .footer-col{ border-top:1px solid rgba(250,246,239,.12); padding-top:20px; border-left:none; padding-left:0; }
  .footer-brand-col{ margin-bottom:33px; }

  /* footer columns: accordion on mobile */
  .footer-col-heading{ margin-bottom:0; }
  .footer-col-toggle{ cursor:pointer; padding:4px 0; }
  .footer-toggle-chevron{ display:block; }
  .footer-col-toggle[aria-expanded="true"] .footer-toggle-chevron{ transform:rotate(180deg); }
  .footer-col-body{ display:none; overflow:hidden; }
  .footer-col-body.open{ display:block; margin-top:22px; }

  /* social links: horizontal icon row on mobile (label kept for screen readers) */
  .footer-social-list{ flex-direction:row; flex-wrap:wrap; gap:14px; }
  .footer-social-list a{ display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border:1px solid rgba(250,246,239,.18); border-radius:50%; padding:0; }
  .footer-social-list svg{ width:18px; height:18px; }
  .footer-social-label{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
}

/* ==========================================================================
   Inner pages (Rooms summary + detail)
   ========================================================================== */

/* ---------- page hero (compact banner) ---------- */
.page-hero{
  position:relative; min-height:68vh; display:flex; align-items:flex-end; color:#faf6ef; overflow:hidden; margin-top:0;
  padding-bottom:56px;
}
.page-hero img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.page-hero::after{
  content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(to top, rgba(20,14,10,.72) 0%, rgba(20,14,10,.2) 60%, rgba(20,14,10,.35) 100%);
}
.page-hero .container{ position:relative; z-index:2; width:100%; }
.page-hero .crumb{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(250,246,239,.75); margin-bottom:16px; display:block; }
.page-hero .crumb a{ color:rgba(250,246,239,.75); text-decoration:none; border-bottom:1px solid rgba(250,246,239,.3); }
.page-hero .crumb a:hover{ color:#faf6ef; border-color:#faf6ef; }
.page-hero h1{ font-size:clamp(2.2rem,5vw,3.6rem); color:#faf6ef; max-width:18ch; }
.page-hero p{ margin-top:16px; max-width:52ch; font-size:1rem; color:rgba(250,246,239,.88); }

/* ---------- room hero (single image, full-bleed) ---------- */
.room-hero{ min-height:82vh; }

/* ---------- page-level booking band (below hero, inner pages) ---------- */
.page-book-band{
  position:relative; z-index:5; background:var(--surface); padding-top:40px; padding-bottom:64px; display:flex; justify-content:center;
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.page-book-band .booking-bar{
  margin:0 24px; border-radius:0; padding:6px; border:1px solid var(--line);
  box-shadow:0 14px 40px -16px rgba(45,34,30,.28);
}
.page-book-band .booking-field{ padding:14px 26px; }
.page-book-band .booking-submit{ border-radius:0; margin:2px; }
@media (max-width:900px){
  .page-book-band .booking-bar{ border-radius:0; padding:4px; }
  .page-book-band .booking-submit{ border-radius:0; }
}

/* ---------- room overview (2-col: text + mini slider) ---------- */
.room-overview{
  background:var(--surface);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.overview-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:24px; align-items:center; }
.overview-text{ grid-column:1/span 5; }
.overview-text p{ font-size:.98rem; color:var(--ink-soft); margin-bottom:18px; }
.overview-stats{ display:flex; flex-wrap:wrap; gap:0; margin-top:8px; padding-top:22px; border-top:1px solid var(--line); }
.overview-stats div{ flex:1 1 0; min-width:0; position:relative; padding-right:16px; }
.overview-stats div + div{ padding-left:16px; }
.overview-stats div + div::before{ content:''; position:absolute; left:0; top:2px; bottom:2px; width:1px; background:var(--line); }
.overview-stats svg{ display:block; width:22px; height:22px; stroke:var(--brown); fill:none; margin-bottom:10px; }
.overview-stats b{ display:block; font-family:var(--serif); font-size:1.4rem; color:var(--brown-deep); font-weight:400; }
.overview-stats span{ display:block; margin-top:6px; font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); }
.overview-cta{ margin-top:32px; }
@media (max-width:560px){
  .overview-stats div{ padding-right:8px; }
  .overview-stats div + div{ padding-left:8px; }
  .overview-stats svg{ width:18px; height:18px; margin-bottom:6px; }
  .overview-stats b{ font-size:1.05rem; }
  .overview-stats span{ font-size:.56rem; letter-spacing:.04em; }
}
.overview-media{ grid-column:7/span 6; position:relative; }
.overview-media .slider-frame{ position:relative; aspect-ratio:4/5; border-radius:0; overflow:hidden; box-shadow:0 24px 48px -20px rgba(45,34,30,.35); }
#dining-overview .overview-media .slider-frame{ aspect-ratio:4/6; }
#dining-overview .overview-stats{ flex-direction:column; align-items:flex-start; gap:12px; }
#dining-overview .overview-stats div{ display:flex; align-items:center; gap:10px; flex:none; padding:0; width:100%; white-space:nowrap; }
#dining-overview .overview-stats div + div{ padding-left:0; }
#dining-overview .overview-stats div + div::before{ display:none; }
#dining-overview .overview-stats .stat-icon{ width:20px; height:20px; margin-top:4.8px; margin-bottom:0; stroke:var(--brown); flex-shrink:0; }
#dining-overview .overview-stats span{ display:inline; font-family:var(--sans); font-size:.82rem; line-height:1.2; color:var(--ink-soft); text-transform:none; letter-spacing:normal; }
#dining-overview .overview-stats b{ display:inline; font-family:var(--serif); font-size:1rem; line-height:1.2; color:var(--brown-deep); font-weight:400; margin-right:3px; }
#dining-overview{ padding-top:110px; }
@media (max-width:1023px){ #dining-overview{ padding-top:80px; } }
@media (max-width:639px){
  #dining-overview{ padding-top:60px; }
  #dining-overview .overview-media .slider-frame{ aspect-ratio:4/5; }
}
@media (max-width:560px){
  #dining-overview .overview-stats .stat-icon{ width:16px; height:16px; }
  #dining-overview .overview-stats span{ font-size:.7rem; }
  #dining-overview .overview-stats b{ font-size:.9rem; }
}
.overview-media .hero-slide{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .8s var(--ease); }
.overview-media .hero-slide.is-active{ opacity:1; }
.overview-media .slide-arrow{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:38px; height:38px; border-radius:0;
  background:rgba(250,246,239,.92); border:none; cursor:pointer; display:flex; align-items:center; justify-content:center;
  color:var(--brown-deep); transition:background .2s var(--ease);
}
.overview-media .slide-arrow:hover{ background:#fff; }
.overview-media .slide-prev{ left:16px; }
.overview-media .slide-next{ right:16px; }
.overview-media .slide-arrow svg{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; }
.overview-media .blob{ position:absolute; z-index:0; width:200px; height:200px; border-radius:50%; background:var(--sage); opacity:.12; filter:blur(50px); bottom:-40px; left:-40px; }
@media (max-width:900px){
  .overview-grid{ grid-template-columns:1fr; }
  .overview-text, .overview-media{ grid-column:1; }
  .overview-media{ order:-1; }
}

/* ---------- intro strip (summary page) ---------- */
.page-intro{
  background:var(--bg); padding-bottom:0;
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.page-intro p{ max-width:70ch; font-size:1.05rem; color:var(--ink-soft); }
#day-intro{ background-color:var(--beige-soft); display:flow-root; }

/* ---------- wide editorial row (equal footing, alternating) ---------- */
.rooms-list{
  background:var(--surface);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
#day-rows{ background-color:var(--beige-soft); padding-top:40px; }
.rooms-list.offers-list{
  background:var(--bg);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.wide-row{
  display:grid; grid-template-columns:repeat(12,1fr); gap:24px; align-items:center;
  padding:56px 0; border-bottom:1px solid var(--line);
}
.rooms-list .wide-row:last-child{ border-bottom:none; padding-bottom:0; }
.rooms-list .wide-row:first-child{ padding-top:0; }
.wide-row .media{ grid-column:1/span 7; position:relative; overflow:hidden; border-radius:0; aspect-ratio:4/3; }
.wide-row .media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.wide-row .media:hover img{ transform:scale(1.05); }
.wide-row .content{ grid-column:9/span 4; display:flex; flex-direction:column; gap:14px; }
.wide-row.reverse .media{ grid-column:6/span 7; order:2; }
.wide-row.reverse .content{ grid-column:1/span 4; order:1; }
.wide-row .content h2{ font-size:1.7rem; }
.wide-row .content p{ font-size:.92rem; color:var(--ink-soft); }
.wide-row .content > .link-cta{ align-self:flex-start; }
.wide-row .pills{ display:flex; flex-wrap:wrap; gap:10px; }
.wide-row .pill{
  display:flex; align-items:center; gap:7px; background:var(--beige-soft); border:1px solid var(--line);
  padding:6px 14px; border-radius:0; font-size:.74rem; color:var(--ink);
}
.wide-row .pill svg{ width:20px; height:20px; stroke:var(--sage); fill:var(--sage); flex-shrink:0; }
.wide-row .cta-row{ display:flex; flex-wrap:wrap; align-items:center; gap:22px; margin-top:6px; }
.experiences .wide-row{ border-bottom:none; padding:0; }
.rooms-list .wide-row{ scroll-margin-top:110px; }
.rooms-list .wide-row .content p{ font-size:16px; }

/* ---------- experiences: quick nav ---------- */
.exp-quicknav{ padding-top:0; padding-bottom:40px; background:var(--beige-soft); }
.quicknav-row{ display:flex; flex-wrap:wrap; justify-content:center; gap:12px; padding-top:12px; padding-bottom:0; border-bottom:none; }
.quicknav-pill{
  display:inline-block; text-decoration:none; font-size:.8rem; font-weight:600; color:var(--brown-deep);
  background:var(--beige); border:1px solid var(--line); border-radius:0; padding:10px 20px;
  transition:background .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.quicknav-pill:hover{ background:var(--brown); border-color:var(--brown); color:#faf6ef; transform:translateY(-2px); }
@media (max-width:639px){ .quicknav-row{ gap:10px; padding-bottom:40px; } .quicknav-pill{ font-size:.74rem; padding:9px 16px; } }

/* ---------- experiences: single-slide image + card ---------- */
.exp-slider{ display:grid; grid-template-columns:repeat(12,1fr); gap:24px; align-items:center; }
.exp-slider-media{ grid-column:1/span 7; position:relative; overflow:hidden; border-radius:0; aspect-ratio:4/3; box-shadow:0 24px 48px -20px rgba(45,34,30,.35); }
.exp-slider-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.exp-slider-content{ grid-column:9/span 4; display:flex; flex-direction:column; gap:14px; min-height:460px; }
.exp-slider-content > h3{ font-size:1.7rem; }
.exp-slider-content .plan-items{ margin-top:6px; }
.exp-slider-content .plan-item p{ min-height:2.6em; }
.exp-slider-nav{ margin-top:auto; padding-top:20px; display:flex; align-items:center; gap:16px; }
.exp-slider-count{ font-size:.8rem; color:var(--ink-faint); }
.exp-slider-arrow{
  width:44px; height:44px; border-radius:0; border:1px solid var(--line); background:var(--surface); color:var(--brown-deep);
  display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0;
  transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);
}
.exp-slider-arrow:hover{ background:var(--brown); color:#faf6ef; border-color:var(--brown); }
.exp-slider-arrow svg{ width:18px; height:18px; }
@media (max-width:900px){
  .exp-slider{ grid-template-columns:1fr; }
  .exp-slider-media, .exp-slider-content{ grid-column:1; }
}

@media (max-width:900px){
  .wide-row{ grid-template-columns:1fr; gap:24px; }
  .wide-row .media, .wide-row .content, .wide-row.reverse .media, .wide-row.reverse .content{
    grid-column:1; order:0;
  }
  .wide-row.reverse .media{ order:0; }
}

/* ---------- amenity grid (detail page) ---------- */
.amenities{
  background:var(--bg);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.amenities--tight{ padding-top:64px; }
.amenity-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.amenity-tile{
  background:var(--surface); border-radius:14px; padding:22px 20px; display:flex; align-items:center; gap:16px;
  box-shadow:0 8px 22px -14px rgba(45,34,30,.3); border-bottom:3px solid transparent;
  transition:border-color .3s var(--ease), transform .3s var(--ease), box-shadow .3s var(--ease);
}
.amenity-tile:hover{ border-bottom-color:var(--brown); transform:translateY(-3px); box-shadow:0 14px 28px -14px rgba(45,34,30,.35); }
.amenity-tile svg{ width:24px; height:24px; stroke:var(--brown); flex-shrink:0; }
.amenity-tile span{ font-size:.82rem; color:var(--ink); font-weight:600; }
@media (max-width:900px){ .amenity-grid{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:560px){ .amenity-grid{ grid-template-columns:repeat(2,1fr); gap:12px; } .amenity-tile{ padding:16px; gap:12px; } }
.amenity-grid.cols-3{ grid-template-columns:repeat(3,1fr); }
@media (max-width:700px){
  .amenity-grid.cols-3{
    display:flex; overflow-x:auto; gap:16px; scroll-snap-type:x mandatory; padding-bottom:8px;
    scrollbar-width:thin; scrollbar-color:var(--beige) transparent;
  }
  .amenity-grid.cols-3 .amenity-tile{ flex:0 0 78vw; scroll-snap-align:start; }
}

/* ---------- room detail gallery (masonry) ---------- */
.room-gallery{
  background:var(--beige-soft);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.room-gallery-masonry{ columns:2; column-fill:balance; column-gap:16px; }
.room-gallery-masonry figure{
  margin:0 0 16px; break-inside:avoid; overflow:hidden; border-radius:0; cursor:pointer;
  box-shadow:0 10px 24px -14px rgba(45,34,30,.3); transition:box-shadow .3s var(--ease);
}
.room-gallery-masonry figure:hover{ box-shadow:0 20px 38px -16px rgba(45,34,30,.4); }
.room-gallery-masonry img{ display:block; width:100%; height:auto; transition:transform .5s var(--ease); }
.room-gallery-masonry figure:hover img{ transform:scale(1.06); }
.room-gallery-masonry.cols-3{ columns:3; }
@media (max-width:768px){ .room-gallery-masonry.cols-3{ columns:2; } }
@media (max-width:560px){ .room-gallery-masonry{ columns:1; } }
.room-gallery-masonry.equal-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.room-gallery-masonry.equal-grid figure{ margin:0; aspect-ratio:608/408; }
.room-gallery-masonry.equal-grid img{ width:100%; height:100%; object-fit:cover; }
@media (max-width:560px){ .room-gallery-masonry.equal-grid{ grid-template-columns:1fr; } }
@media (max-width:700px){
  #dining-gallery .room-gallery-masonry.equal-grid{
    display:flex; overflow-x:auto; gap:16px; scroll-snap-type:x mandatory; padding-bottom:8px;
    scrollbar-width:thin; scrollbar-color:var(--beige) transparent;
  }
  #dining-gallery .room-gallery-masonry.equal-grid figure{ flex:0 0 78vw; scroll-snap-align:start; aspect-ratio:608/408; }
}

/* ---------- room photo gallery: mobile-only auto-advancing slider with dots ---------- */
.rg-dots{ display:none; }
@media (max-width:640px){
  #room-photo-gallery .room-gallery-masonry{
    display:flex; flex-wrap:nowrap; gap:14px;
    overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
    overscroll-behavior-x:contain; touch-action:pan-x;
    padding:2px 2px 6px; -ms-overflow-style:none; scrollbar-width:none;
  }
  #room-photo-gallery .room-gallery-masonry::-webkit-scrollbar{ display:none; }
  #room-photo-gallery .room-gallery-masonry .gallery-row{ display:contents; }
  #room-photo-gallery .room-gallery-masonry figure{
    flex:0 0 auto; width:82vw; max-width:340px; height:auto; aspect-ratio:4/3; scroll-snap-align:center; margin:0;
  }
  #room-photo-gallery .rg-dots{
    display:flex; justify-content:center; gap:9px; margin-top:14px;
  }
  #room-photo-gallery .rg-dots button{
    width:8px; height:8px; border-radius:0; background:rgba(90,68,48,.25); border:none; padding:0;
    cursor:pointer; transition:background .2s var(--ease), transform .2s var(--ease);
  }
  #room-photo-gallery .rg-dots button.active{ background:var(--brown); transform:scale(1.3); }
}

/* ---------- room gallery: fixed 1232x832 block, 6 photos (3x2) ---------- */
.room-gallery-masonry.equal-grid-6{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.room-gallery-masonry.equal-grid-6 figure{ margin:0; aspect-ratio:400/408; }
.room-gallery-masonry.equal-grid-6 img{ width:100%; height:100%; object-fit:cover; }
@media (max-width:768px){
  .room-gallery-masonry.equal-grid-6{ grid-template-columns:repeat(2,1fr); }
  .room-gallery-masonry.equal-grid-6 figure{ aspect-ratio:4/3; }
}
@media (max-width:560px){ .room-gallery-masonry.equal-grid-6{ grid-template-columns:1fr; } }

/* ---------- room gallery: fixed 1232x832 block, 5 photos (3-over-2 rows) ---------- */
.room-gallery-masonry.equal-grid-5{ display:flex; flex-direction:column; gap:16px; }
.room-gallery-masonry.equal-grid-5 .gallery-row{ display:flex; gap:16px; }
.room-gallery-masonry.equal-grid-5 figure{ margin:0; flex:1 1 0; min-width:0; height:408px; }
.room-gallery-masonry.equal-grid-5 img{ width:100%; height:100%; object-fit:cover; }
@media (max-width:768px){
  .room-gallery-masonry.equal-grid-5 .gallery-row{ flex-wrap:wrap; }
  .room-gallery-masonry.equal-grid-5 figure{ height:auto; aspect-ratio:4/3; flex:1 1 45%; }
}
@media (max-width:560px){ .room-gallery-masonry.equal-grid-5 figure{ flex:1 1 100%; } }

/* ---------- other rooms teaser (horizontal scroll-snap) ---------- */
.other-rooms{ background:var(--surface); }
.other-rooms-scroll{
  display:flex; gap:28px; justify-content:safe center; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:10px;
  scrollbar-width:none; -ms-overflow-style:none;
}
.other-rooms-scroll::-webkit-scrollbar{ display:none; }
.other-room-card{
  text-decoration:none; display:flex; flex-direction:column; flex:0 0 auto; width:390px; scroll-snap-align:start;
  border-radius:0; overflow:hidden; border:1px solid var(--line); box-shadow:0 10px 24px -16px rgba(45,34,30,.25);
  transition:box-shadow .3s var(--ease), transform .3s var(--ease);
}
.other-room-card:hover{ box-shadow:0 18px 34px -16px rgba(45,34,30,.35); transform:translateY(-3px); }
.other-room-card .media{ aspect-ratio:16/10; overflow:hidden; position:relative; flex-shrink:0; }
.other-room-card .media img{ width:100%; height:100%; object-fit:cover; transition:transform .5s var(--ease); }
.other-room-card:hover .media img{ transform:scale(1.06); }
.other-room-card .chip{
  position:absolute; top:14px; left:14px; z-index:2; background:rgba(250,246,239,.94); color:var(--brown-deep);
  padding:6px 15px; border-radius:0; font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; font-weight:600;
}
.other-room-card .body{ padding:22px 24px 26px; display:flex; flex-direction:column; flex:1; }
.other-room-card h3{ font-size:1.25rem; color:var(--ink); }
.other-room-card span{ display:block; margin-top:8px; font-size:.85rem; color:var(--ink-soft); }
.other-room-card a.media{ display:block; text-decoration:none; }
.other-room-card .cta-row{ display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin-top:auto; padding-top:16px; }
@media (max-width:1023px){ .other-rooms-scroll{ justify-content:flex-start; } }
@media (max-width:560px){ .other-room-card{ width:78vw; } }
.or-dots{ display:none; }
#other-rooms-slider .or-dots{
  display:flex; justify-content:center; gap:9px; margin-top:14px;
}
#other-rooms-slider .or-dots button{
  width:8px; height:8px; border-radius:0; background:rgba(90,68,48,.25); border:none; padding:0;
  cursor:pointer; transition:background .2s var(--ease), transform .2s var(--ease);
}
#other-rooms-slider .or-dots button.active{ background:var(--brown); transform:scale(1.3); }

/* ==========================================================================
   Inner pages — Gallery, Facilities, Experiences, Contact, Location
   ========================================================================== */

/* ---------- gallery ---------- */
.gallery-page{
  background:var(--bg);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.gallery-jump{ display:flex; flex-wrap:wrap; gap:10px 28px; justify-content:center; margin-bottom:60px; }
.gallery-jump a{
  font-size:.72rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft);
  text-decoration:none; border-bottom:1px solid transparent; padding-bottom:3px;
  transition:color .15s var(--ease), border-color .15s var(--ease);
}
.gallery-jump a:hover{ color:var(--brown-deep); border-color:var(--brown); }
.gallery-category{ margin-bottom:68px; }
.gallery-category:last-child{ margin-bottom:0; }
.gallery-category-head{ display:flex; align-items:baseline; gap:14px; margin-bottom:22px; }
.gallery-category-head h2{ font-size:1.55rem; }
.gallery-category-head span{ font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); }
.gallery-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.gallery-grid figure{ margin:0; position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:0; cursor:pointer; }
.gallery-grid figure.tall{ grid-column:span 2; grid-row:span 2; }
.gallery-grid img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease); }
.gallery-grid figure::after{
  content:''; position:absolute; inset:0; background:linear-gradient(to top, rgba(20,14,10,.62), transparent 55%);
  opacity:0; transition:opacity .3s var(--ease);
}
.gallery-grid figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:14px 16px; z-index:1; color:#f3ecdf;
  font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; opacity:0; transform:translateY(6px);
  transition:opacity .3s var(--ease), transform .3s var(--ease);
}
.gallery-grid figure:hover img, .gallery-grid figure:focus-visible img{ transform:scale(1.06); }
.gallery-grid figure:hover::after, .gallery-grid figure:focus-visible::after{ opacity:1; }
.gallery-grid figure:hover figcaption, .gallery-grid figure:focus-visible figcaption{ opacity:1; transform:translateY(0); }
@media (max-width:900px){
  .gallery-grid{ grid-template-columns:repeat(2,1fr); }
  .gallery-grid figure.tall{ grid-column:span 2; grid-row:span 1; aspect-ratio:16/10; }
}
@media (max-width:560px){
  .gallery-grid{ grid-template-columns:1fr; }
  .gallery-grid figure.tall{ grid-column:span 1; aspect-ratio:4/3; }
}

/* ---------- facilities: detailed amenity tiles ---------- */
.amenity-tile.detailed{ flex-direction:column; align-items:flex-start; gap:12px; padding:30px 26px; }
.amenity-tile.detailed svg{ width:28px; height:28px; }
#cuisine-menu .amenity-tile.detailed svg{ fill:var(--brown); color:var(--brown); }
.amenity-tile.detailed h3{ font-family:var(--serif); font-size:1.08rem; color:var(--ink); font-weight:400; }
.amenity-tile.detailed p{ font-size:.86rem; color:var(--ink-soft); }
.facilities-crosslink{ background:var(--beige-soft); }
.facilities-crosslink.alt-bg{ background:var(--ink); }
.facilities-crosslink.alt-bg .content h2, .facilities-crosslink.alt-bg .content p{ color:#f3ecdf; }
.facilities-crosslink.alt-bg .content p{ color:rgba(243,236,223,.7); }
.facilities-crosslink.alt-bg .link-cta{ color:#f3ecdf; border-bottom-color:rgba(243,236,223,.5); }
.facilities-crosslink.alt-bg .link-cta:hover{ border-color:#f3ecdf; }
.facilities-crosslink .wide-row{ border-bottom:none; }

/* ---------- experiences: day rows ---------- */
.plan-items{ display:flex; flex-direction:column; gap:24px; margin-top:8px; }
.plan-item{ display:flex; gap:16px; align-items:flex-start; }
.plan-item svg{ width:26px; height:26px; stroke:var(--sage); flex-shrink:0; margin-top:2px; }
.plan-item h3{ font-size:1.05rem; margin-bottom:4px; }
.plan-item p{ font-size:.86rem; color:var(--ink-soft); }

/* ---------- experiences: good-to-know notes ---------- */
.exp-notes{ background:var(--surface); }
.exp-notes-grid{ display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.exp-note{
  display:flex; gap:20px; align-items:flex-start; background:var(--beige-soft); border:1px solid var(--line);
  border-radius:0; padding:30px 28px; box-shadow:0 16px 36px -22px rgba(45,34,30,.3);
}
.exp-note svg{ width:28px; height:28px; stroke:var(--brown); flex-shrink:0; margin-top:2px; }
.exp-note h3{ font-size:1.05rem; margin-bottom:6px; }
.exp-note p{ font-size:.88rem; color:var(--ink-soft); }
@media (max-width:768px){ .exp-notes-grid{ grid-template-columns:1fr; } }

/* ---------- location: getting-here timeline ---------- */
.getting-here-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:start; }
.gh-timeline .timeline-item{ position:relative; padding-left:48px; padding-bottom:38px; }
.gh-timeline .timeline-item:last-child{ padding-bottom:0; }
.gh-timeline .timeline-item::before{ content:''; position:absolute; left:15px; top:38px; bottom:0; width:1px; background:var(--line); }
.gh-timeline .timeline-item:last-child::before{ display:none; }
.gh-timeline .timeline-dot{
  position:absolute; left:0; top:0; width:32px; height:32px; border-radius:50%; background:var(--brown);
  display:flex; align-items:center; justify-content:center;
}
.gh-timeline .timeline-dot svg{ width:20px; height:20px; stroke:#faf6ef; }
.gh-timeline h3{ font-size:1.12rem; margin-bottom:8px; }
.gh-timeline p{ font-size:.92rem; color:var(--ink-soft); max-width:48ch; }
.gh-aside{ background:var(--surface); border-radius:0; overflow:hidden; box-shadow:0 20px 44px -22px rgba(45,34,30,.3); margin-bottom:28px; }
.gh-aside .media{ aspect-ratio:5/3; }
.gh-aside .media img{ width:100%; height:100%; object-fit:cover; display:block; }
.gh-aside .body{ padding:26px 28px; }
.gh-aside h3{ font-size:1.1rem; margin-bottom:8px; }
.gh-aside p{ font-size:.9rem; color:var(--ink-soft); }
@media (max-width:900px){ .getting-here-grid{ grid-template-columns:1fr; } }

/* ---------- location: nearby attractions ---------- */
.attr-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.attr-card{ background:var(--surface); border:1px solid var(--line); border-radius:0; padding:28px 24px; }
.attr-card .attr-icon-row{ display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.attr-card svg{ width:30px; height:30px; stroke:var(--sage); flex-shrink:0; }
.attr-card .badge{
  display:inline-block; font-size:.62rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--brown-deep); background:var(--beige-soft); padding:5px 12px; border-radius:0;
}
.attr-card h3{ font-size:1.05rem; margin-bottom:6px; }
.attr-card p{ font-size:.84rem; color:var(--ink-soft); }
@media (max-width:900px){ .attr-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .attr-grid{ grid-template-columns:1fr; } }

/* ---------- location: map + directions ---------- */
.map-section{
  background:var(--beige-soft);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.map-frame{ border-radius:0; overflow:hidden; box-shadow:0 20px 40px -20px rgba(45,34,30,.3); margin-bottom:28px; }
.map-frame iframe{ width:100%; height:420px; border:0; display:block; }
.directions-card{
  background:var(--surface); border-radius:10px; padding:32px; max-width:760px; margin:0 auto;
  box-shadow:0 20px 44px -22px rgba(45,34,30,.3);
}
.directions-row{ display:flex; flex-wrap:wrap; gap:20px; align-items:flex-end; }
.directions-row .form-field{ flex:1 1 220px; margin-bottom:0; }
@media (max-width:640px){ .directions-row{ flex-direction:column; align-items:stretch; } .directions-row .form-field{ flex:none; } .directions-card{ padding:24px 20px; } }

/* ---------- contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:start; }
.contact-info-media{ display:block; width:100%; aspect-ratio:16/10; border-radius:0; overflow:hidden; margin:0 0 32px; border:1px solid var(--line); box-shadow:0 20px 44px -22px rgba(45,34,30,.3); }
.contact-info-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.contact-block + .contact-block{ margin-top:26px; }
.contact-block h2, .contact-block h3{ font-family:var(--serif); font-size:1.1rem; margin-bottom:6px; font-weight:400; }
.contact-block p, .contact-block a{ font-size:.92rem; color:var(--ink-soft); text-decoration:none; display:block; }
.contact-block a:hover{ color:var(--brown-deep); }
.contact-block .link-cta{ display:inline-block; margin-top:18px; }
.contact-block p.icon-line, .contact-block a.icon-line{ display:flex; align-items:flex-start; gap:9px; }
.icon-line svg{ flex-shrink:0; margin-top:3px; stroke:var(--sage); }
.contact-widget-section{
  background:var(--surface);
  background-image:radial-gradient(rgba(90,68,48,.025) 1px, transparent 1px);
  background-size:3px 3px;
}
.contact-widget{ max-width:900px; margin:0 auto; padding:0; }
.contact-widget-head{ margin-bottom:44px; text-align:center; }
.contact-widget-head .eyebrow{ margin-bottom:8px; color:var(--sage); }
.contact-widget-head h2{ font-size:clamp(1.7rem,3vw,2.3rem); font-weight:400; color:var(--ink); }
.widget-sections{ display:grid; grid-template-columns:repeat(2,1fr); gap:56px; }
.widget-section{ padding-left:40px; border-left:1px solid var(--line); }
.widget-section:first-child{ padding-left:0; border-left:none; }
.widget-section h3, .widget-section h4{ font-family:var(--sans); font-size:.8rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:20px; }
.widget-section p{ font-size:1.05rem; color:var(--ink-soft); margin-bottom:16px; }
.widget-row{ display:flex; align-items:center; gap:14px; font-size:1.05rem; color:var(--ink-soft); margin-bottom:16px; }
.widget-row:last-child{ margin-bottom:0; }
.widget-row a{ color:var(--ink-soft); text-decoration:none; }
.widget-row a:hover{ color:var(--brown-deep); }
.widget-ic{ width:20px; height:20px; color:var(--brown); flex-shrink:0; }
@media (max-width:800px){
  .widget-sections{ grid-template-columns:1fr; gap:32px; }
  .widget-section{ padding-left:0; border-left:none; padding-top:28px; border-top:1px solid var(--line); }
  .widget-section:first-child{ padding-top:0; border-top:none; }
}
.contact-widget .link-cta{ margin-top:18px; }
.contact-form{ background:var(--surface); border-radius:0; padding:40px; box-shadow:0 20px 44px -22px rgba(45,34,30,.3); }
.form-field{ margin-bottom:20px; }
.form-field label{ display:block; font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:8px; }
.form-field input, .form-field textarea, .form-field select{
  width:100%; border:1px solid var(--line); border-radius:4px; padding:13px 16px; font-family:var(--sans);
  font-size:.92rem; color:var(--ink); background:var(--bg);
}
.form-field input:focus, .form-field textarea:focus, .form-field select:focus{ outline:none; border-color:var(--brown); }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.form-consent{ display:flex; gap:10px; align-items:flex-start; font-size:.78rem; color:var(--ink-soft); margin-bottom:22px; }
.form-consent input{ margin-top:3px; accent-color:var(--brown); width:auto; }
.form-status{ font-size:.86rem; color:var(--sage); font-weight:600; margin-bottom:16px; display:none; }
.form-status.show{ display:block; }
@media (max-width:900px){
  .contact-grid{ grid-template-columns:1fr; }
  .form-row{ grid-template-columns:1fr; }
}

/* ---------- sitemap ---------- */
.sitemap-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:40px; padding:64px 0 96px; }
.sitemap-col h4{ font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--brown-deep); margin-bottom:18px; font-family:var(--sans); font-weight:700; }
.sitemap-col h4.sitemap-subhead{ margin-top:24px; }
.sitemap-col a{ display:block; text-decoration:none; color:var(--ink-soft); font-size:.92rem; margin-bottom:12px; transition:color .15s var(--ease); }
.sitemap-col a:hover{ color:var(--ink); }
@media (max-width:900px){ .sitemap-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .sitemap-grid{ grid-template-columns:1fr; } }

/* ---------- FAQs (accordion) ---------- */
.faq-section{ max-width:820px; margin:0 auto 64px; scroll-margin-top:110px; }
.faq-section:last-child{ margin-bottom:0; }
.faq-section-head{ margin-bottom:24px; }
.faq-section-head.center{ text-align:center; }
.faq-section-head h2{ font-size:clamp(1.4rem,2.6vw,1.8rem); margin:6px 0 0; color:var(--brown-deep); }
.faq-list{ max-width:820px; margin:0 auto; display:flex; flex-direction:column; gap:14px; }
.faq-item{
  background:var(--surface); border:1px solid var(--line); border-radius:0;
  padding:0 26px; box-shadow:0 8px 22px -18px rgba(45,34,30,.3);
}
.faq-item summary{
  list-style:none; cursor:pointer; padding:22px 0; display:flex; align-items:center; justify-content:space-between; gap:20px;
  font-family:var(--serif); font-size:1.08rem; color:var(--ink); font-weight:400;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:'+'; flex-shrink:0; width:26px; height:26px; border-radius:0; border:1px solid var(--brown);
  color:var(--brown-deep); display:flex; align-items:center; justify-content:center; font-size:1.1rem; line-height:1;
}
.faq-item[open] summary::after{ content:'\2212'; }
.faq-item p{ margin:0 0 24px; color:var(--ink-soft); font-size:.95rem; line-height:1.7; max-width:66ch; }
@media (max-width:560px){
  .faq-item{ padding:0 18px; }
  .faq-item summary{ font-size:1rem; gap:12px; }
}

/* ---------- Call floating button (desktop only; mobile uses nav-call-btn) ---------- */
.call-float{
  position:fixed; right:22px; bottom:144px; z-index:200;
  width:48px; height:48px; border-radius:50%;
  background:var(--brown); display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -8px rgba(0,0,0,.4);
  transition:transform .2s var(--ease), box-shadow .2s var(--ease);
}
.call-float:hover{ transform:scale(1.08); box-shadow:0 14px 30px -8px rgba(0,0,0,.45); background:var(--brown-deep); }
.call-float svg{ width:22px; height:22px; fill:#fff; }
.call-tooltip{
  position:absolute; bottom:calc(100% + 10px); left:50%; transform:translateX(-50%);
  background:var(--ink); color:#fff; font-family:var(--sans); font-size:.78rem; font-weight:600;
  white-space:nowrap; padding:8px 14px; border-radius:0; opacity:0; pointer-events:none;
  transition:opacity .18s var(--ease);
}
.call-float:hover .call-tooltip{ opacity:1; }
@media (max-width:800px){ .call-float{ display:none; } }

/* ---------- WhatsApp floating button ---------- */
.whatsapp-float{
  position:fixed; right:22px; bottom:94px; z-index:200;
  width:48px; height:48px; border-radius:50%;
  background:#25d366; display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -8px rgba(0,0,0,.4);
  transition:transform .2s var(--ease), box-shadow .2s var(--ease);
}
.whatsapp-float:hover{ transform:scale(1.08); box-shadow:0 14px 30px -8px rgba(0,0,0,.45); }
.whatsapp-float svg{ width:24px; height:24px; fill:#fff; }
.whatsapp-tooltip{
  position:absolute; bottom:calc(100% + 10px); left:50%; transform:translateX(-50%);
  background:var(--ink); color:#fff; font-family:var(--sans); font-size:.78rem; font-weight:600;
  white-space:nowrap; padding:8px 14px; border-radius:6px; opacity:0; pointer-events:none;
  transition:opacity .18s var(--ease);
}
.whatsapp-float:hover .whatsapp-tooltip{ opacity:1; }
@media (max-width:639px){
  .whatsapp-float{ right:16px; bottom:80px; width:42px; height:42px; }
  .whatsapp-float svg{ width:20px; height:20px; }
  .whatsapp-tooltip{ display:none; }
}

/* ---------- back to top ---------- */
.back-to-top{
  position:fixed; right:22px; bottom:22px; z-index:200;
  width:48px; height:48px; border-radius:50%;
  background:var(--brown); color:#faf6ef; border:none;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -8px rgba(0,0,0,.4);
  cursor:pointer; opacity:0; visibility:hidden; transform:translateY(12px);
  transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s, background .18s var(--ease), box-shadow .2s var(--ease);
}
.back-to-top.visible{ opacity:1; visibility:visible; transform:translateY(0); }
.back-to-top:hover{ background:var(--brown-deep); box-shadow:0 14px 30px -8px rgba(0,0,0,.45); }
.back-to-top svg{ width:20px; height:20px; }
@media (max-width:639px){ .back-to-top{ right:16px; bottom:16px; width:42px; height:42px; } .back-to-top svg{ width:18px; height:18px; } }

/* ---------- sticky mobile book bar ---------- */
.sticky-book-bar{ display:none; }
@media (max-width:639px){
  .sticky-book-bar{
    display:flex; align-items:center; justify-content:center;
    position:fixed; left:0; right:0; bottom:0; z-index:190; height:48px;
    background:var(--brown); color:#faf6ef; text-decoration:none;
    font-family:var(--sans); font-weight:600; font-size:.74rem; letter-spacing:.12em; text-transform:uppercase;
    box-shadow:0 -10px 26px -12px rgba(20,14,10,.4);
  }
  .sticky-book-bar:hover{ background:var(--brown-deep); }
  .sticky-book-note{ margin-left:6px; font-size:.66rem; font-weight:500; letter-spacing:.06em;
    text-transform:none; opacity:.85; }
  body.has-sticky-book{ padding-bottom:48px; }
  body.has-sticky-book .whatsapp-float{ bottom:136px; }
  body.has-sticky-book .back-to-top{ bottom:72px; }
}

/* ---------- offer tab (left edge, expandable) ---------- */
.offer-tab{
  position:fixed; left:0; top:50%; z-index:150;
  display:flex; align-items:stretch;
  opacity:0; pointer-events:none;
  transform:translateY(-50%) translateX(-18px);
  transition:opacity .5s var(--ease), transform .5s var(--ease);
  will-change:opacity, transform;
}
.offer-tab.visible{ opacity:1; pointer-events:auto; transform:translateY(-50%) translateX(0); }
@media (prefers-reduced-motion:reduce){ .offer-tab{ transition:none; } }
.offer-tab-handle{
  width:40px; min-height:54px; flex-shrink:0; border:none; cursor:pointer; padding:8px 0;
  background:var(--brown-deep); color:#faf6ef; border-radius:0;
  display:flex; flex-direction:column; align-items:center; justify-content:space-between;
  transition:background .2s var(--ease);
}
.offer-tab-handle:hover{ background:var(--brown); }
.offer-tab.expanded .offer-tab-handle{ border-radius:0; }
.offer-tab-icon{ width:13px; height:13px; flex-shrink:0; }
.offer-tab-label{
  writing-mode:vertical-rl; transform:rotate(180deg); font-size:.66rem; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase;
}
.offer-tab-chevron{ width:13px; height:13px; flex-shrink:0; transition:transform .25s var(--ease); }
.offer-tab.expanded .offer-tab-chevron{ transform:rotate(180deg); }

.offer-panel{
  position:relative; width:0; height:215px; overflow:hidden; background:var(--ink); color:#faf6ef;
  border-radius:0 10px 10px 0; box-shadow:0 20px 44px -18px rgba(20,14,10,.5);
  transition:width .35s var(--ease), padding .35s var(--ease);
}
.offer-tab.expanded .offer-panel{ width:300px; padding:22px 24px; }
.offer-panel-pill{
  display:inline-block; background:var(--beige); color:var(--brown-deep); font-weight:700; font-size:.7rem;
  letter-spacing:.04em; padding:5px 12px; border-radius:0; white-space:nowrap; flex-shrink:0;
}
#offerTab.no-pill .offer-panel-pill{
  background:none; color:var(--beige); font-size:.82rem; letter-spacing:.06em; padding:0; border-radius:0;
}
.offer-panel-title{
  display:flex; align-items:center; gap:8px; flex-wrap:nowrap;
  font-family:var(--serif); font-weight:400; font-size:.95rem; color:#faf6ef; margin:14px 0 10px;
}
.offer-panel-note{ font-size:.84rem; line-height:1.6; color:rgba(243,236,223,.72); white-space:normal; min-height:3.2em; }
.offer-panel-link{
  display:inline-flex; align-items:center; gap:6px; margin-top:18px; color:#faf6ef; text-decoration:none;
  font-size:.72rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  border-bottom:1px solid rgba(243,236,223,.4); padding-bottom:3px; white-space:nowrap;
  transition:border-color .18s var(--ease), letter-spacing .18s var(--ease);
}
.offer-panel-link svg{ width:14px; height:14px; }
.offer-panel-link:hover{ border-color:#faf6ef; letter-spacing:.18em; }
.offer-panel-foot{ display:flex; align-items:center; justify-content:space-between; margin-top:22px; white-space:nowrap; }
.offer-panel-count{ font-size:.76rem; color:rgba(243,236,223,.55); letter-spacing:.04em; }
.offer-panel-arrows{ display:flex; gap:8px; }
.offer-panel-arrow{
  width:26px; height:26px; border-radius:0; border:1px solid rgba(243,236,223,.3); background:none; color:#f3ecdf;
  cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; flex-shrink:0;
  transition:background .18s var(--ease), border-color .18s var(--ease);
}
.offer-panel-arrow:hover{ background:rgba(243,236,223,.1); border-color:#f3ecdf; }
.offer-panel-arrow svg{ width:14px; height:14px; }
@media (max-width:639px){
  .offer-tab-handle{ width:34px; min-height:48px; padding:6px 0; }
  .offer-tab.expanded .offer-panel{ width:250px; padding:18px; }
  .offer-panel-title{ font-size:.82rem; gap:6px; }
}

/* ================= BOOKING MODAL (Book Now popup) ================= */
.booking-modal{
  position:fixed; inset:0; z-index:210; display:flex; align-items:center; justify-content:center; padding:24px;
  visibility:hidden; opacity:0; transition:visibility .3s, opacity .3s;
}
.booking-modal.open{ visibility:visible; opacity:1; }
.booking-modal-overlay{
  position:absolute; inset:0; background:rgba(20,14,10,.55);
}
.booking-modal-panel{
  position:relative; z-index:1; width:100%; max-width:1180px;
  background:rgba(20,14,10,.4); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  box-shadow:0 24px 60px -20px rgba(20,14,10,.5);
  padding:20px 22px 36px;
  transform:translateY(16px) scale(.98); transition:transform .3s var(--ease);
}
.booking-modal.open .booking-modal-panel{ transform:translateY(0) scale(1); }
.booking-modal-close{
  position:absolute; top:12px; right:12px; width:auto; height:auto; border:none; background:none; cursor:pointer;
  font-size:1.5rem; line-height:1; color:rgba(250,246,239,.7);
}
.booking-modal-close:hover{ color:#faf6ef; }
.booking-modal-head{ margin:0 0 14px; font-family:var(--serif); font-size:1.1rem; color:#faf6ef; text-align:center; }

/* continuous-bar fields matching the hero booking bar: one translucent bar per row,
   thin dividers between fields, light text sitting directly on the dark panel */
#bookingModal .booking-bar{
  background:none; box-shadow:none; max-width:none; flex-direction:column; align-items:stretch; gap:12px;
}
#bookingModal #brandBookingForm{ max-width:none; }
#bookingModal .booking-row{
  display:flex; flex-wrap:wrap; align-items:stretch;
  background:rgba(20,14,10,.3); border:1px solid rgba(250,246,239,.18);
}
#bookingModal #brandBookingForm .booking-field{
  flex:1 1 130px; width:auto; min-width:120px; min-height:64px; padding:10px 18px;
  background:none; box-shadow:none; border-radius:0; border-right:1px solid rgba(250,246,239,.18);
  display:flex; flex-direction:column; justify-content:center; position:relative;
}
#bookingModal #brandBookingForm .booking-field:last-child{ border-right:none; }
#bookingModal #brandBookingForm .booking-cta-field{
  flex:0 0 auto; min-width:150px; background:none; box-shadow:none; padding:10px 14px; border-right:none;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
}
#bookingModal #brandBookingForm .booking-submit{ width:100%; justify-content:center; padding:10px 18px; }
#bookingModal #brandBookingForm .booking-field label{ font-size:.6rem; margin-bottom:4px; color:rgba(250,246,239,.6); text-transform:uppercase; letter-spacing:.1em; font-weight:600; }
#bookingModal #brandBookingForm .booking-field select,
#bookingModal #brandBookingForm .booking-field input[type="date"]{ font-size:.86rem; color:#faf6ef; }
#bookingModal #brandBookingForm .booking-field select option{ color:var(--ink); }
#bookingModal #brandBookingForm .booking-field input[type="date"]::-webkit-calendar-picker-indicator{ filter:invert(1); opacity:.8; }
#bookingModal #brandBookingForm .guest-trigger{ font-size:.86rem; color:#faf6ef; }
#bookingModal #brandBookingForm .field-icon{ display:none; }
#bookingModal #brandBookingForm .field-input{ gap:0; display:flex; align-items:center; }
#bookingModal #brandBookingForm .field-input input[type="text"]{
  width:100%; border:none; background:none; font-family:var(--sans); font-size:.82rem; color:#faf6ef; padding:0;
}
#bookingModal #brandBookingForm .field-input input[type="text"]::placeholder{ color:rgba(250,246,239,.5); }
#bookingModal #brandBookingForm .field-input input[type="text"]:focus{ outline:none; }
#bookingModal .field-hint{
  position:absolute; top:100%; left:0; right:0; margin-top:6px; text-align:left;
  font-size:.6rem; letter-spacing:.03em; text-decoration:underline;
  text-underline-offset:3px; color:rgba(250,246,239,.75); cursor:default;
}
#bookingModal .field-hint:hover{ color:#faf6ef; }
#bookingModal .field-hint-manage{ text-align:right; }
#bookingModal .cta-hint-row{ display:contents; }
#bookingModal .field-hint-mobile-only{ display:none; }
#bookingModal .field-tooltip{
  position:absolute; bottom:calc(100% + 10px); left:50%; transform:translateX(-50%) translateY(4px);
  width:230px; background:var(--ink); color:rgba(250,246,239,.9); font-size:.74rem; line-height:1.55;
  letter-spacing:normal; text-decoration:none; padding:14px 16px; box-shadow:0 14px 30px -12px rgba(20,14,10,.5);
  opacity:0; visibility:hidden; transition:opacity .2s var(--ease), transform .2s var(--ease); z-index:5;
}
#bookingModal .field-tooltip a{ color:#e7cfa8; text-decoration:underline; }
#bookingModal .field-hint:hover .field-tooltip,
#bookingModal .field-hint:focus .field-tooltip,
#bookingModal .field-hint:focus-within .field-tooltip{ opacity:1; visibility:visible; transform:translateX(-50%) translateY(0); }

@media (max-width:760px){
  #bookingModal .booking-row{ flex-direction:column; }
  #bookingModal #brandBookingForm .booking-field{
    flex:0 0 auto; width:100%; border-right:none; border-bottom:1px solid rgba(250,246,239,.18);
  }
  #bookingModal #brandBookingForm .booking-field:last-child{ border-bottom:none; }
  #bookingModal #brandBookingForm .booking-field.has-hint{ margin-bottom:0; }
  #bookingModal #brandBookingForm .booking-field.has-hint > .field-hint{ display:none; }
  #bookingModal #brandBookingForm .booking-cta-field{ align-items:stretch; padding-top:12px; }
  #bookingModal .cta-hint-row{
    display:flex; align-items:center; justify-content:space-between; gap:16px; width:100%; margin-top:8px;
  }
  #bookingModal .cta-hint-row .field-hint{ position:static; margin-top:0; }
  #bookingModal .field-hint-mobile-only{ display:inline-block; }
  #bookingModal .field-tooltip{ left:auto; right:0; transform:translateY(4px); }
  #bookingModal .field-hint:hover .field-tooltip,
  #bookingModal .field-hint:focus .field-tooltip,
  #bookingModal .field-hint:focus-within .field-tooltip{ transform:translateY(0); }
}

/* the modal's own Rooms & Guests popover -- dark theme, distinct from the hero form's
   light-themed guest popover (same class names, scoped under #bookingModal only) */
#bookingModal .guest-popover{
  display:none; position:absolute; bottom:calc(100% + 10px); top:auto; right:0; left:auto;
  width:max-content; max-width:min(760px, calc(100vw - 48px)); max-height:70vh; overflow:auto;
  background:rgba(20,14,10,.92); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(250,246,239,.18); border-radius:0; box-shadow:0 20px 40px -16px rgba(0,0,0,.5); padding:20px; z-index:20;
  -ms-overflow-style:none; scrollbar-width:none;
}
#bookingModal .guest-popover::-webkit-scrollbar{ display:none; }
#bookingModal .guest-popover.open{ display:block; }
#bookingModal .guest-popover .rooms-list{ display:flex; flex-direction:row; gap:24px; background:none; }
#bookingModal .room-block{ flex:0 0 240px; width:240px; padding:0 24px 0 0; border-right:1px solid rgba(250,246,239,.18); }
#bookingModal .room-block:last-child{ padding-right:0; border-right:none; }
#bookingModal .room-block-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
#bookingModal .room-label{ font-family:var(--serif); font-size:.98rem; font-weight:600; color:#e7cfa8; }
#bookingModal .room-remove{
  background:none; border:none; color:rgba(250,246,239,.5); font-size:1.2rem; line-height:1; padding:2px 4px; cursor:pointer;
  transition:color .15s var(--ease);
}
#bookingModal .room-remove:hover{ color:#faf6ef; }
#bookingModal .add-room-btn{
  display:block; width:100%; text-align:left; background:none; border:none; border-top:1px solid rgba(250,246,239,.18);
  margin-top:16px; padding:14px 0 0; font-family:var(--sans); font-weight:600; font-size:.82rem; color:#e7cfa8; cursor:pointer;
  transition:color .15s var(--ease);
}
#bookingModal .add-room-btn:hover{ color:#faf6ef; }
#bookingModal .add-room-btn:disabled{ color:rgba(250,246,239,.3); cursor:not-allowed; }
#bookingModal .guest-row{ display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid rgba(250,246,239,.18); }
#bookingModal .guest-row:last-of-type{ border-bottom:none; }
#bookingModal .guest-row b{ display:block; font-family:var(--serif); font-size:1rem; color:#faf6ef; }
#bookingModal .guest-row span{ font-size:.72rem; color:rgba(250,246,239,.5); }
#bookingModal .stepper{ display:flex; align-items:center; gap:14px; }
#bookingModal .step-btn{
  width:28px; height:28px; border-radius:0; border:1px solid rgba(250,246,239,.4); background:none; color:#faf6ef;
  font-size:1rem; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .15s var(--ease), color .15s var(--ease);
}
#bookingModal .step-btn:hover{ background:var(--brown); color:#faf6ef; border-color:var(--brown); }
#bookingModal .step-btn:disabled{ opacity:.35; cursor:not-allowed; border-color:rgba(250,246,239,.15); color:rgba(250,246,239,.3); background:none; }
#bookingModal .stepper span{ min-width:16px; text-align:center; font-weight:600; color:#faf6ef; }
#bookingModal .child-ages{ display:flex; flex-direction:column; gap:12px; margin-top:14px; padding-top:14px; border-top:1px solid rgba(250,246,239,.18); }
#bookingModal .child-age-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
#bookingModal .child-age-row > div{ display:flex; align-items:baseline; gap:6px; }
#bookingModal .child-age-row b{ font-family:var(--serif); font-size:1rem; color:#faf6ef; white-space:nowrap; }
#bookingModal .child-age-row span{ font-size:.72rem; color:rgba(250,246,239,.5); }
#bookingModal .child-age-select{
  border:1px solid rgba(250,246,239,.3); background:rgba(250,246,239,.08); border-radius:0; padding:8px 30px 8px 12px;
  font-family:var(--sans); font-size:.82rem; color:#faf6ef; cursor:pointer; min-width:96px;
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M4 6l4 4 4-4%27 fill=%27none%27 stroke=%27%23faf6ef%27 stroke-width=%271.6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 10px center; background-size:11px;
}
#bookingModal .child-age-select option{ color:var(--ink); }
#bookingModal .guest-done{
  width:100%; margin-top:14px; padding:11px; background:var(--brown); color:#faf6ef; border:none; border-radius:0;
  font-family:var(--sans); font-weight:600; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; cursor:pointer;
}
#bookingModal .guest-done:hover{ background:var(--brown-deep); }

@media (max-width:1140px){
  #bookingModal #brandBookingForm{ flex-direction:column; }
}

@media (max-width:900px){
  #bookingModal .guest-popover{
    position:fixed; left:16px; right:16px; top:5vh; bottom:5vh;
    width:auto; max-width:none; max-height:none;
  }
  #bookingModal .guest-popover .rooms-list{ flex-direction:column; gap:0; }
  #bookingModal .room-block{ flex:1 1 auto; width:100%; padding:14px 0; border-right:none; border-bottom:1px solid rgba(250,246,239,.18); }
  #bookingModal .room-block:first-child{ padding-top:0; }
  #bookingModal .room-block:last-child{ padding-bottom:0; border-bottom:none; }
}

/* ---------- mobile: frosted slider arrows on room pages ---------- */
@media (max-width:639px){
  .overview-media .slide-arrow{
    background:rgba(250,246,239,.38);
    -webkit-backdrop-filter:blur(8px) saturate(140%);
    backdrop-filter:blur(8px) saturate(140%);
    border:1px solid rgba(250,246,239,.45);
    color:#fff;
    box-shadow:0 2px 10px rgba(20,14,10,.22);
  }
  .overview-media .slide-arrow:hover,
  .overview-media .slide-arrow:active{ background:rgba(250,246,239,.55); }
}

/* the whole date box opens the calendar (see main.js), so it reads as clickable */
.field-input:has(input[type="date"]), .field-input input[type="date"]{ cursor:pointer; }
