@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Montserrat:wght@300;400;500;600;700&display=swap");

/* ============================================================
   Merged stylesheet: base Generic-v2 styles followed by the
   Luxe Harmony theme overlay. The theme rules come second and
   win any conflict via the cascade (same as the original two-file load order).
   ============================================================ */

/* ============================================================
   Generic-v2 — Default styles
   Vanilla CSS, BEM-named. Themes inherit these defaults and
   override what they need. Minimum viable look-and-feel.
   ============================================================ */

/* ─── Tokens ─────────────────────────────────────────────── */
:root {
  --primary:    #1a1a1a;
  --secondary:  #c5a059;
  --accent:     #f7f7f5;
  --accent-2:   #ffffff;
  --text:       #2d2d2d;
  --text-muted: #666;
  --border:     #e5e5e5;

  --container-max: 1200px;
  --section-pad:   5rem;
  --gap:           1.5rem;
  --radius:        4px;

  --font-display: 'Playfair Display', Georgia, serif;
  --font-body:    'Inter', system-ui, -apple-system, sans-serif;
}

/* ─── Reset / Base ───────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--text);
  background: var(--accent-2);
}

img { max-width: 100%; height: auto; display: block; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  margin: 0 0 .75rem;
  line-height: 1.2;
  color: var(--primary);
}
h1 { font-size: clamp(2.25rem, 4vw, 3.5rem); }
h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
h3 { font-size: 1.25rem; }
h4 { font-size: 1rem; }

p { margin: 0 0 1rem; }
a { color: var(--primary); text-decoration: none; }
a:hover { color: var(--secondary); }

ul, ol { margin: 0; padding: 0; list-style: none; }

button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; padding: 0; }

/* ─── Utilities ──────────────────────────────────────────── */
.container { max-width: var(--container-max); margin: 0 auto; padding: 0 1.5rem; }

.skip-link {
  position: absolute; left: -9999px; top: 0; padding: .75rem 1rem;
  background: var(--primary); color: #fff; z-index: 9999;
}
.skip-link:focus { left: 0; }

