:root {
  --primary: #064E3B;
  --primary-light: #065F46;
  --primary-dark: #053D2E;
  --secondary: #F9F8F6;
  --tertiary: #A8A29E;
  --neutral: #111827;
  --cream: #F5F5F0;
  --gold: #B8860B;
  --font-display: "Playfair Display", Georgia, serif;
  --font-sans: Inter, system-ui, sans-serif;
}
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--secondary);
  color: var(--neutral);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
button, input, select, textarea { font-family: inherit; }
.container { width: min(1280px, calc(100% - 2rem)); margin-inline: auto; }
.container-sm { width: min(768px, calc(100% - 2rem)); margin-inline: auto; }
main { flex: 1; }
.rounded-sm { border-radius: 2px; }

/* Scrollbar */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #F9F8F6; }
::-webkit-scrollbar-thumb { background: #A8A29E; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #064E3B; }

/* Header — matches Next.js fixed overlay */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  transition: background .3s, padding .3s, box-shadow .3s;
  padding: 1.15rem 0;
}
.site-header.is-scrolled,
body:not(.header-dark) .site-header {
  background: rgba(255,255,255,.95);
  backdrop-filter: blur(12px);
  box-shadow: 0 1px 8px rgba(0,0,0,.06);
  padding: .7rem 0;
}
.header-inner {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.brand { display: flex; align-items: center; gap: .65rem; }
.brand-logo { width: 48px; height: 48px; display: block; border-radius: 50%; background: #fff; }
.brand span { display: flex; flex-direction: column; }
.brand-name {
  font-family: var(--font-display); font-size: 1.25rem; font-weight: 500; letter-spacing: -.02em;
  color: var(--primary); line-height: 1.1;
}
.brand-sub { font-size: .65rem; letter-spacing: .28em; text-transform: uppercase; color: var(--tertiary); margin-top: .15rem; }
body.header-dark .site-header:not(.is-scrolled) .brand-name { color: #fff; }
body.header-dark .site-header:not(.is-scrolled) .brand-sub { color: rgba(255,255,255,.8); }
.nav { display: none; gap: 2rem; }
.nav a { font-size: .875rem; font-weight: 500; letter-spacing: .02em; color: rgba(17,24,39,.8); }
.nav a:hover { color: var(--primary); }
body.header-dark .site-header:not(.is-scrolled) .nav a { color: rgba(255,255,255,.9); }
body.header-dark .site-header:not(.is-scrolled) .nav a:hover { color: #fff; }
.header-actions { display: flex; align-items: center; gap: 1rem; }
.header-actions .phone { display: none; font-size: .875rem; color: rgba(17,24,39,.7); }
body.header-dark .site-header:not(.is-scrolled) .header-actions .phone,
body.header-dark .site-header:not(.is-scrolled) .header-actions .link-quiet { color: rgba(255,255,255,.85); }
.link-quiet { font-size: .875rem; font-weight: 500; }
.link-quiet:hover { color: var(--primary); }
.mobile-toggle {
  background: none; border: 0; font-size: 1.5rem; cursor: pointer; color: var(--neutral); line-height: 1;
}
body.header-dark .site-header:not(.is-scrolled) .mobile-toggle { color: #fff; }
.mobile-nav {
  display: none; flex-direction: column; gap: 1.25rem;
  background: #fff; padding: 1.5rem 0 2rem;
}
.mobile-nav.open { display: flex; }
.mobile-nav a { font-family: var(--font-display); font-size: 1.5rem; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  border: 0; border-radius: 2px; cursor: pointer; font-weight: 500;
  padding: .75rem 1.5rem; font-size: 1rem; transition: .2s ease;
}
.btn-sm { padding: .5rem 1rem; font-size: .875rem; }
.btn-lg { padding: 1rem 2rem; font-size: 1.125rem; }
.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-light); }
.btn-outlined { background: transparent; color: var(--primary); border: 1px solid var(--primary); }
.btn-outlined:hover { background: var(--primary); color: #fff; }
.btn-inverted { background: #fff; color: var(--primary); }
.btn-inverted:hover { background: var(--primary); color: #fff; }
.btn-ghost-white { background: transparent; color: #fff; border: 1px solid #fff; }
.btn-ghost-white:hover { background: #fff; color: var(--primary); }
.btn-block { width: 100%; }
.btn:disabled { opacity: .5; cursor: not-allowed; }

/* Heroes */
.hero {
  position: relative; min-height: 100vh; min-height: 100dvh;
  display: grid; place-items: center; color: #fff; text-align: center; overflow: hidden;
}
.hero-mid { min-height: 50vh; min-height: 400px; }
.hero-bg { position: absolute; inset: 0; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; }
.hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,.4), rgba(0,0,0,.2), rgba(0,0,0,.6));
}
.hero-overlay-dark {
  background: linear-gradient(to top, rgba(0,0,0,.7), rgba(0,0,0,.3), rgba(0,0,0,.4));
}
.hero-restaurant { background: #111; }
.dining-hero-photos {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
}
.dining-hero-photos img {
  width: 100%; height: 100%;
  min-width: 0;
  object-fit: cover;
}
.dining-hero-indoor { object-position: 35% center; }
.dining-hero-rooftop { object-position: 60% center; }
@media (max-width: 767px) {
  .dining-hero-photos { grid-template-columns: 1fr; }
  .dining-hero-indoor { display: none; }
}
.hero-overlay-restaurant {
  background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.12) 42%, rgba(0,0,0,.28) 100%);
}
.hero-restaurant .hero-content {
  align-self: end;
  padding-bottom: 2.75rem;
}
.hero-content { position: relative; z-index: 1; padding: 2rem 1rem; width: min(1152px, 100%); }
.eyebrow {
  text-transform: uppercase; letter-spacing: .3em; font-size: .875rem;
  color: rgba(255,255,255,.8); margin: 0 0 1rem;
}
.eyebrow-green { color: var(--primary); letter-spacing: .2em; font-size: .875rem; margin: 0 0 1rem; }
.hero h1 {
  font-family: var(--font-display); font-weight: 500; margin: 0;
  font-size: clamp(2.5rem, 7vw, 4.5rem); line-height: 1.1;
}
.hero .lead { margin: 1rem auto 0; max-width: 36rem; font-size: 1.125rem; color: rgba(255,255,255,.8); }
.scroll-indicator {
  position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%);
  width: 24px; height: 40px; border: 2px solid rgba(255,255,255,.4); border-radius: 999px;
  display: flex; justify-content: center; padding: 6px;
}
.scroll-indicator span {
  width: 6px; height: 12px; background: rgba(255,255,255,.6); border-radius: 999px;
  animation: bounce 2s infinite;
}
@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(8px); }
}

.search-card {
  margin-top: 3rem; background: rgba(255,255,255,.95); backdrop-filter: blur(12px);
  color: var(--neutral); border-radius: 2px; padding: 1.5rem;
  box-shadow: 0 25px 50px rgba(0,0,0,.25);
  display: grid; gap: 1rem; text-align: left;
}
.search-card label {
  display: flex; align-items: center; gap: .35rem;
  font-size: .7rem; font-weight: 500; text-transform: uppercase; letter-spacing: .12em;
  color: var(--tertiary); margin-bottom: .4rem;
}
.search-card input, .search-card select, .form-control {
  width: 100%; background: var(--cream); border: 1px solid rgba(168,162,158,.2);
  border-radius: 2px; padding: .7rem .8rem; font-size: .875rem; color: var(--neutral);
}
.search-card input:focus, .form-control:focus, .search-card select:focus {
  outline: none; border-color: var(--primary);
}
.hint { font-size: .75rem; color: var(--tertiary); margin-top: .4rem; }

.section { padding: 6rem 1rem; }
.section-cream { background: var(--cream); }
.section-primary { background: var(--primary); color: #fff; }
.section-title {
  font-family: var(--font-display); font-weight: 500; margin: 0;
  font-size: clamp(1.875rem, 3.5vw, 3rem); line-height: 1.2; color: var(--neutral);
}
.section-primary .section-title { color: #fff; }
.section-sub { color: var(--tertiary); margin: 1rem 0 0; max-width: 40rem; font-size: 1.125rem; line-height: 1.7; }
.section-primary .section-sub { color: rgba(255,255,255,.7); }
.section-head { text-align: center; margin-bottom: 3rem; }
.section-head .section-sub { margin-left: auto; margin-right: auto; }

.split { display: grid; gap: 4rem; align-items: center; }
.split-tight { gap: 3rem; }
.prose { font-size: 1.125rem; color: var(--tertiary); line-height: 1.75; }
.btn-row { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }

.img-cover { width: 100%; height: 100%; object-fit: cover; }
.media { position: relative; overflow: hidden; border-radius: 2px; }
.media-34 { aspect-ratio: 3/4; }
.media-43 { aspect-ratio: 4/3; }
.media-169 { aspect-ratio: 16/9; }
.media-219 { aspect-ratio: 21/9; }
.stagger-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.stagger-grid .offset { padding-top: 2rem; }

.grid-3 { display: grid; gap: 2rem; }
.grid-4 { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.grid-4 .offset { margin-top: 0; }

.room-card { display: block; }
.room-card .thumb {
  position: relative; overflow: hidden; border-radius: 2px; aspect-ratio: 4/3;
}
.room-card .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.room-card .thumb::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.6), transparent 50%);
  opacity: 0; transition: opacity .5s;
}
.room-card:hover .thumb img { transform: scale(1.1); }
.room-card:hover .thumb::after { opacity: 1; }
.room-card .body { margin-top: 1rem; }
.room-card h3 {
  font-family: var(--font-display); font-size: 1.25rem; font-weight: 500; margin: 0;
}
.room-card:hover h3 { color: var(--primary); }
.room-card .meta {
  display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start;
}
.room-card .stats {
  display: flex; gap: 1rem; font-size: .875rem; color: var(--tertiary);
  margin-top: .5rem; padding-top: .5rem; border-top: 1px solid rgba(168,162,158,.2);
}
.price { color: var(--primary); font-weight: 600; }
.price-lg { font-size: 1.125rem; }
.muted { color: var(--tertiary); }
.muted-sm { color: var(--tertiary); font-size: .875rem; }

.icon-circle {
  width: 56px; height: 56px; border-radius: 999px; background: rgba(6,78,59,.1);
  display: inline-flex; align-items: center; justify-content: center; margin-bottom: 1.5rem;
  color: var(--primary); font-size: 1.4rem;
}
.feature-col { text-align: center; padding: 2rem 1rem; }

.review-row { display: flex; gap: 1.5rem; overflow-x: auto; padding-bottom: 1rem; }
.review-card {
  background: #fff; border-radius: 2px; padding: 2rem; min-width: 320px; max-width: 400px;
  border: 1px solid rgba(168,162,158,.1); flex-shrink: 0;
}
.stars { color: var(--gold); letter-spacing: 2px; margin-bottom: 1rem; }
.review-card p { font-style: italic; color: rgba(17,24,39,.8); line-height: 1.7; margin: 0; }
.review-card footer { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid rgba(168,162,158,.2); }

.cta-block { text-align: center; max-width: 56rem; margin: 0 auto; }

.page { padding: 8rem 1rem 6rem; }
.page-tight { padding-top: 6rem; }
.page h1 {
  font-family: var(--font-display); font-weight: 500; font-size: clamp(2rem,4vw,2.75rem);
  margin: 0 0 .5rem; line-height: 1.15;
}
.font-medium { font-weight: 500; }

.media-45 { aspect-ratio: 4/5; }
.media-1610 { aspect-ratio: 16/10; }
.chef-block { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid rgba(168,162,158,.2); }
.quote-block { text-align: center; max-width: 56rem; margin: 0 auto; }
.quote-block blockquote {
  font-family: var(--font-display); font-weight: 400; font-style: italic;
  font-size: clamp(1.5rem,3vw,1.875rem); line-height: 1.5; margin: 0;
}
.masonry { columns: 1; column-gap: 1rem; }
.masonry .media { break-inside: avoid; margin-bottom: 1rem; }
.masonry img { width: 100%; height: auto; display: block; }
.restaurant-gallery .media { overflow: hidden; border-radius: 2px; }
.restaurant-gallery img { width: 100%; height: auto; object-fit: cover; display: block; }
.highlight-strip { padding: 4rem 1rem; border-top: 1px solid rgba(168,162,158,.1); border-bottom: 1px solid rgba(168,162,158,.1); background: #fff; }
.highlight-grid { display: grid; gap: 2rem; }
.highlight-item { text-align: center; }
.highlight-item .label, .label {
  font-size: .7rem; text-transform: uppercase; letter-spacing: .12em; color: var(--tertiary); font-weight: 500; margin: 0 0 .5rem;
}
.highlight-item p { margin: .15rem 0; font-size: .875rem; }
.icon-sm { width: 40px; height: 40px; font-size: 1rem; margin-bottom: 1rem; }

.overlay-card {
  position: relative; display: block; aspect-ratio: 4/3; overflow: hidden; border-radius: 2px; color: #fff;
}
.overlay-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.overlay-card:hover img { transform: scale(1.1); }
.overlay-card::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.7), rgba(0,0,0,.2), transparent);
}
.overlay-card-body { position: absolute; inset: auto 0 0; padding: 1.5rem; z-index: 1; }
.overlay-card h3 { font-family: var(--font-display); font-size: 1.25rem; font-weight: 500; margin: 0; }
.overlay-card p { font-size: .875rem; color: rgba(255,255,255,.75); margin: .35rem 0 0; }

.info-card, .package-card, .form-panel {
  background: #fff; border: 1px solid rgba(168,162,158,.1); border-radius: 2px; padding: 1.5rem;
}
.info-card h3 { font-weight: 500; margin: 0 0 .5rem; }
.package-card.featured { border-color: var(--primary); box-shadow: 0 12px 40px rgba(6,78,59,.12); }

