@font-face {
  font-family: "Moms Typewriter";
  src: url("assets/moms-typewriter.woff") format("woff");
  font-display: swap;
}

:root {
  --navy: #171d35;
  --navy-soft: #242b47;
  --gold: #e7bd3b;
  --cream: #f6f2e9;
  --ink: #202232;
  --white: #fff;
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Segoe UI", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--cream); font: 17px/1.65 var(--sans); }
img { display: block; max-width: 100%; }
a { color: inherit; }
.skip-link { position: fixed; top: -5rem; left: 1rem; z-index: 50; padding: .75rem 1rem; background: white; }
.skip-link:focus { top: 1rem; }

.site-header {
  position: absolute; inset: 0 0 auto; z-index: 10; height: 92px; padding: 0 clamp(1rem, 5vw, 5rem);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; border-bottom: 1px solid rgba(255,255,255,.25);
  color: white;
}
.brand img { width: 145px; }
nav { display: flex; gap: clamp(1rem, 3vw, 2.5rem); }
nav a { text-decoration: none; font-size: .88rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
nav a:hover { color: var(--gold); }
.site-header > .button { justify-self: end; }

.button { display: inline-flex; align-items: center; justify-content: center; padding: .9rem 1.35rem; border: 1px solid var(--gold); background: var(--gold); color: var(--navy); font-weight: 750; text-decoration: none; transition: .2s ease; }
.button:hover { background: #f3d36d; transform: translateY(-2px); }
.button-small { padding: .68rem 1rem; font-size: .9rem; }

.hero { position: relative; min-height: min(860px, 100svh); display: flex; align-items: center; overflow: hidden; color: white; background: var(--navy); }
.hero-image, .hero-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-image { object-fit: cover; object-position: 50% 48%; }
.hero-shade { background: linear-gradient(90deg, rgba(14,19,39,.88) 0%, rgba(14,19,39,.55) 48%, rgba(14,19,39,.12) 82%), linear-gradient(0deg, rgba(14,19,39,.4), transparent 40%); }
.hero-content { position: relative; z-index: 2; width: min(730px, 88vw); margin-left: clamp(1.25rem, 9vw, 10rem); padding: 9rem 0 5rem; }
.eyebrow { margin: 0 0 1rem; color: var(--gold); font-size: .78rem; font-weight: 800; letter-spacing: .22em; text-transform: uppercase; }
.eyebrow.navy { color: var(--navy); }
.hero h1 { margin: 0; max-width: 760px; font: italic clamp(3.5rem, 8vw, 7.8rem)/.93 var(--serif); letter-spacing: -.045em; }
.hero-intro { max-width: 600px; margin: 1.8rem 0 2.2rem; font-size: clamp(1.05rem, 2vw, 1.35rem); }
.hero-actions { display: flex; align-items: center; gap: 1.7rem; }
.text-link { font-weight: 700; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.65); }
.hero-hours { position: absolute; right: 0; bottom: 0; z-index: 2; min-width: min(680px, 58vw); padding: 1.1rem 2.4rem; background: var(--navy); display: grid; grid-template-columns: 1.15fr 1fr; gap: .25rem 2rem; font-size: .86rem; }
.hero-hours > strong { grid-column: 1/-1; margin-bottom: .15rem; color: var(--gold); letter-spacing: .02em; }
.hero-hours span { color: #e1e3ea; }

.awards { min-height: 170px; padding: 1.8rem clamp(1.25rem, 8vw, 9rem); display: flex; align-items: center; justify-content: center; gap: clamp(1.5rem, 5vw, 5rem); background: var(--navy); color: white; text-align: center; }
.awards > p { margin: 0; color: #aeb3c4; font: italic 1.1rem var(--serif); }
.award-badge { width: 116px; height: 116px; display: grid; place-items: center; flex: 0 0 116px; }
.award-badge img { width: 100%; height: 100%; object-fit: contain; }
.award-badge-round { border-radius: 50%; overflow: hidden; }
.award-badge-michelin img { transform: scale(1.14); }
.award-logo { width: 116px; height: 116px; display: grid; place-items: center; flex: 0 0 116px; }
.award-logo img { width: 100%; height: 100%; object-fit: contain; }
/* Compensate for the transparent padding above and below the supplied artwork. */
.award-logo-hardens img { transform: scale(1.38); }
.award-logo-trenchermans { width: 160px; flex-basis: 160px; }
.award-logo-trenchermans img { width: 160px; }
.award-wordmark { min-width: 185px; padding: 1rem 1.2rem; display: grid; border-top: 1px solid var(--gold); border-bottom: 1px solid var(--gold); }
.award-wordmark strong { color: var(--gold); font-size: .9rem; line-height: 1.15; letter-spacing: .12em; }
.award-wordmark span { margin-top: .25rem; color: #cdd0dc; font: italic 1rem var(--serif); }
.award-wordmark-hardens strong { font-size: 1.05rem; letter-spacing: .16em; }

@media (max-width: 1080px) and (min-width: 651px) {
  .awards { flex-wrap: wrap; gap: 1.5rem 3.5rem; }
  .awards > p { flex-basis: 100%; }
}

.section { width: min(1180px, 90vw); margin: auto; padding: clamp(5rem, 10vw, 9rem) 0; }
.story { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, .78fr); gap: clamp(3rem, 8vw, 8rem); align-items: center; }
.story h2, .visit h2, .menus-section h2 { margin: 0 0 1.5rem; font: italic clamp(2.7rem, 5vw, 5.3rem)/1 var(--serif); letter-spacing: -.035em; }
.lead { font-size: 1.25rem; line-height: 1.55; }
.story-image { margin: 0; position: relative; }
.story-image-frame { position: relative; }
.story-image-frame::before { content: ""; position: absolute; inset: 0; border: 2px solid var(--gold); transform: translate(-18px, -18px) scale(1.04); transform-origin: center; z-index: 0; }
.story-image img { width: 100%; aspect-ratio: 4/3; object-fit: cover; object-position: center 58%; }
.story-image-frame img { position: relative; z-index: 1; display: block; }
.story-image figcaption { padding: 1rem 0 0; color: #626574; font: italic 1rem var(--serif); }

.menus-section { padding: clamp(5rem, 10vw, 9rem) max(5vw, calc((100vw - 1180px)/2)); background: var(--navy); color: white; }
.section-heading { max-width: 670px; margin-bottom: 3.5rem; }
.section-heading > p:last-child { color: #cfd2dd; }
.gold { color: var(--gold); }
.menu-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.18); }
.menu-card { grid-column: span 2; min-height: 280px; padding: 2rem; display: flex; flex-direction: column; background: var(--navy-soft); text-decoration: none; transition: .25s ease; }
.menu-card:first-child, .menu-card:nth-child(2) { grid-column: span 3; }
.menu-card:hover { background: #303958; transform: translateY(-5px); }
.menu-card > span { color: var(--gold); font: 1rem var(--serif); }
.menu-card h3 { margin: auto 0 .3rem; font: italic 2.25rem var(--serif); }
.menu-card p { margin: 0 0 1rem; color: #cfd2dd; }
.menu-card b { color: var(--gold); font-size: .82rem; letter-spacing: .08em; text-transform: uppercase; }
.dietary-note { margin: 2rem 0 0; color: #cfd2dd; font-size: .9rem; }

.gallery-section { padding: clamp(5rem, 9vw, 8rem) max(1.25rem, calc((100vw - 1380px)/2)); background: #f1eee7; }
.gallery-heading { width: min(1180px, 90vw); margin: 0 auto 3rem; display: flex; align-items: end; justify-content: space-between; gap: 3rem; }
.gallery-heading h2 { margin: 0; font: italic clamp(3rem, 6vw, 6rem)/.95 var(--serif); letter-spacing: -.04em; }
.gallery-heading > p { max-width: 430px; margin: 0 0 .6rem; color: #555968; font-size: 1.08rem; }
.gallery-grid { display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: clamp(190px, 18vw, 280px); grid-auto-flow: dense; gap: clamp(.55rem, 1vw, 1rem); }
.gallery-item { position: relative; grid-column: span 4; margin: 0; overflow: hidden; background: var(--navy); }
.gallery-item:first-child { grid-column: span 7; grid-row: span 2; }
.gallery-item:nth-child(2), .gallery-item:nth-child(3) { grid-column: span 5; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .65s cubic-bezier(.2,.7,.2,1), filter .65s ease; }
.gallery-item::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(11,15,31,.72)); pointer-events: none; }
.gallery-item figcaption { position: absolute; z-index: 1; left: 1.25rem; right: 1.25rem; bottom: 1.1rem; color: white; font: italic clamp(1.1rem, 2vw, 1.55rem) var(--serif); transform: translateY(.35rem); opacity: .9; transition: .35s ease; }
.gallery-item:hover img { transform: scale(1.045); filter: saturate(1.08); }
.gallery-item:hover figcaption { transform: translateY(0); opacity: 1; }
.gallery-cta { width: min(1180px, 90vw); margin: 2.5rem auto 0; display: flex; align-items: center; justify-content: flex-end; gap: 1.5rem; }
.gallery-cta p { margin: 0; font: italic 1.25rem var(--serif); }

.reviews-section { padding: clamp(5.5rem, 9vw, 8.5rem) max(5vw, calc((100vw - 1180px)/2)); background: var(--cream); }
.reviews-heading { display: grid; grid-template-columns: 1.2fr .8fr; align-items: end; gap: clamp(2rem, 7vw, 7rem); margin-bottom: clamp(3.5rem, 6vw, 5.5rem); }
.reviews-heading h2 { margin: 0; font: italic clamp(3rem, 6vw, 6rem)/.95 var(--serif); letter-spacing: -.04em; }
.reviews-heading > p { max-width: 420px; margin: 0 0 .5rem; color: #555968; font-size: 1.06rem; }
.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(29,34,57,.24); border-bottom: 1px solid rgba(29,34,57,.24); transition: opacity .5s ease, transform .5s ease; }
.review-card { min-height: 255px; padding: clamp(2rem, 4vw, 3.2rem); display: flex; flex-direction: column; justify-content: space-between; }
.review-card + .review-card { border-left: 1px solid rgba(29,34,57,.18); }
.review-card blockquote { margin: 0; color: var(--navy); font: italic clamp(1.65rem, 2.4vw, 2.35rem)/1.18 var(--serif); letter-spacing: -.015em; }
.review-card p { margin: 2.2rem 0 0; color: #5d6070; font-size: .76rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.review-card p span { margin-right: .65rem; color: #a77a00; font-size: .66rem; letter-spacing: .08em; }
.reviews-section.is-changing .reviews-grid { opacity: 0; transform: translateY(.35rem); }
.reviews-foot { margin-top: 1.25rem; display: flex; justify-content: space-between; gap: 1.5rem; color: #6c6f7c; font-size: .82rem; }
.reviews-foot a { color: var(--navy); font-weight: 750; letter-spacing: .035em; text-decoration: none; }
.reviews-foot a:hover { text-decoration: underline; text-underline-offset: .25em; }

.image-break { position: relative; height: min(700px, 72vw); min-height: 430px; overflow: hidden; }
.image-break img { width: 100%; height: 100%; object-fit: cover; object-position: center 52%; }
.image-break::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20,25,47,.58), transparent 60%); }
.image-break blockquote { position: absolute; z-index: 1; left: clamp(1.5rem, 8vw, 9rem); top: 50%; width: min(620px, 76vw); margin: 0; color: white; font: italic clamp(2.3rem, 4.4vw, 4.6rem)/1.02 var(--serif); transform: translateY(-50%); }

.visit { display: grid; grid-template-columns: 1.15fr 1fr .9fr; gap: 2rem; align-items: stretch; }
.visit-intro { padding-right: 2rem; }
.navy-button { margin-top: 1rem; background: var(--navy); border-color: var(--navy); color: white; }
.hours-card, .contact-card { padding: clamp(1.8rem, 4vw, 3rem); background: white; box-shadow: 0 20px 60px rgba(29,34,57,.08); }
.hours-card h3, .contact-card h3 { margin: 0 0 1rem; font: italic 1.7rem var(--serif); }
.hours-card h3:not(:first-child) { margin-top: 2.2rem; }
.hours-card dl { margin: 0; }
.hours-card dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .9rem 0; border-top: 1px solid #e3e0d9; }
.hours-card dt { font-weight: 650; }
.hours-card dd { margin: 0; white-space: nowrap; }
.hours-card > p { margin: 1.5rem 0 0; color: #666978; font-size: .85rem; }
.contact-card { margin: 0; background: var(--gold); font-style: normal; }
.contact-card p { margin-bottom: 2rem; }
.contact-card a { display: block; margin: .65rem 0; overflow-wrap: anywhere; font-weight: 700; text-decoration: none; }

footer { padding: 4rem max(5vw, calc((100vw - 1180px)/2)); display: grid; grid-template-columns: 1fr 2fr 1fr; gap: 2rem; align-items: center; background: var(--navy); color: #cfd2dd; }
.footer-brand { width: 145px; }
footer p { margin: 0; text-align: center; font: italic 1.15rem var(--serif); }
.socials { display: flex; gap: 1rem; justify-content: flex-end; }
.socials a { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid rgba(212,175,98,.45); border-radius: 50%; text-decoration: none; transition: .25s ease; }
.socials a:hover { border-color: var(--gold); background: rgba(212,175,98,.09); transform: translateY(-2px); }
.socials img { width: 24px; height: 24px; object-fit: contain; }
.socials span { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
footer small { grid-column: 1/-1; padding-top: 2rem; border-top: 1px solid rgba(255,255,255,.15); text-align: center; }

@media (max-width: 900px) {
  .site-header { grid-template-columns: 1fr auto; }
  nav { display: none; }
  .story { grid-template-columns: 1fr 1fr; gap: 3rem; }
  .visit { grid-template-columns: 1fr 1fr; }
  .visit-intro { grid-column: 1/-1; max-width: 650px; }
}

@media (max-width: 650px) {
  body { font-size: 16px; }
  .site-header { position: absolute; height: 74px; padding: 0 1rem; }
  .brand img { width: 105px; }
  .button-small { padding: .55rem .7rem; font-size: .77rem; }
  .hero { min-height: 790px; align-items: flex-end; }
  .hero-image { object-position: 62% center; }
  .hero-shade { background: linear-gradient(0deg, rgba(14,19,39,.96) 0%, rgba(14,19,39,.5) 68%, rgba(14,19,39,.18)); }
  .hero-content { width: auto; margin: 0; padding: 8rem 1.25rem 12rem; }
  .hero h1 { font-size: clamp(3rem, 16vw, 4.6rem); }
  .hero-actions { align-items: flex-start; flex-direction: column; gap: 1.2rem; }
  .hero-hours { left: 0; right: 0; min-width: 0; padding: 1rem 1.25rem; grid-template-columns: 1fr; gap: .32rem; }
  .awards { padding: 2rem 1rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
  .awards > p { grid-column: 1/-1; }
  .award-badge, .award-logo { width: 96px; height: 96px; justify-self: center; flex-basis: 96px; }
  .award-logo-trenchermans { width: 145px; flex-basis: 145px; }
  .award-logo-trenchermans img { width: 145px; }
  .award-wordmark { min-width: 0; width: min(185px, 100%); justify-self: center; }
  .section { width: min(100% - 2.5rem, 1180px); padding: 5rem 0; }
  .story { grid-template-columns: 1fr; }
  .story-image { margin: 1.5rem 0 0; }
  .story-image-frame::before { display: none; }
  .story-image figcaption { padding-top: .75rem; }
  .menus-section { padding: 5rem 1.25rem; }
  .menu-grid { display: block; border: 0; background: transparent; }
  .menu-card { min-height: 220px; margin-bottom: 1px; }
  .gallery-section { padding-left: 1rem; padding-right: 1rem; }
  .gallery-heading { width: auto; align-items: flex-start; flex-direction: column; gap: 1rem; }
  .gallery-grid { grid-template-columns: 1fr 1fr; grid-auto-rows: 230px; }
  .gallery-item, .gallery-item:nth-child(2), .gallery-item:nth-child(3) { grid-column: span 1; }
  .gallery-item:first-child { grid-column: 1/-1; grid-row: span 2; }
  .gallery-item:last-child { grid-column: 1/-1; }
  .gallery-cta { width: auto; justify-content: space-between; }
  .reviews-section { padding: 5rem 1.25rem; }
  .reviews-heading { grid-template-columns: 1fr; gap: 1.25rem; margin-bottom: 3.5rem; }
  .reviews-heading > p { max-width: 36rem; }
  .reviews-grid { grid-template-columns: 1fr; }
  .review-card { min-height: 0; padding: 2.25rem 0; }
  .review-card + .review-card { border-left: 0; border-top: 1px solid rgba(29,34,57,.18); }
  .review-card blockquote { max-width: 31rem; }
  .reviews-foot { align-items: flex-start; flex-direction: column; }
  .image-break { height: 580px; }
  .image-break img { object-position: 47% center; }
  .visit { grid-template-columns: 1fr; }
  .visit-intro { padding-right: 0; }
  footer { grid-template-columns: 1fr; text-align: center; }
  .footer-brand { margin: auto; }
  .socials { justify-content: center; }
  footer small { grid-column: auto; }
}

@media (max-width: 430px) {
  .gallery-grid { grid-auto-rows: 210px; }
  .gallery-item:first-child { grid-row: span 1; }
  .gallery-item, .gallery-item:nth-child(2), .gallery-item:nth-child(3), .gallery-item:last-child { grid-column: 1/-1; }
  .gallery-cta { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
