/* The Sunlight Manali - mobile first. Base = phones, then min-width queries. */

:root {
  --green: #4d5e47;
  --green-dark: #3b4937;
  --cream: #f8f5ef;
  --gold: #b99a6b;
  --gold-dark: #7a6238; /* 5.8:1 on white: safe for small text and icons */
  --gold-light: #d9c08f; /* gold for dark backgrounds */
  --green-night: #2c3d2f;
  --ink: #1d211c;
  --muted: #5c6159;
  --error: #a12a1f;
  --header-h: 60px;
  --font-body: "Jost", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-head: "Marcellus", Georgia, "Times New Roman", serif;
}

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-body);
  color: var(--ink);
  background: #f4f4f1;
  line-height: 1.5;
}
body.modal-open { overflow: hidden; }

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
ul { list-style: none; margin: 0; padding: 0; }

:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 42px; padding: 0 1.25rem;
  background: var(--green); color: #fff; border: 0; border-radius: 0;
  font: 500 1rem/1 var(--font-body); text-decoration: none; cursor: pointer;
  transition: background-color .2s;
}
.btn:hover { background: var(--green-dark); }
.btn-lg { height: 48px; padding: 0 1.75rem; font-size: 1.0625rem; }
.btn-block { width: 100%; }

/* ---------- Header (compact on mobile) ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: #fff; box-shadow: 0 1px 0 rgba(0,0,0,.06);
}
.header-inner {
  display: flex; align-items: center; justify-content: space-between;
  height: var(--header-h); max-width: 1320px; margin: 0 auto; padding: 0 1rem;
}
.logo img { height: 34px; width: auto; }

.nav-toggle {
  display: grid; gap: 5px; align-content: center; justify-items: end;
  width: 44px; height: 44px; padding: 0; background: none; border: 0; cursor: pointer;
}
.nav-toggle span { display: block; width: 26px; height: 2px; background: var(--ink); }

.main-nav {
  display: none;
  position: absolute; top: 100%; left: 0; right: 0;
  background: #fff; padding: .25rem 1rem 1rem;
  border-top: 1px solid #eee; box-shadow: 0 10px 20px rgba(0,0,0,.08);
}
.main-nav.is-open { display: block; }
.main-nav a:not(.btn) { display: block; padding: .65rem 0; text-decoration: none; font-weight: 500; letter-spacing: .04em; text-transform: uppercase; }
.main-nav a.is-current { padding-left: .75rem; color: var(--green); box-shadow: inset 3px 0 0 var(--gold); } /* phones: gold bar on the open page */
.nav-phone { margin-bottom: .5rem; }
.main-nav a.nav-phone { display: flex; align-items: center; gap: .5rem; text-transform: none; }
.icon-phone { flex: none; color: var(--green); }
.main-nav .btn { width: 100%; }

/* ---------- Hero slider ---------- */
.hero {
  position: relative; overflow: hidden; color: #fff; background: #2b3328;
  height: 72svh; min-height: 460px; max-height: 640px;
}
.slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s ease; }
.slide.is-active { opacity: 1; }
.slide img { width: 100%; height: 100%; object-fit: cover; }

/* Slow zoom-in. The reset to scale(1) waits until the fade-out is done. */
.slide img { transform: scale(1); transition: transform 0s linear 1.2s; }
.slide.is-active img { transform: scale(1.12); transition: transform 8s linear 0s; }

.hero-overlay { position: absolute; inset: 0; z-index: 1; background: rgba(14, 20, 14, .48); }
.hero h1, .hero p { text-shadow: 0 1px 8px rgba(0, 0, 0, .35); }

.hero-content {
  position: absolute; inset: 0; z-index: 2;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 0 1rem 2.5rem; text-align: center;
}
.hero h1 {
  margin: 0 0 .5rem; font: 400 clamp(2.25rem, 10vw, 5.5rem)/1.08 var(--font-head);
}
.hero p { margin: 0 0 1.25rem; max-width: 22em; font-size: clamp(1.0625rem, 4vw, 1.5rem); line-height: 1.5; }

/* ---------- Enquiry form ----------
   Phones: popup on top of the page (opened by "Enquire Now").
   Tablet/desktop: a bar that overlaps the bottom of the slider.
   No JavaScript: the form is simply shown in the page. */
.enquiry {
  position: relative; z-index: 3; max-width: 1200px;
  margin: -2rem auto 0; padding: 0 .75rem;
  scroll-margin-top: calc(var(--header-h) + .5rem);
}
.enquiry-card { background: var(--cream); padding: .75rem; box-shadow: 0 8px 22px rgba(0,0,0,.12); }
.enquiry-title { margin: 0 0 .5rem; font: 400 1.375rem/1.2 var(--font-head); color: var(--green-dark); }
.enquiry-close { display: none; }

