:root{
  --olive-deep:#232f19;
  --olive-mid:#3c4d22;
  --olive-soft:#66803b;
  --pink:#f0a2c4;
  --pink-deep:#e07fab;
  --peach:#f1c6aa;
  --cream:#faf6ee;
  --ink:#1c2412;
  --line: rgba(28,36,18,0.12);
  --maxw: 1160px;
  --soft-green:#d3e0bd;
  --receipt-pink:#f9dce6;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Work Sans', sans-serif;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3, .display{
  font-family:'Fraunces', serif;
  font-weight:500;
  letter-spacing:-0.01em;
  margin:0;
}

.eyebrow{
  text-transform:uppercase;
  letter-spacing:0.22em;
  font-size:0.7rem;
  font-weight:600;
  color:var(--olive-soft);
}

img{display:block; max-width:100%;}

a{color:inherit; text-decoration:none;}

/* Plain-text hyperlinks (nav, footer, in-copy links) use a script display
   font for a distinctive brand feel. Button-styled CTAs keep the body font
   for legibility — see .magic-btn / .directions-btn / .nav-call overrides. */
.text-link{
  font-family:'Rochester', cursive;
  font-size:1.2rem;
  color:var(--pink-deep);
  text-decoration:underline;
  text-underline-offset:3px;
}

.wrap{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0 6vw;
}

/* ---------- Checker divider (signature element) ---------- */
.checker{
  height:14px;
  width:100%;
  background-image:
    repeating-conic-gradient(var(--olive-deep) 0% 25%, var(--cream) 0% 50%);
  background-size:14px 14px;
}
.checker.pink-tone{
  background-image:
    repeating-conic-gradient(var(--pink-deep) 0% 25%, var(--olive-deep) 0% 50%);
}

/* ---------- Nav ---------- */
header{
  position:fixed;
  top:0; left:0; right:0;
  z-index:100;
  padding:18px 6vw;
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:var(--olive-deep);
  box-shadow:0 1px 0 rgba(0,0,0,0.15);
  transition: padding 0.3s ease, box-shadow 0.3s ease;
}
header.scrolled{
  padding:12px 6vw;
  box-shadow:0 2px 10px rgba(0,0,0,0.18);
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  font-family:'Fraunces', serif;
  font-size:1.15rem;
  font-weight:500;
  color:var(--cream);
}
.brand img{
  width:38px; height:38px;
  border-radius:50%;
  object-fit:cover;
  background:var(--olive-deep);
}
nav.links{
  display:flex;
  align-items:center;
  gap:26px;
  font-size:0.85rem;
  letter-spacing:0.03em;
}
nav.links a{
  color:var(--cream);
  position:relative;
  padding-bottom:4px;
  font-family:'Rochester', cursive;
  font-size:1.4rem;
  letter-spacing:0;
}
nav.links a::after{
  content:'';
  position:absolute;
  left:0; right:100%;
  bottom:0;
  height:1px;
  background:var(--pink);
  transition:right 0.3s ease;
}
nav.links a:hover::after{ right:0; }
nav.links a:hover{ color:var(--pink); }
.nav-call{
  display:inline-flex;
  align-items:center;
  gap:8px;
  background:var(--pink);
  color:var(--olive-deep) !important;
  padding:9px 18px;
  font-weight:600;
  border-radius:2px;
  transition:background 0.3s ease;
  font-family:'Work Sans', sans-serif !important;
  font-size:0.85rem !important;
}
.nav-call::after{ display:none; }
.nav-call:hover{ background:var(--cream); color:var(--olive-deep) !important; }

/* ---------- Breadcrumbs ---------- */
.breadcrumbs{
  background:var(--peach);
  padding:16px 6vw;
  margin-top:74px;
}
.breadcrumbs ol{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0;
  list-style:none;
  display:flex;
  align-items:center;
  gap:8px;
  font-size:0.78rem;
  letter-spacing:0.02em;
  color:var(--olive-deep);
}
.breadcrumbs li{ display:flex; align-items:center; gap:8px; }
.breadcrumbs li:not(:last-child)::after{
  content:'/';
  color:var(--olive-soft);
}
.breadcrumbs a{ color:var(--olive-deep); }
.breadcrumbs a:hover{ color:var(--pink-deep); text-decoration:underline; }
.breadcrumbs li[aria-current="page"]{ color:var(--olive-mid); font-weight:600; }