.btn {
  display: inline-block;
  padding: .85rem 1.75rem;
  font-size: .875rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  text-decoration: none;
  border-radius: var(--radius);
  transition: background .2s, color .2s, border-color .2s;
  cursor: pointer;
  border: 1px solid transparent;
}
.btn--primary   { background: var(--primary);   color: #fff; }
.btn--primary:hover   { background: var(--secondary); color: #fff; }
.btn--secondary { background: transparent; color: var(--primary); border-color: var(--primary); }
.btn--secondary:hover { background: var(--primary); color: #fff; }

.d-none { display: none !important; }

/* ─── Forms ──────────────────────────────────────────────── */
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); margin-bottom: var(--gap); }
.form-row > .form-group--full { grid-column: 1 / -1; }
.form-group label { display: block; text-align: left; font-size: .74rem; font-weight: 600; margin-bottom: .35rem; }
.form-group input, .form-group select, .form-group textarea {
  width: 100%; padding: .75rem; border: 1px solid var(--border);
  border-radius: var(--radius); font: inherit; background: #fff;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  outline: 2px solid var(--secondary); outline-offset: 2px;
}
@media (max-width: 640px) {
  .form-row { grid-template-columns: 1fr; }
}

/* ─── Chrome: announcement, header, footer ──────────────── */
.announcement-bar { background: var(--primary); color: #fff; font-size: .875rem; }
.announcement-bar__inner { display: flex; gap: 1rem; justify-content: center; align-items: center; padding: .5rem 0; flex-wrap: wrap; }
.announcement-bar__text { margin: 0; }
.announcement-bar__link { color: var(--secondary); text-decoration: underline; }

.site-header { position: sticky; top: 0; background: rgba(255,255,255,.95); backdrop-filter: blur(8px); border-bottom: 1px solid var(--border); z-index: 100; }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 1rem 1.5rem; max-width: var(--container-max); margin: 0 auto; }
.site-header__logo { font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; color: var(--primary); }
.site-header__logo img { height: 2.5rem; width: auto; }
.site-header__nav-list { display: flex; gap: 1.5rem; align-items: center; }
.site-header__nav-link { font-size: .875rem; font-weight: 500; text-transform: uppercase; letter-spacing: .05em; }
.site-header__submenu { display: none; position: absolute; background: #fff; border: 1px solid var(--border); padding: .5rem 0; min-width: 180px; }
.site-header__nav-item:hover .site-header__submenu { display: block; }
.site-header__submenu li a { display: block; padding: .5rem 1rem; }
.site-header__toggle { display: none; flex-direction: column; gap: 4px; padding: .5rem; }
.site-header__toggle span { display: block; width: 22px; height: 2px; background: var(--primary); }

/* `top` is set by JS to the header's live bottom edge (see initMobileNav); the 4rem
   here is just a no-JS fallback. overflow-y lets the list scroll when it starts lower. */
.mobile-nav { display: none; position: fixed; inset: 4rem 0 0 0; background: var(--accent-2); padding: 2rem; z-index: 99; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.mobile-nav.is-open { display: block; }
.mobile-nav__list { display: flex; flex-direction: column; gap: 1.25rem; }

/* Real scroll lock (the class was referenced by JS but never defined). */
.overflow-hidden { overflow: hidden; }

/* When the mobile menu is open, pin the banner + header as a solid stack at the top and
   drop the nav directly below them (heights measured by initMobileNav into the vars), so the
   banner/header stay above the nav and the background can't scroll or peek through. */
body.nav-open .announcement-bar { position: fixed; top: 0; left: 0; right: 0; z-index: 102; }
body.nav-open .site-header { position: fixed; top: var(--nav-banner-h, 0); left: 0; right: 0; }
body.nav-open .mobile-nav { top: calc(var(--nav-banner-h, 0) + var(--nav-header-h, 0)); }
.mobile-nav__link { font-size: 1.25rem; font-weight: 500; text-transform: uppercase; }

@media (max-width: 768px) {
  .site-header__nav { display: none; }
  .site-header__toggle { display: flex; }
}

.site-footer { background: var(--primary); color: #fff; padding: 4rem 0 0; margin-top: var(--section-pad); }
.site-footer__inner { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 3rem; padding-bottom: 3rem; }
.site-footer__logo { font-family: var(--font-display); font-size: 1.75rem; font-weight: 700; color: #fff; }
.site-footer__tagline { color: rgba(255,255,255,.7); margin-top: .5rem; max-width: 32ch; }
.site-footer__heading { color: var(--secondary); text-transform: uppercase; font-size: .8rem; letter-spacing: .1em; margin-bottom: 1rem; }
.site-footer__nav a, .site-footer__contact a { color: rgba(255,255,255,.85); display: block; padding: .25rem 0; }
.site-footer__nav a:hover, .site-footer__contact a:hover { color: var(--secondary); }
.site-footer__address { font-style: normal; color: rgba(255,255,255,.85); margin: 0 0 .75rem; }
/* "Get Directions" reads as plain body text (matching the left column), even in
   themes that set footer links to the display font. High specificity to win over
   a theme's `.site-footer__contact a` rule regardless of load order. */
.site-footer__contact a.site-footer__directions { font-family: var(--font-body); font-size: inherit; }
.site-footer__logo-img { max-height: 48px; width: auto; }
.site-footer__socials { display: flex; gap: .75rem; margin-top: 1rem; }
.site-footer__socials a { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; color: rgba(255,255,255,.85); font-size: .7rem; text-transform: uppercase; letter-spacing: .02em; }
.site-footer__socials a:hover { border-color: var(--secondary); color: var(--secondary); }
.site-footer__bottom { border-top: 1px solid rgba(255,255,255,.1); padding: 1.5rem 0; font-size: .875rem; color: rgba(255,255,255,.6); }
.site-footer__bottom-inner { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; align-items: center; justify-content: space-between; }
.site-footer__legal { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.site-footer__legal a { color: rgba(255,255,255,.6); }
.site-footer__legal a:hover { color: var(--secondary); }
@media (max-width: 768px) {
  .site-footer__inner { grid-template-columns: 1fr; gap: 2rem; }
}

/* ─── Shared: section intro patterns ─────────────────────── */
[class*="__preheader"] {
  display: inline-block;
  font-size: .75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .15em;
  color: var(--secondary);
  margin-bottom: .75rem;
}

/* ─── Section: hero ──────────────────────────────────────── */
.section-hero { position: relative; background-size: cover; background-position: center; color: #fff; overflow: hidden; }
.section-hero--home-page  { min-height: 90vh; display: flex; align-items: center; }
.section-hero--inner-page { min-height: 50vh; display: flex; align-items: center; }
/* Background media layers (carousel + video) sit behind the overlay */
.section-hero__carousel, .section-hero__video-wrap, .section-hero > .section-hero__video { position: absolute; inset: 0; z-index: 0; }
.section-hero__slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity 1.2s ease; }
.section-hero__slide.is-active { opacity: 1; }
.section-hero > .section-hero__video { width: 100%; height: 100%; object-fit: cover; border: 0; pointer-events: none; }
.section-hero__video-wrap { overflow: hidden; container-type: size; }
/* A 16:9 iframe can't object-fit; keep it exactly 16:9 and oversize + center so it always
   covers the hero — both max() arms flip at the same container ratio, so the iframe never
   deviates from 16:9 and the player never letterboxes. vh/vw line is the fallback for
   browsers without container units. The 1.15 overscan keeps YouTube's title bar / logo
   overlays cropped outside the hero; max-width/max-height:none guards against any
   global media reset clamping the oversize (which reintroduces letterboxing). */
.section-hero__video-wrap .section-hero__video { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 177.78vh; min-width: 100%; height: 56.25vw; min-height: 100%; width: calc(max(100cqw, 177.78cqh) * 1.15); height: calc(max(56.25cqw, 100cqh) * 1.15); max-width: none; max-height: none; border: 0; pointer-events: none; }
.section-hero__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.45); z-index: 1; }
.section-hero__inner { position: relative; z-index: 2; padding: 6rem 1.5rem; text-align: center; max-width: 900px; margin: 0 auto; }
.section-hero__logo { max-width: 220px; height: auto; margin: 0 auto 1.5rem; }
.section-hero__preheader { color: #fff; }
.section-hero__header { color: #fff; margin-bottom: 1rem; }
.section-hero__subheader { font-size: 1.25rem; opacity: .9; max-width: 60ch; margin: 0 auto 2rem; }
.section-hero__actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.section-hero__actions .btn--secondary { color: #fff; border-color: #fff; }
.section-hero__actions .btn--secondary:hover { background: #fff; color: var(--primary); }

/* ─── Section: intro_text ────────────────────────────────── */
.section-intro-text { padding: var(--section-pad) 0; }
.section-intro-text__inner { max-width: 820px; }
.section-intro-text--centered .section-intro-text__inner,
.section-intro-text--quote    .section-intro-text__inner,
.section-intro-text--with-cite .section-intro-text__inner { margin-inline: auto; text-align: center; }
.section-intro-text__quote { font-family: var(--font-display); font-size: 1.875rem; font-style: italic; line-height: 1.4; margin: 0; }
.section-intro-text__subheader { color: var(--text-muted); margin-top: 1rem; }
.section-intro-text__content { font-size: 1.0625rem; }

/* ─── Section: content_block ─────────────────────────────── */
.section-content-block { padding: var(--section-pad) 0; position: relative; }
.section-content-block__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; }
.section-content-block--no-image .section-content-block__inner,
.section-content-block--solid-color .section-content-block__inner,
.section-content-block--image-bg .section-content-block__inner { grid-template-columns: 1fr; max-width: 800px; margin: 0 auto; text-align: center; }
.section-content-block--image-right .section-content-block__media { order: 2; }
.section-content-block--image-bg { color: #fff; background-size: cover; background-position: center; }
.section-content-block--image-bg .section-content-block__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.55); z-index: 0; }
.section-content-block--image-bg .section-content-block__inner { position: relative; z-index: 1; padding: 6rem 0; }
.section-content-block--image-bg [class*="__header"], .section-content-block--image-bg [class*="__content"] { color: #fff; }
/* Testimonial quote over the dark image-bg overlay: --primary is unreadable, so force white. */
.section-content-block--image-bg .section-content-block__quote,
.section-content-block--image-bg .section-content-block__quote p { color: #fff; }
.section-content-block--solid-color { background: var(--accent); }
.section-content-block__media img { border-radius: var(--radius); }
.section-content-block__media iframe { width: 100%; aspect-ratio: 16 / 9; border: 0; display: block; border-radius: var(--radius); }
.section-content-block__checklist { margin: 1.5rem 0; }
.section-content-block__checklist-item { padding-left: 1.75rem; position: relative; margin-bottom: .5rem; }
.section-content-block__checklist-item::before { content: '✓'; position: absolute; left: 0; color: var(--secondary); font-weight: 700; }
.section-content-block__actions { margin-top: 1.5rem; display: flex; gap: 1rem; flex-wrap: wrap; }
@media (max-width: 768px) {
  .section-content-block__inner { grid-template-columns: 1fr !important; gap: 2rem; }
  .section-content-block--image-right .section-content-block__media { order: 0; }
}

/* ─── Section: feature_grid ──────────────────────────────── */
.section-feature-grid { padding: var(--section-pad) 0; }
.section-feature-grid__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-feature-grid__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-feature-grid__item { padding: 2rem; background: #fff; border-radius: var(--radius); }
.section-feature-grid__icon { display: inline-block; width: 48px; height: 48px; background: var(--secondary); border-radius: 50%; margin-bottom: 1rem; }
.section-feature-grid__item-title { font-size: 1.125rem; }
.section-feature-grid__item-description { color: var(--text-muted); margin: 0; }
@media (max-width: 768px) { .section-feature-grid__list { grid-template-columns: 1fr; } }

/* ─── Section: stats_bar ─────────────────────────────────── */
.section-stats-bar { padding: 3rem 0; background: var(--accent); }
.section-stats-bar__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 2rem; text-align: center; }
.section-stats-bar__value { display: block; font-family: var(--font-display); font-size: 2.5rem; font-weight: 700; color: var(--primary); }
.section-stats-bar__label { display: block; font-size: .875rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .1em; margin-top: .25rem; }

/* ─── Section: card_grid ─────────────────────────────────── */
.section-card-grid { padding: var(--section-pad) 0; }
.section-card-grid__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
/* Flex (not grid) so any count of cards — 1, 2, 3, or 4 — stays centered. */
.section-card-grid__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; }
.section-card-grid__card { flex: 0 1 calc((100% - 4rem) / 3); background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: transform .2s, box-shadow .2s; }
.section-card-grid__card:hover { transform: translateY(-4px); box-shadow: 0 10px 30px rgba(0,0,0,.08); }
.section-card-grid--text-only .section-card-grid__card { padding: 2rem; }
.section-card-grid__media img { width: 100%; aspect-ratio: 3/2; object-fit: cover; }
.section-card-grid__body { padding: 1.5rem; }
.section-card-grid--text-only .section-card-grid__body { padding: 0; }
.section-card-grid__cta { font-size: .875rem; font-weight: 600; color: var(--secondary); }
@media (max-width: 768px) { .section-card-grid__card { flex-basis: 100%; } }

/* ─── Section: process_grid ──────────────────────────────── */
.section-process-grid { padding: var(--section-pad) 0; }
.section-process-grid__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-process-grid__list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; counter-reset: step; }
.section-process-grid__step { padding: 2rem; }
.section-process-grid__number { display: block; font-family: var(--font-display); font-size: 2.5rem; color: var(--secondary); font-weight: 700; margin-bottom: .5rem; }
.section-process-grid__step-title { font-size: 1.125rem; }
@media (max-width: 768px) { .section-process-grid__list { grid-template-columns: 1fr; } }

/* ─── Section: image_display ─────────────────────────────── */
.section-image-display { padding: var(--section-pad) 0; }
.section-image-display__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-image-display__list { display: grid; gap: 1rem; }
.section-image-display--2-col .section-image-display__list { grid-template-columns: repeat(2, 1fr); }
.section-image-display--2x2 .section-image-display__list { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); }
.section-image-display--4-up .section-image-display__list { grid-template-columns: repeat(4, 1fr); }
.section-image-display--logo-grid .section-image-display__list { grid-template-columns: repeat(4, 1fr); align-items: center; }
.section-image-display--logo-grid img { width: auto; max-height: 60px; opacity: .65; transition: opacity .2s; margin: 0 auto; }
.section-image-display--logo-grid img:hover { opacity: 1; }
.section-image-display__item img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--radius); }
.section-image-display--2-col .section-image-display__item img { aspect-ratio: 3/2; }
.section-image-display__caption { font-size: .8rem; color: var(--text-muted); text-align: center; margin: .5rem 0 0; }
@media (max-width: 768px) {
  .section-image-display--2x2 .section-image-display__list,
  .section-image-display--4-up .section-image-display__list,
  .section-image-display--logo-grid .section-image-display__list { grid-template-columns: repeat(2, 1fr); }
  .section-image-display--2-col .section-image-display__list { grid-template-columns: 1fr; }
}
/* full-bleed: a single edge-to-edge image band, no padding/intro/captions */
.section-image-display--full-bleed { padding: 0; }
.section-image-display--full-bleed .section-image-display__inner { max-width: none; padding: 0; }
.section-image-display--full-bleed .section-image-display__list { display: block; gap: 0; }
.section-image-display--full-bleed .section-image-display__item img { aspect-ratio: 16/6; border-radius: 0; }
.section-image-display--full-bleed .section-image-display__caption { display: none; }

/* ─── Section: two_column_text ───────────────────────────── */
.section-two-column-text { padding: var(--section-pad) 0; }
.section-two-column-text__header { text-align: center; margin-bottom: 2.5rem; }
.section-two-column-text__columns { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; }
.section-two-column-text__col { color: var(--text); }
.section-two-column-text__col :first-child { margin-top: 0; }
@media (max-width: 768px) { .section-two-column-text__columns { grid-template-columns: 1fr; gap: 1.5rem; } }

/* ─── Section: image_mosaic ──────────────────────────────── */
.section-image-mosaic { padding: 0; }
.section-image-mosaic__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.section-image-mosaic__tile { position: relative; overflow: hidden; min-height: 0; }
.section-image-mosaic__tile img { width: 100%; height: 100%; object-fit: cover; display: block; aspect-ratio: 3/2; }
/* First image spans two columns/rows; the CTA cell anchors the bottom-left */
.section-image-mosaic__tile--1 { grid-column: span 2; grid-row: span 1; }
.section-image-mosaic__tile--1 img { aspect-ratio: 16/9; }
.section-image-mosaic__cta { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 1.25rem; padding: 3rem; background: var(--primary); color: #fff; }
.section-image-mosaic__cta-header { color: #fff; margin: 0; }
.section-image-mosaic__cta .btn--secondary { color: #fff; border-color: #fff; }
.section-image-mosaic__cta .btn--secondary:hover { background: #fff; color: var(--primary); }
@media (max-width: 768px) {
  .section-image-mosaic__grid { grid-template-columns: repeat(2, 1fr); }
  .section-image-mosaic__tile--1 { grid-column: span 2; }
}

/* ─── Section: raw_content (editor HTML/CSS/JS) ──────────── */
.section-raw-content { padding: var(--section-pad) 0; }
.section-raw-content__inner { margin: 0 auto; text-align: center; }      /* centered in all width modes */
.section-raw-content--normal .section-raw-content__inner { max-width: var(--container-max); padding: 0 1.5rem; }
.section-raw-content--full   .section-raw-content__inner { max-width: 100%; }
/* --custom width comes from the inline `width: N%` + the margin:auto above (centred) */

/* ─── Section: gallery ───────────────────────────────────── */
.section-gallery { padding: var(--section-pad) 0; }
.section-gallery__intro { text-align: center; max-width: 720px; margin: 0 auto 2rem; }
.section-gallery__filters { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; margin-bottom: 2rem; }
.section-gallery__filter { padding: .5rem 1.25rem; font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; border: 1px solid var(--primary); border-radius: var(--radius); background: transparent; color: var(--primary); transition: background .2s, color .2s; }
.section-gallery__filter--active { background: var(--primary); color: #fff; }
.section-gallery__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.section-gallery--masonry .section-gallery__grid { columns: 3; column-gap: 1rem; display: block; }
.section-gallery--masonry .section-gallery__item { break-inside: avoid; margin-bottom: 1rem; }
.section-gallery--preview-strip .section-gallery__grid { display: flex; overflow-x: auto; padding-bottom: 1rem; }
.section-gallery--preview-strip .section-gallery__item { flex: 0 0 360px; }
.section-gallery__item img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: var(--radius); cursor: zoom-in; transition: transform .3s; }
.section-gallery__item img:hover { transform: scale(1.03); }
.section-gallery__trigger { display: block; width: 100%; padding: 0; }
.section-gallery__lightbox { display: none; position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,.95); z-index: 9999; align-items: center; justify-content: center; padding: 1rem; }
.section-gallery__lightbox.is-active { display: flex; }
.section-gallery__lightbox-figure { display: flex; flex-direction: column; align-items: center; gap: 1rem; max-width: min(90vw, 1400px); max-height: 100%; margin: 0; }
.section-gallery__lightbox-figure img { max-height: 80vh; max-width: 100%; object-fit: contain; }
.section-gallery__lightbox-caption { color: #fff; font-size: .875rem; text-align: center; opacity: .9; }
.section-gallery__lightbox-caption:empty { display: none; }
.section-gallery__lightbox-close, .section-gallery__lightbox-prev, .section-gallery__lightbox-next { position: absolute; color: #fff; font-size: 2rem; padding: .5rem 1rem; }
.section-gallery__lightbox-close { top: 1rem; right: 1rem; }
.section-gallery__lightbox-prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.section-gallery__lightbox-next { right: 1rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 768px) { .section-gallery__grid { grid-template-columns: 1fr; } .section-gallery--masonry .section-gallery__grid { columns: 1; } }

/* ─── Section: floor_plans ───────────────────────────────── */
.section-floor-plans { padding: var(--section-pad) 0; }
.section-floor-plans__intro { text-align: center; max-width: 720px; margin: 0 auto 2rem; }
.section-floor-plans__filters { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 2rem; }
.section-floor-plans__filter { padding: .5rem 1.25rem; font-size: .8rem; text-transform: uppercase; border: 1px solid var(--primary); border-radius: var(--radius); background: transparent; color: var(--primary); }
.section-floor-plans__filter--active { background: var(--primary); color: #fff; }
.section-floor-plans__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-floor-plans__plan { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; position: relative; }
.section-floor-plans__plan-media { background: var(--accent); }
.section-floor-plans__plan-media img { width: 100%; aspect-ratio: 4/3; object-fit: contain; padding: 1rem; }
.section-floor-plans__plan-badge { position: absolute; top: 1rem; right: 1rem; background: var(--secondary); color: #fff; padding: .25rem .75rem; font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; border-radius: var(--radius); }
.section-floor-plans__plan-body { padding: 1.5rem; }
.section-floor-plans__plan-stats { display: flex; flex-wrap: wrap; gap: 1rem; font-size: .875rem; color: var(--text-muted); margin: .5rem 0 1rem; }
.section-floor-plans__plan-cta { font-weight: 600; color: var(--secondary); }
@media (max-width: 768px) { .section-floor-plans__list { grid-template-columns: 1fr; } }

/* ─── Section: packages (section-wedding-packages) ───────── */
.section-wedding-packages { padding: var(--section-pad) 0; }
.section-wedding-packages__intro { text-align: center; max-width: 720px; margin: 0 auto 2rem; }
.section-wedding-packages__filters { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 2rem; }
.section-wedding-packages__filter { padding: .5rem 1.25rem; font-size: .8rem; text-transform: uppercase; border: 1px solid var(--primary); border-radius: var(--radius); background: transparent; color: var(--primary); cursor: pointer; }
.section-wedding-packages__filter--active { background: var(--primary); color: #fff; }
/* Flex (not grid) so any count of packages — 1, 2, 3, or 4 — stays centered. */
.section-wedding-packages__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; list-style: none; padding: 0; margin: 0; }
.section-wedding-packages__package { flex: 0 1 calc((100% - 6rem) / 4); background: #fff; border: 1px solid var(--border); border-radius: var(--radius); position: relative; display: flex; flex-direction: column; }
.section-wedding-packages__package-media { background: var(--accent); }
.section-wedding-packages__package-media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.section-wedding-packages__package-badge { position: absolute; top: 1rem; right: 1rem; background: var(--secondary); color: #fff; padding: .25rem .75rem; font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; border-radius: var(--radius); }
.section-wedding-packages__package-body { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; }
.section-wedding-packages__package-title { font-size: 1.25rem; margin: 0 0 .5rem; }
.section-wedding-packages__package-stats { list-style: none; padding: 0; margin: .5rem 0 1.25rem; }
.section-wedding-packages__package-stats li { padding: .4rem 0; border-bottom: 1px solid var(--border); font-size: .875rem; color: var(--text-muted); }
.section-wedding-packages__package-cta { margin-top: auto; font-weight: 600; color: var(--secondary); }
@media (max-width: 768px) { .section-wedding-packages__package { flex-basis: 100%; } }

/* ─── Section: location_map ──────────────────────────────── */
.section-location-map { padding: var(--section-pad) 0; }
.section-location-map__intro { text-align: center; max-width: 720px; margin: 0 auto 2rem; }
.section-location-map__layout { display: grid; grid-template-columns: 1.5fr 1fr; gap: 2rem; }
.section-location-map__map iframe { width: 100%; height: 500px; border: 0; border-radius: var(--radius); }
.section-location-map__address { font-style: normal; margin-bottom: 1.5rem; }
.section-location-map__poi-group + .section-location-map__poi-group { margin-top: 1.5rem; }
.section-location-map__poi-title { font-size: .875rem; text-transform: uppercase; letter-spacing: .1em; color: var(--secondary); }
.section-location-map__poi-list { display: flex; flex-direction: column; gap: .35rem; color: var(--text-muted); font-size: .9rem; }
.section-location-map__preview { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; }
.section-location-map__preview-media img { border-radius: var(--radius); }
@media (max-width: 768px) { .section-location-map__layout, .section-location-map__preview { grid-template-columns: 1fr; } }

/* ─── Section: cta_band ──────────────────────────────────── */
.section-cta-band { padding: var(--section-pad) 0; position: relative; color: #fff; background-size: cover; background-position: center; }
.section-cta-band--bg, .section-cta-band--parallax { background-attachment: scroll; }
.section-cta-band--parallax { background-attachment: fixed; }
.section-cta-band__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.55); }
.section-cta-band__inner { position: relative; text-align: center; max-width: 720px; margin: 0 auto; padding: 4rem 1.5rem; }
.section-cta-band--side { color: var(--text); background: var(--accent); }
.section-cta-band--side .section-cta-band__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; text-align: left; max-width: var(--container-max); align-items: center; padding: 4rem 1.5rem; }
.section-cta-band--side .section-cta-band__media img { border-radius: var(--radius); }
.section-cta-band--light { background: #fff; color: var(--primary); padding: 0; }
.section-cta-band--light .section-cta-band__inner { padding: 4rem 1.5rem; }
.section-cta-band--light .section-cta-band__inline-media { margin-top: 2rem; }
.section-cta-band--light .section-cta-band__inline-media img { border-radius: var(--radius); }
.section-cta-band--dark { background: var(--primary); }
.section-cta-band--dark .section-cta-band__inner { padding: 4rem 1.5rem; }
.section-cta-band__header { color: inherit; }
.section-cta-band__subheader { opacity: .9; max-width: 60ch; margin: 0 auto 2rem; }
.section-cta-band__actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.section-cta-band--side .section-cta-band__actions { justify-content: flex-start; }
.section-cta-band--bg .btn--secondary, .section-cta-band--parallax .btn--secondary, .section-cta-band--dark .btn--secondary { color: #fff; border-color: #fff; }
@media (max-width: 768px) { .section-cta-band--side .section-cta-band__inner { grid-template-columns: 1fr; } }

/* ─── Section: contact_form_and_info ─────────────────────── */
.section-contact-form-and-info { padding: var(--section-pad) 0; }
.section-contact-form-and-info__inner { display: grid; grid-template-columns: 1fr 2fr; gap: 3rem; text-align: left; }
.section-contact-form-and-info__items { display: grid; gap: 1.5rem; margin-top: 2rem; }
.section-contact-form-and-info__item-label { display: block; font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; color: var(--secondary); margin-bottom: .25rem; }
@media (max-width: 768px) { .section-contact-form-and-info__inner { grid-template-columns: 1fr; } }

/* ─── Section: catering_form ─────────────────────────────── */
.section-catering-form { padding: var(--section-pad) 0; }
.section-catering-form__inner { max-width: 800px; margin: 0 auto; }
.section-catering-form__intro { text-align: center; margin-bottom: 2rem; }

/* ─── Section: faq ───────────────────────────────────────── */
.section-faq { padding: var(--section-pad) 0; }
.section-faq__inner { max-width: 800px; margin: 0 auto; }
.section-faq__intro { text-align: center; margin-bottom: 2.5rem; }
.section-faq__list { border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.section-faq__item + .section-faq__item { border-top: 1px solid var(--border); }
.section-faq__trigger { display: flex; width: 100%; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.25rem 0; text-align: left; font-size: 1.125rem; font-weight: 600; color: var(--primary); }
.section-faq__trigger:hover { color: var(--secondary); }
.section-faq__icon { font-size: 1.5rem; transition: transform .2s; flex-shrink: 0; }
.section-faq__trigger[aria-expanded="true"] .section-faq__icon { transform: rotate(45deg); }
.section-faq__panel { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.section-faq__trigger[aria-expanded="true"] + .section-faq__panel { max-height: 1500px; }
.section-faq__answer { padding: 0 0 1.25rem; color: var(--text-muted); }
/* Restore list styling inside rich FAQ answers (global reset strips it) */
.section-faq__answer ul, .section-faq__answer ol { list-style: revert; padding-left: 1.5rem; padding-bottom: 28px; }
.section-faq__answer li { margin-bottom: .4em; }

/* ─── Section: team_grid ─────────────────────────────────── */
.section-team-grid { padding: var(--section-pad) 0; }
.section-team-grid__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-team-grid__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-team-grid__photo img { width: 100%; aspect-ratio: 4/5; object-fit: cover; border-radius: var(--radius); }
.section-team-grid__name { margin-top: 1rem; }
.section-team-grid__position { color: var(--secondary); text-transform: uppercase; font-size: .8rem; letter-spacing: .1em; }
.section-team-grid__bio { color: var(--text-muted); }
.section-team-grid__socials { display: flex; gap: .75rem; margin-top: 1rem; }
.section-team-grid__socials a { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 50%; font-size: .75rem; }
@media (max-width: 768px) { .section-team-grid__list { grid-template-columns: 1fr; } }

/* ─── Section: testimonials_grid ─────────────────────────── */
.section-testimonials-grid { padding: var(--section-pad) 0; background: var(--accent); }
.section-testimonials-grid__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-testimonials-grid__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-testimonials-grid__item { background: #fff; padding: 2rem; border-radius: var(--radius); }
.section-testimonials-grid__rating { color: var(--secondary); font-size: 1rem; letter-spacing: .15em; }
.section-testimonials-grid__quote { font-family: var(--font-display); font-size: 1.125rem; font-style: italic; line-height: 1.5; margin: .75rem 0 1.5rem; }
.section-testimonials-grid__attribution { display: flex; align-items: center; gap: .75rem; }
.section-testimonials-grid__photo { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.section-testimonials-grid__name { font-style: normal; font-weight: 600; }
@media (max-width: 768px) { .section-testimonials-grid__list { grid-template-columns: 1fr; } }
/* Editor-chosen column count (desktop only; mobile stays single-column above). */
@media (min-width: 769px) {
  .section-testimonials-grid--cols-2 .section-testimonials-grid__list { grid-template-columns: repeat(2, 1fr); }
  .section-testimonials-grid--cols-3 .section-testimonials-grid__list { grid-template-columns: repeat(3, 1fr); }
}

/* ─── Section: service_pillar ────────────────────────────── */
.section-service-pillar { padding: var(--section-pad) 0; }
.section-service-pillar__inner { display: grid; grid-template-columns: 1fr 1.2fr; gap: 4rem; align-items: start; }
.section-service-pillar--image-right .section-service-pillar__media { order: 2; }
.section-service-pillar__media img { border-radius: var(--radius); }
.section-service-pillar__lead { font-size: 1.25rem; font-weight: 500; color: var(--primary); margin: 1rem 0; }
.section-service-pillar__sub-heading { font-size: .875rem; text-transform: uppercase; letter-spacing: .1em; color: var(--secondary); margin: 2rem 0 .5rem; }
.section-service-pillar__deliverables-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; }
.section-service-pillar__deliverables-list li { padding-left: 1.5rem; position: relative; }
.section-service-pillar__deliverables-list li::before { content: '—'; position: absolute; left: 0; color: var(--secondary); }
@media (max-width: 768px) { .section-service-pillar__inner { grid-template-columns: 1fr; gap: 2rem; } .section-service-pillar--image-right .section-service-pillar__media { order: 0; } .section-service-pillar__deliverables-list { grid-template-columns: 1fr; } }

/* ─── Section: atmosphere_mosaic ─────────────────────────── */
.section-atmosphere-mosaic { padding: var(--section-pad) 0; }
.section-atmosphere-mosaic__quote-block { text-align: center; max-width: 800px; margin: 0 auto 3rem; }
.section-atmosphere-mosaic__quote { font-family: var(--font-display); font-size: clamp(1.5rem, 3vw, 2.25rem); font-style: italic; line-height: 1.4; margin: 0; color: var(--primary); }
.section-atmosphere-mosaic__cite { display: block; margin-top: 1rem; color: var(--text-muted); font-style: normal; font-size: .9rem; }
.section-atmosphere-mosaic__grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 280px); gap: 1rem; }
.section-atmosphere-mosaic__tile { margin: 0; overflow: hidden; border-radius: var(--radius); }
.section-atmosphere-mosaic__tile img { width: 100%; height: 100%; object-fit: cover; }
.section-atmosphere-mosaic__tile--1 { grid-column: span 2; grid-row: span 2; }
@media (max-width: 768px) { .section-atmosphere-mosaic__grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 200px; } .section-atmosphere-mosaic__tile--1 { grid-column: span 2; grid-row: span 1; } }

/* ─── Section: zoom_parallax ─────────────────────────────── */
.section-zoom-parallax { position: relative; height: 400vh; }
.section-zoom-parallax__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.section-zoom-parallax__layer { position: absolute; inset: 0; margin: 0; overflow: hidden; }
.section-zoom-parallax__layer img { width: 100%; height: 100%; object-fit: cover; }
.section-zoom-parallax__copy { position: relative; z-index: 10; text-align: center; color: #fff; padding: 2rem; }
.section-zoom-parallax__copy::before { content: ''; position: absolute; inset: -2rem; background: rgba(0,0,0,.4); border-radius: var(--radius); z-index: -1; }
.section-zoom-parallax__header { color: #fff; }

/* ─── Section: restaurant_menu ───────────────────────────── */
.section-restaurant-menu { padding: var(--section-pad) 0; }
.section-restaurant-menu__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-restaurant-menu__menu + .section-restaurant-menu__menu { margin-top: 4rem; }
.section-restaurant-menu__menu-title { font-family: var(--font-display); font-size: 2rem; }
.section-restaurant-menu__notification { background: var(--accent); border-left: 3px solid var(--secondary); padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: var(--radius); }
.section-restaurant-menu__notification-header { font-weight: 600; margin: 0 0 .25rem; }
.section-restaurant-menu__notification-body { color: var(--text-muted); }
.section-restaurant-menu__category-title { font-size: .875rem; text-transform: uppercase; letter-spacing: .15em; color: var(--secondary); margin: 2rem 0 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--border); }
.section-restaurant-menu__items { display: grid; gap: 1.5rem; }
.menu-item { display: flex; gap: 1rem; align-items: flex-start; padding: 1rem 0; border-bottom: 1px dashed var(--border); }
.menu-item__media { flex-shrink: 0; }
.menu-item__media img { width: 80px; height: 80px; object-fit: cover; border-radius: var(--radius); }
.menu-item__body { flex: 1; }
.menu-item__title { font-size: 1.0625rem; font-family: var(--font-display); display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: 0 0 .35rem; }
.menu-item__description { color: var(--text-muted); margin: 0; font-size: .9rem; }
.menu-item__price { font-weight: 600; font-family: var(--font-display); color: var(--primary); flex-shrink: 0; }
.dietary-tag { display: inline-block; font-size: .65rem; font-weight: 700; padding: 2px 6px; border-radius: 3px; border: 1px solid currentColor; }
.dietary-tag--v  { color: #4a7c59; }
.dietary-tag--vg { color: #5a8a3c; }
.dietary-tag--gf { color: #8b6355; }
.dietary-tag--df { color: #6b7a8d; }
.favorite-tag { color: var(--secondary); font-size: 1rem; }
.section-restaurant-menu__legend { display: flex; gap: 1.5rem; flex-wrap: wrap; margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--border); font-size: .875rem; }
.section-restaurant-menu__legend li { display: flex; align-items: center; gap: .5rem; }

/* ─── Section: signature_dishes ──────────────────────────── */
.section-signature-dishes { padding: var(--section-pad) 0; }
.section-signature-dishes__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-signature-dishes__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-signature-dishes__card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.section-signature-dishes__media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.section-signature-dishes__body { padding: 1.5rem; }
.section-signature-dishes__title { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin-bottom: .5rem; }
.section-signature-dishes__description { color: var(--text-muted); font-size: .9rem; }
.section-signature-dishes__price { display: inline-block; margin-top: .5rem; font-weight: 600; font-family: var(--font-display); }
@media (max-width: 768px) { .section-signature-dishes__list { grid-template-columns: 1fr; } }

/* ─── Section: specials_by_day ───────────────────────────── */
.section-specials-by-day { padding: var(--section-pad) 0; background: var(--accent); }
.section-specials-by-day__intro { text-align: center; max-width: 720px; margin: 0 auto 3rem; }
.section-specials-by-day__list { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1rem; }
.section-specials-by-day__day { background: #fff; padding: 1.5rem; border-radius: var(--radius); }
.section-specials-by-day__day-name { font-size: .8rem; color: var(--secondary); text-transform: uppercase; letter-spacing: .1em; }
.section-specials-by-day__title { font-size: 1rem; margin: .5rem 0; }
.section-specials-by-day__description { font-size: .85rem; color: var(--text-muted); margin: 0; }
@media (max-width: 1024px) { .section-specials-by-day__list { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .section-specials-by-day__list { grid-template-columns: 1fr; } }

/* ─── Section: posts_listing ─────────────────────────────── */
.section-posts-listing { padding: var(--section-pad) 0; }
.section-posts-listing__intro { text-align: center; max-width: 720px; margin: 0 auto 2rem; }
.section-posts-listing__filters { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 2rem; }
.section-posts-listing__filter { padding: .5rem 1.25rem; font-size: .8rem; text-transform: uppercase; border: 1px solid var(--primary); border-radius: var(--radius); background: transparent; color: var(--primary); }
.section-posts-listing__filter--active { background: var(--primary); color: #fff; }
.section-posts-listing__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-posts-listing__pagination { display: flex; justify-content: center; gap: 1rem; align-items: center; margin-top: 3rem; }
.section-posts-listing__page-btn { padding: .5rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); }
.section-posts-listing__page-btn:disabled { opacity: .4; cursor: not-allowed; }

/* ─── _post_card (shared) ────────────────────────────────── */
.post-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.post-card--featured { display: grid; grid-template-columns: 1.5fr 1fr; margin-bottom: 2rem; gap: 0; }
.post-card__media img { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.post-card__body { padding: 1.5rem; }
.post-card__meta { font-size: .8rem; color: var(--text-muted); }
.post-card__title { font-size: 1.25rem; margin: .5rem 0; }
.post-card__title a { color: var(--primary); }
.post-card__title a:hover { color: var(--secondary); }
.post-card__tag { display: inline-block; font-size: .7rem; padding: .15rem .5rem; background: var(--accent); border-radius: 3px; margin-bottom: .5rem; }
.post-card__metric { display: flex; align-items: baseline; gap: .5rem; }
.post-card__metric strong { font-family: var(--font-display); font-size: 1.5rem; color: var(--secondary); }
.post-card__excerpt { color: var(--text-muted); font-size: .9rem; }
.post-card__link { font-size: .875rem; font-weight: 600; color: var(--secondary); }
@media (max-width: 768px) { .section-posts-listing__list { grid-template-columns: 1fr; } .post-card--featured { grid-template-columns: 1fr; } }

/* ─── Section: related_articles ──────────────────────────── */
.section-related-articles { padding: var(--section-pad) 0; background: var(--accent); }
.section-related-articles__intro { max-width: 720px; margin-bottom: 2rem; }
.section-related-articles__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.section-related-articles__media img { width: 100%; aspect-ratio: 3/2; object-fit: cover; border-radius: var(--radius); }
.section-related-articles__category { display: inline-block; font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; color: var(--secondary); margin: 1rem 0 .5rem; }
.section-related-articles__item-title { font-size: 1.125rem; }
.section-related-articles__item-title a { color: var(--primary); }
.section-related-articles__date { font-size: .8rem; color: var(--text-muted); }
@media (max-width: 768px) { .section-related-articles__list { grid-template-columns: 1fr; } }

/* ─── Page: post (single) ────────────────────────────────── */
.section-post { padding: var(--section-pad) 0; }
.section-post__article { max-width: 760px; margin: 0 auto; padding: 0 1.5rem; }
.section-post__header { margin-bottom: 2rem; }
.section-post__preheader { display: block; font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; color: var(--secondary); margin-bottom: 1rem; }
.section-post__title { margin-bottom: 1rem; }
.section-post__excerpt { font-size: 1.25rem; line-height: 1.5; color: var(--text-muted); margin-bottom: 1.5rem; }
.section-post__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; font-size: .875rem; color: var(--text-muted); }
.section-post__author { display: flex; align-items: center; gap: .5rem; }
.section-post__avatar { width: 2.25rem; height: 2.25rem; border-radius: 50%; object-fit: cover; }
.section-post__date::before, .section-post__reading-time::before { content: "·"; margin-right: 1rem; color: var(--border); }
.section-post__meta > :first-child::before { content: none; }
.section-post__featured { margin: 0 0 2.5rem; }
.section-post__featured img { width: 100%; border-radius: var(--radius); }
.section-post__featured figcaption { font-size: .8rem; color: var(--text-muted); text-align: center; margin-top: .75rem; }
.section-post__content { font-size: 1.05rem; line-height: 1.8; }
.section-post__content > :first-child { margin-top: 0; }
.section-post__content p { margin: 0 0 1.5rem; }
.section-post__content h2 { margin: 2.5rem 0 1rem; }
.section-post__content h3 { margin: 2rem 0 .75rem; font-size: 1.5rem; }
.section-post__content ul, .section-post__content ol { margin: 0 0 1.5rem; padding-left: 1.5rem; }
.section-post__content ul { list-style: disc; }
.section-post__content ol { list-style: decimal; }
.section-post__content li { margin-bottom: .5rem; }
.section-post__content a { color: var(--secondary); text-decoration: underline; }
.section-post__content a:hover { color: var(--primary); }
.section-post__content img { border-radius: var(--radius); margin: 2rem 0; }
.section-post__content blockquote { margin: 2rem 0; padding: .5rem 0 .5rem 1.5rem; border-left: 3px solid var(--secondary); font-style: italic; color: var(--text-muted); }
.section-post__tags { display: flex; flex-wrap: wrap; gap: .5rem; margin: 2.5rem 0; }
.section-post__tag { display: inline-block; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; padding: .25rem .75rem; background: var(--accent); border-radius: 3px; color: var(--text-muted); }
.section-post__nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--border); }
.section-post__nav [rel="next"] { margin-left: auto; }
@media (max-width: 768px) {
  .section-post__nav { flex-direction: column; }
  .section-post__nav [rel="next"] { margin-left: 0; }
  .section-post__excerpt { font-size: 1.125rem; }
}

/* ─── Style guide spacing helpers ────────────────────────── */
.style-guide-marker { background: #fff8e1; padding: 1rem 1.5rem; border-left: 4px solid var(--secondary); margin: 3rem 0 0; font-family: monospace; font-size: .875rem; }
.style-guide-marker code { color: var(--primary); font-weight: 600; }

/* ─── Site pop-up + team-member modal ────────────────────── */
.site-popup, .team-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 1.5rem; }
.site-popup[hidden], .team-modal[hidden] { display: none; }
.site-popup__overlay, .team-modal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.6); cursor: pointer; }
.site-popup__dialog, .team-modal__dialog { position: relative; z-index: 1; background: #fff; border-radius: var(--radius); max-height: 90vh; overflow: auto; box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.site-popup__dialog { width: 500px; max-width: 100%; padding: 2.5rem; text-align: center; }
.team-modal__dialog { width: 800px; max-width: 100%; }
.site-popup__close, .team-modal__close { position: absolute; top: .5rem; right: .9rem; background: none; border: 0; font-size: 1.9rem; line-height: 1; cursor: pointer; color: var(--text); z-index: 2; }
.site-popup__title { margin: 0 0 1rem; }
.site-popup__content { margin-bottom: 1.5rem; color: var(--text-muted); }
.team-modal__body { display: grid; grid-template-columns: 1fr 1.2fr; }
.team-modal__media { margin: 0; }
.team-modal__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.team-modal__info { padding: 2.5rem; }
.team-modal__name { margin: 0 0 .25rem; }
.team-modal__instrument { font-family: var(--font-display); font-style: italic; color: var(--secondary); margin: 0 0 .25rem; }
.team-modal__position { color: var(--secondary); margin: 0 0 1rem; }
.section-team-grid__instrument { font-family: var(--font-display); font-style: italic; color: var(--secondary); margin: 0 0 .75rem; }
.team-modal__bio { color: var(--text-muted); line-height: 1.7; }
@media (max-width: 640px) {
  .team-modal__body { grid-template-columns: 1fr; }
}

/* ─── Team grid State/City filter ────────────────────────── */
.section-team-grid__filters { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: center; margin-bottom: 2.5rem; }
.section-team-grid__filter { display: flex; flex-direction: column; gap: .35rem; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--text-muted); }
.section-team-grid__filter select { font: inherit; font-size: .95rem; letter-spacing: normal; text-transform: none; color: var(--text); padding: .6rem 2rem .6rem .9rem; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; min-width: 200px; cursor: pointer; }
.section-team-grid__filter select:focus { outline: none; border-color: var(--secondary); }


/* ████████████████████████████████████████████████████████████
   THEME OVERLAY (was style-luxeharmony.css) — loads after base
   ████████████████████████████████████████████████████████████ */

/* ============================================================
   Luxe Harmony — Theme overlay for the Generic-v2 style guide
   Loads after style.css. Vanilla CSS, no preprocessor.
   Identity: deep plum + soft mauve, on ivory
   Type:     Cormorant Garamond (display) · Montserrat (UI/body)
   ============================================================ */


/* ------------------------------------------------------------
   1 · Tokens
------------------------------------------------------------ */
:root {
  --primary:    #492530;        /* deep plum */
  --secondary:  #B794AD;        /* soft mauve */
  --accent:     #FAF6F1;        /* ivory */
  --accent-2:   #FFFFFF;
  --text:       #2D1E22;        /* warm near-black, plum-tinted */
  --text-muted: #5A3E48;        /* muted plum */
  --border:     #E5D9CE;

  --cream:      #F3ECE3;
  --blush:      #E8D2D8;        /* mauve-tinted blush */
  --blush-deep: #D9B6BD;        /* deeper mauve-blush */
  --mauve:      #B794AD;        /* soft mauve — same as --secondary */
  --mauve-light:#D4BDC9;        /* light mauve (replaces gold accents) */
  --sage:       #A8B8A3;
  --gold-light: #D4BDC9;        /* legacy token name → now light mauve so existing rules pick up the new palette */

  --container-max: 1240px;
  --section-pad:   7rem;
  --gap:           1.5rem;
  --radius:        2px;

  --font-display: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
  --font-body:    'Montserrat', 'Inter', system-ui, -apple-system, sans-serif;

  --shadow-soft: 0 18px 50px -20px rgba(73, 37, 48, 0.25);
}

html, body { background: var(--accent); color: var(--text); }
body { font-family: var(--font-body); font-weight: 300; letter-spacing: 0.005em; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 400;
  color: var(--primary);
  letter-spacing: 0.01em;
  line-height: 1.18;
}

p { color: var(--text-muted); line-height: 1.75; }

a { color: var(--primary); transition: color .25s ease; }
a:hover { color: var(--secondary); }

::selection { background: var(--blush); color: var(--primary); }

/* ------------------------------------------------------------
   2 · Reusable preheader / eyebrow treatment
------------------------------------------------------------ */
[class*="__preheader"] {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--secondary);
  margin-bottom: 1.25rem;
}
[class*="__preheader"]::after {
  content: "";
  display: block;
  width: 40px; height: 1px;
  background: var(--gold-light);
  margin: 10px auto 0;
}
[class*="__intro"] { text-align: center; max-width: 760px; margin: 0 auto 4rem; }
[class*="__header"] { font-size: clamp(2rem, 3.6vw, 3rem); font-style: italic; }

/* ------------------------------------------------------------
   3 · Buttons
------------------------------------------------------------ */
.btn {
  font-family: var(--font-body);
  font-size: 0.74rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  font-weight: 500;
  padding: 16px 36px;
  border-radius: 0;
  border-width: 1px;
  transition: all .3s ease;
}
.btn--primary   { background: var(--primary); border-color: var(--primary); color: var(--accent); }
.btn--primary:hover   { background: var(--secondary); border-color: var(--secondary); color: #fff; }
.btn--secondary { background: transparent; color: var(--primary); border-color: var(--primary); }
.btn--secondary:hover { background: var(--primary); color: var(--accent); }

/* ------------------------------------------------------------
   4 · Announcement bar + header
------------------------------------------------------------ */
.announcement-bar {
  background: var(--primary);
  /* WCAG AAA contrast — ivory #FAF6F1 on deep plum #492530 = ~11:1, well above 7:1 AAA */
  color: #FFFFFF;
  font-size: 0.84rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding: 12px 1.5rem;
  text-align: center;
}
.announcement-bar__inner {
  display: block !important;        /* override base flex which was distributing items unevenly */
  text-align: center !important;
  width: 100%;
  max-width: none;
  margin: 0 auto;
  padding: 0 !important;
}
.announcement-bar__text {
  display: inline;
  margin: 0;
  padding: 0;
  color: #FFFFFF !important;    /* overrides the global `p { color: var(--text-muted) }` rule */
}
.announcement-bar p,
.announcement-bar a { color: #FFFFFF; }
.announcement-bar__text::after {
  content: " · ";
  color: #FFFFFF;
  margin: 0 0.5rem;
  opacity: 0.75;
}
.announcement-bar__link {
  display: inline;
  color: #FFFFFF;
  border-bottom: 1px solid #FFFFFF;
  text-decoration: none;
  padding-bottom: 1px;
  font-weight: 600;
}
.announcement-bar__link:hover {
  color: #FFFFFF;
  border-bottom-color: var(--mauve-light);
}

.site-header { background: var(--accent); border-bottom: 1px solid var(--border); backdrop-filter: none; box-shadow: none; }
.site-header__logo {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.9rem;
  letter-spacing: 0.16em;
  color: var(--primary);
  text-transform: uppercase;
  font-weight: 400;
}
.site-header__nav-link {
  font-family: var(--font-body);
  font-size: 0.74rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--text);
  font-weight: 400;
  position: relative;
}
.site-header__nav-link:hover { color: var(--primary); }
.site-header__nav-link::after {
  content: "";
  position: absolute;
  left: 50%; bottom: -8px;
  width: 0; height: 1px;
  background: var(--secondary);
  transition: width .3s ease, left .3s ease;
}
.site-header__nav-link:hover::after { width: 100%; left: 0; }

/* ------------------------------------------------------------
   5 · Hero
------------------------------------------------------------ */
.section-hero {
  position: relative;
  background-size: cover;
  background-position: center;
  color: #fff;
}
.section-hero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(73, 37, 48,.55), rgba(45,36,36,.45));
}
.section-hero__inner { position: relative; z-index: 2; text-align: center; padding: 7rem 1.5rem; }
.section-hero--home-page { min-height: 92vh; }
.section-hero--inner-page { min-height: 55vh; }

.section-hero__preheader {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin-bottom: 1.5rem;
}
.section-hero__preheader::after { display: none; }

.section-hero__header {
  font-family: var(--font-display);
  font-weight: 300;
  font-style: italic;
  color: #fff;
  font-size: clamp(2.8rem, 6vw, 5rem);
  line-height: 1.08;
  max-width: 18ch;
  margin: 0 auto 1.25rem;
}
.section-hero__subheader {
  color: rgba(255,255,255,.85);
  font-size: 1.1rem;
  max-width: 56ch;
  margin: 0 auto 2.25rem;
  font-weight: 300;
}
/* Force the hero section to center its inner container both axes,
   then stack the inner content as a centered column. */
.section-hero--home-page,
.section-hero--inner-page {
  display: flex;
  align-items: center;
  justify-content: center;
}
.section-hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 100%;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
}
.section-hero__actions {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin: 0 auto;
  align-self: center;
}
.section-hero__actions .btn--secondary { color: #fff; border-color: #fff; }
.section-hero__actions .btn--secondary:hover { background: #fff; color: var(--primary); }
/* Hero background media — Luxe Harmony's slow, elegant crossfade */
.section-hero__slide { transition: opacity 1.8s ease-in-out; }
.section-hero--home-page .section-hero__slide.is-active { animation: luxe-hero-drift 16s ease-out forwards; }
@keyframes luxe-hero-drift { from { transform: scale(1.05); } to { transform: scale(1); } }

/* ------------------------------------------------------------
   6 · Intro text
------------------------------------------------------------ */
.section-intro-text { padding: var(--section-pad) 0; }
.section-intro-text__header {
  font-style: italic;
  font-size: clamp(2rem, 3.5vw, 2.8rem);
}
.section-intro-text__quote {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.6rem, 2.6vw, 2.2rem);
  color: var(--primary);
  line-height: 1.45;
  position: relative;
  padding: 1rem 0;
}
.section-intro-text--quote .section-intro-text__quote::before {
  content: "“";
  display: block;
  font-family: var(--font-display);
  font-size: 5rem;
  color: var(--gold-light);
  line-height: 0.5;
  margin-bottom: 1.25rem;
}
.section-intro-text__cite,
.section-intro-text--with-cite cite {
  display: block;
  margin-top: 1.25rem;
  font-family: var(--font-body);
  font-style: normal;
  font-size: 0.72rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--secondary);
}

/* ------------------------------------------------------------
   7 · Content block
------------------------------------------------------------ */
.section-content-block { padding: var(--section-pad) 0; }
.section-content-block__inner { gap: 5rem; align-items: center; }
/* Base CSS only declares the image-right variant — image-left was inheriting DOM order. Force the media into the first column for image-left. */
.section-content-block--image-left .section-content-block__media { order: -1; }
.section-content-block__media img {
  box-shadow: var(--shadow-soft);
  border-radius: 0;
}
.section-content-block__media {
  position: relative;
  isolation: isolate;          /* clamps the ::before frame inside the figure so it can't fall behind section/page backgrounds */
}
.section-content-block__media::before {
  content: ""; position: absolute;
  top: 24px; left: 24px; right: -24px; bottom: -24px;
  border: 1px solid var(--gold-light);
  z-index: -1;
}
.section-content-block__header { font-style: italic; }
.section-content-block--image-bg { color: #fff; position: relative; background-size: cover; background-position: center; }
.section-content-block--image-bg::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(73, 37, 48,.65), rgba(45,36,36,.5));
}
.section-content-block--image-bg .section-content-block__inner {
  position: relative; z-index: 2;
  padding: 4rem 0;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.section-content-block--image-bg .section-content-block__text { width: 100%; }
.section-content-block--image-bg .section-content-block__header,
.section-content-block--image-bg p { color: #fff; }
.section-content-block--image-bg .section-content-block__actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 1rem;
}
.section-content-block--solid-color { background: var(--cream); }

/* ------------------------------------------------------------
   8 · Feature grid (amenities-style)
------------------------------------------------------------ */
.section-feature-grid { padding: var(--section-pad) 0; background: var(--cream); }
.section-feature-grid__list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  list-style: none;
  padding: 0; margin: 0;
}
.section-feature-grid__item {
  background: var(--accent-2);
  padding: 2.75rem 2rem;
  text-align: center;
  border: 1px solid var(--border);
  transition: all .35s ease;
}
.section-feature-grid__item:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-soft);
  border-color: var(--gold-light);
}
.section-feature-grid__icon {
  display: block;
  width: 56px; height: 56px;
  margin: 0 auto 1.25rem;
  border: 1px solid var(--secondary);
  border-radius: 50%;
  position: relative;
}
.section-feature-grid__icon::after {
  content: "♪";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: var(--accent);                /* ivory — contrasts against the mauve circle */
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-style: italic;
  font-weight: 500;
  line-height: 1;
}
.section-feature-grid__item-title { font-size: 1.4rem; font-style: italic; margin-bottom: 0.5rem; }

/* ------------------------------------------------------------
   9 · Stats bar
------------------------------------------------------------ */
.section-stats-bar {
  background: var(--primary);
  color: var(--accent);
  padding: 4rem 0;
}
.section-stats-bar__list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  list-style: none;
  padding: 0; margin: 0;
  text-align: center;
}
.section-stats-bar__value {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(2.5rem, 4vw, 3.5rem);
  color: var(--gold-light);
  display: block;
  line-height: 1;
}
.section-stats-bar__label {
  display: block;
  margin-top: 0.75rem;
  font-size: 0.72rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--blush);
}

/* ------------------------------------------------------------
   10 · Card grid
------------------------------------------------------------ */
.section-card-grid { padding: var(--section-pad) 0; }
.section-card-grid__list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
  list-style: none; padding: 0; margin: 0;
}
.section-card-grid__card {
  background: var(--accent-2);
  border: 1px solid var(--border);
  transition: all .35s ease;
  display: flex; flex-direction: column;
}
.section-card-grid__card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-soft);
  border-color: var(--gold-light);
}
.section-card-grid__media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.section-card-grid__body { padding: 2rem 2rem 2.25rem; }
.section-card-grid__card-title { font-size: 1.5rem; font-style: italic; margin-bottom: 0.5rem; }
.section-card-grid__cta {
  display: inline-block;
  margin-top: 1rem;
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--primary);
  border-bottom: 1px solid var(--secondary);
  padding-bottom: 3px;
}
.section-card-grid__cta:hover { color: var(--secondary); }
.section-card-grid--text-only .section-card-grid__list {
  grid-template-columns: repeat(4, 1fr);
  counter-reset: card-num;
}
.section-card-grid--text-only .section-card-grid__card {
  background: transparent;
  border: none;
  padding-top: 0;
  counter-increment: card-num;
  position: relative;
}
.section-card-grid--text-only .section-card-grid__card::before {
  content: counter(card-num, lower-roman);
  display: block;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2.25rem;
  font-weight: 500;
  line-height: 1;
  color: var(--secondary);
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--gold-light);   /* the "purple line" — light mauve */
  margin-bottom: 1.5rem;
}
.section-card-grid--text-only .section-card-grid__body { padding: 0; }

/* ------------------------------------------------------------
   11 · Process grid
------------------------------------------------------------ */
.section-process-grid { padding: var(--section-pad) 0; background: var(--cream); }
/* Flex-wrap (not grid) so a partial last row stays centered at any step count. */
.section-process-grid__list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem;
  list-style: none; padding: 0; margin: 0;
}
.section-process-grid__step {
  flex: 0 1 calc(25% - 1.5rem);
  text-align: center;
  padding: 2.5rem 1.5rem;
  background: var(--accent-2);
  border: 1px solid var(--border);
  position: relative;
}
.section-process-grid__number {
  display: block;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2.4rem;
  color: var(--secondary);
  margin-bottom: 0.5rem;
  line-height: 1;
}
.section-process-grid__step-title { font-size: 1.25rem; font-style: italic; margin-bottom: 0.5rem; }

