:root {
  --bg: #5c3a28;
  --bg-deep: #4a2e20;
  --cream: #f4e6d4;
  --cream-soft: rgba(244, 230, 212, 0.78);
  --gold: #d4a574;
  --caramel: #c58a57;
  --sand: #d7c4a8;
  --sage: #9aaa8c;
  --charcoal: #2a211c;
  --ink: #2a211c;
  --serif: "Playfair Display", Georgia, serif;
  --sans: "Jost", system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  background: var(--bg);
}

body {
  margin: 0;
  font-family: var(--sans);
  color: var(--cream);
  background: var(--bg);
  line-height: 1.6;
  font-weight: 400;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }

::selection { background: var(--caramel); color: #fff; }

.skip {
  position: absolute;
  left: 1rem;
  top: -4rem;
  z-index: 50;
  padding: 0.5rem 0.9rem;
  border-radius: 999px;
  background: var(--caramel);
  color: #fff;
}
.skip:focus { top: 0.75rem; }

header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  padding: 1.1rem 1.35rem 0.85rem;
  background: var(--bg);
}

.brand {
  line-height: 0;
  flex: 0 0 auto;
  overflow: visible;
}
.brand img {
  height: 4.15rem;
  width: auto;
  max-width: none;
  object-fit: contain;
}

.nav-left,
.nav-right {
  display: none;
  align-items: center;
  gap: 1.7rem;
  font-size: 0.78rem;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cream);
}

.nav-left a:hover,
.nav-right a:hover,
.nav-left a:focus-visible,
.nav-right a:focus-visible {
  color: var(--gold);
  outline: none;
}

.menu-btn {
  width: 2.4rem;
  height: 2.4rem;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
}
.menu-btn span {
  display: block;
  width: 16px;
  height: 1.5px;
  background: var(--cream);
  border-radius: 99px;
}

.overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: none;
  flex-direction: column;
  justify-content: center;
  padding: 2rem;
  background: var(--bg-deep);
}
.overlay.is-open { display: flex; }
.overlay a {
  font-family: var(--serif);
  font-size: 2rem;
  font-weight: 500;
  padding: 0.45rem 0;
}
.overlay .close {
  position: absolute;
  top: 1.1rem;
  right: 1.2rem;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold);
}

.kicker {
  margin: 0 0 0.55rem;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
}
.kicker.light { color: var(--gold); }

h1, h2, h3 {
  font-family: var(--serif);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.12;
  margin: 0;
}

h1 { font-size: clamp(2.35rem, 7vw, 4.4rem); }
h2 { font-size: clamp(1.85rem, 4.4vw, 3.1rem); }
h3 { font-size: 1.45rem; }

.gold-rule {
  display: block;
  width: 3.4rem;
  height: 1px;
  margin: 1.15rem 0 1.25rem;
  background: var(--gold);
}

.lead,
.intro,
.split-copy p,
.beans-card p,
.about-copy p,
.place-copy p,
.visit p {
  margin: 0;
  max-width: 34rem;
  font-size: 1.05rem;
  font-weight: 300;
  color: var(--cream-soft);
}

.text-link {
  display: inline-block;
  margin-top: 1.15rem;
  color: var(--gold);
  font-size: 0.95rem;
  letter-spacing: 0.04em;
}
.text-link span { margin-left: 0.15rem; }
.text-link:hover,
.text-link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.22em;
  outline: none;
}

.hero {
  position: relative;
  display: grid;
  align-items: center;
  gap: 1.4rem;
  padding: 1.2rem 1.15rem 2.2rem;
  overflow: visible;
}

.hero-copy {
  position: relative;
  z-index: 2;
  padding: 0;
  max-width: 34rem;
}

.hero-photo {
  position: relative;
  display: grid;
  place-items: center;
  height: auto;
  margin: 0.6rem 0 0;
  z-index: 1;
}

.hero-photo img {
  width: min(28rem, 98vw);
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 1.4rem 2rem rgba(28, 16, 8, 0.38));
}

.drinks {
  padding: 1rem 1.35rem 4rem;
  text-align: center;
}
.drinks .intro { margin: 0 auto; }
.drinks .gold-rule,
.quotes .gold-rule {
  margin-left: auto;
  margin-right: auto;
}

.drink-grid {
  display: grid;
  gap: 5.5rem 1.25rem;
  margin-top: 5.5rem;
}

.drink {
  position: relative;
  padding: 7.2rem 1.4rem 2.3rem;
  border-radius: 1.85rem;
  text-align: center;
  color: var(--ink);
}
.drink img {
  position: absolute;
  top: 0;
  left: 50%;
  width: 10.5rem;
  height: 10.5rem;
  object-fit: cover;
  border-radius: 50%;
  transform: translate(-50%, -46%);
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22);
}
.drink img.pos-top { object-position: 50% 8%; }
.drink img.pos-cup { object-position: 50% 72%; }
.drink img.pos-mid { object-position: 50% 46%; }
.drink .price,
.drink .subline {
  margin: 0 0 0.35rem;
  font-size: 0.8rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--caramel);
}
.drink h3 { color: var(--ink); }
.drink p:last-child {
  margin: 0.55rem auto 0;
  max-width: 22rem;
  font-size: 0.98rem;
  font-weight: 300;
  color: #4a3d34;
}