/* ---------- Marquee banner ---------- */
.marquee{
  background:var(--pink);
  overflow:hidden;
  white-space:nowrap;
  position:relative;
  border-top:1px solid var(--olive-deep);
  border-bottom:1px solid var(--olive-deep);
}
.marquee-track{
  display:inline-flex;
  align-items:center;
  animation:scroll-left 32s linear infinite;
}
.marquee-track span{
  display:inline-flex;
  align-items:center;
  font-family:'Fraunces', serif;
  font-style:italic;
  font-size:1.05rem;
  color:var(--olive-deep);
  padding:14px 0;
}
.marquee-track span::after{
  content:'🫒';
  font-style:normal;
  margin:0 34px;
  font-size:0.9rem;
}
@keyframes scroll-left{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion: reduce){
  .marquee-track{ animation:none; }
}

/* ---------- Hero ---------- */
.hero{
  display:flex;
  min-height:100vh;
  background:var(--olive-deep);
}
.hero-copy{
  flex:1 1 46%;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:0 6vw;
  padding-top:110px;
}
.hero-copy .eyebrow{ color:var(--peach); margin-bottom:22px; }
.hero-title{
  font-size:clamp(3rem, 7vw, 5.4rem);
  color:var(--pink);
  line-height:0.98;
  font-style:italic;
  font-weight:500;
}
.hero-title .olive-word{
  color:var(--cream);
  font-style:normal;
}
.hero-sub{
  margin-top:26px;
  font-size:1.05rem;
  color:var(--cream);
  opacity:0.82;
  max-width:380px;
  line-height:1.6;
}
.hero-meta{
  margin-top:38px;
  display:flex;
  gap:32px;
  flex-wrap:wrap;
}
.hero-meta div{
  border-left:2px solid var(--pink-deep);
  padding-left:14px;
}
.hero-meta .label{
  font-size:0.68rem;
  text-transform:uppercase;
  letter-spacing:0.18em;
  color:#b9c79a;
  margin-bottom:6px;
}
.hero-meta .value{
  color:var(--cream);
  font-size:0.92rem;
}
.hero-cta{
  margin-top:44px;
  display:inline-flex;
  align-items:center;
  gap:12px;
  color:var(--cream);
  font-family:'Rochester', cursive;
  font-size:1.3rem;
  width:fit-content;
  padding-bottom:6px;
  border-bottom:1px solid var(--cream);
  transition:opacity 0.3s ease, gap 0.3s ease;
}
.hero-cta:hover{ opacity:0.7; gap:18px; }

.hero-image{
  flex:1 1 54%;
  position:relative;
  overflow:hidden;
}
.hero-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(1.06) contrast(1.03);
}
.hero-image::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(90deg, rgba(35,47,25,0.55) 0%, rgba(35,47,25,0.05) 30%, rgba(35,47,25,0) 55%);
}
.hero-image::before{
  content:'';
  position:absolute;
  left:0; top:0; bottom:0;
  width:6px;
  background:var(--pink);
  z-index:2;
}

@media (max-width: 860px){
  .hero{ flex-direction:column-reverse; min-height:auto;}
  .hero-image{ height:44vh; }
  .hero-copy{ padding-top:52px; padding-bottom:70px; }
}

/* ---------- Intro / What we serve ---------- */
section.serve{
  padding:120px 0 100px;
}
.serve-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:40px;
  flex-wrap:wrap;
  margin-bottom:70px;
}
.serve-head h2{
  font-size:clamp(2.1rem, 4vw, 3rem);
  max-width:480px;
  line-height:1.08;
}
.serve-head h2 em{
  font-style:italic;
}
.serve-head p{
  max-width:320px;
  color:var(--olive-mid);
  line-height:1.6;
  font-size:0.95rem;
}

.serve-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:0;
  border-top:1px solid var(--line);
}
.serve-card{
  padding:44px 34px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transition:background 0.35s ease;
  opacity:0;
  transform:translateY(24px);
}
.serve-card.in{ opacity:1; transform:translateY(0); transition:opacity 0.7s ease, transform 0.7s ease, background 0.35s ease;}
.serve-card:last-child{ border-right:none; }
.serve-card:hover{ background: rgba(102,128,59,0.06); }
.serve-num{
  font-family:'Fraunces', serif;
  font-style:italic;
  color:var(--pink-deep);
  font-size:1.4rem;
  margin-bottom:26px;
  display:block;
}
.serve-card h3{
  font-size:1.35rem;
  margin-bottom:12px;
  color:var(--olive-deep);
}
.serve-card p{
  color:#4a5638;
  font-size:0.92rem;
  line-height:1.65;
  margin:0;
}