/* ------------------------------------------------------------
   12 · Image display
------------------------------------------------------------ */
.section-image-display { padding: var(--section-pad) 0; }
.section-image-display__list { gap: 4px; padding: 0; list-style: none; margin: 0; }
.section-image-display__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.section-image-display__item { overflow: hidden; position: relative; }
.section-image-display__item:hover img { transform: scale(1.04); }

.section-image-display--logo-grid { background: var(--cream); }
.section-image-display--logo-grid .section-image-display__item {
  background: var(--accent-2);
  padding: 1.5rem;
  display: flex; align-items: center; justify-content: center;
  filter: grayscale(1) opacity(.6);
  transition: filter .3s ease;
}
.section-image-display--logo-grid .section-image-display__item:hover { filter: none; }

/* ------------------------------------------------------------
   13 · Gallery
------------------------------------------------------------ */
.section-gallery { padding: var(--section-pad) 0; }
.section-gallery__filter {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 10px 22px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: all .25s ease;
}
.section-gallery__filter:hover { color: var(--primary); border-color: var(--gold-light); }
.section-gallery__filter--active { background: var(--primary); color: var(--accent); border-color: var(--primary); }
.section-gallery__filters { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 3rem; }
.section-gallery__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  list-style: none; padding: 0; margin: 0;
}
.section-gallery__trigger { padding: 0; border: 0; background: none; cursor: pointer; display: block; width: 100%; height: 100%; overflow: hidden; }
.section-gallery__trigger img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4/3; transition: transform .6s ease; }
.section-gallery__trigger:hover img { transform: scale(1.05); }

