/* Keep event pages on the same restrained typographic system as the home page. */
main :is(.hero, .w-hero, .event-hero) h1,
main :is(.hero, .w-hero, .event-hero) h1 :is(span, em, strong, b) {
  font-family: 'Cormorant Garamond', Georgia, serif !important;
  font-style: normal;
  font-weight: 400;
}

/* A split-color word is fine; the typeface and weight stay consistent. */
html[data-page="home"] .hero h1 > span {
  font-family: 'Cormorant Garamond', Georgia, serif !important;
  font-weight: 400;
}

/* Match the homepage hero scale and left alignment on every inner page. */
html:not([data-page="home"]) main :is(.hero, .w-hero, .event-hero) :is(.hero-content, .w-hero-copy),
html:not([data-page="home"]) main :is(.hero, .w-hero, .event-hero) h1 {
  text-align: left;
}

html:not([data-page="home"]) main :is(.hero, .w-hero, .event-hero) h1 {
  font-size: clamp(46px, 5.1vw, 72px) !important;
  line-height: .94 !important;
  letter-spacing: -.025em;
}

@media (max-width: 760px) {
  html:not([data-page="home"]) main :is(.hero, .w-hero, .event-hero) h1 {
    font-size: clamp(40px, 11vw, 52px) !important;
    line-height: 1.02 !important;
  }
}