@media (max-width:760px){
  .serve-grid{ grid-template-columns:1fr; }
  .serve-card{ border-right:none; }
}

/* ---------- Gallery ---------- */
section.gallery{
  background:var(--peach);
  padding:110px 0;
}
.gallery-head{
  margin-bottom:56px;
  text-align:center;
}
.gallery-head .eyebrow{ color:var(--olive-deep); justify-content:center; display:block; margin-bottom:16px;}
.gallery-head h2{
  font-size:clamp(2rem, 4vw, 2.9rem);
  color:var(--olive-deep);
}
.gallery-head h2 em{ font-style:italic; }

.gallery-row{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:14px;
}
.gallery-figure{
  position:relative;
  overflow:hidden;
  aspect-ratio:1/1;
  opacity:0;
  transform:translateY(30px);
  transition:opacity 0.8s ease, transform 0.8s ease;
}
.gallery-figure.in{ opacity:1; transform:translateY(0); }
.gallery-figure img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform 0.6s ease;
}
.gallery-figure:hover img{ transform:scale(1.06); }
.gallery-figure .cap{
  position:absolute;
  left:0; bottom:0; right:0;
  padding:10px 12px;
  background:linear-gradient(to top, rgba(35,47,25,0.82), rgba(35,47,25,0));
  color:var(--cream);
  font-size:0.68rem;
  letter-spacing:0.03em;
  opacity:0;
  transition:opacity 0.3s ease;
}
.gallery-figure:hover .cap{ opacity:1; }

@media (max-width:760px){
  .gallery-row{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width:480px){
  .gallery-row{ grid-template-columns:repeat(2, 1fr); gap:8px; }
}

/* ---------- Menu (receipt style) ---------- */
section.menu-section{
  background:var(--soft-green);
  color:var(--ink);
  padding:120px 0;
}
.menu-head{
  text-align:center;
  margin-bottom:64px;
}
.menu-head .eyebrow{ color:var(--olive-deep); display:block; margin-bottom:16px; }
.menu-head h2{
  font-size:clamp(2.1rem, 4vw, 3rem);
  color:var(--olive-deep);
  font-style:italic;
}
.menu-head p{
  margin-top:16px;
  color:var(--olive-mid);
  font-size:0.9rem;
  max-width:420px;
  margin-left:auto;
  margin-right:auto;
  line-height:1.6;
}
.menu-layout{
  display:grid;
  grid-template-columns:0.9fr 1.1fr;
  gap:60px;
  align-items:start;
}

/* The receipt card itself */
.receipt{
  position:relative;
  background:var(--receipt-pink);
  color:#181818;
  font-family:'Space Mono', monospace;
  padding:54px 34px 40px;
  box-shadow:0 24px 46px rgba(28,36,18,0.18);
}
.receipt::before,
.receipt::after{
  content:'';
  position:absolute;
  left:0; right:0;
  height:18px;
  background-image:radial-gradient(circle at 14px 9px, var(--soft-green) 9px, transparent 9.5px);
  background-size:28px 18px;
  background-repeat:repeat-x;
}
.receipt::before{ top:-9px; }
.receipt::after{ bottom:-9px; transform:rotate(180deg); }
.receipt-eyebrow{
  text-align:center;
  text-transform:uppercase;
  letter-spacing:0.28em;
  font-size:0.62rem;
  font-weight:700;
  color:#4a5638;
}
.receipt-title{
  text-align:center;
  font-family:'Space Mono', monospace;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.14em;
  font-size:1.05rem;
  color:#181818;
  margin-top:10px;
}
.receipt-divider{
  border-top:1px dashed rgba(24,24,24,0.35);
  margin:22px 0;
}
.receipt-cat{
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.1em;
  font-size:0.74rem;
  color:#181818;
  margin:22px 0 10px;
}
.receipt-cat:first-of-type{ margin-top:0; }
.receipt-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  font-size:0.86rem;
  line-height:1.9;
  color:#181818;
}
.receipt-row span:first-child{ padding-right:8px; }
.receipt-row span:last-child{ white-space:nowrap; font-weight:700; }
.receipt-foot{
  display:flex;
  justify-content:space-between;
  font-size:0.68rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  color:#4a5638;
  margin-top:4px;
}

