
: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%;height:auto;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);
  transform:translateX(100%);
  /* Hidden (not just off-screen) when closed: no shadow bleeding onto the page,
     and its links stay out of the keyboard tab order. */
  visibility:hidden;
  transition:transform .3s ease, visibility 0s linear .3s;
  z-index:200;
  overflow-y:auto;
}
.nav-drawer.is-open{
  transform:translateX(0);
  visibility:visible;
  box-shadow:-18px 0 40px -22px rgba(37,54,31,0.4);
  transition:transform .3s ease;
}
.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; padding:0;}
.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);
}

/* --- Form fields (contact + order forms) --- */
.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;
}


@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;}
  .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;}
  /* In a column, a card's flex-basis would become its height; let content decide. */
  .hero-copy > .hero-card{flex:none;}
  .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 --- */

/* --- 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;}
}

/* =====================================================================
   Added for the Wagtail rebuild
   ===================================================================== */
.visually-hidden{position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}
.grid-tiles{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
@media (max-width:820px){.grid-3{grid-template-columns:1fr;}}
@media (max-width:480px){.grid-tiles{grid-template-columns:1fr;}}
.section-head--row{max-width:none; display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap;}
.follow-layout--single{grid-template-columns:1fr;}
.follow-layout--single .follow-side{display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:20px;}

/* --- Upcoming events list --- */
.event-list{list-style:none; margin:0; padding:0; display:grid; gap:14px;}
.event-item{
  display:grid; grid-template-columns:76px 1fr; gap:20px; align-items:start;
  background:var(--paper); border:1px solid var(--line); border-radius:4px;
  padding:18px 22px; box-shadow:0 12px 28px -24px rgba(37,54,31,0.38);
}
.event-date{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:var(--forest); color:var(--paper); border-radius:4px; padding:10px 6px; text-align:center;
}
.event-date__month{font-size:0.68rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--gold);}
.event-date__day{font-family:var(--font-display); font-size:1.7rem; line-height:1.1;}
.event-date__dow{font-size:0.66rem; letter-spacing:0.08em; text-transform:uppercase; opacity:0.8;}
.event-body h3{font-family:var(--font-display); font-weight:600; font-size:1.2rem; margin:2px 0 4px;}
.event-body p{margin:0 0 4px; color:var(--forest-soft);}
.event-when{font-weight:500;}
.event-where a{color:var(--forest-soft);}
.event-desc{font-size:0.94rem;}
.event-add{display:inline-block; margin-top:6px; font-size:0.84rem; font-weight:600; color:var(--moss); text-decoration:none;}
.event-add:hover{text-decoration:underline;}
.event-empty{color:var(--forest-soft); border:1px dashed var(--line); border-radius:4px; padding:24px; text-align:center; margin:0;}
@media (max-width:480px){
  .event-item{grid-template-columns:58px 1fr; gap:14px; padding:14px 16px;}
  .event-date__day{font-size:1.4rem;}
}