/* Popup mode (JS present, phones only) */
.js .enquiry {
  display: none; position: fixed; inset: 0; z-index: 100;
  max-width: none; margin: 0; padding: 1rem;
  align-items: center; justify-content: center;
  background: rgba(14, 20, 14, .6);
}
.js .enquiry.is-open { display: flex; }
.js .enquiry-card {
  position: relative; width: 100%; max-width: 400px;
  max-height: 100%; overflow-y: auto; padding: .875rem .75rem .75rem;
}
.js .enquiry-close {
  position: absolute; top: 2px; right: 2px;
  display: grid; place-items: center; width: 40px; height: 40px;
  background: none; border: 0; font-size: 1.75rem; line-height: 1; color: var(--ink); cursor: pointer;
}

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.f-name, .f-phone, .f-email { grid-column: 1 / -1; }
.field-button { align-self: end; }

.field { min-width: 0; }
.field label { display: block; margin: 0 0 2px; font-size: .8125rem; color: var(--muted); }
.field input {
  width: 100%; height: 40px; padding: 0 .6rem;
  font: inherit; font-size: 1rem; color: var(--ink);
  background: #fff; border: 1px solid #d9d2c3; border-radius: 0;
}
.field input:focus { border-color: var(--green); outline: 0; box-shadow: 0 0 0 2px rgba(77,94,71,.25); }
.field-error { display: block; font-size: .75rem; color: var(--error); }

.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.form-success {
  margin: 0 0 .5rem; padding: .5rem .75rem;
  background: #e8efe5; color: var(--green-dark); border-left: 3px solid var(--green);
}

/* ---------- Footer ---------- */
.site-footer { position: relative; overflow: hidden; background: var(--green-night); color: #fff; }
.footer-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .12; pointer-events: none; }
.footer-main {
  position: relative; display: grid; gap: 1.5rem;
  max-width: 1320px; margin: 0 auto; padding: 2rem 1.25rem 1.5rem;
}
.footer-brand img { width: auto; height: 42px; margin-bottom: .75rem; }
.footer-desc { max-width: 30em; margin: 0 0 .75rem; line-height: 1.65; color: rgba(255, 255, 255, .92); }
.footer-title { margin: 0 0 .5rem; font: 400 1.5rem/1.2 var(--font-head); }

.footer-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.footer-links a, .footer-contact a { color: rgba(255, 255, 255, .95); text-decoration: none; }
.footer-links a { display: flex; align-items: center; min-height: 44px; }
.footer-links a:hover, .footer-contact li a:hover, .footer-bottom a:hover { color: var(--gold-light); }

