@font-face {
  font-family: "Cormorant FT";
  src: url("/assets/cormorant-garamond-latin-a7e1075e.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+2000-206F, U+20AC, U+2122;
}
@font-face {
  font-family: "Cormorant FT";
  src: url("/assets/cormorant-garamond-latin-ext-978b5ddd.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0100-02BA, U+1E00-1E9F, U+1EF2-1EFF, U+20A0-20AB;
}
@font-face {
  font-family: "Cormorant FT";
  src: url("/assets/cormorant-garamond-cyrillic-8d840d90.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+2116;
}

@font-face {
  font-family: "Noto Sans FT";
  src: url("/assets/noto-sans-latin-ad935206.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+2000-206F, U+20AC, U+2122;
}
@font-face {
  font-family: "Noto Sans FT";
  src: url("/assets/noto-sans-latin-ext-8e96fc91.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0100-02BA, U+1E00-1E9F, U+1EF2-1EFF, U+20A0-20AB;
}
@font-face {
  font-family: "Noto Sans FT";
  src: url("/assets/noto-sans-cyrillic-585bc615.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+2116;
}
@font-face {
  font-family: "Noto Sans Devanagari FT";
  src: url("/assets/noto-sans-devanagari-e31bd91e.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
}
@font-face {
  font-family: "Noto Sans Hebrew FT";
  src: url("/assets/noto-sans-hebrew-5b7ccf62.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
}
@font-face {
  font-family: "Noto Serif Hebrew FT";
  src: url("/assets/noto-serif-hebrew-4cd25775.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
}
@font-face {
  font-family: "Noto Serif Devanagari FT";
  src: url("/assets/noto-serif-devanagari-54dbee71.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
}

:root {
  --ivory: #f5f0e8;
  --ivory-deep: #eae0d2;
  --paper: #fbf8f3;
  --ink: #171714;
  --muted: #656057;
  --gold: #b39052;
  --gold-light: #d8bf8b;
  --pomegranate: #642c35;
  --jade: #173d34;

  --line: color-mix(in srgb, var(--ink) 16%, transparent);
  --serif: "Cormorant FT", "Cormorant Garamond", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --sans: "Noto Sans FT", "Helvetica Neue", Arial, sans-serif;
  --page-pad: clamp(1.25rem, 4vw, 5rem);
  --section-pad: clamp(5rem, 10vw, 10rem);

  --shadow: 0 2rem 5rem rgb(20 19 16 / 0.14);
}

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

html {
  background: var(--ivory);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  scroll-behavior: smooth;
  text-rendering: optimizeLegibility;
}

body { margin: 0; min-width: 320px; overflow-x: hidden; background: var(--ivory); }
body.nav-open { overflow: hidden; }
img { display: block; width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.22em; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; }

h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; letter-spacing: -0.025em; line-height: 0.98; }
h1 { font-size: clamp(3.35rem, 8vw, 8.2rem); }
h2 { font-size: clamp(2.8rem, 5.5vw, 5.5rem); }
h3 { font-size: clamp(1.8rem, 3vw, 2.75rem); }
p { line-height: 1.75; }

.skip-link {
  position: fixed; z-index: 999; inset-block-start: 0.75rem; inset-inline-start: 0.75rem;
  padding: 0.8rem 1rem; background: var(--ink); color: white; transform: translateY(-150%);
}
.skip-link:focus { transform: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.eyebrow {
  margin-bottom: 1.2rem; color: var(--gold-light); font-size: 0.72rem; font-weight: 650;
  letter-spacing: 0.2em; line-height: 1.5; text-transform: uppercase;
}

.button {
  display: inline-flex; min-height: 48px; align-items: center; justify-content: center; padding: 0.85rem 1.4rem;
  border: 1px solid var(--gold); background: var(--gold); color: var(--ink); font-size: 0.75rem;
  font-weight: 700; letter-spacing: 0.1em; text-decoration: none; text-transform: uppercase;
  transition: background 180ms ease, color 180ms ease, transform 180ms ease;
}
.button:hover { background: var(--gold-light); transform: translateY(-1px); }
.button--ghost { background: transparent; color: white; border-color: rgb(255 255 255 / 0.6); }
.button--ghost:hover { background: white; color: var(--ink); }
.button--light { background: var(--paper); border-color: var(--paper); color: var(--jade); }
.button--secondary { background: transparent; color: currentcolor; }
.button--small { min-height: 44px; padding-inline: 1.1rem; }
.button-group { display: flex; flex-wrap: wrap; gap: 0.8rem; }
.text-link { display: inline-block; padding-block: 0.5rem; color: var(--gold); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }

.site-header {
  position: relative; z-index: 100; height: 84px; background: var(--paper); border-bottom: 1px solid var(--line);
}
.site-header__inner { display: flex; width: 100%; height: 100%; align-items: center; gap: clamp(1rem, 2.5vw, 3rem); padding-inline: var(--page-pad); }
.brand { display: grid; flex: 0 0 auto; text-decoration: none; text-align: center; }
.brand__logo { width: auto; height: clamp(3.1rem, 4.2vw, 3.9rem); }
.primary-nav { margin-inline: auto; }
.primary-nav ul { margin: 0; padding: 0; list-style: none; }
.primary-nav > ul { display: flex; align-items: center; gap: clamp(0.55rem, 1.2vw, 1.4rem); }
.primary-nav__item { position: relative; }
.primary-nav__link-row { display: flex; align-items: center; }
.primary-nav a, .header-phone { position: relative; display: flex; min-height: 44px; align-items: center; font-size: 0.69rem; font-weight: 650; letter-spacing: 0.09em; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.primary-nav > ul > li > .primary-nav__link-row > a::after { position: absolute; inset-inline: 0; bottom: 7px; height: 1px; background: var(--gold); content: ""; transform: scaleX(0); transition: transform 180ms ease; }
.primary-nav > ul > li > .primary-nav__link-row > a:hover::after { transform: scaleX(1); }
/* One header item carries the booking CTA. It is addressed by the key its seed gives it, so the
   accent moves to another item by moving the attribute rather than by editing this rule. The
   pomegranate is the same accent the mobile drawer already uses for its tour CTA. */
.primary-nav__item[data-key="header_booking"] > .primary-nav__link-row > a { min-height: 38px; padding-inline: 1.05rem; background: var(--pomegranate); color: var(--paper); }
.primary-nav__item[data-key="header_booking"] > .primary-nav__link-row > a:hover { background: color-mix(in srgb, var(--pomegranate) 86%, white); }
.primary-nav__item[data-key="header_booking"] > .primary-nav__link-row > a::after { content: none; }
.primary-nav__submenu-toggle { display: grid; width: 32px; min-height: 44px; place-content: center; padding: 0; border: 0; background: transparent; color: var(--ink); cursor: pointer; }
.primary-nav__submenu-toggle span { width: 7px; height: 7px; border-inline-end: 1px solid currentcolor; border-block-end: 1px solid currentcolor; transform: translateY(-2px) rotate(45deg); transition: transform 180ms ease; }
.primary-nav__submenu { position: absolute; z-index: 30; inset-block-start: calc(100% + 0.75rem); inset-inline-start: -1rem; display: grid; min-width: 15.5rem; padding: 0.65rem !important; background: var(--paper); border: 1px solid var(--line); box-shadow: var(--shadow); opacity: 0; pointer-events: none; transform: translateY(-0.5rem); visibility: hidden; transition: opacity 160ms ease, transform 160ms ease, visibility 160ms ease; }
.primary-nav__submenu::before { position: absolute; inset: -0.8rem 0 auto; height: 0.8rem; content: ""; }
.primary-nav__submenu a { min-height: 43px; padding-inline: 0.8rem; color: var(--ink); font-size: 0.66rem; }
.primary-nav__submenu a:hover, .primary-nav__submenu a:focus-visible { background: var(--ivory); color: var(--jade); }
.primary-nav__item[data-open] > .primary-nav__link-row .primary-nav__submenu-toggle span { transform: translateY(2px) rotate(225deg); }
.primary-nav__item[data-open] > .primary-nav__submenu { opacity: 1; pointer-events: auto; transform: none; visibility: visible; }
@media (hover: hover) and (min-width: 1361px) {
  .primary-nav__item--has-children:hover > .primary-nav__submenu { opacity: 1; pointer-events: auto; transform: none; visibility: visible; }
}
.primary-nav__mobile-contact { display: none; }
.header-actions { display: flex; align-items: center; gap: 0.8rem; }
.header-phone { padding-inline: 0.85rem; border: 1px solid var(--gold); color: var(--jade); }
.language-switcher { position: relative; }
.language-switcher__button { display: flex; min-height: 44px; align-items: center; gap: 0.45rem; padding: 0 0.5rem; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: 0.7rem; font-weight: 650; }
.language-switcher__flag { width: 22px; height: 16px; flex: 0 0 auto; border: 1px solid rgb(23 61 52 / 0.14); border-radius: 2px; object-fit: cover; box-shadow: 0 1px 2px rgb(0 0 0 / 0.08); }
/* Drawn with borders, like the submenu toggle above. A literal "⌄" is U+2304, which falls outside
   every unicode-range in the @font-face block at the top of this file: it came from whichever
   fallback face the system offered and sat below the line the rest of the button sits on.
   The two borders are physical rather than logical on purpose — a chevron pointing down means
   "opens below", which is the same statement in Hebrew, and logical sides turn it sideways there. */
.language-switcher__caret { width: 6px; height: 6px; flex: 0 0 auto; margin-inline-start: 0.15rem; border-right: 1px solid currentcolor; border-bottom: 1px solid currentcolor; transform: translateY(-2px) rotate(45deg); transition: transform 180ms ease; }
.language-switcher__button[aria-expanded="true"] .language-switcher__caret { transform: translateY(1px) rotate(225deg); }
.language-switcher__menu { position: absolute; inset-block-start: calc(100% + 0.55rem); inset-inline-end: 0; width: 10.5rem; padding: 0.55rem; background: var(--paper); border: 1px solid var(--line); box-shadow: var(--shadow); }
.language-switcher__menu a, .language-switcher__menu span { display: flex; min-height: 44px; align-items: center; gap: 0.65rem; padding: 0 0.75rem; font-size: 0.78rem; text-decoration: none; }
.language-switcher__menu a:hover { background: var(--ivory); }
.language-switcher__menu a[aria-current="page"] { background: var(--ivory); color: var(--jade); font-weight: 700; }
.language-switcher__menu span[aria-disabled] { color: var(--muted); opacity: 0.55; }
.nav-toggle { display: none; width: 48px; height: 48px; place-content: center; gap: 5px; margin-inline-start: auto; border: 0; background: transparent; cursor: pointer; }
.nav-toggle > span:not(.sr-only) { display: block; width: 23px; height: 1px; background: var(--ink); transition: transform 180ms ease; }

.hero { position: relative; display: grid; min-height: min(820px, calc(100svh - 84px)); overflow: hidden; background: var(--ink); color: white; isolation: isolate; }
.hero__veil, .hero__content { grid-area: 1 / 1; }
.hero__media { position: absolute; inset: 0; }
.hero__media picture, .hero__media img, .hero__media video { display: block; width: 100%; height: 100%; }
.hero__media img, .hero__media video { object-fit: cover; object-position: center; }
.hero__veil { z-index: 1; background: linear-gradient(90deg, rgb(13 18 16 / 0.82) 0%, rgb(13 18 16 / 0.5) 52%, rgb(13 18 16 / 0.15) 100%), linear-gradient(0deg, rgb(13 18 16 / 0.45), transparent 45%); }
.hero__content { z-index: 2; width: min(62rem, 88vw); align-self: end; padding: clamp(4rem, 8vw, 8.5rem) var(--page-pad); }
.hero--lead { min-height: min(940px, calc(100svh - 84px)); }
.hero__content--lead { display: grid; width: min(100%, 112rem); grid-template-columns: minmax(0, 1fr) minmax(22rem, 29rem); align-items: end; gap: clamp(2rem, 6vw, 7rem); }
.hero__copy { max-width: 47rem; }
.hero__form { align-self: end; padding: clamp(1.1rem, 2vw, 1.5rem); background: rgb(14 36 32 / 0.92); border: 1px solid rgb(255 255 255 / 0.3); box-shadow: var(--shadow); }
.hero__form .inquiry-form { gap: 0.85rem; padding: 0; background: transparent; }
.hero__form .field-row { gap: 0.75rem; }
.hero__form .field input, .hero__form .field select { min-height: 44px; }
.hero__bullets { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem 1.25rem; max-width: 42rem; padding: 0; margin: 0 0 1.5rem; list-style: none; color: rgb(255 255 255 / 0.88); font-size: 0.83rem; }
.hero__bullets li::before { color: var(--gold-light); content: "✦"; margin-inline-end: 0.55rem; }
.hero h1 { max-width: 12ch; margin-bottom: 1.5rem; text-wrap: balance; }
.hero__summary { max-width: 42rem; margin-bottom: 2rem; color: rgb(255 255 255 / 0.86); font-size: clamp(1rem, 1.5vw, 1.25rem); }
/* The lead hero carries a full offer sentence, not a short display phrase, so it needs a smaller size and a longer measure than the default h1. */
.hero--lead h1 { max-width: none; margin-bottom: 1.1rem; font-size: clamp(2.3rem, 4vw, 4.3rem); }
.hero--lead .hero__summary { margin-bottom: 1.4rem; font-size: clamp(0.95rem, 1.15vw, 1.1rem); }

.trust-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); padding: 1.5rem var(--page-pad); background: var(--paper); border-bottom: 1px solid var(--line); }
.trust-strip > div { display: grid; min-height: 76px; place-content: center; padding: 0.5rem 2rem; text-align: center; }
.trust-strip > div + div { border-inline-start: 1px solid var(--line); }
.trust-strip span { color: var(--jade); font-family: var(--serif); font-size: 1.65rem; }
.trust-strip small { color: var(--muted); font-size: 0.62rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; }

.section { padding: var(--section-pad) var(--page-pad); }
.section--narrow { display: grid; width: min(100%, 64rem); min-height: 36rem; align-content: center; margin-inline: auto; text-align: center; }
.section--ivory { background: var(--ivory); color: var(--ink); }
.section--ink { background: var(--ink); color: white; }
.section--jade { background: var(--jade); color: white; }
.section--pomegranate { background: var(--pomegranate); color: white; }
.section--gold { background: var(--gold); color: var(--ink); }
.section-heading { display: grid; max-width: 76rem; margin: 0 auto clamp(3rem, 6vw, 6rem); text-align: center; }
.section-heading h2 { max-width: 20ch; margin-inline: auto; text-wrap: balance; }
.section-heading > p:last-child { max-width: 45rem; margin: 0 auto; color: var(--muted); }
.section--ink .section-heading > p:last-child, .section--jade .section-heading > p:last-child, .section--pomegranate .section-heading > p:last-child { color: rgb(255 255 255 / 0.7); }
.prose { max-width: 46rem; margin-inline: auto; color: var(--muted); font-size: clamp(1rem, 1.4vw, 1.18rem); }
.section--ink .prose, .section--jade .prose, .section--pomegranate .prose { color: rgb(255 255 255 / 0.72); }

.card-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.event-card { position: relative; grid-column: span 4; display: grid; min-height: 32rem; align-content: end; overflow: hidden; padding: clamp(2rem, 4vw, 4rem); background: var(--ink); color: white; text-decoration: none; isolation: isolate; }
.event-card::after { position: absolute; z-index: -1; inset: 0; background: linear-gradient(0deg, rgb(10 16 14 / 0.93) 0%, rgb(10 16 14 / 0.72) 42%, rgb(10 16 14 / 0.2) 100%); content: ""; }
.event-card__media { position: absolute; z-index: -2; inset: 0; }
.event-card__media picture, .event-card__media img { width: 100%; height: 100%; }
.event-card__media img { object-fit: cover; transition: transform 500ms ease; }
.event-card:hover .event-card__media img { transform: scale(1.04); }
.event-card__number { display: block; margin-bottom: auto; color: var(--gold-light); font-family: var(--serif); font-size: 1.2rem; }
.event-card h3 { margin-bottom: 1.25rem; }
.event-card p { max-width: 29rem; color: rgb(255 255 255 / 0.76); font-size: 0.92rem; }

.image-story { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(22rem, 0.9fr); min-height: min(58rem, 82vh); }
.image-story--image_right .image-story__media { order: 2; }
.image-story__media { min-height: 35rem; overflow: hidden; }
.image-story__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 800ms ease; }
.image-story:hover .image-story__media img { transform: scale(1.02); }
.image-story__copy { display: grid; align-content: center; padding: var(--section-pad) clamp(2.5rem, 7vw, 8rem); }
.image-story__copy h2 { max-width: 10ch; }
.image-story__copy .prose { margin-inline: 0; }

/* Every child is placed by column rather than by source order, so a card with no photograph
   or no capacity line leaves a gap instead of shunting the rest of the row out of alignment. */
.venue-list { width: min(100%, 88rem); margin-inline: auto; border-top: 1px solid var(--line); }
.venue-list__item { display: grid; grid-template-columns: 11rem 3rem minmax(12rem, 0.7fr) 1fr 3rem; min-height: 9rem; align-items: center; gap: clamp(1rem, 2vw, 2rem); padding-block: 1.25rem; border-bottom: 1px solid var(--line); text-decoration: none; }
.venue-list__media { grid-column: 1; overflow: hidden; aspect-ratio: 4 / 3; background: var(--ink); }
.venue-list__media picture, .venue-list__media img { display: block; width: 100%; height: 100%; }
.venue-list__media img { object-fit: cover; transition: transform 500ms ease; }
.venue-list__item:hover .venue-list__media img { transform: scale(1.04); }
.venue-list__index { grid-column: 2; color: var(--gold); font-family: var(--serif); }
.venue-list__item h3 { grid-column: 3; margin: 0; font-size: clamp(1.6rem, 2.6vw, 2.8rem); }
.venue-list__copy { grid-column: 4; display: grid; gap: 0.45rem; }
.venue-list__body { color: var(--muted); }
.venue-list__capacity { color: var(--gold); font-size: 0.62rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; }
.venue-list__item b { grid-column: 5; justify-self: end; color: var(--gold); font-size: 1.5rem; font-weight: 300; transition: transform 180ms ease; }
.venue-list__item:hover b { transform: translateX(5px); }
.venue-list__action { margin: clamp(2rem, 4vw, 3rem) 0 0; text-align: center; }

/* The facts about one room. Figures are set like .trust-strip, the checklist like .amenities. */
.venue-specs { display: grid; gap: clamp(2rem, 4vw, 3rem); }
.venue-specs .section-heading { margin-bottom: 0; }
.venue-specs__stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 1px; padding: 0; margin: 0; background: var(--line); border: 1px solid var(--line); }
.venue-specs__stats > div { display: grid; align-content: center; gap: 0.35rem; min-height: 8rem; padding: clamp(1.25rem, 2.5vw, 2rem); background: var(--paper); text-align: start; }
.venue-specs__stats dt { color: var(--jade); font-family: var(--serif); font-size: clamp(1.9rem, 3vw, 2.6rem); line-height: 1; }
.venue-specs__stats dd { margin: 0; color: var(--muted); font-size: 0.62rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; }
.venue-specs__features { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 0.9rem clamp(1.5rem, 4vw, 3rem); padding: 0; margin: 0; list-style: none; }
.venue-specs__features li { display: grid; grid-template-columns: 12px 1fr; gap: 0.75rem; align-items: baseline; color: var(--muted); font-size: 0.92rem; }
.venue-specs__mark { width: 8px; height: 8px; margin-block-start: 0.35em; background: var(--gold); rotate: 45deg; }
.venue-specs__tour { margin: 0; }
.section--ink .venue-specs__stats > div { background: var(--ink); }
.section--ink .venue-specs__stats dt { color: var(--gold); }

.gallery-grid { display: grid; grid-auto-flow: dense; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 15rem; gap: 0.75rem; max-width: 100rem; margin-inline: auto; }
.gallery-tile { overflow: hidden; padding: 0; border: 0; background: var(--ink); cursor: zoom-in; }
/* A 5-tile unit fills exactly two rows of the 4-column grid, so any multiple of 5 tessellates. */
.gallery-tile:nth-child(5n + 1) { grid-column: span 2; grid-row: span 2; }
.gallery-tile picture, .gallery-tile img { display: block; width: 100%; height: 100%; }
.gallery-tile img { object-fit: cover; opacity: 0.92; transition: opacity 180ms ease, transform 500ms ease; }
.gallery-tile:hover img { opacity: 1; transform: scale(1.025); }
.gallery-dialog { width: min(92vw, 84rem); max-width: none; padding: 0; border: 0; background: transparent; }
.gallery-dialog::backdrop { background: rgb(5 8 7 / 0.92); }
.gallery-dialog img { max-height: 84vh; object-fit: contain; }
.gallery-dialog__close { position: fixed; z-index: 2; inset-block-start: 1.5rem; inset-inline-end: 1.5rem; width: 48px; height: 48px; border: 1px solid rgb(255 255 255 / 0.45); border-radius: 50%; background: rgb(0 0 0 / 0.35); color: white; cursor: pointer; font-size: 2rem; }

.contact-cta { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(3rem, 8vw, 9rem); padding: var(--section-pad) var(--page-pad); }
.contact-cta__copy { align-self: center; }
.contact-cta__copy h2 { max-width: none; font-size: clamp(2.4rem, 3.8vw, 3.9rem); text-wrap: balance; }
.contact-cta__copy > p:not(.eyebrow) { max-width: 38rem; color: rgb(255 255 255 / 0.7); }

.promo-strip { display: grid; min-height: 18rem; place-content: center; padding: clamp(4rem, 9vw, 8rem) var(--page-pad); text-align: center; }
.promo-strip .eyebrow { color: var(--gold); }
.promo-strip h2 { max-width: 20ch; margin: 0; text-wrap: balance; }
.video-banner { position: relative; display: grid; min-height: min(56rem, 80vh); overflow: hidden; color: white; isolation: isolate; }
.video-banner__media, .video-banner__veil, .video-banner__content { grid-area: 1 / 1; }
.video-banner__media img, .video-banner__media video { width: 100%; height: 100%; object-fit: cover; }
.video-banner__veil { z-index: 1; background: linear-gradient(0deg, rgb(9 18 15 / 0.7), rgb(9 18 15 / 0.08) 65%); }
.video-banner__content { z-index: 2; display: grid; align-content: end; justify-items: center; padding: clamp(3rem, 8vw, 7rem) var(--page-pad); text-align: center; }
.video-banner__content h2 { max-width: 13ch; text-wrap: balance; }
.vendors-cta { border-block: 1px solid var(--line); }
.vendor-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; padding: 0; margin: 0; background: var(--line); border: 1px solid var(--line); list-style: none; }
.vendor-steps li { display: grid; align-content: start; gap: 0.6rem; min-height: 15rem; padding: clamp(1.5rem, 3vw, 2.5rem); background: var(--paper); }
.vendor-steps__number { color: var(--gold); font-family: var(--serif); font-size: 1.2rem; }
.vendor-steps h3 { font-size: clamp(1.4rem, 2vw, 1.9rem); }
.vendor-steps p { margin: 0; color: var(--muted); font-size: 0.86rem; }
.vendors-cta__action { margin: 2.5rem 0 0; text-align: center; }

.location { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); gap: clamp(2.5rem, 6vw, 7rem); padding: var(--section-pad) var(--page-pad); background: var(--paper); }
.location__intro address { margin: 1.75rem 0 0.5rem; color: var(--muted); font-size: 0.95rem; font-style: normal; line-height: 1.9; }
.location__intro address strong { color: var(--ink); font-weight: 650; }
.location__facts { display: grid; align-content: center; gap: 0; padding: 0; margin: 0; border-top: 1px solid var(--line); list-style: none; }
.location__facts li { display: grid; gap: 0.4rem; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.location__facts h3 { font-size: clamp(1.3rem, 1.8vw, 1.75rem); }
.location__facts p { margin: 0; color: var(--muted); font-size: 0.88rem; }

.form-section { display: grid; grid-template-columns: 0.75fr 1.25fr; gap: clamp(3rem, 8vw, 10rem); background: var(--paper); }
.form-section__intro h2 { max-width: 10ch; }
.form-section__intro > p:last-child { max-width: 33rem; color: var(--muted); }
.inquiry-form { display: grid; gap: 1.25rem; align-self: start; padding: clamp(1.5rem, 4vw, 3.5rem); background: var(--jade); color: white; }
.contact-cta .inquiry-form { padding: 0; background: transparent; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.field { display: grid; gap: 0.45rem; }
.field label { font-size: 0.68rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; }
.field input, .field select, .field textarea { width: 100%; min-height: 50px; padding: 0.8rem 0.9rem; border: 1px solid rgb(255 255 255 / 0.35); border-radius: 0; background: rgb(255 255 255 / 0.07); color: white; }
.field select option { color: var(--ink); }
.field textarea { resize: vertical; }
.field input::placeholder, .field textarea::placeholder { color: rgb(255 255 255 / 0.55); }
.consent-field { display: grid; grid-template-columns: 24px 1fr; gap: 0.65rem; align-items: start; color: rgb(255 255 255 / 0.68); font-size: 0.7rem; line-height: 1.5; }
.consent-field input { width: 20px; height: 20px; margin: 0; accent-color: var(--gold); }
.consent-field a { color: inherit; text-underline-offset: 0.18em; }
.inquiry-form .button { width: fit-content; cursor: pointer; }
.inquiry-form .button:disabled { cursor: wait; opacity: 0.65; }
.form-note { margin: 0; color: rgb(255 255 255 / 0.62); font-size: 0.7rem; }
.form-errors { padding: 1rem; border: 1px solid #e9a8a8; background: rgb(100 20 20 / 0.38); font-size: 0.78rem; }
.form-errors p, .form-errors ul { margin-bottom: 0.5rem; }
.honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.auth-page { min-height: 78vh; display: grid; place-items: center; padding: clamp(8rem, 15vw, 12rem) var(--page-pad) 5rem; background: var(--paper); }
.auth-card { width: min(100%, 31rem); padding: clamp(2rem, 6vw, 4rem); border: 1px solid var(--line); background: var(--ivory); box-shadow: var(--shadow); }
.auth-card .eyebrow { margin-bottom: 0.8rem; }
.auth-card h1 { margin-bottom: 2rem; font-size: clamp(2.3rem, 7vw, 4rem); }
.auth-form { display: grid; gap: 1.1rem; }
.auth-form .field input { border-color: var(--line); background: white; color: var(--ink); }
.auth-form .button { width: 100%; margin-top: 0.4rem; }
.auth-card__link { display: inline-block; margin-top: 1.4rem; color: var(--jade); font-size: 0.74rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }

.faq-list { display: grid; margin-top: 4rem; border-top: 1px solid var(--line); text-align: start; }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { display: flex; min-height: 74px; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; font-family: var(--serif); font-size: clamp(1.25rem, 2vw, 1.7rem); list-style: none; }
.faq-list summary::after { color: var(--gold); content: "+"; font-family: var(--sans); font-weight: 300; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details > div { padding-block: 0 1.75rem; padding-inline: 0 2rem; color: var(--muted); }

.reviews-section { overflow: hidden; text-align: center; }
.reviews-source-label { display: inline-flex; align-items: center; justify-self: center; gap: 0.55rem; color: var(--ink); letter-spacing: 0.08em; }
.reviews-source-label img { width: 22px; height: 22px; }
.reviews-summary { color: var(--gold) !important; font-size: 0.9rem; letter-spacing: 0.04em; }
.review-carousel { display: grid; grid-auto-columns: calc((100% - 3rem) / 3); grid-auto-flow: column; gap: 1.5rem; overflow-x: auto; padding: 0.25rem 0 1.5rem; scroll-snap-type: inline mandatory; scrollbar-width: thin; text-align: start; }
.review-card { display: grid; height: 31rem; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr) auto auto; scroll-snap-align: start; padding: clamp(1.5rem, 3vw, 2.4rem); background: var(--paper); border: 1px solid var(--line); color: var(--ink); }
.review-card__header { display: flex; min-width: 0; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.review-card__author { display: flex; min-width: 0; align-items: center; gap: 0.85rem; }
.review-card__author > span:last-child { display: grid; min-width: 0; gap: 0.2rem; }
.review-card__author strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-card__author small { color: var(--muted); font-size: 0.68rem; }
.review-avatar { position: relative; display: grid; width: 48px; height: 48px; flex: 0 0 auto; place-items: center; overflow: hidden; border-radius: 50%; background: var(--jade); color: white; font-weight: 700; }
.review-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.google-review-badge { display: inline-flex; min-height: 32px; flex: 0 0 auto; align-items: center; gap: 0.4rem; padding: 0.3rem 0.55rem; border: 1px solid var(--line); border-radius: 999px; background: white; color: #5f6368; font-size: 0.66rem; font-weight: 650; letter-spacing: 0.02em; }
.google-review-badge img { width: 18px; height: 18px; }
.review-stars { margin: 0 0 0.8rem; color: #d39b23; letter-spacing: 0.12em; }
.review-card__scroll { min-height: 0; overflow-y: auto; padding-inline-end: 0.8rem; border-block: 1px solid transparent; overscroll-behavior: contain; scrollbar-color: var(--gold) var(--ivory-deep); scrollbar-gutter: stable; scrollbar-width: thin; touch-action: pan-y; }
.review-card__scroll:focus-visible { border-block-color: var(--gold); outline: 0; }
.review-card__scroll::-webkit-scrollbar { width: 6px; }
.review-card__scroll::-webkit-scrollbar-track { background: var(--ivory-deep); border-radius: 999px; }
.review-card__scroll::-webkit-scrollbar-thumb { background: var(--gold); border-radius: 999px; }
.review-card blockquote { margin: 0 0 1.25rem; color: var(--muted); font-family: var(--serif); font-size: 1.2rem; line-height: 1.5; }
.review-card__footer { display: grid; align-items: end; grid-template-columns: 1fr auto; gap: 0.75rem; }
.review-card__footer .text-link { align-self: end; white-space: nowrap; }
.review-reply { margin: 0.4rem 0 1rem; padding: 0.8rem; background: var(--ivory); font-size: 0.75rem; }
.review-reply summary { cursor: pointer; font-weight: 700; }
.review-reply p { margin: 0.6rem 0 0; }
.review-notice, .review-disclosure, .review-scroll-hint { display: block; color: var(--muted); font-size: 0.68rem; }
.review-scroll-hint { padding-top: 0.55rem; color: var(--gold); font-weight: 700; letter-spacing: 0.05em; }
.review-scroll-hint[hidden] { display: none; }
.carousel-controls { display: flex; justify-content: center; gap: 0.75rem; margin: 1rem 0; }
.carousel-controls button { width: 48px; height: 48px; border: 1px solid var(--gold); border-radius: 50%; background: transparent; color: currentcolor; cursor: pointer; }
.testimonials-feed { background: var(--ivory); }
.review-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.pagination { display: flex; justify-content: center; gap: 0.5rem; margin-top: 3rem; }
.pagination a { display: grid; width: 44px; height: 44px; place-items: center; border: 1px solid var(--line); text-decoration: none; }
.pagination a[aria-current="page"] { background: var(--jade); color: white; }

.directory-hero { position: relative; display: grid; padding: clamp(6rem, 11vw, 10rem) var(--page-pad) clamp(3rem, 6vw, 5rem); }
.directory-hero__content { position: relative; z-index: 2; width: min(100%, 72rem); margin-inline: auto; }
.directory-hero h1 { max-width: 16ch; text-wrap: balance; }
.directory-hero__content > p:last-child { max-width: 46rem; color: var(--muted); }
.directory-hero--image { min-height: min(30rem, 60svh); align-content: end; overflow: hidden; background: var(--ink); color: white; }
.directory-hero--image .directory-hero__media, .directory-hero--image .directory-hero__veil { position: absolute; inset: 0; }
.directory-hero--image picture, .directory-hero--image img { width: 100%; height: 100%; object-fit: cover; }
.directory-hero--image .directory-hero__veil { z-index: 1; background: linear-gradient(0deg, rgb(9 14 12 / 0.92), rgb(9 14 12 / 0.66) 55%, rgb(9 14 12 / 0.55)); }
.directory-hero--image .directory-hero__content > p:last-child { color: rgb(255 255 255 / 0.78); }
.directory-hero--image .eyebrow a { color: inherit; }

.vendor-directory__layout { display: grid; grid-template-columns: minmax(0, 15rem) minmax(0, 1fr); gap: clamp(2rem, 4vw, 4rem); width: min(100%, 96rem); margin-inline: auto; padding: clamp(2.5rem, 5vw, 4rem) var(--page-pad) var(--section-pad); }
/* The directory swaps hero, nav and results inside one Turbo frame; the frame itself is not part
   of the layout it wraps, and it dims the results while the next category is on its way. */
.vendor-directory turbo-frame { display: contents; }
.vendor-directory__results { transition: opacity 160ms ease; }
.vendor-directory turbo-frame[busy] .vendor-directory__results { opacity: 0.45; }
.vendor-nav { position: sticky; top: 2rem; align-self: start; }
.vendor-nav__title { margin-bottom: 1rem; color: var(--gold); font-size: 0.62rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; }
.vendor-nav__list { display: grid; padding: 0; margin: 0; border-top: 1px solid var(--line); list-style: none; }
.vendor-nav__list a { display: flex; min-height: 44px; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.7rem 0; border-bottom: 1px solid var(--line); font-size: 0.86rem; text-decoration: none; }
.vendor-nav__list a:hover { color: var(--jade); }
.vendor-nav__list a[aria-current="page"] { color: var(--jade); font-weight: 650; }
.vendor-nav__list small { color: var(--muted); font-size: 0.68rem; font-variant-numeric: tabular-nums; }
.vendor-nav__compact { display: none; }
.vendor-nav__list--fallback { display: grid !important; }
.vendor-nav__compact label { display: block; margin-bottom: 0.5rem; color: var(--gold); font-size: 0.62rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; }
.vendor-nav__compact select { width: 100%; min-height: 50px; padding: 0.6rem 0.8rem; border: 1px solid var(--line); border-radius: 0; background: var(--paper); color: var(--ink); }
.vendor-results__count { margin-bottom: 1.5rem; color: var(--muted); font-size: 0.72rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; }
.vendor-empty { color: var(--muted); }

.vendor-grid, .featured-vendors__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: clamp(1.25rem, 2vw, 2rem); }
.vendor-card { position: relative; display: grid; grid-template-rows: auto 1fr; min-width: 0; background: var(--paper); border: 1px solid var(--line); transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.vendor-card:hover { border-color: color-mix(in srgb, var(--gold) 55%, transparent); box-shadow: 0 1rem 2.5rem rgb(20 19 16 / 0.08); transform: translateY(-2px); }
.vendor-card:focus-within { border-color: var(--gold); }
.vendor-card__media { display: grid; min-width: 0; aspect-ratio: 12 / 5; place-items: center; overflow: hidden; padding: clamp(1.1rem, 2.2vw, 1.75rem); background: white; border-bottom: 1px solid var(--line); }
.vendor-card__media img { width: auto; max-width: 100%; height: auto; max-height: 100%; object-fit: contain; }
.vendor-logo__initials { color: var(--jade); font-family: var(--serif); font-size: 2.6rem; line-height: 1; }
.vendor-card__body { display: grid; align-content: start; gap: 0.5rem; padding: clamp(1.2rem, 2vw, 1.6rem); }
.vendor-card__body .eyebrow { margin-bottom: 0; color: var(--gold); font-size: 0.6rem; }
.vendor-card__body h2 { margin: 0; font-size: clamp(1.45rem, 1.8vw, 1.85rem); }
.vendor-card__body h2 a { text-decoration: none; }
.vendor-card__body h2 a::after { position: absolute; inset: 0; content: ""; }
.vendor-card__summary { display: -webkit-box; overflow: hidden; margin: 0; -webkit-box-orient: vertical; -webkit-line-clamp: 3; color: var(--muted); font-size: 0.82rem; line-height: 1.65; }
.vendor-card .text-link { padding-block: 0; margin-top: 0.4rem; font-size: 0.66rem; }

.vendor-detail { display: grid; grid-template-columns: minmax(16rem, 0.62fr) minmax(0, 1.38fr); gap: clamp(2.5rem, 6vw, 6rem); align-items: start; width: min(100%, 92rem); margin-inline: auto; padding: clamp(4rem, 8vw, 7rem) var(--page-pad) var(--section-pad); background: var(--paper); }
.vendor-detail__aside { display: grid; min-width: 0; gap: 1.75rem; position: sticky; top: 2rem; }
.vendor-detail__logo { display: grid; min-width: 0; aspect-ratio: 12 / 5; place-items: center; padding: clamp(1.5rem, 3vw, 2.5rem); background: white; border: 1px solid var(--line); }
.vendor-detail__logo img { width: auto; max-width: 100%; height: auto; max-height: 100%; object-fit: contain; }
.vendor-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-bottom: 1.25rem; color: var(--gold); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.vendor-breadcrumb a { text-decoration: none; }
.vendor-breadcrumb a:hover { text-decoration: underline; }
.vendor-detail__content h1 { margin-bottom: 1rem; font-size: clamp(2.6rem, 5vw, 4.6rem); text-wrap: balance; }
.vendor-detail__tagline { margin-bottom: 1.75rem; color: var(--gold); font-family: var(--serif); font-size: clamp(1.4rem, 2vw, 1.8rem); }
.vendor-detail__content .prose { max-width: 46rem; margin-inline: 0; white-space: normal; }
.vendor-contact { display: grid; gap: 0.75rem; justify-items: start; }
.video-consent { margin-top: 2.5rem; aspect-ratio: 16 / 9; max-width: 46rem; background: var(--ink); display: grid; place-items: center; }
.video-consent iframe { width: 100%; height: 100%; border: 0; }

.site-footer { background: #0e2420; color: white; }
.press-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(1.25rem, 4vw, 3.5rem); padding: 1.75rem var(--page-pad); border-bottom: 1px solid rgb(255 255 255 / 0.16); }
.press-strip__label { margin: 0; color: var(--gold-light) !important; font-family: var(--sans); font-size: 0.62rem !important; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; }
.press-strip__logos { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(1.5rem, 4vw, 3.5rem); padding: 0; margin: 0; list-style: none; }
.press-strip__logos a { display: flex; align-items: center; min-height: 44px; opacity: 0.78; transition: opacity 180ms ease; }
.press-strip__logos a:hover { opacity: 1; }
/* The source logos are mixed two-tone cutouts; flattening them to white keeps the row even on the dark footer. */
.press-strip__logos img { width: auto; height: clamp(1.1rem, 1.9vw, 1.6rem); filter: brightness(0) invert(1); }
.site-footer__inner { display: grid; grid-template-columns: 1.3fr repeat(4, 1fr); gap: 3rem; padding: clamp(4rem, 8vw, 8rem) var(--page-pad) 0; }
.site-footer__brand { margin-bottom: 1rem; font-family: var(--serif); font-size: 2rem; text-transform: uppercase; }
.site-footer p, .site-footer address, .site-footer a { color: rgb(255 255 255 / 0.68); font-size: 0.78rem; font-style: normal; line-height: 1.8; }
.site-footer a { display: inline-flex; align-items: center; min-height: 44px; }
.footer-heading { color: var(--gold-light) !important; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase; }
.site-footer nav, .site-footer__socials { display: flex; flex-direction: column; align-items: flex-start; }
.site-footer__bottom { margin: 4rem var(--page-pad) 0; padding: 1.5rem 0 2rem; border-top: 1px solid rgb(255 255 255 / 0.12); color: rgb(255 255 255 / 0.4); font-size: 0.68rem; }

.flash { position: fixed; z-index: 300; top: 96px; left: 50%; max-width: min(90vw, 42rem); padding: 0.9rem 1.2rem; background: var(--jade); box-shadow: var(--shadow); color: white; font-size: 0.78rem; transform: translateX(-50%); }
.flash--alert { background: var(--pomegranate); }

.rtl { font-family: "Noto Sans Hebrew FT", var(--sans); }
.rtl h1, .rtl h2, .rtl h3 { font-family: "Noto Serif Hebrew FT", var(--serif); letter-spacing: 0; }
.rtl .hero__veil { background: linear-gradient(-90deg, rgb(13 18 16 / 0.82), rgb(13 18 16 / 0.45) 55%, rgb(13 18 16 / 0.15)); }
.rtl .package-banner__veil { background: linear-gradient(-90deg, rgb(13 18 16 / 0.88) 0%, rgb(13 18 16 / 0.6) 55%, rgb(13 18 16 / 0.18) 100%), linear-gradient(0deg, rgb(13 18 16 / 0.45), transparent 50%); }
.rtl .quote-banner__veil { background: linear-gradient(-90deg, rgb(13 18 16 / 0.78) 0%, rgb(13 18 16 / 0.55) 45%, rgb(13 18 16 / 0.22) 100%); }
.rtl .venue-list__item:hover b { transform: translateX(-5px); }
/* Postal addresses stay LTR so the street number is not reordered, but keep hugging the RTL column edge. */
.rtl address[dir="ltr"] { text-align: right; }
html[lang="hi"] { font-family: "Noto Sans Devanagari FT", var(--sans); }
html[lang="hi"] h1, html[lang="hi"] h2, html[lang="hi"] h3 { font-family: "Noto Serif Devanagari FT", var(--serif); letter-spacing: 0; line-height: 1.12; }

/* --- Package banner: the lead block on the Sweet 16 and Quinceanera pages --- */
.package-banner { position: relative; display: grid; min-height: min(880px, calc(100svh - 84px)); overflow: hidden; background: var(--ink); color: white; isolation: isolate; }
/* The banner carries a price, a bullet list and two buttons, so the headline is set
   smaller than the standalone hero h1 to leave the rest of the block room to breathe. */
.package-banner h1 { font-size: clamp(2.6rem, 5vw, 4.8rem); }
.package-banner__veil, .package-banner__content { grid-area: 1 / 1; }
.package-banner__media { position: absolute; inset: 0; }
.package-banner__media picture, .package-banner__media img { width: 100%; height: 100%; object-fit: cover; }
.package-banner__veil { z-index: 1; background: linear-gradient(90deg, rgb(13 18 16 / 0.88) 0%, rgb(13 18 16 / 0.6) 55%, rgb(13 18 16 / 0.18) 100%), linear-gradient(0deg, rgb(13 18 16 / 0.45), transparent 50%); }
.package-banner__content { z-index: 2; display: grid; width: min(46rem, 88vw); align-content: center; justify-items: start; gap: 1rem; padding: clamp(3rem, 6vw, 6rem) var(--page-pad); }
.package-banner__content h1 { max-width: 16ch; margin: 0; text-wrap: balance; }
.package-banner__price { display: flex; align-items: baseline; gap: 0.6rem; margin: 0; padding: 0.5rem 1rem 0.6rem; border: 1px solid var(--gold); border-radius: 0.2rem; }
.package-banner__price span { color: var(--gold-light); font-size: 0.62rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; }
.package-banner__price strong { font-family: var(--serif); font-size: clamp(1.9rem, 4vw, 2.8rem); font-weight: 500; line-height: 1; }
.package-banner__summary { max-width: 46ch; margin: 0; color: rgb(255 255 255 / 0.78); }
.package-banner__list { display: grid; margin: 0; padding: 0; gap: 0.5rem; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); list-style: none; width: 100%; }
.package-banner__list li { position: relative; padding-inline-start: 1.4rem; color: rgb(255 255 255 / 0.86); font-size: 0.86rem; }
.package-banner__list li::before { position: absolute; inset-inline-start: 0; color: var(--gold-light); content: "\2726"; }
.package-banner__rating { display: flex; align-items: baseline; gap: 0.7rem; margin: 0; }
.package-banner__rating span[aria-hidden] { color: var(--gold-light); font-family: var(--serif); font-size: 1.5rem; }
.package-banner__rating small { color: rgb(255 255 255 / 0.62); font-size: 0.68rem; letter-spacing: 0.06em; }

/* --- Feature cards: title + copy, with or without a destination --- */
.feature-cards__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.feature-card { position: relative; display: grid; align-content: start; gap: 0.75rem; overflow: hidden; padding: clamp(2rem, 3.5vw, 3.25rem); background: var(--paper); color: inherit; text-decoration: none; isolation: isolate; }
.feature-card h3 { margin: 0; font-size: 1.35rem; }
.feature-card p { margin: 0; color: var(--muted); font-size: 0.9rem; }
.feature-card__number { color: var(--gold); font-family: var(--serif); font-size: 0.95rem; letter-spacing: 0.12em; }
.feature-card__media { display: block; margin-bottom: 0.4rem; aspect-ratio: 4 / 3; overflow: hidden; }
.feature-card__media picture, .feature-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms ease; }
a.feature-card:hover .feature-card__media img { transform: scale(1.04); }
a.feature-card:hover { background: white; }
.section--ink .feature-card, .section--jade .feature-card, .section--pomegranate .feature-card { background: rgb(255 255 255 / 0.05); color: white; }
.section--ink .feature-card p, .section--jade .feature-card p, .section--pomegranate .feature-card p { color: rgb(255 255 255 / 0.72); }
.section--ink a.feature-card:hover, .section--jade a.feature-card:hover, .section--pomegranate a.feature-card:hover { background: rgb(255 255 255 / 0.1); }

/* --- Amenities: a checklist, optionally beside a photograph --- */
.amenities { display: grid; gap: clamp(2.5rem, 6vw, 6rem); }
.amenities__copy { align-self: center; }
.amenities--with-media { grid-template-columns: minmax(0, 1fr) minmax(0, 0.75fr); align-items: stretch; }
.section-heading--start { margin: 0 0 clamp(1.75rem, 3vw, 2.75rem); text-align: start; }
.section-heading--start h2 { margin-inline: 0; }
.section-heading--start > p:last-child { margin-inline: 0; }
.amenities__list { display: grid; margin: 0; padding: 0; gap: 0.9rem 2rem; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); list-style: none; }
.amenities__list li { display: flex; align-items: start; gap: 0.75rem; }
.amenities__list strong { display: block; font-size: 0.95rem; font-weight: 600; }
.amenities__list small { display: block; margin-top: 0.15rem; color: var(--muted); font-size: 0.8rem; }
.amenities__mark { position: relative; width: 1.1rem; height: 1.1rem; flex: none; margin-top: 0.15rem; border: 1px solid var(--gold); border-radius: 50%; }
.amenities__mark::before { position: absolute; inset: 0; display: grid; place-content: center; color: var(--gold); font-size: 0.62rem; content: "\2713"; }
.amenities__media { min-height: 22rem; overflow: hidden; }
.amenities__media picture, .amenities__media img { width: 100%; height: 100%; object-fit: cover; }
.section--ink .amenities__list small, .section--jade .amenities__list small, .section--pomegranate .amenities__list small { color: rgb(255 255 255 / 0.7); }
.section--ink .amenities__mark, .section--jade .amenities__mark, .section--pomegranate .amenities__mark { border-color: var(--gold-light); }
.section--ink .amenities__mark::before, .section--jade .amenities__mark::before, .section--pomegranate .amenities__mark::before { color: var(--gold-light); }

/* --- Timeline: the arc of a wedding day, set typographically --- */
/* The rule is drawn on the list rather than between steps so it never breaks across a wrap,
   and it is inset by half a marker so it starts and ends under the first and last numeral. */
/* One column per step, so the row never wraps and orphans the rule. The partial sets
   --timeline-steps, and stacks the list itself past five. */
.timeline__track { position: relative; display: grid; margin: 0; padding: 0; gap: clamp(2rem, 3vw, 3rem); grid-template-columns: repeat(var(--timeline-steps, 4), minmax(0, 1fr)); list-style: none; }
/* The markers sit at the start of each column, so the rule runs between the first and the
   last marker centre rather than the full width of the track. */
.timeline__track::before { position: absolute; z-index: 0; inset-block-start: 1.05rem; inset-inline: 1.05rem calc(100% / var(--timeline-steps, 4) - 1.05rem); height: 1px; background: var(--gold); content: ""; opacity: 0.35; }
/* Stacking started life as the narrow-screen fallback, but a timeline past five steps uses it
   at every width. On a wide screen a full-bleed single column strands the text against the
   left edge, so the stacked list becomes a centred reading column instead. */
.timeline--stacked .timeline__track { max-width: 52rem; margin-inline: auto; grid-template-columns: 1fr; }
.timeline__step { position: relative; z-index: 1; display: grid; align-content: start; gap: 0.5rem; padding-inline-end: clamp(1rem, 2vw, 2rem); text-align: start; }
.timeline__marker { display: grid; width: 2.1rem; height: 2.1rem; place-content: center; border: 1px solid var(--gold); border-radius: 50%; background: var(--ivory); color: var(--gold); font-family: var(--serif); font-size: 0.9rem; letter-spacing: 0.06em; }
.timeline__when { margin: 0.5rem 0 0; color: var(--gold); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; }
.timeline__step h3 { margin: 0; font-size: clamp(1.3rem, 2vw, 1.75rem); }
.timeline__note { margin: 0; max-width: 30ch; color: var(--muted); font-size: 0.88rem; }
.section--ink .timeline__marker, .section--jade .timeline__marker, .section--pomegranate .timeline__marker { border-color: var(--gold-light); background: transparent; color: var(--gold-light); }
.section--ink .timeline__when, .section--jade .timeline__when, .section--pomegranate .timeline__when { color: var(--gold-light); }
.section--ink .timeline__note, .section--jade .timeline__note, .section--pomegranate .timeline__note { color: rgb(255 255 255 / 0.72); }
.section--ink .timeline__track::before, .section--jade .timeline__track::before, .section--pomegranate .timeline__track::before { background: var(--gold-light); }
.timeline--stacked .timeline__track::before { inset-block: 1.05rem; inset-inline: 1.05rem auto; width: 1px; height: auto; }
.timeline--stacked .timeline__step { padding-inline: 3.25rem 0; }
.timeline--stacked .timeline__marker { position: absolute; inset-inline-start: 0; inset-block-start: 0; }
.timeline--stacked .timeline__when { margin-block-start: 0; }
.timeline--stacked .timeline__note { max-width: 46ch; }

/* --- Quote banner: one review, full bleed, once per page --- */
.quote-banner { position: relative; display: grid; min-height: min(34rem, 70svh); overflow: hidden; background: var(--ink); color: white; isolation: isolate; }
.quote-banner__veil, .quote-banner__content { grid-area: 1 / 1; }
.quote-banner__media { position: absolute; inset: 0; }
.quote-banner__media picture, .quote-banner__media img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.quote-banner__veil { z-index: 1; background: linear-gradient(90deg, rgb(13 18 16 / 0.78) 0%, rgb(13 18 16 / 0.55) 45%, rgb(13 18 16 / 0.22) 100%); }
.quote-banner__content { z-index: 2; display: grid; width: min(58rem, 90vw); align-content: center; justify-items: start; gap: 1.25rem; margin: 0; padding: clamp(4rem, 8vw, 7rem) var(--page-pad); }
.quote-banner blockquote { margin: 0; }
.quote-banner blockquote p { margin: 0; max-width: 22ch; font-family: var(--serif); font-size: clamp(2rem, 4vw, 3.6rem); font-weight: 300; line-height: 1.08; letter-spacing: -0.02em; text-wrap: balance; }
.quote-banner blockquote p::before { content: "\201C"; }
.quote-banner blockquote p::after { content: "\201D"; }
.quote-banner figcaption { color: var(--gold-light); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; }

/* --- Package tiers: what each package contains, side by side --- */
.package-tiers__grid { display: grid; gap: 1px; grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr)); background: var(--line); border: 1px solid var(--line); }
.package-tier { display: grid; align-content: start; gap: 1rem; padding: clamp(2rem, 3.5vw, 3.25rem); background: var(--paper); }
.package-tier h3 { margin: 0; font-size: clamp(1.6rem, 2.4vw, 2.1rem); }
.package-tier__price { margin: 0; padding-block-end: 1rem; border-block-end: 1px solid var(--gold); color: var(--gold); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.package-tier__list { display: grid; margin: 0; padding: 0; gap: 0.7rem; list-style: none; }
.package-tier__list li { display: flex; align-items: start; gap: 0.7rem; font-size: 0.9rem; }
.package-tier__mark { position: relative; width: 1.1rem; height: 1.1rem; flex: none; margin-top: 0.2rem; border: 1px solid var(--gold); border-radius: 50%; }
.package-tier__mark::before { position: absolute; inset: 0; display: grid; place-content: center; color: var(--gold); font-size: 0.62rem; content: "\2713"; }
.package-tier .button { justify-self: start; margin-block-start: 0.5rem; }
.package-tiers__footnote { max-width: 60rem; margin: clamp(1.5rem, 3vw, 2.5rem) auto 0; color: var(--muted); font-size: 0.76rem; font-style: italic; text-align: center; }
.section--ink .package-tier, .section--jade .package-tier, .section--pomegranate .package-tier { background: rgb(255 255 255 / 0.05); color: white; }
.section--ink .package-tier__price, .section--jade .package-tier__price, .section--pomegranate .package-tier__price { border-block-end-color: var(--gold-light); color: var(--gold-light); }
.section--ink .package-tier__mark, .section--jade .package-tier__mark, .section--pomegranate .package-tier__mark { border-color: var(--gold-light); }
.section--ink .package-tier__mark::before, .section--jade .package-tier__mark::before, .section--pomegranate .package-tier__mark::before { color: var(--gold-light); }
.section--ink .package-tiers__footnote, .section--jade .package-tiers__footnote, .section--pomegranate .package-tiers__footnote { color: rgb(255 255 255 / 0.65); }

/* --- Blog: the /blog/ index and a single post --- */
.article-filter { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem 1.75rem; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.article-filter a { display: inline-flex; align-items: center; min-height: 44px; border-bottom: 1px solid transparent; color: var(--muted); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-decoration: none; text-transform: uppercase; }
.article-filter a:hover { color: var(--ink); }
.article-filter a.is-active { border-bottom-color: var(--gold); color: var(--gold); }

.article-grid { display: grid; gap: clamp(2rem, 3.5vw, 3.5rem) clamp(1.5rem, 2.5vw, 2.5rem); grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); }
.article-card { display: grid; align-content: start; gap: 0.7rem; color: inherit; text-decoration: none; }
.article-card__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--ivory-deep); }
.article-card__media picture, .article-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms ease; }
.article-card:hover .article-card__media img { transform: scale(1.04); }
.article-card__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.6rem; font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase; }
.article-card__meta b { color: var(--gold); font-weight: 700; }
.article-card__meta time { color: var(--muted); }
.article-card h3 { margin: 0; font-size: clamp(1.3rem, 1.8vw, 1.6rem); line-height: 1.12; text-wrap: balance; }
.article-card:hover h3 { color: var(--gold); }
/* Excerpts run to 220 characters, which is four or five lines at card width and leaves the
   read links in a row sitting at different heights. Three lines keeps the grid even. */
.article-card p { display: -webkit-box; margin: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; color: var(--muted); font-size: 0.9rem; line-height: 1.65; }
.article-index__empty { margin-top: 2rem; color: var(--muted); text-align: center; }

/* A post is a reading column, so it sets its own measure rather than using the section grid. */
.page--article { background: var(--paper); }
.article__header { width: min(46rem, 100%); margin-inline: auto; padding: clamp(4rem, 8vw, 7rem) var(--page-pad) clamp(2rem, 4vw, 3rem); text-align: center; }
.article__header h1 { margin: 0.75rem 0 0; font-size: clamp(2.4rem, 5vw, 4rem); line-height: 1.04; text-wrap: balance; }
.article__lede { max-width: 38rem; margin: 1.5rem auto 0; color: var(--muted); font-size: clamp(1.05rem, 1.5vw, 1.25rem); }
.article__media { width: min(72rem, 100%); margin: 0 auto clamp(2.5rem, 5vw, 4rem); padding-inline: var(--page-pad); }
.article__media picture, .article__media img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.article__body { padding-inline: var(--page-pad); padding-bottom: clamp(4rem, 8vw, 7rem); color: var(--ink); }
.article__body > :first-child { margin-top: 0; }
.article__body p { margin: 0 0 1.5rem; color: var(--muted); }
.article__body h2 { margin: clamp(2.75rem, 5vw, 4rem) 0 1rem; font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.08; text-wrap: balance; }
.article__body h3 { margin: clamp(2rem, 3.5vw, 2.75rem) 0 0.75rem; font-size: clamp(1.4rem, 2.2vw, 1.8rem); }
/* WordPress wraps most of these headings in <strong>; the serif face carries them already. */
.article__body h2 strong, .article__body h3 strong, .article__body h4 strong { font-weight: inherit; }
.article__body ul, .article__body ol { margin: 0 0 1.5rem; padding-inline-start: 1.4rem; color: var(--muted); }
.article__body li { margin-bottom: 0.6rem; line-height: 1.7; }
.article__body ul { list-style: none; padding-inline-start: 0; }
.article__body ul li { position: relative; padding-inline-start: 1.5rem; }
.article__body ul li::before { position: absolute; inset-inline-start: 0; color: var(--gold); content: "\2726"; }
.article__body strong { color: var(--ink); font-weight: 600; }
.article__body a { color: var(--gold); text-decoration: underline; text-underline-offset: 0.2em; }
.article__body blockquote { margin: clamp(2rem, 4vw, 3rem) 0; padding-inline-start: 1.5rem; border-inline-start: 2px solid var(--gold); font-family: var(--serif); font-size: clamp(1.3rem, 2.2vw, 1.75rem); font-style: normal; line-height: 1.3; }
.article__body blockquote p { color: var(--ink); }

.article-related__all { margin: clamp(2.5rem, 4vw, 3.5rem) 0 0; text-align: center; }

.menu-card-section { display: grid; place-content: center; }
.menu-card { width: min(100%, 46rem); margin-inline: auto; padding: clamp(2.5rem, 5vw, 4.5rem) clamp(1.75rem, 4vw, 4rem); border: 1px solid var(--gold); background: var(--ivory); box-shadow: var(--shadow); color: var(--ink); text-align: center; }
.menu-card .eyebrow { color: var(--gold); }
.menu-card h2 { max-width: none; margin-bottom: 1rem; font-size: clamp(2.1rem, 4vw, 3.2rem); text-wrap: balance; }
.menu-card__lede { max-width: 34rem; margin-inline: auto; color: var(--muted); }
.menu-card__courses { display: grid; margin: clamp(2rem, 4vw, 3rem) 0 0; padding: 0; list-style: none; }
.menu-card__course { padding-block: clamp(1.25rem, 2.5vw, 2rem); border-block-start: 1px solid var(--line); }
.menu-card__course:first-child { border-block-start: 0; }
.menu-card__course-label { margin-bottom: 0.5rem; color: var(--gold); font-size: 0.68rem; letter-spacing: 0.24em; text-transform: uppercase; }
.menu-card__course h3 { margin-bottom: 0.5rem; font-size: clamp(1.35rem, 2.4vw, 1.9rem); }
.menu-card__course p { max-width: 32rem; margin: 0 auto; color: var(--muted); font-size: 0.95rem; }
.menu-card__note { margin: clamp(1.75rem, 3vw, 2.5rem) 0 0; padding-block-start: 1.25rem; border-block-start: 1px solid var(--gold); color: var(--muted); font-size: 0.78rem; font-style: italic; }

@media (max-width: 1360px) {
  :root { --section-pad: clamp(4.5rem, 12vw, 7rem); }
  .header-phone { display: none; }
  .primary-nav > ul { gap: 0.35rem; }
  .primary-nav a { font-size: 0.62rem; }
  .site-header { height: 76px; }
  .site-header__inner { justify-content: space-between; }
  .nav-toggle { display: grid; }
  .header-actions { margin-inline-start: 0; }
  .header-actions > .button { display: none; }
  .primary-nav { position: fixed; inset: 76px 0 0; display: grid; align-content: start; overflow-y: auto; padding: 2rem var(--page-pad) 4rem; background: var(--paper); opacity: 0; pointer-events: none; transform: translateY(-1rem); transition: opacity 180ms ease, transform 180ms ease; }
  .primary-nav > ul { display: grid; gap: 0; }
  .primary-nav li { border-bottom: 1px solid var(--line); }
  .primary-nav__link-row { justify-content: space-between; }
  .primary-nav__link-row > a { flex: 1; }
  .primary-nav__item[data-key="header_booking"] > .primary-nav__link-row > a { min-height: 66px; padding-inline: 0; background: transparent; color: var(--pomegranate); }
  .primary-nav__submenu-toggle { width: 58px; min-height: 66px; }
  .primary-nav__submenu-toggle span { width: 10px; height: 10px; }
  .primary-nav__submenu { position: static; display: none; min-width: 0; padding: 0 0 1rem 1.25rem !important; background: transparent; border: 0; border-inline-start: 1px solid var(--gold); box-shadow: none; opacity: 1; pointer-events: auto; transform: none; visibility: visible; }
  .rtl .primary-nav__submenu { padding: 0 1.25rem 1rem 0 !important; }
  .primary-nav__item[data-open] > .primary-nav__submenu { display: grid; }
  .primary-nav__submenu li { border: 0; }
  .primary-nav__submenu a { min-height: 48px; padding-inline: 0.75rem; font-family: var(--sans); font-size: 0.78rem; font-weight: 650; letter-spacing: 0.03em; text-transform: none; white-space: normal; }
  .primary-nav .primary-nav__mobile-contact { display: block; }
  .primary-nav > ul > li > a, .primary-nav__link-row > a { min-height: 66px; font-family: var(--serif); font-size: 1.7rem; font-weight: 400; letter-spacing: 0; text-transform: none; }
  .primary-nav__mobile-contact a { color: var(--gold); font-family: var(--sans); font-size: 0.85rem; font-weight: 700; letter-spacing: 0.08em; }
  .site-header--open .primary-nav { opacity: 1; pointer-events: auto; transform: none; }
  .site-header--open .nav-toggle > span:first-child { transform: translateY(6px) rotate(45deg); }
  .site-header--open .nav-toggle > span:nth-child(2) { opacity: 0; }
  .site-header--open .nav-toggle > span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .hero, .hero--lead { min-height: min(780px, calc(100svh - 76px)); }
  .hero__content { width: 100%; padding-bottom: 4rem; }
  .hero__content--lead { grid-template-columns: minmax(0, 1fr) minmax(19rem, 25rem); }
  .hero__veil { background: linear-gradient(0deg, rgb(13 18 16 / 0.88), rgb(13 18 16 / 0.18) 75%); }
  .event-card { grid-column: span 6; }
  .image-story, .image-story--image_right { grid-template-columns: 1fr; min-height: auto; }
  .image-story--image_right .image-story__media { order: 0; }
  .image-story__media { height: min(70vw, 38rem); min-height: 0; }
  .image-story__copy { min-height: 34rem; }
  .venue-list__item { grid-template-columns: 9rem 2.5rem minmax(10rem, 0.85fr) 1fr 2.5rem; gap: 1.25rem; }
  .contact-cta, .form-section { grid-template-columns: 1fr; }
  .review-carousel { grid-auto-columns: calc((100% - 1.5rem) / 2); }
  .review-grid { grid-template-columns: 1fr 1fr; }
  .vendor-directory__layout { grid-template-columns: 1fr; gap: 1.75rem; }
  .vendor-nav { position: static; }
  .vendor-nav__title, .vendor-nav__list { display: none; }
  .vendor-nav__compact { display: block; }
  .vendor-detail { grid-template-columns: 1fr; }
  .vendor-detail__aside { position: static; max-width: 26rem; }
  .vendor-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vendor-steps li { min-height: 12rem; }
  .venue-list__item { grid-template-columns: 9rem 1fr 2rem; gap: 0.4rem 1.25rem; }
  .venue-list__media { grid-row: 1 / span 3; aspect-ratio: 1; }
  .venue-list__index { grid-column: 2; grid-row: 1; }
  .venue-list__item h3 { grid-column: 2; grid-row: 2; }
  .venue-list__copy { grid-column: 2; grid-row: 3; }
  .venue-list__item b { grid-column: 3; grid-row: 1 / span 3; }
  .location { grid-template-columns: 1fr; }
  .location__facts { align-content: start; }
  .site-footer__inner { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 1100px) {
  .amenities--with-media { grid-template-columns: 1fr; }
  /* Once the steps stack the connecting rule has to turn with them, or it draws a horizontal
     line across a vertical list. */
  .timeline__track { max-width: none; grid-template-columns: 1fr !important; gap: 2rem; }
  .timeline__track::before { inset-block: 1.05rem; inset-inline: 1.05rem auto; width: 1px; height: auto; }
  .timeline__step { padding-inline-start: 3.25rem; padding-inline-end: 0; }
  .timeline__marker { position: absolute; inset-inline-start: 0; inset-block-start: 0; }
  .timeline__when { margin-block-start: 0; }
  .timeline__note { max-width: none; }
}

@media (max-width: 640px) {
  .package-banner__content { gap: 0.9rem; }
  .package-banner__list { grid-template-columns: 1fr; }
  .feature-cards__grid { grid-template-columns: 1fr; }
  .package-tiers__grid { grid-template-columns: 1fr; }
  .article-grid { grid-template-columns: 1fr; }
  .article-filter { justify-content: flex-start; gap: 0.25rem 1.1rem; }
  .quote-banner blockquote p { max-width: none; }
  .menu-card { padding-inline: 1.5rem; }

  :root { --page-pad: 1.25rem; --section-pad: 4.5rem; }
  h1 { font-size: clamp(3rem, 15vw, 4.6rem); }
  h2 { font-size: clamp(2.55rem, 12vw, 4rem); }
  .brand__logo { height: 2.4rem; }
  .hero { min-height: calc(100svh - 76px); }
  .hero__content { align-self: end; padding-bottom: 3.5rem; }
  .hero__content--lead { grid-template-columns: 1fr; }
  .hero__form { padding: 1.15rem; }
  .hero__bullets { grid-template-columns: 1fr; }
  .hero h1 { max-width: 10ch; }
  .hero--lead h1 { max-width: none; font-size: clamp(2.1rem, 9vw, 2.9rem); }
  .button-group { display: grid; width: 100%; }
  .button-group .button { width: 100%; }
  .trust-strip { grid-template-columns: 1fr; padding-block: 0.75rem; }
  .trust-strip > div { min-height: 72px; }
  .trust-strip > div + div { border-inline-start: 0; border-top: 1px solid var(--line); }
  .section-heading { text-align: start; }
  .section-heading h2, .section-heading > p:last-child { margin-inline: 0; }
  .card-grid { display: grid; grid-template-columns: 1fr; }
  .event-card { grid-column: auto; min-height: 25rem; }
  .image-story__media { height: 26rem; }
  .image-story__copy { min-height: 31rem; padding-inline: var(--page-pad); }
  .venue-list__item { grid-template-columns: 2rem 1fr 1.5rem; gap: 0.5rem 1rem; }
  .venue-list__media { grid-column: 1 / -1; grid-row: 1; aspect-ratio: 16 / 9; }
  .venue-list__index { grid-column: 1; grid-row: 2; }
  .venue-list__item h3 { grid-column: 2 / -1; grid-row: 2; }
  .venue-list__copy { grid-column: 2 / -1; grid-row: 3; }
  .venue-list__body { font-size: 0.85rem; }
  .venue-list__item b { grid-column: 3; grid-row: 3; }
  .venue-specs__stats { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: 1fr 1fr; grid-auto-rows: 13rem; }
  .gallery-tile:nth-child(5n + 1) { grid-column: span 2; grid-row: span 2; }
  .vendor-steps { grid-template-columns: 1fr; }
  .vendor-steps li { min-height: 0; }
  .location__facts li { padding-block: 1.2rem; }
  .field-row { grid-template-columns: 1fr; }
  .contact-cta { gap: 2.5rem; }
  .review-carousel { grid-auto-columns: 88%; }
  .review-card { height: 30rem; }
  .review-card__footer { grid-template-columns: 1fr; }
  .review-card__footer .text-link { justify-self: start; }
  .review-grid { grid-template-columns: 1fr; }
  /* Scoped to the form pages it was written for. Left unscoped it also pulled the hero form on the
     home page out of its own panel, so the fields crossed the panel's edge. */
  .form-section .inquiry-form { margin-inline: calc(var(--page-pad) * -1); padding: 1.25rem; }
  .site-footer__inner { grid-template-columns: 1fr; gap: 2rem; }
  .press-strip { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}

/* Booking calendar and date request ------------------------------------------------------- */
/* Logical properties throughout: the calendar renders right-to-left on the Hebrew site, where
   the weekday columns and the month arrows have to flip with it.

   The section is deliberately narrower and shorter than the editorial sections around it. Those
   are made to be read from across the room; this one is a form, and a form the width of a hero
   reads as a chore. */
.booking-section { padding-block: clamp(3rem, 6vw, 5.5rem); background: var(--paper); }
.booking-section__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 4vw, 3.5rem); align-items: start; width: min(100%, 58rem); margin-inline: auto; }
.booking-section h1, .booking-section h2 { font-size: clamp(1.8rem, 3vw, 2.5rem); }
.booking-section__intro { max-width: 34rem; margin-bottom: 0; color: var(--muted); font-size: 0.92rem; }
.booking-section__form { align-self: stretch; gap: 0.9rem; padding: clamp(1.25rem, 2.5vw, 2rem); }
.booking-section__form .field input, .booking-section__form .field select, .booking-section__form .field textarea { min-height: 44px; padding: 0.55rem 0.75rem; font-size: 0.9rem; }
.booking-section__form .field select { padding-inline-end: 1.6rem; font-size: 0.82rem; }
.booking-section__form .field label { font-size: 0.62rem; }
.booking-section__paused { display: grid; justify-items: center; gap: 1rem; width: min(100%, 44rem); margin-inline: auto; text-align: center; }
.booking-section__selection { display: grid; gap: 0.2rem; margin: 0; padding-bottom: 0.45rem; border-bottom: 1px solid rgb(255 255 255 / 0.2); }
.booking-section__selection-label { color: rgb(255 255 255 / 0.62); font-size: 0.6rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; }
.booking-section__selection strong { font-family: var(--serif); font-size: 1.25rem; font-weight: 500; }

/* The switch between asking for a celebration date and asking for a day to visit. Two links
   rather than a scripted tab strip: the two requests differ in their calendar, their wording and
   their fields, and a link is the one control that still works with scripting off. */
.booking-switch { display: flex; justify-content: center; gap: clamp(1rem, 3vw, 2rem); width: min(100%, 58rem); margin: 0 auto clamp(1.5rem, 3vw, 2.25rem); }
.booking-switch__option { padding-bottom: 0.35rem; border-bottom: 1px solid transparent; color: var(--muted); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.12em; text-decoration: none; text-transform: uppercase; }
.booking-switch__option:hover { color: var(--ink); }
.booking-switch__option.is-active { border-bottom-color: var(--gold); color: var(--ink); }

.booking-calendar { display: block; width: min(100%, 22rem); margin-top: clamp(1.25rem, 2.5vw, 2rem); }
.booking-calendar__head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.9rem; }
.booking-calendar__month { margin: 0; font-family: var(--serif); font-size: 1.25rem; font-weight: 500; }
.booking-calendar__nav { display: grid; width: 36px; height: 36px; place-content: center; border: 1px solid var(--line); color: var(--ink); font-size: 0.85rem; text-decoration: none; }
.booking-calendar__nav:hover { border-color: var(--gold); color: var(--gold); }
.booking-calendar__nav--muted { border-color: color-mix(in srgb, var(--ink) 8%, transparent); color: color-mix(in srgb, var(--ink) 22%, transparent); }
.booking-calendar__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.2rem; }
.booking-calendar__weekday { padding-bottom: 0.3rem; color: var(--muted); font-size: 0.6rem; font-weight: 700; letter-spacing: 0.06em; text-align: center; text-decoration: none; text-transform: uppercase; }

.booking-day { position: relative; display: grid; aspect-ratio: 1; place-content: center; border: 1px solid transparent; color: var(--ink); font-size: 0.85rem; }
.booking-day--empty { border: 0; }
.booking-day__number { font-variant-numeric: tabular-nums; }

/* The four states are told apart by different means, not by four shades of the same beige:
   available is plain white, taken carries colour, closed carries texture, and past is simply
   absent. That survives a low-contrast screen and a colour-blind reader alike. */
.booking-day--open { border-color: var(--line); background: white; cursor: pointer; }
.booking-day--open:hover { border-color: var(--gold); }
/* The radio stays in the accessibility tree and keeps keyboard control of the grid; only its
   default rendering is replaced by the cell around it. */
.booking-day--open input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.booking-day--open:has(input:checked) { border-color: var(--jade); background: var(--jade); color: white; }
.booking-day--open:has(input:focus-visible) { outline: 2px solid var(--gold); outline-offset: 2px; }
.booking-day--booked { border-color: color-mix(in srgb, var(--pomegranate) 45%, transparent); background: color-mix(in srgb, var(--pomegranate) 22%, white); color: var(--pomegranate); font-weight: 600; text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--pomegranate) 70%, transparent); }
.booking-day--closed { border-color: color-mix(in srgb, var(--ink) 22%, transparent); background: repeating-linear-gradient(135deg, var(--ivory-deep), var(--ivory-deep) 3px, color-mix(in srgb, var(--ink) 26%, var(--ivory-deep)) 3px, color-mix(in srgb, var(--ink) 26%, var(--ivory-deep)) 6px); color: color-mix(in srgb, var(--ink) 88%, transparent); }
.booking-day--lead_time, .booking-day--past { color: color-mix(in srgb, var(--ink) 62%, transparent); }