/* --- Month grid --- */
.cal{background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:24px; box-shadow:0 16px 28px -24px rgba(37,54,31,0.38);}
.cal__header{display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px;}
.cal__month{font-family:var(--font-display); font-size:1.5rem; font-weight:600; margin:0;}
.cal__nav{
  display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px;
  border:1px solid var(--line); border-radius:50%; text-decoration:none; font-size:1.1rem;
}
.cal__nav:hover{background:rgba(37,54,31,0.06);}
.cal__grid{display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:6px;}
.cal__dow{font-size:0.68rem; text-transform:uppercase; letter-spacing:0.08em; text-align:center; color:var(--forest-soft); padding-bottom:4px;}
.cal__day{
  min-height:96px; border:1px solid var(--line); border-radius:4px; background:rgba(244,239,225,0.7);
  padding:6px; display:flex; flex-direction:column; gap:3px; min-width:0;
}
.cal__day.is-outside{opacity:0.45;}
.cal__day.is-today{border-color:var(--gold); box-shadow:inset 0 0 0 1px var(--gold);}
.cal__day.has-events{background:var(--paper);}
.cal__num{font-family:var(--font-display); font-size:1rem; line-height:1;}
.cal__event{
  display:block; background:var(--forest); color:var(--paper); border-radius:3px;
  font-size:0.7rem; line-height:1.3; padding:3px 5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.cal__event b{font-weight:600; color:var(--gold);}
@media (max-width:640px){
  .cal{padding:14px;}
  .cal__grid{gap:3px;}
  .cal__day{min-height:54px; padding:4px; align-items:center;}
  /* On phones, show a dot per event instead of text; the list above has the details. */
  .cal__event{width:7px; height:7px; padding:0; border-radius:50%; font-size:0; background:var(--moss);}
  .cal__day{flex-direction:column; flex-wrap:wrap;}
}

/* --- Weekly drop & order form --- */
.drop{background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:32px 36px; box-shadow:0 16px 28px -24px rgba(37,54,31,0.38);}
.drop__head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:12px;}
.drop__badge{
  display:inline-flex; align-items:center; padding:6px 12px; border-radius:999px;
  background:rgba(196,146,46,0.14); color:var(--forest-soft);
  font-size:0.72rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
}
.drop--open .drop__badge{background:var(--forest); color:var(--paper);}
.drop__pickup{color:var(--forest-soft);}
.drop-items{list-style:none; margin:20px 0; padding:0; display:grid; gap:10px;}
.drop-items--preview{grid-template-columns:repeat(auto-fill, minmax(240px,1fr));}
.drop-item{
  display:grid; grid-template-columns:64px 1fr auto; gap:14px; align-items:center;
  border:1px solid var(--line); border-radius:4px; padding:10px 14px; background:var(--cream);
}
.drop-items--preview .drop-item{grid-template-columns:56px 1fr;}
.drop-item__img{width:64px; height:64px; object-fit:cover; border-radius:3px;}
.drop-item__body{display:flex; flex-direction:column; gap:2px; min-width:0;}
.drop-item__body strong{font-family:var(--font-display); font-weight:500; font-style:italic; font-size:1.15rem;}
.drop-item__body span{color:var(--forest-soft); font-size:0.9rem;}
.drop-item__meta{font-weight:600;}
.drop-item.is-soldout{opacity:0.55;}
.drop-item__qty input{
  width:72px; padding:10px; font:inherit; font-size:1.05rem; text-align:center;
  border:1px solid var(--line); border-radius:4px; background:var(--paper); color:var(--forest);
}
.order-slots{border:0; padding:0; margin:0 0 20px;}
.order-slots legend{font-weight:600; margin-bottom:8px;}
.slot-option{display:flex; align-items:center; gap:10px; padding:12px 14px; border:1px solid var(--line); border-radius:4px; margin-bottom:8px; cursor:pointer; background:var(--cream);}
.slot-option:has(input:checked){border-color:var(--forest); box-shadow:inset 0 0 0 1px var(--forest);}
.slot-option.is-full{opacity:0.5; cursor:not-allowed;}
.order-contact{display:grid; grid-template-columns:1fr 1fr; gap:0 18px;}
.order-contact .form-field{margin-bottom:14px;}
.order-submit{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; border-top:1px solid var(--line); padding-top:18px; margin-top:6px;}
.order-total{margin:0; font-size:1.05rem;}
.order-total strong{font-family:var(--font-display); font-size:1.4rem;}
.order-total span{color:var(--forest-soft); font-size:0.9rem;}
.form-error{color:#9B2C1F; font-size:0.86rem; font-weight:600; margin:4px 0 0;}
.form-error--banner{background:rgba(155,44,31,0.08); border-radius:4px; padding:10px 14px; margin:0 0 12px;}
.order-table{width:100%; max-width:480px; border-collapse:collapse; margin:20px 0;}
.order-table td, .order-table th{padding:8px 0; border-bottom:1px solid var(--line); text-align:left;}
.order-table td:last-child, .order-table th:last-child{text-align:right;}
.confirmation h1{margin-bottom:8px;}
@media (max-width:640px){
  .drop{padding:22px 18px;}
  .drop-item{grid-template-columns:48px 1fr auto; gap:10px; padding:8px 10px;}
  .drop-item__img{width:48px; height:48px;}
  .order-contact{grid-template-columns:1fr;}
  .order-submit .btn{width:100%; text-align:center;}
}

/* --- Flexible page content --- */
.prose{max-width:820px;}
.prose > * + *{margin-top:24px;}
.prose-text{font-size:1.05rem; color:var(--forest-soft);}
.prose-text a{color:var(--forest);}
.prose-image img{width:100%; height:auto; border-radius:4px;}
.prose-image figcaption, .gallery-item figcaption{font-size:0.86rem; color:var(--forest-soft); margin-top:6px;}
.gallery-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); gap:14px;}
.gallery-item{margin:0;}
.gallery-item img{width:100%; aspect-ratio:1; object-fit:cover; border-radius:4px; transition:transform .2s ease;}
.gallery-item a:hover img{transform:scale(1.02);}
.photo-marquee--block{margin:0 -24px;}