.footer-contact ul { display: grid; gap: .75rem; margin: 0 0 1rem; }
.footer-contact li { display: flex; align-items: flex-start; gap: .75rem; line-height: 1.5; }
.footer-contact address { font-style: normal; }
.footer-contact svg, .footer-social svg { flex: none; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.footer-contact li svg { margin-top: 2px; color: var(--gold-light); }
.footer-directions {
  display: inline-block; padding-bottom: 2px; border-bottom: 1px solid var(--gold-light);
  font: 400 1.125rem/1.4 var(--font-head); color: #fff; text-decoration: none;
}

.footer-social { display: flex; gap: .25rem; }
.footer-social a { display: grid; place-items: center; width: 44px; height: 44px; color: #fff; }
.footer-social a:hover { color: var(--gold-light); }

.footer-bottom { position: relative; background: #141c15; padding: .5rem 1.25rem; }
.footer-bottom-inner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 1.5rem;
  max-width: 1320px; margin: 0 auto; font-size: .875rem;
}
.footer-bottom p { margin: .5rem 0; }
.footer-bottom nav { display: flex; gap: 1.25rem; }
.footer-bottom nav a { display: inline-flex; align-items: center; min-height: 44px; color: #fff; text-decoration: none; text-transform: uppercase; letter-spacing: .06em; }

@media (min-width: 992px) {
  .footer-main { grid-template-columns: 1.5fr 1fr 1fr 1.3fr; gap: 2.5rem; padding: 3rem 2rem 2.5rem; }
  .footer-columns { display: contents; } /* the two link lists become their own grid columns */
  .footer-links a { min-height: 34px; }
  .footer-bottom { padding: .25rem 2rem; }
}

/* ---------- Find us (map) ---------- */
.findus { display: grid; background: var(--cream); }
.findus-card { padding: 1.75rem 1.25rem; }
.findus .eyebrow { color: var(--green); }
.findus h2 { margin: 0 0 .5rem; font: 400 clamp(1.625rem, 5.5vw, 2.5rem)/1.15 var(--font-head); }
.findus address { margin: 0 0 1rem; font-style: normal; line-height: 1.6; color: #4b5148; }
.findus-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.findus-map { min-height: 300px; background: #e9e6df; }
.findus-map iframe { display: block; width: 100%; height: 100%; min-height: 300px; border: 0; }

@media (min-width: 992px) {
  .findus { grid-template-columns: minmax(340px, 440px) 1fr; }
  .findus-card { align-self: center; padding: 2.5rem 2.5rem 2.5rem max(2rem, calc((100vw - 1320px) / 2 + 2rem)); }
  .findus-map, .findus-map iframe { min-height: 420px; }
}


/* ---------- Tablet / small laptop ---------- */
@media (min-width: 768px) {
  :root { --header-h: 72px; }
  .logo img { height: 40px; }
  .js-enquire { display: none; } /* "Enquire Now" buttons are for phones only; the form is already on the page */
  .hero { height: 78svh; min-height: 520px; }

  /* Back to a normal in-page bar */
  .enquiry,
  .js .enquiry,
  .js .enquiry.is-open {
    display: block; position: relative; inset: auto; z-index: 3;
    max-width: 1320px; margin: -3.5rem auto 0; padding: 0 1.5rem; background: none;
  }
  .enquiry-card,
  .js .enquiry-card { max-width: none; max-height: none; overflow: visible; padding: 1rem; }
  .js .enquiry-close { display: none; }
  .enquiry-title {
    position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap;
  }

  /* Fields sized to the data they hold. Name and Email take the spare room. */
  .form-grid { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .5rem; }
  .f-name  { flex: 1 1 150px; min-width: 120px; }
  .f-phone { flex: 0 0 150px; }
  .f-email { flex: 1 1 180px; min-width: 140px; }
  .f-date  { flex: 0 0 150px; }
  .f-pax   { flex: 0 0 68px; }
  .field-button { flex: 0 0 auto; margin-top: 1.4rem; }
  .field-button .btn { height: 40px; white-space: nowrap; }
  .field input { font-size: .9375rem; padding: 0 .5rem; }
}

/* ---------- Desktop ---------- */
@media (min-width: 992px) {
  :root { --header-h: 84px; }
  .logo img { height: 46px; }
  .nav-toggle { display: none; }

  .main-nav {
    position: static; display: flex; align-items: center; gap: 1.75rem;
    padding: 0; border: 0; box-shadow: none; background: none;
  }
  .main-nav ul { display: flex; gap: 1.75rem; }
  .main-nav a:not(.btn) { padding: .25rem 0; }
  .main-nav a.is-current { border-bottom: 2px solid var(--green); box-shadow: none; } /* desktop: underline */
  .nav-phone { margin: 0; text-transform: none !important; }
  .main-nav .btn { width: auto; height: 48px; padding: 0 1.5rem; }
}

/* ---------- Wide: everything in ONE line ---------- */
@media (min-width: 1100px) {
  .form-grid { flex-wrap: nowrap; }
}

@media (min-width: 1200px) {
  .hero { max-height: 720px; }
}

/* ---------- Rooms slider ---------- */
.rooms {
  --overlap: 3.25rem; --slide-w: 100%; --gap: .75rem; --ratio: 4 / 5;
  --green-deep: #3e5641;
  margin-top: 1.5rem; /* space between the enquiry form / hero and this section */
  padding-bottom: 1.25rem; background: #fff;
}
.rooms-head {
  padding: 1.75rem 1rem calc(var(--overlap) + .75rem);
  background: var(--green-deep); color: #fff; text-align: center;
}
.eyebrow { margin: 0 0 .5rem; font-size: .8125rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; }
.rooms-head h2 { margin: 0 0 .5rem; font: 400 clamp(1.75rem, 6vw, 3.25rem)/1.15 var(--font-head); }
.rooms-intro { margin: 0 auto; max-width: 40em; font-size: 1rem; line-height: 1.6; }

.rooms-slider { position: relative; margin-top: calc(var(--overlap) * -1); }
.rooms-track {
  position: relative; display: flex; gap: var(--gap);
  overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
  scrollbar-width: none;
}
.rooms-track::-webkit-scrollbar { display: none; }
.rooms-track:focus-visible { outline-offset: -3px; }

.room {
  position: relative; flex: 0 0 var(--slide-w); aspect-ratio: var(--ratio);
  overflow: hidden; scroll-snap-align: center; color: #fff; background: #26302a;
}
.room img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1); transition: transform .9s cubic-bezier(.2, .6, .2, 1);
}
/* Dark gradient behind the text keeps white text readable on any photo (contrast) */
.room::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(8, 14, 8, .88) 0, rgba(8, 14, 8, .4) 45%, rgba(8, 14, 8, 0) 72%);
}
/* Green tint that fades in on hover */
.room::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: rgba(62, 86, 65, .55); opacity: 0; transition: opacity .6s ease;
}
.room-price {
  position: absolute; top: .75rem; left: .75rem; z-index: 2; margin: 0;
  padding: .5rem .75rem; background: #fff; color: var(--ink);
  font-size: .875rem; font-weight: 500; letter-spacing: .04em; text-transform: uppercase;
}
.room-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 1rem 1rem 1.25rem; text-align: center; }
.room h3 { margin: 0 0 .25rem; font: 400 clamp(1.375rem, 5vw, 2.25rem)/1.15 var(--font-head); }
.room h3 a { color: inherit; text-decoration: none; }
.room h3 a::after { content: ""; position: absolute; inset: 0; z-index: 3; } /* whole card is clickable */
.room-meta { margin: 0 0 .4rem; font-size: .9375rem; font-weight: 500; }
.room-desc {
  margin: 0 auto; max-width: 34em; font-size: .9375rem; line-height: 1.5;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden;
}