.menu-photo{
  position:relative;
  overflow:hidden;
  aspect-ratio:600/450;
  align-self:stretch;
  border-radius:4px;
}
.menu-photo img{
  width:100%; height:100%;
  object-fit:cover;
}
.menu-photo .cap{
  position:absolute;
  left:0; bottom:0;
  padding:16px 20px;
  background:rgba(35,47,25,0.85);
  color:var(--cream);
  font-size:0.75rem;
  letter-spacing:0.04em;
}

@media (max-width:860px){
  .menu-layout{ grid-template-columns:1fr; }
  .menu-layout{ display:flex; flex-direction:column-reverse; }
}

/* ---------- Team ---------- */
section.team{
  background:var(--cream);
  padding:110px 0;
}
.team-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
  align-items:center;
}
.team-photo{
  position:relative;
}
.team-photo img{
  width:100%;
  display:block;
  object-fit:cover;
  aspect-ratio:1200/900;
}
.team-photo::before{
  content:'';
  position:absolute;
  top:16px; left:16px;
  right:-16px; bottom:-16px;
  border:2px solid var(--pink);
  z-index:-1;
}
.team-copy .eyebrow{ display:block; margin-bottom:16px; }
.team-copy h2{
  font-size:clamp(2rem, 4vw, 2.8rem);
  color:var(--olive-deep);
  margin-bottom:22px;
}
.team-copy h2 em{ font-style:italic; color:var(--pink-deep); }
.team-copy h2 .amp{
  font-family:'Rochester', cursive;
  font-style:normal;
  font-size:1.25em;
  padding:0 3px;
  display:inline-block;
}
.team-copy p{
  color:#4a5638;
  line-height:1.75;
  font-size:0.98rem;
  max-width:420px;
  margin-bottom:16px;
}
.team-names{
  display:flex;
  gap:34px;
  margin-top:28px;
}
.team-names div h4{
  font-family:'Fraunces', serif;
  font-style:italic;
  color:var(--pink-deep);
  font-size:1.15rem;
  margin-bottom:4px;
}
.team-names div span{
  font-size:0.75rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  color:var(--olive-soft);
}

@media (max-width:860px){
  .team-grid{ grid-template-columns:1fr; }
  .team-photo::before{ display:none; }
}

/* ---------- Reviews ---------- */
section.reviews{
  padding:110px 0;
  background:var(--cream);
}
.reviews-head{
  text-align:center;
  margin-bottom:60px;
}
.reviews-head .eyebrow{ display:block; margin-bottom:16px; }
.reviews-head h2{
  font-size:clamp(2rem, 4vw, 2.9rem);
  color:var(--olive-deep);
}
.reviews-head h2 em{ font-style:italic; }

.reviews-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:30px;
}
.review-card{
  background:var(--olive-deep);
  color:var(--cream);
  padding:38px 32px;
  position:relative;
  opacity:0;
  transform:translateY(24px);
  transition:opacity 0.7s ease, transform 0.7s ease;
}
.review-card.in{ opacity:1; transform:translateY(0); }
.review-stars{
  color:var(--pink);
  letter-spacing:3px;
  font-size:0.9rem;
  margin-bottom:20px;
}
.review-card p{
  font-family:'Fraunces', serif;
  font-style:italic;
  font-size:1.12rem;
  line-height:1.55;
  margin:0 0 22px;
  color:var(--cream);
}
.review-source{
  font-size:0.72rem;
  text-transform:uppercase;
  letter-spacing:0.14em;
  color:#b9c79a;
}

@media (max-width:860px){
  .reviews-grid{ grid-template-columns:1fr; }
}
.reviews-cta{
  text-align:center;
  margin-top:48px;
}

/* ---------- Directions / general buttons ---------- */
.directions-btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-top:36px;
  padding:15px 26px;
  background:var(--pink);
  color:var(--olive-deep);
  font-size:0.85rem;
  font-weight:600;
  letter-spacing:0.03em;
  border-radius:2px;
  border:none;
  cursor:pointer;
  font-family:'Work Sans', sans-serif;
  transition:background 0.3s ease, transform 0.3s ease;
}
.directions-btn:hover{
  background:var(--cream);
  transform:translateX(4px);
}
.directions-btn.outline{
  background:transparent;
  border:1px solid var(--pink);
  color:var(--pink);
}
.directions-btn.outline:hover{
  background:rgba(240,162,196,0.1);
  color:var(--pink);
}