/* --- Contact page --- */
.contact-layout{
  display:grid;
  grid-template-columns:minmax(0, 1.55fr) minmax(0, 1fr);
  grid-template-areas:"main reach" "main social";
  grid-template-rows:auto 1fr;
  gap:20px 24px;
  align-items:start;
}
.contact-main{grid-area:main;}
.contact-reach{grid-area:reach;}
.contact-social{grid-area:social;}
.contact-panel{
  background:var(--paper); border:1px solid var(--line); border-radius:4px;
  padding:30px 32px; box-shadow:0 16px 28px -24px rgba(37,54,31,0.38);
}
.contact-panel .eyebrow{margin-bottom:16px;}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px 18px;}
.form-field--wide{grid-column:1 / -1;}
.form-field label span{text-transform:none; letter-spacing:0; font-weight:500; opacity:0.75;}
.form-field textarea{height:170px; min-height:110px;}
.form-field input, .form-field textarea{width:100%; background:var(--cream);}
.contact-form__footer{display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:20px;}
.contact-form__footer .btn{border:none; cursor:pointer; font:inherit; font-weight:600; font-size:0.92rem;}
.contact-form__footer p{margin:0; font-size:0.88rem; color:var(--forest-soft);}
.contact-thanks .section-title{margin-bottom:10px;}
.contact-thanks .btn{margin-top:12px;}

.reach-rows{list-style:none; margin:0; padding:0;}
.reach-rows li + li{border-top:1px solid var(--line);}
.reach-row{
  display:flex; align-items:center; gap:14px; padding:13px 0;
  text-decoration:none; color:var(--forest);
}
.reach-rows li:first-child .reach-row{padding-top:0;}
.reach-rows li:last-child .reach-row{padding-bottom:0;}
.reach-row svg{
  flex:0 0 40px; width:40px; height:40px; padding:9px;
  border-radius:50%; background:rgba(108,133,86,0.14); color:var(--forest);
  transition:background .15s ease, color .15s ease;
}
.reach-row span{display:flex; flex-direction:column; min-width:0; font-family:var(--font-display); font-size:1.05rem; overflow-wrap:anywhere;}
.reach-row small{font-family:var(--font-body); font-size:0.68rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--gold);}
.reach-row:hover svg{background:var(--forest); color:var(--paper);}

.contact-panel--dark{background:var(--forest); border-color:var(--forest); color:var(--paper);}
.contact-panel--dark p{color:rgba(251,248,240,0.8); margin:0 0 16px;}
.contact-social__links{display:flex; flex-wrap:wrap; gap:10px;}
.contact-social__order{display:inline-block; margin-top:18px; color:var(--paper); font-size:0.9rem; font-weight:600; text-decoration:none;}
.contact-social__order:hover{text-decoration:underline;}

@media (max-width:900px){
  /* Phones: tap-to-call/email/map first, then the form, then social. */
  .contact-layout{grid-template-columns:1fr; grid-template-areas:"reach" "main" "social"; grid-template-rows:none;}
}
@media (max-width:640px){
  .contact-panel{padding:22px 18px;}
  .form-grid{grid-template-columns:1fr;}
  .contact-form__footer .btn{width:100%; text-align:center;}
  .contact-form__footer p{width:100%; text-align:center;}
}

