/* Weedhub — the menu browser (weedhub-meadow/menu-browser): search first, pickup / delivery
   toggle, category chips with live counts, the filter rail (a sheet on phones and tablets), results
   bar, states, "Show more"; the order screen's intro (/order/). Markup contract: THEME-HANDLES §2. */
.menu-form{display:grid;gap:var(--sp-3);margin-bottom:var(--sp-5)}
.menu-mode{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-4);order:2}
.menu-form .search{order:1}
.menu-form .chips-wrap{order:3}
.menu-mode__note,.sort__l{color:var(--tx2);font-size:var(--t-sm)}
.menu-mode__note .pending{white-space:normal}
.seg{display:inline-flex;margin:0;padding:3px;border:1px solid var(--ln2);border-radius:var(--r);background:var(--sf1)}
.seg__opt,.chip,.opt{position:relative;flex:none}
.seg__opt input,.chip input,.opt input{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.seg__opt span{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 16px;border-radius:2px;color:var(--tx2);font-size:var(--t-sm);font-weight:600}
.seg__opt input:checked+span{background:var(--amber);color:#000}
.seg__opt input[value=delivery]:checked+span{background:var(--teal);color:#000}
.seg__opt input:focus-visible+span,.chip input:focus-visible+span,.opt input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.menu-form .search__input{min-height:56px;font-size:1.0625rem;border-color:var(--ln2)}
.chips-wrap{min-width:0;margin:0;padding:0;border:0}
.chips{display:flex;gap:6px;margin-inline:calc(-1*var(--gutter));padding:2px var(--gutter) 6px;overflow-x:auto;scrollbar-width:none;scroll-padding-inline:var(--gutter);list-style:none}
.chips::-webkit-scrollbar{display:none}
.chip span,.chip-link,.opt span{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--ln2);border-radius:var(--r);background:var(--bk);color:var(--tx);font:600 var(--t-sm)/1 var(--f);white-space:nowrap;text-decoration:none;transition:border-color var(--d-1),color var(--d-1)}
.chip em,.chip-link em{color:var(--mu);font:500 var(--t-xs)/1 var(--mono);font-style:normal}
.chip:hover span,.chip-link:hover,.opt:hover span{border-color:var(--amber)}
.chip input:checked+span,.chip-link.is-on,.chip-link[aria-current],.opt input:checked+span{border-color:var(--amber);background:var(--amber);color:#000}
.chip input:checked+span em,.chip-link.is-on em,.chip-link[aria-current] em{color:#3a2a0a}
.opt span{padding:0 10px}
.opt--lg span{min-height:48px;padding:0 16px}
.menu__layout{display:grid;gap:var(--sp-5)}
.filters,.filters__close,.filters__foot{display:none}
.filters__head{display:flex;align-items:center;justify-content:space-between}
.filters__h{font-size:var(--t-1);font-weight:700}
.fgroup{min-width:0;margin:0;padding:var(--sp-4) 0;border:0;border-top:1px solid var(--ln)}
.fgroup legend{float:left;width:100%;margin-bottom:var(--sp-2);padding:0;color:var(--mu);font:600 var(--t-xs)/1.3 var(--f)}
.fgroup legend+*{clear:both}
.fgroup__note{margin-top:6px;color:var(--mu);font-size:var(--t-xs)}
.check{display:flex;align-items:center;gap:10px;min-height:40px;font-size:var(--t-sm);cursor:pointer}
.check input{flex:none;width:18px;height:18px;margin:0;accent-color:var(--amber)}
.check em{margin-left:auto;color:var(--mu);font:500 var(--t-xs)/1 var(--mono);font-style:normal}
.check:hover{color:var(--amber)}
.opts{display:flex;flex-wrap:wrap;gap:6px}
.more-brands summary{display:flex;align-items:center;gap:6px;min-height:44px;color:var(--amber);font-size:var(--t-sm);font-weight:600;cursor:pointer;list-style:none}
.more-brands summary::-webkit-details-marker{display:none}
.more-brands .i{transition:transform var(--d-2) var(--ease)}
.more-brands[open] summary .i{transform:rotate(180deg)}
.sheet{position:fixed;inset:auto 0 0 0;width:100%;max-width:none;max-height:88vh;margin:0;padding:0;border:0;border-top:1px solid var(--ln2);border-radius:var(--r) var(--r) 0 0;background:var(--sf1);color:var(--tx);overscroll-behavior:contain}
.sheet::backdrop{background:rgb(0 0 0/.72)}
.sheet .filters{display:flex;flex-direction:column;max-height:88vh;overflow-y:auto;overscroll-behavior:contain}
.filters__count:not([hidden]){display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:8px;padding:0 5px;border-radius:var(--r);background:var(--amber);color:#000;vertical-align:middle;font:600 .6875rem/1 var(--mono)}
.sheet .filters__head{position:sticky;top:0;z-index:2;padding:8px var(--gutter);border-bottom:1px solid var(--ln);background:var(--sf1)}
.sheet .filters__close{display:grid}
.sheet .fgroup{padding-inline:var(--gutter)}
.sheet .fgroup:first-of-type,.sheet .fgroup[hidden]:first-of-type+.fgroup{border-top:0} /* An empty Strain group is kept, hidden (menu.js refills it). */
.sheet .filters__foot{position:sticky;bottom:0;display:grid;grid-template-columns:1fr 2fr;gap:var(--sp-2);padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--ln);background:var(--sf1)}
.menu__stale{display:flex;align-items:center;gap:8px;margin-bottom:var(--sp-4);padding:10px 14px;border:1px solid var(--ln);border-left:3px solid var(--ln2);border-radius:var(--r);background:var(--sf1);color:var(--tx2);font-size:var(--t-sm)}
/* /order/: how ordering works, next to Meadow's ordering screen */
.order-intro{padding-block:var(--sp-2)}
.order-intro__more{width:100%;border-block:1px solid var(--ln)}
.order-intro__more>summary{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px var(--sp-3);min-height:48px;padding:12px 36px 12px 0;color:var(--tx);font-size:var(--t-sm);line-height:1.45;cursor:pointer;list-style:none}
.order-intro__more>summary::-webkit-details-marker{display:none}
.order-intro__more>summary::after{content:"";position:absolute;top:14px;right:0;width:20px;height:20px;background:var(--amber);-webkit-mask:var(--chev) center/20px no-repeat;mask:var(--chev) center/20px no-repeat;transition:transform var(--d-2) var(--ease)}
.order-intro__more[open]>summary::after{transform:rotate(180deg)}
.order-intro__more>summary .label{flex:none;margin:0;color:var(--amber);font-size:var(--t-sm)}
.order-intro__sum{flex:1 1 18rem;min-width:0;color:var(--tx2)}
.order-intro__more>:not(summary){margin-top:var(--sp-3)}
.order-intro__more>:last-child{margin-bottom:var(--sp-4)}
.order-intro p:not(.label){max-width:46rem;color:var(--tx2);font-size:var(--t-sm)}
.order-intro b{color:var(--tx)}
/* Meadow's ordering frame (#order-embed, #preorder-embed): a framed panel; the "coming soon" state */
.order-embed{scroll-margin-top:calc(var(--hbar) + 16px)}
.order-embed iframe{width:100%;min-height:80vh;border:1px solid var(--ln2);border-radius:var(--r);background:#fff}
.order-embed--soon{padding:var(--sp-6) var(--sp-5);border:1px dashed var(--ln2);border-radius:var(--r);background:var(--sf1)}
.order-embed__soon{max-width:40rem;color:var(--tx2)}
.order-embed__noscript{padding:var(--sp-4);border:1px solid var(--ln2);border-radius:var(--r);color:var(--tx2)}
.results-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--ln)}
.results-bar__count{flex-basis:100%;color:var(--tx2);font:500 var(--t-sm)/1.4 var(--mono)}
.results-bar__count b{color:var(--tx);font-weight:500}
.count-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--r);background:var(--amber);color:#000;font:600 .6875rem/1 var(--mono)}
.sort{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto}
.more{display:grid;justify-items:center;gap:var(--sp-3);margin-top:var(--sp-6);color:var(--tx2);font:500 var(--t-sm)/1.4 var(--mono)}
.results[aria-busy=true] .grid-products{opacity:.5;transition:opacity var(--d-1)}
.menu__brands .sec-head{margin-top:var(--sp-4)}
.brands{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
@keyframes up{from{transform:translateY(32px);opacity:.4}}
@media (prefers-reduced-motion:no-preference){.sheet[open]{animation:up .24s var(--ease)}}
@media (min-width:600px) and (max-width:1023px){
.sheet{inset:0 0 0 auto;width:min(420px,100%);height:100%;max-height:none;border-top:0;border-left:1px solid var(--ln2);border-radius:0}
.sheet .filters{height:100%;max-height:none}
.sheet .filters__foot{grid-template-columns:auto minmax(0,1fr)}
@media (prefers-reduced-motion:no-preference){.sheet[open]{animation:slide .22s var(--ease)}}}
@media (max-width:1023px){
html:not(.js) .filters{display:block}
html:not(.js) [data-sheet-open]{display:none}}
@media (min-width:768px){
.results-bar__count{flex-basis:auto;margin-right:auto}
.sort{margin-left:0}}
@media (min-width:1024px){
.results-bar__filters{display:none}
.menu__layout{grid-template-columns:240px minmax(0,1fr);gap:var(--sp-7);align-items:start}
.filters{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;column-gap:var(--sp-2);position:sticky;top:calc(var(--hbar) + 16px);max-height:calc(100vh - var(--hbar) - 32px);padding-right:6px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ln2) transparent}
.filters>*{grid-column:1/-1}
.filters>.filters__head{grid-column:1;grid-row:1;min-height:40px}
.js .filters.is-filtered>.filters__foot{display:flex;grid-column:2;grid-row:1;align-items:center}
.filters>.filters__foot [data-sheet-close]{display:none}
.filters>.filters__foot [data-clear]{min-height:34px;padding:0 10px}
.chips{flex-wrap:wrap;margin:0;padding:0;overflow:visible}}

/* ---- v3 layer (the Geary editorial): pills, amber selections (obsidian text), amber counts -------- */
.menu{padding-top:var(--sp-6)}
.seg{padding:4px;border:0;border-radius:99px;background:var(--stone)}
.seg__opt span{min-height:40px;padding:0 18px;border-radius:99px;color:var(--ink)}
.seg__opt input:checked+span,.seg__opt input[value=delivery]:checked+span{background:var(--sun);color:var(--obsidian)}
.menu-form .search__input{min-height:60px;border:0;border-bottom:2px solid var(--ivory);border-radius:0;background:transparent;font-size:1.125rem;font-weight:600}
.menu-form .search__input:focus-visible{outline:none;border-bottom-color:var(--sun);box-shadow:0 2px 0 var(--sun)}
.menu-form .search__go{--bg:var(--sun);--fg:var(--obsidian);--bd:var(--sun);--fill:var(--ivory);--fill-fg:var(--obsidian)}
.chip span,.chip-link,.opt span{border:1px solid var(--rule-2);border-radius:99px;background:var(--white);color:var(--ink);font-weight:600;transition:border-color var(--d-1),background-color var(--d-1),color var(--d-1),transform var(--d-2) var(--ease)}
.chip em,.chip-link em{color:var(--ink-2);font:700 var(--t-xs)/1 var(--f);font-variant-numeric:tabular-nums}
.chip:hover span,.chip-link:hover,.opt:hover span{border-color:var(--sun);transform:translateY(-1px)}
.chip input:checked+span,.chip-link.is-on,.chip-link[aria-current],.opt input:checked+span{border-color:var(--sun);background:var(--sun);color:var(--obsidian)}
.chip input:checked+span em,.chip-link.is-on em,.chip-link[aria-current] em{color:var(--obsidian)}
.filters__h{font:800 1.5rem/1 var(--serif);letter-spacing:0}
.fgroup{border-top-color:var(--rule-2)}
.fgroup legend{color:var(--ink);font:700 .6875rem/1.3 var(--f);letter-spacing:.16em;text-transform:uppercase}
.fgroup__note{color:var(--ink-2)}
.check input{accent-color:var(--sun)}
.check em{color:var(--ink-2);font:600 var(--t-xs)/1 var(--f);font-variant-numeric:tabular-nums}
.check:hover{color:var(--sun)}
.more-brands summary{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.sheet{border-top:0;border-radius:16px 16px 0 0;background:var(--card);color:var(--ink)}
.sheet::backdrop{background:rgb(0 0 0/.72);backdrop-filter:blur(2px)}
.sheet .filters__head,.sheet .filters__foot{background:var(--card);border-color:var(--rule-2)}
.filters__count:not([hidden]),.count-badge{border-radius:99px;background:var(--sun);color:var(--obsidian);font:700 .6875rem/1 var(--f)}
.menu__stale{border:0;border-radius:0;background:var(--white);box-shadow:inset 3px 0 0 var(--sun);color:var(--tx2)}
.results-bar{border-bottom-color:var(--rule-2)}
.results-bar__count{color:var(--tx2);font:600 var(--t-sm)/1.4 var(--f)}
.results-bar__count b{color:var(--ink);font-weight:800}
.more{color:var(--tx2);font:600 var(--t-sm)/1.4 var(--f)}
.order-intro__more{border-color:var(--rule-2)}
.order-intro__more>summary::after{background:var(--ink)}
.order-intro__more>summary .label{color:var(--ink)}
.order-embed iframe{border:0;border-radius:0;background:var(--white);box-shadow:0 30px 60px -30px rgb(0 0 0/.8)}
.order-embed--soon{border:0;border-radius:0;background:var(--obsidian);color:var(--ivory)}
.order-embed--soon .order-embed__soon{color:var(--fog)}
.order-embed__noscript{border:0;border-radius:0;background:var(--white)}
.menu__brands .sec-head{margin-top:var(--sp-7)}
.brands a{display:inline-flex;align-items:baseline;gap:6px;padding:8px 14px;border:1px solid var(--rule-2);border-radius:99px;background:var(--white);font-weight:600;text-decoration:none}
.brands a:hover{border-color:var(--sun);color:var(--sun)}
/* Brands page: one section per letter, the brands as plain rows (the category list's .cats/.cat:
   one column on a phone, two from 480 px, four from 768) under an amber letter. Over it an A–Z bar
   drawn like the header bar it pins under: obsidian edge to edge, a hairline below, letters in the
   condensed display face; a letter turns amber on hover and stays amber once tapped (focus).
   Letters with no brand today are dimmed. The wrapper ends with the last letter, so the bar lets go
   before "Shop by category".
   The bar's rows are fixed per width so its height is known (26 or 27 letters, each ≥ 24 px wide):
   9 columns = 3 rows below 400 px (112 px), 14 = 2 rows to 767 (80 px), one row from 768 (48 px).
   It pins at the stuck header's height: --hdr (65 / 73 px), but 61 px from 1100, where the stuck
   header shrinks (site.css .site-header.is-stuck{--hbar:60px}). A section jumped to lands with its
   letter 8 px under the bar: scroll-margin = stuck header + bar + 8 − the section's 24 px padding −
   html scroll-padding (--hbar + 16). */
.bx{padding-top:var(--sp-5);scroll-margin-top:81px}
.bx__l{margin:0 0 var(--sp-2);color:var(--sun);font:800 2.25rem/1 var(--serif);letter-spacing:0}
.az{position:sticky;top:var(--hdr);z-index:2;padding:var(--sp-2) 0}
.az::before{content:"";position:absolute;z-index:-1;inset:0 calc(50% - 50vw);background:var(--obsidian);border-bottom:1px solid color-mix(in srgb,var(--ivory) 22%,transparent)}
.az ul{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));list-style:none;margin:0;padding:0}
.az a,.az__off{display:grid;place-items:center;min-height:32px;font:800 1.25rem/1 var(--serif);letter-spacing:0;text-decoration:none}
.az a{color:var(--ivory);transition:color var(--d-1)}
.az a:hover,.az a:focus{color:var(--sun)}
.az__off{color:color-mix(in srgb,var(--ivory) 24%,transparent)}
@media (min-width:400px){.az ul{grid-template-columns:repeat(14,minmax(0,1fr))}.bx{scroll-margin-top:49px}}
@media (min-width:768px){.az ul{display:flex;justify-content:space-between}.az a,.az__off{min-width:24px}.bx{scroll-margin-top:17px}}
@media (min-width:1100px){.az{top:61px}.bx{scroll-margin-top:1px}}
@media (min-width:1024px){.filters{scrollbar-color:var(--rule-2) transparent}}

/* ---- the shop page: the home page's "Today's deal" box above the menu (Henry, 2026-10-27) ---- */
.menu-deals .ticket{margin-block:var(--sp-5) var(--sp-7)}
/* its "View the menu" link would reload this page: hidden here (the home page keeps it) */
.menu-deals .ticket a[href$="/menu/"]:not(.ticket__flyer-link){display:none}