/* ------------------------------------------------------------
   14 · Floor plans → WEDDING PACKAGES (Rose · Gardenia · Hydrangea · Orchid)
------------------------------------------------------------ */
.section-floor-plans { padding: var(--section-pad) 0; background: var(--cream); }
.section-floor-plans__filters { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 3rem; }
.section-floor-plans__filter {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 10px 22px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}
.section-floor-plans__filter--active { background: var(--primary); color: var(--accent); border-color: var(--primary); }

.section-floor-plans__list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
  list-style: none; padding: 0; margin: 0;
}
.section-floor-plans__list { padding-top: 14px; overflow: visible; }
.section-floor-plans__inner { overflow: visible; }
.section-floor-plans__plan {
  background: var(--accent-2);
  border: 1px solid var(--border);
  display: flex; flex-direction: column;
  position: relative;
  transition: all .35s ease;
  overflow: visible;            /* override base: lets the "Most Popular" badge sit above the card */
}
.section-floor-plans__plan:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-soft);
  border-color: var(--gold-light);
}
.section-floor-plans__plan-media {
  display: none; /* hide stock photo; packages are framed text-first */
}
.section-floor-plans__plan-body { padding: 2.75rem 2rem 2.25rem; text-align: center; flex: 1; display: flex; flex-direction: column; }
.section-floor-plans__plan-title {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2rem;
  color: var(--primary);
  margin: 0 0 0.25rem;
}
.section-floor-plans__plan-title::before {
  content: "❀";
  display: block;
  font-style: normal;
  color: var(--secondary);
  font-size: 0.9rem;
  letter-spacing: 0.4em;
  margin-bottom: 0.75rem;
  font-family: var(--font-body);
}
.section-floor-plans__plan-badge {
  position: absolute;
  top: -14px; left: 50%; right: auto;     /* override base which placed it top-right */
  transform: translateX(-50%);
  background: var(--secondary);
  color: #fff;
  font-family: var(--font-body);
  font-size: 0.6rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 6px 18px;
  border-radius: 0;
  white-space: nowrap;
  z-index: 3;
  box-shadow: 0 4px 14px -4px rgba(73, 37, 48, 0.4);
}
.section-floor-plans__plan-stats {
  list-style: none; padding: 0; margin: 1.25rem 0 1.5rem;
  display: flex; flex-direction: column;
  border-top: 1px solid var(--border);
}
.section-floor-plans__plan-stats li {
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--border);
  font-size: 0.88rem;
  color: var(--text-muted);
}
.section-floor-plans__plan-stats li:first-child {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2rem;
  color: var(--primary);
  padding: 1.25rem 0 0.75rem;
  border-bottom: 1px solid var(--gold-light);
}
.section-floor-plans__plan-cta {
  margin-top: auto;
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--accent);
  background: var(--primary);
  padding: 14px 24px;
  border: 1px solid var(--primary);
  transition: all .3s ease;
}
.section-floor-plans__plan-cta:hover { background: var(--secondary); border-color: var(--secondary); color: #fff; }

/* ------------------------------------------------------------
   15 · Location map → SERVICE REGIONS
------------------------------------------------------------ */
.section-location-map { padding: var(--section-pad) 0; }
.section-location-map__layout {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 3rem;
  align-items: start;       /* each column at its natural height — prevents empty space below the SVG when the sidebar is tall */
}
.section-location-map__map {
  position: relative;
  min-height: 480px;
  overflow: hidden;
  border: 1px solid var(--border);
  background:
    linear-gradient(135deg, rgba(73, 37, 48,0.18), rgba(183, 148, 173,0.18)),
    var(--map-bg-image, var(--cream)) center/cover;
}
.section-location-map__map iframe {
  width: 100%; height: 100%;
  min-height: 480px;
  border: 0;
  display: block;
  filter: grayscale(0.35) sepia(0.08);
}
.section-location-map__sidebar {
  background: var(--cream);
  padding: 2.5rem;
  border-left: 2px solid var(--secondary);
  align-self: stretch;
}
.section-location-map__address { font-family: var(--font-display); font-style: italic; font-size: 1.4rem; color: var(--primary); margin-bottom: 1.5rem; }
.section-location-map__poi-title { font-size: 0.7rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--secondary); margin: 1.5rem 0 0.75rem; }
.section-location-map__poi-list { list-style: none; padding: 0; margin: 0; }
.section-location-map__poi-list li { padding: 0.3rem 0; font-size: 0.92rem; color: var(--text-muted); }
.section-location-map__poi-list li::before { content: "· "; color: var(--secondary); }

