/*
  Greige and slate-teal. A warm greige ground (like the home's stone and plaster)
  with deep slate-teal ink, the complement of its brass and espresso-wood accents.
  (Variable names are kept from the first theme; values are remapped.)
*/
:root {
  --marble: #ECE7E0;     /* page: warm greige */
  --plaster: #F7F4EF;    /* raised surfaces */
  --veil: #E2DCD3;       /* quiet bands, range fill */
  --line: #D3CBC0;       /* hairlines */
  --stone: #5E6563;      /* secondary text */
  --charcoal: #1F2F31;   /* primary text: deep slate-teal ink */
  --espresso: #26393B;   /* deep teal bands: meals, footer */
  --brass: #9C7440;      /* accent, deepened for light backgrounds */
  --serif: "Marcellus", "Optima", "Candara", Georgia, serif;
  --sans: "Manrope", "Avenir Next", "Segoe UI", sans-serif;
  --wrap: 76rem;
  --gutter: clamp(1.25rem, 4vw, 3rem);
  box-sizing: border-box;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  color-scheme: light;
}
*, *::before, *::after { box-sizing: inherit; }
html { scroll-padding-top: 6rem; scroll-behavior: smooth; }
body { margin: 0; background: var(--marble); color: var(--charcoal); font: 400 1rem/1.7 var(--sans); -webkit-font-smoothing: antialiased; }
img { display: block; max-width: 100%; height: auto; }
a { color: var(--charcoal); text-decoration-color: var(--brass); text-decoration-thickness: 1px; text-underline-offset: 0.25em; }
a:hover { color: var(--brass); text-decoration-thickness: 2px; }
:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; line-height: 1.12; letter-spacing: 0.005em; margin: 0; }
h1 { font-size: clamp(2.3rem, 4.6vw, 3.9rem); }
h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
h3 { font-size: clamp(1.35rem, 2vw, 1.85rem); }
p { margin: 0 0 1rem; max-width: 62ch; }
.skip { position: absolute; left: -999px; }
.skip:focus { left: 1rem; top: 1rem; z-index: 50; background: var(--plaster); padding: 0.5rem 1rem; }

