@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,500&family=Public+Sans:wght@400;500;600;700&display=swap');

:root{
  --cream:#F4EFE1;
  --paper:#FBF8F0;
  --forest:#25361F;
  --forest-soft:#3C4F32;
  --moss:#6C8556;
  --gold:#C4922E;
  --slate:#4A5A5C;
  --line:rgba(37,54,31,0.14);
  --font-display:'Fraunces', serif;
  --font-body:'Public Sans', sans-serif;
  --max:1120px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--forest);
  font-family:var(--font-body);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px;}

/* --- Topo contour signature motif --- */
.contour{
  width:100%;
  height:34px;
  display:block;
  opacity:0.55;
}
.contour path{
  fill:none;
  stroke:var(--moss);
  stroke-width:1.1;
}
.contour-band{
  background:var(--paper);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:6px 0;
}

/* --- Header / nav --- */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(244,239,225,0.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.site-header .wrap{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:14px; padding-bottom:14px;
  gap:16px;
}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none;}
.brand img{width:42px; height:42px; border-radius:50%; object-fit:cover; border:1px solid var(--line);}
.brand-name{
  font-family:var(--font-display);
  font-weight:600;
  font-size:1.15rem;
  color:var(--forest);
  letter-spacing:0.01em;
}
nav.primary-nav{flex:1; display:flex; justify-content:center;}
nav.primary-nav ul{
  display:flex; gap:2px; list-style:none; margin:0; padding:0;
  flex-wrap:wrap;
}
nav.primary-nav a{
  display:inline-block;
  text-decoration:none;
  color:var(--forest-soft);
  font-weight:500;
  font-size:0.92rem;
  padding:8px 12px;
  border-radius:999px;
  transition:background .15s ease, color .15s ease;
}
nav.primary-nav a:hover{background:rgba(108,133,86,0.14); color:var(--forest);}
nav.primary-nav a.active{
  background:var(--forest);
  color:var(--paper);
}
.nav-more{
  display:inline-block;
  text-decoration:none;
  background:var(--forest);
  color:var(--paper);
  font-weight:600;
  font-size:0.88rem;
  padding:9px 18px;
  border-radius:999px;
  white-space:nowrap;
  transition:background .15s ease, color .15s ease, transform .15s ease;
}
.nav-more:hover{background:var(--gold); color:var(--forest); transform:translateY(-1px);}
.nav-more.active{background:var(--gold); color:var(--forest);}

/* --- Mobile nav toggle (hamburger) --- */
.nav-toggle{
  display:none;
  align-items:center; justify-content:center;
  width:40px; height:40px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--paper);
  color:var(--forest);
  cursor:pointer;
  flex-shrink:0;
}
.nav-toggle svg{width:20px; height:20px;}
.nav-toggle:hover{border-color:var(--moss);}

/* --- Slide-in drawer (mobile) --- */
.nav-scrim{
  position:fixed; inset:0;
  background:rgba(37,54,31,0.42);
  opacity:0; visibility:hidden;
  transition:opacity .25s ease, visibility 0s linear .25s;
  z-index:150;
}
.nav-scrim.is-open{
  opacity:1; visibility:visible;
  transition:opacity .25s ease, visibility 0s linear 0s;
}
.nav-drawer{
  position:fixed; top:0; right:0; height:100%;
  width:min(82vw, 320px);
  background:var(--paper);
  box-shadow:-18px 0 40px -22px rgba(37,54,31,0.4);
  transform:translateX(100%);
  transition:transform .3s ease;
  z-index:200;
  overflow-y:auto;
}
.nav-drawer.is-open{transform:translateX(0);}
.nav-drawer-inner{padding:22px 22px 32px;}
.nav-drawer-close{
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px;
  border:1px solid var(--line);
  border-radius:8px;
  background:transparent;
  color:var(--forest);
  cursor:pointer;
  margin-bottom:18px;
}
.nav-drawer-close svg{width:18px; height:18px;}
.drawer-brand{
  display:flex; align-items:center; gap:10px;
  text-decoration:none;
  margin-bottom:26px;
  padding-bottom:20px;
  border-bottom:1px solid var(--line);
}
.drawer-brand img{width:38px; height:38px; border-radius:50%; object-fit:cover; border:1px solid var(--line);}
.drawer-brand span{
  font-family:var(--font-display); font-weight:600; font-size:1rem; color:var(--forest);
}
.drawer-links{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px;}
.drawer-links a{
  display:block;
  text-decoration:none;
  color:var(--forest-soft);
  font-weight:500;
  font-size:1.02rem;
  padding:13px 14px;
  border-radius:6px;
  transition:background .15s ease, color .15s ease;
}
.drawer-links a:hover{background:rgba(108,133,86,0.12); color:var(--forest);}
.drawer-links a.active{background:var(--forest); color:var(--paper);}
.drawer-more{margin-top:14px; padding-top:14px; border-top:1px solid var(--line);}
.drawer-more a{
  background:var(--forest); color:var(--paper); text-align:center; font-weight:600;
}
.drawer-more a:hover{background:var(--gold); color:var(--forest);}
.drawer-more a.active{background:var(--gold); color:var(--forest);}