/* ------------------------------------------------------------
   16 · CTA bands
------------------------------------------------------------ */
.section-cta-band { padding: 6rem 0; position: relative; }
.section-cta-band__overlay { position: absolute; inset: 0; background: linear-gradient(135deg, rgba(73, 37, 48,.65), rgba(45,36,36,.5)); }
.section-cta-band__inner { position: relative; z-index: 2; }
.section-cta-band--bg, .section-cta-band--parallax { color: #fff; background-size: cover; background-position: center; text-align: center; }
.section-cta-band--bg .section-cta-band__header,
.section-cta-band--parallax .section-cta-band__header { color: #fff; font-style: italic; font-size: clamp(2rem, 4vw, 3rem); }
.section-cta-band--bg .section-cta-band__subheader,
.section-cta-band--parallax .section-cta-band__subheader { color: rgba(255,255,255,.85); }
.section-cta-band--bg .btn--secondary,
.section-cta-band--parallax .btn--secondary { color: #fff; border-color: #fff; }
.section-cta-band--bg .btn--secondary:hover,
.section-cta-band--parallax .btn--secondary:hover { background: #fff; color: var(--primary); }

.section-cta-band--side { background: var(--cream); }
.section-cta-band--side .section-cta-band__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; }
.section-cta-band--side .section-cta-band__media img { width: 100%; box-shadow: var(--shadow-soft); }
.section-cta-band--side .section-cta-band__header { font-style: italic; }

.section-cta-band--light { background: var(--accent); text-align: center; }
.section-cta-band--light .section-cta-band__header { font-style: italic; }
.section-cta-band--light .section-cta-band__inline-media { margin-top: 3rem; max-width: 100%; }
.section-cta-band--light .section-cta-band__inline-media img { width: 100%; box-shadow: var(--shadow-soft); }

.section-cta-band--dark { background: var(--primary); color: var(--accent); text-align: center; }
.section-cta-band--dark .section-cta-band__header { color: #fff; font-style: italic; }
.section-cta-band--dark .section-cta-band__subheader { color: var(--blush); }
.section-cta-band--dark .section-cta-band__inline-media { margin-top: 3rem; }
.section-cta-band--dark .section-cta-band__inline-media img { width: 100%; }
.section-cta-band--dark .btn--primary { background: var(--secondary); border-color: var(--secondary); }
.section-cta-band--dark .btn--primary:hover { background: var(--gold-light); border-color: var(--gold-light); color: var(--primary); }

.section-cta-band__actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.section-cta-band--side .section-cta-band__actions { justify-content: flex-start; }

/* ------------------------------------------------------------
   17 · Contact form + info
------------------------------------------------------------ */
.section-contact-form-and-info { padding: var(--section-pad) 0; }
.section-contact-form-and-info__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; }
.section-contact-form-and-info__info { padding-right: 2rem; border-right: 1px solid var(--gold-light); }
.section-contact-form-and-info__header { font-style: italic; }
.section-contact-form-and-info__item { padding: 1rem 0; border-bottom: 1px solid var(--border); }
.section-contact-form-and-info__item:last-child { border-bottom: none; }
.section-contact-form-and-info__item-label {
  display: block;
  font-size: 0.7rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--secondary);
  margin-bottom: 0.35rem;
}
.section-contact-form-and-info__item-value {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.2rem;
  color: var(--primary);
}
.section-contact-form-and-info__items { list-style: none; padding: 0; margin: 1.5rem 0 0; }

/* form fields shared */
form label {
  display: block;
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 0.5rem;
  font-weight: 500;
}
form input, form select, form textarea {
  padding: 14px 16px;
  border: 1px solid var(--border);
  background: var(--accent-2);
  font-family: var(--font-body);
  color: var(--text);
  border-radius: 0;
  transition: border-color .25s;
}
form input:focus, form select:focus, form textarea:focus {
  outline: none;
  border-color: var(--secondary);
}

/* ------------------------------------------------------------
   18 · Catering / events form
------------------------------------------------------------ */
.section-catering-form { padding: var(--section-pad) 0; background: var(--cream); }
.section-catering-form__header { font-style: italic; }

/* ------------------------------------------------------------
   19 · FAQ
------------------------------------------------------------ */
.section-faq { padding: var(--section-pad) 0; }
.section-faq__list { max-width: 820px; margin: 0 auto; list-style: none; padding: 0; }
.section-faq__item { border-bottom: 1px solid var(--border); }
.section-faq__trigger {
  width: 100%;
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.5rem 0;
  background: none; border: none;
  text-align: left;
  cursor: pointer;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.3rem;
  color: var(--primary);
}
.section-faq__icon { color: var(--secondary); font-size: 1.5rem; transition: transform .3s ease; font-family: var(--font-body); font-style: normal; }
.section-faq__trigger[aria-expanded="true"] .section-faq__icon { transform: rotate(45deg); }
.section-faq__answer { padding: 0 0 1.5rem; color: var(--text-muted); }

/* ------------------------------------------------------------
   20 · Team / musicians
------------------------------------------------------------ */
.section-team-grid { padding: var(--section-pad) 0; background: var(--cream); }
.section-team-grid__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; list-style: none; padding: 0; margin: 0; }
.section-team-grid__member { text-align: center; background: var(--accent-2); padding: 0 0 2rem; border: 1px solid var(--border); transition: all .35s ease; }
.section-team-grid__member:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); }
.section-team-grid__photo img { width: 100%; aspect-ratio: 4/5; object-fit: cover; margin-bottom: 1.25rem; }
.section-team-grid__name { font-size: 1.4rem; font-style: italic; margin-bottom: 0.25rem; }
.section-team-grid__position { font-size: 0.7rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); margin-bottom: 1rem; }
.section-team-grid__bio { padding: 0 2rem; }
.section-team-grid__socials { list-style: none; padding: 0; margin: 1.25rem 0 0; display: flex; gap: 0.75rem; justify-content: center; }
.section-team-grid__socials a {
  width: 36px; height: 36px;
  border: 1px solid var(--gold-light);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.75rem;
  color: var(--primary);
  text-transform: uppercase;
}
.section-team-grid__socials a:hover { background: var(--secondary); color: #fff; border-color: var(--secondary); }

/* ------------------------------------------------------------
   21 · Testimonials
------------------------------------------------------------ */
.section-testimonials-grid {
  padding: var(--section-pad) 0;
  background: linear-gradient(135deg, rgba(201,162,189,.15), rgba(168,184,163,.1)), var(--accent);
}
.section-testimonials-grid__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; list-style: none; padding: 0; margin: 0; }
.section-testimonials-grid__item { background: var(--accent-2); padding: 2.5rem 2rem; text-align: center; border: 1px solid var(--border); position: relative; }
.section-testimonials-grid__item::before {
  content: "“";
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  background: var(--accent);
  font-family: var(--font-display);
  font-size: 3.5rem;
  color: var(--gold-light);
  line-height: 1;
  padding: 0 0.5rem;
}
.section-testimonials-grid__rating { color: var(--secondary); letter-spacing: 0.15em; }
.section-testimonials-grid__quote {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.15rem;
  color: var(--primary);
  margin: 1.25rem 0 1.5rem;
  line-height: 1.5;
  border: none;
  padding: 0;
}
.section-testimonials-grid__attribution { display: flex; align-items: center; justify-content: center; gap: 0.75rem; }
.section-testimonials-grid__photo { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.section-testimonials-grid__name { font-style: normal; font-size: 0.7rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); }

