:root{
  --green:#4A8C2A; --lettuce:#6AAF3D; --basil:#3A7020;
  --bg:#FFFDF8; --crumb:#F7F4EE; --linen:#EFEAE0;
  --ink:#2D2D2D; --sesame:#6B6560; --pepper:#9B958E; --dough:#DDD7CC;
  --tomato:#D94F3D; --tomato-dark:#C0432F;
  --avocado:#5BA54C; --mustard:#E5A832; --sky:#4A9DC8;
  --r-sm:4px; --r-md:8px; --r-lg:12px; --r-xl:16px; --r-full:9999px;
  --sh-sm:0 1px 3px rgba(45,45,45,.06); --sh-md:0 4px 12px rgba(45,45,45,.08);
  --sh-lg:0 8px 32px rgba(45,45,45,.12);
  --dur:200ms; --ease:cubic-bezier(.16,1,.3,1);
  --font:'DM Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --serif:'Fraunces',Georgia,serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);line-height:1.6;font-size:16px}
a{color:var(--green)}a:hover{color:var(--basil)}
img{max-width:100%;display:block}
.hidden{display:none!important}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--green);color:#fff;padding:10px 16px;z-index:200;border-radius:0 0 8px 0}
.skip-link:focus{left:0}
.fraunces{font-family:var(--serif);font-style:italic}
.muted{color:var(--sesame)} .muted-light{color:rgba(255,255,255,.6)}