.booking-calendar__legend { display: flex; flex-wrap: wrap; gap: 0.85rem; margin: 1rem 0 0; padding: 0; color: var(--muted); font-size: 0.65rem; list-style: none; }
.booking-calendar__legend li { display: flex; align-items: center; gap: 0.35rem; }
.booking-legend-swatch { display: block; width: 0.8rem; height: 0.8rem; border: 1px solid var(--line); }
.booking-legend-swatch--open { background: white; }
.booking-legend-swatch--booked { border-color: color-mix(in srgb, var(--pomegranate) 45%, transparent); background: color-mix(in srgb, var(--pomegranate) 22%, white); }
.booking-legend-swatch--closed { border-color: color-mix(in srgb, var(--ink) 22%, transparent); background: repeating-linear-gradient(135deg, var(--ivory-deep), var(--ivory-deep) 3px, color-mix(in srgb, var(--ink) 26%, var(--ivory-deep)) 3px, color-mix(in srgb, var(--ink) 26%, var(--ivory-deep)) 6px); }

@media (max-width: 900px) {
  .booking-section__grid { grid-template-columns: 1fr; width: min(100%, 32rem); }
  .booking-calendar { width: 100%; }
}

/* Booking confirmation modal and the guest's status page ----------------------------------- */
.booking-confirmation__dialog { width: min(92vw, 34rem); padding: clamp(1.5rem, 4vw, 2.5rem); border: 0; background: var(--paper); color: var(--ink); }
.booking-confirmation__dialog::backdrop { background: rgb(5 8 7 / 0.72); }
.booking-confirmation__dialog h2 { margin-bottom: 0.6rem; font-size: clamp(1.7rem, 4vw, 2.3rem); }
.booking-confirmation__dialog > p { color: var(--muted); font-size: 0.92rem; }
.booking-confirmation__link { margin: 1.5rem 0; padding: 1rem; background: white; border: 1px solid var(--line); }
.booking-confirmation__link label { display: block; margin-bottom: 0.45rem; color: var(--muted); font-size: 0.62rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.booking-confirmation__link-row { display: flex; gap: 0.5rem; }
.booking-confirmation__link-row input { flex: 1; min-width: 0; min-height: 44px; padding: 0.5rem 0.7rem; border: 1px solid var(--line); background: var(--ivory); color: var(--ink); font-size: 0.8rem; }
.booking-confirmation__hint { margin: 0.6rem 0 0; color: var(--muted); font-size: 0.72rem; line-height: 1.5; }
.booking-confirmation__actions { display: flex; flex-wrap: wrap; gap: 0.6rem; }

.booking-status { display: grid; gap: 0; }
.booking-status__panel { width: min(100%, 46rem); margin-inline: auto; padding-block: clamp(2.5rem, 5vw, 4rem); }
.booking-status__panel--contact { border-top: 1px solid var(--line); background: var(--paper); }
.booking-status h1 { font-size: clamp(2rem, 4.5vw, 3.2rem); }
.booking-status h2 { font-size: clamp(1.5rem, 3vw, 2rem); }
.booking-status__lead { max-width: 42rem; color: var(--muted); }
/* The path a request travels: dots on a line rather than a progress bar with a percentage. A
   booking moves when a person decides it does, and a bar implies a clock that is not running. */
.booking-steps { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; margin: clamp(1.5rem, 3vw, 2.5rem) 0 0; padding: 0; list-style: none; }
.booking-steps__step { position: relative; display: grid; justify-items: center; gap: 0.55rem; color: var(--muted); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-align: center; text-transform: uppercase; }
.booking-steps__step::before { position: absolute; inset-inline-start: -50%; top: 0.34rem; width: 100%; height: 1px; background: var(--line); content: ""; }
.booking-steps__step:first-child::before { content: none; }
.booking-steps__dot { position: relative; z-index: 1; width: 0.7rem; height: 0.7rem; border: 1px solid var(--line); border-radius: 50%; background: var(--paper); }
.booking-steps__step--done, .booking-steps__step--current { color: var(--ink); }
.booking-steps__step--done::before, .booking-steps__step--current::before { background: var(--jade); }
.booking-steps__step--done .booking-steps__dot { border-color: var(--jade); background: var(--jade); }
.booking-steps__step--current .booking-steps__dot { border-color: var(--gold); background: var(--gold); box-shadow: 0 0 0 3px color-mix(in srgb, var(--gold) 22%, transparent); }

/* Four words abreast need a screen wide enough for the longest of them, and "Праздник состоялся"
   is not that word on a telephone. Narrow screens read the path down the page instead, which also
   spares every language the guesswork of breaking a compound across two lines. */
@media (max-width: 640px) {
  .booking-steps { grid-auto-flow: row; grid-auto-columns: auto; gap: 0.9rem; }
  .booking-steps__step { grid-template-columns: 0.7rem 1fr; align-items: center; justify-items: start; gap: 0.6rem; text-align: start; }
  .booking-steps__step::before { inset-inline-start: 0.34rem; top: -0.9rem; width: 1px; height: calc(0.9rem + 50%); }
}

.booking-status__facts { display: grid; gap: 0; margin: clamp(1.5rem, 3vw, 2.5rem) 0 0; }
.booking-status__facts > div { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: 1rem; padding: 0.85rem 0; border-top: 1px solid var(--line); }
.booking-status__facts dt { color: var(--muted); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
.booking-status__facts dd { margin: 0; font-size: 0.95rem; }
.booking-status__facts dd small { display: block; margin-top: 0.2rem; color: var(--muted); font-size: 0.78rem; }
.booking-status__facts code { font-size: 0.9rem; letter-spacing: 0.04em; }
.booking-status__cancel { margin-top: clamp(1.5rem, 3vw, 2.5rem); }
.booking-status__note { margin-top: clamp(1.5rem, 3vw, 2.5rem); color: var(--muted); font-size: 0.85rem; }

@media (max-width: 620px) {
  .booking-status__facts > div { grid-template-columns: 1fr; gap: 0.2rem; }
  .booking-confirmation__link-row { flex-direction: column; }
}