/* ------------------------------------------------------------
   22 · Service pillar
------------------------------------------------------------ */
.section-service-pillar { padding: var(--section-pad) 0; }
.section-service-pillar__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; }
.section-service-pillar__media img { width: 100%; box-shadow: var(--shadow-soft); }
.section-service-pillar__media { position: relative; isolation: isolate; }
.section-service-pillar__media::before {
  content: ""; position: absolute;
  top: 24px; left: 24px; right: -24px; bottom: -24px;
  border: 1px solid var(--gold-light);
  z-index: -1;
}
.section-service-pillar__header { font-style: italic; font-size: clamp(2rem, 3.6vw, 2.8rem); }
.section-service-pillar__lead { font-family: var(--font-display); font-style: italic; font-size: 1.25rem; color: var(--primary); line-height: 1.5; margin: 1rem 0; }
.section-service-pillar__sub-heading { font-size: 0.72rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--secondary); margin-top: 1.5rem; }
.section-service-pillar__deliverables-list { list-style: none; padding: 0; margin: 0.75rem 0; }
.section-service-pillar__deliverables-list li { padding: 0.4rem 0 0.4rem 1.25rem; position: relative; color: var(--text-muted); font-size: 0.95rem; }
.section-service-pillar__deliverables-list li::before { content: "✦"; position: absolute; left: 0; color: var(--secondary); font-size: 0.78rem; top: 0.55rem; }

/* ------------------------------------------------------------
   23 · Atmosphere mosaic
------------------------------------------------------------ */
.section-atmosphere-mosaic { padding: var(--section-pad) 0; background: var(--cream); }
.section-atmosphere-mosaic__quote-block { text-align: center; max-width: 720px; margin: 0 auto 4rem; }
.section-atmosphere-mosaic__quote { font-family: var(--font-display); font-style: italic; font-size: clamp(1.6rem, 2.6vw, 2.2rem); color: var(--primary); border: none; padding: 0; margin: 0 0 1rem; }
.section-atmosphere-mosaic__cite { font-style: normal; font-size: 0.72rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); }
.section-atmosphere-mosaic__grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: 200px 200px;
  gap: 8px;
}
.section-atmosphere-mosaic__tile { margin: 0; overflow: hidden; }
.section-atmosphere-mosaic__tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.section-atmosphere-mosaic__tile:hover img { transform: scale(1.05); }
.section-atmosphere-mosaic__tile--1 { grid-column: 1 / 3; grid-row: 1 / 3; }
.section-atmosphere-mosaic__tile--2 { grid-column: 3 / 5; }
.section-atmosphere-mosaic__tile--3 { grid-column: 5 / 7; grid-row: 1 / 3; }
.section-atmosphere-mosaic__tile--4 { grid-column: 3 / 4; grid-row: 2; }
.section-atmosphere-mosaic__tile--5 { grid-column: 4 / 5; grid-row: 2; }

/* ------------------------------------------------------------
   24 · Zoom parallax
------------------------------------------------------------ */
.section-zoom-parallax { background: var(--primary); color: #fff; }
.section-zoom-parallax__copy { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; z-index: 2; }
.section-zoom-parallax__preheader { color: var(--gold-light); }
.section-zoom-parallax__header { color: #fff; font-style: italic; font-size: clamp(2.5rem, 5vw, 4rem); }

/* ------------------------------------------------------------
   25 · Restaurant menu → REPERTOIRE
------------------------------------------------------------ */
.section-restaurant-menu { padding: var(--section-pad) 0; background: var(--cream); }
.section-restaurant-menu__menu-title { font-size: 2rem; font-style: italic; text-align: center; }
.section-restaurant-menu__menu-description { text-align: center; margin-bottom: 3rem; color: var(--text-muted); }
.section-restaurant-menu__category { margin-bottom: 2.5rem; }
.section-restaurant-menu__category-title {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--secondary);
  text-align: center;
  margin-bottom: 1.5rem;
  position: relative;
}
.section-restaurant-menu__category-title::before,
.section-restaurant-menu__category-title::after {
  content: ""; display: inline-block; width: 30px; height: 1px; background: var(--gold-light); vertical-align: middle; margin: 0 1rem;
}
.section-restaurant-menu__items { list-style: none; padding: 0; margin: 0; max-width: 720px; margin-inline: auto; }
.menu-item { display: flex; justify-content: space-between; gap: 1.5rem; padding: 1rem 0; border-bottom: 1px dashed var(--border); }
.menu-item__title { font-family: var(--font-display); font-style: italic; font-size: 1.2rem; color: var(--primary); margin: 0 0 0.25rem; }
.menu-item__description { font-size: 0.9rem; color: var(--text-muted); margin: 0; }
.menu-item__price { font-family: var(--font-display); font-style: italic; font-size: 1.2rem; color: var(--secondary); }
.dietary-tag {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.55rem;
  letter-spacing: 0.18em;
  padding: 2px 6px;
  margin-left: 0.4rem;
  border: 1px solid var(--gold-light);
  color: var(--secondary);
  vertical-align: middle;
}
.favorite-tag { color: var(--secondary); margin-left: 0.4rem; }
.section-restaurant-menu__legend { list-style: none; padding: 0; margin: 2rem 0 0; display: flex; gap: 1.5rem; justify-content: center; flex-wrap: wrap; font-size: 0.85rem; color: var(--text-muted); }

/* ------------------------------------------------------------
   26 · Signature dishes / specials
------------------------------------------------------------ */
.section-signature-dishes { padding: var(--section-pad) 0; }
.section-signature-dishes__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; list-style: none; padding: 0; margin: 0; }
.section-signature-dishes__card { background: var(--accent-2); border: 1px solid var(--border); transition: all .35s ease; }
.section-signature-dishes__card:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); }
.section-signature-dishes__media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.section-signature-dishes__body { padding: 1.75rem 1.75rem 2rem; text-align: center; }
.section-signature-dishes__title { font-style: italic; font-size: 1.4rem; margin-bottom: 0.5rem; }
.section-signature-dishes__price { font-family: var(--font-display); font-style: italic; font-size: 1.4rem; color: var(--secondary); display: block; margin-top: 0.75rem; }