/* Align the final step copy to the lower edge of its photo on desktop. */
@media (min-width: 761px) {
  :is(#approach, .unified-process) .steps.carousel-track > .step,
  .event-process .steps.carousel-track > .step,
  .business-editorial .event-process .steps.carousel-track > .step {
    height: 420px;
    min-height: 0;
    grid-template-rows: minmax(0, 1fr) auto auto;
  }

  :is(#approach, .unified-process) .steps .step img,
  .event-process .steps .step img,
  .business-editorial .event-process .steps .step img {
    height: 100%;
    min-height: 0;
    object-fit: cover;
  }

  :is(#approach, .unified-process) .steps .step .number,
  .event-process .steps .step .number,
  .business-editorial .event-process .steps .step .number {
    grid-row: 1;
    align-self: start;
  }

  :is(#approach, .unified-process) .steps .step h3,
  .event-process .steps .step h3,
  .business-editorial .event-process .steps .step h3 {
    grid-row: 2;
    align-self: end;
  }

  :is(#approach, .unified-process) .steps .step p,
  .event-process .steps .step p,
  .business-editorial .event-process .steps .step p {
    grid-row: 3;
    align-self: end;
    margin-bottom: 0;
  }
}

/* Every cinematic evening banner gets the same wine-colored image wash. */
.evening-banner {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background-color: #4b1427;
}

.evening-banner::after {
  content: '';
  display: block !important;
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(
    90deg,
    #4b1427e8 0%,
    #4b1427d9 24%,
    #4b1427a8 48%,
    #4b14275c 72%,
    #4b142726 100%
  ) !important;
}

/* CMS banner sections use .banner even when the editor has not added the
   optional evening-banner class. Keep the homepage wash on those blocks too. */
main .banner::after,
.banner.evening-banner::after {
  display: block !important;
  background: linear-gradient(
    90deg,
    #4b1427e8 0%,
    #4b1427d9 24%,
    #4b1427a8 48%,
    #4b14275c 72%,
    #4b142726 100%
  ) !important;
}

.evening-banner > :is(img, video) {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.evening-banner > div {
  position: relative;
  z-index: 1;
}

.evening-banner :is(h1, h2, h3, p, .eyebrow, .w-eyebrow) {
  position: relative;
  z-index: 1;
  color: #fff !important;
}

.banner :is(h1, h2, h3, p, .eyebrow, .w-eyebrow) {
  position: relative;
  z-index: 1;
  color: #fff !important;
}

@media (max-width: 760px) {
  main .banner::after,
  .evening-banner::after {
    background: linear-gradient(
      180deg,
      #4b142726 0%,
      #4b142766 48%,
      #4b1427e8 100%
    ) !important;
  }
}

/* Dinner landing page: place the film below the still-image hero and use the
   same left edge as the homepage editorial grid. */
.dinner-page .hero.dark > .wrap {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
}

.dinner-page .hero.dark .hero-content,
.dinner-page .hero.dark :is(h1, h2, p) {
  text-align: left;
}

.dinner-page .hero.dark > .photo.dinner-still img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* A gentle additional wash keeps the dinner hero copy readable over bright
   highlights while retaining the warm light and detail in the photograph. */
.dinner-page .hero.dark::after {
  background:
    linear-gradient(90deg, #160d11ca 0%, #160d1180 48%, #160d111f 100%),
    linear-gradient(0deg, #160d11c4 0%, #160d1138 52%, #160d1114 100%) !important;
}

.dinner-film {
  padding: clamp(44px, 6vw, 86px) 0;
  background: #f0e6df;
}

.dinner-film .wrap {
  width: min(90%, 1240px);
}

.dinner-film h2 {
  margin: 12px 0 26px;
  color: #681024;
  font: 400 clamp(34px, 4.5vw, 58px)/1 'Cormorant Garamond', Georgia, serif;
}

.dinner-film-frame {
  overflow: hidden;
  border-radius: 16px;
  background: #1b1113;
  box-shadow: 0 20px 55px #34151c1c;
}

.dinner-film-frame video {
  display: block;
  width: 100%;
  max-height: 78vh;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Full-bleed photo stretch, with a gradual wine wash instead of a solid block. */
.dinner-page main > .dinner-evening-banner {
  width: 100vw;
  min-height: clamp(420px, 58vw, 720px);
  margin-inline: calc(50% - 50vw);
  padding: clamp(44px, 7vw, 100px) 7%;
  background: #35121d;
  overflow: hidden;
}

.dinner-page .dinner-evening-banner > picture {
  position: absolute;
  inset: 0;
  z-index: -2;
  display: block;
  width: 100%;
  height: 100%;
}

.dinner-page .dinner-evening-banner > picture img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 52%;
}

.dinner-page .dinner-evening-banner::after {
  z-index: -1;
  background: linear-gradient(90deg, #3f1028e8 0%, #4b1427c9 29%, #4b14277a 58%, #4b142721 100%) !important;
}

.dinner-page .dinner-evening-banner > div {
  position: relative;
  z-index: 1;
  width: min(100%, 760px);
}

.dinner-page .dinner-evening-banner h2 {
  max-width: 14ch;
  color: #fff !important;
  font: 400 clamp(38px, 5.3vw, 76px)/.98 'Cormorant Garamond', Georgia, serif;
  letter-spacing: -.02em;
}

.dinner-page .dinner-evening-banner p {
  color: #fff !important;
}

/* Four-image horizontal editorial strip for the intimate dinner portfolio. */
.dinner-page .dinner-gallery {
  padding: clamp(55px, 7vw, 96px) 0;
}

.dinner-page .dinner-gallery-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(10px, 1.5vw, 20px);
  margin-top: clamp(24px, 3.5vw, 44px);
}

.dinner-page .dinner-gallery-strip figure {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 1px solid #68102418;
  border-radius: 12px;
  background: #f8f3ee;
  box-shadow: 0 12px 34px #35151b0d;
}

.dinner-page .dinner-gallery-strip img {
  display: block;
  width: 100%;
  aspect-ratio: 1.3;
  object-fit: cover;
  transition: transform .7s cubic-bezier(.2,.7,.2,1);
}

.dinner-page .dinner-gallery-strip figure:hover img {
  transform: scale(1.035);
}

.dinner-page .dinner-gallery-strip figcaption {
  padding: 12px 14px 14px;
  color: #6d5f5d;
  font: 500 10px/1.5 'Manrope', sans-serif;
  letter-spacing: .035em;
}

.dinner-page header nav#navigation {
  display: flex !important;
  flex: 1 1 auto;
  justify-content: center;
  gap: clamp(14px, 2vw, 30px);
  min-width: 0;
}

.dinner-page header nav#navigation a {
  display: inline-flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  color: #681024 !important;
  font-size: 10px;
  white-space: nowrap;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) {
  padding: clamp(50px, 7vw, 90px) 0;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) > .cms-section-copy {
  width: min(90%, 1240px);
  padding: 0;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) > .cms-section-copy > h2 {
  width: 100%;
  max-width: none;
  white-space: nowrap;
  color: #681024;
  font: 400 clamp(36px, 5vw, 62px)/.98 'Cormorant Garamond', Georgia, serif;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .cms-section-text {
  max-width: 55ch;
  margin-top: 15px;
  color: #6d5f5d;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-carousel {
  margin-top: 28px;
}

/* The dinner detail cards need the same layered fan behavior as the homepage. */
:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid {
  position: relative;
  display: block;
  height: 390px;
  overflow: hidden;
  padding: 0;
  scroll-snap-type: none;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid > .care-item {
  position: absolute;
  top: 8px;
  left: 50%;
  display: flex;
  width: min(340px, 34%);
  height: 330px;
  min-height: 0;
  margin-left: -170px;
  padding: 30px;
  border: 1px solid #68102420;
  border-radius: 8px;
  background: linear-gradient(145deg, #fffaf5 0%, #f0e3dc 100%);
  box-shadow: 0 22px 55px #34151b24;
  color: #251b1b;
  opacity: var(--card-opacity, 1);
  transform: translateX(var(--card-x, 0)) translateY(var(--card-y, 0)) rotate(var(--card-angle, 0));
  transition: transform .72s cubic-bezier(.22,.68,.2,1), opacity .45s ease, box-shadow .45s ease;
  z-index: var(--card-z, 1);
  cursor: pointer;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-item .care-number {
  margin: 0 0 auto;
  color: #a66f7d;
  font: 400 48px/1 'Cormorant Garamond', Georgia, serif;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-item h3 {
  margin: 28px 0 12px;
  color: #681024;
  font: 400 29px/1.05 'Cormorant Garamond', Georgia, serif;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-item p {
  margin: 0;
  color: #6d5f5d;
  font: 400 13px/1.65 'Manrope', sans-serif;
}

.dinner-page .dinner-gallery {
  padding-bottom: clamp(100px, 11vw, 160px);
}

.dinner-page .dinner-gallery-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 30px;
}

.dinner-page .dinner-gallery-heading h2 {
  max-width: 17ch;
  margin: 12px 0 0;
  color: #681024;
  font: 400 clamp(40px, 5vw, 68px)/.96 'Cormorant Garamond', Georgia, serif;
}

.dinner-page .dinner-gallery-controls {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 12px;
  margin-bottom: 5px;
}

.dinner-page .dinner-gallery-position {
  min-width: 74px;
  margin-right: 8px;
  color: #806d6a;
  font: 500 10px/1 'Manrope', sans-serif;
  letter-spacing: .12em;
}

.dinner-page .dinner-gallery-controls button {
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  border: 1px solid #9d737b70;
  border-radius: 50%;
  background: transparent;
  color: #681024;
  font: 21px/1 'Manrope', sans-serif;
  transition: color .25s ease, background .25s ease, border-color .25s ease;
}

.dinner-page .dinner-gallery-controls button:hover:not(:disabled) {
  border-color: #681024;
  background: #681024;
  color: #fffaf5;
}

.dinner-page .dinner-gallery-controls button:disabled { opacity: .35; }

.dinner-page .dinner-gallery-strip {
  display: flex;
  gap: clamp(14px, 1.8vw, 24px);
  overflow: hidden;
  margin-top: clamp(28px, 4vw, 52px);
  scroll-behavior: smooth;
  scroll-snap-type: x mandatory;
}

.dinner-page .dinner-gallery-strip figure {
  flex: 0 0 calc((100% - 2 * clamp(14px, 1.8vw, 24px)) / 3);
  overflow: hidden;
  aspect-ratio: 1.13;
  border: 1px solid #68102418;
  border-radius: 9px;
  background: #e8dbd4;
  box-shadow: 0 18px 46px #35151b12;
  scroll-snap-align: start;
}

.dinner-page .dinner-gallery-strip img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .8s cubic-bezier(.2,.7,.2,1);
}

.dinner-page .dinner-gallery-strip figure:hover img { transform: scale(1.035); }
.dinner-page .dinner-gallery-strip figcaption { display: none; }

@media (max-width: 1000px) and (min-width: 761px) {
  .dinner-page header nav#navigation { gap: 9px; }
  .dinner-page header nav#navigation a { font-size: 9px; }
  .dinner-page header .brand { width: 145px; }
}

@media (max-width: 760px) {
  .dinner-page .hero.dark > .wrap { padding: 0; }
  .dinner-page .dinner-evening-banner {
    min-height: 68svh;
    padding: 36px 6%;
  }
  .dinner-page .dinner-evening-banner::after {
    background: linear-gradient(180deg, #4b142726 0%, #4b142766 46%, #4b1427e8 100%) !important;
  }
  .dinner-page .dinner-evening-banner h2 { max-width: 12ch; font-size: clamp(36px, 10vw, 52px); }
  .dinner-page .dinner-gallery-strip {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin-right: -6vw;
    padding: 0 6vw 12px 0;
  }
  .dinner-page .dinner-gallery-strip::-webkit-scrollbar { display: none; }
  .dinner-page .dinner-gallery { padding-bottom: 90px; }
  .dinner-page .dinner-gallery-heading { align-items: start; flex-direction: column; gap: 22px; }
  .dinner-page .dinner-gallery-heading h2 { max-width: 14ch; font-size: clamp(38px, 10vw, 52px); }
  .dinner-page .dinner-gallery-controls { align-self: end; }
  .dinner-page .dinner-gallery-strip { overflow-x: auto; }
  .dinner-page .dinner-gallery-strip figure { flex: 0 0 78%; aspect-ratio: 1.05; scroll-snap-align: start; }
  :is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid {
    display: flex;
    height: auto;
    gap: 14px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    padding: 0 0 16px;
  }
  :is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid::-webkit-scrollbar { display: none; }
  :is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid > .care-item {
    position: relative;
    top: auto;
    left: auto;
    flex: 0 0 82%;
    width: auto;
    height: 290px;
    margin: 0;
    opacity: 1;
    transform: none;
    scroll-snap-align: start;
  }
  :is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-controls { display: none; }
  :is(.dinner-page .dinner-details-carousel, .inner-details-carousel) > .cms-section-copy > h2 {
    font-size: clamp(29px, 8vw, 42px);
  }
  /* On the dinner intro, exchange the tulle flourish and photo positions:
     tulle first, copy in the middle, photo closes the mobile block. */
  .dinner-page main > .split:has(.ribbon) {
    display: flex;
    flex-direction: column;
  }
  .dinner-page main > .split:has(.ribbon) > .split-copy {
    order: 1;
    display: flex;
    flex-direction: column;
  }
  .dinner-page main > .split:has(.ribbon) > picture:has(> .split-photo),
  .dinner-page main > .split:has(.ribbon) > .split-photo {
    order: 2;
    display: block;
    width: 100%;
  }
  .dinner-page main > .split:has(.ribbon) > :is(picture, .split-photo) .split-photo {
    display: block;
    width: 100%;
    height: 440px;
    max-height: none;
    object-fit: cover;
  }
  .dinner-page main > .split:has(.ribbon) > .split-copy > .ribbon {
    order: -1 !important;
    flex: 0 0 68px !important;
    height: 68px !important;
    max-height: 68px !important;
    margin: 0 0 22px !important;
  }
  .dinner-page main > .features {
    display: flex;
    grid-template-columns: none;
    gap: 14px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin-right: -6vw;
    padding: 30px 6vw 45px 0;
  }
  .dinner-page main > .features::-webkit-scrollbar { display: none; }
  .dinner-page main > .features > div {
    flex: 0 0 88%;
    min-width: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }
  .dinner-page header nav#navigation { display: none !important; }
  .dinner-page header nav#navigation.open { display: flex !important; }
}

/* On desktop, step text and the photograph share one bottom edge. */
@media (min-width: 761px) {
  :is(#approach, .unified-process) .steps.carousel-track > .step {
    display: grid !important;
    height: 420px !important;
    min-height: 0 !important;
    align-content: stretch !important;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) !important;
    grid-template-rows: minmax(0, 1fr) auto auto !important;
  }

  :is(#approach, .unified-process) .steps.carousel-track > .step > img,
  :is(#approach, .unified-process) .steps.carousel-track > .step > picture {
    display: block !important;
    grid-column: 1 !important;
    grid-row: 1 / 4 !important;
    align-self: stretch !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    overflow: hidden !important;
  }

  :is(#approach, .unified-process) .steps.carousel-track > .step > picture > img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    object-fit: cover !important;
  }

  :is(#approach, .unified-process) .steps.carousel-track > .step > .number {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start !important;
  }

  :is(#approach, .unified-process) .steps.carousel-track > .step > h3 {
    grid-column: 2 !important;
    grid-row: 2 !important;
    align-self: end !important;
    padding-bottom: clamp(18px, 2vw, 28px) !important;
  }

  :is(#approach, .unified-process) .steps.carousel-track > .step > p {
    grid-column: 2 !important;
    grid-row: 3 !important;
    align-self: end !important;
    margin-bottom: 0 !important;
    padding-bottom: clamp(18px, 2vw, 28px) !important;
  }
}

/* Keep the dinner carousel's photo cards in the page palette and preserve
   readable contrast over the images. */
:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid > .care-item.care-photo-card {
  padding: 0;
  border: 1px solid #f5e7d54d;
  background: #4b1427;
  color: #f7efe8;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid .care-card-copy {
  position: absolute;
  inset: auto 0 0;
  padding: 72px 26px 28px;
  background: linear-gradient(0deg, #35101ff2 0%, #4b1427c9 58%, #4b142700 100%);
  color: #f7efe8;
  text-align: left;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid .care-card-copy .care-number {
  margin: 0 0 10px;
  color: #e2c39a;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid .care-card-copy h3 {
  color: #fff8ee;
}

:is(.dinner-page .dinner-details-carousel, .inner-details-carousel) .care-grid .care-card-copy p {
  color: #f0e3da;
  opacity: 1;
}