.drink-sand { background: var(--sand); }
.drink-sage { background: var(--sage); }
.drink-dark {
  background: var(--charcoal);
  color: var(--cream);
}
.drink-dark h3,
.drink-dark .price,
.drink-dark .subline { color: var(--gold); }
.drink-dark p:last-child { color: var(--cream-soft); }

.split,
.about,
.place {
  display: grid;
  gap: 0;
}

.split-photo img,
.about-photo img,
.place-photo img {
  width: 100%;
  height: min(58vw, 26rem);
  object-fit: cover;
}

.split-copy,
.about-copy,
.place-copy {
  padding: 2.6rem 1.35rem 3.2rem;
}

.beans {
  position: relative;
  min-height: 34rem;
  display: grid;
  place-items: center;
  padding: 4rem 1.35rem;
  overflow: hidden;
}
.beans-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.beans-card {
  position: relative;
  z-index: 1;
  width: min(26rem, 100%);
  padding: 8rem 1.6rem 2.4rem;
  border-radius: 1.85rem;
  background: var(--sand);
  color: var(--ink);
  text-align: center;
}
.beans-round {
  position: absolute;
  top: 0;
  left: 50%;
  width: 11rem;
  height: 11rem;
  transform: translate(-50%, -42%);
  border-radius: 50%;
  overflow: hidden;
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22);
}
.beans-round img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.beans-card p { margin: 0 auto; color: #4a3d34; }
.beans-card h2 { color: var(--ink); }
.beans-card .gold-rule { margin-left: auto; margin-right: auto; }

.quotes {
  padding: 3.4rem 1.35rem 2.2rem;
  text-align: center;
}
.quote-grid {
  display: grid;
  gap: 1.1rem;
  margin-top: 2rem;
}
blockquote {
  margin: 0;
  padding: 1.6rem 1.35rem;
  border-radius: 1.4rem;
  background: var(--bg-deep);
  text-align: left;
}
blockquote p {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.15rem;
  font-style: italic;
  line-height: 1.45;
}
blockquote cite {
  display: block;
  margin-top: 0.85rem;
  font-style: normal;
  font-size: 0.75rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold);
}

.visit {
  display: grid;
  gap: 2rem;
  padding: 2.4rem 1.35rem 3.2rem;
}
.visit-meta {
  display: grid;
  gap: 1.4rem;
}
.visit h3 {
  margin: 0 0 0.4rem;
  font-size: 1.05rem;
}
.visit-meta p { color: var(--cream-soft); }
.visit a:hover { color: var(--gold); }

footer {
  padding: 1.2rem 1.35rem 2.6rem;
  text-align: center;
  color: var(--cream-soft);
  font-size: 0.78rem;
}
footer img {
  height: 4.4rem;
  width: auto;
  max-width: none;
  margin: 0 auto 1.15rem;
}
footer a { color: var(--gold); }

@media (min-width: 860px) {
  header {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    padding: 1.35rem 4vw 1.1rem;
  }

  .brand {
    grid-column: 2;
    justify-self: center;
  }
  .brand img { height: 4.85rem; }

  .nav-left,
  .nav-right { display: flex; }

  .nav-left {
    justify-self: end;
    justify-content: flex-end;
    padding-right: 2.4rem;
  }

  .nav-right {
    justify-self: start;
    justify-content: flex-start;
    padding-left: 2.4rem;
  }

  .menu-btn { display: none; }

  .hero {
    grid-template-columns: minmax(18rem, 0.95fr) 1.05fr;
    align-items: center;
    gap: 2.8rem;
    min-height: 0;
    max-width: 82rem;
    margin: 0 auto;
    padding: 0.8rem 5vw 2.8rem;
  }

  .hero-copy {
    justify-self: start;
    padding: 2.2rem 0 2.4rem;
    margin-right: 0;
    max-width: 34rem;
  }

  .hero-photo {
    justify-self: end;
    height: auto;
    margin: 0;
  }

  .hero-photo img {
    width: min(42rem, 48vw);
  }

  .drinks { padding: 1rem 6vw 5.5rem; }

  .drink-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 2.4rem;
    margin-top: 6.2rem;
  }

  .split,
  .place {
    grid-template-columns: 1.05fr 0.95fr;
    align-items: center;
  }

  .about {
    grid-template-columns: 0.95fr 1.05fr;
    align-items: center;
  }

  .split-photo img,
  .about-photo img,
  .place-photo img {
    height: min(38vw, 32rem);
  }

  .split-copy,
  .about-copy,
  .place-copy {
    padding: 3.5rem 6vw;
  }

  .beans { min-height: 40rem; padding: 6rem 6vw; }

  .quotes { padding: 4.5rem 6vw 3rem; }
  .quote-grid { grid-template-columns: repeat(3, 1fr); gap: 1.4rem; }

  .visit {
    grid-template-columns: 1.2fr 0.8fr;
    padding: 2.5rem 6vw 4.5rem;
    align-items: start;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