.filter-row { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-bottom: 3rem; }
.chip {
  display: inline-block; background: var(--cream); color: var(--tertiary);
  padding: .5rem 1rem; border-radius: 2px; font-size: .875rem; font-weight: 500;
  border: 1px solid rgba(168,162,158,.2); margin: 0;
}
.chip.on, .chip:hover { background: var(--primary); color: #fff; border-color: var(--primary); }
.place-card { background: transparent; border: 0; overflow: visible; }
.place-card .thumb { position: relative; aspect-ratio: 4/3; overflow: hidden; border-radius: 2px; }
.place-card .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.place-card:hover .thumb img { transform: scale(1.05); }
.place-card .body { padding: 1rem 0 0; }
.place-card .cat {
  position: absolute; top: .75rem; left: .75rem; border-radius: 999px; padding: .25rem .65rem;
  font-size: .7rem; font-weight: 600;
}
.cat-heritage { background: rgba(6,78,59,.9); color: #fff; }
.cat-temple { background: #FEF3C7; color: #92400E; }
.cat-nature { background: #D1FAE5; color: #065F46; }
.cat-historical { background: #E7E5E4; color: #44403C; }
.place-meta { display: flex; flex-wrap: wrap; gap: .75rem; font-size: .75rem; color: var(--tertiary); margin-top: .75rem; }
.place-credit { margin: .55rem 0 0; font-size: .68rem; line-height: 1.4; }
.place-credit a { color: var(--tertiary); text-decoration: none; }
.place-credit a:hover { text-decoration: underline; }

.trip-card { background: #fff; border: 1px solid rgba(168,162,158,.1); border-radius: 2px; overflow: hidden; }
.trip-card .body { padding: 1.5rem; }
.stop-list { list-style: none; padding: 1rem 0 0; margin: 1rem 0 0; border-top: 1px solid rgba(168,162,158,.1); }
.stop-list li { display: flex; gap: .75rem; margin-bottom: .75rem; font-size: .875rem; }
.stop-list .num {
  width: 24px; height: 24px; border-radius: 999px; background: rgba(6,78,59,.1); color: var(--primary);
  display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 600; flex-shrink: 0;
}
.stop-list .note { font-size: .75rem; color: var(--primary); font-style: italic; }
.map-frame { background: var(--cream); border: 1px solid rgba(168,162,158,.2); }
.map-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.offer-row { display: grid; gap: 2.5rem; align-items: center; }
.offer-sub { color: var(--primary); font-weight: 500; margin: .35rem 0 1rem; }
.check-list { list-style: none; padding: 0; margin: .5rem 0 0; }
.check-list li { font-size: .875rem; color: rgba(17,24,39,.8); margin: .4rem 0; }
.offer-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
  margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid rgba(168,162,158,.2);
}

.tour-viewer { position: relative; margin-bottom: 1.5rem; background: #111; }
.tour-overlay {
  position: absolute; inset: auto 0 0; padding: 2rem 2.5rem;
  background: linear-gradient(to top, rgba(0,0,0,.55), transparent);
  text-align: left;
}
.tour-badge {
  position: absolute; top: 1rem; right: 1rem; background: rgba(255,255,255,.9);
  color: var(--primary); font-size: .75rem; font-weight: 500; border-radius: 999px; padding: .5rem 1rem;
}
.tour-thumbs { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
.tour-thumbs button {
  position: relative; aspect-ratio: 4/3; border: 0; padding: 0; overflow: hidden; border-radius: 2px;
  cursor: pointer; opacity: .7; background: none;
}
.tour-thumbs button.on { opacity: 1; outline: 2px solid var(--primary); outline-offset: 2px; }
.tour-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.tour-thumbs span {
  position: absolute; inset: auto 0 0; padding: .5rem; font-size: .75rem; font-weight: 500; color: #fff;
  background: linear-gradient(to top, rgba(0,0,0,.6), transparent); text-align: left;
}
.tour-note {
  margin-top: 2.5rem; background: var(--cream); border-radius: 2px; padding: 1.5rem;
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem;
}

.contact-layout { display: grid; gap: 3rem; }
.contact-info { display: grid; gap: 1.5rem; }
.contact-row { display: flex; gap: 1rem; align-items: flex-start; }
.contact-row .icon-circle { margin: 0; flex-shrink: 0; }
.form-panel { padding: 2rem; box-shadow: 0 1px 8px rgba(0,0,0,.04); display: grid; gap: 1.25rem; }
.form-panel .form-grid { gap: 1.25rem; }
.menu-group { margin-bottom: 3rem; }
.menu-list { display: grid; gap: 1.25rem; margin-top: 1.25rem; }
.menu-item {
  display: flex; justify-content: space-between; gap: 1.5rem; padding-bottom: 1.25rem;
  border-bottom: 1px solid rgba(168,162,158,.15);
}
.menu-item h3 { margin: 0 0 .35rem; font-size: 1.05rem; font-weight: 500; font-family: var(--font-display); }
.pick { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: var(--gold); font-weight: 600; }
.grid-2 { display: grid; gap: 2rem; }
.venue-card { display: block; }
.venue-card .media { position: relative; }
.venue-card:hover .img-cover { transform: scale(1.05); }
.venue-card .img-cover { transition: transform .7s; }
.venue-body { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1rem; }
.text-right { text-align: right; }
.pill, .pill-inline {
  background: rgba(255,255,255,.9); color: var(--primary); font-size: .7rem; font-weight: 600;
  text-transform: capitalize; padding: .25rem .75rem; border-radius: 999px;
}
.pill { position: absolute; top: 1rem; left: 1rem; z-index: 1; }
.pill-inline { display: inline-block; background: rgba(6,78,59,.1); margin-bottom: .75rem; }
.spec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.spec-box { background: var(--cream); border-radius: 2px; padding: 1rem; text-align: center; }
.popular-tag {
  display: inline-block; background: var(--primary); color: #fff; font-size: .75rem; font-weight: 500;
  padding: .25rem 1rem; border-radius: 999px; margin-bottom: 1rem;
}
.indian-wedding { margin-top: 4rem; background: var(--cream); border-radius: 2px; padding: 2rem 2.5rem; }
.menu-tabs { display: flex; gap: .25rem; overflow-x: auto; border-bottom: 1px solid rgba(168,162,158,.2); margin-bottom: 2rem; }
.menu-tabs button {
  background: none; border: 0; border-bottom: 2px solid transparent; padding: .5rem 1rem;
  font-size: .875rem; font-weight: 500; color: var(--tertiary); cursor: pointer; margin-bottom: -1px;
}
.menu-tabs button.on { border-color: var(--primary); color: var(--primary); }
.diet { font-size: .7rem; font-weight: 600; padding: .15rem .4rem; border-radius: 2px; margin-right: .25rem; }
.diet-v { background: #DCFCE7; color: #166534; }
.diet-vg { background: #D1FAE5; color: #065F46; }
.diet-gf { background: #FEF3C7; color: #92400E; }
.diet-df { background: #DBEAFE; color: #1E40AF; }
.diet-nf { background: #F3E8FF; color: #6B21A8; }
.diet-sp { background: #FEE2E2; color: #991B1B; }
.diet-row { margin-top: .5rem; }
.diet-legend { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid rgba(168,162,158,.2); }
.filter-row label.chip { cursor: pointer; }
.filter-row label.chip input { display: none; }

.alert { padding: .85rem 1rem; border-radius: 2px; margin: 1rem 0; font-size: .9rem; }
.alert-error { background: #FEF2F2; border: 1px solid #FECACA; color: #B91C1C; }
.alert-success { background: #ECFDF5; border: 1px solid #A7F3D0; color: #065F46; }
.alert-info { background: #F8FAFC; border: 1px solid #E2E8F0; color: #334155; }
.alert-warn { background: #FFFBEB; border: 1px solid #FDE68A; color: #92400E; }
.crumb { margin: 0 0 1.25rem; font-size: .9rem; }
.crumb a { color: var(--primary); }
.crumb a:hover { text-decoration: underline; }
.category-card .badge { z-index: 1; }
.badge-sold { background: #991B1B; }
.category-card.is-sold-out .thumb img { filter: grayscale(.35); }
.stay-search { margin-top: 0; }
.stay-search-dates { grid-template-columns: 1fr; }
.spec-list {
  list-style: none; padding: 0; margin: 1.25rem 0 0;
  display: grid; gap: .65rem;
}
.spec-list li {
  display: flex; gap: .75rem; align-items: flex-start;
  background: var(--cream); border-radius: 2px; padding: .85rem 1rem;
}
.spec-list .spec-mark {
  width: 1.5rem; height: 1.5rem; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(6,78,59,.12); color: var(--primary); font-weight: 700; flex-shrink: 0;
}
.spec-list .is-no .spec-mark { background: rgba(168,162,158,.2); color: var(--tertiary); }
.spec-list strong { display: block; font-weight: 600; }
.nearby-list { list-style: none; padding: 0; margin: 1rem 0 0; }
.nearby-list li {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .7rem 0; border-bottom: 1px solid rgba(168,162,158,.15); font-size: .95rem;
}
.nearby-list strong { color: var(--primary); font-weight: 600; }
.price-break {
  background: var(--cream); border-radius: 2px; padding: 1rem 1.1rem;
}
.price-break h3 {
  margin: 0 0 .75rem; font-size: .75rem; text-transform: uppercase;
  letter-spacing: .12em; color: var(--tertiary); font-weight: 600;
}
.price-break-row {
  display: flex; justify-content: space-between; gap: 1rem;
  font-size: .9rem; margin: .35rem 0;
}
.price-break-row.total {
  margin-top: .7rem; padding-top: .7rem;
  border-top: 1px solid rgba(168,162,158,.25);
  font-weight: 700; color: var(--primary);
}
.gallery-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; border: 0; border-radius: 999px;
  background: rgba(255,255,255,.9); color: var(--primary);
  font-size: 1.5rem; line-height: 1; cursor: pointer;
}
.gallery-nav.prev { left: .75rem; }
.gallery-nav.next { right: .75rem; }
.type-booking-section { padding-top: 3.5rem; }
.stay-times {
  display: flex; gap: .7rem; align-items: flex-start;
  background: rgba(6,78,59,.05); border: 1px solid rgba(6,78,59,.12);
  border-radius: 2px; padding: .85rem 1rem; margin: 1rem 0; font-size: .9rem;
}
.form-grid { display: grid; gap: 1rem; }
.form-group label {
  display: block; font-size: .7rem; font-weight: 500; text-transform: uppercase;
  letter-spacing: .12em; color: var(--tertiary); margin-bottom: .4rem;
}
.form-hint {
  margin: .4rem 0 0;
  font-size: .75rem;
  color: var(--tertiary);
  line-height: 1.4;
}
.form-error {
  margin: 0 0 1rem;
  padding: .75rem .9rem;
  background: #FEF2F2;
  border: 1px solid #FECACA;
  color: #B91C1C;
  font-size: .875rem;
  border-radius: 2px;
}
.booking-card, .panel {
  background: #fff; border: 1px solid rgba(168,162,158,.2); border-radius: 2px; overflow: hidden;
}
.booking-card { display: grid; }
.booking-card .photo { min-height: 160px; position: relative; background: var(--cream); aspect-ratio: 4/3; }
.booking-card .photo img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.booking-card .info { padding: 1.25rem; }
.stack { display: grid; gap: 1rem; }
.detail-layout { display: grid; gap: 3rem; }
.gallery { border-radius: 2px; overflow: hidden; background: #111; position: relative; aspect-ratio: 16/9; }
.gallery img { width: 100%; height: 100%; object-fit: cover; }
.thumbs { display: flex; gap: .5rem; overflow-x: auto; margin-top: .75rem; }
.thumbs button {
  position: relative; width: 80px; height: 56px; border: 2px solid transparent; padding: 0;
  border-radius: 2px; overflow: hidden; cursor: pointer; opacity: .6; background: none; flex-shrink: 0;
}
.thumbs button.on { border-color: var(--primary); opacity: 1; }
.thumbs img { width: 100%; height: 100%; object-fit: cover; }
.sidebar-card {
  background: #fff; border: 1px solid rgba(168,162,158,.2); border-radius: 2px;
  padding: 1.5rem; position: sticky; top: 6rem;
}
.type-booking-layout { align-items: start; gap: 2.5rem; }
.reserve-card {
  padding: 0;
  overflow: hidden;
  border-color: rgba(6,78,59,.12);
  box-shadow: 0 18px 50px rgba(17,24,39,.08);
}
.reserve-card::before {
  content: ""; display: block; height: 3px;
  background: linear-gradient(90deg, var(--gold), #D4AF37, var(--gold));
}
.reserve-head {
  padding: 1.35rem 1.4rem 1.2rem;
  background: linear-gradient(180deg, #FBF8F1 0%, #fff 100%);
  border-bottom: 1px solid rgba(168,162,158,.14);
}
.reserve-head-top {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
}
.reserve-kicker {
  margin: 0; font-size: .68rem; font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; color: var(--gold);
}
.reserve-head h2 {
  font-family: var(--font-display); font-weight: 500; font-size: 1.55rem;
  margin: .45rem 0 .85rem; line-height: 1.2; color: var(--neutral);
}
.reserve-status {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  padding: .28rem .6rem; border-radius: 999px; white-space: nowrap;
}
.reserve-status.is-open { background: rgba(6,78,59,.1); color: var(--primary); }
.reserve-status.is-closed { background: #FEF2F2; color: #991B1B; }
.reserve-price { display: flex; align-items: baseline; gap: .45rem; flex-wrap: wrap; }
.reserve-amount {
  font-family: var(--font-display); font-size: 2rem; font-weight: 500;
  color: var(--primary); letter-spacing: -.02em; line-height: 1;
}
.reserve-unit { font-size: .8rem; color: var(--tertiary); }
.reserve-stay-total {
  margin: .55rem 0 0; font-size: .875rem; color: rgba(17,24,39,.72);
}
.reserve-stay {
  display: grid; grid-template-columns: 1fr auto 1fr;
  align-items: stretch; gap: 0;
  margin: 0 1.15rem; padding: 1.05rem 0;
  border-bottom: 1px solid rgba(168,162,158,.14);
}
.reserve-stay-cell { min-width: 0; }
.reserve-stay-cell:last-child { text-align: right; }
.reserve-stay-cell strong {
  display: block; font-size: .95rem; font-weight: 600; margin: .15rem 0 .1rem; color: var(--neutral);
}
.reserve-stay-cell span:last-child { font-size: .75rem; color: var(--tertiary); }
.reserve-stay-cell.is-empty strong { color: var(--tertiary); font-weight: 500; }
.reserve-nights {
  display: flex; align-items: center; justify-content: center; padding: 0 .55rem;
}
.reserve-nights span {
  min-width: 2.4rem; height: 2.4rem; border-radius: 999px;
  border: 1px solid rgba(184,134,11,.35); color: var(--gold);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .7rem; font-weight: 700; letter-spacing: .04em;
}
.reserve-label {
  display: block; font-size: .65rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: .14em; color: var(--tertiary);
}
.reserve-guests { padding: 1.05rem 1.4rem; border-bottom: 1px solid rgba(168,162,158,.14); }
.reserve-select { position: relative; margin-top: .45rem; }
.reserve-select select {
  width: 100%; appearance: none; background: var(--cream);
  border: 1px solid rgba(168,162,158,.22); border-radius: 2px;
  padding: .8rem 2.4rem .8rem .9rem; font-size: .95rem; color: var(--neutral); font-weight: 500;
}
.reserve-select::after {
  content: ""; position: absolute; right: .9rem; top: 50%; width: 8px; height: 8px;
  border-right: 1.5px solid var(--primary); border-bottom: 1.5px solid var(--primary);
  transform: translateY(-70%) rotate(45deg); pointer-events: none;
}
.reserve-select select:focus { outline: none; border-color: var(--primary); background: #fff; }
.reserve-hint { margin: .55rem 0 0; font-size: .75rem; color: var(--tertiary); line-height: 1.5; }
.reserve-break { padding: 1.1rem 1.4rem 1.2rem; }
.reserve-break h3 {
  margin: 0 0 .85rem; font-size: .65rem; text-transform: uppercase;
  letter-spacing: .16em; color: var(--gold); font-weight: 600;
}
.reserve-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  font-size: .875rem; color: rgba(17,24,39,.78); margin: .42rem 0;
}
.reserve-row.is-tax { color: var(--tertiary); font-size: .8125rem; }
.reserve-row.is-total {
  margin-top: .85rem; padding-top: .85rem;
  border-top: 1px solid rgba(184,134,11,.28);
  font-family: var(--font-display); font-size: 1.2rem; font-weight: 500; color: var(--primary);
}
.reserve-actions { padding: 0 1.4rem 1.4rem; }
.reserve-confirm { letter-spacing: .04em; }
.amenity-grid { display: grid; gap: .75rem; }
.badge {
  position: absolute; top: 1rem; left: 1rem; background: var(--primary); color: #fff;
  font-size: .875rem; font-weight: 700; padding: .5rem 1rem; border-radius: 2px;
}

.sticky-book {
  position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 40;
  background: var(--primary); color: #fff; padding: .9rem 1.5rem; border-radius: 999px;
  box-shadow: 0 10px 30px rgba(0,0,0,.2); font-weight: 500; font-size: .875rem;
}
.sticky-book:hover { background: var(--primary-light); }

.page-logo {
  width: 7.5rem; height: 7.5rem; margin: 0 auto 1.5rem; border-radius: 50%;
  background: #fff; box-shadow: 0 4px 16px rgba(0,0,0,.08);
}
.site-footer { background: var(--primary); color: rgba(255,255,255,.85); padding: 2.5rem 0 1.25rem; margin-top: auto; }
.footer-grid { display: grid; gap: 2rem; align-items: start; }
.footer-brand-block { display: flex; align-items: flex-start; gap: 1rem; }
.footer-logo-link { display: block; flex-shrink: 0; line-height: 0; }
.footer-logo {
  width: 5rem; height: 5rem; border-radius: 50%; background: #fff;
  box-shadow: 0 4px 14px rgba(0,0,0,.16);
}
.footer-brand-meta { min-width: 0; }
.footer-brand { font-family: var(--font-display); font-size: 1.5rem; color: #fff; margin: 0; }
.footer-tag { font-size: .7rem; letter-spacing: .3em; text-transform: uppercase; color: rgba(255,255,255,.6); margin: .25rem 0 1.5rem; }
.site-footer h4 { color: #fff; margin: 0 0 .75rem; font-size: .75rem; text-transform: uppercase; letter-spacing: .12em; font-weight: 500; }
.footer-col a { color: rgba(255,255,255,.7); font-size: .875rem; display: block; margin: .4rem 0; }
.footer-col a:hover { color: #fff; }
.footer-contact { margin: .35rem 0; font-size: .8125rem; color: rgba(255,255,255,.7); line-height: 1.45; }
.footer-contact a { color: inherit; }
.footer-contact a:hover { color: #fff; }
.footer-bottom {
  margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid rgba(255,255,255,.1);
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem;
  font-size: .75rem; color: rgba(255,255,255,.5);
}
.footer-bottom a { color: rgba(255,255,255,.6); }
.footer-bottom a:hover { color: #fff; }

@media (min-width: 640px) {
  .masonry { columns: 2; }
  .tour-thumbs { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 768px) {
  .search-card { grid-template-columns: 1.2fr 1.2fr .8fr auto; align-items: end; }
  .stay-search-dates { grid-template-columns: 1.2fr 1.2fr auto; }
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
  .grid-4 { grid-template-columns: repeat(4, 1fr); }
  .grid-4 .offset:nth-child(even) { margin-top: 2rem; }
  .form-grid.two { grid-template-columns: 1fr 1fr; }
  .booking-card { grid-template-columns: 176px 1fr; }
  .booking-card .photo { aspect-ratio: auto; min-height: 140px; }
  .review-card { min-width: 400px; }
  .highlight-grid { grid-template-columns: repeat(2, 1fr); }
  .offer-row { grid-template-columns: 1fr 1fr; }
  .offer-row.reverse .media { order: 2; }
  .tour-thumbs { grid-template-columns: repeat(5, 1fr); }
  .grid-2 { grid-template-columns: 1fr 1fr; }
  .spec-grid { grid-template-columns: repeat(3, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
  .nav { display: flex; }
  .mobile-toggle { display: none; }
  .header-actions .phone { display: inline; }
  .split { grid-template-columns: 1fr 1fr; }
  .detail-layout { grid-template-columns: 1.7fr 1fr; }
  .type-booking-layout { grid-template-columns: minmax(0, 1.55fr) minmax(320px, .9fr); gap: 2.75rem; }
  .footer-grid { grid-template-columns: minmax(0,1.35fr) repeat(3, minmax(0,.85fr)); }
  .gallery { aspect-ratio: 21/9; }
  .masonry { columns: 3; }
  .highlight-grid { grid-template-columns: repeat(5, 1fr); }
  .contact-layout { grid-template-columns: 1fr 2fr; }
}
@media (max-width: 767px) {
  .sticky-book { display: inline-flex; }
  .reserve-card { box-shadow: 0 10px 28px rgba(17,24,39,.08); }
}
@media (min-width: 768px) {
  .sticky-book { display: none; }
}

/* —— Home page refinements (premium + responsive) —— */
.home-page {
  --home-radius: 4px;
  --home-shadow: 0 18px 40px rgba(17, 24, 39, .08);
  --home-shadow-soft: 0 10px 28px rgba(6, 78, 59, .08);
}

.home-hero {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-top: 5.5rem;
  padding-bottom: 0;
  /* Taller hero so photo branding clears the fixed header */
  min-height: clamp(680px, 100svh, 1100px);
}
.home-hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Keep the "HOTEL ADITYA" lettering in the photo fully in frame */
  object-position: 46% 62%;
  filter: none;
}
.home-hero-overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, .28) 0%,
    rgba(0, 0, 0, .06) 28%,
    rgba(0, 0, 0, .04) 62%,
    rgba(0, 0, 0, .28) 100%
  );
}
.home-hero-content {
  align-self: flex-end;
  width: min(1152px, calc(100% - 2rem));
  padding: 0 0 clamp(1.25rem, 3vw, 2rem);
  text-align: left;
}
.home-hero .lead {
  max-width: 34rem;
  line-height: 1.65;
  font-size: clamp(1rem, 2.4vw, 1.2rem);
}

.home-search {
  margin-top: 0;
  border-radius: var(--home-radius);
  padding: clamp(1rem, 2.5vw, 1.35rem);
  background: rgba(255, 255, 255, .16);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255, 255, 255, .38);
  box-shadow: 0 14px 36px rgba(0, 0, 0, .22);
}
.home-search label {
  color: rgba(255, 255, 255, .88);
}
.home-search input,
.home-search select {
  background: rgba(255, 255, 255, .9);
  border-color: rgba(255, 255, 255, .55);
}
.home-search-field { min-width: 0; }
.home-search-btn { width: 100%; min-height: 2.85rem; }
.home-search-meta {
  grid-column: 1 / -1;
  text-align: center;
}
.home-search-meta .hint {
  margin: .15rem 0 0;
  color: rgba(255, 255, 255, .82);
}

.home-section {
  padding-block: clamp(3.5rem, 8vw, 6.5rem);
  padding-inline: 1rem;
}
.home-section-head { margin-bottom: clamp(2rem, 5vw, 3.25rem); }
.home-section-head .eyebrow-green { margin-bottom: .65rem; }
.home-prose { margin-top: 1.25rem; max-width: 34rem; }
.home-section-cta {
  text-align: center;
  margin-top: clamp(2rem, 4vw, 3rem);
}
.home-cta-actions { justify-content: center; }

.home-media {
  border-radius: var(--home-radius);
  box-shadow: var(--home-shadow-soft);
}
.home-media img {
  transition: transform .7s ease;
}
.home-media:hover img { transform: scale(1.04); }
.home-stagger { gap: clamp(.75rem, 2vw, 1.25rem); align-items: start; }
.home-stagger .offset { padding-top: 0; margin-top: clamp(1.5rem, 4vw, 3rem); }
.home-media-poster {
  aspect-ratio: 4 / 5;
  width: 100%;
  max-width: 30rem;
  justify-self: center;
}
.home-hero-brand { display: none; }
@media (max-aspect-ratio: 3/2) {
  .home-hero-bg img { object-position: 88% 40%; }
  .home-hero-brand {
    display: block;
    margin-bottom: clamp(1rem, 4vh, 2rem);
    text-shadow: 0 2px 18px rgba(0, 0, 0, .55);
  }
  .home-hero-brand h1 {
    margin: 0;
    font-size: clamp(2.6rem, 11vw, 4.5rem);
    line-height: 1;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #F5D27A;
  }
  .home-hero-brand p {
    margin: .5rem 0 0;
    font-family: var(--font-display);
    font-style: italic;
    font-size: clamp(1.15rem, 4.5vw, 1.6rem);
    color: #fff;
  }
}

.home-rooms .room-card .thumb,
.home-rooms .room-card .body {
  transition: transform .35s ease, box-shadow .35s ease;
}
.home-rooms .room-card .thumb {
  border-radius: var(--home-radius);
  box-shadow: 0 8px 24px rgba(17, 24, 39, .06);
}
.home-rooms .room-card:hover .thumb {
  box-shadow: 0 14px 32px rgba(6, 78, 59, .14);
}

.home-features { gap: clamp(1.25rem, 3vw, 2rem); }
.home-feature {
  padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1rem, 2vw, 1.5rem);
  background: rgba(255, 255, 255, .72);
  border: 1px solid rgba(168, 162, 158, .14);
  border-radius: var(--home-radius);
  height: 100%;
}
.home-feature .icon-circle {
  margin-bottom: 1.15rem;
  transition: transform .3s ease, background .3s ease;
}
.home-feature:hover .icon-circle {
  transform: translateY(-2px);
  background: rgba(6, 78, 59, .16);
}
.home-feature-text {
  margin-top: .75rem;
  line-height: 1.7;
  font-size: .95rem;
}

.home-explore { gap: clamp(.65rem, 1.5vw, 1rem); }
.home-explore .offset { margin-top: 0; }

.home-reviews-section .section-sub { max-width: 36rem; }
.home-reviews {
  gap: 1.25rem;
  padding-bottom: .5rem;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.home-review {
  scroll-snap-align: start;
  min-width: min(86vw, 340px);
  max-width: 380px;
  border-radius: var(--home-radius);
  border: 1px solid rgba(255, 255, 255, .18);
  box-shadow: 0 12px 28px rgba(0, 0, 0, .12);
  display: flex;
  flex-direction: column;
}
.home-review p {
  flex: 1;
  font-style: normal;
  font-size: .95rem;
  line-height: 1.75;
}
.home-review footer strong {
  color: var(--neutral);
  font-weight: 600;
}
.home-review .muted-sm { margin-top: .2rem; }

.home-cta {
  padding: clamp(1rem, 3vw, 2rem) 1rem;
}
.home-cta .section-title {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
}
.home-cta .section-sub {
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 767px) {
  .home-hero {
    min-height: 100svh;
    padding-top: 4.25rem;
    /* Leave clear photo space above the compact booking bar */
    padding-bottom: calc(4.75rem + env(safe-area-inset-bottom, 0px));
  }
  .home-hero-bg img {
    /* Focus on the lit hotel building, not empty sky */
    object-position: 90% 40%;
  }
  .home-hero-overlay {
    background: linear-gradient(
      180deg,
      rgba(0, 0, 0, .22) 0%,
      rgba(0, 0, 0, .02) 28%,
      rgba(0, 0, 0, .04) 55%,
      rgba(0, 0, 0, .45) 100%
    );
  }
  .home-hero-content {
    width: calc(100% - 1.25rem);
    padding-bottom: .65rem;
  }
  .home-search {
    margin-top: 0;
    gap: .65rem;
    padding: .75rem .8rem .7rem;
    background: rgba(255, 255, 255, .12);
    border-color: rgba(255, 255, 255, .3);
    box-shadow: 0 10px 28px rgba(0, 0, 0, .25);
    grid-template-columns: 1fr 1fr;
  }
  .home-search-field:nth-child(3),
  .home-search-btn,
  .home-search-meta {
    grid-column: 1 / -1;
  }
  .home-search label {
    margin-bottom: .25rem;
    font-size: .62rem;
    letter-spacing: .1em;
  }
  .home-search input,
  .home-search select {
    padding: .55rem .6rem;
    font-size: .82rem;
    background: rgba(255, 255, 255, .88);
  }
  .home-search-btn {
    margin-top: 0;
    min-height: 2.5rem;
    padding-block: .65rem;
  }
  .home-search-meta .hint {
    font-size: .68rem;
    line-height: 1.35;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .home-stagger .offset { margin-top: 1.5rem; }
  .home-split { gap: 2.25rem; }
  .home-media-wide { aspect-ratio: 5 / 4; }
  .home-feature { text-align: left; }
  .home-feature .icon-circle { margin-bottom: 1rem; }
  .home-cta-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .home-cta-actions .btn { width: 100%; }
  .btn-row { gap: .75rem; }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .home-split { gap: 2.5rem; }
  .home-rooms {
    grid-template-columns: repeat(2, 1fr);
  }
  .home-rooms .category-card:last-child:nth-child(3) {
    grid-column: 1 / -1;
    max-width: 22rem;
    justify-self: center;
    width: 100%;
  }
  .home-features { grid-template-columns: 1fr; }
  .home-explore .offset:nth-child(even) { margin-top: 1.25rem; }
}

@media (min-width: 768px) {
  .home-search {
    grid-template-columns: 1.2fr 1.2fr .8fr auto;
    align-items: end;
  }
  .home-search-btn { width: auto; white-space: nowrap; }
  .home-review { min-width: 360px; }
}

@media (min-width: 1024px) {
  .home-split { gap: clamp(3rem, 5vw, 4.5rem); }
  .home-features { grid-template-columns: repeat(3, 1fr); }
  .home-explore .offset:nth-child(even) { margin-top: 2rem; }
  .home-hero .lead { max-width: 38rem; }
}

/* —— Rooms + Book pages (premium + responsive) —— */
.rooms-page,
.book-page {
  --rooms-radius: 4px;
  --rooms-shadow: 0 14px 36px rgba(17, 24, 39, .08);
  --rooms-shadow-soft: 0 10px 28px rgba(6, 78, 59, .08);
}

.rooms-hero { min-height: clamp(280px, 42vh, 420px); }
.rooms-hero-overlay {
  background: linear-gradient(180deg, rgba(5, 61, 46, .5) 0%, rgba(0, 0, 0, .28) 45%, rgba(0, 0, 0, .62) 100%);
}
.rooms-hero .lead {
  max-width: 36rem;
  line-height: 1.65;
  font-size: clamp(1rem, 2.2vw, 1.15rem);
}

.rooms-search-bar {
  padding: clamp(1.25rem, 3vw, 2rem) 1rem;
  background: #fff;
  border-bottom: 1px solid rgba(168, 162, 158, .14);
  box-shadow: 0 8px 24px rgba(17, 24, 39, .04);
}
.rooms-crumb { margin: 0 0 1rem; }
.rooms-stay-search {
  margin-top: 0;
  border-radius: var(--rooms-radius);
  box-shadow: var(--rooms-shadow);
  border: 1px solid rgba(168, 162, 158, .12);
  padding: clamp(1rem, 2vw, 1.35rem);
}
.rooms-stay-field { min-width: 0; }
.rooms-stay-btn { width: 100%; min-height: 2.85rem; }
.rooms-stay-hint { margin-top: .65rem; text-align: center; }
.rooms-stay-hint a { color: var(--primary); font-weight: 500; }
.rooms-stay-hint a:hover { text-decoration: underline; }

.rooms-section {
  padding-block: clamp(3rem, 7vw, 5.5rem);
}
.rooms-section-head { margin-bottom: clamp(1.75rem, 4vw, 2.75rem); }
.rooms-empty {
  text-align: center;
  padding: 2.5rem 1rem;
  background: rgba(255, 255, 255, .7);
  border: 1px dashed rgba(168, 162, 158, .35);
  border-radius: var(--rooms-radius);
}
.rooms-empty .btn { margin-top: 1rem; }

.rooms-grid { gap: clamp(1.5rem, 3vw, 2.25rem); }
.rooms-grid .room-card .thumb {
  border-radius: var(--rooms-radius);
  box-shadow: var(--rooms-shadow-soft);
}
.rooms-grid .room-card .body { margin-top: 1.1rem; }
.rooms-grid .room-card h3 { font-size: 1.35rem; }
.rooms-grid .room-card .meta {
  align-items: flex-start;
  gap: 1rem;
}
.rooms-grid .room-card .stats {
  flex-wrap: wrap;
  row-gap: .35rem;
}

.rooms-gallery {
  border-radius: var(--rooms-radius);
  box-shadow: var(--rooms-shadow);
}
.rooms-gallery .gallery-nav {
  width: 44px;
  height: 44px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .18);
  transition: transform .2s ease, background .2s ease;
}
.rooms-gallery .gallery-nav:hover {
  transform: translateY(-50%) scale(1.05);
  background: #fff;
}
.rooms-thumbs {
  gap: .65rem;
  margin-top: 1rem;
  padding-bottom: .25rem;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.rooms-thumbs button {
  scroll-snap-align: start;
  width: 88px;
  height: 62px;
  border-radius: var(--rooms-radius);
  border-width: 2px;
  transition: opacity .2s ease, border-color .2s ease;
}
.rooms-type-details { margin-top: clamp(1.75rem, 4vw, 2.5rem); }
.rooms-detail-title {
  font-size: clamp(1.2rem, 2.5vw, 1.4rem) !important;
  margin-top: clamp(1.75rem, 3vw, 2.25rem) !important;
}
.rooms-type-details .prose { margin-top: .85rem; }
.rooms-type-page .spec-list {
  grid-template-columns: 1fr;
  gap: .75rem;
}
.rooms-type-page .spec-list li {
  border-radius: var(--rooms-radius);
  border: 1px solid rgba(168, 162, 158, .1);
  background: #fff;
}
.rooms-type-page .nearby-list li {
  padding: .85rem 0;
}

.rooms-type-page .reserve-card {
  border-radius: var(--rooms-radius);
}
.rooms-type-page .type-booking-section {
  padding-top: clamp(2rem, 5vw, 3.5rem);
  padding-bottom: clamp(3rem, 7vw, 5rem);
}

/* Booking steps */
.booking-steps {
  list-style: none;
  margin: 0 0 1.15rem;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .55rem .85rem;
}
.booking-step {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-size: .82rem;
  color: rgba(17, 24, 39, .45);
}
.booking-step-num {
  width: 1.45rem;
  height: 1.45rem;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .72rem;
  font-weight: 700;
  border: 1px solid rgba(17, 24, 39, .18);
  background: #fff;
}
.booking-step.is-done { color: rgba(6, 78, 59, .78); }
.booking-step.is-done .booking-step-num {
  border-color: rgba(6, 78, 59, .35);
  background: #ECFDF5;
  color: #065F46;
}
.booking-step.is-current { color: var(--ink); font-weight: 600; }
.booking-step.is-current .booking-step-num {
  border-color: rgba(6, 78, 59, .55);
  background: var(--green, #064e3b);
  color: #fff;
}

/* Availability alternatives */
.availability-alts {
  margin: 0 0 1.75rem;
  padding: 1.25rem 1.3rem 1.4rem;
  border: 1px solid rgba(146, 64, 14, .18);
  border-radius: var(--rooms-radius);
  background: #FFFBEB;
}
.availability-alts-head h3 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 500;
}
.availability-alts-head p {
  margin: .45rem 0 0;
  color: rgba(17, 24, 39, .72);
  font-size: .95rem;
  line-height: 1.45;
}
.availability-alts-plans {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1rem;
}
.availability-alt-chip {
  display: inline-flex;
  flex-direction: column;
  gap: .15rem;
  min-width: 9.5rem;
  padding: .75rem .9rem;
  border-radius: var(--rooms-radius);
  border: 1px solid rgba(6, 78, 59, .16);
  background: #fff;
  text-decoration: none;
  color: inherit;
  transition: border-color .15s ease, transform .15s ease;
}
.availability-alt-chip:hover {
  border-color: rgba(6, 78, 59, .4);
  transform: translateY(-1px);
}
.availability-alt-chip strong { font-size: .95rem; }
.availability-alt-chip span { font-size: .8rem; color: rgba(17, 24, 39, .6); }
.availability-alts-grid {
  display: grid;
  gap: 1rem;
  margin-top: 1.1rem;
  grid-template-columns: 1fr;
}
@media (min-width: 720px) {
  .availability-alts-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .availability-alts-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Combined room type + plans (step 1) */
.rooms-offer-section { padding-top: clamp(2rem, 5vw, 3.25rem); }
.rooms-offer-list {
  display: flex;
  flex-direction: column;
  gap: clamp(1.75rem, 4vw, 2.75rem);
}
.room-offer {
  display: grid;
  gap: 0;
  border: 1px solid rgba(6, 78, 59, .12);
  border-radius: calc(var(--rooms-radius) + 4px);
  background:
    linear-gradient(180deg, rgba(255,255,255,.98) 0%, #fff 40%),
    radial-gradient(120% 80% at 100% 0%, rgba(6, 78, 59, .05), transparent 55%);
  box-shadow: var(--rooms-shadow);
  overflow: hidden;
  scroll-margin-top: 6.5rem;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.room-offer.is-focus {
  border-color: rgba(6, 78, 59, .38);
  box-shadow: 0 16px 40px rgba(6, 78, 59, .12);
}
.room-offer.is-sold-out { opacity: .92; }
.room-offer-visual {
  position: relative;
  min-height: 14rem;
  background: #0f172a;
}
.room-offer-visual img {
  width: 100%;
  height: 100%;
  min-height: 14rem;
  object-fit: cover;
  display: block;
}
.room-offer-visual .badge {
  position: absolute;
  top: 1rem;
  left: 1rem;
  z-index: 1;
}
.room-offer-body {
  padding: clamp(1.25rem, 3vw, 1.85rem);
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.room-offer-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  padding-bottom: 1.1rem;
  border-bottom: 1px solid rgba(17, 24, 39, .08);
}
.room-offer-kicker {
  margin: 0 0 .35rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold);
}
.room-offer-titles h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.55rem, 3vw, 2rem);
  line-height: 1.15;
}
.room-offer-desc {
  margin: .55rem 0 0;
  max-width: 38rem;
  color: rgba(17, 24, 39, .7);
  font-size: .98rem;
  line-height: 1.5;
}
.room-offer-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem .85rem;
  margin-top: .85rem;
  font-size: .86rem;
  color: rgba(17, 24, 39, .58);
}
.room-offer-from {
  text-align: right;
  min-width: 7rem;
}
.room-offer-from .price {
  display: block;
  font-family: var(--font-display);
  font-size: 1.55rem;
  font-weight: 500;
  line-height: 1.1;
  margin: .15rem 0;
}
.room-offer-plans-label h4 {
  margin: 0;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(17, 24, 39, .55);
}
.room-offer-plans-label p {
  margin: .35rem 0 0;
  font-size: .92rem;
  color: rgba(17, 24, 39, .62);
}
.room-offer-plans {
  display: flex;
  flex-direction: column;
  gap: .85rem;
}
.room-offer-plan {
  display: grid;
  gap: 1rem;
  padding: 1.05rem 1.15rem;
  border: 1px solid rgba(6, 78, 59, .12);
  border-radius: var(--rooms-radius);
  background: rgba(255, 255, 255, .88);
  transition: border-color .15s ease, transform .15s ease, background .15s ease;
}
.room-offer-plan:hover:not(.is-unavailable) {
  border-color: rgba(6, 78, 59, .32);
  transform: translateY(-1px);
  background: #fff;
}
.room-offer-plan.is-unavailable {
  opacity: .78;
  border-color: rgba(146, 64, 14, .16);
  background: #FFFDF8;
}
.room-offer-plan-main {
  display: grid;
  gap: .85rem;
}
.room-offer-plan-copy h5 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.2rem;
  line-height: 1.25;
}
.room-offer-plan-desc {
  margin: .4rem 0 0;
  font-size: .9rem;
  line-height: 1.4;
  color: rgba(17, 24, 39, .68);
}
.room-offer-chips {
  list-style: none;
  margin: .7rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}
.room-offer-chips li {
  padding: .28rem .6rem;
  border-radius: 999px;
  background: rgba(6, 78, 59, .07);
  color: rgba(6, 78, 59, .92);
  font-size: .78rem;
  font-weight: 600;
}
.room-offer-plan-price {
  display: flex;
  flex-direction: column;
  gap: .1rem;
}
.room-offer-plan-action .btn { min-width: 8.5rem; }
.room-offer-plan-action .btn[disabled] {
  opacity: .7;
  cursor: not-allowed;
}
.room-offer-empty { margin: 0; }
@media (min-width: 900px) {
  .room-offer {
    grid-template-columns: minmax(16rem, 34%) 1fr;
    align-items: stretch;
  }
  .room-offer-visual,
  .room-offer-visual img {
    min-height: 100%;
    height: 100%;
  }
  .room-offer-plan {
    grid-template-columns: 1fr auto;
    align-items: center;
  }
  .room-offer-plan-main {
    grid-template-columns: 1fr auto;
    align-items: start;
    gap: 1.25rem;
  }
  .room-offer-plan-price {
    text-align: right;
    align-items: flex-end;
    min-width: 7.5rem;
  }
}

/* Rate plans */
.rooms-plans-section { padding-top: clamp(2rem, 5vw, 3.25rem); }
.plans-guests-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .65rem 1rem;
  margin: 0 0 1.75rem;
  padding: 1rem 1.15rem;
  border: 1px solid rgba(168, 162, 158, .18);
  border-radius: var(--rooms-radius);
  background: #fff;
}
.plans-guests-bar .reserve-label { margin: 0; }
.plans-guests-bar .reserve-select { min-width: 10rem; }
.plans-guests-bar .reserve-hint { margin: 0; flex: 1 1 12rem; }
.plans-grid {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: 1fr;
}
.plan-card {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  padding: 1.35rem 1.4rem 1.4rem;
  border: 1px solid rgba(6, 78, 59, .12);
  border-radius: var(--rooms-radius);
  background: #fff;
  box-shadow: var(--rooms-shadow);
}
.plan-card-head {
  display: grid;
  gap: 1rem;
}
.plan-card-kicker {
  margin: 0 0 .35rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold);
}
.plan-card h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.25rem, 2.5vw, 1.55rem);
  line-height: 1.2;
}
.plan-card-desc {
  margin: .55rem 0 0;
  color: rgba(17, 24, 39, .72);
  font-size: .95rem;
  line-height: 1.45;
}
.plan-card-price {
  display: flex;
  flex-direction: column;
  gap: .15rem;
}
.plan-amount {
  font-family: var(--font-display);
  font-size: 1.55rem;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.1;
}
.plan-unit,
.plan-stay-total {
  font-size: .8rem;
  color: rgba(17, 24, 39, .58);
}
.plan-stay-total { margin-top: .2rem; font-weight: 500; color: rgba(17, 24, 39, .72); }
.plan-facilities h4 {
  margin: 0 0 .55rem;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(17, 24, 39, .55);
}
.plan-facility-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: .45rem;
}
.plan-facility-list li {
  display: grid;
  grid-template-columns: 1.1rem 1fr;
  gap: .55rem;
  align-items: start;
  font-size: .92rem;
  line-height: 1.35;
}
.plan-facility-list li.is-no { color: rgba(17, 24, 39, .45); }
.plan-facility-list .spec-mark {
  font-weight: 600;
  color: var(--green, #064e3b);
}
.plan-facility-list li.is-no .spec-mark { color: rgba(17, 24, 39, .35); }
.plan-card-note {
  margin: 0;
  font-size: .88rem;
  line-height: 1.45;
  color: rgba(17, 24, 39, .68);
}
.plan-card-unavailable {
  margin: .55rem 0 0;
  font-size: .86rem;
  font-weight: 600;
  color: #92400E;
}
.plan-card.is-unavailable {
  opacity: .78;
  border-color: rgba(146, 64, 14, .18);
  background: #FFFDF8;
}
.plan-card.is-unavailable .btn[disabled] {
  opacity: .7;
  cursor: not-allowed;
}
.plan-card-actions { margin-top: auto; }

/* Plan screen: room types + plans on the left, stay summary on the right */
.rooms-select-page { --select-line: rgba(184, 134, 11, .22); }
.rooms-select-top {
  padding: 6.75rem 0 1.25rem;
  background: #fff;
  border-bottom: 1px solid rgba(168, 162, 158, .16);
}
.rooms-select-top .booking-steps { margin-bottom: .85rem; }
.rooms-select-top .rooms-stay-search { box-shadow: none; background: var(--secondary); }
.rooms-select-section { padding: clamp(1.5rem, 3vw, 2.25rem) 0 clamp(3rem, 6vw, 4.5rem); }
.select-layout {
  display: grid;
  gap: 1.5rem;
  align-items: start;
}
.select-main { min-width: 0; display: flex; flex-direction: column; gap: 1.1rem; }
.select-head h1 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.6rem, 3vw, 2rem);
  line-height: 1.15;
}
.select-head p { margin: .35rem 0 0; font-size: .92rem; color: rgba(17, 24, 39, .62); }

.select-room {
  background: #fff;
  border: 1px solid var(--select-line);
  border-radius: var(--rooms-radius);
  scroll-margin-top: 6rem;
}
.select-room.is-selected {
  border-color: rgba(6, 78, 59, .45);
  box-shadow: 0 10px 30px rgba(6, 78, 59, .08);
}
.select-room-head {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  gap: .85rem;
  padding: 1rem;
}
.select-room-photo {
  position: relative;
  border-radius: 2px;
  overflow: hidden;
  background: var(--cream);
  aspect-ratio: 1;
  align-self: start;
}
.select-room-photo img { width: 100%; height: 100%; object-fit: cover; }
.select-room-badge {
  position: absolute;
  top: .4rem;
  left: .4rem;
  padding: .2rem .5rem;
  border-radius: 2px;
  background: rgba(6, 78, 59, .92);
  color: #fff;
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .04em;
}
.select-room-badge.is-sold { background: #991B1B; }
.select-room-info { min-width: 0; }
.select-room-title {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: .35rem 1rem;
}
.select-room-kicker {
  margin: 0 0 .3rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--primary);
}
.select-room-info h2 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.6rem, 2.6vw, 2.1rem);
  line-height: 1.1;
}
.select-room-from { margin: .2rem 0 0; font-size: .8rem; color: rgba(17, 24, 39, .58); white-space: nowrap; }
.select-room-from strong {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--primary);
}
.select-room-facts {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem .5rem;
  margin: .7rem 0 0;
  padding: 0;
}
.select-room-facts li {
  padding: .3rem .65rem;
  border: 1px solid rgba(168, 162, 158, .3);
  border-radius: 999px;
  font-size: .82rem;
  color: rgba(17, 24, 39, .72);
}
.select-room-facts strong { color: var(--neutral); }
.select-room-desc {
  margin: .75rem 0 0;
  font-size: .95rem;
  line-height: 1.6;
  color: rgba(17, 24, 39, .74);
}
.select-room-amenities {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: .3rem 1rem;
  margin: .65rem 0 0;
  padding: 0;
  font-size: .86rem;
  color: rgba(17, 24, 39, .78);
}
.select-room-amenities li::before { content: "✓"; margin-right: .35rem; color: var(--primary); font-weight: 700; }
.select-room-more { margin-top: .8rem; font-size: .88rem; }
.select-room-more summary {
  display: inline-block;
  cursor: pointer;
  color: var(--gold);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  list-style: none;
}
.select-room-more summary::-webkit-details-marker { display: none; }
.select-room-specs {
  list-style: none;
  margin: .7rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
  gap: .35rem .9rem;
}
.select-room-specs li { display: flex; gap: .45rem; color: rgba(17, 24, 39, .78); }
.select-room-specs li span { color: var(--primary); font-weight: 700; }
.select-room-specs li.is-no { color: rgba(17, 24, 39, .42); }
.select-room-specs li.is-no span { color: var(--tertiary); }
.select-room-thumbs {
  display: flex;
  gap: .4rem;
  margin-top: .75rem;
  padding-bottom: .3rem;
  overflow-x: auto;
  scrollbar-width: thin;
}
.select-room-thumbs::-webkit-scrollbar { height: 4px; }
.select-room-thumbs button {
  flex-shrink: 0;
  width: 72px;
  height: 50px;
  padding: 0;
  border: 2px solid transparent;
  border-radius: 2px;
  overflow: hidden;
  opacity: .65;
  cursor: pointer;
  background: none;
}
.select-room-thumbs button.on { border-color: var(--primary); opacity: 1; }
.select-room-thumbs img { width: 100%; height: 100%; object-fit: cover; }

.select-plans { border-top: 1px solid var(--select-line); }
.select-plans-empty {
  margin: 0;
  padding: 1rem;
  border-top: 1px solid var(--select-line);
  font-size: .9rem;
  color: var(--tertiary);
}
.select-plan {
  display: grid;
  gap: .85rem;
  padding: 1rem;
  transition: background .15s ease;
}
.select-plan + .select-plan { border-top: 1px solid rgba(168, 162, 158, .2); }
.select-plan:hover:not(.is-unavailable):not(.is-current) { background: #FDFBF6; }
.select-plan.is-current {
  background: rgba(6, 78, 59, .045);
  box-shadow: inset 3px 0 0 var(--primary);
}
.select-plan.is-unavailable { opacity: .7; }
.select-plan-kicker {
  margin: 0 0 .2rem;
  font-size: .64rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold);
}
.select-plan-info h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--primary);
}
.select-plan-perks {
  list-style: none;
  margin: .45rem 0 0;
  padding: 0;
  display: grid;
  gap: .2rem;
  font-size: .85rem;
  color: rgba(17, 24, 39, .8);
}
.select-plan-perks li { display: flex; gap: .45rem; }
.select-plan-perks li::before { content: "✓"; color: var(--primary); font-weight: 700; }
.select-plan-desc {
  margin: .4rem 0 0;
  font-size: .8rem;
  line-height: 1.45;
  color: rgba(17, 24, 39, .55);
}
.select-plan-unavailable { margin: .4rem 0 0; font-size: .8rem; font-weight: 600; color: #92400E; }
.select-plan-buy {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: 1rem;
}
.select-plan-price {
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 500;
  line-height: 1.1;
  color: var(--neutral);
}
.select-plan-unit,
.select-plan-total { grid-column: 1; font-size: .74rem; color: rgba(17, 24, 39, .55); }
.select-plan-total { font-weight: 500; color: rgba(17, 24, 39, .7); }
.select-plan-btn {
  grid-column: 2;
  grid-row: 1 / span 3;
  min-width: 7.5rem;
  padding: .6rem 1rem;
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  background: var(--primary);
  color: #fff;
}
.select-plan-btn:hover { background: var(--primary-light); }
.select-plan-btn.is-on {
  background: #fff;
  color: var(--primary);
  border: 1px solid var(--primary);
  cursor: default;
}
.select-plan-btn[disabled] {
  background: rgba(168, 162, 158, .25);
  color: rgba(17, 24, 39, .5);
  opacity: 1;
}

.select-cart-card {
  background: #fff;
  border: 1px solid var(--select-line);
  border-radius: var(--rooms-radius);
  overflow: hidden;
  box-shadow: 0 14px 36px rgba(17, 24, 39, .06);
}
.select-cart-card::before {
  content: "";
  display: block;
  height: 3px;
  background: linear-gradient(90deg, var(--gold), #D4AF37, var(--gold));
}
.select-cart-head {
  padding: 1.1rem 1.25rem 1rem;
  background: linear-gradient(180deg, #FBF8F1 0%, #fff 100%);
  border-bottom: 1px solid rgba(168, 162, 158, .16);
}
.select-cart-head-top { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.select-cart-count { margin: .5rem 0 0; font-size: .95rem; font-weight: 600; color: var(--neutral); }
.select-cart-amount {
  margin: .25rem 0 0;
  font-family: var(--font-display);
  font-size: 1.9rem;
  font-weight: 500;
  line-height: 1.1;
  color: var(--primary);
}
.select-cart-note { margin: .2rem 0 0; font-size: .78rem; color: rgba(17, 24, 39, .58); }
.select-cart-item {
  margin: 1rem 1.25rem 0;
  border: 1px solid rgba(168, 162, 158, .22);
  border-radius: 2px;
}
.select-cart-item-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: .75rem;
  padding: .85rem .95rem .75rem;
}
.select-cart-item-top h2 { margin: 0; font-size: .98rem; font-weight: 600; line-height: 1.3; }
.select-cart-item-top p { margin: .15rem 0 0; font-size: .8rem; color: rgba(17, 24, 39, .62); }
.select-cart-change {
  flex-shrink: 0;
  font-size: .78rem;
  font-weight: 600;
  color: var(--gold);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.select-cart-dates { margin: 0 .95rem; padding: .8rem 0; border-top: 1px solid rgba(168, 162, 158, .16); }
.select-cart-amount.is-empty { color: rgba(17, 24, 39, .3); }
.select-cart-placeholder {
  display: grid;
  justify-items: center;
  gap: .25rem;
  padding: 1.25rem .95rem 1rem;
  text-align: center;
}
.select-cart-placeholder-icon {
  width: 2.2rem;
  height: 2.2rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed rgba(184, 134, 11, .55);
  border-radius: 999px;
  color: var(--gold);
  font-size: 1.2rem;
  margin-bottom: .25rem;
}
.select-cart-placeholder p { margin: 0; font-weight: 600; font-size: .92rem; }
.select-cart-placeholder > span:last-child { font-size: .78rem; color: rgba(17, 24, 39, .55); }
.select-cart-guests {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 .95rem;
  padding: .7rem 0;
  border-top: 1px solid rgba(168, 162, 158, .16);
}
.select-cart-guests .reserve-label { margin: 0; }
.select-cart-guests strong { font-size: .92rem; font-weight: 600; }
.select-cart-break { border-top: 1px solid rgba(168, 162, 158, .16); }
.select-cart-break { padding: .55rem .95rem .7rem; }
.select-cart-break .reserve-row { font-size: .84rem; }
.select-cart-total {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1rem;
  margin: 0 1.25rem;
  padding: 1rem 0 .2rem;
}
.select-cart-total span { display: block; font-weight: 600; }
.select-cart-total small { font-size: .74rem; color: rgba(17, 24, 39, .55); }
.select-cart-total strong {
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 500;
  color: var(--primary);
}
.select-cart-actions { padding: 1rem 1.25rem 1.25rem; }

.select-mobilebar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .7rem 1rem calc(.7rem + env(safe-area-inset-bottom));
  background: #fff;
  border-top: 1px solid var(--select-line);
  box-shadow: 0 -8px 24px rgba(17, 24, 39, .08);
}
.select-mobilebar-sum { display: flex; flex-direction: column; min-width: 0; }
.select-mobilebar-sum strong {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 500;
  color: var(--primary);
  line-height: 1.15;
}
.select-mobilebar-sum span { font-size: .72rem; color: rgba(17, 24, 39, .6); }
.select-mobilebar .btn { padding: .7rem 1.4rem; font-size: .9rem; flex-shrink: 0; }

@media (max-width: 1023px) {
  .rooms-select-page { padding-bottom: 4.5rem; }
}
@media (min-width: 640px) {
  .select-room-head { grid-template-columns: 200px minmax(0, 1fr); gap: 1.25rem; }
  .select-room-photo { aspect-ratio: 4 / 3; }
  .select-plan {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.5rem;
    padding: 1rem 1.15rem;
  }
  .select-plan-buy {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    gap: .1rem;
    min-width: 9.5rem;
  }
  .select-plan-btn { margin-top: .55rem; }
  .select-plan-total { max-width: 11rem; }
}
@media (min-width: 1024px) {
  .rooms-select-top { padding-top: 7rem; }
  .select-layout { grid-template-columns: minmax(0, 1fr) 360px; gap: 2rem; }
  .select-cart { position: sticky; top: 6rem; }
  .select-mobilebar { display: none; }
  .select-room-head { grid-template-columns: 280px minmax(0, 1fr); gap: 1.5rem; padding: 1.25rem; }
}

.reserve-plan-meta {
  margin: .35rem 0 0;
  font-size: .88rem;
  color: rgba(17, 24, 39, .62);
}
.book-agree {
  display: grid;
  grid-template-columns: 1.15rem 1fr;
  gap: .7rem;
  align-items: start;
  margin: 1.15rem 0 1.25rem;
  font-size: .92rem;
  line-height: 1.45;
  color: rgba(17, 24, 39, .78);
  cursor: pointer;
}
.book-agree input { margin-top: .2rem; }
.book-agree a { color: var(--primary); text-decoration: underline; }
.book-pay-hint { margin-top: .75rem; text-align: center; }
.bookings-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem .85rem;
  align-items: center;
  margin-top: 1rem;
}
.bookings-cancel-form { display: inline; margin: 0; }
.btn-text {
  background: transparent;
  border: none;
  color: #B91C1C;
  padding: .35rem .1rem;
  font-weight: 600;
  cursor: pointer;
}
.btn-sm { padding: .45rem .85rem; font-size: .85rem; }
.legal-wrap { max-width: 46rem; }
.legal-body h2 { margin-top: 1.75rem; font-size: 1.2rem; }
.legal-body ul { padding-left: 1.2rem; }
.legal-hero-bg {
  background: linear-gradient(135deg, #064e3b 0%, #0f766e 55%, #134e4a 100%);
}
@media (min-width: 720px) {
  .plans-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
  .plan-card-head {
    grid-template-columns: 1fr auto;
    align-items: start;
  }
  .plan-card-price { text-align: right; align-items: flex-end; }
}
@media (min-width: 1100px) {
  .plans-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Book */
.book-section {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(3.5rem, 8vw, 6rem);
}
.book-container { width: min(1100px, calc(100% - 2rem)); }
.book-header { margin-bottom: clamp(1.75rem, 4vw, 2.5rem); }
.book-header .eyebrow-green { margin-bottom: .5rem; }
.book-lead {
  margin: .85rem 0 0;
  max-width: 36rem;
  margin-left: 0;
}
.book-layout {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
  align-items: start;
}
.book-card {
  border-radius: var(--rooms-radius);
  border-color: rgba(6, 78, 59, .12);
  box-shadow: var(--rooms-shadow);
  overflow: hidden;
}
.book-card .info { padding: 1.35rem 1.4rem; }
.book-card-kicker {
  margin: 0 0 .35rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold);
}
.book-card h2 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  line-height: 1.2;
}
.book-card-dates {
  margin: .55rem 0 .25rem;
  font-size: .95rem;
  color: rgba(17, 24, 39, .78);
  font-weight: 500;
}
.book-card-price {
  margin: .85rem 0 0;
  font-size: 1.25rem;
}
.book-price-break {
  margin-top: 1rem;
  border-radius: var(--rooms-radius);
  border: 1px solid rgba(168, 162, 158, .12);
}
.book-stay-times { margin-top: 1rem; border-radius: var(--rooms-radius); }
.book-form {
  border-radius: var(--rooms-radius);
  border-color: rgba(168, 162, 158, .14);
  box-shadow: var(--rooms-shadow-soft);
  padding: clamp(1.25rem, 3vw, 1.85rem);
}
.book-form-head { margin-bottom: 1.25rem; }
.book-form-title {
  margin: 0 0 .35rem;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.35rem;
}
.book-form-head a { color: var(--primary); font-weight: 500; }
.book-form-head a:hover { text-decoration: underline; }
.book-submit { margin-top: 1.25rem; }

.book-success { text-align: center; }
.book-success-icon {
  width: 64px;
  height: 64px;
  margin: 0 auto 1.25rem;
  border-radius: 999px;
  background: rgba(6, 78, 59, .1);
  color: var(--primary);
  display: grid;
  place-items: center;
  font-size: 1.75rem;
  font-weight: 700;
}
.book-success .book-lead {
  margin-left: auto;
  margin-right: auto;
}
.book-success-panel {
  text-align: left;
  padding: 1.35rem 1.4rem;
  margin: 1.75rem 0;
  border-radius: var(--rooms-radius);
  border-color: rgba(6, 78, 59, .12);
  box-shadow: var(--rooms-shadow-soft);
}
.book-success-row {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: baseline;
  padding: .7rem 0;
  border-bottom: 1px solid rgba(168, 162, 158, .14);
  font-size: .92rem;
}
.book-success-row span { color: var(--tertiary); }
.book-success-row strong { color: var(--neutral); font-weight: 600; text-align: right; }
.book-success-row.is-total {
  border-bottom: 0;
  padding-top: 1rem;
  margin-top: .15rem;
}
.book-success-row.is-total strong {
  color: var(--primary);
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 500;
}
.book-success-actions {
  justify-content: center;
}

@media (max-width: 767px) {
  .rooms-hero { min-height: 260px; }
  .rooms-stay-btn { margin-top: .1rem; }
  .rooms-gallery { aspect-ratio: 4 / 3; }
  .rooms-type-page .reserve-card {
    position: static;
    top: auto;
    margin-top: .25rem;
  }
  .rooms-type-page .type-booking-layout {
    gap: 1.75rem;
  }
  .rooms-grid .room-card .meta {
    flex-direction: column;
  }
  .rooms-grid .room-card .meta > div:last-child {
    text-align: left !important;
  }
  .book-success-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .book-success-actions .btn { width: 100%; }
  .book-success-row {
    flex-direction: column;
    gap: .2rem;
  }
  .book-success-row strong { text-align: left; }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .rooms-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .rooms-grid .category-card:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    max-width: 22rem;
    justify-self: center;
    width: 100%;
  }
  .rooms-type-page .spec-list {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 768px) {
  .rooms-stay-search {
    grid-template-columns: 1.2fr 1.2fr .8fr auto;
    align-items: end;
  }
  .rooms-stay-search.stay-search-dates {
    grid-template-columns: 1.2fr 1.2fr auto;
  }
  .rooms-stay-btn {
    width: auto;
    white-space: nowrap;
  }
  .book-card {
    display: grid;
    grid-template-columns: 200px 1fr;
  }
  .book-card .photo {
    aspect-ratio: auto;
    min-height: 100%;
  }
}

@media (min-width: 1024px) {
  .book-layout {
    grid-template-columns: minmax(280px, .95fr) minmax(0, 1.25fr);
    gap: 2.5rem;
  }
  .book-summary {
    position: sticky;
    top: 6rem;
  }
  .rooms-type-page .type-booking-layout {
    gap: clamp(2rem, 3vw, 2.75rem);
  }
  .rooms-type-page .spec-list {
    grid-template-columns: 1fr 1fr;
  }
  .rooms-gallery { aspect-ratio: 16 / 9; }
}

/* —— Restaurant / dining pages (premium + responsive) —— */
.dining-page {
  --dining-radius: 4px;
  --dining-shadow: 0 14px 36px rgba(17, 24, 39, .08);
  --dining-shadow-soft: 0 10px 28px rgba(6, 78, 59, .08);
}

.dining-hero-content {
  padding-bottom: clamp(2rem, 5vh, 3.25rem);
}
.dining-hero-lead {
  font-style: italic;
  font-size: clamp(1.15rem, 3vw, 1.5rem);
  max-width: 28rem;
  line-height: 1.5;
  margin-top: .85rem;
}
.dining-hero-actions {
  justify-content: center;
  margin-top: 1.75rem;
}

.dining-section {
  padding-block: clamp(3.25rem, 7vw, 6rem);
}
.dining-section-head { margin-bottom: clamp(1.75rem, 4vw, 3rem); }
.dining-prose { margin-top: 1.25rem; max-width: 34rem; }
.dining-media {
  border-radius: var(--dining-radius);
  box-shadow: var(--dining-shadow-soft);
  overflow: hidden;
}
.dining-media img { transition: transform .7s ease; }
.dining-media:hover img { transform: scale(1.04); }

.dining-chef {
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(168, 162, 158, .2);
}
.dining-chef-name { font-size: 1.25rem !important; margin: 0; }
.dining-chef .prose { margin-top: .85rem; }

.dining-quote-section { padding-block: clamp(3.5rem, 7vw, 5rem); }
.dining-quote .eyebrow { color: rgba(255, 255, 255, .6); }
.dining-quote blockquote {
  margin-top: .5rem;
}
.dining-quote-attr {
  margin: 1.25rem 0 0;
  color: rgba(255, 255, 255, .6);
  font-size: .95rem;
}

.dining-gallery { margin-top: .5rem; }
.dining-gallery-item {
  border-radius: var(--dining-radius);
  box-shadow: 0 8px 22px rgba(17, 24, 39, .06);
}
.dining-gallery-item img { transition: transform .6s ease; }
.dining-gallery-item:hover img { transform: scale(1.03); }

.dining-highlights {
  padding-block: clamp(2.5rem, 5vw, 4rem);
  background: #fff;
}
.dining-highlight {
  padding: 1.1rem .75rem;
  border-radius: var(--dining-radius);
  transition: background .25s ease;
}
.dining-highlight:hover { background: rgba(6, 78, 59, .04); }

.dining-cta .section-sub {
  margin-left: auto;
  margin-right: auto;
}
.dining-cta-actions { justify-content: center; }

.dining-places {
  display: grid;
  gap: clamp(1.75rem, 4vw, 2.5rem);
}
.dining-place-media {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
}
.dining-place-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.dining-place-tag {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  z-index: 1;
  padding: .4rem .75rem;
  background: rgba(255, 255, 255, .94);
  color: var(--primary);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.dining-place-body { margin-top: 1rem; max-width: 28rem; }
.dining-place-title {
  font-size: clamp(1.35rem, 2.5vw, 1.65rem) !important;
  margin: 0;
}
.dining-place-text { margin-top: .65rem; }
.dining-places-actions {
  justify-content: center;
  margin-top: clamp(2rem, 4vw, 2.75rem);
}

.dining-subhero { min-height: clamp(280px, 42vh, 420px); }
.dining-subhero-overlay {
  background: linear-gradient(180deg, rgba(5, 61, 46, .5) 0%, rgba(0, 0, 0, .28) 45%, rgba(0, 0, 0, .62) 100%);
}
.dining-spaces { gap: clamp(2.5rem, 6vw, 4rem); }
.dining-space { gap: clamp(1.5rem, 4vw, 2.75rem); }
.dining-space-title {
  font-size: clamp(1.45rem, 3vw, 1.875rem) !important;
}
.dining-space-meta {
  margin: .75rem 0 1rem;
  flex-wrap: wrap;
}
.dining-space-features { margin-top: 1rem; }

.dining-form-wrap { width: min(720px, calc(100% - 0rem)); }
.dining-form-heading { font-size: clamp(1.5rem, 3vw, 1.85rem) !important; }
.dining-form {
  border-radius: var(--dining-radius);
  border-color: rgba(168, 162, 158, .14);
  box-shadow: var(--dining-shadow-soft);
  padding: clamp(1.25rem, 3vw, 2rem);
}
.dining-sent {
  padding: clamp(2rem, 5vw, 3rem) 1.5rem;
  text-align: center;
  border-radius: var(--dining-radius);
  border-color: rgba(6, 78, 59, .12);
  box-shadow: var(--dining-shadow-soft);
}
.dining-sent-icon { margin: 0 auto 1.25rem; }
.dining-sent .section-title {
  font-size: clamp(1.35rem, 3vw, 1.65rem);
  margin-bottom: .5rem;
}

.dining-menu-hero {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(2rem, 4vw, 3rem);
}
.dining-menu-title {
  font-size: clamp(2rem, 5vw, 3.1rem) !important;
}
.dining-menu-section {
  padding-top: clamp(1.5rem, 3vw, 2.5rem);
  padding-bottom: clamp(3.5rem, 7vw, 5.5rem);
}
.dining-menu-wrap { width: min(760px, calc(100% - 2rem)); margin-inline: auto; }
.dining-menu-type { margin-bottom: 1.25rem; }
.dining-menu-tabs {
  gap: .35rem;
  margin-bottom: 1.5rem;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.dining-menu-tabs button {
  white-space: nowrap;
  border-radius: var(--dining-radius) var(--dining-radius) 0 0;
  padding: .75rem 1rem;
  font-weight: 500;
}
.dining-menu-list { display: grid; gap: .85rem; }
.dining-menu-item {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1rem;
  align-items: start;
  background: #fff;
  border: 1px solid rgba(168, 162, 158, .12);
  border-bottom: 1px solid rgba(168, 162, 158, .12);
  border-radius: var(--dining-radius);
  padding: 1.15rem 1.2rem;
  box-shadow: 0 6px 18px rgba(17, 24, 39, .04);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.dining-menu-item:hover {
  border-color: rgba(6, 78, 59, .2);
  box-shadow: var(--dining-shadow-soft);
}
.dining-menu-item .price {
  font-size: 1.05rem;
  white-space: nowrap;
}
.dining-menu-empty { text-align: center; padding: 2rem 1rem; }
.dining-diet-legend {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
}
.dining-menu-note {
  margin-top: 1.75rem;
  border-radius: var(--dining-radius);
  border: 1px solid rgba(168, 162, 158, .12);
}

.dining-reserve-section {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(3.5rem, 8vw, 6rem);
}
.dining-reserve-container { width: min(1100px, calc(100% - 2rem)); margin-inline: auto; }
.dining-reserve-layout {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
  align-items: start;
}
.dining-reserve-card {
  background: #fff;
  border: 1px solid rgba(6, 78, 59, .12);
  border-radius: var(--dining-radius);
  box-shadow: var(--dining-shadow);
  padding: 1.4rem 1.45rem;
}
.dining-reserve-kicker {
  margin: 0 0 .35rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold);
}
.dining-reserve-card-title {
  margin: 0 0 .5rem;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.5rem;
}
.dining-reserve-hours {
  display: grid;
  gap: .85rem;
  margin: 1.25rem 0;
  padding: 1rem 0;
  border-top: 1px solid rgba(168, 162, 158, .14);
  border-bottom: 1px solid rgba(168, 162, 158, .14);
}
.dining-reserve-hours .label { margin-bottom: .2rem; }
.dining-reserve-hours strong {
  display: block;
  font-size: .95rem;
  font-weight: 600;
  color: var(--neutral);
}
.dining-reserve-notes { margin: 0 0 1.25rem; }
.dining-reserve-head { margin-bottom: 1.35rem; }
.dining-reserve-lead {
  margin: .75rem 0 0;
  margin-left: 0;
  max-width: 34rem;
}
.dining-meal-chips {
  justify-content: flex-start;
  margin: 0;
}
.dining-meal-chips .chip { cursor: pointer; }
.dining-meal-chips .chip input { display: none; }

@media (max-width: 767px) {
  .dining-hero-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .dining-hero-actions .btn { width: 100%; }
  .dining-cta-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .dining-cta-actions .btn { width: 100%; }
  .dining-highlight-grid { gap: 1.25rem; }
  .dining-menu-item {
    grid-template-columns: 1fr;
    gap: .65rem;
  }
  .dining-menu-item .price {
    text-align: left;
    padding-top: .35rem;
    border-top: 1px solid rgba(168, 162, 158, .12);
  }
  .dining-menu-note {
    flex-direction: column;
    align-items: stretch;
    text-align: left;
  }
  .dining-menu-note .btn { width: 100%; text-align: center; }
  .dining-space.reverse .media { order: 0; }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .dining-highlight-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .dining-split { gap: 2.25rem; }
}

@media (min-width: 768px) {
  .dining-menu-item {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1.25rem;
    align-items: start;
  }
  .offer-row.reverse .media { order: 2; }
}

@media (min-width: 1024px) {
  .dining-split { gap: clamp(3rem, 5vw, 4.5rem); }
  .dining-highlight-grid {
    grid-template-columns: repeat(5, 1fr) !important;
  }
  .dining-reserve-layout {
    grid-template-columns: minmax(260px, .9fr) minmax(0, 1.3fr);
    gap: 2.5rem;
  }
  .dining-reserve-aside {
    position: sticky;
    top: 6rem;
  }
  .dining-space {
    grid-template-columns: 1fr 1fr;
  }
  .dining-places {
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.5rem, 3vw, 2.25rem);
    align-items: stretch;
  }
  .dining-place,
  .dining-place-outdoor {
    margin-top: 0;
    display: flex;
    flex-direction: column;
  }
  .dining-place-media,
  .dining-place-outdoor .dining-place-media {
    aspect-ratio: 4 / 3;
  }
}

/* —— Events pages (premium + responsive) —— */
.events-page {
  --events-radius: 4px;
  --events-shadow: 0 14px 36px rgba(17, 24, 39, .08);
  --events-shadow-soft: 0 10px 28px rgba(6, 78, 59, .08);
}

.events-hero-overlay {
  background: linear-gradient(180deg, rgba(5, 61, 46, .52) 0%, rgba(0, 0, 0, .22) 42%, rgba(0, 0, 0, .68) 100%);
}
.events-hero-content {
  padding-top: clamp(5rem, 12vh, 7rem);
  padding-bottom: clamp(2rem, 6vh, 4rem);
}
.events-hero .lead {
  max-width: 38rem;
  line-height: 1.65;
  font-size: clamp(1rem, 2.3vw, 1.15rem);
}
.events-hero-actions {
  justify-content: center;
  margin-top: 1.75rem;
}

.events-section {
  padding-block: clamp(3.25rem, 7vw, 6rem);
}
.events-section-head { margin-bottom: clamp(1.75rem, 4vw, 3rem); }
.events-occasions { gap: clamp(1.25rem, 3vw, 2rem); }
.events-occasion {
  border-radius: var(--events-radius);
  box-shadow: var(--events-shadow-soft);
}
.events-why { gap: clamp(1.15rem, 3vw, 1.75rem); }
.events-why-card {
  border-radius: var(--events-radius);
  height: 100%;
  transition: transform .25s ease, box-shadow .25s ease;
}
.events-why-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--events-shadow-soft);
}
.events-cta .section-sub {
  margin-left: auto;
  margin-right: auto;
}
.events-cta-actions { justify-content: center; }
.events-cta-section .section-title { color: #fff; }

.events-subhero { min-height: clamp(280px, 42vh, 420px); }
.events-subhero-overlay {
  background: linear-gradient(180deg, rgba(5, 61, 46, .5) 0%, rgba(0, 0, 0, .28) 45%, rgba(0, 0, 0, .62) 100%);
}

.events-venues-hero {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}
.events-venues-title {
  font-size: clamp(2rem, 5vw, 3.1rem) !important;
}
.events-filter {
  margin-bottom: 0;
  -webkit-overflow-scrolling: touch;
}
.events-empty {
  text-align: center;
  padding: 2.5rem 1rem;
  background: rgba(255, 255, 255, .7);
  border: 1px dashed rgba(168, 162, 158, .35);
  border-radius: var(--events-radius);
}
.events-empty .btn { margin-top: 1rem; }
.events-venue-grid { gap: clamp(1.5rem, 3vw, 2.25rem); }
.events-venue-card {
  padding-bottom: .25rem;
}
.events-venue-media {
  border-radius: var(--events-radius);
  box-shadow: var(--events-shadow-soft);
  overflow: hidden;
}
.events-venue-name {
  font-size: 1.25rem !important;
  margin: 0;
}
.events-venue-price { text-align: right; flex-shrink: 0; }
.events-venue-price .price {
  font-size: 1rem;
  font-weight: 500;
}

.events-venue-detail {
  padding: clamp(5.5rem, 10vw, 7rem) 1rem clamp(3rem, 6vw, 4.5rem);
}
.events-venue-gallery {
  border-radius: var(--events-radius);
  box-shadow: var(--events-shadow);
}
.events-venue-thumbs {
  gap: .65rem;
  margin-top: 1rem;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.events-venue-thumbs button {
  scroll-snap-align: start;
  width: 88px;
  height: 62px;
  border-radius: var(--events-radius);
}
.events-venue-layout {
  margin-top: clamp(2rem, 4vw, 3rem);
  gap: clamp(1.75rem, 4vw, 3rem);
}
.events-venue-tagline {
  font-style: italic;
  margin: .35rem 0 0;
}
.events-venue-stats {
  padding: 1.15rem 0;
  border-top: 1px solid rgba(168, 162, 158, .2);
  border-bottom: 1px solid rgba(168, 162, 158, .2);
  margin: 1.15rem 0;
  flex-wrap: wrap;
  gap: .75rem 1.25rem;
}
.events-detail-title {
  font-size: clamp(1.15rem, 2.4vw, 1.3rem) !important;
  margin-top: clamp(1.75rem, 3vw, 2.5rem) !important;
}
.events-spec-grid { gap: .75rem; margin-top: 1rem; }
.events-spec-box {
  border-radius: var(--events-radius);
  border: 1px solid rgba(168, 162, 158, .1);
  background: #fff;
  box-shadow: 0 6px 16px rgba(17, 24, 39, .04);
}
.events-spec-num { font-size: 1.5rem !important; margin: 0; }
.events-spec-num-sm { font-size: 1.25rem !important; margin: 0; }
.events-amenity-grid {
  grid-template-columns: 1fr 1fr;
  margin-top: 1rem;
  gap: .75rem 1rem;
  font-size: .95rem;
}
.events-decor-grid { margin-top: 1rem; gap: 1rem; }
.events-decor-card {
  border-radius: var(--events-radius);
  height: 100%;
}
.events-decor-price {
  font-size: 1rem;
  font-weight: 500;
  margin: .5rem 0;
}
.events-venue-aside {
  border-radius: var(--events-radius);
  border-color: rgba(6, 78, 59, .12);
  box-shadow: var(--events-shadow);
  padding: 1.4rem;
}
.events-aside-price {
  font-size: 1.25rem;
  font-weight: 500;
  margin: .25rem 0;
}

.events-package-grid { gap: clamp(1.25rem, 3vw, 2rem); align-items: stretch; }
.events-package {
  text-align: left;
  border-radius: var(--events-radius);
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: clamp(1.25rem, 3vw, 1.75rem);
}
.events-package.featured { position: relative; }
.events-package-name {
  font-size: clamp(1.45rem, 3vw, 1.75rem) !important;
  text-align: center;
}
.events-package-name-sm {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.35rem;
  text-align: center;
}
.events-package-price {
  font-size: 1.125rem;
  font-weight: 500;
  margin: .75rem 0 .25rem;
  text-align: center;
}
.events-package .hint { text-align: center; }
.events-package-desc {
  margin: 1rem 0;
  flex: 1;
}
.events-package-list { margin-top: 1.15rem; flex: 1; }
.events-package-space { margin-top: 1rem; }
.events-package-btn { margin-top: 1.25rem; }
.events-help-box {
  margin-top: clamp(2.5rem, 5vw, 4rem);
  border-radius: var(--events-radius);
  padding: clamp(1.35rem, 3vw, 2.25rem);
  border: 1px solid rgba(168, 162, 158, .12);
}
.events-help-title {
  font-size: 1.25rem !important;
  margin: 0 0 1rem;
}
.events-help-grid { gap: 1rem 2rem; }
.events-footnote {
  text-align: center;
  margin-top: 2rem;
}

.events-meet-highlights { padding-block: clamp(2rem, 4vw, 3.25rem); }
.events-meet-highlight-grid { grid-template-columns: 1fr; gap: 1.5rem; }
.events-meet-split { gap: clamp(1.75rem, 4vw, 3rem); }
.events-meet-media {
  border-radius: var(--events-radius);
  box-shadow: var(--events-shadow-soft);
}
.events-meet-room-title {
  font-size: clamp(1.3rem, 2.8vw, 1.5rem) !important;
}
.events-meet-room-btn { margin-top: 1.25rem; }

.events-enquire-section {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(3.5rem, 8vw, 6rem);
}
.events-enquire-container { width: min(1100px, calc(100% - 2rem)); margin-inline: auto; }
.events-enquire-layout {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
  align-items: start;
}
.events-enquire-card {
  background: #fff;
  border: 1px solid rgba(6, 78, 59, .12);
  border-radius: var(--events-radius);
  box-shadow: var(--events-shadow);
  padding: 1.4rem 1.45rem;
}
.events-enquire-kicker {
  margin: 0 0 .35rem;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold);
}
.events-enquire-card-title {
  margin: 0 0 .5rem;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.5rem;
}
.events-enquire-notes { margin: 1.15rem 0; }
.events-enquire-links { margin-top: .25rem; gap: .65rem; }
.events-enquire-head { margin-bottom: 1.35rem; }
.events-enquire-lead {
  margin: .75rem 0 0;
  margin-left: 0;
  max-width: 34rem;
}

@media (max-width: 767px) {
  .events-hero-actions,
  .events-cta-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .events-hero-actions .btn,
  .events-cta-actions .btn { width: 100%; }
  .events-venue-gallery { aspect-ratio: 4 / 3; }
  .events-venue-aside { position: static; top: auto; }
  .events-amenity-grid { grid-template-columns: 1fr; }
  .events-venue-body-wrap,
  .events-venue-card .venue-body {
    flex-direction: column;
    align-items: flex-start;
  }
  .events-venue-price { text-align: left; }
  .events-package { text-align: left; }
  .events-help-box { padding: 1.25rem; }
  .events-meet-highlight-grid { grid-template-columns: 1fr !important; }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .events-occasions,
  .events-why,
  .events-package-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .events-occasions .events-occasion:last-child:nth-child(odd),
  .events-package-grid .events-package:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    max-width: 22rem;
    justify-self: center;
    width: 100%;
  }
  .events-meet-highlight-grid {
    grid-template-columns: repeat(3, 1fr) !important;
  }
  .events-decor-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 768px) {
  .events-meet-highlight-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (min-width: 1024px) {
  .events-venue-layout {
    grid-template-columns: 1.7fr 1fr;
  }
  .events-venue-aside {
    position: sticky;
    top: 6rem;
  }
  .events-venue-gallery { aspect-ratio: 16 / 9; }
  .events-enquire-layout {
    grid-template-columns: minmax(260px, .9fr) minmax(0, 1.3fr);
    gap: 2.5rem;
  }
  .events-enquire-aside {
    position: sticky;
    top: 6rem;
  }
  .events-meet-split {
    grid-template-columns: 1fr 1fr;
  }
  .events-amenity-grid {
    grid-template-columns: 1fr 1fr;
  }
  .events-decor-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* Venue detail — aligned with rooms/category layout */
.events-venue-type-page .events-venue-bar {
  padding-block: clamp(1rem, 2.5vw, 1.5rem);
}
.events-venue-bar-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem .9rem;
  font-size: .875rem;
  color: var(--tertiary);
}
.events-venue-bar-meta span {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .7rem;
  background: var(--cream);
  border: 1px solid rgba(168, 162, 158, .16);
  border-radius: 999px;
  color: rgba(17, 24, 39, .75);
  font-weight: 500;
}
.events-venue-type-section {
  padding-top: clamp(2rem, 5vw, 3.5rem);
  padding-bottom: clamp(3rem, 7vw, 5rem);
}
.events-venue-type-layout { align-items: start; }
.events-venue-type-details { margin-top: clamp(1.75rem, 4vw, 2.5rem); }
.events-suitable {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: 1rem;
}
.events-suitable-chip {
  margin: 0;
  pointer-events: none;
  background: rgba(6, 78, 59, .08);
  color: var(--primary);
  border-color: rgba(6, 78, 59, .14);
}
.events-venue-amenity-list {
  grid-template-columns: 1fr;
}
.events-enquire-card {
  padding: 0;
}
.events-enquire-stats {
  margin: 0 1.15rem;
}
.events-enquire-area {
  border-bottom: 1px solid rgba(168, 162, 158, .14);
}
.events-enquire-area-value {
  margin: .45rem 0 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--neutral);
}
.events-enquire-card .reserve-actions {
  display: grid;
  gap: .65rem;
}
.events-enquire-card .reserve-actions .reserve-hint {
  text-align: center;
  margin-top: .25rem;
}

@media (max-width: 767px) {
  .events-venue-type-page .events-venue-gallery {
    aspect-ratio: 4 / 3;
  }
  .events-venue-type-page .events-enquire-card {
    position: static;
    top: auto;
  }
  .events-venue-bar-meta {
    margin-top: .35rem;
  }
  .events-venue-amenity-list {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 640px) {
  .events-venue-amenity-list {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 1024px) {
  .events-venue-type-layout {
    grid-template-columns: minmax(0, 1.55fr) minmax(320px, .9fr);
    gap: 2.75rem;
  }
  .events-venue-type-page .events-enquire-card {
    position: sticky;
    top: 6rem;
  }
  .events-venue-type-page .events-venue-gallery {
    aspect-ratio: 16 / 9;
  }
}

.events-enquire-secondary-btn {
  margin-top: .65rem;
}

/* —— Sign in / register —— */
.auth-layout { max-width: 1040px; }
.auth-form-col { max-width: 36rem; margin-inline: auto; width: 100%; }
.auth-visual { display: none; }
@media (min-width: 900px) {
  .auth-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 23rem);
    gap: clamp(2.5rem, 5vw, 4rem);
    align-items: center;
  }
  .auth-form-col { margin-inline: 0; }
  .auth-visual {
    display: block;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    border-radius: 4px;
    box-shadow: 0 18px 44px rgba(17, 24, 39, .18);
  }
  .auth-visual img { width: 100%; height: 100%; object-fit: cover; display: block; }
}

/* —— My Bookings —— */
.bookings-page {
  --bookings-radius: 4px;
  --bookings-shadow: 0 14px 36px rgba(17, 24, 39, .08);
}
.bookings-section {
  padding-top: clamp(6.5rem, 12vw, 8rem);
  padding-bottom: clamp(3.5rem, 8vw, 6rem);
}
.bookings-container { width: min(920px, calc(100% - 2rem)); margin-inline: auto; }
.bookings-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}
.bookings-header .eyebrow-green { margin-bottom: .45rem; }
.bookings-guest-name {
  margin: .45rem 0 0;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .75rem;
}
.bookings-stay-times {
  margin: 0 0 1.5rem;
  border-radius: var(--bookings-radius);
}
.bookings-list {
  display: grid;
  gap: 1.15rem;
}
.bookings-card {
  border-radius: var(--bookings-radius);
  border-color: rgba(168, 162, 158, .16);
  box-shadow: var(--bookings-shadow);
  overflow: hidden;
}
.bookings-card-photo { background: var(--cream); }
.bookings-card-info { padding: clamp(1.15rem, 2.5vw, 1.45rem); }
.bookings-card-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: .85rem;
  flex-wrap: wrap;
}
.bookings-card-title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.2rem, 2.4vw, 1.4rem);
  line-height: 1.25;
  color: var(--neutral);
}
.bookings-card-id { margin: .3rem 0 0; }
.bookings-status {
  display: inline-flex;
  align-items: center;
  padding: .3rem .65rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}
.bookings-status.is-danger {
  background: #FEF2F2;
  color: #B91C1C;
  border: 1px solid #FECACA;
}
.bookings-status.is-success {
  background: #ECFDF5;
  color: #065F46;
  border: 1px solid #A7F3D0;
}
.bookings-status.is-warn {
  background: #FFFBEB;
  color: #92400E;
  border: 1px solid #FDE68A;
}
.bookings-status.is-muted {
  background: #F8FAFC;
  color: #475569;
  border: 1px solid #E2E8F0;
}
.bookings-card-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem 1.25rem;
  margin-top: 1.15rem;
  padding-top: 1.1rem;
  border-top: 1px solid rgba(168, 162, 158, .14);
}
.bookings-meta .label { margin-bottom: .25rem; }
.bookings-meta strong {
  display: block;
  font-size: .98rem;
  font-weight: 600;
  color: var(--neutral);
}
.bookings-meta .hint { margin-top: .15rem; }
.bookings-card-total {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 500;
}
.bookings-empty,
.bookings-login {
  text-align: center;
  padding: clamp(2.5rem, 6vw, 3.5rem) 1rem;
  background: #fff;
  border: 1px solid rgba(168, 162, 158, .14);
  border-radius: var(--bookings-radius);
  box-shadow: var(--bookings-shadow);
}
.bookings-empty-icon { margin: 0 auto 1.15rem; }
.bookings-empty-title {
  font-size: clamp(1.35rem, 3vw, 1.65rem);
  margin-bottom: .5rem;
}
.bookings-empty .btn,
.bookings-login .btn { margin-top: 1.15rem; }
.bookings-login-lead {
  margin: .75rem auto 0;
  max-width: 32rem;
}
.bookings-login-points {
  list-style: none;
  margin: 1.35rem auto 0;
  padding: 0;
  max-width: 30rem;
  text-align: left;
  display: grid;
  gap: .7rem;
}
.bookings-login-points li {
  position: relative;
  padding: .75rem .9rem .75rem 2.35rem;
  background: rgba(6, 78, 59, .04);
  border: 1px solid rgba(6, 78, 59, .08);
  border-radius: 2px;
  font-size: .92rem;
  line-height: 1.5;
  color: rgba(17, 24, 39, .78);
}
.bookings-login-points li::before {
  content: "✓";
  position: absolute;
  left: .85rem;
  top: .78rem;
  color: var(--primary);
  font-weight: 700;
  font-size: .85rem;
}
.bookings-login-actions {
  justify-content: center;
  margin-top: 1.5rem;
}
.bookings-refund-line {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin: .75rem 0 0;
  font-size: .88rem;
  font-weight: 500;
  color: #92400E;
}
.bookings-refund-line.is-credited { color: #065F46; }
.bookings-refund-line.is-failed { color: #B91C1C; }
.bookings-refund-dot {
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}

/* —— Booking details —— */
.booking-back {
  display: inline-block;
  margin-bottom: 1rem;
  font-size: .9rem;
  color: var(--primary);
  text-decoration: none;
}
.booking-back:hover { text-decoration: underline; }
.booking-detail-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}
.booking-detail-head .eyebrow-green { margin-bottom: .45rem; }
.booking-detail-head .muted-sm { margin: .45rem 0 0; }
.booking-detail-card {
  background: #fff;
  border: 1px solid rgba(168, 162, 158, .16);
  border-radius: var(--bookings-radius);
  box-shadow: var(--bookings-shadow);
  padding: clamp(1.15rem, 2.5vw, 1.6rem);
  margin-bottom: 1.15rem;
}
.booking-status-card { border-top: 4px solid #94A3B8; }
.booking-status-card.is-success { border-top-color: #059669; }
.booking-status-card.is-danger { border-top-color: #D97706; }
.booking-status-card.is-warn { border-top-color: #D97706; }
.booking-status-card .label { margin-bottom: .35rem; }
.booking-status-headline {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.35rem, 3vw, 1.7rem);
  color: var(--neutral);
}
.booking-status-sub {
  margin: .45rem 0 0;
  max-width: 40rem;
  color: rgba(17, 24, 39, .72);
  line-height: 1.55;
}
.booking-timeline {
  list-style: none;
  margin: 1.4rem 0 0;
  padding: 0;
}
.booking-timeline li {
  position: relative;
  display: flex;
  gap: .85rem;
  padding-bottom: 1.1rem;
}
.booking-timeline li:last-child { padding-bottom: 0; }
.booking-timeline li:not(:last-child)::before {
  content: "";
  position: absolute;
  left: .5rem;
  top: 1.2rem;
  bottom: .1rem;
  width: 2px;
  margin-left: -1px;
  background: #E2E8F0;
}
.booking-timeline li.is-done:not(:last-child)::before { background: #059669; }
.booking-timeline-dot {
  position: relative;
  flex-shrink: 0;
  width: 1rem;
  height: 1rem;
  margin-top: .15rem;
  border-radius: 50%;
  border: 2px solid #CBD5E1;
  background: #fff;
}
.booking-timeline .is-done .booking-timeline-dot {
  border-color: #059669;
  background: #059669;
}
.booking-timeline .is-done .booking-timeline-dot::after {
  content: "";
  position: absolute;
  left: .22rem;
  top: .06rem;
  width: .22rem;
  height: .45rem;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.booking-timeline .is-current .booking-timeline-dot {
  border-color: #D97706;
  box-shadow: 0 0 0 4px rgba(217, 119, 6, .15);
}
.booking-timeline .is-current .booking-timeline-dot::after {
  content: "";
  position: absolute;
  inset: .16rem;
  border-radius: 50%;
  background: #D97706;
}
.booking-timeline .is-failed .booking-timeline-dot {
  border-color: #DC2626;
  background: #DC2626;
}
.booking-timeline strong {
  display: block;
  font-size: .98rem;
  font-weight: 600;
  color: var(--neutral);
}
.booking-timeline .is-upcoming strong { color: rgba(17, 24, 39, .5); font-weight: 500; }
.booking-timeline span:not(.booking-timeline-dot) {
  display: block;
  margin-top: .15rem;
  font-size: .87rem;
  color: rgba(17, 24, 39, .6);
  line-height: 1.5;
}
.booking-enquiry {
  margin-top: 1.4rem;
  padding: 1rem 1.1rem;
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: var(--bookings-radius);
}
.booking-enquiry strong { color: #78350F; }
.booking-enquiry p {
  margin: .3rem 0 0;
  font-size: .9rem;
  color: rgba(17, 24, 39, .72);
  line-height: 1.5;
}
.booking-enquiry-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  margin-top: .85rem;
}
.booking-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.15rem;
}
.booking-detail-title {
  margin: 0 0 .9rem;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.2rem;
  color: var(--neutral);
}
.booking-detail-list { margin: 0; display: grid; gap: .7rem; }
.booking-detail-list > div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: .93rem;
}
.booking-detail-list dt { color: rgba(17, 24, 39, .58); }
.booking-detail-list dd {
  margin: 0;
  text-align: right;
  font-weight: 600;
  color: var(--neutral);
  word-break: break-word;
}
.booking-detail-list dd span {
  display: block;
  font-weight: 400;
  font-size: .82rem;
  color: rgba(17, 24, 39, .55);
}
.booking-pay-table { width: 100%; border-collapse: collapse; font-size: .93rem; }
.booking-pay-table td {
  padding: .6rem 0;
  border-top: 1px solid rgba(168, 162, 158, .16);
}
.booking-pay-table tr:first-child td { border-top: 0; }
.booking-pay-table td:last-child { text-align: right; white-space: nowrap; }
.booking-pay-table .is-total td {
  font-weight: 700;
  border-top: 2px solid rgba(17, 24, 39, .18);
}
.booking-pay-table .is-refund td { color: #065F46; font-weight: 600; }
.booking-pay-meta {
  margin-top: 1rem;
  padding-top: .9rem;
  border-top: 1px solid rgba(168, 162, 158, .16);
}
.booking-detail-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
}
.booking-detail-actions form { margin: 0; }
.booking-cancel-btn { color: #B91C1C; border-color: #FCA5A5; }
@media (max-width: 767px) {
  .booking-detail-grid { grid-template-columns: 1fr; gap: 0; }
  .booking-enquiry-actions .btn { width: 100%; justify-content: center; }
}

@media (max-width: 767px) {
  .bookings-header { align-items: stretch; }
  .bookings-header .btn { width: 100%; }
  .bookings-card-grid { grid-template-columns: 1fr 1fr; }
  .bookings-login-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .bookings-login-actions .btn { width: 100%; margin-top: 0; }
}

@media (min-width: 768px) {
  .bookings-card {
    grid-template-columns: 200px 1fr;
  }
  .bookings-card-photo {
    aspect-ratio: auto;
    min-height: 100%;
  }
}


/* Flash alerts — do not break header contrast on dark heroes */
.flash-banner {
  position: fixed;
  top: calc(4.75rem + env(safe-area-inset-top, 0px));
  left: 50%;
  transform: translateX(-50%);
  z-index: 60;
  width: min(720px, calc(100% - 2rem));
  pointer-events: none;
  animation: flash-in .35s ease;
}
.flash-banner .flash-alert {
  margin: 0;
  pointer-events: auto;
  box-shadow: 0 12px 30px rgba(17, 24, 39, .12);
  border-radius: 4px;
}
.flash-banner.is-hiding {
  opacity: 0;
  transform: translateX(-50%) translateY(-8px);
  transition: opacity .3s ease, transform .3s ease;
}
@keyframes flash-in {
  from { opacity: 0; transform: translateX(-50%) translateY(-10px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* When a flash is visible, keep header in solid readable mode */
body.has-flash .site-header,
body.has-flash.header-dark .site-header {
  background: rgba(255,255,255,.96);
  backdrop-filter: blur(12px);
  box-shadow: 0 1px 8px rgba(0,0,0,.06);
  padding: .7rem 0;
}
body.has-flash.header-dark .site-header .brand-name,
body.has-flash.header-dark .site-header:not(.is-scrolled) .brand-name { color: var(--primary); }
body.has-flash.header-dark .site-header .brand-sub,
body.has-flash.header-dark .site-header:not(.is-scrolled) .brand-sub { color: var(--tertiary); }
body.has-flash.header-dark .site-header .nav a,
body.has-flash.header-dark .site-header:not(.is-scrolled) .nav a { color: rgba(17,24,39,.8); }
body.has-flash.header-dark .site-header .nav a:hover,
body.has-flash.header-dark .site-header:not(.is-scrolled) .nav a:hover { color: var(--primary); }
body.has-flash.header-dark .site-header .header-actions .phone,
body.has-flash.header-dark .site-header .header-actions .link-quiet,
body.has-flash.header-dark .site-header:not(.is-scrolled) .header-actions .phone,
body.has-flash.header-dark .site-header:not(.is-scrolled) .header-actions .link-quiet { color: rgba(17,24,39,.7); }
body.has-flash.header-dark .site-header .link-quiet:hover { color: var(--primary); }
body.has-flash.header-dark .site-header .mobile-toggle,
body.has-flash.header-dark .site-header:not(.is-scrolled) .mobile-toggle { color: var(--neutral); }

/* Cookie consent banner */
.cookie-banner {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1200;
  padding: 1rem clamp(1rem, 3vw, 1.5rem) calc(1rem + env(safe-area-inset-bottom, 0px));
  pointer-events: none;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .28s ease, transform .28s ease;
}
.cookie-banner.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.cookie-banner[hidden] { display: none !important; }
.cookie-banner-inner {
  max-width: 72rem;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.25rem;
  padding: 1.15rem 1.25rem;
  border-radius: 14px;
  border: 1px solid rgba(6, 78, 59, .14);
  background: rgba(255, 255, 255, .97);
  box-shadow: 0 18px 48px rgba(15, 23, 42, .16);
  backdrop-filter: blur(10px);
}
.cookie-banner-kicker {
  margin: 0 0 .35rem;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--primary);
}
.cookie-banner-text {
  margin: 0;
  max-width: 44rem;
  font-size: .92rem;
  line-height: 1.45;
  color: rgba(17, 24, 39, .78);
}
.cookie-banner-text a {
  color: var(--primary);
  text-decoration: underline;
}
.cookie-banner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  flex-shrink: 0;
}
.cookie-banner-actions .btn {
  min-width: 7.5rem;
}
@media (max-width: 720px) {
  .cookie-banner { bottom: 4.25rem; }
  .cookie-banner-actions { width: 100%; }
  .cookie-banner-actions .btn { flex: 1 1 auto; }
}

/* Floating contact dock + assistant */
.contact-dock {
  position: fixed;
  right: 1rem;
  bottom: calc(5.5rem + env(safe-area-inset-bottom));
  z-index: 45;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .75rem;
  pointer-events: none;
}
.contact-dock > * { pointer-events: auto; }
.contact-dock-buttons { display: flex; flex-direction: column; align-items: flex-end; gap: .55rem; }
.dock-btn {
  position: relative;
  width: 2.75rem;
  height: 2.75rem;
  border: 0;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(17, 24, 39, .18);
  transition: transform .15s ease, box-shadow .15s ease;
}
.dock-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(17, 24, 39, .24); }
.dock-btn:focus-visible { outline: 3px solid rgba(184, 134, 11, .6); outline-offset: 2px; }
.dock-whatsapp { background: #25D366; }
.dock-phone { background: var(--primary); }
.dock-email { background: #fff; color: var(--primary); border: 1px solid rgba(6, 78, 59, .2); }
.dock-ai {
  width: auto;
  height: 3.1rem;
  padding: 0 1.1rem 0 .95rem;
  gap: .45rem;
  background: linear-gradient(135deg, var(--primary) 0%, #0b7a5c 55%, var(--gold) 140%);
  font-weight: 600;
  font-size: .88rem;
}
.dock-ai-label { white-space: nowrap; }
.contact-dock.is-open .dock-ai { background: var(--primary-dark); }
@media (hover: hover) and (min-width: 768px) {
  .dock-btn:not(.dock-ai)::before {
    content: attr(data-tip);
    position: absolute;
    right: calc(100% + .6rem);
    top: 50%;
    transform: translateY(-50%);
    padding: .3rem .6rem;
    border-radius: 4px;
    background: rgba(17, 24, 39, .88);
    color: #fff;
    font-size: .75rem;
    font-weight: 500;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity .15s ease;
  }
  .dock-btn:not(.dock-ai):hover::before { opacity: 1; }
}

.contact-dock.is-open .dock-btn:not(.dock-ai) { display: none; }
.assistant-panel {
  width: min(370px, calc(100vw - 2rem));
  max-height: min(560px, calc(100dvh - 17rem));
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid rgba(6, 78, 59, .14);
  border-radius: 14px;
  box-shadow: 0 24px 60px rgba(17, 24, 39, .22);
  overflow: hidden;
}
.assistant-panel[hidden] { display: none; }
.assistant-panel > :not(.assistant-log) { flex-shrink: 0; }
.assistant-head {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .85rem 1rem;
  background: var(--primary);
  color: #fff;
}
.assistant-avatar {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, .14);
  color: #F5D77A;
  flex-shrink: 0;
}
.assistant-title { margin: 0; font-weight: 600; font-size: .95rem; }
.assistant-sub { margin: .1rem 0 0; font-size: .74rem; color: rgba(255, 255, 255, .72); }
.assistant-close {
  margin-left: auto;
  background: none;
  border: 0;
  color: #fff;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  opacity: .8;
}
.assistant-close:hover { opacity: 1; }
.assistant-log {
  flex: 1;
  overflow-y: auto;
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: .6rem;
  background: var(--secondary);
}
.assistant-msg { max-width: 88%; }
.assistant-msg p {
  margin: 0;
  padding: .6rem .8rem;
  border-radius: 12px;
  font-size: .86rem;
  line-height: 1.5;
  white-space: pre-line;
}
.assistant-msg.is-bot p { background: #fff; border: 1px solid rgba(168, 162, 158, .22); border-top-left-radius: 4px; }
.assistant-msg.is-user { align-self: flex-end; }
.assistant-msg.is-user p { background: var(--primary); color: #fff; border-top-right-radius: 4px; }
.assistant-msg.is-typing p { color: var(--tertiary); font-style: italic; }
.assistant-links { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .4rem; }
.assistant-links a {
  padding: .3rem .65rem;
  border-radius: 999px;
  border: 1px solid rgba(6, 78, 59, .3);
  background: #fff;
  color: var(--primary);
  font-size: .76rem;
  font-weight: 600;
}
.assistant-links a:hover { background: var(--primary); color: #fff; }
.assistant-chips {
  display: flex;
  gap: .35rem;
  padding: .55rem .75rem;
  overflow-x: auto;
  border-top: 1px solid rgba(168, 162, 158, .18);
  scrollbar-width: none;
}
.assistant-chips::-webkit-scrollbar { display: none; }
.assistant-chips button {
  flex-shrink: 0;
  padding: .3rem .65rem;
  border-radius: 999px;
  border: 1px solid rgba(184, 134, 11, .4);
  background: #FBF8F1;
  color: rgba(17, 24, 39, .8);
  font-size: .75rem;
  cursor: pointer;
}
.assistant-chips button:hover { border-color: var(--gold); color: var(--neutral); }
.assistant-form {
  display: flex;
  gap: .45rem;
  padding: .6rem .75rem;
  border-top: 1px solid rgba(168, 162, 158, .18);
}
.assistant-form input {
  flex: 1;
  min-width: 0;
  padding: .6rem .8rem;
  border: 1px solid rgba(168, 162, 158, .35);
  border-radius: 999px;
  font-size: .88rem;
  background: var(--secondary);
}
.assistant-form input:focus { outline: none; border-color: var(--primary); background: #fff; }
.assistant-form button {
  width: 2.4rem;
  height: 2.4rem;
  flex-shrink: 0;
  border: 0;
  border-radius: 999px;
  background: var(--primary);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.assistant-foot { margin: 0; padding: 0 .9rem .7rem; font-size: .7rem; color: var(--tertiary); }
.assistant-foot a { color: var(--primary); text-decoration: underline; }

@media (min-width: 768px) {
  .contact-dock { right: 1.5rem; bottom: 1.5rem; }
  .assistant-panel { max-height: min(560px, calc(100dvh - 12rem)); }
}
@media (max-width: 767px) {
  .dock-btn:not(.dock-ai) { width: 2.5rem; height: 2.5rem; }
  .dock-ai { height: 2.8rem; padding: 0 .9rem 0 .8rem; }
}
