.weddings-page {
  --wedding-sage: #dce0d2;
  --wedding-deep: #293427;
  --wedding-rule: rgba(41, 52, 39, .2);
  --wedding-offset: 78px;
}

.weddings-page .wedding-hero {
  padding: 0;
  background: var(--wedding-sage);
  color: var(--wedding-deep);
  border-bottom: 1px solid var(--wedding-rule);
}

.wedding-bridal-suite {
  scroll-margin-top: var(--wedding-offset);
  padding-block: clamp(38px, 5vw, 64px) !important;
  background: #eeece3;
  border-block: 1px solid var(--wedding-rule);
}
.wedding-bridal-suite-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-areas:
    "photo heading"
    "photo note";
  align-items: center;
  column-gap: clamp(30px, 5vw, 68px);
  row-gap: 12px;
  padding: clamp(20px, 3vw, 38px);
  background: rgba(249, 247, 240, .7);
  border: 1px solid rgba(41, 52, 39, .12);
}
.wedding-bridal-suite-photo { grid-area: photo; min-width: 0; margin: 0; }
.wedding-bridal-suite-photo img {
  width: 100%;
  aspect-ratio: 1632 / 1216;
  object-fit: cover;
  background: #d9d7ca;
}
.wedding-bridal-suite-photo figcaption { margin-top: 7px; }
.wedding-bridal-suite-copy { grid-area: heading; max-width: none; align-self: end; }
.wedding-bridal-suite-copy .eyebrow { color: #58624e; }
.wedding-bridal-suite-copy h2 { max-width: none; margin-bottom: 0; }
.wedding-bridal-suite-note { grid-area: note; align-self: start; }
.wedding-bridal-suite-note p { max-width: 42ch; margin: 0; color: #505448; }

.weddings-page .wedding-hero-layout {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  align-items: center;
  gap: clamp(28px, 4vw, 56px);
  max-width: 1280px;
  min-height: 540px;
  padding-inline: clamp(20px, 3vw, 48px);
  padding-top: 32px;
  padding-bottom: 32px;
}
.wedding-hero-copy { max-width: 520px; }
.wedding-hero-support {
  max-width: 48ch;
  margin: 17px 0 0;
  color: #58624e;
  font-size: 12px;
  line-height: 1.65;
  letter-spacing: .055em;
}
.weddings-page .wedding-hero .eyebrow { color: #58624e; }
.weddings-page .wedding-hero .page-title {
  max-width: 19ch;
  font-size: clamp(44px, 4.2vw, 60px);
  line-height: 1;
}
.weddings-page .wedding-hero .lede { max-width: 37ch; color: #414b3d; }
.wedding-hero-photo {
  position: relative;
  width: 100%;
  margin: 0;
  overflow: hidden;
  background: #c8c8b8;
}
.wedding-hero-photo img {
  width: 100%;
  height: clamp(440px, 44vw, 590px);
  object-fit: cover;
  object-position: center 52%;
}
.wedding-hero-photo figcaption {
  position: absolute;
  right: 14px;
  bottom: 13px;
  padding: 6px 10px;
  background: rgba(38, 47, 36, .76);
  color: #f5f1e8;
  font-size: 10px;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.wedding-inquiry-button {
  display: inline-flex;
  align-items: center;
  margin-top: 18px;
  background: var(--wedding-deep);
  color: var(--cream);
}
.wedding-hero-copy .wedding-inquiry-button { margin-top: 19px; }
.weddings-page #wedding-lake-hall .wedding-inquiry-button,
.wedding-date-cta .wedding-inquiry-button {
  justify-content: center;
  min-height: 46px;
  padding: 12px 18px;
}
.wedding-inquiry-button:hover { background: #46513a; }
.wedding-inquiry-button:focus-visible { outline: 2px solid #8c7548; outline-offset: 4px; }
.wedding-date-cta { margin-top: 14px; }

.weddings-page > .section { padding-block: clamp(36px, 4vw, 56px); }
.weddings-page #wedding-lake-hall { padding-bottom: 24px; }
.weddings-page #wedding-lake-hall figure { margin: 0; }
.wedding-lake-hall-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr);
  align-items: center;
  gap: clamp(28px, 4vw, 54px);
}
.wedding-lake-hall-photos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: clamp(12px, 1.7vw, 22px);
}
.wedding-lake-hall-photos figure { min-width: 0; }
.wedding-lake-hall-photos img {
  display: block;
  width: 100%;
  height: auto;
  background: #d9d7ca;
}
.wedding-lake-hall-photos figcaption {
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.wedding-lake-hall-copy { max-width: 520px; }
.wedding-lake-hall-copy h2 { max-width: 16ch; }
.wedding-gallery-section { padding-top: 32px; padding-bottom: 36px; }
.wedding-gallery-heading {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  align-items: end;
  gap: 48px;
  margin-bottom: 42px;
}
.wedding-gallery-heading h2 { max-width: 18ch; margin-bottom: 0; }
.wedding-gallery-heading > p {
  max-width: 39ch;
  margin: 0 0 5px;
  color: var(--muted);
  font-size: 17px;
}

.wedding-gallery {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(16px, 2.2vw, 30px) clamp(12px, 1.6vw, 22px);
  align-items: start;
}
.wedding-gallery figure { min-width: 0; margin: 0; }
.wedding-gallery .gallery-feature { grid-column: span 8; }
.wedding-gallery .gallery-tall { grid-column: span 4; }
.wedding-gallery figure:not(.gallery-feature, .gallery-tall, .gallery-wide) { grid-column: span 4; }
.wedding-gallery .gallery-wide { grid-column: span 4; }
.gallery-photo,
.wedding-space-photo {
  display: block;
  overflow: hidden;
  background: #d9d7ca;
}
.wedding-space-photo { cursor: zoom-in; }
.wedding-space-photo:focus-visible {
  outline: 2px solid var(--wedding-deep);
  outline-offset: 4px;
}
.wedding-gallery .gallery-photo img {
  width: 100%;
  height: clamp(290px, 35vw, 470px);
  aspect-ratio: auto;
  object-fit: cover;
  transition: transform .5s cubic-bezier(.2,.65,.25,1);
}
.wedding-gallery .gallery-feature .gallery-photo img,
.wedding-gallery .gallery-feature + .gallery-tall .gallery-photo img { height: clamp(310px, 42vw, 560px); }
.gallery-photo:hover img, .gallery-photo:focus-visible img { transform: scale(1.025); }
.wedding-gallery figcaption {
  display: grid;
  gap: 4px;
  padding-top: 11px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.wedding-gallery figcaption span:first-child {
  color: var(--wedding-deep);
  font-size: 10px;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.wedding-valley {
  scroll-margin-top: var(--wedding-offset);
  padding-top: clamp(44px, 6vw, 76px);
  padding-bottom: clamp(54px, 7vw, 88px);
  background: #e8e8dc;
  border-top: 1px solid var(--wedding-rule);
}
.wedding-valley-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 9px;
  margin-bottom: 27px;
}
.wedding-valley-heading .eyebrow { color: #58624e; }
.wedding-valley-heading h2 { max-width: none; margin: 0; }
.wedding-valley-heading > p {
  max-width: 66ch;
  margin: 0;
  color: #505448;
}
.wedding-valley-photo { margin: 0; }
.wedding-valley-photo img {
  width: 100%;
  height: auto;
  object-fit: contain;
  background: #d9d7ca;
}
.wedding-valley-photo figcaption { margin-top: 9px; }

.wedding-pricing {
  padding-top: clamp(54px, 7vw, 88px);
  scroll-margin-top: var(--wedding-offset);
  border-top: 1px solid var(--wedding-rule);
}
.wedding-select-note {
  max-width: 68ch;
  margin: 0 0 26px;
  padding-left: 18px;
  border-left: 2px solid #8c947e;
}
.wedding-select-note a { text-underline-offset: 3px; }
.wedding-pricing-intro { margin-bottom: 30px; }
.wedding-pricing-intro .eyebrow { color: #58624e; }
.wedding-pricing-intro h2 { margin-bottom: 8px; }
.wedding-pricing-intro > p { margin: 0; color: var(--muted); }
.wedding-pricing .grid-2 { align-items: stretch; }
.wedding-pricing .card {
  background: #fbf9f4;
  border: 1px solid rgba(41, 52, 39, .18);
}
.weddings-page .wedding-offer {
  display: flex;
  flex-direction: column;
  min-width: 0;
  transition: transform .24s ease, border-color .24s ease;
}
.weddings-page .wedding-offer:hover {
  transform: translateY(-3px);
  border-color: rgba(41, 52, 39, .42);
}
.wedding-offer > div { padding: 0; }
.wedding-offer-heading { padding: 27px 28px 22px !important; }
.wedding-offer-heading .eyebrow {
  margin: 0 0 10px;
  color: #65705b;
  font-size: 10px;
  letter-spacing: .16em;
}
.wedding-offer-heading h2 { margin: 0 0 8px; font-size: clamp(36px, 4vw, 48px); }
.wedding-price {
  padding: 0 !important;
  color: var(--wedding-deep);
  font-family: var(--serif);
  font-size: 30px;
  line-height: 1.2;
  margin: 0 0 8px;
}
.wedding-offer-pricing {
  margin: auto 28px 0;
  padding-top: 24px;
  color: var(--wedding-deep);
}
.wedding-offer-pricing summary {
  display: list-item;
  min-height: 44px;
  padding-block: 10px;
  border-top: 1px solid rgba(41, 52, 39, .12);
  color: #626354;
  cursor: pointer;
  font-size: 14px;
  letter-spacing: .04em;
}
.wedding-offer-pricing summary::marker { color: #858777; }
.wedding-offer-pricing summary:focus-visible {
  outline: 2px solid var(--olive);
  outline-offset: 4px;
}
.wedding-offer .wedding-price-detail { padding: 10px 0 0; }
.wedding-price-detail .caption { margin: 0; }
.wedding-weekday-note {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.6;
}
.wedding-offer-description { max-width: 52ch; margin: 0; color: #505448; }
.wedding-inclusions {
  margin: 0 28px;
  padding: 21px 0 0 !important;
  border-top: 1px solid var(--wedding-rule);
}
.wedding-inclusions h3 {
  margin: 0 0 12px;
  color: var(--wedding-deep);
  font-size: 25px;
}
.wedding-inclusions ul {
  display: grid;
  gap: 9px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.wedding-inclusions li {
  position: relative;
  padding-left: 19px;
  color: #454a3f;
  font-size: 15px;
  line-height: 1.5;
}
.wedding-inclusions li::before {
  position: absolute;
  top: .7em;
  left: 1px;
  width: 6px;
  height: 6px;
  border: 1px solid #78816c;
  border-radius: 50%;
  content: "";
}
.wedding-inherits {
  margin: 0 0 15px;
  color: #505448;
  font-size: 14px;
  line-height: 1.55;
}
.wedding-practical-note {
  margin: 17px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}
.wedding-offer-action {
  margin: 0 28px 28px;
  padding-top: 22px;
}
.wedding-offer .button {
  display: inline-flex;
  align-items: center;
  min-height: 46px;
  background: var(--olive);
  color: var(--cream);
}
.wedding-offer .button:hover { background: #46513a; }
.wedding-comparison { border: 1px solid var(--wedding-rule); }
.wedding-comparison thead th { background: #303a28; }
.wedding-comparison tbody tr:last-child th,
.wedding-comparison tbody tr:last-child td { border-bottom: 0; }

.wedding-lightbox {
  position: fixed;
  width: min(1180px, calc(100% - 36px));
  height: min(92dvh, 920px);
  max-width: none;
  max-height: none;
  padding: 22px 72px 38px;
  overflow: hidden;
  border: 1px solid rgba(245, 241, 232, .25);
  background: #20271f;
  color: var(--cream);
}
.wedding-lightbox::backdrop { background: rgba(15, 19, 14, .9); }
.lightbox-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.lightbox-caption { margin: 0; color: rgba(245, 241, 232, .84); font-size: 14px; }
.lightbox-close {
  min-height: 44px;
  flex: 0 0 auto;
  display: inline-flex;
  gap: 12px;
  align-items: center;
  padding: 8px 0 8px 12px;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
}
.lightbox-close span { font-size: 24px; line-height: 1; }
.lightbox-image {
  position: absolute;
  inset: 76px 72px 52px;
  width: calc(100% - 144px);
  height: calc(100% - 128px);
  max-width: none;
  object-fit: contain;
}
.lightbox-step {
  position: absolute;
  z-index: 1;
  top: 50%;
  width: 44px;
  height: 52px;
  transform: translateY(-50%);
  border: 1px solid rgba(245, 241, 232, .42);
  background: rgba(32, 39, 31, .78);
  color: var(--cream);
  font: inherit;
  font-size: 22px;
  cursor: pointer;
}
.lightbox-prev { left: 16px; }
.lightbox-next { right: 16px; }
.lightbox-count {
  position: absolute;
  right: 22px;
  bottom: 8px;
  margin: 0;
  color: rgba(245, 241, 232, .65);
  font-size: 11px;
  letter-spacing: .13em;
}

@media (max-width: 860px) {
  .weddings-page .wedding-hero {
    min-height: 0;
    padding: 0;
    display: block;
    background-color: var(--wedding-sage);
    background-image: none;
    color: var(--wedding-deep);
  }
  .weddings-page .wedding-hero::before { display: none; }
  .weddings-page .wedding-hero-layout {
    width: 100%;
    max-width: none;
    min-height: 0;
    grid-template-columns: 1fr;
    gap: 0;
    padding: 0;
  }
  .wedding-hero-photo { grid-row: 1; }
  .wedding-hero-photo img { height: auto; aspect-ratio: 1.22; object-position: center 51%; }
  .wedding-hero-copy { grid-row: 2; width: 100%; max-width: 700px; padding: 30px 20px 35px; }
  .wedding-hero-support { max-width: 46ch; }
  .weddings-page .wedding-hero .page-title {
    max-width: none;
    font-size: clamp(36px, 6vw, 48px);
    line-height: 1.06;
  }
  .wedding-gallery-heading { grid-template-columns: 1fr; gap: 14px; margin-bottom: 28px; }
  .wedding-lake-hall-layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .wedding-lake-hall-copy { max-width: 620px; }
  .wedding-bridal-suite-layout {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "heading" "photo" "note";
    gap: 15px;
    padding: clamp(18px, 5vw, 28px);
  }
  .wedding-bridal-suite-copy { align-self: auto; }
  .wedding-bridal-suite-copy h2 { max-width: none; margin-bottom: 0; }
  .wedding-bridal-suite-note { margin-top: -2px; }
  .wedding-gallery-heading > p { font-size: 16px; }
  .wedding-valley-heading { gap: 10px; margin-bottom: 22px; }
  .wedding-valley-heading > p { font-size: 16px; }
  .wedding-gallery { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px 12px; }
  .wedding-gallery .gallery-feature { grid-column: span 6; }
  .wedding-gallery .gallery-tall { grid-column: span 3; }
  .wedding-gallery figure:not(.gallery-feature, .gallery-tall, .gallery-wide),
  .wedding-gallery .gallery-wide { grid-column: span 3; }
  .wedding-gallery .gallery-photo img,
  .wedding-gallery .gallery-feature + .gallery-tall .gallery-photo img { height: clamp(250px, 58vw, 420px); }
  .wedding-gallery .gallery-feature .gallery-photo img { height: clamp(265px, 63vw, 470px); }
  .wedding-pricing { scroll-margin-top: 78px; }
}

@media (max-width: 600px) {
  .weddings-page .wedding-hero {
    min-height: 0;
    padding: 0;
  }
  .weddings-page > .section { padding-block: 32px; }
  .wedding-hero-copy { padding: 26px 20px 31px; }
  .weddings-page .wedding-hero .page-title { font-size: clamp(35px, 9vw, 46px); }
  .wedding-hero-support { font-size: 11px; line-height: 1.6; }
  .weddings-page #wedding-lake-hall { padding-bottom: 16px; }
  .wedding-lake-hall-photos { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .wedding-lake-hall-photos figcaption { font-size: 11px; }
  .wedding-bridal-suite { padding-block: 28px !important; }
  .wedding-bridal-suite-layout { gap: 13px; }
  .wedding-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 23px 12px; }
  .wedding-gallery .gallery-feature { grid-column: span 2; }
  .wedding-gallery .gallery-tall { grid-column: span 1; }
  .wedding-gallery figure:not(.gallery-feature, .gallery-tall, .gallery-wide),
  .wedding-gallery .gallery-wide { grid-column: span 1; }
  .wedding-gallery .gallery-photo img,
  .wedding-gallery .gallery-feature + .gallery-tall .gallery-photo img { height: clamp(220px, 64vw, 320px); }
  .wedding-gallery .gallery-feature .gallery-photo img { height: clamp(235px, 72vw, 360px); }
  .wedding-gallery figcaption { font-size: 12px; }
  .wedding-select-note { margin-bottom: 24px; }
  .wedding-pricing-intro { margin-bottom: 24px; }
  .wedding-offer-heading { padding: 22px 20px 19px !important; }
  .wedding-inclusions { margin-inline: 20px; }
  .wedding-offer-pricing { margin-inline: 20px; }
  .wedding-offer-action { margin: 0 20px 21px; }
  .wedding-offer-heading h2 { font-size: 39px; }
  .wedding-inclusions li { font-size: 14px; }
  .wedding-offer:hover { transform: none; }
  .wedding-lightbox {
    width: 100%;
    height: 100%;
    padding: 18px 14px 32px;
    border: 0;
  }
  .lightbox-image {
    inset: 78px 10px 52px;
    width: calc(100% - 20px);
    height: calc(100% - 130px);
  }
  .lightbox-prev { left: 8px; }
  .lightbox-next { right: 8px; }
  .lightbox-count { right: 16px; bottom: 7px; }
}

@media (prefers-reduced-motion: reduce) {
  .gallery-photo img,
  .weddings-page .wedding-offer { transition: none; }
  .weddings-page .wedding-offer:hover { transform: none; }
}