@media (hover: hover) {
  .room:hover img, .room:focus-within img { transform: scale(1.08); }
  .room:hover::after, .room:focus-within::after { opacity: 1; }
}

.rooms-arrow {
  position: absolute; top: 50%; z-index: 5; transform: translateY(-50%);
  display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
  background: #fff; color: var(--ink); border: 0; border-radius: 50%;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .25); cursor: pointer; transition: background-color .2s;
}
.rooms-arrow:hover { background: var(--cream); }
.rooms-prev { left: .5rem; }
.rooms-next { right: .5rem; }

.rooms-dots { display: flex; justify-content: center; }
.rooms-dots button {
  display: grid; place-items: center; width: 44px; height: 44px; padding: 0;
  background: none; border: 0; cursor: pointer; /* 44px tap target, 10px dot */
}
.rooms-dots button::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: #8c9188; transition: background-color .2s; }
.rooms-dots button[aria-current="true"]::before { background: var(--ink); }

.rooms-cta { margin-top: .25rem; text-align: center; }

@media (min-width: 768px) {
  .rooms { --overlap: 4.5rem; --slide-w: 78%; --gap: 1rem; --ratio: 3 / 2; margin-top: 2.5rem; padding-bottom: 1.5rem; }
  .rooms-head { padding-top: 2.25rem; }
  .rooms-prev { left: 1.5rem; }
  .rooms-next { right: 1.5rem; }
}
@media (min-width: 1100px) {
  .rooms { --slide-w: 58%; --ratio: 16 / 10; }
}

@media (prefers-reduced-motion: reduce) {
  .room img, .room::after, .place-media img, .gallery-item img { transition: none; }
  .room:hover img, .room:focus-within img { transform: none; }
}