body.nav-open{overflow:hidden;}

@media (max-width:820px){
  .primary-nav, .site-header .nav-more, nav.primary-nav{display:none;}
  .nav-toggle{display:inline-flex;}
  .site-header .wrap{flex-wrap:nowrap;}
  .brand-name{font-size:1rem;}
  .grid-4{grid-template-columns:repeat(2, 1fr);}
  .cta-band{padding:28px 24px; flex-direction:column; align-items:flex-start;}
  .cta-band .btn{width:100%; text-align:center;}
  .follow-layout{grid-template-columns:1fr;}
}

/* --- Hero --- */
/* No overflow:hidden here: hero-copy cards overlap the media via a negative
   margin, and on the contact page the form card can grow much taller than
   the media itself. Clipping at .hero's edge would cut the card's bottom
   border/shadow (and the card would look like it stops early, with fields
   spilling out below it) whenever a card is taller than usual.
   isolation:isolate contains .hero-copy's z-index to inside this section --
   otherwise, whenever a card grows taller than the hero image, the excess
   paints on top of the next section instead of pushing it down. */
.hero{position:relative; isolation:isolate;}
.hero-media{
  width:100%; height:52vh; min-height:320px; max-height:560px;
  object-fit:cover;
  filter:saturate(1.02);
  animation:fadeIn .8s ease both;
}
.hero-copy{
  max-width:var(--max); margin:0 auto; padding:0 24px;
  margin-top:-92px; position:relative; z-index:2;
  display:flex; align-items:stretch; gap:20px; flex-wrap:wrap;
}
.hero-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  padding:34px 38px;
  max-width:640px;
  min-height:238px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  box-shadow:0 18px 40px -22px rgba(37,54,31,0.35);
  animation:fadeSlideUp .6s ease .1s both;
}
.eyebrow{
  font-family:var(--font-body);
  text-transform:uppercase;
  letter-spacing:0.14em;
  font-size:0.72rem;
  font-weight:600;
  color:var(--gold);
  margin:0 0 10px;
}
.hero-card h1{
  font-family:var(--font-display);
  font-style:italic;
  font-weight:500;
  font-size:clamp(1.8rem, 3.4vw, 2.6rem);
  margin:0 0 14px;
  line-height:1.15;
  color:var(--forest);
}
.hero-card p{margin:0; color:var(--forest-soft); font-size:1.02rem;}

.hero-card--order{
  background:var(--forest);
  color:var(--paper);
  min-height:238px;
  flex:0 1 260px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  align-items:flex-start;
  animation:fadeSlideUp .6s ease .25s both;
}
.hero-card--order .eyebrow{color:var(--gold);}
.hero-card--order h2{
  font-family:var(--font-display);
  font-style:italic;
  font-weight:500;
  font-size:1.55rem;
  margin:0 0 20px;
  color:var(--paper);
  line-height:1.2;
  text-align:left;
}
.hero-card--order p{color:rgba(251,248,240,0.78); margin:0 0 16px; font-size:0.94rem;}
.btn--arrow{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:max-content;
  margin-top:6px;
}
.btn--arrow span:last-child{
  font-size:1.2rem;
  line-height:1;
  transform:translateY(-1px);
}

/* Contact page: form card + reach card sit side by side but are very
   different heights, so on wide screens don't stretch them to match. */