/* ---------- Visit / Hours ---------- */
section.visit{
  background:var(--olive-deep);
  color:var(--cream);
  padding:120px 0 100px;
}
.visit-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
}
.visit-grid h2{
  font-size:clamp(2.3rem, 5vw, 3.4rem);
  color:var(--pink);
  font-style:italic;
  line-height:1.05;
  margin-bottom:26px;
}
.visit-copy p{
  color:#d7dcc7;
  max-width:380px;
  line-height:1.7;
  font-size:0.98rem;
  margin-bottom:34px;
}
.addr{
  display:flex;
  align-items:center;
  gap:14px;
  font-size:0.95rem;
  color:var(--cream);
}
.addr .dot{
  width:8px; height:8px;
  border-radius:50%;
  background:var(--pink);
  flex-shrink:0;
}

.hours-table{
  width:100%;
  border-collapse:collapse;
}
.hours-table tr{
  border-bottom:1px solid rgba(250,246,238,0.14);
  transition:background 0.3s ease;
}
.hours-table tr:first-child{
  border-top:1px solid rgba(250,246,238,0.14);
}
.hours-table td{
  padding:15px 10px;
  font-size:0.96rem;
}
.hours-table td:first-child{
  font-family:'Fraunces', serif;
  font-style:italic;
  color:var(--pink);
  font-size:1.05rem;
}
.hours-table td:last-child{
  text-align:right;
  color:#d7dcc7;
  letter-spacing:0.03em;
}
.hours-table tr.today{
  background:rgba(240,162,196,0.14);
}
.hours-table tr.today td:first-child{
  color:var(--cream);
}
.hours-table tr.today td:first-child::before{
  content:'';
  display:inline-block;
  width:7px; height:7px;
  border-radius:50%;
  background:var(--pink);
  margin-right:10px;
}
.hours-table tr.today td:last-child{
  color:var(--cream);
  font-weight:600;
}
.today-tag{
  display:inline-block;
  margin-left:10px;
  font-size:0.62rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  background:var(--pink);
  color:var(--olive-deep);
  padding:2px 8px;
  border-radius:20px;
  font-family:'Work Sans', sans-serif;
  font-style:normal;
  vertical-align:middle;
}

.map-embed{
  margin-top:56px;
  border:1px solid rgba(250,246,238,0.18);
  border-radius:10px;
  overflow:hidden;
  filter:grayscale(0.1) contrast(1.05);
}
.map-embed iframe{
  width:100%;
  height:440px;
  border:0;
  display:block;
}
@media (max-width:760px){
  .map-embed iframe{ height:320px; }
}

/* ---------- Contact form (clean light card for clarity) ---------- */
.contact-form{
  margin-top:44px;
  background:var(--cream);
  color:var(--ink);
  padding:36px 32px;
  border-radius:14px;
  box-shadow:0 24px 50px rgba(0,0,0,0.28);
}
.contact-form .eyebrow{ color:var(--olive-soft); display:block; margin-bottom:14px; }
.contact-form p.lead{
  color:#4a5638;
  font-size:0.92rem;
  margin-bottom:26px;
  max-width:420px;
  line-height:1.6;
}
.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.form-row{
  margin-bottom:18px;
}
.form-row label{
  display:block;
  font-size:0.74rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color:var(--olive-mid);
  margin-bottom:8px;
}
.form-row input,
.form-row textarea{
  width:100%;
  background:#fff;
  border:1.5px solid var(--line);
  color:var(--ink);
  padding:14px 16px;
  font-family:'Work Sans', sans-serif;
  font-size:0.98rem;
  border-radius:8px;
  transition:border-color 0.2s ease, box-shadow 0.2s ease;
}
.form-row input::placeholder,
.form-row textarea::placeholder{ color:#9aa688; }
.form-row input:focus,
.form-row textarea:focus{
  outline:none;
  border-color:var(--pink-deep);
  box-shadow:0 0 0 4px rgba(224,127,171,0.15);
}
.form-row textarea{ resize:vertical; min-height:110px; }
.contact-form .magic-btn{ margin-top:6px; width:100%; justify-content:center; }

.topic-chips{
  display:flex;
  flex-wrap:wrap;
  gap:9px;
  margin-top:2px;
}
.topic-chip{
  padding:9px 16px;
  border:1.5px solid var(--line);
  background:#fff;
  color:var(--olive-mid);
  font-family:'Work Sans', sans-serif;
  font-size:0.82rem;
  border-radius:20px;
  cursor:pointer;
  transition:background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.topic-chip:hover{ border-color:var(--pink-deep); color:var(--pink-deep); }
.topic-chip.active{
  background:var(--pink-deep);
  border-color:var(--pink-deep);
  color:#fff;
}

@media (max-width:600px){
  .form-grid{ grid-template-columns:1fr; }
}

/* ---------- Footer ---------- */
footer{
  background:var(--cream);
  padding:50px 0 40px;
}
.footer-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:30px;
  padding-bottom:30px;
}
.foot-brand{
  display:flex;
  align-items:center;
  gap:12px;
}
.foot-brand img{
  width:34px; height:34px;
  border-radius:50%;
  object-fit:cover;
}
.foot-brand span{
  font-family:'Fraunces', serif;
  font-style:italic;
  font-size:1.05rem;
}
.footer-links{
  display:flex;
  gap:22px;
  flex-wrap:wrap;
  font-size:1.3rem;
  font-family:'Rochester', cursive;
}
.footer-links a:hover{ color:var(--pink-deep); }
.footer-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:14px;
  padding-top:22px;
  border-top:1px solid var(--line);
}
footer .foot-note{
  font-size:0.78rem;
  color:var(--olive-mid);
  letter-spacing:0.02em;
}
footer .foot-legal{
  font-size:1.1rem;
  font-family:'Rochester', cursive;
  color:var(--olive-soft);
  display:flex;
  gap:16px;
}
footer .foot-legal a:hover{ color:var(--pink-deep); }