/* Buttons: squared, quiet, confident */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; background: var(--espresso); color: #F7F4EF; border: 1px solid var(--espresso); font-weight: 600; border-radius: 2px; padding: 0.9rem 1.6rem; font: 500 0.9375rem/1 var(--sans); letter-spacing: 0.04em; text-decoration: none; cursor: pointer; transition: background 0.2s, border-color 0.2s; }
.btn:hover { background: var(--brass); border-color: var(--brass); color: #FFFFFF; }
.btn:disabled { opacity: 0.4; cursor: not-allowed; }
.btn-small { padding: 0.65rem 1.1rem; }
.btn-light { background: transparent; color: #F3EDE2; border-color: #C9A46A; }
.btn-light:hover { background: #C9A46A; color: #1F2F31; }
.btn-wide { width: 100%; padding: 1.1rem; }

/* Header */
.top { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 20; display: flex; align-items: center; gap: 2rem; padding: 0.9rem var(--gutter); background: rgba(236, 231, 224, 0.94); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.brand { font-family: var(--serif); font-size: 1.4rem; font-weight: 400; letter-spacing: 0.04em; text-decoration: none; letter-spacing: 0.01em; margin-right: auto; white-space: nowrap; }
.brand img { display: block; height: 52px; width: auto; }
.foot-brand img { display: block; height: 72px; width: auto; max-width: 100%; }
.nav { display: flex; gap: 1.75rem; }
.nav a { text-decoration: none; font-size: 0.9375rem; letter-spacing: 0.03em; color: var(--stone); }
.nav a:hover { color: var(--charcoal); }

/* Hero: the house, full width, with the booking bar resting on its edge */
.hero { position: relative; margin-bottom: 5rem; }
.hero-media { position: relative; height: min(82vh, 52rem); min-height: 30rem; overflow: hidden; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: center 60%; }
.hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(24, 20, 17, 0.62) 0%, rgba(24, 20, 17, 0.25) 55%, rgba(24, 20, 17, 0) 80%), linear-gradient(180deg, rgba(24, 20, 17, 0) 45%, rgba(24, 20, 17, 0.5) 100%); }
.hero-copy { position: absolute; z-index: 1; left: var(--gutter); right: var(--gutter); bottom: 6.5rem; color: #fff; max-width: 42rem; }
.hero-copy h1 { margin-bottom: 1rem; text-wrap: balance; color: #F6F0E6; text-shadow: 0 1px 24px rgba(0, 0, 0, 0.25); }
.hero-copy p { font-size: 1.125rem; color: rgba(255, 255, 255, 0.92); }
.hero-form { position: absolute; left: var(--gutter); bottom: 0; transform: translateY(50%); width: min(60rem, calc(100% - 2 * var(--gutter))); box-shadow: 0 18px 40px -24px rgba(42, 44, 46, 0.45); }

/* Date bar, shared by hero, guide pages and closing */
.datebar { display: grid; grid-template-columns: 1fr 1fr 0.7fr auto; background: var(--plaster); border: 1px solid var(--line); }
.datebar label { display: grid; gap: 0.15rem; padding: 0.75rem 1.1rem; border-right: 1px solid var(--line); }
.datebar span { font-size: 0.8125rem; color: var(--stone); letter-spacing: 0.03em; }
.datebar input, .datebar select { font: 400 1rem var(--sans); color: var(--charcoal); border: 0; background: transparent; padding: 0; min-width: 0; }
.datebar .btn { border-radius: 0; }
.datebar.stacked { grid-template-columns: 1fr 1fr; }
.datebar.stacked label:nth-child(2) { border-right: 0; }
.datebar.stacked label:nth-child(3) { grid-column: 1 / -1; border-right: 0; border-top: 1px solid var(--line); }
.datebar.stacked .btn { grid-column: 1 / -1; }

/* Facts */
.facts { max-width: var(--wrap); margin: 0 auto; padding: 4rem var(--gutter) 2rem; display: grid; grid-template-columns: auto 1fr; gap: 2rem 4rem; align-items: center; }
.facts dl { display: flex; gap: 2.5rem; margin: 0; }
.facts dl div { display: flex; flex-direction: column-reverse; }
.facts dt { font-size: 0.875rem; color: var(--stone); letter-spacing: 0.03em; }
.facts dd { margin: 0; font-family: var(--serif); font-size: 2.6rem; line-height: 1; color: var(--brass); }
.facts p { margin: 0; color: var(--stone); padding-left: 2rem; border-left: 1px solid var(--brass); }

/* The walkthrough */
.tour { max-width: var(--wrap); margin: 0 auto; padding: 5rem var(--gutter) 2rem; }
.tour-intro { margin-bottom: 3.5rem; }
.tour-intro p { color: var(--stone); font-size: 1.125rem; }
.tour-body { display: grid; grid-template-columns: 11rem 1fr; gap: 4rem; }
.tour-index { position: sticky; top: 7rem; align-self: start; }
.tour-index ol { list-style: none; padding: 0; margin: 0; border-left: 1px solid var(--line); }
.tour-index a { display: block; padding: 0.45rem 0 0.45rem 1.1rem; margin-left: -1px; border-left: 2px solid transparent; text-decoration: none; color: var(--stone); font-size: 0.9375rem; transition: color 0.2s, border-color 0.2s; }
.tour-index a:hover { color: var(--charcoal); }
.tour-index a.is-active { color: var(--charcoal); border-left-color: var(--brass); }
.room { padding-bottom: 6rem; }
.room-name { font-size: 0.9375rem; color: var(--brass); letter-spacing: 0.04em; margin-bottom: 0.6rem; }
.room h3 { margin-bottom: 0.9rem; }
.room-text { color: var(--stone); margin-bottom: 1.75rem; }
.room-photos { display: grid; gap: 0.5rem; grid-template-columns: repeat(2, 1fr); }
.room-photos.count-3 > :first-child { grid-column: 1 / -1; }
.room-photos.count-4 { grid-template-columns: repeat(3, 1fr); }
.room-photos.count-4 > :first-child { grid-column: 1 / -1; }
.shot { padding: 0; border: 0; background: none; cursor: zoom-in; overflow: hidden; display: block; }
.shot img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 0.6s ease; }
.room-photos > :first-child img { aspect-ratio: 16 / 10; }
.shot:hover img { transform: scale(1.02); }

/* Lightbox */
.lightbox { border: 0; padding: 0; background: transparent; max-width: min(94vw, 1400px); max-height: 94vh; }
.lightbox::backdrop { background: rgba(26, 22, 19, 0.92); }
.lightbox figure { margin: 0; }
.lightbox img { max-height: 80vh; width: auto; margin: 0 auto; }
.lightbox figcaption { color: #E7E2DA; text-align: center; font-family: var(--serif); font-size: 1.25rem; margin-top: 0.75rem; }
.lb-bar { display: flex; justify-content: center; align-items: center; gap: 1rem; margin-top: 0.75rem; color: #CFC7BC; font-size: 0.875rem; }
.lb-bar button { background: none; color: #F3EDE2; border: 1px solid rgba(243, 242, 239, 0.45); border-radius: 2px; padding: 0.5rem 1rem; font: 400 0.875rem var(--sans); letter-spacing: 0.03em; cursor: pointer; }
.lb-bar button:hover { border-color: var(--marble); }

/* Meals: espresso, like the floors */
.meals { display: grid; grid-template-columns: 1fr 1fr; background: var(--espresso); color: #DCE3E1; margin: 3rem 0 0; }
.meals-photo img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.meals-copy { padding: clamp(2.5rem, 6vw, 5.5rem); align-self: center; }
.meals-copy h2 { color: #fff; margin-bottom: 1.25rem; }
.link-light { color: #fff; }
.link-light:hover { color: var(--veil); }

/* Sections */
.band { max-width: var(--wrap); margin: 0 auto; padding: clamp(4rem, 8vw, 6.5rem) var(--gutter) 0; }
.band > h2, .band-head { margin-bottom: 2.5rem; }
.band-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; flex-wrap: wrap; }
.amenities { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 2.5rem 2rem; }
.amenities h3 { font: 500 0.9375rem var(--sans); letter-spacing: 0.03em; padding-bottom: 0.6rem; margin-bottom: 0.6rem; border-bottom: 1px solid var(--brass); }
.amenities ul, .aside ul, .foot ul { list-style: none; margin: 0; padding: 0; }
.amenities li { padding: 0.3rem 0; color: var(--stone); font-size: 0.9375rem; }

/* Cards */
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem 1.5rem; }
.card { display: grid; gap: 0.5rem; text-decoration: none; }
.card img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; margin-bottom: 0.6rem; transition: opacity 0.3s; }
.card:hover img { opacity: 0.9; }
.card-group { font-size: 0.8125rem; color: var(--brass); letter-spacing: 0.04em; }
.card-title { font-family: var(--serif); font-size: 1.3rem; line-height: 1.25; }
.card:hover .card-title { text-decoration: underline; text-decoration-color: var(--brass); text-decoration-thickness: 1px; text-underline-offset: 0.2em; }

/* Places */
.split { display: grid; grid-template-columns: 1fr 1.3fr; gap: 3rem; }
.split h2 { margin-bottom: 1rem; }
.split p { color: var(--stone); }
.places { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--charcoal); }
.places li { display: grid; grid-template-columns: 1fr auto; gap: 1rem; padding: 0.95rem 0; border-bottom: 1px solid var(--line); }
.places li span:last-child { color: var(--stone); text-align: right; }
.places-full li { grid-template-columns: 1.2fr 1.5fr 6rem; }
.places-full li span:nth-child(2) { color: var(--stone); }

/* FAQ */
.faq details { border-bottom: 1px solid var(--line); }
.faq details:first-child { border-top: 1px solid var(--line); }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 1.5rem; padding: 1.15rem 0; font-family: var(--serif); font-size: 1.2rem; line-height: 1.35; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-family: var(--sans); font-weight: 300; color: var(--brass); font-size: 1.4rem; line-height: 1; }
.faq details[open] summary::after { content: "\2212"; }
.faq details p { color: var(--stone); padding-bottom: 1.15rem; }

/* Closing */
.closing { background: var(--veil); margin-top: clamp(4rem, 8vw, 6.5rem); padding: clamp(3.5rem, 7vw, 5.5rem) var(--gutter); text-align: center; }
.closing h2 { margin-bottom: 0.75rem; }
.closing p { margin: 0 auto 2rem; color: var(--stone); }
.closing .datebar { max-width: 56rem; margin: 0 auto; text-align: left; }

/* Inner pages */
.page { max-width: var(--wrap); margin: 0 auto; padding: 3rem var(--gutter) 2rem; }
.page.narrow { max-width: 50rem; }
.page.center { text-align: center; padding-top: 6rem; padding-bottom: 6rem; }
.page.center p { margin-left: auto; margin-right: auto; }
.page h1 { margin-bottom: 1.25rem; text-wrap: balance; }
.lede { font-size: 1.2rem; color: var(--stone); max-width: 58ch; margin-bottom: 2.5rem; }
.crumbs { display: flex; gap: 0.6rem; font-size: 0.875rem; color: var(--stone); margin-bottom: 1.75rem; flex-wrap: wrap; }
.crumbs a { color: var(--stone); }
.hub-group { margin-top: 3.5rem; }
.hub-group h2 { font-size: 1.9rem; margin-bottom: 1.75rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--line); }
.area-prose { margin-top: 3.5rem; }
.after { margin-top: 2.5rem; color: var(--stone); }

.guide-hero { height: min(58vh, 34rem); overflow: hidden; }
.guide-hero img { width: 100%; height: 100%; object-fit: cover; }
.guide { max-width: var(--wrap); margin: 0 auto; padding: 2.5rem var(--gutter) 2rem; }
.guide h1 { max-width: 22ch; margin-bottom: 1.25rem; }
.guide-grid { display: grid; grid-template-columns: 1fr 22rem; gap: 4.5rem; align-items: start; }
.prose h2 { font-size: 2rem; margin: 2.5rem 0 1rem; }
.prose h2:first-child { margin-top: 0; }
.prose p { color: #3E4746; }
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; margin: 2rem 0 0.5rem; }
.pair img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.aside { position: sticky; top: 6.5rem; background: var(--plaster); border: 1px solid var(--line); padding: 1.75rem; display: grid; gap: 1.1rem; }
.aside-title { font-family: var(--serif); font-size: 1.5rem; margin: 0; }
.aside li { padding: 0.4rem 0; border-bottom: 1px solid var(--veil); font-size: 0.9375rem; }
.aside-facts { color: var(--stone); font-size: 0.9375rem; margin: 0; }
.aside-link { font-size: 0.9375rem; text-align: center; }
.related { margin-top: 5rem; }
.related h2 { margin-bottom: 2rem; }

/* Booking */
.book h1 { margin-bottom: 0.75rem; }
.notice { background: var(--veil); border-left: 2px solid var(--brass); padding: 0.9rem 1.2rem; font-size: 0.9375rem; max-width: none; }
.book-grid { display: grid; grid-template-columns: 1fr 24rem; gap: 4rem; align-items: start; }
.book-form fieldset { border: 0; padding: 0; margin: 0 0 2.75rem; }
.book-form legend { font-family: var(--serif); font-size: 1.9rem; margin-bottom: 1.25rem; padding: 0; }
.cal { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; position: relative; }
.cal-month h3 { font: 500 1rem var(--sans); letter-spacing: 0.03em; text-align: center; margin-bottom: 0.75rem; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-dow { font-size: 0.75rem; color: var(--stone); text-align: center; padding-bottom: 0.4rem; }
.cal-day { aspect-ratio: 1; border: 0; background: transparent; font: 400 0.9375rem var(--sans); color: var(--charcoal); cursor: pointer; border-radius: 2px; }
.cal-day:hover:not(:disabled) { background: var(--veil); }
.cal-day:disabled { color: #B3AA9E; text-decoration: line-through; cursor: default; }
.cal-day.is-past:disabled { text-decoration: none; }
.cal-day.in-range { background: var(--veil); border-radius: 0; }
.cal-day.is-start, .cal-day.is-end { background: var(--espresso); color: #F7F4EF; }
.cal-nav { position: absolute; top: -0.35rem; left: 0; right: 0; display: flex; justify-content: space-between; pointer-events: none; }
.cal-nav button { pointer-events: auto; background: none; border: 1px solid var(--line); border-radius: 2px; width: 2.25rem; height: 2.25rem; cursor: pointer; font-size: 1.1rem; color: var(--charcoal); }
.cal-nav button:disabled { opacity: 0.3; cursor: default; }
.cal-help { color: var(--stone); font-size: 0.9375rem; margin-top: 1rem; }
.stepper { display: flex; align-items: center; gap: 1rem; }
.stepper button { width: 2.5rem; height: 2.5rem; border: 1px solid var(--line); background: var(--plaster); border-radius: 2px; font-size: 1.2rem; cursor: pointer; color: var(--charcoal); }
.stepper output { font-family: var(--serif); font-size: 1.75rem; min-width: 1.5rem; text-align: center; }
.stepper span { color: var(--stone); font-size: 0.9375rem; }
.fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; }
.fields label { display: grid; gap: 0.35rem; font-size: 0.875rem; color: var(--stone); letter-spacing: 0.02em; }
.fields .wide { grid-column: 1 / -1; }
.fields input, .fields textarea { font: 400 1rem var(--sans); color: var(--charcoal); background: var(--plaster); border: 1px solid var(--line); border-radius: 2px; padding: 0.75rem 0.85rem; }
.fields input:focus, .fields textarea:focus { border-color: var(--charcoal); outline: none; }
.agree { display: flex; gap: 0.65rem; align-items: flex-start; margin-top: 1.25rem; font-size: 0.9375rem; color: var(--stone); }
.agree input { margin-top: 0.3rem; accent-color: var(--charcoal); }
.form-error { color: #9A3B2A; min-height: 1.5rem; font-size: 0.9375rem; }
.summary { position: sticky; top: 6.5rem; background: var(--plaster); border: 1px solid var(--line); }
.summary img { aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }
.summary-body { padding: 1.5rem 1.75rem 1.75rem; }
.summary-title { font-family: var(--serif); font-size: 1.6rem; margin-bottom: 0.25rem; }
.summary-dates { color: var(--stone); font-size: 0.9375rem; }
.lines { margin: 1rem 0 1.5rem; }
.lines div { display: flex; justify-content: space-between; gap: 1rem; padding: 0.4rem 0; font-size: 0.9375rem; }
.lines dt { color: var(--stone); }
.lines dd { margin: 0; }
.lines .total { border-top: 1px solid var(--charcoal); margin-top: 0.5rem; padding-top: 0.8rem; font-weight: 500; font-size: 1.05rem; }
.lines .total dt { color: var(--charcoal); }
.summary h2 { font: 500 0.9375rem var(--sans); letter-spacing: 0.03em; margin: 1.25rem 0 0.4rem; }
.small { font-size: 0.875rem; color: var(--stone); }

/* Footer: espresso */
.foot { background: #1E2E30; color: #CFC5BA; margin-top: clamp(4rem, 8vw, 6.5rem); }
.closing + .foot, main:has(> .closing:last-of-type) + .foot { margin-top: 0; }
.foot-inner { max-width: var(--wrap); margin: 0 auto; padding: 4rem var(--gutter) 3rem; display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); gap: 2.5rem; }
.foot a:not(.btn) { color: #D8D0C4; text-decoration-color: rgba(201, 164, 106, 0.6); }
.foot a:not(.btn):hover { color: #fff; }
.foot-brand { font-family: var(--serif); font-size: 1.75rem; color: #fff; margin-bottom: 0.75rem; }
.foot-head { color: #fff; font-size: 0.9375rem; letter-spacing: 0.03em; margin-bottom: 0.9rem; }
.foot li { padding: 0.3rem 0; font-size: 0.875rem; line-height: 1.4; }
.foot-small { font-size: 0.875rem; }
.foot-base { max-width: var(--wrap); margin: 0 auto; padding: 1.5rem var(--gutter) 2.5rem; border-top: 1px solid rgba(207, 197, 186, 0.2); display: flex; gap: 2rem; flex-wrap: wrap; font-size: 0.875rem; }

@media (max-width: 1080px) {
  .foot-inner { grid-template-columns: 1fr 1fr; }
  .foot-about { grid-column: 1 / -1; }
}
@media (max-width: 900px) {
  .nav { display: none; }
  .hero { margin-bottom: 0; }
  .hero-media { height: 72vh; min-height: 30rem; }
  .hero-media::after { background: linear-gradient(180deg, rgba(24, 20, 17, 0) 25%, rgba(24, 20, 17, 0.72) 100%); }
  .hero-copy { bottom: 1.75rem; }
  .hero-copy p { font-size: 1rem; }
  .hero-form { position: static; transform: none; width: auto; margin: 0; box-shadow: none; border-left: 0; border-right: 0; }
  .datebar { grid-template-columns: 1fr 1fr; }
  .datebar label:nth-child(2) { border-right: 0; }
  .datebar label:nth-child(3) { grid-column: 1 / -1; border-right: 0; border-top: 1px solid var(--line); }
  .datebar .btn { grid-column: 1 / -1; padding: 1rem; }
  .facts { grid-template-columns: 1fr; }
  .facts p { padding-left: 0; border-left: 0; }
  .tour-body { grid-template-columns: 1fr; gap: 0; }
  .tour-index { position: sticky; top: calc(env(safe-area-inset-top, 0px) + 3.6rem); z-index: 5; background: rgba(236, 231, 224, 0.97); margin: 0 calc(-1 * var(--gutter)) 2rem; padding: 0 var(--gutter); overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--line); }
  .tour-index ol { display: flex; border-left: 0; gap: 1.25rem; }
  .tour-index a { white-space: nowrap; padding: 0.8rem 0; border-left: 0; border-bottom: 2px solid transparent; margin: 0; }
  .tour-index a.is-active { border-bottom-color: var(--brass); }
  .room { padding-bottom: 4rem; }
  .meals, .split, .guide-grid, .book-grid { grid-template-columns: 1fr; }
  .cards { grid-template-columns: 1fr 1fr; }
  .aside, .summary { position: static; }
  .summary { order: -1; }
  .places-full li { grid-template-columns: 1fr auto; }
  .places-full li span:nth-child(2) { grid-row: 2; grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .brand { font-size: 1.3rem; }
  .facts dl { gap: 1.5rem; }
  .facts dd { font-size: 2.4rem; }
  .cards { grid-template-columns: 1fr; }
  .cal { grid-template-columns: 1fr; }
  .cal-month + .cal-month { display: none; }
  .fields { grid-template-columns: 1fr; }
  .room-photos.count-4 { grid-template-columns: 1fr 1fr; }
  .room-photos.count-4 > :first-child { grid-column: 1 / -1; }
  .foot-inner { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
.room-photos.count-2 > :first-child img { aspect-ratio: 4 / 3; }

/* Nearby (home) */
.nearby { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; }
.nearby h3 { font-size: 1.3rem; margin-bottom: 1rem; }
.nearby h3 a { text-decoration: none; }
.nearby ul { list-style: none; margin: 0 0 1rem; padding: 0; border-top: 1px solid var(--charcoal); }
.nearby li { display: grid; gap: 0.1rem; padding: 0.75rem 0; border-bottom: 1px solid var(--line); }
.nearby li span:first-child { font-weight: 500; }
.nearby li span:last-child { font-size: 0.875rem; color: var(--stone); }
.nearby .more { font-size: 0.9375rem; }

/* Area pages */
.guide-hero.short { height: min(44vh, 26rem); }
.place-group { margin-bottom: 3rem; }
.place-group h2 { font-size: 1.9rem; padding-bottom: 0.75rem; margin-bottom: 0.5rem; border-bottom: 1px solid var(--brass); }
.place-list { list-style: none; margin: 0; padding: 0; }
.place-list li { padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.place-list h3 { font-size: 1.25rem; margin-bottom: 0.2rem; }
.place-list h3 a { text-decoration-thickness: 1px; }
.place-addr { font-size: 0.875rem; color: var(--stone); margin-bottom: 0.4rem; }
.place-list p { margin: 0 0 0.5rem; color: #3E4746; }
.dir { font-size: 0.875rem; color: var(--brass); text-decoration-color: rgba(156, 116, 64, 0.45); white-space: nowrap; }
.dir:hover { color: var(--charcoal); }
.nearby .dir { margin-left: 0.4rem; }
.area-block { margin-top: 4.5rem; }
.area-block h2 { margin-bottom: 1.5rem; }
.area-prose h3 { font-size: 1.6rem; margin: 2rem 0 0.6rem; }
.after-btn { margin-top: 1rem; }
.summary .btn { margin-top: 1.25rem; }

@media (max-width: 900px) {
  .nearby { grid-template-columns: 1fr 1fr; gap: 2rem; }
}

@media (max-width: 600px) { .nearby { grid-template-columns: 1fr; } }
.room-name, .card-group { color: var(--brass); }
.shot img, .card img, .pair img, .summary img { filter: saturate(0.96); }

/* Events */
.event-banner { max-width: var(--wrap); margin: 1.5rem auto 0; padding: 0 var(--gutter); display: flex; align-items: baseline; gap: 1rem; flex-wrap: wrap; }
.event-banner .eb-label { font-size: 0.8125rem; letter-spacing: 0.06em; color: #FFFFFF; background: var(--brass); padding: 0.2rem 0.6rem; border-radius: 2px; }
.event-banner a { color: var(--charcoal); font-family: var(--serif); font-size: 1.15rem; text-decoration-color: var(--brass); }
.event-facts { display: grid; grid-template-columns: repeat(3, auto); justify-content: start; gap: 0.5rem 2.5rem; margin: 0 0 1.75rem; padding: 1rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.event-facts dt { font-size: 0.8125rem; color: var(--stone); letter-spacing: 0.04em; }
.event-facts dd { margin: 0; }
.date-list { columns: 2; padding-left: 1.1rem; color: #3E4746; }
.date-list li { padding: 0.2rem 0; }
@media (max-width: 900px) { .event-facts { grid-template-columns: 1fr; } .date-list { columns: 1; } }
.top .btn-small { white-space: nowrap; }
@media (max-width: 600px) { .top { gap: 0.75rem; } .brand img { height: 38px; } .foot-brand img { height: 58px; } .top .btn-small { padding: 0.55rem 0.8rem; font-size: 0.875rem; } }

/* Hover safety: the site is always light, even inside viewers set to dark mode,
   and every hover keeps readable text on its own background. */
html, :root[data-theme="dark"], :root[data-theme="light"] { color-scheme: light; background: var(--marble); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: light; } }
.nav a:hover, .crumbs a:hover, .tour-index a:hover, .aside-link:hover, .card:hover .card-title, .event-banner a:hover, .place-list h3 a:hover, .band-head a:hover { color: var(--brass); background: transparent; }
.btn:hover, .btn:focus-visible { background: var(--brass); border-color: var(--brass); color: #FFFFFF; }
.btn-light:hover, .btn-light:focus-visible { background: #C9A46A; border-color: #C9A46A; color: #1F2F31; }
.foot a:not(.btn):hover, .meals a:hover, .link-light:hover { color: #FFFFFF; background: transparent; }
.lb-bar button:hover { background: rgba(255, 255, 255, 0.12); color: #FFFFFF; }

.date-list.single { columns: 1; }
.cards-2 { grid-template-columns: repeat(2, 1fr); margin-bottom: 1rem; }
@media (max-width: 600px) { .cards-2 { grid-template-columns: 1fr; } }

/* Comfortable tap targets on touch screens (aim for ~44px) */
@media (max-width: 900px), (pointer: coarse) {
  .foot li a, .foot-base a, .crumbs a, .nearby .more, .band-head a, .meals a, .aside-link, .split a { display: inline-block; padding: 0.7rem 0; }
  .foot li { padding: 0; }
  .foot-base { gap: 0.25rem 1.5rem; }
  .dir { display: inline-block; padding: 0.75rem 0.25rem 0.75rem 0; margin: -0.5rem 0; }
  .place-list h3 a { display: inline-block; padding: 0.5rem 0; }
  .nav a { padding: 0.75rem 0; }
  .faq summary { padding: 1.1rem 0; min-height: 44px; }
  .datebar input, .datebar select { min-height: 32px; }
  .cal-day { min-height: 40px; }
  .crumbs { gap: 0 0.6rem; align-items: center; }
}
@media (max-width: 900px), (pointer: coarse) {
  .top .btn-small { padding: 0.75rem 0.9rem; }
  .event-facts dd a, .nearby h3 a, .brand { display: inline-block; padding: 0.6rem 0; }
}

/* Mobile menu */
.menu { display: none; position: relative; }
.menu summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 0.5rem; min-height: 44px; padding: 0 0.25rem; font-size: 0.9375rem; color: var(--charcoal); }
.menu summary::-webkit-details-marker { display: none; }
.menu-icon, .menu-icon::before, .menu-icon::after { display: block; width: 18px; height: 1.5px; background: var(--charcoal); position: relative; transition: transform 0.2s; }
.menu-icon::before, .menu-icon::after { content: ""; position: absolute; left: 0; }
.menu-icon::before { top: -6px; }
.menu-icon::after { top: 6px; }
.menu[open] .menu-icon { background: transparent; }
.menu[open] .menu-icon::before { transform: translateY(6px) rotate(45deg); }
.menu[open] .menu-icon::after { transform: translateY(-6px) rotate(-45deg); }
.menu-panel { position: absolute; right: 0; top: calc(100% + 0.6rem); min-width: 13rem; background: var(--plaster); border: 1px solid var(--line); box-shadow: 0 18px 40px -20px rgba(31, 47, 49, 0.35); display: grid; padding: 0.5rem 0; z-index: 30; }
.menu-panel a { padding: 0.8rem 1.25rem; text-decoration: none; color: var(--charcoal); font-size: 1rem; }
.menu-panel a:hover { background: var(--veil); color: var(--charcoal); }
.menu-panel a:last-child { border-top: 1px solid var(--line); margin-top: 0.25rem; color: var(--brass); font-weight: 600; }
@media (max-width: 900px) {
  .menu { display: block; }
}
@media (max-width: 600px) {
  .top .btn-small { display: none; }
  .menu-label { display: inline; }
}

/* Reviews and guestbook */
.reviews { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.reviews-list { grid-template-columns: 1fr; }
.review { margin: 0; background: var(--plaster); border: 1px solid var(--line); border-top: 2px solid var(--brass); padding: 1.5rem; }
.review blockquote { margin: 0 0 1rem; font-family: var(--serif); font-size: 1.15rem; line-height: 1.5; }
.review figcaption { font-size: 0.9375rem; }
.rv-name { font-weight: 600; }
.rv-meta { display: block; color: var(--stone); font-size: 0.8125rem; margin-top: 0.2rem; }
.gb-grid { display: grid; grid-template-columns: 1fr 24rem; gap: 3.5rem; align-items: start; }
.gb-empty { background: var(--plaster); border: 1px dashed var(--line); padding: 2rem; }
.gb-empty-title { font-family: var(--serif); font-size: 1.4rem; margin-bottom: 0.5rem; }
.gb-form { display: grid; gap: 0.9rem; }
.gb-form label { display: grid; gap: 0.35rem; font-size: 0.875rem; color: var(--stone); }
.gb-form input, .gb-form textarea { font: 400 1rem var(--sans); color: var(--charcoal); background: #FFFFFF; border: 1px solid var(--line); border-radius: 2px; padding: 0.7rem 0.8rem; min-height: 44px; }
.gb-form input:focus, .gb-form textarea:focus { border-color: var(--charcoal); outline: none; }
.gb-form .agree { display: flex; gap: 0.6rem; align-items: flex-start; color: var(--charcoal); }
.gb-form .agree input { min-height: 0; margin-top: 0.25rem; accent-color: var(--espresso); }
.gb-status { min-height: 1.4rem; font-size: 0.9375rem; color: var(--charcoal); margin: 0; }
.hp { position: absolute; left: -9999px; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
@media (max-width: 900px) { .reviews, .gb-grid { grid-template-columns: 1fr; } .gb-form-wrap { position: static; } }

/* Comparison tables */
.table-wrap { overflow-x: auto; margin: 1.5rem 0 1rem; border: 1px solid var(--line); background: var(--plaster); }
.compare { width: 100%; border-collapse: collapse; font-size: 0.9375rem; min-width: 30rem; }
.compare th, .compare td { text-align: left; padding: 0.7rem 0.9rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.compare thead th { font-weight: 600; background: var(--veil); }
.compare tbody th { font-weight: 500; color: var(--stone); white-space: nowrap; }
.compare td:last-child { color: var(--charcoal); font-weight: 500; }
.compare tr:last-child th, .compare tr:last-child td { border-bottom: 0; }

/* Let grid columns shrink so wide content scrolls inside its own box */
.guide-grid > *, .book-grid > *, .gb-grid > *, .split > *, .explorer > * { min-width: 0; }

@media (max-width: 600px) {
  .table-wrap { overflow: visible; border: 0; background: transparent; }
  .compare, .compare tbody, .compare tr, .compare th, .compare td { display: block; min-width: 0; width: auto; }
  .compare thead { display: none; }
  .compare tr { background: var(--plaster); border: 1px solid var(--line); margin-bottom: 0.6rem; padding: 0.7rem 0.9rem; }
  .compare tbody th { padding: 0 0 0.35rem; border: 0; color: var(--charcoal); font-weight: 600; white-space: normal; }
  .compare td { display: grid; grid-template-columns: 8.5rem 1fr; gap: 0.75rem; padding: 0.3rem 0; border: 0; }
  .compare td::before { content: attr(data-label); color: var(--stone); font-size: 0.8125rem; }
  .compare td:last-child::before { color: var(--brass); font-weight: 600; }
}

.menu-price { font-family: var(--sans); font-size: 0.9375rem; color: var(--brass); margin-left: 0.5rem; }

.photo-links { font-size: 0.9375rem; color: var(--stone); }
.credit-fig { margin: 0; } .credit-fig figcaption { font-size: 0.75rem; color: var(--stone); margin-top: 0.3rem; }
.menu-provider { margin: -1.5rem 0 2rem; color: var(--charcoal); }

.foot-langs { max-width: var(--wrap); margin: 0 auto; padding: 1.25rem var(--gutter) 0; border-top: 1px solid rgba(207, 197, 186, 0.2); display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem; font-size: 0.9375rem; color: #CFC5BA; }
.foot-langs a { padding: 0.6rem 0; }
.lang-page h1, .lang-page h2, .lang-page .lede, .lang-page p, .lang-page li { font-family: var(--sans); line-height: 1.6; }
.lang-page h1 { line-height: 1.3; }
.lang-facts { grid-template-columns: repeat(4, auto); }
@media (max-width: 900px) { .lang-facts { grid-template-columns: repeat(2, auto); } }

/* Site assistant */
.chat { position: fixed; right: max(1rem, env(safe-area-inset-right, 0px)); bottom: calc(1rem + env(safe-area-inset-bottom, 0px)); z-index: 40; font-family: var(--sans); }
.chat-launch { display: flex; align-items: center; gap: 0.6rem; background: var(--espresso); color: #F7F4EF; border: 0; border-radius: 999px; padding: 0.85rem 1.2rem; font: 600 0.9375rem var(--sans); box-shadow: 0 12px 30px -12px rgba(31, 47, 49, 0.55); cursor: pointer; min-height: 48px; }
.chat-launch:hover { background: var(--brass); }
.chat-dot { width: 10px; height: 10px; border-radius: 50%; background: #C9A46A; box-shadow: 0 0 0 4px rgba(201, 164, 106, 0.25); }
.chat.is-open .chat-launch { display: none; }
.chat-panel { position: fixed; right: max(1rem, env(safe-area-inset-right, 0px)); bottom: calc(1rem + env(safe-area-inset-bottom, 0px)); width: min(24rem, calc(100vw - 2rem)); height: min(36rem, calc(100vh - 6rem)); background: var(--plaster); border: 1px solid var(--line); box-shadow: 0 24px 60px -20px rgba(31, 47, 49, 0.45); display: flex; flex-direction: column; }
.chat-panel[hidden] { display: none; }
.chat-head { display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; background: var(--espresso); color: #F7F4EF; }
.chat-title { margin: 0; font-family: var(--serif); font-size: 1.15rem; }
.chat-close { background: none; border: 0; color: #F7F4EF; font-size: 1.6rem; line-height: 1; width: 44px; height: 44px; cursor: pointer; }
.chat-log { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: 0.6rem; }
.chat-msg { max-width: 88%; padding: 0.65rem 0.85rem; font-size: 0.9375rem; line-height: 1.5; border-radius: 2px; overflow-wrap: anywhere; }
.chat-bot { background: #FFFFFF; border: 1px solid var(--line); align-self: flex-start; }
.chat-user { background: var(--espresso); color: #F7F4EF; align-self: flex-end; }
.chat-msg a { color: var(--brass); }
.chat-typing { color: var(--stone); letter-spacing: 0.2em; }
.chat-note { display: block; margin-top: 0.35rem; font-size: 0.75rem; color: var(--stone); }
.chat-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; padding: 0 1rem 0.75rem; }
.chat-chips[hidden] { display: none; }
.chat-chip { background: transparent; border: 1px solid var(--brass); color: var(--charcoal); border-radius: 999px; padding: 0.45rem 0.8rem; font: 500 0.8125rem var(--sans); cursor: pointer; min-height: 36px; }
.chat-chip:hover { background: var(--brass); color: #FFFFFF; }
.chat-form { display: flex; gap: 0.5rem; padding: 0.75rem 1rem; border-top: 1px solid var(--line); }
.chat-form input { flex: 1; min-width: 0; font: 400 1rem var(--sans); color: var(--charcoal); background: #FFFFFF; border: 1px solid var(--line); border-radius: 2px; padding: 0.65rem 0.75rem; min-height: 44px; }
.chat-form input:focus { outline: none; border-color: var(--charcoal); }
.chat-form .btn { padding: 0.65rem 1rem; }
.chat-foot { margin: 0; padding: 0 1rem 0.75rem; font-size: 0.75rem; color: var(--stone); }
@media (max-width: 600px) {
  .chat-launch { padding: 0.8rem 1rem; }
  .chat-launch-text { font-size: 0.875rem; }
  .chat-panel { right: 0; bottom: 0; width: 100vw; height: 100%; height: 100dvh; border: 0; padding-bottom: env(safe-area-inset-bottom, 0px); padding-top: env(safe-area-inset-top, 0px); }
}
@media print { .chat { display: none; } }

.chat-tucked .chat-launch { opacity: 0; pointer-events: none; transform: translateY(1rem); }
.chat-launch { transition: opacity 0.25s, transform 0.25s; }
@media (max-width: 600px) { .foot-base { padding-bottom: 5.5rem; } }

/* Footer language row: label and links share one baseline */
.foot-langs { align-items: center; }
.foot-langs span, .foot-langs a { display: inline-flex; align-items: center; min-height: 44px; padding: 0; line-height: 1.3; }
.foot-langs span { color: #FFFFFF; letter-spacing: 0.03em; margin-right: 0.25rem; }

/* Language note on English pages */
.lang-note { background: var(--espresso); color: #F3EDE2; padding: 0.75rem var(--gutter); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1.5rem; }
.lang-note[hidden] { display: none; }
.lang-note p { margin: 0; max-width: 70ch; font-size: 0.9375rem; line-height: 1.5; }
.lang-note-actions { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.lang-note-actions a, .lang-note-actions button { font: 600 0.875rem var(--sans); color: #F3EDE2; background: transparent; border: 1px solid #C9A46A; border-radius: 2px; padding: 0.55rem 0.9rem; min-height: 40px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; }
.lang-note-actions a:hover, .lang-note-actions button:hover { background: #C9A46A; color: #1F2F31; }
.lang-note-actions .lang-note-close { border: 0; font-size: 1.4rem; padding: 0 0.5rem; }
.lang-note { position: relative; padding-right: calc(var(--gutter) + 2.5rem); }
.lang-note-actions .lang-note-close { position: absolute; top: 0.35rem; right: calc(var(--gutter) - 0.5rem); width: 44px; height: 44px; justify-content: center; }

/* About the name: a quiet, archival note */
.name-story { max-width: var(--wrap); margin: clamp(4rem, 8vw, 6rem) auto 0; padding: 0 var(--gutter); }
.ns-inner { max-width: 44rem; margin: 0 auto; text-align: center; padding: 3rem 0 0; border-top: 1px solid var(--line); position: relative; }
.ns-year { position: absolute; top: -0.85rem; left: 50%; transform: translateX(-50%); margin: 0; padding: 0 1rem; background: var(--marble); font-family: var(--serif); font-size: 1.1rem; letter-spacing: 0.2em; color: var(--brass); }
.name-story h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin-bottom: 1.5rem; }
.name-story p { margin-left: auto; margin-right: auto; font-family: var(--serif); font-size: 1.12rem; line-height: 1.75; color: #3E4746; }
.name-story p:nth-of-type(4) { font-style: italic; color: var(--charcoal); }
.ns-source { font-family: var(--sans) !important; font-size: 0.8125rem !important; margin-top: 1.5rem; }
.ns-source a { color: var(--stone); }

/* Chat typing feel */
.chat-typing { display: inline-flex; gap: 5px; align-items: center; padding: 0.8rem 0.9rem; letter-spacing: 0; }
.chat-typing .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--stone); opacity: 0.35; animation: chat-dot 1.2s infinite ease-in-out; }
.chat-typing .dot:nth-child(2) { animation-delay: 0.15s; }
.chat-typing .dot:nth-child(3) { animation-delay: 0.3s; }
@keyframes chat-dot { 0%, 60%, 100% { opacity: 0.25; transform: translateY(0); } 30% { opacity: 0.9; transform: translateY(-3px); } }
.chat-msg .caret { display: inline-block; width: 2px; height: 1em; margin-left: 2px; vertical-align: -0.15em; background: var(--brass); animation: chat-caret 0.9s steps(1) infinite; }
@keyframes chat-caret { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .chat-typing .dot, .chat-msg .caret { animation: none; } }

.live-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.live-list li { display: grid; grid-template-columns: 9.5rem 1fr; gap: 0.15rem 1.25rem; padding: 0.8rem 0; border-bottom: 1px solid var(--line); }
.live-date { color: var(--brass); font-weight: 600; font-size: 0.9375rem; grid-row: span 2; }
.live-list a { font-weight: 500; }
.live-venue { color: var(--stone); font-size: 0.875rem; }
@media (max-width: 600px) { .live-list li { grid-template-columns: 1fr; } .live-date { grid-row: auto; } }

/* Facts row: five figures wrap neatly on small phones */
.facts dl { flex-wrap: wrap; row-gap: 1.25rem; }
.facts dt { white-space: nowrap; }
@media (max-width: 600px) { .facts dl { column-gap: 1.4rem; } }

/* =====================================================================
   Hotel-style layout: dark header with a centred logo, a full-screen
   hero slider, centred intro bands, inset rounded images and sliders,
   overlay cards, a dark feature band, a three-card row and a two-column
   contact row. Buttons become pills with small capitals.
   ===================================================================== */
:root { --night: #1E2E30; --radius: 14px; --inset: min(1100px, calc(100% - 2 * var(--gutter))); }

/* Buttons */
.btn-pill { border-radius: 999px; text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.75rem; font-weight: 600; padding: 0.95rem 1.7rem; }
.btn-pill.btn-small { padding: 0.75rem 1.25rem; font-size: 0.7rem; }
.btn-ghost { background: #FFFFFF; color: var(--charcoal); border-color: #FFFFFF; }
.btn-ghost:hover, .btn-ghost:focus-visible { background: var(--brass); border-color: var(--brass); color: #FFFFFF; }
.btn-outline { background: transparent; color: var(--charcoal); border-color: var(--charcoal); }
.btn-outline:hover, .btn-outline:focus-visible { background: var(--charcoal); border-color: var(--charcoal); color: #FFFFFF; }
.ctas { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; }

/* Header: dark band, nav split around the logo */
.top { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1.5rem; background: var(--night); border-bottom: 0; padding: 0.7rem var(--gutter); backdrop-filter: none; }
.top .brand { margin: 0; justify-self: center; }
.top .brand img { height: 44px; }
.top .nav { gap: 1.6rem; }
.top .nav a { color: #D9DFDD; font-size: 0.875rem; letter-spacing: 0.04em; }
.top .nav a:hover { color: #FFFFFF; }
.top-right { display: flex; align-items: center; justify-content: flex-end; gap: 1.4rem; }
.top .btn-pill { background: #FFFFFF; color: var(--night); border-color: #FFFFFF; }
.top .btn-pill:hover { background: var(--brass); border-color: var(--brass); color: #FFFFFF; }
.top .menu summary { color: #F3EDE2; }
.top .menu-icon, .top .menu-icon::before, .top .menu-icon::after { background: #F3EDE2; }
.top .menu[open] .menu-icon { background: transparent; }
@media (max-width: 1100px) { .top .nav { gap: 1.1rem; } .top .nav a { font-size: 0.8125rem; } }
@media (max-width: 900px) {
  .top { grid-template-columns: auto 1fr; }
  .top .brand { justify-self: start; }
  .top .nav { display: none; }
  .top .brand img { height: 36px; }
}
@media (max-width: 600px) {
  .top .btn-small { display: inline-flex; }
  .top .brand img { height: 30px; }
  .top-right { gap: 0.6rem; }
  .menu-label { display: none; }
}

/* Hero slider */
.hero-slider { position: relative; height: clamp(32rem, calc(100svh - 4.5rem), 58rem); overflow: hidden; background: var(--night); color: #FFFFFF; }
.hs-track { position: absolute; inset: 0; }
.hs-slide { position: absolute; inset: 0; margin: 0; opacity: 0; visibility: hidden; transition: opacity 0.9s ease, visibility 0s linear 0.9s; }
.hs-slide.is-active { opacity: 1; visibility: visible; transition: opacity 0.9s ease; }
.hs-slide > img { width: 100%; height: 100%; object-fit: cover; }
.hero-slider .hs-slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20, 30, 31, 0.35) 0%, rgba(20, 30, 31, 0.15) 40%, rgba(20, 30, 31, 0.6) 100%); }
.hs-copy { position: absolute; z-index: 1; left: 50%; bottom: 18%; transform: translateX(-50%); width: min(44rem, calc(100% - 2 * var(--gutter))); text-align: center; }
.hs-copy h1, .hs-copy h2 { color: #FFFFFF; font-size: clamp(2rem, 4.2vw, 3.4rem); margin-bottom: 0.9rem; text-wrap: balance; text-shadow: 0 1px 24px rgba(0, 0, 0, 0.3); }
.hs-copy p { margin: 0 auto 1.6rem; color: rgba(255, 255, 255, 0.92); font-size: 1.05rem; }
.hs-arrow { position: absolute; z-index: 2; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.55); background: rgba(20, 30, 31, 0.25); color: #FFFFFF; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.hs-arrow:hover { background: rgba(255, 255, 255, 0.9); color: var(--night); }
.hs-prev { left: var(--gutter); }
.hs-next { right: var(--gutter); }
.hs-dots { position: absolute; z-index: 2; left: 0; right: 0; bottom: 1.5rem; display: flex; justify-content: center; gap: 0.25rem; }
.hs-dots button { width: 44px; height: 44px; border: 0; background: transparent; cursor: pointer; position: relative; }
.hs-dots button::before { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 2px; transform: translate(-50%, -50%); background: rgba(255, 255, 255, 0.45); }
.hs-dots button[aria-current="true"]::before { background: #FFFFFF; }
@media (max-width: 600px) {
  .hero-slider { height: clamp(30rem, calc(100svh - 4rem), 44rem); }
  .hero-slider .hs-arrow { display: none; }
  .hs-copy { bottom: 4.5rem; }
  .hs-copy p { font-size: 0.975rem; }
}

/* Event banner sits under the hero */
.event-banner { justify-content: center; text-align: center; }

/* Intro band: centred heading, short text, one call to action */
.intro-band { max-width: 48rem; margin: 0 auto; padding: clamp(3.5rem, 7vw, 5.5rem) var(--gutter) 2.5rem; text-align: center; }
.intro-band h2 { margin-bottom: 1rem; text-wrap: balance; }
.intro-band p { margin: 0 auto 1.6rem; color: var(--stone); }
.mini-facts { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem 2.25rem; margin: 0 0 1.8rem; }
.mini-facts div { display: flex; flex-direction: column-reverse; align-items: center; }
.mini-facts dt { font-size: 0.8125rem; color: var(--stone); letter-spacing: 0.03em; white-space: nowrap; }
.mini-facts dd { margin: 0; font-family: var(--serif); font-size: 2rem; line-height: 1.1; color: var(--brass); }

/* Inset image and inset slider */
.inset { width: var(--inset); margin: 0 auto; border-radius: var(--radius); overflow: hidden; position: relative; aspect-ratio: 16 / 9; background: var(--veil); }
.inset > img, .inset .hs-slide > img { width: 100%; height: 100%; object-fit: cover; }
figure.inset { margin-left: auto; margin-right: auto; }
.inset-slider figcaption { position: absolute; left: 1rem; bottom: 1rem; z-index: 1; color: #FFFFFF; font-size: 0.875rem; background: rgba(20, 30, 31, 0.55); padding: 0.35rem 0.75rem; border-radius: 999px; max-width: calc(100% - 7rem); }
.inset-slider .hs-arrow { width: 44px; height: 44px; font-size: 1.4rem; }
.inset-slider .hs-prev { left: 1rem; }
.inset-slider .hs-next { right: 1rem; }
.hs-count { position: absolute; right: 1rem; bottom: 1rem; z-index: 1; margin: 0; color: #FFFFFF; font-size: 0.8125rem; letter-spacing: 0.08em; background: rgba(20, 30, 31, 0.55); padding: 0.35rem 0.75rem; border-radius: 999px; font-variant-numeric: tabular-nums; }
@media (max-width: 600px) { .inset { aspect-ratio: 4 / 3; border-radius: 10px; } .inset-slider figcaption { display: none; } }

/* Overlay card: rounded photo with a text panel over its left side */
.overlay-card { position: relative; width: var(--inset); margin: clamp(3.5rem, 7vw, 5.5rem) auto 0; border-radius: var(--radius); overflow: hidden; color: #FFFFFF; background: var(--night); }
.overlay-card > img { width: 100%; height: 100%; min-height: 34rem; object-fit: cover; position: absolute; inset: 0; }
.overlay-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20, 30, 31, 0.82) 0%, rgba(20, 30, 31, 0.55) 45%, rgba(20, 30, 31, 0.05) 80%); }
.oc-panel { position: relative; z-index: 1; max-width: 34rem; padding: clamp(2.5rem, 5vw, 4rem); min-height: 34rem; display: flex; flex-direction: column; justify-content: center; }
.oc-panel h2 { color: #FFFFFF; margin-bottom: 1rem; }
.oc-panel p { color: rgba(255, 255, 255, 0.9); }
.oc-panel .ctas { justify-content: flex-start; margin-top: 0.75rem; }
.oc-note { font-size: 0.8125rem; color: rgba(255, 255, 255, 0.75) !important; margin-top: 1rem; }
.oc-eyebrow { font-family: var(--serif); letter-spacing: 0.25em; color: #C9A46A !important; margin-bottom: 0.6rem; }
.oc-more summary { cursor: pointer; color: #FFFFFF; font-weight: 600; font-size: 0.875rem; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.6rem 0; min-height: 44px; display: inline-flex; align-items: center; }
.oc-more[open] summary { margin-bottom: 0.5rem; }
.oc-more .ns-source a { color: #E7DCC8; }
.overlay-card:has(.oc-more[open]) > img { filter: brightness(0.6); }
@media (max-width: 760px) {
  .overlay-card > img { position: static; min-height: 0; height: auto; aspect-ratio: 4 / 3; }
  .overlay-card::after { display: none; }
  .oc-panel { min-height: 0; max-width: none; padding: 1.75rem 1.5rem 2rem; }
}

/* Dark feature band */
.dark-band { background: var(--night); color: #DCE3E1; margin-top: clamp(3.5rem, 7vw, 5.5rem); padding-bottom: clamp(3.5rem, 7vw, 5.5rem); }
.dark-band .intro-band h2 { color: #FFFFFF; }
.dark-band .intro-band p { color: #C8D1CE; }
.dark-band + .tour { padding-top: clamp(3.5rem, 7vw, 5.5rem); }

/* Three-card row */
.trio { width: var(--inset); margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem 1.5rem; }
.trio-card { display: grid; align-content: start; gap: 0.6rem; }
.trio-img { display: block; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 5; margin-bottom: 0.6rem; }
.trio-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.trio-card:hover .trio-img img { transform: scale(1.03); }
.trio-card h3 { font-size: 1.4rem; }
.trio-card h3 a { text-decoration: none; }
.trio-card p { color: var(--stone); font-size: 0.9375rem; margin: 0 0 0.5rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.trio-card .btn { justify-self: start; }
@media (max-width: 760px) { .trio { grid-template-columns: minmax(0, 1fr); } .trio-img { aspect-ratio: 4 / 3; } }

/* Two-column contact row */
.duo { width: min(60rem, calc(100% - 2 * var(--gutter))); margin: clamp(3.5rem, 7vw, 5.5rem) auto 0; display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; text-align: center; }
.duo-item { display: grid; justify-items: center; gap: 0.6rem; }
.duo-icon { width: 40px; height: 40px; color: var(--brass); }
.duo-item h2 { font-size: 1.6rem; }
.duo-item p { color: var(--stone); margin: 0 auto 0.6rem; max-width: 26rem; }
@media (max-width: 760px) { .duo { grid-template-columns: 1fr; } }

/* Centred bands for amenities and questions */
.band-center > h2 { text-align: center; }
.band-center .faq { max-width: 50rem; margin: 0 auto; }
.band-more { text-align: center; margin: 2rem auto 0; max-width: none; }
.tour-intro { text-align: center; }
.tour-intro p { margin-left: auto; margin-right: auto; }

/* Free tools: form on the left, live results on the right */
.tool-page h1 { max-width: 24ch; }
.tool { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 2.5rem; align-items: start; margin-bottom: 3.5rem; }
.tool-form fieldset { border: 0; border-top: 1px solid var(--line); padding: 1.25rem 0 0.5rem; margin: 0 0 1rem; }
.tool-form legend { font-family: var(--serif); font-size: 1.35rem; padding: 0 0.5rem 0 0; }
.tf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: 1rem 1.25rem; }
.tf { display: grid; gap: 0.35rem; align-content: start; min-width: 0; }
.tf-label { font-size: 0.875rem; color: var(--stone); }
.tf-input { display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 8px; background: #FFFFFF; overflow: hidden; }
.tf-input:focus-within { border-color: var(--charcoal); }
.tf-affix { display: inline-flex; align-items: center; padding: 0 0.7rem; color: var(--stone); background: var(--plaster); font-size: 0.9375rem; }
.tf input, .tf select { font: 400 1rem var(--sans); color: var(--charcoal); min-height: 44px; min-width: 0; width: 100%; }
.tf-input input { border: 0; padding: 0.55rem 0.7rem; background: transparent; outline: none; }
.tf > select, .party-row .tf input { border: 1px solid var(--line); border-radius: 8px; background: #FFFFFF; padding: 0.55rem 0.7rem; }
.tf-hint { font-size: 0.8125rem; color: var(--stone); }
.tool-note { font-size: 0.8125rem; color: var(--stone); }
.tool-results { position: sticky; top: 6rem; background: var(--night); color: #DCE3E1; border-radius: var(--radius); padding: 1.75rem; display: grid; gap: 0.35rem; }
.tool-results .btn { justify-self: start; margin-top: 0.5rem; }
.tool-results .btn:not(.btn-outline) { background: #FFFFFF; color: var(--night); border-color: #FFFFFF; }
.tool-results .btn:not(.btn-outline):hover { background: var(--brass); border-color: var(--brass); color: #FFFFFF; }
.tool-results .btn-outline { color: #F3EDE2; border-color: rgba(243, 237, 226, 0.6); }
.tool-results .btn-outline:hover { background: #F3EDE2; color: var(--night); }
.tr-eyebrow { margin: 0.75rem 0 0; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.12em; color: #C9A46A; }
.tr-total { margin: 0; font-family: var(--serif); font-size: 2.4rem; line-height: 1.1; color: #FFFFFF; font-variant-numeric: tabular-nums; }
.tr-total-sm { font-size: 1.8rem; }
.tr-per { margin: 0; font-size: 0.9375rem; color: #C8D1CE; }
.tr-bar { height: 8px; border-radius: 99px; background: rgba(255, 255, 255, 0.12); overflow: hidden; margin: 0.4rem 0; }
.tr-bar span { display: block; height: 100%; background: #8C9896; border-radius: 99px; transition: width 0.3s; }
.tr-bar-house span { background: #C9A46A; }
.tr-lines { margin: 0.25rem 0 0.5rem; display: grid; gap: 0.15rem; }
.tr-lines div { display: flex; justify-content: space-between; gap: 1rem; font-size: 0.875rem; }
.tr-lines dt { color: #AEB8B5; }
.tr-lines dd { margin: 0; font-variant-numeric: tabular-nums; }
.tr-verdict { margin: 0.75rem 0 0; color: #FFFFFF; font-size: 1rem; line-height: 1.5; border-top: 1px solid rgba(255, 255, 255, 0.15); padding-top: 0.9rem; }
.tr-warn { color: #F3D6A8; font-size: 0.875rem; }
.tool-copy { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-top: 0.5rem; }
.tool-copy-status { font-size: 0.8125rem; color: #C8D1CE; }
.tool-copy textarea { width: 100%; min-height: 6rem; }
.tool-results .table-wrap { background: transparent; border-color: rgba(255, 255, 255, 0.15); margin: 0.5rem 0; }
.split-table { min-width: 0; color: #DCE3E1; }
.split-table thead th { background: rgba(255, 255, 255, 0.08); color: #FFFFFF; }
.split-table th, .split-table td { border-color: rgba(255, 255, 255, 0.12); }
.split-table tbody th { color: #FFFFFF; }
.split-table td:last-child { color: #FFFFFF; }
.party-list { display: grid; gap: 0.75rem; margin-bottom: 1rem; }
.party-row { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)) auto; gap: 0.6rem; align-items: end; }
.party-remove { width: 44px; height: 44px; border: 1px solid var(--line); background: transparent; border-radius: 50%; font-size: 1.3rem; cursor: pointer; color: var(--stone); }
.party-remove:hover { border-color: var(--charcoal); color: var(--charcoal); }
.tool-prose { max-width: 46rem; }
@media (max-width: 900px) {
  .tool { grid-template-columns: minmax(0, 1fr); }
  .tool-results { position: static; }
}
@media (max-width: 600px) {
  .party-row { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
  .party-row .tf:first-child { grid-column: 1 / -1; }
}
.tool-results .split-table { display: table; }
.tool-results .split-table thead { display: table-header-group; }
.tool-results .split-table tbody { display: table-row-group; }
.tool-results .split-table { width: 100%; min-width: 0; }
.tool-results .table-wrap { overflow-x: auto; border: 1px solid rgba(255, 255, 255, 0.15); }
.tool-results .split-table tr { display: table-row; background: transparent; border: 0; padding: 0; margin: 0; }
.tool-results .split-table th, .tool-results .split-table td { display: table-cell; padding: 0.5rem 0.6rem; }
.tool-results .split-table td::before { content: none; }

/* Long weekends */
.narrow-wide { max-width: 60rem; }
.lw-table { min-width: 34rem; }
.lw-list { display: grid; gap: 0; margin-top: 2.5rem; }
.lw-item { border-top: 1px solid var(--line); padding: 1.75rem 0; scroll-margin-top: 6rem; }
.lw-item h2 { font-size: 1.7rem; margin-bottom: 0.6rem; }
.lw-dates { margin: 0 0 0.25rem; color: var(--brass); font-size: 0.875rem; letter-spacing: 0.04em; }
.lw-cta { margin-top: 0.75rem; }

/* Whitby-to pages */
.dest-eyebrow { color: var(--brass); font-size: 0.875rem; letter-spacing: 0.04em; margin-bottom: 0.4rem; }
.dest-facts { display: flex; flex-wrap: wrap; gap: 1.25rem 3rem; margin: 0 0 1.5rem; padding: 1.25rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.dest-facts div { display: grid; gap: 0.2rem; }
.dest-facts dt { font-size: 0.8125rem; color: var(--stone); letter-spacing: 0.03em; }
.dest-facts dd { margin: 0; font-family: var(--serif); font-size: 2rem; line-height: 1.1; color: var(--charcoal); }
.dest-facts dd span { font-family: var(--sans); font-size: 0.9375rem; color: var(--stone); margin-left: 0.3rem; }
.dest-facts dd.dest-route { font-family: var(--sans); font-size: 1rem; line-height: 1.4; max-width: 28rem; padding-top: 0.4rem; }
.dest-maps { margin-bottom: 2.5rem; }
.dest-tips { padding-left: 1.1rem; color: #3E4746; }
.dest-tips li { padding: 0.25rem 0; }
.dest-near { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 0 2rem; border-top: 1px solid var(--line); }
.dest-near li { display: grid; gap: 0.1rem; padding: 0.8rem 0; border-bottom: 1px solid var(--line); }
.dest-near li span { font-size: 0.875rem; color: var(--stone); }
.dest-table { min-width: 30rem; }
.dest-table th[data-sort] button { font: inherit; font-weight: 600; background: none; border: 0; padding: 0; cursor: pointer; color: inherit; min-height: 32px; }
.dest-table th[aria-sort="ascending"] button::after { content: " \2191"; color: var(--brass); }
.dest-table th[aria-sort="descending"] button::after { content: " \2193"; color: var(--brass); }

@media (max-width: 600px) { .lw-table, .dest-table { min-width: 0; } }
@media (max-width: 900px) { .tour-index { top: calc(env(safe-area-inset-top, 0px) + 4.5rem); } }

/* Text written in the admin console's rich-text editor */
.cms-text img { max-width: 100%; height: auto; border-radius: var(--radius, 12px); }
.cms-text blockquote { border-left: 2px solid var(--brass); margin: 1.5rem 0; padding-left: 1rem; font-style: italic; }
.band > .cms-text { max-width: 44rem; margin: 0 auto; }