/* --- Hotplate menu (Baked Goods) --- */
.hp-drop, .hp-empty{
  background:var(--paper); border:1px solid var(--line); border-radius:4px;
  padding:28px; box-shadow:0 16px 28px -24px rgba(37,54,31,0.38);
}
.hp-drop + .hp-drop{margin-top:24px;}
.hp-empty{text-align:center; padding:40px 28px;}
.hp-empty .lede{margin:12px auto 22px;}
.hp-drop__head{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:28px; align-items:start; margin-bottom:8px;}
.hp-drop__head:not(:has(.hp-drop__cover)){grid-template-columns:1fr;}
.hp-drop__cover{width:100%; height:auto; max-height:520px; object-fit:contain; border-radius:4px;}
.hp-drop__info .section-title{margin-bottom:10px;}
.hp-badge{
  display:inline-flex; margin:0 0 14px; padding:6px 12px; border-radius:999px;
  background:rgba(196,146,46,0.14); color:var(--forest-soft);
  font-size:0.72rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
}
.hp-drop--open .hp-badge{background:var(--forest); color:var(--paper);}
.hp-drop__desc{color:var(--forest-soft); margin:0 0 14px;}
.hp-slots{list-style:none; margin:0 0 18px; padding:0; display:grid; gap:6px; font-size:0.92rem; color:var(--forest-soft);}
.hp-slots li{padding-left:16px; position:relative;}
.hp-slots li::before{content:""; position:absolute; left:0; top:0.6em; width:6px; height:6px; border-radius:50%; background:var(--moss);}
.hp-slots strong{color:var(--forest); font-weight:600;}
.hp-section{font-family:var(--font-display); font-weight:600; font-size:1.2rem; margin:28px 0 14px;}
.hp-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:16px; margin-top:16px;}
.hp-section + .hp-grid{margin-top:0;}
.hp-item{background:var(--cream); border:1px solid var(--line); border-radius:4px; overflow:hidden; display:flex; flex-direction:column;}
.hp-item__link{position:relative; display:block;}
.hp-item__img{display:block; width:100%; aspect-ratio:4/3; object-fit:cover; background:rgba(108,133,86,0.12); transition:transform .2s ease;}
.hp-item__link:hover .hp-item__img{transform:scale(1.02);}
.hp-flag{
  position:absolute; top:10px; left:10px; padding:5px 10px; border-radius:999px;
  background:var(--forest); color:var(--paper); font-size:0.7rem; font-weight:700; letter-spacing:0.06em; text-transform:uppercase;
}
.hp-flag--low{background:var(--gold); color:var(--forest);}
.hp-item.is-soldout .hp-item__img{filter:grayscale(1); opacity:0.55;}
.hp-item.is-soldout .hp-item__body{opacity:0.6;}
.hp-item__body{padding:14px 16px 16px; display:flex; flex-direction:column; gap:6px; flex:1;}
.hp-item__top{display:flex; align-items:baseline; justify-content:space-between; gap:10px;}
.hp-item__top h4{margin:0; font-family:var(--font-display); font-weight:500; font-style:italic; font-size:1.1rem; line-height:1.25;}
.hp-item__price{font-weight:700; white-space:nowrap;}
.hp-item__body p{margin:0; font-size:0.88rem; color:var(--forest-soft);}
.hp-item__opts{font-size:0.8rem !important; font-weight:600;}
.hp-item__details{margin-top:auto; font-size:0.8rem; color:var(--forest-soft);}
.hp-item__details summary{cursor:pointer; list-style-position:inside; font-weight:600; color:var(--moss); padding-top:4px;}
.hp-item__details p{margin-top:6px; font-size:0.8rem;}

.hp-past{margin-top:36px;}
.hp-past__title{font-family:var(--font-display); font-weight:600; font-size:1.3rem; margin:0 0 12px;}
.hp-past__drop{background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:0 18px; margin-bottom:10px;}
.hp-past__drop[open]{padding-bottom:18px;}
.hp-past__drop > summary{display:flex; align-items:center; gap:14px; padding:14px 0; cursor:pointer; list-style:none;}
.hp-past__drop > summary::-webkit-details-marker{display:none;}
.hp-past__drop > summary::after{content:"+"; margin-left:auto; font-size:1.4rem; line-height:1; color:var(--moss);}
.hp-past__drop[open] > summary::after{content:"\2212";}
.hp-past__drop > summary img{width:84px; height:42px; object-fit:cover; border-radius:3px; flex:0 0 auto;}
.hp-past__label{display:flex; flex-direction:column; min-width:0;}
.hp-past__label strong{font-family:var(--font-display); font-weight:600; font-size:1.05rem;}
.hp-past__label span{font-size:0.86rem; color:var(--forest-soft);}

