:root {
  --cream: #f7f2e8;
  --paper: #fffdf8;
  --sage: #dce3d4;
  --butter: #eacb73;
  --forest: #1f422f;
  --ink: #26342b;
  --muted: #536157;
}

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

html { 
  scroll-behavior: smooth; 
}

body {
  width: 100%;
  min-width: 0;
  margin: 0;
  color: var(--ink);
  font-family: "DM Sans", sans-serif;
  background-color: var(--cream);
  background-image: radial-gradient(rgba(31, 66, 47, .055) .7px, transparent .7px);
  background-size: 9px 9px;
}

h1, h2, h3 { 
  font-family: "Fraunces", serif; 
}

button, input { 
  font: inherit; 
}

.page-shell { 
  width: 100%; 
  overflow: hidden; 
}

.site-header {
  background: rgba(247, 242, 232, .93);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(31, 66, 47, .12);
}

.hero-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(25,54,38,.78) 0%, rgba(25,54,38,.38) 52%, rgba(25,54,38,.08) 100%);
}

.image-wash { 
  filter: saturate(.72) sepia(.08); 
}

.card-shadow { 
  box-shadow: 0 16px 44px rgba(31, 66, 47, .10); 
}

.cheese-card img { 
  transition: transform .55s ease; 
}

.cheese-card:hover img { 
  transform: scale(1.05); 
}

.reveal { 
  animation: rise .7s ease both; 
}

@keyframes rise {
  from { 
    opacity: 0; 
    transform: translateY(18px); 
  }
  to { 
    opacity: 1; 
    transform: translateY(0); 
  }
}

.mail-button {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  transition: transform .2s ease, background .2s ease;
}

.mail-button:hover { 
  transform: translateY(-2px); 
}

a:focus-visible, button:focus-visible {
  outline: 3px solid #d0a735;
  outline-offset: 4px;
}