@media (max-width:760px){
  .visit-grid{ grid-template-columns:1fr; gap:44px; }
}

/* ---------- On-homepage FAQ section ---------- */
section.faq-onpage{
  background:var(--cream);
  padding:110px 0 100px;
}

/* ---------- FAQ page ---------- */
.page-hero{
  background:var(--olive-deep);
  color:var(--cream);
  padding:80px 0 90px;
  text-align:center;
}
.page-hero .eyebrow{ color:var(--peach); margin-bottom:18px; display:block; }
.page-hero h1{
  font-size:clamp(2.4rem, 6vw, 3.6rem);
  color:var(--pink);
  font-style:italic;
}
.page-hero p{
  margin-top:18px;
  color:#d7dcc7;
  max-width:480px;
  margin-left:auto;
  margin-right:auto;
  line-height:1.6;
  font-size:0.98rem;
}

.faq-list{
  padding:100px 0 120px;
  max-width:820px;
  margin:0 auto;
}
.faq-item{
  border-bottom:1px solid var(--line);
}
.faq-item summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding:26px 4px;
  font-family:'Fraunces', serif;
  font-size:1.15rem;
  color:var(--olive-deep);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary .icon{
  flex-shrink:0;
  width:26px; height:26px;
  border:1px solid var(--pink-deep);
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--pink-deep);
  font-size:1rem;
  transition:transform 0.3s ease, background 0.3s ease, color 0.3s ease;
}
.faq-item[open] summary .icon{
  transform:rotate(45deg);
  background:var(--pink-deep);
  color:var(--cream);
}
.faq-item p{
  margin:0 0 26px;
  padding-right:46px;
  color:#4a5638;
  line-height:1.7;
  font-size:0.95rem;
}
.faq-cta{
  margin-top:60px;
  text-align:center;
  padding:44px;
  background:var(--peach);
}
.faq-cta h3{
  font-size:1.5rem;
  color:var(--olive-deep);
  margin-bottom:12px;
}
.faq-cta p{
  color:var(--olive-mid);
  font-size:0.92rem;
  margin-bottom:22px;
}
.faq-cta .directions-btn{ margin-top:0; }

/* ---------- Privacy policy page ---------- */
.policy-body{
  padding:90px 0 120px;
  max-width:760px;
  margin:0 auto;
}
.policy-body .updated{
  font-size:0.8rem;
  color:var(--olive-soft);
  margin-bottom:50px;
  letter-spacing:0.02em;
}
.policy-body h2{
  font-size:1.4rem;
  color:var(--olive-deep);
  margin-top:46px;
  margin-bottom:16px;
}
.policy-body h2:first-of-type{ margin-top:0; }
.policy-body p{
  color:#4a5638;
  line-height:1.75;
  font-size:0.95rem;
  margin-bottom:14px;
}
.policy-body ul{
  color:#4a5638;
  line-height:1.75;
  font-size:0.95rem;
  padding-left:20px;
  margin-bottom:14px;
}
.policy-body li{ margin-bottom:6px; }
.policy-body a{ color:var(--pink-deep); text-decoration:underline; font-family:'Rochester', cursive; font-size:1.1rem; }
.policy-note{
  margin-top:50px;
  padding:22px 26px;
  background:var(--peach);
  font-size:0.85rem;
  color:var(--olive-deep);
  line-height:1.6;
}