/* ---------- Services ---------- */
.services { padding: 2.25rem 0 2rem; background: #fff; }
.services-inner { display: grid; gap: 1.5rem; max-width: 1320px; margin: 0 auto; padding: 0 1.25rem; }
.eyebrow-dark { margin: 0 0 .5rem; font-size: .8125rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--green); }
.services h2 { margin: 0 0 1.25rem; font: 400 clamp(1.75rem, 6vw, 3.25rem)/1.12 var(--font-head); }
.services-list { display: grid; gap: 1.1rem 2rem; }
.service { display: flex; align-items: flex-start; gap: 1rem; }
.service-icon {
  flex: none; width: 40px; height: 40px;
  fill: none; stroke: var(--gold-dark); stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round;
}
.service h3 { margin: 0 0 .15rem; font: 400 1.25rem/1.25 var(--font-head); }
.service p { margin: 0; font-size: .9375rem; line-height: 1.55; color: #4b5148; }
.tag {
  display: inline-block; margin-left: .4rem; padding: 0 .45rem; vertical-align: 1px;
  border: 1px solid var(--gold-dark); color: var(--gold-dark);
  font-size: .75rem; font-weight: 500; letter-spacing: .03em; text-transform: uppercase; white-space: nowrap;
}
.services-media { overflow: hidden; aspect-ratio: 4 / 3; background: #e9e6df; }
.services-media img { width: 100%; height: 100%; object-fit: cover; }

@media (min-width: 640px) {
  .services-list { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 992px) {
  .services { padding: 3rem 0; }
  .services-inner { grid-template-columns: 1.2fr .8fr; gap: 3rem; align-items: stretch; padding: 0 2rem; }
  .services-media { aspect-ratio: auto; min-height: 420px; }
}

/* ---------- About ---------- */
.about { padding: 2.25rem 0; background: var(--green-night); color: #fff; }
.about-inner { display: grid; gap: 1.5rem; max-width: 1320px; margin: 0 auto; padding: 0 1.25rem; }
.about .eyebrow { color: var(--gold-light); } /* 5.7:1 on the dark green */

/* Two overlapping photos */
.about-media { position: relative; padding-bottom: 28%; }
.about-media img { display: block; object-fit: cover; background: #26302a; }
.about-img-1 { width: 72%; aspect-ratio: 4 / 5; height: auto; }
.about-img-2 { position: absolute; right: 0; bottom: 0; width: 54%; aspect-ratio: 4 / 5; height: auto; box-shadow: 0 10px 28px rgba(0, 0, 0, .3); }

.about h2 { margin: 0 0 .75rem; font: 400 clamp(1.875rem, 6vw, 3.5rem)/1.12 var(--font-head); }
.about-copy { margin: 0 0 1rem; max-width: 36em; font-size: 1rem; line-height: 1.7; color: rgba(255, 255, 255, .92); }
.about-points { display: grid; gap: .4rem; margin: 0 0 1.25rem; }
.about-points li { display: flex; align-items: center; gap: .6rem; font-size: .9375rem; }
.about-points svg { flex: none; fill: none; stroke: var(--gold-light); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.btn-outline {
  display: inline-flex; align-items: center; justify-content: center; height: 46px; padding: 0 1.5rem;
  border: 1px solid #fff; color: #fff; background: transparent; text-decoration: none;
  font: 500 1rem/1 var(--font-body); transition: background-color .2s, color .2s;
}
.btn-outline:hover { background: #fff; color: var(--green-night); }

@media (min-width: 992px) {
  .about { padding: 3.5rem 0; }
  .about-inner { grid-template-columns: 1fr 1fr; align-items: center; gap: 4rem; padding: 0 2rem; }
  .about-media { margin-right: 1rem; }
}

/* ---------- Nearby places ---------- */
.places { --overlap: 4rem; --gap: 1.25rem; --show: 1.18; padding-bottom: 1.5rem; background: #fff; }

/* Top part: scenic photo + heading. Dark green shows if the photo is missing. */
.places-head {
  position: relative; overflow: hidden; background: var(--green-night); color: #fff; text-align: center;
  padding: 2rem 1.25rem calc(var(--overlap) + .75rem);
}
.places-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.places-head::after { content: ""; position: absolute; inset: 0; background: rgba(12, 20, 13, .58); } /* keeps the white text readable */
.places-head-inner { position: relative; z-index: 2; max-width: 44em; margin: 0 auto; text-shadow: 0 1px 8px rgba(0, 0, 0, .35); }
.places-icon { display: block; margin: 0 auto .5rem; fill: none; stroke: #fff; stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.places .eyebrow { color: var(--gold-light); }
.places h2 { margin: 0 0 .5rem; font: 400 clamp(1.875rem, 6vw, 3.5rem)/1.12 var(--font-head); }
.places-intro { margin: 0; font-size: 1rem; line-height: 1.6; }

/* Slider: landscape cards that overlap the photo, each with an offset gold frame */
.places-slider { position: relative; z-index: 3; max-width: 1320px; margin: calc(var(--overlap) * -1) auto 0; padding: 0 1rem; }
.places-track {
  display: flex; align-items: flex-start; gap: var(--gap);
  padding: 1rem .9rem 1rem 1.1rem; scroll-padding-inline: 1.1rem;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
}
.places-track::-webkit-scrollbar { display: none; }
.places-track:focus-visible { outline-offset: -3px; }

.place {
  position: relative; scroll-snap-align: start;
  flex: 0 0 calc((100% - var(--gap) * (var(--show) - 1)) / var(--show));
}
.place::after { /* the offset gold frame from your reference */
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  transform: translate(-.875rem, -.875rem); border: 1px solid var(--gold);
}
.place-media { position: relative; overflow: hidden; aspect-ratio: 4 / 3; color: #fff; background: #26302a; }
.place-media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1); transition: transform .8s cubic-bezier(.2, .6, .2, 1);
}
.place-media::before { /* dark gradient behind the text */
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(8, 14, 8, .9) 0, rgba(8, 14, 8, .45) 48%, rgba(8, 14, 8, 0) 78%);
}
.place-dist {
  position: absolute; top: .75rem; left: .75rem; z-index: 3; margin: 0; padding: .25rem .6rem;
  background: var(--green-night); color: #fff; font-size: .8125rem; font-weight: 500;
}
.place-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 1rem 1rem 1.1rem; text-align: center; }
.place h3 { margin: 0 0 .25rem; font: 400 1.5rem/1.2 var(--font-head); }
.place-body p {
  margin: 0; font-size: .9375rem; line-height: 1.45;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
}
@media (hover: hover) { .place:hover .place-media img { transform: scale(1.08); } }

/* Arrows */
.places-nav { display: flex; justify-content: center; gap: .75rem; margin-top: .25rem; }
.places-arrow {
  display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
  background: #fff; color: var(--green); border: 1px solid var(--green); border-radius: 50%; cursor: pointer;
  transition: background-color .2s, color .2s;
}
.places-arrow svg { fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.places-arrow:hover:not(:disabled) { background: var(--green); color: #fff; }
.places-arrow:disabled { opacity: .35; cursor: default; }

.places-cta { margin-top: 1rem; padding: 0 1.25rem; text-align: center; }
.btn-outline-dark { border-color: var(--green); color: var(--green); }
.btn-outline-dark:hover { background: var(--green); color: #fff; }
.places-note { margin: .5rem 0 0; font-size: .8125rem; color: var(--muted); }

@media (min-width: 768px) {
  .places { --overlap: 6rem; --show: 2.2; }
  .places-head { padding-top: 2.5rem; }
  .places-slider { padding: 0 1.5rem; }
  .place:nth-child(even) { margin-top: 2.25rem; } /* staggered, like your reference */
}
@media (min-width: 992px) {
  .places { --overlap: 8rem; --show: 3; }
  .places-head { padding-top: 3rem; }
  .places-slider { padding: 0 2rem; }
}

/* ---------- Gallery ---------- */
.gallery { padding: 2rem 0 1.5rem; background: #fff; }
.gallery-head { max-width: 42em; margin: 0 auto 1rem; padding: 0 1.25rem; text-align: center; }
.gallery .eyebrow { color: var(--green); }
.gallery h2 { margin: 0; font: 400 clamp(1.75rem, 6vw, 3.25rem)/1.15 var(--font-head); }

.gallery-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
.gallery-item { position: relative; display: block; overflow: hidden; aspect-ratio: 1 / 1; background: #d8d4c8; cursor: zoom-in; }
.gallery-item:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
.gallery-item img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1); transition: transform .8s cubic-bezier(.2, .6, .2, 1);
}
.gallery-item:focus-visible { outline-offset: -4px; }
@media (hover: hover) { .gallery-item:hover img { transform: scale(1.06); } }

.gallery-cta { margin-top: 1rem; text-align: center; }

/* Photo popup (native <dialog>) */
.lightbox {
  width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0;
  border: 0; background: transparent; color: #fff;
}
.lightbox::backdrop { background: rgba(8, 12, 9, .94); }
.lightbox[open] { display: grid; place-items: center; }
.lb-figure { display: grid; justify-items: center; gap: .5rem; margin: 0; padding: 3.5rem 1rem 1.5rem; }
.lb-img { display: block; max-width: min(94vw, 1400px); max-height: 76vh; width: auto; height: auto; object-fit: contain; }
.lb-caption { max-width: 40em; font-size: .9375rem; text-align: center; }
.lb-count { margin: 0; font-size: .8125rem; opacity: .85; }
.lb-btn {
  position: fixed; z-index: 2; display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
  background: rgba(255, 255, 255, .95); color: var(--ink); border: 0; border-radius: 50%; cursor: pointer;
  transition: background-color .2s;
}
.lb-btn:hover { background: #fff; }
.lb-btn svg { fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.lb-close { top: .75rem; right: .75rem; }
.lb-prev { left: .75rem; top: 50%; transform: translateY(-50%); }
.lb-next { right: .75rem; top: 50%; transform: translateY(-50%); }

@media (min-width: 768px) {
  .gallery { padding-top: 2.5rem; }
  /* one big photo on the left, four small ones on the right */
  .gallery-grid { grid-template-columns: 2fr 1fr 1fr; }
  .gallery-item, .gallery-item:first-child { aspect-ratio: 3 / 2; }
  .gallery-item:first-child { grid-column: 1; grid-row: 1 / 3; aspect-ratio: auto; }
}

/* ---------- Guest reviews ---------- */
.reviews { padding: 2.25rem 0 2rem; background: var(--cream); }
.reviews-head { max-width: 42em; margin: 0 auto 1.25rem; padding: 0 1.25rem; text-align: center; }
.reviews .eyebrow { color: var(--green); }
.reviews h2 { margin: 0 0 .5rem; font: 400 clamp(1.75rem, 6vw, 3.25rem)/1.15 var(--font-head); }
.reviews-summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem; margin: 0; font-size: 1rem; }
.reviews-score { font: 400 1.75rem/1 var(--font-head); }
.review-stars { color: var(--gold-dark); letter-spacing: .1em; white-space: nowrap; }
.review-stars .off { color: #d6cfbf; }

/* Phones and tablets: swipe row. Wide screens: 4 columns. */
.reviews-track {
  display: flex; gap: .875rem; padding: 0 1.25rem .5rem; scroll-padding-inline: 1.25rem;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
}
.reviews-track::-webkit-scrollbar { display: none; }
.reviews-track:focus-visible { outline-offset: -3px; }

.review {
  flex: 0 0 84%; scroll-snap-align: start; margin: 0; padding: 1.1rem;
  display: flex; flex-direction: column; gap: .6rem;
  background: #fff; border: 1px solid #e7e1d4;
}
.review-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.review-source { font-size: .75rem; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--green); }
.review-score { padding: .1rem .5rem; background: var(--green-night); color: #fff; font-size: .8125rem; font-weight: 500; }
.review blockquote { flex: 1; margin: 0; font-size: 1rem; line-height: 1.6; }
.review figcaption { display: grid; gap: .1rem; font-size: .9375rem; }
.review figcaption span { font-size: .8125rem; color: var(--muted); }

.reviews-cta { margin-top: 1rem; padding: 0 1.25rem; text-align: center; }

@media (min-width: 640px) { .review { flex-basis: 46%; } }
@media (min-width: 1100px) {
  .reviews { padding: 3rem 0 2.5rem; }
  .reviews-track {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem;
    max-width: 1320px; margin: 0 auto; padding: 0 2rem; overflow: visible;
  }
  .review { flex: none; }
}

/* ---------- FAQ ---------- */
.faq { padding: 2.25rem 0; background: var(--green-night); color: #fff; }
.faq-inner { display: grid; gap: 1.5rem; max-width: 1320px; margin: 0 auto; padding: 0 1.25rem; }
.faq .eyebrow { color: var(--gold-light); }
.faq h2 { margin: 0 0 .75rem; font: 400 clamp(1.75rem, 6vw, 3.25rem)/1.15 var(--font-head); }
.faq-intro { max-width: 30em; margin: 0 0 1rem; line-height: 1.6; color: rgba(255, 255, 255, .92); }
.faq-actions { display: flex; flex-wrap: wrap; gap: .75rem; }

.faq-list { border-top: 1px solid rgba(255, 255, 255, .25); }
.faq-item { border-bottom: 1px solid rgba(255, 255, 255, .25); }
.faq-item summary {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  min-height: 56px; padding: .5rem 0; cursor: pointer; list-style: none;
  font: 400 1.1875rem/1.35 var(--font-head);
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; content: "+" / ""; flex: none; font: 300 1.75rem/1 var(--font-body); color: var(--gold-light); }
.faq-item[open] summary::after { content: "\2212"; content: "\2212" / ""; }
.faq-item summary:focus-visible { outline-color: var(--gold-light); }
.faq-answer { max-width: 44em; margin: 0; padding: 0 0 1rem; font-size: 1rem; line-height: 1.65; color: rgba(255, 255, 255, .92); }

@media (min-width: 992px) {
  .faq { padding: 3.5rem 0; }
  .faq-inner { grid-template-columns: 1fr 1.4fr; align-items: start; gap: 4rem; padding: 0 2rem; }
  .faq-text { position: sticky; top: calc(var(--header-h) + 1.5rem); }
}

/* ---------- Shared: screen-reader text, breadcrumbs, gallery button, highlighted button ---------- */
.sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* Breadcrumbs. The layout prints them under the header on every page that sets ViewData["Crumbs"]. */
.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; margin: 0; padding: 0; list-style: none; font-size: .875rem; }
.crumbs li + li::before { content: "/"; margin-right: .5rem; opacity: .6; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.crumbs [aria-current] { font-weight: 500; }
.crumbs-bar { background: #fff; border-bottom: 1px solid #eee8da; color: var(--muted); }
.crumbs-inner { max-width: 1320px; margin: 0 auto; padding: .75rem 1rem; }
.crumbs-bar .crumbs a { color: var(--green); }

/* "View all photos" button on the bottom-right of a gallery grid (used by the room pages) */
.gallery-wrap { position: relative; background: #fff; }
.gallery-all {
  display: none; position: absolute; right: .75rem; bottom: .75rem; z-index: 2;
  align-items: center; gap: .5rem; height: 44px; padding: 0 1rem;
  background: rgba(20, 26, 20, .85); color: #fff; border: 0;
  font: 500 .9375rem/1 var(--font-body); letter-spacing: .02em; cursor: pointer;
}
.js .gallery-all { display: inline-flex; } /* needs JavaScript, so it stays hidden without */
.gallery-all:hover { background: #000; }
.gallery-all:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
@media (min-width: 768px) { .gallery-all { right: 1.25rem; bottom: 1.25rem; } }

/* Highlighted button: solid green, gold base line, arrow. Used on the room cards and the room form. */
.btn-cta {
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
  height: 52px; padding: 0 1.75rem;
  background: var(--green); color: #fff; border: 0; border-bottom: 3px solid var(--gold);
  font: 500 1.0625rem/1 var(--font-body); letter-spacing: .02em; text-decoration: none; cursor: pointer;
  box-shadow: 0 6px 14px rgba(59, 73, 55, .28); transition: background-color .2s, box-shadow .2s;
}
.btn-cta svg { flex: none; fill: none; stroke: var(--gold-light); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s; }
.btn-cta:hover { background: var(--green-dark); box-shadow: 0 8px 18px rgba(59, 73, 55, .38); }
.btn-cta:hover svg { transform: translateX(4px); }
@media (prefers-reduced-motion: reduce) {
  .btn-cta, .btn-cta svg { transition: none; }
  .btn-cta:hover svg { transform: none; }
}

/* ---------- Short inner-page banner (no form) ---------- */
.page-banner {
  position: relative; overflow: hidden; display: grid; place-items: center;
  height: 200px; background: var(--green-night); color: #fff; text-align: center;
}
.page-banner-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.page-banner::after { content: ""; position: absolute; inset: 0; background: rgba(14, 20, 14, .52); } /* keeps white text readable */
.page-banner-inner { position: relative; z-index: 2; padding: 0 1rem; text-shadow: 0 1px 8px rgba(0, 0, 0, .35); }
.page-banner .crumbs { margin-bottom: .5rem; }
.page-banner .crumbs ol { justify-content: center; }
.page-banner h1 { margin: 0 0 .35rem; font: 400 clamp(2rem, 8vw, 3.5rem)/1.1 var(--font-head); }
.page-banner p { margin: 0 auto; max-width: 30em; font-size: 1rem; line-height: 1.5; }

@media (min-width: 768px) {
  .page-banner { height: 260px; }
  .page-banner p { font-size: 1.125rem; }
}
@media (min-width: 1200px) {
  .page-banner { height: 300px; }
}

/* ---------- Call-to-action band (green) ---------- */
.cta-band { padding: 2.25rem 1.25rem; background: var(--green); color: #fff; text-align: center; }
.cta-band h2 { margin: 0 0 .5rem; font: 400 clamp(1.75rem, 5.5vw, 2.75rem)/1.15 var(--font-head); }
.cta-band p { max-width: 34em; margin: 0 auto 1.25rem; line-height: 1.6; }
.cta-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .75rem; }
.btn-light {
  display: inline-flex; align-items: center; justify-content: center; height: 46px; padding: 0 1.5rem;
  background: #fff; color: var(--green-dark); border-bottom: 3px solid var(--gold);
  font: 500 1rem/1 var(--font-body); text-decoration: none; transition: background-color .2s;
}
.btn-light:hover { background: var(--cream); }

/* ---------- Fixed Call + WhatsApp: two round buttons in the bottom-right corner, on every screen size ---------- */
.fab-bar {
  position: fixed; right: 1rem; bottom: calc(1rem + env(safe-area-inset-bottom, 0px)); z-index: 90;
  display: flex; flex-direction: column; gap: .75rem;       /* Call on top, WhatsApp below */
}
.fab {
  position: relative; display: grid; place-items: center; width: 56px; height: 56px;
  border-radius: 50%; color: #fff; text-decoration: none;
  box-shadow: 0 6px 16px rgba(0, 0, 0, .3); transition: transform .2s;
}
.fab svg { flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.fab-call { background: var(--green); }          /* white on green: 7:1 */
.fab-wa { background: #137a3c; }                 /* white on this green: 5.4:1 (the usual bright WhatsApp green fails the contrast test) */
.fab:hover { transform: scale(1.06); }
.fab:focus-visible { outline: 3px solid var(--gold-light); outline-offset: 3px; }
.fab-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }  /* text for screen readers only */
@media (min-width: 768px) {
  .fab-bar { right: 1.25rem; bottom: 1.25rem; }
}
@media (min-width: 992px) and (max-width: 1199px) {   /* seven menu links need a little less room on small laptops */
  .main-nav, .main-nav ul { gap: 1rem; }
  .main-nav a:not(.btn) { font-size: .875rem; }
}
@media print { .fab-bar { display: none; } }
@media (prefers-reduced-motion: reduce) { .fab { transition: none; } .fab:hover { transform: none; } }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .slide, .slide img, .slide.is-active img { transition: none; transform: none; }
}