.section-specials-by-day { padding: var(--section-pad) 0; background: var(--cream); }
.section-specials-by-day__list { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1rem; list-style: none; padding: 0; margin: 0; }
.section-specials-by-day__day { background: var(--accent-2); padding: 1.75rem 1rem; text-align: center; border-top: 2px solid var(--secondary); }
.section-specials-by-day__day-name { display: block; font-family: var(--font-body); font-size: 0.7rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); margin-bottom: 0.75rem; }
.section-specials-by-day__title { font-style: italic; font-size: 1.15rem; margin-bottom: 0.4rem; }
.section-specials-by-day__description { font-size: 0.85rem; color: var(--text-muted); }

/* ------------------------------------------------------------
   27 · Posts listing / related articles
------------------------------------------------------------ */
.section-posts-listing { padding: var(--section-pad) 0; }
.section-posts-listing__filters { display: flex; gap: 0.5rem; justify-content: center; margin-bottom: 3rem; flex-wrap: wrap; }
.section-posts-listing__filter {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 10px 22px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}
.section-posts-listing__filter--active { background: var(--primary); color: var(--accent); border-color: var(--primary); }

.section-posts-listing__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; list-style: none; padding: 0; margin: 0; }

.post-card { background: var(--accent-2); border: 1px solid var(--border); transition: all .35s ease; display: flex; flex-direction: column; }
/* Equal-height cards: each grid cell stretches to the row's tallest card, the card fills
   its cell, and the body grows so "Read more" bottom-aligns whatever the excerpt length.
   Scoped to list cards — the featured card sits outside the list and is unaffected. */
.section-posts-listing__item { display: flex; flex-direction: column; }
.section-posts-listing__item .post-card { flex: 1; }
.section-posts-listing__item .post-card__body { flex: 1; display: flex; flex-direction: column; }
.section-posts-listing__item .post-card__link { margin-top: auto; align-self: flex-start; }
.post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); }
.post-card__media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.post-card__body { padding: 1.75rem 1.75rem 2rem; }
.post-card__meta { font-family: var(--font-body); font-size: 0.7rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); margin: 0 0 0.75rem; }
.post-card__title { font-style: italic; font-size: 1.35rem; margin-bottom: 0.6rem; }
.post-card__title a { color: var(--primary); }
.post-card__title a:hover { color: var(--secondary); }
.post-card__excerpt { font-size: 0.92rem; }
.post-card__link {
  display: inline-block;
  margin-top: 0.75rem;
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--primary);
  border-bottom: 1px solid var(--secondary);
  padding-bottom: 3px;
}

.post-card--featured { display: grid; grid-template-columns: 1.4fr 1fr; align-items: stretch; margin-bottom: 3rem; }
.post-card--featured .post-card__title { font-size: 2rem; }
.post-card--featured .post-card__body { padding: 3rem 2.5rem; align-self: center; }

.section-related-articles { padding: var(--section-pad) 0; background: var(--cream); }
.section-related-articles__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; list-style: none; padding: 0; margin: 0; }
.section-related-articles__item { background: var(--accent-2); border: 1px solid var(--border); }
.section-related-articles__media img { width: 100%; aspect-ratio: 3/2; object-fit: cover; }
.section-related-articles__body { padding: 1.5rem 1.75rem 2rem; }
.section-related-articles__category { font-size: 0.7rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--secondary); }
.section-related-articles__item-title { font-style: italic; font-size: 1.25rem; margin: 0.5rem 0; }
.section-related-articles__date { font-size: 0.8rem; color: var(--text-muted); }

/* ------------------------------------------------------------
   28 · Footer
------------------------------------------------------------ */
.site-footer { background: #2D2424; color: var(--blush); padding: 5rem 0 1rem; margin-top: 0; }
.site-footer__logo {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.9rem;
  letter-spacing: 0.16em;
  color: #fff;
  text-transform: uppercase;
}
.site-footer__tagline { color: var(--blush); opacity: 0.7; margin-top: 0.5rem; }
.site-footer__heading { color: var(--gold-light); font-family: var(--font-body); font-size: 0.7rem; letter-spacing: 0.3em; text-transform: uppercase; margin-bottom: 1.25rem; }
.site-footer a { color: rgba(232, 210, 201, .75); }
.site-footer a:hover { color: var(--gold-light); }
.site-footer__address { color: var(--blush); font-style: normal; opacity: 0.8; font-family: var(--font-display); font-style: italic; font-size: 1.1rem; }
.site-footer__bottom { border-top: 1px solid rgba(232, 210, 201, .12); margin-top: 3rem; padding: 1.5rem 0; }
.site-footer__bottom p { color: rgba(232, 210, 201, .5); font-size: 0.78rem; margin: 0; text-align: center; }

/* ------------------------------------------------------------
   29 · Style-guide markers (keep but soften)
------------------------------------------------------------ */
.style-guide-marker {
  background: var(--cream);
  color: var(--text-muted);
  font-family: 'Courier New', monospace;
  font-size: 0.75rem;
  padding: 0.5rem 1.5rem;
  border-left: 3px solid var(--secondary);
}
.style-guide-marker code { background: rgba(183, 148, 173, .12); color: var(--primary); padding: 1px 6px; }

/* ------------------------------------------------------------
   30 · Reveal animation (paired with site-luxeharmony.js)
------------------------------------------------------------ */
[class*="section-"] { opacity: 1; }
/* Fail-visible: content is visible by default so nothing can get stuck at
   opacity:0 if the IntersectionObserver doesn't fire. The slide-in animation
   only applies once JS has confirmed it can reveal (html.js-reveal), so with
   no/late JS the page still shows everything. */
.reveal { opacity: 1; transform: none; transition: opacity .8s ease, transform .8s ease; }
html.js-reveal .reveal { opacity: 0; transform: translateY(24px); }
html.js-reveal .reveal.is-visible { opacity: 1; transform: none; }

/* ------------------------------------------------------------
   31 · Responsive
------------------------------------------------------------ */
@media (max-width: 1024px) {
  .section-floor-plans__list,
  .section-card-grid--text-only .section-card-grid__list,
  .section-process-grid__list { grid-template-columns: repeat(2, 1fr); }
  .section-process-grid__step { flex-basis: calc(50% - 1rem); }
  .section-specials-by-day__list { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 860px) {
  :root { --section-pad: 4.5rem; }
  .section-content-block__inner,
  .section-service-pillar__inner,
  .section-cta-band--side .section-cta-band__inner,
  .section-contact-form-and-info__inner,
  .section-location-map__layout { grid-template-columns: 1fr; gap: 2.5rem; }
  .section-feature-grid__list,
  .section-card-grid__list,
  .section-team-grid__list,
  .section-testimonials-grid__list,
  .section-signature-dishes__list,
  .section-posts-listing__list,
  .section-related-articles__list,
  .section-gallery__grid { grid-template-columns: repeat(2, 1fr); }
  .section-stats-bar__list { grid-template-columns: repeat(2, 1fr); }
  .section-atmosphere-mosaic__grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: auto; }
  .section-atmosphere-mosaic__tile { grid-column: auto !important; grid-row: auto !important; height: 280px; }
  .post-card--featured { grid-template-columns: 1fr; }
  .section-contact-form-and-info__info { padding-right: 0; border-right: none; padding-bottom: 2rem; border-bottom: 1px solid var(--gold-light); }
}
@media (max-width: 600px) {
  .section-floor-plans__list,
  .section-feature-grid__list,
  .section-card-grid__list,
  .section-card-grid--text-only .section-card-grid__list,
  .section-team-grid__list,
  .section-testimonials-grid__list,
  .section-signature-dishes__list,
  .section-posts-listing__list,
  .section-related-articles__list,
  .section-process-grid__list,
  .section-specials-by-day__list,
  .section-gallery__grid { grid-template-columns: 1fr; }
  .section-process-grid__step { flex-basis: 100%; }
  .section-hero__inner { padding: 5rem 1.5rem; }
}

/* ------------------------------------------------------------
   32 · Video in content-block media + inline testimonial quote
   ------------------------------------------------------------
   Added 2026-05-19 for: testimonial-design content-blocks and
   "videos scattered throughout the site" pattern.
   ------------------------------------------------------------ */

/* Video in any content-block / split / service-pillar media slot — same shape as <img>. */
.section-content-block__media video,
.section-service-pillar__media video,
.section-cta-band__media video,
.section-cta-band__inline-media video {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 0;
  box-shadow: var(--shadow-soft);
  background: var(--cream);
  object-fit: cover;
}

/* Treat the offset gold-line frame around video the same as we do for img. */
.section-content-block__media,
.section-service-pillar__media {
  position: relative;
  isolation: isolate;     /* keeps the offset ::before frame visible above ancestor backgrounds */
}

/* Inline testimonial quote inside content-block body */
.section-content-block__quote {
  margin: 1.5rem 0 0;
  padding: 1.25rem 0 0 1.5rem;
  border-left: 2px solid var(--secondary);
  font-family: var(--font-display);
  font-style: italic;
  color: var(--primary);
  line-height: 1.55;
}
.section-content-block__quote p {
  font-size: 1.1rem;
  color: var(--primary);
  margin: 0 0 0.75rem;
}
.section-content-block__quote cite {
  display: block;
  font-style: normal;
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--secondary);
}

/* Feature variant — larger leading quote with decorative open-quote mark */
.section-content-block__quote--feature {
  padding: 0;
  border-left: 0;
  position: relative;
  margin-top: 1rem;
}
.section-content-block__quote--feature::before {
  content: "“";
  font-family: var(--font-display);
  font-size: 5rem;
  line-height: 0.5;
  color: var(--mauve-light);
  display: block;
  margin-bottom: 1.25rem;
}
.section-content-block__quote--feature p {
  font-size: clamp(1.2rem, 1.8vw, 1.4rem);
  line-height: 1.5;
}

/* Testimonial-marked content-block — slightly different background tint */
.section-content-block--testimonial {
  background: linear-gradient(135deg, rgba(216, 210, 216, 0.18), rgba(250, 246, 241, 0)) , var(--accent);
}

/* Actions row — allow stacked CTAs gracefully */
.section-content-block__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.75rem;
  align-items: center;
}
/* Centered block variants (text-align: center) should center their action buttons too */
.section-content-block--no-image .section-content-block__actions,
.section-content-block--solid-color .section-content-block__actions,
.section-content-block--image-bg .section-content-block__actions {
  justify-content: center;
}

/* ------------------------------------------------------------
   33 · Locations page — sub-region cards (used on locations.html)
------------------------------------------------------------ */
.location-region {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 3rem;
  align-items: start;
  padding: var(--section-pad) 0;
}
.location-region--reverse { grid-template-columns: 1fr 1.4fr; }
.location-region--reverse .location-region__cities { order: 2; }
.location-region__map iframe {
  width: 100%;
  min-height: 460px;
  border: 1px solid var(--border);
  filter: grayscale(0.25) sepia(0.06);
  display: block;
}
.location-region__cities {
  background: var(--cream);
  padding: 2.5rem;
  border-left: 2px solid var(--secondary);
}
.location-region__cities h3 {
  font-style: italic;
  font-size: clamp(1.8rem, 3vw, 2.5rem);
  margin-bottom: 1rem;
}
.location-region__cities .eyebrow {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--secondary);
  font-weight: 500;
}
.location-region__cities ul {
  list-style: none;
  padding: 0;
  margin: 1.25rem 0;
  columns: 2;
  column-gap: 30px;
}
.location-region__cities li {
  font-size: 0.95rem;
  color: var(--text-muted);
  padding: 4px 0;
  break-inside: avoid;
}
.location-region__cities li::before { content: "· "; color: var(--secondary); }

@media (max-width: 860px) {
  .location-region,
  .location-region--reverse { grid-template-columns: 1fr; }
  .location-region--reverse .location-region__cities { order: 0; }
  .location-region__cities ul { columns: 1; }
}

