@import url("https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,400&family=Inter:wght@300;400;500;600;700;800&display=swap");

:root {
  --ink:#1a1815;
  --ink-soft:#2c2822;
  --muted:#6b645a;
  --muted-soft:#8a8377;
  --line:#d9d1c2;
  --line-soft:#e6ddcc;
  --paper:#f4efe4;
  --cream:#f9f5eb;
  --forest:#1f3128;
  --forest-deep:#16241d;
  --oxblood:#7a2e26;
  --white:#fffdf7;
  --accent:#9b4160;
  --accent-soft:#c67e94;
  --feature:#f0d6df;
  --shadow-sm:0 1px 2px rgba(22,36,29,.05);
  --shadow-md:0 8px 28px rgba(22,36,29,.09);
  --shadow-lg:0 18px 48px rgba(22,36,29,.14);
  --radius:10px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

* { box-sizing:border-box; }
*::selection { background:var(--forest); color:var(--white); }

html {
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Inter", Aptos, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  font-weight:400;
  line-height:1.55;
  font-feature-settings:"ss01","cv11","kern";
  overflow-x:hidden;
}

a { color:inherit; text-decoration:none; transition:opacity .25s var(--ease), color .25s var(--ease); }
a:hover { opacity:.78; }
img { max-width:100%; display:block; }

/* -------- Header -------- */
.site-header {
  position:fixed;
  top:0; left:0; right:0;
  z-index:20;
  padding:22px clamp(20px,4vw,48px);
  color:var(--white);
  transition:background .32s var(--ease), padding .32s var(--ease), color .32s var(--ease), border-color .32s var(--ease);
}
.site-header.scrolled {
  padding:14px clamp(20px,4vw,48px);
  background:rgba(249,245,235,.92);
  color:var(--forest-deep);
  border-bottom:1px solid rgba(31,49,40,.14);
  -webkit-backdrop-filter:blur(16px) saturate(1.4);
  backdrop-filter:blur(16px) saturate(1.4);
}
.nav {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.brand {
  font-family:"Fraunces", "Cormorant Garamond", Georgia, serif;
  font-size:clamp(20px,2.2vw,24px);
  font-weight:500;
  letter-spacing:0;
  font-variation-settings:"opsz" 36;
}
.nav-links {
  display:flex;
  gap:26px;
  font-size:11.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:700;
}
.nav-links a { position:relative; }
.nav-links a::after {
  content:"";
  position:absolute;
  left:0; right:0; bottom:-6px;
  height:1px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav-links a:hover { opacity:1; }
.nav-links a:hover::after { transform:scaleX(1); }

/* -------- Hero -------- */
.hero {
  min-height:100vh;
  min-height:100svh;
  display:flex;
  align-items:end;
  position:relative;
  overflow:hidden;
  color:var(--white);
  background:var(--forest-deep);
}
.hero::before {
  content:"";
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(180deg, rgba(22,36,29,.30) 0%, rgba(22,36,29,.08) 30%, rgba(22,36,29,.58) 78%, rgba(22,36,29,.88) 100%),
    linear-gradient(92deg, rgba(22,36,29,.70) 0%, rgba(22,36,29,.32) 46%, rgba(22,36,29,.06) 100%),
    var(--hero);
  background-size:cover;
  background-position:center;
  transform:scale(1.03);
}

.hero-inner {
  position:relative;
  z-index:1;
  width:min(1200px, calc(100% - 40px));
  margin:0 auto;
  padding:160px 0 100px;
}

.eyebrow {
  margin:0 0 20px;
  font-size:11.5px;
  letter-spacing:.24em;
  text-transform:uppercase;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:12px;
  opacity:.94;
}
.eyebrow::before {
  content:"";
  width:32px;
  height:1px;
  background:currentColor;
  display:inline-block;
}

/* -------- Type -------- */
h1, h2, h3 {
  font-family:"Fraunces", "Cormorant Garamond", Georgia, serif;
  letter-spacing:0;
  font-variation-settings:"opsz" 96;
}
h1 {
  margin:0;
  max-width:920px;
  font-size:clamp(48px, 8.6vw, 124px);
  line-height:.92;
  font-weight:400;
  font-variation-settings:"opsz" 144;
  text-wrap:balance;
}
.hero-copy {
  max-width:580px;
  margin:26px 0 0;
  font-size:clamp(17px, 1.6vw, 21px);
  line-height:1.55;
  color:rgba(255,253,247,.92);
  text-wrap:pretty;
}

/* -------- Buttons -------- */
.actions {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:34px;
}
.pill {
  min-height:52px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  padding:0 28px;
  font-size:12.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:700;
  background:var(--white);
  color:var(--forest-deep);
  border:1px solid transparent;
  transition:transform .25s var(--ease), background .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease);
  box-shadow:var(--shadow-sm);
}
.pill:hover {
  transform:translateY(-1px);
  box-shadow:var(--shadow-md);
  opacity:1;
}
.pill.secondary {
  background:transparent;
  color:var(--white);
  border-color:rgba(255,255,255,.55);
  box-shadow:none;
}
.pill.secondary:hover {
  background:rgba(255,255,255,.10);
  border-color:rgba(255,255,255,.85);
}

/* -------- Sections -------- */
.section {
  width:min(1200px, calc(100% - 40px));
  margin:0 auto;
  padding:clamp(88px, 10vw, 132px) 0;
}
.section + .section { border-top:1px solid var(--line-soft); }

.intro-grid {
  display:grid;
  grid-template-columns:minmax(0, .88fr) minmax(0, 1.12fr);
  gap:clamp(32px, 6vw, 88px);
  align-items:start;
}
.section-kicker {
  margin:0 0 14px;
  color:var(--accent);
  font-size:11.5px;
  letter-spacing:.24em;
  text-transform:uppercase;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.section-kicker::before {
  content:"";
  width:24px;
  height:1px;
  background:currentColor;
}
h2 {
  margin:0;
  font-size:clamp(36px, 5.2vw, 72px);
  line-height:1.0;
  font-weight:400;
  text-wrap:balance;
}
.intro-copy {
  margin:0;
  font-size:clamp(17px, 1.5vw, 21px);
  color:var(--muted);
  line-height:1.6;
  text-wrap:pretty;
}
.intro-copy + .intro-copy { margin-top:18px; }

/* -------- Gallery (editorial rhythm) -------- */
.gallery {
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:clamp(12px, 1.4vw, 18px);
}
.gallery figure {
  margin:0;
  border-radius:var(--radius);
  overflow:hidden;
  background:var(--cream);
  border:1px solid var(--line-soft);
  position:relative;
}
.gallery figure img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .8s var(--ease);
}
.gallery figure:hover img { transform:scale(1.035); }

/* Asymmetric spans replace the older 6/3/3/6/3/3 tiling */
.gallery figure:nth-child(1) { grid-column:span 7; }
.gallery figure:nth-child(2) { grid-column:span 5; }
.gallery figure:nth-child(3) { grid-column:span 4; }
.gallery figure:nth-child(4) { grid-column:span 4; }
.gallery figure:nth-child(5) { grid-column:span 4; }
.gallery figure:nth-child(6) { grid-column:span 12; }

.gallery figure:nth-child(1) img { aspect-ratio:7/5; }
.gallery figure:nth-child(2) img { aspect-ratio:1/1; }
.gallery figure:nth-child(3) img,
.gallery figure:nth-child(4) img,
.gallery figure:nth-child(5) img { aspect-ratio:4/5; }
.gallery figure:nth-child(6) img { aspect-ratio:21/9; }

/* -------- Menu + reviews -------- */
.menu-grid, .review-grid {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:clamp(14px, 1.6vw, 20px);
}
.menu-card, .review-card, .visit-card {
  border:1px solid var(--line);
  background:var(--white);
  border-radius:var(--radius);
  padding:clamp(24px, 2.4vw, 32px);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.menu-card:hover, .review-card:hover {
  transform:translateY(-2px);
  box-shadow:var(--shadow-md);
}
.menu-card.feature {
  background:var(--forest);
  color:var(--white);
  border-color:var(--forest);
}
.menu-card.feature:hover { border-color:var(--forest-deep); }
.menu-card h3, .review-card h3 {
  margin:0 0 14px;
  font-size:clamp(22px, 2.2vw, 28px);
  line-height:1.08;
  font-weight:500;
  letter-spacing:0;
}
.menu-card p, .review-card p {
  margin:0;
  color:var(--muted);
  font-size:15.5px;
  line-height:1.6;
}
.menu-card.feature p { color:rgba(255,253,247,.82); }

/* -------- Visit -------- */
.visit {
  display:grid;
  grid-template-columns:minmax(300px, .85fr) minmax(0, 1.15fr);
  gap:clamp(16px, 1.8vw, 22px);
}
.visit-card p {
  margin:0 0 14px;
  color:var(--muted);
  font-size:15.5px;
  line-height:1.6;
}
.visit-card p:last-child { margin-bottom:0; }

.map {
  width:100%;
  min-height:460px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
  background:var(--cream);
}
.map iframe {
  width:100%;
  height:100%;
  min-height:460px;
  border:0;
  filter:saturate(.88) contrast(1.02);
}

/* -------- Footer -------- */
footer {
  background:var(--forest-deep);
  color:var(--white);
  padding:52px clamp(20px,4vw,48px) 96px;
}
.footer-inner {
  width:min(1200px, 100%);
  margin:0 auto;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  font-size:13px;
  letter-spacing:.04em;
  color:rgba(255,253,247,.72);
}

/* -------- Mobile action bar (structure preserved) -------- */
.mobile-actions {
  position:fixed;
  left:12px;
  right:12px;
  bottom:calc(12px + env(safe-area-inset-bottom, 0px));
  z-index:30;
  display:none;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.mobile-actions a {
  min-height:52px;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--forest-deep);
  color:var(--white);
  font-size:12.5px;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:700;
  box-shadow:0 12px 32px rgba(22,36,29,.30);
}
.mobile-actions a:last-child { background:var(--accent); }
.mobile-actions a:hover { opacity:1; }

/* -------- Tablet -------- */
@media (max-width: 1020px) {
  .gallery figure:nth-child(1),
  .gallery figure:nth-child(2) { grid-column:span 6; }
  .gallery figure:nth-child(1) img { aspect-ratio:4/3; }
  .gallery figure:nth-child(2) img { aspect-ratio:4/3; }
  .gallery figure:nth-child(3),
  .gallery figure:nth-child(4),
  .gallery figure:nth-child(5) { grid-column:span 4; }
  .gallery figure:nth-child(3) img,
  .gallery figure:nth-child(4) img,
  .gallery figure:nth-child(5) img { aspect-ratio:3/4; }
  .gallery figure:nth-child(6) img { aspect-ratio:16/7; }
  .menu-grid, .review-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}

/* -------- Mobile -------- */
@media (max-width: 820px) {
  .site-header { padding:16px clamp(16px,4vw,22px); }
  .site-header.scrolled { padding:12px clamp(16px,4vw,22px); }
  .nav-links { display:none; }

  .hero { min-height:92vh; min-height:92svh; }
  .hero::before {
    background-image:
      linear-gradient(180deg, rgba(22,36,29,.32) 0%, rgba(22,36,29,.14) 30%, rgba(22,36,29,.72) 78%, rgba(22,36,29,.92) 100%),
      var(--hero);
  }
  .hero-inner {
    padding:128px 0 132px;
    width:min(1200px, calc(100% - 32px));
  }
  h1 { font-size:clamp(40px, 12vw, 68px); line-height:.98; }
  .hero-copy { font-size:16.5px; margin-top:20px; max-width:100%; }
  .hero-copy {
    width:min(100%, 32ch);
    overflow-wrap:break-word;
  }

  .actions {
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    margin-top:26px;
    max-width:360px;
  }
  .pill {
    width:100%;
    min-height:50px;
    padding:0 20px;
    font-size:12px;
  }

  .section {
    padding:76px 0;
    width:min(1200px, calc(100% - 32px));
  }
  .intro-grid, .visit, .menu-grid, .review-grid { grid-template-columns:1fr; }
  .intro-grid { gap:24px; }

  h2 { font-size:clamp(34px, 8.6vw, 52px); line-height:1.02; }
  .intro-copy { font-size:16.5px; }

  .gallery { grid-template-columns:1fr; gap:10px; }
  .gallery figure,
  .gallery figure:nth-child(n) { grid-column:auto; }
  .gallery figure img,
  .gallery figure:nth-child(n) img { aspect-ratio:4/3; }
  .gallery figure:nth-child(1) img { aspect-ratio:4/5; }
  .gallery figure:nth-child(6) img { aspect-ratio:16/9; }

  .menu-card, .review-card, .visit-card { padding:22px; }
  .menu-card h3, .review-card h3 { font-size:22px; }

  .map, .map iframe { min-height:340px; }

  .footer-inner {
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
    font-size:12.5px;
  }
  /* Room for the fixed action bar */
  footer { padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px)); }
}

@media (max-width: 420px) {
  h1 { font-size:44px; }
  .hero-inner { padding-top:120px; padding-bottom:136px; }
  .brand { font-size:19px; }
}

/* -------- Motion -------- */
@media (prefers-reduced-motion: reduce) {
  * { transition-duration:.01ms !important; animation-duration:.01ms !important; scroll-behavior:auto !important; }
  .gallery figure:hover img { transform:none; }
}