@media (max-width:820px){
  .hp-drop__head{grid-template-columns:1fr; gap:18px;}
}
@media (max-width:640px){
  .hp-drop, .hp-empty{padding:20px 16px;}
  .hp-grid{grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px;}
  .hp-item__body{padding:10px 12px 12px;}
  .hp-item__top{flex-direction:column; gap:2px;}
  .hp-item__top h4{font-size:1rem;}
  .hp-item__body > p:not(.hp-item__opts){display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;}
  .hp-drop .btn--arrow{width:100%;}
}

/* --- "Drop is open" strip on the home page --- */
.drop-banner{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  margin-top:24px; padding:14px 20px; border-radius:4px;
  background:var(--forest); color:var(--paper); text-decoration:none;
}
.drop-banner strong{font-family:var(--font-display); font-style:italic; font-weight:500;}
.drop-banner__dot{width:10px; height:10px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 4px rgba(196,146,46,0.3); flex:0 0 auto;}
.drop-banner__cta{margin-left:auto; font-weight:600; color:var(--gold);}
@media (prefers-reduced-motion:no-preference){
  .drop-banner__dot{animation:pulse 2s ease-in-out infinite;}
  @keyframes pulse{50%{box-shadow:0 0 0 7px rgba(196,146,46,0.08);}}
}
.hp-menu{margin-top:18px; border-top:1px solid var(--line);}
.hp-menu > summary{
  cursor:pointer; list-style:none; padding:16px 0 4px; font-weight:600; color:var(--forest);
  display:flex; align-items:center; gap:8px;
}
.hp-menu > summary::-webkit-details-marker{display:none;}
.hp-menu > summary::after{content:"+"; font-size:1.3rem; line-height:1; color:var(--moss);}
.hp-menu[open] > summary::after{content:"\2212";}

/* =====================================================================
   Home page refresh
   ===================================================================== */
.center-row{margin-top:24px; text-align:center;}
figure.testimonial-card{margin:0;}
blockquote.testimonial-quote{margin-left:auto; margin-right:auto;}