/* ------------------------------------------------------------
   34 · Custom SVG heat-map for service regions
------------------------------------------------------------ */
.svc-map {
  width: 100%;
  height: auto;
  display: block;
  background: var(--cream);
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: visible;          /* let halos bleed past the viewBox edge if needed */
}
.svc-map__bg-stripe { fill: rgba(216, 210, 216, 0.18); }
.svc-map__outline {
  fill: rgba(183, 148, 173, 0.10);
  stroke: var(--secondary);
  stroke-width: 1.2;
  stroke-dasharray: 4 3;
  stroke-linejoin: round;
}
.svc-map__halo { fill: rgba(73, 37, 48, 0.10); }
.svc-map__halo--feature { fill: rgba(183, 148, 173, 0.35); }
.svc-map__city {
  fill: var(--primary);
  stroke: var(--accent);
  stroke-width: 1.5;
}
.svc-map__city--feature {
  fill: var(--secondary);
  stroke: var(--primary);
  stroke-width: 2;
}
.svc-map__label {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  fill: var(--primary);
  text-transform: uppercase;
}
.svc-map__label--feature {
  font-family: var(--font-display);
  font-size: 18px;
  font-style: italic;
  font-weight: 500;
  fill: var(--primary);
  letter-spacing: 0.02em;
  text-transform: none;
}
.svc-map__state-name {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  fill: rgba(73, 37, 48, 0.08);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.svc-map__legend {
  font-family: var(--font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  fill: var(--text-muted);
}

/* The container around the SVG map within section-location-map */
.section-location-map__map.svc-map-wrap {
  background: var(--cream);
  border: 1px solid var(--border);
  padding: 1.5rem;
  overflow: visible !important;   /* override base `overflow: hidden` so SVG halos / labels render past edges */
  min-height: 0 !important;       /* override base min-height: 480px so the wrap fits the SVG, not the iframe */
  height: auto;
  align-self: start;              /* belt-and-suspenders — sit at natural height inside the grid */
}
.section-location-map__map.svc-map-wrap iframe { display: none; }

/* ------------------------------------------------------------
   35 · Smaller CTA inside location-map preview variant
------------------------------------------------------------ */
.section-location-map--preview .section-location-map__preview { gap: 2rem; }
.section-location-map--preview .section-location-map__preview .btn {
  padding: 12px 28px;
  font-size: 0.7rem;
  letter-spacing: 0.24em;
  align-self: center;
  justify-self: start;
  width: auto;
  display: inline-block;
}

/* ------------------------------------------------------------
   36 · Musicians bio page — roster grid
------------------------------------------------------------ */
.roster-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
}
.roster-card {
  background: var(--accent-2);
  border: 1px solid var(--border);
  display: flex; flex-direction: column;
  transition: all .35s ease;
}
.roster-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); border-color: var(--secondary); }
.roster-card__photo {
  aspect-ratio: 4/5;
  background-size: cover; background-position: center;
  position: relative;
}
.roster-card__photo::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 50%;
  background: linear-gradient(to top, rgba(73, 37, 48, 0.55), transparent);
}
.roster-card__instrument {
  position: absolute;
  bottom: 16px; left: 20px;
  color: var(--accent);
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  z-index: 2;
}
.roster-card__body { padding: 1.75rem 1.75rem 2rem; }
.roster-card__name {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.6rem;
  color: var(--primary);
  margin: 0 0 0.35rem;
}
.roster-card__role {
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--secondary);
  margin: 0 0 1rem;
}
.roster-card__bio { font-size: 0.92rem; color: var(--text-muted); line-height: 1.6; margin: 0; }
.roster-card__creds {
  list-style: none;
  padding: 1rem 0 0;
  margin: 1rem 0 0;
  border-top: 1px solid var(--border);
  font-size: 0.85rem;
  color: var(--text-muted);
}
.roster-card__creds li { padding: 4px 0; }
.roster-card__creds li::before { content: "· "; color: var(--secondary); }
@media (max-width: 960px) { .roster-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .roster-grid { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------
   37 · Long-form article prose (blog-post.html)
   Applies inside any section-content-block__content used as
   article body. Adds rhythm for h3, ul, and reading width.
------------------------------------------------------------ */
.section-content-block--no-image .section-content-block__content {
  max-width: 720px;
  margin-inline: auto;
  text-align: left;
}
.section-content-block--no-image .section-content-block__content p {
  font-size: 1.05rem;
  line-height: 1.8;
  margin: 0 0 1.25rem;
}
.section-content-block--no-image .section-content-block__content h3 {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.6rem;
  color: var(--primary);
  margin: 2.25rem 0 0.75rem;
  line-height: 1.3;
}
.section-content-block--no-image .section-content-block__content ul {
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem;
}
.section-content-block--no-image .section-content-block__content ul li {
  position: relative;
  padding: 0.4rem 0 0.4rem 1.5rem;
  border-bottom: 1px solid var(--border);
  color: var(--text);
  font-size: 1rem;
}
.section-content-block--no-image .section-content-block__content ul li:last-child { border-bottom: none; }
.section-content-block--no-image .section-content-block__content ul li::before {
  content: "♪";
  position: absolute;
  left: 0;
  color: var(--secondary);
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.9rem;
  top: 0.55rem;
}
.section-content-block--no-image .section-content-block__quote--feature {
  max-width: 720px;
  margin: 2rem auto;
}

/* ------------------------------------------------------------
   38 · Optional outro note (section-intro-text--note)
   Use under any section-floor-plans (or anywhere) to add an
   optional "Custom Curated Collection / Inquire" follow-up.
   Add the `section-intro-text--note` modifier to the section.
------------------------------------------------------------ */
.section-intro-text.section-intro-text--note {
  padding-top: 2.5rem;
  padding-bottom: 4rem;
}
.section-intro-text--note .section-intro-text__inner {
  max-width: 720px;
  text-align: center;
  padding: 2.5rem 2rem;
  background: var(--cream);
  border-left: 2px solid var(--secondary);
}
.section-intro-text--note .section-intro-text__preheader { margin-bottom: 0.5rem; }
.section-intro-text--note .section-intro-text__header {
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  font-style: italic;
  margin: 0 0 0.75rem;
}
.section-intro-text--note .section-intro-text__content p {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--text-muted);
  margin: 0;
}
.section-intro-text--note .section-intro-text__content em {
  color: var(--primary);
  font-style: italic;
}
.section-intro-text--note .btn {
  font-size: 0.7rem;
  letter-spacing: 0.24em;
  padding: 12px 28px;
}

/* ------------------------------------------------------------
   34 · Card grid — flex-centered (parity with base; any 1–4 count centers)
------------------------------------------------------------ */
.section-card-grid__list { display: flex; flex-wrap: wrap; justify-content: center; }
.section-card-grid__card { flex: 0 1 calc((100% - 5rem) / 3); }            /* gap 2.5rem · 3-up */
.section-card-grid--text-only .section-card-grid__list { display: flex; }
.section-card-grid--text-only .section-card-grid__card { flex: 0 1 calc((100% - 7.5rem) / 4); }  /* 4-up */
@media (max-width: 1024px) { .section-card-grid--text-only .section-card-grid__card { flex-basis: calc((100% - 2.5rem) / 2); } }
@media (max-width: 860px)  { .section-card-grid__card { flex-basis: calc((100% - 2.5rem) / 2); } }
@media (max-width: 600px)  { .section-card-grid__card,
                             .section-card-grid--text-only .section-card-grid__card { flex-basis: 100%; } }

/* ------------------------------------------------------------
   35 · Wedding packages (section-wedding-packages) — text-first bloom cards
       Ported from the section-14 floor-plans "wedding packages" look onto the
       dedicated packages block.
------------------------------------------------------------ */
.section-wedding-packages { padding: var(--section-pad) 0; background: var(--cream); }
.section-wedding-packages__inner { overflow: visible; }
.section-wedding-packages__filters { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 3rem; }
.section-wedding-packages__filter {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 10px 22px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}
.section-wedding-packages__filter--active { background: var(--primary); color: var(--accent); border-color: var(--primary); }
.section-wedding-packages__list { gap: 1.5rem; padding-top: 14px; overflow: visible; }
.section-wedding-packages__package {
  flex: 0 1 calc((100% - 4.5rem) / 4);          /* gap 1.5rem · 4-up */
  background: var(--accent-2);
  border: 1px solid var(--border);
  overflow: visible;                            /* lets the badge sit above the card */
  transition: all .35s ease;
}
.section-wedding-packages__package:hover { transform: translateY(-6px); box-shadow: var(--shadow-soft); border-color: var(--gold-light); }
.section-wedding-packages__package-media { display: none; }   /* text-first cards */
.section-wedding-packages__package-body { padding: 2.75rem 2rem 2.25rem; text-align: center; }
.section-wedding-packages__package-title {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2rem;
  color: var(--primary);
  margin: 0 0 0.25rem;
}
.section-wedding-packages__package-title::before {
  content: "❀";
  display: block;
  font-style: normal;
  color: var(--secondary);
  font-size: 0.9rem;
  letter-spacing: 0.4em;
  margin-bottom: 0.75rem;
  font-family: var(--font-body);
}
.section-wedding-packages__package-badge {
  position: absolute;
  top: -14px; left: 50%; right: auto;
  transform: translateX(-50%);
  background: var(--secondary);
  color: #fff;
  font-family: var(--font-body);
  font-size: 0.6rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  padding: 6px 18px;
  border-radius: 0;
  white-space: nowrap;
  z-index: 3;
  box-shadow: 0 4px 14px -4px rgba(73, 37, 48, 0.4);
}
.section-wedding-packages__package-stats {
  list-style: none; padding: 0; margin: 1.25rem 0 1.5rem;
  display: flex; flex-direction: column;
  border-top: 1px solid var(--border);
}
.section-wedding-packages__package-stats li {
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--border);
  font-size: 0.88rem;
  color: var(--text-muted);
}
.section-wedding-packages__package-stats li:first-child {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 2rem;
  color: var(--primary);
  padding: 1.25rem 0 0.75rem;
  border-bottom: 1px solid var(--gold-light);
}
.section-wedding-packages__package-cta {
  margin-top: auto;
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--accent);
  background: var(--primary);
  padding: 14px 24px;
  border: 1px solid var(--primary);
  transition: all .3s ease;
}
.section-wedding-packages__package-cta:hover { background: var(--secondary); border-color: var(--secondary); color: #fff; }
@media (max-width: 1024px) { .section-wedding-packages__package { flex-basis: calc((100% - 1.5rem) / 2); } }
@media (max-width: 600px)  { .section-wedding-packages__package { flex-basis: 100%; } }

/* ------------------------------------------------------------
   36 · Embedded video (YouTube/Vimeo iframe) in content-block media —
       same framed treatment as <video> / <img>.
------------------------------------------------------------ */
.section-content-block__media iframe,
.section-service-pillar__media iframe {
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  display: block;
  border: 0;
  box-shadow: var(--shadow-soft);
  background: var(--cream);
}


/* ████████████████████████████████████████████████████████████
   MODO MENU HOOKS — the CMS fills data-modo-menu containers with
   <li.modo-menu__item><a.modo-menu__link> markup (active class baked
   per page). These rules give that generated markup the same look as
   the original hand-coded nav. Footer menu links inherit .site-footer__nav a.
   ████████████████████████████████████████████████████████████ */

/* ── Desktop primary nav ─────────────────────────────────── */
.site-header__nav-list { list-style: none; margin: 0; padding: 0; }
.site-header__nav-list > .modo-menu__item { position: relative; }
.site-header__nav-list .modo-menu__link,
.site-header__nav-list .modo-menu__text {
  font-family: var(--font-body);
  font-size: 0.74rem;
  font-weight: 400;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--text);
  position: relative;
}
.site-header__nav-list .modo-menu__link:hover { color: var(--primary); }
.site-header__nav-list .modo-menu__link::after {
  content: ""; position: absolute; left: 50%; bottom: -8px;
  width: 0; height: 1px; background: var(--secondary);
  transition: width .3s ease, left .3s ease;
}
.site-header__nav-list .modo-menu__link:hover::after,
.site-header__nav-list .modo-menu__item.is-active > .modo-menu__link::after { width: 100%; left: 0; }
.site-header__nav-list .modo-menu__item.is-active > .modo-menu__link { color: var(--primary); }

/* ── Mobile primary nav (same "primary" menu key) ────────── */
.mobile-nav__list { list-style: none; margin: 0; padding: 0; }
.mobile-nav__list .modo-menu__link,
.mobile-nav__list .modo-menu__text {
  font-size: 1.25rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--text);
}
.mobile-nav__list .modo-menu__item.is-active > .modo-menu__link { color: var(--secondary); }

/* ── Dropdown / mega support (no current items; ready if added) ─ */
.modo-menu__panel, .modo-menu__mega { list-style: none; margin: 0; padding: .5rem 0; }
.site-header__nav-list .modo-menu__item.is-dropdown .modo-menu__panel,
.site-header__nav-list .modo-menu__item.is-mega .modo-menu__mega {
  display: none; position: absolute; top: 100%; left: 0;
  background: var(--accent-2); border: 1px solid var(--border);
  min-width: 200px; box-shadow: var(--shadow-soft); z-index: 200;
}
.site-header__nav-list .modo-menu__item.is-dropdown:hover .modo-menu__panel,
.site-header__nav-list .modo-menu__item.is-mega:hover .modo-menu__mega,
.site-header__nav-list .modo-menu__item.is-open .modo-menu__panel,
.site-header__nav-list .modo-menu__item.is-open .modo-menu__mega { display: block; }
.modo-menu__panel .modo-menu__link { display: block; padding: .5rem 1rem; }
.modo-menu__mega { display: grid; grid-auto-flow: column; gap: 1.5rem; padding: 1.5rem; }
.modo-menu__group { list-style: none; }
.modo-menu__col-title { display: block; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--secondary); margin-bottom: .5rem; }
.modo-menu__toggle { background: none; border: 0; cursor: pointer; color: inherit; font: inherit; }

/* ── Footer menu: links already covered by .site-footer__nav a; reset list ─ */
.site-footer__nav ul[data-modo-menu] { list-style: none; margin: 0; padding: 0; }
.site-footer__nav .modo-menu__item.is-active > .modo-menu__link { color: var(--secondary); }


/* ── Portrait video frame (YouTube Short on the homepage) ────
   Scoped to the --portrait figure so other content-block iframes stay 16:9. */
.section-content-block__media--portrait { max-width: 340px; margin-inline: auto; }
.section-content-block__media--portrait iframe { aspect-ratio: 9 / 16; }
