@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap');

:root {
  --white: #f7f6f1;
  --ink: #151713;
  --moss: #253128;
  --line: rgba(21, 23, 19, .2);
  --sans: "DM Sans", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: auto; }
body { margin: 0; color: var(--ink); background: var(--white); font-family: var(--sans); }
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
figure, p, h1, h2 { margin: 0; }

.site-header {
  position: absolute; z-index: 10; top: 0; left: 0; width: 100%; height: 92px;
  padding: 0 3.5vw; display: flex; align-items: center; justify-content: space-between;
  color: #fff; border-bottom: 1px solid rgba(255,255,255,.35);
}
.brand { display: block; width: 58px; height: 58px; flex: 0 0 auto; }
.brand img { width: 100%; height: 100%; object-fit: contain; }
nav { display: flex; gap: clamp(1.5rem, 3vw, 3.5rem); font-size: .68rem; text-transform: uppercase; letter-spacing: .16em; }
nav a, footer a, .hero-footer a, .contact a { transition: opacity .2s ease; }
nav a:hover, footer a:hover, .hero-footer a:hover, .contact a:hover { opacity: .55; }

.hero { position: relative; min-height: 100svh; color: #fff; overflow: hidden; }
.hero-image { position: absolute; inset: 0; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,10,8,.34) 0%, rgba(8,10,8,.03) 45%, rgba(8,10,8,.53) 100%); }
.hero-copy { position: relative; z-index: 2; min-height: 100svh; padding: 128px 3.5vw 3.5vw; display: flex; flex-direction: column; }
.eyebrow { font-size: .67rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
h1 { margin: auto 0; font-size: clamp(5.6rem, 15.2vw, 14rem); font-weight: 500; line-height: .8; letter-spacing: -.085em; white-space: nowrap; }
.hero-footer { display: grid; grid-template-columns: minmax(250px, 34rem) auto; align-items: end; justify-content: space-between; gap: 2rem; font-size: clamp(.9rem, 1.15vw, 1.1rem); line-height: 1.5; }
.hero-footer a { padding-bottom: .3rem; border-bottom: 1px solid rgba(255,255,255,.65); font-size: .68rem; letter-spacing: .15em; text-transform: uppercase; }

.about { padding: 11rem 4vw; display: grid; grid-template-columns: 52% 40%; gap: 8%; border-top: 1px solid var(--line); }
h2 { margin-top: 1.5rem; max-width: 11ch; font-size: clamp(3.2rem, 5.8vw, 6.7rem); font-weight: 500; letter-spacing: -.065em; line-height: .94; }
.about-body { align-self: end; max-width: 33rem; font-size: clamp(1.05rem, 1.45vw, 1.35rem); line-height: 1.55; }
.hours { margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--line); font-size: .76rem; }
.hours-title { margin-bottom: .8rem; font-size: .68rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.hours dl { margin: 0; }
.hours dl div { display: grid; grid-template-columns: minmax(6.5rem, .8fr) 1.2fr; gap: 1rem; padding: .27rem 0; }
.hours dt, .hours dd { margin: 0; }

.gallery { padding: 0 4vw 9rem; display: grid; grid-template-columns: 1.15fr .85fr .85fr; grid-template-rows: 20vw 20vw; gap: 1.1vw; }
.gallery figure { overflow: hidden; background: #d9d9d2; }
.gallery-wide, .gallery-tall { grid-row: span 2; }

.contact { padding: 7rem 4vw; display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: 4vw; color: #f3f0e7; background: var(--moss); }
.contact h2 { font-size: clamp(3.3rem, 5.8vw, 6.6rem); }
.contact-item { padding-top: 3rem; display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; font-size: .9rem; line-height: 1.55; }
.contact-item > p { margin-bottom: 1rem; color: #afb6ad; font-size: .65rem; letter-spacing: .16em; text-transform: uppercase; }
.contact address { max-width: 17rem; font-style: normal; }
.contact address + address { margin-top: .35rem; }
.contact a { border-bottom: 1px solid rgba(255,255,255,.35); }
footer { padding: 1.5rem 4vw; display: flex; justify-content: space-between; color: #d8dbcf; background: var(--moss); border-top: 1px solid rgba(255,255,255,.15); font-size: .65rem; letter-spacing: .12em; text-transform: uppercase; }

@media (max-width: 900px) {
  .gallery { grid-template-columns: 1.25fr .75fr; grid-template-rows: 50vw 35vw; }
  .gallery-wide { grid-row: span 2; }
  .gallery-tall { grid-row: auto; }
  .gallery figure:nth-child(3), .gallery figure:nth-child(4) { display: none; }
  .contact { grid-template-columns: 1fr 1fr; }
  .contact-heading { grid-column: span 2; }
}

@media (max-width: 700px) {
  .site-header { height: 76px; padding: 0 6vw; }
  .brand { width: 48px; height: 48px; }
  nav a:not(:last-child) { display: none; }
  .hero-copy { padding: 105px 6vw 7vw; }
  h1 { margin: auto 0; font-size: clamp(4rem, 24vw, 8rem); transform: translateX(-.04em); }
  .hero-footer { grid-template-columns: 1fr; }
  .hero-footer p { max-width: 28rem; }
  .hero-footer a { justify-self: start; }
  .about { padding: 7rem 6vw; grid-template-columns: 1fr; gap: 3rem; }
  .about-body { margin-top: 1rem; }
  .gallery { padding: 0 6vw 6rem; grid-template-columns: 1fr 1fr; grid-template-rows: 72vw 58vw; gap: 2vw; }
  .gallery-wide { grid-column: span 2; grid-row: auto; }
  .gallery-tall { grid-row: auto; }
  .gallery figure:nth-child(3) { display: block; }
  .contact { padding: 6rem 6vw; grid-template-columns: 1fr 1fr; }
  .contact-heading { grid-column: span 2; margin-bottom: 2rem; }
}

@media (max-width: 460px) {
  .contact { grid-template-columns: 1fr; }
  .contact-heading { grid-column: auto; }
  .contact-item { padding-top: 1rem; }
}

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