/* buttons */
.btn{display:inline-block;border:0;cursor:pointer;font-family:var(--font);font-weight:700;border-radius:var(--r-md);text-decoration:none;transition:all var(--dur) var(--ease);font-size:15px;padding:14px 28px;letter-spacing:.02em}
.btn-primary{background:var(--green);color:var(--bg);text-transform:uppercase;letter-spacing:.04em}
.btn-primary:hover{background:var(--basil);color:#fff;transform:translateY(-1px)}
.btn-primary:disabled{background:var(--linen);color:var(--pepper);cursor:not-allowed;transform:none}
.btn-sm{padding:10px 18px;font-size:14px}
.btn-block{width:100%;margin-top:10px}
.btn-secondary{background:var(--crumb);color:var(--ink);border:1px solid var(--dough);padding:10px 20px;font-size:14px}
.btn-secondary:hover{border-color:var(--green)}
.btn-ghost{background:transparent;color:var(--green);border-bottom:1px solid var(--green);border-radius:0;padding:8px 0}
.btn-ghost-light{color:#fff;border:1.5px solid rgba(255,255,255,.8);background:rgba(255,255,255,.12);backdrop-filter:blur(4px)}
.btn-ghost-light:hover{background:#fff;color:var(--ink)}
.icon-btn{border:1px solid var(--dough);background:#fff;border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:15px}
.icon-btn:hover{border-color:var(--green);color:var(--green)}

/* topbar */
.topbar{position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:1px solid var(--dough);transition:box-shadow var(--dur)}
.topbar.scrolled{box-shadow:var(--sh-md)}
.topbar-inner{max-width:1280px;margin:0 auto;padding:0 20px;height:68px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand-text{display:flex;flex-direction:column;line-height:1.1}
.brand-text strong{font-size:19px}.brand-text em{font-style:normal;font-size:12px;color:var(--sesame)}
.topbar-right{display:flex;align-items:center;gap:14px}
.open-status{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--sesame);background:var(--crumb);border:1px solid var(--dough);padding:6px 12px;border-radius:var(--r-full);white-space:nowrap}
.dot{width:9px;height:9px;border-radius:50%;background:var(--pepper)}
.dot.open{background:var(--avocado);box-shadow:0 0 0 3px rgba(91,165,76,.2)}
.dot.closed{background:var(--tomato)}
.signin-link{font-weight:500;font-size:14px;color:var(--ink);text-decoration:none}
.signin-link:hover{color:var(--green)}
.lang-toggle{display:flex;border:1px solid var(--dough);border-radius:var(--r-full);overflow:hidden}
.lang-btn{border:0;background:transparent;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;color:var(--sesame)}
.lang-btn.active{background:var(--green);color:#fff}

/* hero */
.hero{position:relative;min-height:350px;display:flex;align-items:flex-end;overflow:hidden;background:#2d2d2d}
.hero-bg{position:absolute;inset:0;background:url('https://images.unsplash.com/photo-1509722747041-616f39b57569?w=1600&q=80&auto=format&fit=crop') center/cover;filter:saturate(1.05)}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,20,15,.35) 0%,rgba(20,20,15,.15) 40%,rgba(255,253,248,.97) 100%)}
.hero-content{position:relative;max-width:1280px;margin:0 auto;padding:56px 20px 84px;width:100%;color:#fff}
.hero-kicker{font-size:13px;letter-spacing:.08em;text-transform:uppercase;opacity:.9;margin:0 0 8px}
.hero-content h1{font-size:clamp(34px,5vw,56px);line-height:1.02;margin:0 0 12px;text-shadow:0 2px 18px rgba(0,0,0,.35)}
.hero-sub{max-width:520px;font-size:17px;margin:0 0 20px;text-shadow:0 1px 10px rgba(0,0,0,.4)}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.hero-logo{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%)}
.hero-logo-circle{width:118px;height:118px;background:#fff;border-radius:50%;box-shadow:var(--sh-md);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.hero-logo-circle strong{font-size:17px}.hero-logo-circle span{font-size:11px;color:var(--sesame)}

/* subnav + notice */
.subnav{display:flex;justify-content:center;gap:8px;background:rgba(255,253,248,.9);padding:54px 0 0;position:sticky;top:68px;z-index:50}
.subnav-tab{border:0;background:transparent;font-family:var(--font);font-weight:500;font-size:19px;padding:12px 28px;cursor:pointer;color:var(--ink);border-bottom:3px solid transparent}
.subnav-tab:hover{background:var(--crumb)}
.subnav-tab.active{border-bottom-color:var(--green);color:var(--ink)}
.notice-strip{max-width:900px;margin:14px auto 0;padding:12px 20px;display:flex;gap:10px;align-items:flex-start;background:#FFF6E8;border:1px solid #EBD9B4;border-radius:var(--r-md);font-size:14px;color:#5b4a1e}
.notice-strip p{margin:0}

/* layout */
.layout{max-width:1280px;margin:0 auto;padding:10px 20px 80px;display:grid;grid-template-columns:1fr 310px;gap:28px;align-items:start}
.main-col{min-width:0}
.section{padding:32px 0 8px}
.section h2{font-size:28px;margin:0 0 4px}
.section-sub{color:var(--sesame);margin:0 0 20px;font-size:15px}

/* mode cards */
.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.mode-card{background:#fff;border:2px solid var(--dough);border-radius:var(--r-lg);padding:24px;cursor:pointer;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);box-shadow:var(--sh-sm)}
.mode-card:hover{box-shadow:var(--sh-md)}
.mode-card.selected{border-color:var(--green);box-shadow:var(--sh-md)}
.mode-card h3{margin:10px 0 4px;font-size:20px}
.mode-note{color:var(--sesame);font-size:14px;margin:0 0 10px}
.mode-icon{display:flex;justify-content:center}
.postcode-chips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.postcode-chips span{background:var(--crumb);border:1px solid var(--dough);font-size:12px;font-weight:700;padding:3px 9px;border-radius:var(--r-full)}
.slot-list{display:flex;flex-direction:column;gap:8px}
.slot{border:1px solid var(--dough);border-radius:var(--r-md);padding:10px 14px;font-size:14px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;background:var(--bg);transition:all var(--dur) var(--ease)}
.slot:hover{border-color:var(--green)}
.slot.selected{border-color:var(--green);background:rgba(106,175,61,.07);font-weight:700}
.slot.disabled{background:var(--linen);color:var(--pepper);text-decoration:line-through;cursor:not-allowed}
.slot .left{display:flex;gap:8px;align-items:center}

/* spotlight */
.spotlight-card{display:grid;grid-template-columns:1.1fr 1fr;background:#fff;border:1px solid var(--dough);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--sh-md)}
.spotlight-img{position:relative;min-height:260px}
.spotlight-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.badge{position:absolute;top:14px;left:14px;background:var(--tomato);color:#fff;font-size:12px;font-weight:700;padding:6px 12px;border-radius:var(--r-full)}
.badge.veg{background:var(--green)} .badge.pop{background:var(--ink)} .badge.sold{background:var(--pepper)}
.spotlight-body{padding:28px}
.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--green);font-weight:700;margin:0}
.spotlight-body h2{margin:6px 0}
.spotlight-body .fraunces{color:var(--sesame);font-size:17px;margin:0 0 8px}
.spot-ing{font-size:13px;color:var(--sesame);margin:0 0 16px}
.spot-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.price{font-weight:700;font-size:20px;color:var(--tomato)}

/* toolbar */
.toolbar{display:flex;flex-direction:column;gap:12px;margin-bottom:8px}
.search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--dough);border-radius:var(--r-full);padding:10px 16px;max-width:480px}
.search:focus-within{border-color:var(--green)}
.search input{border:0;outline:0;background:transparent;width:100%;font-size:15px;font-family:var(--font)}
.cat-tabs{display:flex;gap:4px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
.cat-tabs::-webkit-scrollbar{height:6px}.cat-tabs::-webkit-scrollbar-thumb{background:var(--dough);border-radius:99px}
.cat-btn{white-space:nowrap;border:0;background:transparent;font-family:var(--font);font-weight:500;font-size:14px;padding:10px 18px;border-bottom:3px solid transparent;cursor:pointer;color:var(--sesame);border-radius:8px 8px 0 0}
.cat-btn:hover{background:var(--crumb);color:var(--ink)}
.cat-btn.active{color:var(--ink);border-bottom-color:var(--green)}
.result-meta{font-size:13px;color:var(--sesame);margin:4px 0 14px}

/* product grid */
.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.card{background:#fff;border:1px solid var(--dough);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-sm);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);display:flex;flex-direction:column}
.card:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
.card-img{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--linen)}
.card-img img{width:100%;height:100%;object-fit:cover;transition:transform 400ms var(--ease)}
.card:hover .card-img img{transform:scale(1.04)}
.card.soldout .card-img img{filter:grayscale(.7);opacity:.6}
.card-body{padding:14px 14px 16px;display:flex;flex-direction:column;gap:4px;flex:1}
.card-body h3{margin:0;font-size:16px}
.card-ing{font-size:13px;color:var(--sesame);margin:0;line-height:1.45;min-height:36px}
.card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.add-btn{width:38px;height:38px;border-radius:50%;border:0;background:var(--green);color:#fff;font-size:20px;line-height:1;cursor:pointer;transition:all var(--dur) var(--ease);min-width:38px}
.add-btn:hover{background:var(--lettuce);transform:scale(1.06)}
.add-btn:active{transform:scale(.94);background:var(--basil)}
.add-btn:disabled{background:var(--linen);color:var(--pepper);cursor:not-allowed;transform:none}
.empty-products{text-align:center;padding:40px;background:#fff;border:1px dashed var(--dough);border-radius:var(--r-lg)}

/* info cards */
.info-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.info-card{background:var(--crumb);border:1px solid var(--dough);border-radius:var(--r-lg);padding:18px;font-size:14px}
.info-card h3{margin:0 0 6px;font-size:16px}.info-card p{margin:0;color:var(--sesame)}

/* hours */
.hours-card{background:#fff;border:1px solid var(--dough);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-sm)}
.hours-table{width:100%;border-collapse:collapse;font-size:15px}
.hours-table th,.hours-table td{padding:10px 8px;border-bottom:1px solid var(--dough);text-align:left}
.hours-table tr.today td{background:rgba(106,175,61,.08);font-weight:700}
.hours-table tr.closed td{color:var(--pepper)}
.hours-note{color:var(--sesame);font-size:13px}
.map-card{background:#fff;border:1px solid var(--dough);border-radius:var(--r-lg);padding:22px;margin-top:14px}

/* basket */
.basket{position:sticky;top:140px;background:#fff;border:1px solid var(--dough);border-radius:var(--r-lg);box-shadow:0 0 20px rgba(45,45,45,.12);overflow:hidden;max-height:calc(100vh - 160px);display:flex;flex-direction:column}
.basket-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 8px}
.basket-head h2{font-size:20px;margin:0}
.basket-count{background:var(--green);color:#fff;font-size:13px;font-weight:700;min-width:28px;height:28px;border-radius:99px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;transition:transform var(--dur)}
.basket-count.bump{transform:scale(1.35)}
.basket-mode{margin:0 18px 10px;font-size:12px;color:var(--sesame);background:var(--crumb);border-radius:var(--r-md);padding:8px 12px}
.basket-items{overflow-y:auto;padding:0 18px;flex:1;min-height:120px}
.basket-empty{text-align:center;color:var(--sesame);font-size:14px;padding:18px 0}
.basket-empty .fraunces{font-size:17px;color:var(--ink);margin:0}
.b-item{display:flex;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--dough);animation:slideIn var(--dur) var(--ease)}
@keyframes slideIn{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
.b-item .nm{flex:1;font-size:14px}.b-item .nm small{display:block;color:var(--sesame);font-size:12px}
.b-item .pr{font-size:13px;font-weight:700}
.qty{display:flex;align-items:center;gap:6px}
.qty button{width:26px;height:26px;border-radius:50%;border:1px solid var(--dough);background:#fff;cursor:pointer;font-size:14px;line-height:1}
.qty button:hover{border-color:var(--green);color:var(--green)}
.basket-foot{padding:14px 18px 18px;border-top:1px solid var(--dough);background:#fff}
.basket-foot .row{display:flex;justify-content:space-between;font-size:14px;padding:2px 0}
.basket-foot .row.total{font-size:18px;font-weight:700;border-top:1px solid var(--dough);margin-top:8px;padding-top:10px}
.min-warn{background:#FFF6E8;border:1px solid #EBD9B4;color:#5b4a1e;font-size:12px;border-radius:var(--r-md);padding:8px 10px;margin:8px 0 0}
.basket-quote{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--sesame);text-align:center;margin:12px 0 0}

/* mobile bar + overlay + modal */
.mobile-bar{position:fixed;left:12px;right:12px;bottom:12px;z-index:90;background:#fff;border:1px solid var(--dough);box-shadow:var(--sh-lg);border-radius:var(--r-lg);padding:14px 18px;display:flex;justify-content:space-between;align-items:center;font-size:14px;cursor:pointer;font-family:var(--font)}
.mobile-cta{color:var(--green);font-weight:700}
.basket-overlay{position:fixed;inset:0;z-index:120;background:rgba(45,45,45,.5);display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--bg);width:100%;max-width:560px;max-height:88vh;border-radius:16px 16px 0 0;display:flex;flex-direction:column;animation:up 300ms var(--ease)}
@keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 0}
.modal-backdrop{position:fixed;inset:0;z-index:130;background:rgba(45,45,45,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--bg);border-radius:var(--r-xl);max-width:480px;width:100%;max-height:90vh;overflow-y:auto;padding:22px;box-shadow:var(--sh-lg);animation:up 300ms var(--ease)}
.modal-head{display:flex;justify-content:space-between;align-items:center}
.modal-head h2{margin:0}
.steps{display:flex;gap:8px;list-style:none;padding:0;font-size:12px;color:var(--pepper)}
.steps li.active{color:var(--green);font-weight:700}
.co-step label{display:block;font-size:14px;font-weight:500;margin:10px 0}
.co-step input,.co-step textarea{width:100%;margin-top:4px;border:1px solid var(--dough);border-radius:var(--r-md);padding:11px 12px;font-size:15px;font-family:var(--font);background:#fff}
.co-step input:focus,.co-step textarea:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}
.success{font-size:48px;text-align:center}
.toast{position:fixed;bottom:84px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 20px;border-radius:var(--r-full);font-size:14px;z-index:200;box-shadow:var(--sh-lg);animation:up var(--dur) var(--ease)}
.toast.show{display:block}

/* footer */
.footer{background:var(--ink);color:var(--bg);margin-top:20px}
.footer-inner{max-width:1280px;margin:0 auto;padding:44px 20px 20px;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:24px}
.footer a{color:var(--lettuce);text-decoration:none}.footer a:hover{color:#fff}
.f-brand{display:flex;gap:10px;align-items:center}.f-brand strong{display:block;font-size:18px}.f-brand span{font-size:13px;color:rgba(255,255,255,.6)}
.f-col h4{margin:0 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.7)}
.f-col p{margin:0;font-size:14px;color:rgba(255,255,255,.85)}
.f-love{font-size:15px;color:rgba(255,255,255,.6)}
.fb{display:inline-block;margin-top:8px;border:1px solid rgba(255,255,255,.25);padding:6px 14px;border-radius:99px;font-size:13px}
.footer-base{max-width:1280px;margin:0 auto;padding:14px 20px 22px;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;color:rgba(255,255,255,.45)}

/* responsive */
@media(max-width:1020px){.product-grid{grid-template-columns:repeat(2,1fr)}.info-cards{grid-template-columns:1fr 1fr}}
@media(max-width:860px){
  .layout{grid-template-columns:1fr}
  .basket{display:none}
  .mobile-bar.hidden{display:none!important}.mobile-bar{display:flex}
  .subnav{top:68px}
  .open-status span:last-child{display:none}
  .open-status::after{content:""}
  .hero{min-height:300px}
}
@media(min-width:861px){.mobile-bar,.basket-overlay{display:none!important}}
@media(max-width:640px){
  .mode-grid{grid-template-columns:1fr}
  .product-grid{grid-template-columns:1fr}
  .spotlight-card{grid-template-columns:1fr}
  .spotlight-img{min-height:200px;position:relative;height:210px}
  .info-cards{grid-template-columns:1fr}
  .footer-inner{grid-template-columns:1fr}
  .topbar-inner{padding:0 12px}.signin-link{display:none}
  .hero-content{padding:40px 16px 84px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}
:focus-visible{outline:2px solid var(--green);outline-offset:2px}