@media (min-width:901px){
  .hero-copy--top{align-items:flex-start;}
}
.hero-card--form{
  max-width:640px;
  flex:1 1 420px;
  justify-content:flex-start;
}
.hero-card--form h1{
  font-size:clamp(1.5rem, 2.6vw, 2rem);
  margin:0 0 14px;
}
.hero-card--form p{margin:0 0 18px;}
.contact-form{display:flex; flex-direction:column; gap:14px;}
.form-field{display:flex; flex-direction:column; gap:6px;}
.form-field label{
  font-family:var(--font-body);
  text-transform:uppercase;
  letter-spacing:0.06em;
  font-size:0.72rem;
  font-weight:700;
  color:var(--forest-soft);
}
.form-field input, .form-field textarea{
  font:inherit;
  font-size:0.95rem;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:4px;
  background:var(--paper);
  color:var(--forest);
  resize:vertical;
}
.form-field input:focus, .form-field textarea:focus{
  outline:2px solid var(--moss);
  outline-offset:1px;
}
.contact-form .btn{
  align-self:flex-start;
  margin-top:4px;
  border:none;
  cursor:pointer;
}
.hp-field{
  position:absolute;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* Reach Us: a compact sidebar beside the form when there's room. The full
   Call/Email/Visit card section below is always shown regardless of width
   (see the plain section after the hero in contact.html) -- the two are
   fully independent, so there's no breakpoint-matching between them to
   get wrong. */
.hero-card--reach{display:none;}
@media (min-width:901px){
  .hero-card--reach{
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
    max-width:300px;
    flex:0 1 280px;
  }
}
.reach-list{display:flex; flex-direction:column; gap:16px; margin-top:6px;}
.reach-item{padding-bottom:16px; border-bottom:1px solid var(--line);}
.reach-item:last-child{padding-bottom:0; border-bottom:none;}
.reach-label{
  font-family:var(--font-body);
  text-transform:uppercase;
  letter-spacing:0.1em;
  font-size:0.68rem;
  font-weight:700;
  color:var(--gold);
  margin:0 0 4px;
}
.reach-value{
  font-family:var(--font-display);
  font-weight:500;
  font-size:1rem;
  color:var(--forest);
  margin:0 0 6px;
}
.reach-link{
  font-family:var(--font-body);
  font-size:0.86rem;
  font-weight:600;
  color:var(--moss);
  text-decoration:none;
}
.reach-link:hover{text-decoration:underline;}

@media (max-width:640px){
  section{padding:48px 0;}
  .hero-media{height:36vh; min-height:260px;}
  .hero-copy{padding:0 18px; gap:12px; flex-direction:column; align-items:stretch;}
  .hero-card{padding:22px 18px; min-height:0; width:100%; max-width:none;}
  /* Extra breathing room below the submit button on the contact form card. */
  .hero-card--form{padding-bottom:152px;}
  .btn--arrow{margin-top:2px;}
  .section-head{margin-bottom:24px;}
  .grid-4{grid-template-columns:1fr;}
  .category-card img{height:200px;}
  .cta-band{padding:24px 20px;}
  .cta-band h3{font-size:1.2rem;}
  .cta-band p{font-size:0.92rem;}
  .follow-side{gap:12px;}
  .follow-card{padding:18px 20px;}
  .fb-fallback{padding:24px 20px;}
}

/* Below this width the order/CTA card can no longer sit beside the main hero
   card, so instead of letting it drop to a tall, mostly-empty stacked box,
   turn it into a slim full-width banner: heading left, button right.
   Also drop the desktop image-overlap trick entirely once stacked: a card
   here can be arbitrarily tall (e.g. the contact form), and overlapping a
   short hero image with unpredictable-height content is exactly what let
   it visually bleed into the next section. Flowing normally below the
   image with a plain gap makes that impossible regardless of height. */
@media (max-width:900px){
  .hero-copy{flex-direction:column; align-items:stretch; margin-top:20px;}
  .hero-card{max-width:none;}
  .hero-card--order{
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:16px;
    max-width:none;
    min-height:0;
    padding:10px 24px;
  }
  .hero-card--order h2{margin:0; font-size:1.15rem;}
  .hero-card--order .btn--arrow{margin-top:0; margin-left:auto; flex-shrink:0;}
}

/* --- Entrance animation --- */
@keyframes fadeIn{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes fadeSlideUp{
  from{opacity:0; transform:translateY(16px);}
  to{opacity:1; transform:translateY(0);}
}
.site-header{animation:fadeIn .5s ease both;}

@media (prefers-reduced-motion: reduce){
  .hero-media, .hero-card, .hero-card--order, .site-header{animation:none;}
  .photo-marquee__track{animation:none;}
}

/* --- Sections --- */
section{padding:64px 0;}
.section-head{max-width:640px; margin:0 0 36px;}
.section-head .eyebrow{margin-bottom:8px;}
h2.section-title{
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(1.5rem, 2.6vw, 2rem);
  margin:0;
  color:var(--forest);
}
.lede{font-size:1.05rem; color:var(--forest-soft); max-width:620px;}

/* --- What we do grid --- */
.grid-4{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:20px;
}
@media (max-width:900px){.grid-4{grid-template-columns:repeat(2,1fr);}}
@media (max-width:480px){.grid-4{grid-template-columns:1fr;}}

.category-card{
  display:block; text-decoration:none;
  border-radius:4px; overflow:hidden;
  border:1px solid var(--line);
  background:var(--paper);
  transition:transform .18s ease, box-shadow .18s ease;
}
.category-card:hover{transform:translateY(-3px); box-shadow:0 14px 28px -18px rgba(37,54,31,0.4);}
.category-card img{width:100%; height:150px; object-fit:cover;}
.category-card .label{
  padding:14px 16px;
  font-family:var(--font-display);
  font-weight:500;
  font-size:1.02rem;
  color:var(--forest);
}

.category-card--featured img{height:280px;}
.category-card--featured .label{
  padding:20px 22px;
  font-size:1.35rem;
}
@media (max-width:900px){
  .category-card--featured img{height:240px;}
}
@media (max-width:640px){
  .category-card--featured img{height:220px;}
}

/* --- Placeholder cards (More / leftovers page) --- */
.placeholder-card{
  border:1px dashed var(--line);
  border-radius:4px;
  background:transparent;
  padding:26px 18px;
  text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:10px;
}
.placeholder-icon{
  width:48px; height:48px;
  color:var(--moss);
  opacity:0.6;
}
.placeholder-card .label{
  font-family:var(--font-display); font-weight:500; font-size:1.02rem; color:var(--forest);
}
.placeholder-note{
  margin:0; font-size:0.86rem; color:var(--forest-soft);
}

/* --- Calendar placeholder --- */
.calendar-placeholder{
  border:1px solid var(--line);
  border-radius:4px;
  background:var(--paper);
  padding:24px;
  box-shadow:0 16px 28px -24px rgba(37,54,31,0.38);
}
.calendar-placeholder__header{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  margin-bottom:18px;
}
.calendar-placeholder__month{
  font-family:var(--font-display);
  font-size:1.5rem;
  font-weight:600;
  color:var(--forest);
}
.calendar-placeholder__badge{
  display:inline-flex;
  align-items:center;
  padding:6px 12px;
  border-radius:999px;
  background:rgba(196,146,46,0.12);
  color:var(--forest-soft);
  font-size:0.72rem;
  font-weight:700;
  letter-spacing:0.08em;
  text-transform:uppercase;
}
.calendar-placeholder__grid{
  display:grid; grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:10px;
}
.calendar-placeholder__day{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  min-height:94px;
  border:1px solid var(--line);
  border-radius:4px;
  background:rgba(244,239,225,0.7);
  text-align:center;
  padding:10px 8px;
}
.calendar-placeholder__day.is-active{
  background:var(--forest);
  border-color:var(--forest);
  color:var(--paper);
}
.calendar-placeholder__day.is-muted{opacity:0.7;}
.day-name{
  font-size:0.68rem;
  text-transform:uppercase;
  letter-spacing:0.08em;
  margin-bottom:8px;
}
.day-number{
  font-family:var(--font-display);
  font-size:1.35rem;
  line-height:1;
}
.calendar-placeholder__day small{
  display:block;
  margin-top:8px;
  font-size:0.66rem;
  letter-spacing:0.04em;
  text-transform:uppercase;
}
.calendar-placeholder__note{
  margin:18px 0 0;
  color:var(--forest-soft);
  font-size:0.95rem;
}

/* --- Market teaser / CTA --- */
.cta-band{
  background:var(--forest);
  color:var(--paper);
  border-radius:4px;
  padding:40px 44px;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  flex-wrap:wrap;
}
.cta-band h3{font-family:var(--font-display); font-weight:500; font-style:italic; font-size:1.4rem; margin:0 0 6px;}
.cta-band p{margin:0; color:rgba(251,248,240,0.78);}
.btn{
  display:inline-block;
  background:var(--gold);
  color:var(--forest);
  text-decoration:none;
  font-weight:600;
  font-size:0.92rem;
  padding:12px 22px;
  border-radius:999px;
  white-space:nowrap;
  transition:transform .15s ease, background .15s ease;
}
.btn:hover{background:#D8A94A; transform:translateY(-1px);}
.btn-outline{
  background:transparent;
  border:1px solid var(--line);
  color:var(--forest);
}
.btn-outline:hover{background:rgba(37,54,31,0.06);}

/* --- Product cards (baked goods) --- */
.product-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
@media (max-width:900px){.product-grid{grid-template-columns:1fr;}}
.product-card{
  border:1px solid var(--line); border-radius:4px; background:var(--paper);
  padding:24px; display:flex; flex-direction:column; gap:12px;
}
.product-card h3{
  font-family:var(--font-display); font-weight:600; font-size:1.15rem; margin:0;
}
.product-card ul{margin:0; padding-left:18px; color:var(--forest-soft); font-size:0.94rem;}
.product-card ul li{margin-bottom:4px;}
.product-card .btn{align-self:flex-start; margin-top:auto;}

.item-list{
  display:grid; grid-template-columns:repeat(4,1fr); gap:14px;
}
@media (max-width:820px){.item-list{grid-template-columns:repeat(2,1fr);}}
.item-list a{
  display:block; text-align:center;
  border:1px solid var(--line); border-radius:4px;
  padding:18px 12px;
  text-decoration:none;
  background:var(--paper);
  font-weight:500; font-size:0.94rem; color:var(--forest);
  transition:background .15s ease, border-color .15s ease;
}
.item-list a:hover{background:rgba(108,133,86,0.1); border-color:var(--moss);}

/* --- Market schedule table --- */
.schedule-table{width:100%; border-collapse:collapse; background:var(--paper); border:1px solid var(--line); border-radius:4px; overflow:hidden;}
.schedule-table th, .schedule-table td{
  text-align:left; padding:16px 18px; vertical-align:top;
  border-bottom:1px solid var(--line);
}
.schedule-table th{
  font-family:var(--font-body); text-transform:uppercase; letter-spacing:0.08em;
  font-size:0.72rem; color:var(--slate); background:rgba(108,133,86,0.08);
}
.schedule-table td .date{font-family:var(--font-display); font-weight:600; font-size:1.05rem; display:block; margin-bottom:2px;}
.schedule-table td .place{color:var(--forest-soft); font-size:0.88rem; display:block; margin-bottom:8px;}
.schedule-table ul{margin:0; padding-left:18px; font-size:0.92rem; color:var(--forest-soft);}

.locations-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin-top:16px;}
@media (max-width:820px){.locations-grid{grid-template-columns:1fr;}}
.location-card{border:1px solid var(--line); border-radius:4px; overflow:hidden; background:var(--paper);}
.location-card img{width:100%; height:170px; object-fit:cover;}
.location-card .loc-label{padding:14px 16px; font-weight:600; font-size:0.94rem;}
.location-card .loc-label span{display:block; font-weight:400; font-size:0.85rem; color:var(--forest-soft); margin-top:2px;}

/* --- Footer --- */
footer{
  border-top:1px solid var(--line);
  padding:36px 0 46px;
  color:var(--forest-soft);
  font-size:0.88rem;
}
footer .wrap{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px;}
footer a{text-decoration:underline; text-underline-offset:2px;}
.footer-social{display:flex; gap:10px;}
.social-link{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:50%;
  border:1px solid var(--line);
  transition:border-color .15s ease, background .15s ease;
}
.social-link:hover{border-color:var(--moss); background:rgba(108,133,86,0.1);}
.social-link svg{width:18px; height:18px;}

.notice{
  max-width:620px;
  color:var(--forest-soft);
  font-size:0.94rem;
}

/* --- Follow along / Facebook feed --- */
.follow-layout{
  display:grid; grid-template-columns:1.1fr 0.9fr; gap:28px; align-items:start;
}
@media (max-width:820px){.follow-layout{grid-template-columns:1fr;}}
.fb-embed{
  border:1px solid var(--line); border-radius:4px; overflow:hidden;
  background:var(--paper);
}
.fb-embed iframe{width:100%; display:block; border:0;}
.fb-fallback{
  padding:32px 28px; text-align:center;
}
.fb-fallback p{color:var(--forest-soft); margin:0 0 16px;}
.follow-side{
  display:flex; flex-direction:column; gap:16px;
}
.follow-card{
  border:1px solid var(--line); border-radius:4px; background:var(--paper);
  padding:22px 24px;
}
.follow-card h3{
  font-family:var(--font-display); font-weight:600; font-size:1.05rem; margin:0 0 8px;
}
.follow-card p{margin:0 0 14px; color:var(--forest-soft); font-size:0.94rem;}

/* --- Contact page --- */
.contact-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
@media (max-width:820px){.contact-grid{grid-template-columns:1fr;}}
.contact-card{
  border:1px solid var(--line); border-radius:4px; background:var(--paper);
  padding:26px 24px;
  display:flex; flex-direction:column; gap:10px;
}
.contact-card .eyebrow{margin:0;}
.contact-card .value{
  font-family:var(--font-display); font-weight:500; font-size:1.15rem; color:var(--forest);
}
.contact-card .btn{align-self:flex-start; margin-top:4px;}

/* --- Menu grid --- */
.menu-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:20px;
  max-width:980px;
  margin:0 auto;
}
.menu-item-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  overflow:hidden;
  text-align:center;
  box-shadow:0 12px 28px -20px rgba(37,54,31,0.28);
}
.menu-item-card__img{
  display:block;
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.menu-item-card__body{padding:24px 22px 28px;}
.menu-label{
  display:inline-block;
  margin-bottom:10px;
  font-family:var(--font-body);
  text-transform:uppercase;
  letter-spacing:0.12em;
  font-size:0.68rem;
  font-weight:700;
  color:var(--gold);
}
.menu-item-card strong{
  display:block;
  font-family:var(--font-display);
  font-style:italic;
  font-weight:500;
  font-size:1.45rem;
  color:var(--forest);
  margin-bottom:8px;
}
.menu-item-card p{margin:0; color:var(--forest-soft);}

@media (max-width:820px){
  .menu-grid{grid-template-columns:repeat(2, 1fr);}
}
@media (max-width:640px){
  .menu-grid{grid-template-columns:1fr;}
}

/* --- Photo marquee (auto-scrolling gallery) --- */
.photo-marquee{
  overflow:hidden;
  -webkit-mask-image:linear-gradient(to right, transparent, black 4%, black 96%, transparent);
  mask-image:linear-gradient(to right, transparent, black 4%, black 96%, transparent);
}
.photo-marquee__track{
  display:flex;
  width:max-content;
  gap:24px;
  padding:0 24px;
  animation:photo-marquee-scroll 70s linear infinite;
}
.photo-marquee:hover .photo-marquee__track,
.photo-marquee:focus-within .photo-marquee__track{
  animation-play-state:paused;
}
@keyframes photo-marquee-scroll{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}
.photo-card{
  flex:0 0 auto;
  width:380px;
  margin:0;
  border:1px solid var(--line);
  border-radius:4px;
  overflow:hidden;
  background:var(--paper);
  box-shadow:0 12px 28px -20px rgba(37,54,31,0.28);
}
.photo-card img{display:block; width:100%; height:280px; object-fit:cover;}
.photo-card figcaption{
  padding:12px 16px;
  font-family:var(--font-display); font-style:italic; font-weight:500;
  font-size:1rem; color:var(--forest);
}
@media (max-width:640px){
  .photo-card{width:280px;}
  .photo-card img{height:200px;}
}

/* --- Testimonial carousel --- */
.testimonial-carousel{
  position:relative;
  max-width:680px;
  margin:0 auto;
}
.testimonial-track{
  position:relative;
  min-height:172px;
  border:1px solid var(--line);
  border-radius:4px;
  background:var(--paper);
}
.testimonial-card{
  position:absolute; inset:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center;
  padding:40px 44px;
  opacity:0;
  visibility:hidden;
  transition:opacity .6s ease;
}
.testimonial-card.is-active{opacity:1; visibility:visible; position:relative;}
.testimonial-stars{
  margin:0 0 12px;
  color:var(--gold);
  font-size:0.95rem;
  letter-spacing:3px;
}
.testimonial-quote{
  font-family:var(--font-display); font-style:italic; font-weight:500;
  font-size:1.15rem; color:var(--forest); margin:0 auto 14px; line-height:1.45;
  max-width:520px;
}
.testimonial-attr{margin:0; font-size:0.88rem; color:var(--forest-soft); font-weight:600;}
.testimonial-attr span{font-weight:400; color:var(--slate);}
.testimonial-dots{
  display:flex; justify-content:center; gap:8px; margin-top:18px;
}
.testimonial-dot{
  width:8px; height:8px; border-radius:50%;
  border:none; background:var(--line); cursor:pointer; padding:0;
  transition:background .2s ease, transform .2s ease;
}
.testimonial-dot.is-active{background:var(--moss); transform:scale(1.25);}

@media (max-width:640px){
  .menu-item-card__body{padding:22px 18px 24px;}
  .testimonial-card{padding:30px 24px;}
}