/* ---------- Thank you page ---------- */
.thankyou{
  min-height:calc(100vh - 74px);
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--olive-deep);
  color:var(--cream);
  text-align:center;
  padding:100px 6vw;
}
.thankyou-card{ max-width:520px; }
.thankyou-icon{
  width:64px; height:64px;
  border-radius:50%;
  background:var(--pink);
  color:var(--olive-deep);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.6rem;
  margin:0 auto 30px;
}
.thankyou h1{
  font-size:clamp(2.2rem, 5vw, 3rem);
  color:var(--pink);
  font-style:italic;
  margin-bottom:20px;
}
.thankyou p{
  color:#d7dcc7;
  line-height:1.7;
  font-size:1rem;
  margin-bottom:34px;
}
.thankyou-links{
  display:flex;
  gap:16px;
  justify-content:center;
  flex-wrap:wrap;
}

/* ==========================================================================
   Magic CTA button — adapted from a "generate button" concept, recoloured
   to the site's olive/pink palette (dark olive base, pink glow + sparkle).
   ========================================================================== */
.magic-btn{
  --mb-radius:24px;
  --mb-pad:4px;
  --mb-hue:336deg; /* pink */
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:10px;
  user-select:none;
  cursor:pointer;
  border:none;
  font-family:'Work Sans', sans-serif;
  font-size:0.85rem;
  font-weight:600;
  letter-spacing:0.03em;
  color:var(--cream);
  padding:14px 24px;
  background:var(--olive-deep);
  border-radius:var(--mb-radius);
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,0.12),
    inset 0 2px 4px rgba(255,255,255,0.06),
    0 -2px 6px rgba(0,0,0,0.15);
  border:1px solid rgba(255,255,255,0.12);
  transition:box-shadow 0.35s ease, border-color 0.35s ease, transform 0.2s ease;
  text-decoration:none;
}
.magic-btn::before{
  content:'';
  position:absolute;
  inset:calc(var(--mb-pad) * -1);
  border-radius:calc(var(--mb-radius) + var(--mb-pad));
  z-index:-1;
  pointer-events:none;
  background-image:linear-gradient(0deg, rgba(0,0,0,0.15), rgba(0,0,0,0.4));
  transition:box-shadow 0.35s ease;
}
.magic-btn::after{
  content:'';
  position:absolute; inset:0;
  border-radius:inherit;
  pointer-events:none;
  background-image:linear-gradient(0deg, #fff, hsl(var(--mb-hue) 100% 78%), hsla(var(--mb-hue) 100% 78% / 45%), transparent 60%);
  opacity:0;
  transition:opacity 0.35s ease;
}
.magic-btn:hover{ border-color:hsla(var(--mb-hue) 100% 80% / 45%); transform:translateY(-1px); }
.magic-btn:hover::after{ opacity:0.85; mask-image:linear-gradient(0deg,#fff,transparent); }
.magic-btn:active{ transform:translateY(0); background:hsla(var(--mb-hue) 45% 22% / 0.6); }
.magic-btn .sparkle{
  width:18px; height:18px;
  flex-shrink:0;
  fill:var(--pink);
  animation:mb-flicker 2.2s ease-in-out infinite;
  filter:drop-shadow(0 0 2px hsla(var(--mb-hue) 100% 75% / 0.6));
}
@keyframes mb-flicker{ 50%{ opacity:0.35; } }
.magic-btn:hover .sparkle{ animation:none; opacity:1; fill:#fff; }
.magic-btn .mb-label{ position:relative; }
.magic-btn.is-active .mb-label span{
  animation:mb-letter 0.9s ease-in-out infinite;
}
@keyframes mb-letter{ 50%{ opacity:0.4; } }

/* olive-toned variant, used where the pink glow needs to sit on a light background */
.magic-btn.on-light{
  color:var(--cream);
}

/* ==========================================================================
   Stats counter section
   ========================================================================== */
section.stats{
  background:var(--peach);
  padding:90px 0;
}
.stats-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  gap:20px;
  text-align:center;
}
.stat-item{
  padding:20px 10px;
}
.stat-number{
  font-family:'Fraunces', serif;
  font-style:italic;
  color:var(--olive-deep);
  font-size:clamp(2.6rem, 6vw, 3.6rem);
  line-height:1;
  display:inline-flex;
  align-items:baseline;
  gap:2px;
}
.stat-number .stat-suffix{
  font-size:0.5em;
  font-style:normal;
  color:var(--pink-deep);
}
.stat-label{
  margin-top:14px;
  font-size:0.78rem;
  color:var(--olive-mid);
  letter-spacing:0.02em;
  line-height:1.5;
  max-width:170px;
  margin-left:auto;
  margin-right:auto;
}
@media (max-width:760px){
  .stats-grid{ grid-template-columns:repeat(2, 1fr); row-gap:44px; }
}
/* ==========================================================================
   Expandable review cards (bento-style expand-on-click)
   ========================================================================== */
.review-card{ cursor:pointer; }
.review-card .expand-hint{
  margin-top:18px;
  font-size:0.68rem;
  text-transform:uppercase;
  letter-spacing:0.12em;
  color:#8fa06a;
}
.review-overlay{
  position:fixed; inset:0;
  background:rgba(20,26,14,0.55);
  backdrop-filter:blur(3px);
  z-index:500;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  opacity:0;
  pointer-events:none;
  transition:opacity 0.3s ease;
}
.review-overlay.open{ opacity:1; pointer-events:auto; }
.review-modal{
  background:var(--olive-deep);
  color:var(--cream);
  max-width:480px;
  width:100%;
  padding:44px 38px;
  position:relative;
  transform:translateY(16px) scale(0.97);
  opacity:0;
  transition:transform 0.35s ease, opacity 0.35s ease;
}
.review-overlay.open .review-modal{ transform:translateY(0) scale(1); opacity:1; }
.review-modal .close-btn{
  position:absolute;
  top:16px; right:16px;
  width:32px; height:32px;
  border-radius:50%;
  border:1px solid rgba(250,246,238,0.3);
  background:transparent;
  color:var(--cream);
  font-size:1rem;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:background 0.25s ease;
}
.review-modal .close-btn:hover{ background:rgba(250,246,238,0.12); }
.review-modal .review-stars{ margin-bottom:24px; }
.review-modal p.full-quote{
  font-family:'Fraunces', serif;
  font-style:italic;
  font-size:1.35rem;
  line-height:1.5;
  color:var(--cream);
  margin-bottom:28px;
}
.review-modal .reviewer{
  display:flex;
  align-items:center;
  gap:14px;
}
.review-modal .reviewer .avatar{
  width:44px; height:44px;
  border-radius:50%;
  background:var(--pink);
  color:var(--olive-deep);
  font-family:'Fraunces', serif;
  font-weight:600;
  display:flex; align-items:center; justify-content:center;
  font-size:1rem;
}
.review-modal .reviewer .who .name{ font-size:0.92rem; color:var(--cream); }
.review-modal .reviewer .who .meta{ font-size:0.72rem; color:#b9c79a; text-transform:uppercase; letter-spacing:0.08em; }


/* ==========================================================================
   Cylinder carousel — 3D rotating showcase of food photos
   ========================================================================== */
section.cylinder-section{
  background:var(--cream);
  padding:80px 0 20px;
}
.cylinder-wrap{
  perspective:1400px;
  padding:70px 0 40px;
  display:flex;
  justify-content:center;
}
.cylinder-stage{
  position:relative;
  width:220px;
  height:280px;
  transform-style:preserve-3d;
  animation:cyl-spin 26s linear infinite;
}
.cylinder-stage:hover{ animation-play-state:paused; }
.cylinder-stage .cyl-item{
  position:absolute;
  inset:0;
  border-radius:6px;
  overflow:hidden;
  box-shadow:0 20px 40px rgba(0,0,0,0.35);
  border:2px solid rgba(250,246,238,0.5);
}
.cylinder-stage .cyl-item img{
  width:100%; height:100%; object-fit:cover;
}
@keyframes cyl-spin{
  from{ transform:rotateY(0deg); }
  to{ transform:rotateY(360deg); }
}
@media (prefers-reduced-motion: reduce){
  .cylinder-stage{ animation:none; }
}

@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; scroll-behavior:auto !important; }
  .serve-card, .gallery-figure, .review-card{ opacity:1 !important; transform:none !important; }
}

:focus-visible{
  outline:2px solid var(--pink-deep);
  outline-offset:3px;
}