/* Bakery teaser */
.home-bake{background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.bake-row{display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:18px;}
.bake-card{
  display:flex; flex-direction:column; text-decoration:none; color:var(--forest);
  background:var(--cream); border:1px solid var(--line); border-radius:4px; overflow:hidden;
  transition:transform .18s ease, box-shadow .18s ease;
}
.bake-card:hover{transform:translateY(-3px); box-shadow:0 14px 28px -18px rgba(37,54,31,0.4);}
.bake-card img{width:100%; height:auto; aspect-ratio:4/3; object-fit:cover;}
.bake-card__body{display:flex; justify-content:space-between; align-items:baseline; gap:10px; padding:12px 14px 14px;}
.bake-card__body strong{font-family:var(--font-display); font-weight:500; font-style:italic; font-size:1.05rem; line-height:1.25;}
.bake-card__body span{font-weight:700; white-space:nowrap;}
.bake-card.is-soldout img{filter:grayscale(1); opacity:0.6;}
@media (max-width:900px){
  /* Swipeable row on tablets/phones instead of a tall stack. */
  .bake-row{grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:minmax(220px, 68%);
    overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; margin:0 -24px; padding-left:24px; padding-right:24px; scroll-padding:0 24px;}
  .bake-card{scroll-snap-align:start;}
}
@media (max-width:640px){ .bake-row{margin:0 -18px; padding-left:18px; padding-right:18px; scroll-padding:0 18px;} }

/* Compact upcoming events */
.event-cards{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:16px;}
.event-card{
  display:grid; grid-template-columns:64px 1fr; gap:16px; align-items:start;
  background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:16px 18px;
}
.event-card .event-date{padding:8px 4px;}
.event-card .event-date__day{font-size:1.45rem;}
.event-card__body h3{font-family:var(--font-display); font-weight:600; font-size:1.05rem; margin:0 0 4px; line-height:1.3;}
.event-card__body p{margin:0; font-size:0.9rem; color:var(--forest-soft);}
.event-card__where{margin-top:2px !important; font-size:0.84rem !important;}
@media (max-width:900px){ .event-cards{grid-template-columns:1fr; gap:10px;} }

/* Reviews band */
.home-reviews{text-align:center; padding-top:16px;}
.home-reviews > .wrap > .eyebrow{margin-bottom:16px;}
.testimonial-carousel--home .testimonial-track{background:transparent; border:none; min-height:150px;}
.testimonial-carousel--home .testimonial-card{padding:8px 16px;}
.testimonial-carousel--home .testimonial-quote{font-size:clamp(1.15rem, 2.4vw, 1.5rem); max-width:640px;}

/* Social grid */
.social-follow{display:flex; gap:10px; flex-wrap:wrap;}
.social-grid{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:12px;}
.social-tile{
  position:relative; display:block; aspect-ratio:1; overflow:hidden; border-radius:4px;
  background:var(--forest); color:var(--paper); text-decoration:none;
}
.social-tile img{width:100%; height:100%; object-fit:cover; transition:transform .3s ease;}
.social-tile__caption{
  position:absolute; inset:0; padding:16px; display:flex; align-items:flex-end;
  background:linear-gradient(to top, rgba(25,36,21,0.88), rgba(25,36,21,0) 65%);
  font-size:0.86rem; line-height:1.4; opacity:0; transition:opacity .2s ease;
}
.social-tile:hover img, .social-tile:focus-visible img{transform:scale(1.04);}
.social-tile:hover .social-tile__caption, .social-tile:focus-visible .social-tile__caption{opacity:1;}
.social-tile--text{padding:18px; display:flex; flex-direction:column;}
.social-tile__text{
  font-family:var(--font-display); font-style:italic; font-size:1rem; line-height:1.45;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:7; overflow:hidden;
}
.social-tile__meta{
  position:absolute; top:10px; left:10px; display:inline-flex; align-items:center; gap:6px;
  padding:4px 9px; border-radius:999px; background:rgba(25,36,21,0.6); backdrop-filter:blur(4px);
  font-size:0.72rem; font-weight:600; letter-spacing:0.02em;
}
.social-tile--text .social-tile__meta{position:static; align-self:flex-start; margin-top:auto; background:rgba(251,248,240,0.12);}
.social-tile__meta svg{width:13px; height:13px;}
.social-empty{display:grid; grid-template-columns:repeat(auto-fit, minmax(240px,1fr)); gap:16px;}
.social-empty .follow-card{text-decoration:none; color:inherit; display:block; transition:border-color .15s ease;}
.social-empty .follow-card:hover{border-color:var(--moss);}
@media (max-width:900px){ .social-grid{grid-template-columns:repeat(2, minmax(0,1fr)); gap:8px;} }
@media (max-width:640px){
  .social-tile--text{padding:12px;}
  .social-tile__text{font-size:0.86rem; -webkit-line-clamp:5;}
}
@media (hover:none){ .social-tile__caption{display:none;} }

/* Footer */
.site-footer{padding:48px 0 28px; background:var(--paper);}
.site-footer .footer-grid{display:grid; grid-template-columns:1.6fr 1fr 1fr auto; gap:32px; align-items:start;}
.footer-brand p{margin:12px 0 0; max-width:320px;}
.footer-head{margin:0 0 10px; font-size:0.7rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--gold);}
.footer-list{list-style:none; margin:0; padding:0; display:grid; gap:6px;}
.site-footer a{text-decoration:none;}
.footer-list a:hover{text-decoration:underline; text-underline-offset:2px;}
.site-footer .footer-legal{display:block; margin-top:32px; padding-top:18px; border-top:1px solid var(--line); font-size:0.8rem;}
@media (max-width:820px){ .site-footer .footer-grid{grid-template-columns:1fr 1fr; gap:24px;} .footer-brand{grid-column:1 / -1;} }
