:root{
  --gold:#FDCA00;
  --gold-soft:#7D6307;
  --green:#2F6A20;
  --green-mid:#24501A;
  --green-dark:#16300F;
  --green-deep:#0E2009;
  --cream:#F8F7F1;
  --cream-2:#F1EFE6;
  --ink:#1E2C18;
  --teal:#3A9D9B;
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Karla',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--green-deep)}
body{font-family:var(--sans);background:var(--cream);color:var(--ink);font-weight:300;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
img{height:auto}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;line-height:1.15}
.eyebrow{font-family:var(--sans);font-size:.72rem;letter-spacing:.34em;text-transform:uppercase;font-weight:500}
.rule{width:52px;height:2px;background:var(--gold);border:0;margin:1.4rem auto}
.rule.left{margin:1.4rem 0}
/* One box model for every button. Anchors and <button> elements were resolving
   to different heights (53px vs 46px) because the UA line-height differs, and
   a short label sat narrower than the one beside it. Fixed line-height, border-
   box sizing and a floor width make a pair match whatever the wording. */
.btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
  min-height:3.3rem;min-width:14rem;line-height:1.15;text-align:center;
  font-family:var(--sans);font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;font-weight:500;
  padding:.95rem 2.2rem;border:1px solid var(--gold);transition:all .35s ease;cursor:pointer;background:transparent}
.btn.solid{background:var(--gold);color:var(--green-deep)}
.btn.solid:hover{background:transparent;color:var(--gold)}
.btn.ghost{color:var(--gold)}
.btn.ghost:hover{background:var(--gold);color:var(--green-deep)}
.btn.dark{border-color:var(--green);color:var(--green)}
.btn.dark:hover{background:var(--green);color:var(--cream)}

/* ---------- header ---------- */
header{position:fixed;top:0;left:0;right:0;z-index:120;transition:background .45s ease,box-shadow .45s ease;padding:0 clamp(1rem,4vw,3rem)}
header.scrolled{background:rgba(14,32,9,.96);box-shadow:0 1px 0 rgba(253,202,0,.18)}
.nav-wrap{display:flex;justify-content:space-between;align-items:center;max-width:1460px;margin:0 auto;height:86px;gap:1.5rem}
.nav-side{display:flex;gap:clamp(.9rem,1.6vw,1.7rem);align-items:center}
.nav-side.right{justify-content:flex-end}
.nav-link{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--cream);opacity:.85;transition:opacity .3s,color .3s;position:relative;padding:.4rem 0;background:none;border:none;cursor:pointer;font-family:var(--sans);white-space:nowrap}
.nav-link:hover{opacity:1;color:var(--gold)}
.nav-link.active{color:var(--gold);opacity:1}
.nav-link.active::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--gold)}
.nav-book{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:9.2rem;
  font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;font-weight:500;color:var(--green-deep);
  background:var(--gold);border:1px solid var(--gold);padding:.58rem 1.2rem;transition:all .3s;white-space:nowrap}
.nav-book:hover{background:var(--cream);color:var(--green-deep)}
.nav-take{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:9.2rem;
  font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;font-weight:500;color:var(--gold);
  background:transparent;border:1px solid var(--gold);padding:.58rem 1.2rem;transition:all .3s;white-space:nowrap}
.nav-take:hover{background:var(--gold);color:var(--green-deep)}
@media(max-width:1500px){.nav-side{gap:1.05rem}.nav-link{font-size:.66rem;letter-spacing:.16em}.nav-book{padding:.56rem .95rem;font-size:.64rem;letter-spacing:.2em}.nav-take{padding:.5rem .8rem;font-size:.64rem;letter-spacing:.2em}}
@media(max-width:1320px){header .nav-side{display:none}header .burger{display:block}header .nav-wrap{height:64px}header .brand span{font-size:.82rem}header .brand img{width:32px;height:32px}}
.brand{display:flex;flex-direction:row;align-items:center;gap:.8rem;cursor:pointer;background:none;border:none;padding:.5rem 0;flex-shrink:0}
.brand img{width:42px;height:42px}
.brand span{font-family:var(--serif);font-size:1rem;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);white-space:nowrap}
.burger{display:none;background:none;border:none;cursor:pointer;padding:.6rem;z-index:120}
.burger span{display:block;width:26px;height:2px;background:var(--gold);margin:6px 0;transition:transform .35s,opacity .35s}
.burger.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:0;background:var(--green-deep);z-index:110;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1.05rem;padding:calc(72px + 1.4rem) 1.5rem 2rem;overflow-y:auto;-webkit-overflow-scrolling:touch;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s,visibility 0s linear .4s}
.mobile-menu.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .4s,visibility 0s}
.mobile-menu .nav-link{font-size:.95rem;padding:.42rem 0}
.mobile-menu img{width:44px;margin-bottom:.4rem}
.mobile-menu .nav-book,.mobile-menu .nav-take{margin-top:.35rem}
@media(max-height:700px){.mobile-menu{gap:.72rem;padding-top:calc(64px + 1rem)}.mobile-menu .nav-link{font-size:.88rem;padding:.3rem 0}.mobile-menu img{width:36px}}

/* ---------- pages ---------- */
.page{display:none}
.wed-spaces{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;margin-top:2.2rem}
.wed-space{background:#fff;border:1px solid #e3e0d2;padding:1.9rem 1.8rem}
.wed-space h3{font-family:var(--serif);font-size:1.35rem;color:var(--green);margin-bottom:.7rem}
.wed-space p{font-size:.95rem;line-height:1.7;color:#4a5545}
.wed-space .wed-meta{margin-top:1rem;font-size:.78rem;letter-spacing:.06em;color:#626a5a;font-style:italic}
@media(max-width:900px){.wed-spaces{grid-template-columns:1fr}}
.page.current{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- hero ---------- */
.hero{position:relative;height:100vh;height:100svh;min-height:640px;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;
  background:var(--green-deep) url(/img/hero-poster-tall-v4.jpg) center/cover no-repeat}
@media(min-width:860px){.hero{background-image:url(/img/hero-poster-wide-v4.jpg)}}
/* Two cuts of the same footage: hero-wide-v4.mp4 (1600x900) for screens 860px and
   up, hero-v4.mp4 (900x1600) for phones, picked by the media attribute on each
   <source>. The desktop crop is baked into the file at the framing we tuned,
   so the browser no longer throws away two thirds of a portrait frame and
   object-position can sit at centre. Each breakpoint also gets the matching
   still as the hero background, so the holding image never mismatches the
   video that follows it. */
.hero video,.hero .hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.hero::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 62% 58% at 50% 50%,rgba(14,32,9,.5) 0%,rgba(14,32,9,0) 72%),linear-gradient(180deg,rgba(14,32,9,.62) 0%,rgba(14,32,9,.45) 45%,rgba(14,32,9,.82) 100%)}
.hero-inner{position:relative;z-index:2;padding:0 1.5rem;max-width:900px}
.hero-inner img{width:clamp(72px,9vw,104px);margin:0 auto 1.6rem;filter:drop-shadow(0 4px 20px rgba(0,0,0,.35))}
.hero-inner .eyebrow{color:var(--gold);margin-bottom:1.2rem}
.hero-inner h1{font-size:clamp(2.8rem,7vw,5.4rem);color:var(--cream);font-weight:300;font-style:italic}
.hero-inner p.tag{color:rgba(248,247,241,.85);font-size:clamp(.82rem,1.4vw,1rem);letter-spacing:.2em;text-transform:uppercase;margin-top:1.4rem}
.hero-inner p.hours-line{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:clamp(.9rem,1.5vw,1.05rem);margin-top:.9rem;opacity:.92}
.hero-cta{margin-top:2.6rem;display:flex;gap:1.1rem;justify-content:center;flex-wrap:wrap}
.scroll-cue{position:absolute;bottom:2.2rem;left:50%;transform:translateX(-50%);z-index:2;color:var(--gold);font-size:.62rem;letter-spacing:.4em;text-transform:uppercase;opacity:.8;animation:bob 2.4s infinite ease-in-out}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}

/* ---------- calendar bar ---------- */
.cal-bar{background:var(--green-dark);border-top:1px solid rgba(253,202,0,.42);border-bottom:1px solid rgba(253,202,0,.42);box-shadow:0 12px 34px rgba(14,32,9,.20)}
.cb-inner{max-width:1460px;margin:0 auto;display:flex;align-items:stretch;gap:0;padding:0 clamp(1rem,3vw,2.5rem)}
.cb-scroll{display:flex;align-items:stretch;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0;position:relative}
.cb-scroll::-webkit-scrollbar{display:none}
.cb-fade{position:relative}
.cb-fade::after{content:'';position:absolute;right:0;top:0;bottom:0;width:70px;background:linear-gradient(90deg,rgba(22,48,15,0),var(--green-dark));pointer-events:none;opacity:0;transition:opacity .3s}
.cb-fade.show-fade::after{opacity:1}
.cb-label::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--gold);margin-right:.75rem;flex-shrink:0;box-shadow:0 0 0 3px rgba(253,202,0,.16)}
.cb-label{display:flex;align-items:center;font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:600;padding:1.25rem 1.6rem 1.25rem 0;border-right:1px solid rgba(253,202,0,.18);white-space:nowrap;flex-shrink:0}
.cb-item{display:flex;align-items:center;gap:.75rem;padding:1.15rem 1.2rem;border:none;border-right:1px solid rgba(253,202,0,.12);background:none;cursor:pointer;font-family:var(--sans);text-align:left;white-space:nowrap;transition:background .3s;flex-shrink:0;text-decoration:none}
.cb-item:hover{background:rgba(253,202,0,.07)}
.cb-when{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:.95rem;line-height:1.2}
.cb-what{color:var(--cream);font-size:.87rem;letter-spacing:.06em;font-weight:400;line-height:1.3}
.cb-what em{display:block;font-style:normal;font-size:.7rem;color:rgba(248,247,241,.55);letter-spacing:.12em;text-transform:uppercase;margin-top:1px}
.cb-item.cb-shiraz .cb-when{color:#e8a0bc}
.cb-item.cb-shiraz:hover{background:rgba(155,45,90,.16)}
.cb-item.cb-soldout{opacity:.7}
.cb-item.cb-soldout .cb-what em{color:#d08a7e}
@media(max-width:1560px){.cb-item{padding:1.05rem .95rem;gap:.6rem}.cb-label{padding-right:1.1rem}.cb-when{font-size:.88rem}.cb-what{font-size:.82rem}}
.cb-more{display:flex;align-items:center;margin-left:auto;flex-shrink:0;border-left:1px solid rgba(253,202,0,.18);padding:.9rem 0 .9rem 1.6rem;background:none;border:none;cursor:pointer;font-family:var(--sans);font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);font-weight:500;white-space:nowrap;transition:opacity .3s;flex-shrink:0}
.cb-more:hover{opacity:.75}
@media(max-width:920px){.cb-label{display:none}.cb-item{padding:.8rem 1.1rem}.cb-more{padding-left:1.1rem}}

/* ---------- intro ---------- */
.intro{padding:clamp(4.5rem,9vw,8rem) 1.5rem;text-align:center;background:var(--cream)}
.intro .eyebrow{color:var(--green)}
.intro h2{font-size:clamp(1.7rem,3.4vw,2.6rem);max-width:820px;margin:0 auto;color:var(--green-mid);font-style:italic}
.intro p{max-width:640px;margin:1.8rem auto 0;color:#4a5a43;font-size:1.02rem}

/* ---------- tiles ---------- */
/* ---------- explore grid ----------
   A compact typographic block in place of six large photographs: the page gets
   to its story far sooner, and the section carries its own weight in type. */
.navgrid-wrap{padding:0 0 clamp(2.5rem,5vw,4rem)}
/* Full-bleed, and the column count steps through the divisors of six so the last
   row is never left with an orphan card. */
.navgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(253,202,0,.22);border-top:1px solid rgba(253,202,0,.22);border-bottom:1px solid rgba(253,202,0,.22)}
.navcard{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;background:var(--green-deep);border:none;cursor:pointer;font-family:var(--sans);padding:1.75rem clamp(1.5rem,2.4vw,2.4rem) 1.5rem;min-height:164px;transition:background .35s ease}
.navcard::before{content:'';position:absolute;left:clamp(1.5rem,2.4vw,2.4rem);right:clamp(1.5rem,2.4vw,2.4rem);bottom:0;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;transition:transform .45s cubic-bezier(.2,.6,.2,1)}
.navcard:hover,.navcard:focus-visible{background:#132a0d}
.navcard:hover::before,.navcard:focus-visible::before{transform:scaleX(1)}
.navcard:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}
.nc-eyebrow{font-size:.58rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);font-weight:600;line-height:1.5}
.nc-title{font-family:var(--serif);font-style:italic;font-size:1.62rem;color:var(--cream);line-height:1.15;margin-top:.5rem}
.nc-go{margin-top:auto;padding-top:1rem;font-size:.62rem;letter-spacing:.26em;text-transform:uppercase;color:rgba(248,247,241,.62);display:flex;align-items:center;gap:.5rem;transition:color .3s}
.nc-go i{font-style:normal;color:var(--gold);transition:transform .35s ease}
.navcard:hover .nc-go,.navcard:focus-visible .nc-go{color:var(--cream)}
.navcard:hover .nc-go i,.navcard:focus-visible .nc-go i{transform:translateX(5px)}

/* ---------- hours band ---------- */
.band{background:var(--green-deep);color:var(--cream);padding:clamp(4.5rem,9vw,7.5rem) 1.5rem;position:relative;overflow:hidden}
.band .botanical{position:absolute;left:-60px;bottom:-60px;width:340px;opacity:.08}
.band-grid{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,6vw,5rem);position:relative;z-index:2}
.band h3{color:var(--gold);font-size:1.6rem;font-style:italic;margin-bottom:1.4rem}
.band .eyebrow{color:var(--gold);opacity:.9;margin-bottom:.6rem}
.hours-row{display:flex;justify-content:space-between;border-bottom:1px solid rgba(253,202,0,.15);padding:.7rem 0;font-size:.95rem}
.hours-row span:last-child{color:rgba(248,247,241,.75)}
.band p{color:rgba(248,247,241,.8);font-size:.97rem}
a.inline{border-bottom:1px solid currentColor;border-bottom-color:color-mix(in srgb,currentColor 45%,transparent);text-decoration:none;transition:border-color .3s,color .3s}a.inline:hover,a.inline:focus-visible{border-bottom-color:currentColor}.band a.inline{color:var(--gold);border-bottom:1px solid rgba(253,202,0,.4);transition:border-color .3s}
.band a.inline:hover{border-color:var(--gold)}
.band .note{margin-top:1.2rem;font-size:.85rem;color:rgba(248,247,241,.55);font-style:italic}
.band-cta{max-width:1080px;margin:3.5rem auto 0;text-align:center;position:relative;z-index:2}

/* ---------- page hero (inner pages) ---------- */
.page-hero{background:var(--green-deep);color:var(--cream);text-align:center;padding:calc(86px + clamp(3.5rem,8vw,6rem)) 1.5rem clamp(3.5rem,7vw,5.5rem);position:relative;overflow:hidden}
.page-hero .botanical{position:absolute;right:-70px;top:-40px;width:340px;opacity:.09}
.page-hero .eyebrow{color:var(--gold)}
.page-hero h1,.page-hero .page-title{font-size:clamp(2.4rem,5.5vw,4rem);font-style:italic;margin-top:.8rem;color:var(--cream)}
.page-hero p{max-width:560px;margin:1.2rem auto 0;color:rgba(248,247,241,.78);font-size:.98rem}
.page-hero .hero-cta{margin-top:2rem}

/* ---------- menu ---------- */
.menu-wrap{max-width:1150px;margin:0 auto;padding:clamp(3rem,7vw,5.5rem) 1.5rem}
.legend{display:flex;flex-wrap:wrap;gap:.5rem .9rem;justify-content:center;margin:0 auto 1rem;max-width:760px}
.legend span{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#677660}
.legend b{color:var(--green);font-weight:600}
.surcharge{text-align:center;font-size:.78rem;color:#626a5a;font-style:italic;margin-bottom:3rem}
/* ---------- menu switcher and the furniture the four menu pages share ---------- */
.menu-switch{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem .4rem;margin:0 auto 2.4rem;max-width:880px}
.ms-link{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:#626a5a;text-decoration:none;padding:.55rem 1.1rem;border:1px solid #e0ddcd;border-radius:999px;transition:color .3s,border-color .3s,background .3s}
.ms-link:hover{color:var(--green);border-color:var(--green-mid)}
.ms-link.on{color:var(--green-deep);border-color:var(--gold);background:rgba(253,202,0,.14);font-weight:600}
.ms-note{font-size:.8rem;color:#626a5a;font-style:italic;margin-top:.35rem}
.ms-foot{max-width:780px;margin:1.2rem auto 3rem;text-align:center;font-size:.82rem;color:#626a5a;font-style:italic;line-height:1.6}
.vt-cols{margin-top:1rem}
.vt-list{list-style:none;margin:.6rem 0 0;padding:0}
.vt-list li{position:relative;padding:.42rem 0 .42rem 1.1rem;font-size:.9rem;color:#4a5a43;border-bottom:1px dotted #e0ddcd;line-height:1.55}
.vt-list li::before{content:'';position:absolute;left:0;top:.95rem;width:5px;height:5px;border-radius:50%;background:var(--gold)}
@media(max-width:720px){.ms-link{font-size:.62rem;letter-spacing:.14em;padding:.45rem .8rem}}
.menu-section{margin-bottom:clamp(3rem,6vw,4.5rem)}
.menu-section-head{text-align:center;margin-bottom:2.2rem}
.menu-section-head h2{font-size:clamp(1.9rem,3.6vw,2.6rem);color:var(--green);font-style:italic}
.menu-section-head .sub{font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-soft);font-weight:500;margin-top:.5rem}
.menu-items{columns:2;column-gap:4rem}
.menu-item{break-inside:avoid;margin-bottom:1.9rem}
.mi-top{display:flex;align-items:baseline;gap:.6rem}
.mi-top h3{font-size:1.18rem;color:var(--ink);font-weight:500;white-space:nowrap}
.mi-top .dots{flex:1;border-bottom:1px dotted #b9c1ae;transform:translateY(-4px)}
.mi-top .price{font-family:var(--serif);color:var(--green);font-size:1.05rem;font-weight:600;white-space:nowrap}
/* Long dish names + multi-part prices overflowed narrow phones — let them wrap. */
@media(max-width:560px){
.mi-top{flex-wrap:wrap;gap:.3rem .6rem}
.mi-top h3{white-space:normal;flex:1 1 auto;min-width:0}
.mi-top .dots{display:none}
.mi-top .price{white-space:normal;margin-left:auto}
}
.mi-desc{font-size:.9rem;color:#5d6b55;margin-top:.35rem;line-height:1.55}
.diet{display:inline-flex;gap:4px;margin-left:.5rem;vertical-align:middle}
.diet i{font-style:normal;font-size:.58rem;letter-spacing:.06em;font-weight:600;color:var(--green);background:rgba(47,106,32,.09);border:1px solid rgba(47,106,32,.22);padding:1px 5px;border-radius:20px}
.menu-note{font-size:.82rem;color:#626a5a;text-align:center;font-style:italic;margin-top:-1rem;margin-bottom:2rem}
.mi-pair{font-size:.72rem;color:#7d6307;font-style:italic;margin-top:.3rem;letter-spacing:.04em}
.mi-up{font-size:.8rem;color:#7a3e0b;font-style:italic;margin-top:.3rem}
.drink-divider{text-align:center;margin:0 0 3rem}
.drink-divider h2{font-family:var(--serif);font-size:clamp(2rem,4.4vw,3rem);color:var(--green-mid);font-style:italic;margin-top:.5rem}
.drink-divider p:last-child{font-size:.92rem;color:#626a5a;font-style:italic;margin-top:.8rem}
.drink-item{display:flex;align-items:baseline;gap:.6rem;break-inside:avoid;margin-bottom:1.1rem}
.di-body{min-width:0}
.di-name{font-size:1.02rem;font-weight:500;color:var(--ink)}
.di-reg{font-size:.78rem;font-style:italic;color:#626a5a;margin-top:.1rem}
.di-dots{flex:1;border-bottom:1px dotted #b9c1ae;transform:translateY(-4px)}
.di-price{font-family:var(--serif);color:var(--green);font-size:.95rem;font-weight:600;white-space:nowrap}

/* cellar */
.cellar{background:var(--green-deep);color:var(--cream);padding:clamp(4rem,8vw,6.5rem) 1.5rem;text-align:center;position:relative;overflow:hidden}
.cellar .botanical{position:absolute;left:-80px;bottom:-70px;width:380px;opacity:.08}
.cellar h2{color:var(--gold);font-size:clamp(2rem,4vw,2.8rem);font-style:italic}
.cellar .eyebrow{color:var(--gold);opacity:.85}
.cellar p{max-width:620px;margin:1.4rem auto 0;color:rgba(248,247,241,.82)}
.cellar .soon,.soon-badge{display:inline-block;margin-top:1.6rem;font-size:.7rem;letter-spacing:.34em;text-transform:uppercase;color:var(--green-deep);background:var(--gold);padding:.5rem 1.3rem;font-weight:600}
.soon-badge{margin:.4rem 0 1.2rem}
.wine-partners{margin-top:3rem;display:flex;flex-wrap:wrap;gap:.8rem 2.4rem;justify-content:center}
.wine-partners span{font-family:var(--serif);font-size:1.05rem;font-style:italic;color:rgba(248,247,241,.75)}
.wine-partners span::before{content:'✦';color:var(--gold);margin-right:.7rem;font-size:.7rem;font-style:normal}
.sy-range{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4rem;max-width:1080px;margin:2.6rem auto 0;text-align:left}
.sy-range h4{font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--green);margin-bottom:1.1rem;font-weight:600}
.sy-wine{display:flex;justify-content:space-between;align-items:baseline;gap:.8rem;padding:.55rem 0;border-bottom:1px solid rgba(30,44,24,.1)}
.sy-wine .nm{font-family:var(--serif);font-style:italic;font-size:1.02rem;color:var(--ink,#1e2c18)}
.sy-wine .nm small{display:block;font-family:var(--sans,Jost);font-style:normal;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#626a5a;margin-top:.15rem}
.sy-wine .pr{font-family:var(--serif);font-style:italic;color:var(--green);white-space:nowrap}
.sy-award{color:var(--gold);font-size:.72rem;margin-left:.35rem}
@media(max-width:900px){.sy-range{grid-template-columns:1fr;gap:1.8rem}}


/* ---------- contact ---------- */
.contact-grid{max-width:1150px;margin:0 auto;padding:clamp(3rem,7vw,5.5rem) 1.5rem;display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(2.5rem,5vw,4.5rem);align-items:start}
.contact-grid h3{color:var(--green);font-size:1.45rem;font-style:italic;margin-bottom:1rem}
.c-block{margin-bottom:2.2rem}
.c-block h2{font-size:1.3rem;font-style:italic;color:var(--green-mid);margin-bottom:.55rem}
.c-block p{color:#4a5a43;font-size:.98rem}
.c-block a{color:var(--green);border-bottom:1px solid rgba(47,106,32,.3);transition:border-color .3s}
/* WCAG 2.5.8: standalone contact and map links get a 24px tap height */
.c-block p a{display:inline-block;padding:.3rem 0}
.mapbox a,.map-cta a,a[href*="maps.app.goo.gl"]:not(.gpin-main){display:inline-block;padding:.3rem 0}
.c-block a:hover{border-color:var(--green)}
.map-frame{width:100%;height:100%;min-height:440px;border:0;filter:grayscale(.25) sepia(.08)}
.home-map{position:relative;background:var(--green-deep);isolation:isolate}
.home-map iframe{width:100%;height:520px;border:0;display:block;filter:grayscale(.35) sepia(1) hue-rotate(52deg) saturate(.62) brightness(.8) contrast(1.02)}
.home-map .map-tint{display:none}
.home-map .map-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,32,9,.6) 0%,rgba(14,32,9,0) 26%,rgba(14,32,9,0) 70%,rgba(14,32,9,.62) 100%);pointer-events:none}
.home-map .map-head{position:absolute;top:2.2rem;left:0;right:0;text-align:center;pointer-events:none;z-index:2}
.home-map .map-head .eyebrow{color:var(--gold);text-shadow:0 1px 8px rgba(14,32,9,.6)}
.home-map .map-head h3{font-family:var(--serif);font-style:italic;font-size:clamp(1.5rem,3vw,2.1rem);color:var(--cream);text-shadow:0 2px 14px rgba(14,32,9,.7);margin-top:.4rem}
.home-map .map-tag{position:absolute;left:50%;transform:translateX(-50%);bottom:1.6rem;background:var(--green-deep);color:var(--cream);padding:.85rem 1.8rem;display:flex;gap:1.2rem;align-items:center;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.home-map .map-tag span{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase}
.home-map .map-tag a{color:var(--gold);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;border-bottom:1px solid rgba(253,202,0,.4)}
@media(max-width:920px){.home-map iframe{height:340px}.home-map .map-tag{flex-direction:column;gap:.3rem;padding:.7rem 1.2rem;width:max-content;max-width:88%}}
.map-shell{border:1px solid #dcd9cb;padding:6px;background:#fff}

/* ---------- footer ---------- */
footer{background:var(--green-deep);color:rgba(248,247,241,.75);padding:4rem 1.5rem 2.2rem;text-align:center}
footer img{width:52px;margin:0 auto 1rem}footer>a[data-nav="home"],.mobile-menu>a[data-nav="home"]{display:inline-block;text-decoration:none}
footer .f-name{font-family:var(--serif);letter-spacing:.3em;text-transform:uppercase;color:var(--cream);font-size:.95rem}
.f-sub{max-width:520px;margin:2rem auto .6rem;padding:1.6rem 1.5rem;border:1px solid rgba(253,202,0,.25)}
.f-sub .eyebrow{color:var(--gold);margin-bottom:.5rem}
.f-sub p.blurb{font-size:.9rem;color:rgba(248,247,241,.75);margin-bottom:1.2rem}
.f-links{display:flex;gap:2rem;justify-content:center;margin:1.8rem 0;flex-wrap:wrap}
.f-links a,.f-links button{font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(248,247,241,.7);transition:color .3s;background:none;border:none;cursor:pointer;font-family:var(--sans);font-weight:400}
.f-links a:hover,.f-links button:hover{color:var(--gold)}
.f-contact{font-size:.85rem;line-height:2}
.f-contact a{color:rgba(248,247,241,.85)}
.f-contact a:hover{color:var(--gold)}
.socials{display:flex;gap:1.2rem;justify-content:center;margin:1.6rem 0}
.socials a{width:38px;height:38px;border:1px solid rgba(253,202,0,.35);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .3s}
.socials a:hover{background:var(--gold)}
.socials svg{width:16px;height:16px;fill:var(--gold);transition:fill .3s}
.socials a:hover svg{fill:var(--green-deep)}
.f-fine{font-size:.7rem;color:rgba(248,247,241,.68);margin-top:2rem;letter-spacing:.08em}
/* WCAG 2.5.8 target size: footer nav and the banner link need a 24px tap area */
.f-links a{padding:.35rem .1rem;display:inline-block}
.f-contact a{padding:.25rem 0;display:inline-block}
.wc-more{padding:.4rem 0 6px}

/* ---------- menu tabs & set menu ---------- */
.menu-tabs{display:flex;justify-content:center;gap:.4rem;margin:0 auto 3rem;border-bottom:1px solid #e0ddcd;max-width:640px}
.menu-tab-btn{background:none;border:none;cursor:pointer;font-family:var(--sans);font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;font-weight:500;color:#626a5a;padding:.9rem 1.6rem;border-bottom:2px solid transparent;transition:color .3s,border-color .3s;margin-bottom:-1px}
.menu-tab-btn:hover{color:var(--green)}
.menu-tab-btn.on{color:var(--green);border-bottom-color:var(--gold)}
.mtab{display:none;animation:fadeIn .5s ease}
.mtab.on{display:block}
.set-intro{text-align:center;max-width:640px;margin:0 auto 2.6rem;color:#4a5a43;font-size:.96rem}
.set-intro .big{font-family:var(--serif);font-style:italic;font-size:clamp(1.4rem,2.6vw,1.8rem);color:var(--green-mid);margin-bottom:.7rem}
.set-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;align-items:stretch}
.set-card{background:#fff;border:1px solid #e3e0d2;padding:1.9rem 1.5rem;display:grid;grid-template-rows:subgrid;grid-row:span 4;transition:transform .35s,box-shadow .35s}
.set-card:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(30,44,24,.12)}
.set-card .tier{font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-soft);font-weight:600;text-align:center}
.set-card .price{font-family:var(--serif);font-size:2.1rem;color:var(--green-mid);text-align:center;margin:.5rem 0 1.2rem;line-height:1}
.set-card .price small{font-size:.72rem;font-family:var(--sans);color:#626a5a;letter-spacing:.1em}
.set-course{padding:1rem 0;border-top:1px dotted #ddd9c8}
.set-course .sc-label{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:#626a5a;font-weight:600;margin-bottom:.35rem}
.set-course h3{font-size:1.05rem;font-weight:500;color:var(--ink);line-height:1.3}
.set-course .mi-desc{margin-top:.3rem}
.byo-box{background:#fff;border:1px solid var(--gold);border-left:4px solid var(--gold);padding:1.8rem 2.2rem;margin-top:1.2rem;display:flex;align-items:center;gap:2rem;justify-content:space-between;flex-wrap:wrap}
.byo-box .byo-txt{flex:1;min-width:min(260px,100%)}
.byo-box h3{font-family:var(--serif);font-style:italic;color:var(--green-mid);font-size:1.35rem;margin-bottom:.35rem}
.byo-box p{font-size:.92rem;color:#5d6b55}
.byo-box .byo-eg{font-size:.78rem;color:#626a5a;font-style:italic;margin-top:.4rem}
.byo-box .byo-tag{font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-soft);font-weight:600;white-space:nowrap;border:1px solid rgba(232,188,18,.45);padding:.7rem 1.2rem}
.addon-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.2rem;max-width:860px;margin:2.2rem auto 0}
.addon{background:#fff;border:1px solid #e3e0d2;padding:1.7rem 1.6rem;text-align:center}
.addon .a-label{font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-soft);font-weight:600;margin-bottom:.4rem}
.addon h3{font-size:1.1rem;font-weight:500;color:var(--ink)}
.addon .mi-desc{margin-top:.35rem}
.addon .a-price{font-family:var(--serif);font-style:italic;color:var(--green);font-size:1.05rem;margin-top:.7rem}
@media(max-width:1100px){.set-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.set-grid,.addon-grid{grid-template-columns:1fr}.menu-tab-btn{padding:.8rem .9rem;font-size:.68rem;letter-spacing:.18em}}

/* ---------- functions ---------- */
.pkg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;align-items:stretch}
/* Package cards carry more text than the rest of the page, so above the
   three-column breakpoint the grid steps outside the 1150px measure and
   re-centres itself — wide enough to keep each note on a single line. */
@media(min-width:921px){.pkg-grid{width:min(1300px,calc(100vw - 3rem));margin-left:50%;transform:translateX(-50%)}}
/* Three columns need real width. Below 1000px the cards stack instead of being
   squeezed, and in the band just above it the padding tightens — either way the
   package note stays on one line. */
@media(max-width:1279px){.pkg-grid{grid-template-columns:1fr}}
@media(min-width:1101px) and (max-width:1149px){.pkg{padding:2.2rem 1.15rem}.pkg-note{font-size:.73rem}}
.pkg{background:#fff;border:1px solid #e3e0d2;padding:2.2rem 1.8rem;position:relative;display:flex;flex-direction:column;text-align:center;transition:transform .35s,box-shadow .35s}
.pkg:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(30,44,24,.12)}
.pkg.featured{border-color:var(--gold);box-shadow:0 10px 34px rgba(30,44,24,.1)}
.pkg-badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--gold);color:var(--green-deep);font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;padding:.35rem 1rem;white-space:nowrap}
.pkg .tier{font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;color:var(--gold-soft);font-weight:600}
.pkg h3{font-family:var(--serif);font-style:italic;font-size:1.5rem;color:var(--green-mid);margin:.45rem 0 .2rem}
.pkg .sub{font-size:.82rem;color:#626a5a;font-style:italic}
/* A per-package note: where the menu comes from, and that it can be changed. */
.pkg-note{font-size:.78rem;line-height:1.55;color:#626a5a;font-style:italic;margin:0 0 .9rem}
/* Three columns need real width to keep each package note on one line. Below
   1280px the cards stack rather than being squeezed; in the band above that the
   note and padding tighten slightly so the line still holds. */
@media(max-width:1279px){.pkg-grid{grid-template-columns:1fr}}
@media(min-width:1280px) and (max-width:1347px){.pkg{padding:2.2rem 1.35rem}.pkg-note{font-size:.72rem}}

.pkg .price{font-family:var(--serif);font-size:2.3rem;color:var(--green-mid);margin-top:1rem;line-height:1}
.pkg .price small{font-size:.78rem;font-family:var(--sans);color:#626a5a;letter-spacing:.1em}
.pkg ul{list-style:none;margin:1.2rem 0;padding:0;flex:1}
.pkg li{padding:.42rem 0;border-bottom:1px dotted #e0ddcd;font-size:.88rem;color:#4a5a43}
.pkg li:last-child{border-bottom:0}
.pkg .pair{font-size:.8rem;color:#626a5a;border-top:1px solid #ece9dc;padding-top:.9rem}
.pkg .total{font-family:var(--serif);font-style:italic;color:var(--green);font-size:1.1rem;margin-top:.4rem}
.fx-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e3e0d2}
.fx-table th{font-family:var(--sans);font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--green);text-align:left;padding:1rem 1.2rem;border-bottom:2px solid var(--gold);font-weight:600}
.fx-table th.num,.fx-table td.num{text-align:right;white-space:nowrap}
.fx-table td{padding:1rem 1.2rem;border-bottom:1px solid #f0eee2;font-size:.92rem;color:#4a5a43;vertical-align:top}
.fx-table tr:last-child td{border-bottom:0}
.fx-table td b{color:var(--ink);font-weight:600}
.fx-table td .d{display:block;font-size:.8rem;color:#626a5a;margin-top:.2rem}
.fx-note{font-size:.82rem;color:#626a5a;font-style:italic;text-align:center;margin-top:1rem}
.enh-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.enh{background:#fff;border:1px solid #e3e0d2;padding:1.4rem 1.5rem}
.enh h3{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--green-mid);font-size:1.05rem}
.enh h3::before{content:'❧';color:var(--gold-soft);margin-right:.6rem}
.enh p{font-size:.85rem;color:#5d6b55;margin-top:.3rem}
.terms details{background:#fff;border:1px solid #e3e0d2;margin-bottom:.7rem}
.terms summary{cursor:pointer;padding:1.1rem 1.4rem;font-family:var(--serif);font-style:italic;color:var(--green-mid);font-size:1.05rem;list-style:none;position:relative}.terms summary h2{all:unset;font:inherit;color:inherit}
.terms summary::-webkit-details-marker{display:none}
.terms summary::after{content:'+';position:absolute;right:1.3rem;top:50%;transform:translateY(-50%);color:var(--gold-soft);font-size:1.2rem;font-family:var(--sans)}
.terms details[open] summary::after{content:'−'}
.terms .t-body{padding:0 1.4rem 1.2rem;font-size:.88rem;color:#4a5a43}
.terms .t-body p{margin-bottom:.5rem}
.sample-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.sample-col{background:#fff;border:1px solid #e3e0d2;padding:1.8rem 1.6rem}
.sample-col h3{font-family:var(--serif);font-style:italic;color:var(--green-mid);font-size:1.2rem;text-align:center;margin-bottom:1rem;padding-bottom:.7rem;border-bottom:1px solid #ece9dc}
.sample-col p{font-size:.88rem;color:var(--ink);padding:.4rem 0;border-bottom:1px dotted #e8e5d6;margin:0}
.sample-col p:last-child{border-bottom:0}
.sample-col p em{color:#626a5a;font-size:.8rem}
@media(max-width:920px){.pkg-grid,.sample-cols{grid-template-columns:1fr}.enh-grid{grid-template-columns:1fr}.fx-table{font-size:.85rem}.fx-table th,.fx-table td{padding:.7rem .8rem}}

/* ---------- gallery ---------- */
.gal-grid{columns:3;column-gap:10px;max-width:1150px;margin:0 auto;padding:0 1.5rem clamp(3rem,7vw,5.5rem)}
.gal-item{break-inside:avoid;margin-bottom:10px;overflow:hidden;position:relative;cursor:pointer;background:var(--green-dark);border:none;padding:0;display:block;width:100%}
.gal-item img{width:100%;display:block;transition:transform .9s cubic-bezier(.2,.6,.2,1),opacity .4s}
.gal-item:hover img{transform:scale(1.05)}
.gal-item::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,32,9,0) 60%,rgba(14,32,9,.35) 100%);opacity:0;transition:opacity .4s}
.gal-item:hover::after{opacity:1}
@media(max-width:920px){.gal-grid{columns:2;column-gap:8px}.gal-item{margin-bottom:8px}}
@media(max-width:520px){.gal-grid{columns:1}}
.lightbox{position:fixed;inset:0;z-index:300;background:rgba(10,22,7,.95);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s,visibility 0s linear .35s}
.lightbox.show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .35s,visibility 0s}
.lightbox img{max-width:92vw;max-height:88vh;box-shadow:0 30px 90px rgba(0,0,0,.6);border:1px solid rgba(253,202,0,.25)}
.lb-btn{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;background:none;border:1px solid rgba(253,202,0,.5);color:var(--gold);font-size:1.3rem;cursor:pointer;transition:all .3s;z-index:2}
.lb-btn:hover{background:var(--gold);color:var(--green-deep)}
.lb-prev{left:1.2rem}.lb-next{right:1.2rem}
.lb-close{position:absolute;top:1.2rem;right:1.2rem;width:46px;height:46px;border-radius:50%;background:none;border:1px solid rgba(253,202,0,.5);color:var(--gold);font-size:1.3rem;cursor:pointer;transition:all .3s;z-index:2}
.lb-close:hover{background:var(--gold);color:var(--green-deep)}
.lb-count{position:absolute;bottom:1.4rem;left:50%;transform:translateX(-50%);color:rgba(248,247,241,.6);font-size:.72rem;letter-spacing:.3em}
@media(max-width:700px){.lb-btn{width:42px;height:42px}.lb-prev{left:.5rem}.lb-next{right:.5rem}}

/* ---------- welcome banner ---------- */
.welcome{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:max(1.2rem,env(safe-area-inset-top)) 1.2rem max(1.2rem,env(safe-area-inset-bottom));background:rgba(10,22,7,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .5s ease,visibility 0s linear .5s}
.welcome.show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .5s ease,visibility 0s}
/* Floating "What's On" tab — appears once the welcome banner is dismissed */
.wc-tab{position:fixed;right:1.4rem;bottom:1.4rem;z-index:90;display:flex;align-items:center;gap:.6rem;background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);color:var(--gold);padding:.8rem 1.3rem .8rem 1.05rem;border-radius:60px;box-shadow:0 12px 34px rgba(0,0,0,.4);cursor:pointer;font-family:var(--sans);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;white-space:nowrap;opacity:0;visibility:hidden;transform:translateY(14px) scale(.94);pointer-events:none;transition:opacity .45s ease,transform .45s ease,background .3s ease,border-color .3s ease,visibility 0s linear .45s}
.wc-tab.show{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .45s ease,transform .45s ease,background .3s ease,border-color .3s ease,visibility 0s}
.wc-tab:hover{background:rgba(20,44,13,.99);border-color:var(--gold)}
.wc-tab svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--gold);stroke-width:1.6}
.wc-tab .wc-tab-dot{position:absolute;top:.55rem;right:.9rem;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px rgba(14,32,9,.96)}
@media(max-width:920px){.wc-tab{right:.9rem;bottom:.9rem;padding:.65rem 1rem .65rem .85rem;gap:.5rem;font-size:.62rem;letter-spacing:.14em}.wc-tab svg{width:14px;height:14px}}
@media(max-width:560px){.wc-tab .wc-tab-label{display:none}.wc-tab{padding:.7rem;border-radius:50%}.wc-tab .wc-tab-dot{top:.3rem;right:.3rem}}
@media(prefers-reduced-motion:reduce){.wc-tab{transition:opacity .01s}}
/* Floating mini calendar — sits above the What's On tab */
.cal-fab{position:fixed;right:1.4rem;bottom:5.1rem;z-index:90;width:52px;height:52px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);border-radius:14px;box-shadow:0 12px 34px rgba(0,0,0,.4);cursor:pointer;font-family:var(--sans);opacity:0;visibility:hidden;transform:translateY(14px) scale(.94);pointer-events:none;transition:opacity .45s ease,transform .45s ease,border-color .3s ease,background .3s ease,visibility 0s linear .45s}
.cal-fab.show{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .45s ease,transform .45s ease,border-color .3s ease,background .3s ease,visibility 0s}
.cal-fab:hover{background:rgba(20,44,13,.99);border-color:var(--gold)}
.cal-fab .cf-mon{font-size:.5rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-weight:600;line-height:1}
.cal-fab .cf-day{font-family:var(--serif);font-size:1.35rem;line-height:1;color:var(--cream);font-weight:500}
.cal-fab .cf-dot{position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px rgba(10,22,7,.9)}

.cal-pop{position:fixed;right:1.4rem;bottom:9.4rem;z-index:95;width:318px;max-width:calc(100vw - 2.8rem);max-height:calc(100vh - 11.4rem);max-height:calc(100dvh - 11.4rem);display:flex;flex-direction:column;overflow:hidden;background:#0b1a07;border:1px solid rgba(253,202,0,.32);border-radius:16px;box-shadow:0 22px 60px rgba(0,0,0,.55);padding:1.15rem 1.15rem 1rem;opacity:0;visibility:hidden;transform:translateY(10px) scale(.97);transform-origin:100% 100%;pointer-events:none;transition:opacity .3s ease,transform .3s ease,visibility 0s linear .3s}
.cal-pop.show{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .3s ease,transform .3s ease,visibility 0s}
.cal-pop .cp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem}
.cal-pop .cp-title{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--cream)}
.cal-pop .cp-nav{display:flex;gap:.3rem}
.cal-pop .cp-nav button{width:26px;height:26px;border-radius:50%;border:1px solid rgba(253,202,0,.3);background:none;color:var(--gold);cursor:pointer;font-size:.78rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .25s,border-color .25s}
.cal-pop .cp-nav button:hover{background:rgba(253,202,0,.14);border-color:var(--gold)}
.cal-pop .cp-dows{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px}
.cal-pop .cp-dows span{text-align:center;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(248,247,241,.7)}
.cal-pop .cp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-pop .cp-cell{position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.74rem;color:rgba(248,247,241,.62);border-radius:8px;border:1px solid transparent}
.cal-pop .cp-cell.open{color:rgba(248,247,241,.82)}
.cal-pop .cp-cell.has{cursor:pointer;color:var(--cream);background:rgba(253,202,0,.05);border-color:rgba(253,202,0,.16)}.cal-pop .cp-cell.has.spec{background:rgba(253,202,0,.14);border-color:rgba(253,202,0,.4)}.cal-pop .cp-legend{display:flex;justify-content:center;gap:.85rem;margin-top:.6rem;font-size:.53rem;letter-spacing:.11em;text-transform:uppercase;color:rgba(248,247,241,.72)}.cal-pop .cp-legend span{display:flex;align-items:center;gap:.3rem}.cal-pop .cp-legend i{width:5px;height:5px;border-radius:50%;background:var(--gold);display:block}.cal-pop .cp-legend i.rec{background:rgba(248,247,241,.55)}
.cal-pop .cp-cell.has:hover{background:rgba(253,202,0,.2)}
.cal-pop .cp-cell.today{border-color:rgba(248,247,241,.5)}
.cal-pop .cp-cell.sel{background:var(--gold);color:#173300;border-color:var(--gold);font-weight:600}
.cal-pop .cp-cell .cp-d{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--gold)}.cal-pop .cp-cell .cp-d.rec{background:rgba(248,247,241,.55)}.cal-pop .cp-cell.sel .cp-d.rec{background:#173300}
.cal-pop .cp-cell.sel .cp-d{background:#173300}
.cal-pop .cp-list{margin-top:.85rem;border-top:1px solid rgba(253,202,0,.16);padding-top:.75rem;max-height:168px;flex:0 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.cal-pop .cp-head,.cal-pop .cp-dows,.cal-pop .cp-grid,.cal-pop .cp-legend,.cal-pop .cp-foot{flex:0 0 auto}
.cal-pop .cp-item{display:block;text-decoration:none;padding:.45rem 0;border-bottom:1px solid rgba(248,247,241,.06)}
.cal-pop .cp-item:last-child{border-bottom:none}
.cal-pop .cp-when{font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:600}
.cal-pop .cp-name{font-family:var(--serif);font-size:.95rem;color:var(--cream);line-height:1.25;margin-top:1px}
.cal-pop .cp-meta{font-size:.7rem;color:rgba(248,247,241,.78);line-height:1.4;margin-top:2px}
.cal-pop .cp-foot{display:block;margin-top:.8rem;text-align:center;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);text-decoration:none;font-weight:600;padding-top:.7rem;border-top:1px solid rgba(253,202,0,.16)}
.cal-pop .cp-foot:hover{color:#ffe44d}
@media(max-width:920px){.cal-fab{right:.9rem;bottom:4.1rem;width:46px;height:46px}.cal-fab .cf-day{font-size:1.2rem}.cal-pop{right:.9rem;bottom:7.9rem;width:300px;max-height:calc(100vh - 9.5rem);max-height:calc(100dvh - 9.5rem)}}
@media(max-width:560px){.cal-fab{bottom:3.9rem}.cal-pop{left:.9rem;right:.9rem;width:auto;max-width:none;bottom:7.6rem;max-height:calc(100vh - 9.2rem);max-height:calc(100dvh - 9.2rem)}}
@media(prefers-reduced-motion:reduce){.cal-fab,.cal-pop{transition:opacity .01s}}
.welcome-card{position:relative;background:var(--green-deep);border:1px solid rgba(253,202,0,.5);max-width:880px;width:100%;padding:clamp(2.2rem,5vw,3.4rem) clamp(1.4rem,4vw,3rem);text-align:center;color:var(--cream);box-shadow:0 30px 90px rgba(0,0,0,.55);transform:translateY(24px) scale(.97);transition:transform .5s cubic-bezier(.2,.7,.3,1);display:flex;flex-direction:column;overflow:hidden;max-height:92vh;max-height:92dvh;padding-top:clamp(3.7rem,5vw,3.9rem)}.wc-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(253,202,0,.45) transparent}.wc-scroll::-webkit-scrollbar{width:5px}.wc-scroll::-webkit-scrollbar-thumb{background:rgba(253,202,0,.45);border-radius:4px}
.welcome.show .welcome-card{transform:none}
.welcome-card .botanical{position:absolute;right:-70px;top:-50px;width:300px;opacity:.08;pointer-events:none}
.welcome-card img{width:54px;margin:0 auto 1rem}
.welcome-card .eyebrow{color:var(--gold)}
.welcome-card h2{font-size:clamp(1.7rem,4vw,2.5rem);font-style:italic;color:var(--cream);margin-top:.5rem}
.wc-sub{color:rgba(248,247,241,.75);font-size:.92rem;max-width:520px;margin:.8rem auto 0}
/* ---------- "new menu" callout in the Coming Up banner ----------
   Deliberately not the sunset palette: that belongs to the featured event, and
   two competing highlights would cancel each other out. This reads as a notice,
   not a third event. It carries data-ends so it retires itself. */
/* The three standing panels share one skeleton so the banner reads as a column
   rather than three different layouts: a centred head with the pill, the body,
   then a centred link. The new-menu panel used to float its pill to the left,
   which pushed its text off the card's centre line. */
.wc-newmenu{display:block;margin:1rem 0 0;padding:1.1rem 1.3rem 1rem;text-decoration:none;
  border:1px solid rgba(253,202,0,.4);background:rgba(253,202,0,.07);
  transition:background .3s,border-color .3s}
.wc-newmenu:hover{background:rgba(253,202,0,.13);border-color:rgba(253,202,0,.7)}
.nm-head{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;
  gap:.45rem .8rem;margin-bottom:.95rem}
.nm-tag{flex-shrink:0;font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;
  color:#2b1f02;background:var(--gold);padding:.3rem .65rem;border-radius:999px}
.nm-txt{display:block;color:rgba(248,247,241,.82);font-size:.84rem;line-height:1.5;
  text-align:center;max-width:620px;margin:0 auto}
.nm-txt b{color:var(--cream);font-weight:600}
.nm-go{display:block;text-align:center;margin-top:1rem;font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;font-weight:600;color:var(--gold)}
@media(max-width:600px){.wc-newmenu{padding:1rem 1.1rem .9rem}.nm-txt{font-size:.78rem}}
.wc-events{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;margin-top:2rem}
.wc-events.wc-five{gap:.85rem;margin-top:1.5rem}
.wc-events.wc-five .wc-ev{padding:1.05rem 1rem}
.wc-events.wc-five .wc-ev p{font-size:.78rem;line-height:1.45}
.wc-four{gap:.9rem;margin-top:1.6rem}
.wc-four .wc-ev{padding:1.25rem 1.1rem;gap:.3rem}
.wc-events .wc-wide{grid-column:1/-1;border-color:rgba(253,202,0,.45);background:rgba(253,202,0,.07)}
/* ---------- banner grid: 2 columns for events, full width for features ----------
   .wc-wide and .wc-sunset are editorial (always full width). .wc-span is applied by
   script to a leftover odd card so the grid never ends on a dangling half-width tile. */
.wc-events .wc-span{grid-column:1/-1}
/* ---------- sunset treatment: the featured event ---------- */
.wc-events .wc-sunset{grid-column:1/-1;border-color:rgba(246,184,104,.6);background:linear-gradient(135deg,rgba(246,184,104,.24),rgba(232,118,60,.20) 50%,rgba(212,96,122,.15));box-shadow:0 10px 32px rgba(232,118,60,.2)}
.wc-events .wc-sunset .wc-date,.wc-events .wc-sunset .wc-price{color:#f6b868}
.wc-events .wc-sunset h3{color:#fff1df}
.wc-events .wc-sunset .wc-x{color:rgba(255,224,190,.78)}
.wc-events .wc-sunset .btn.solid{background:linear-gradient(100deg,#f6b868,#e8763c);border-color:transparent;color:#3a1403}
.wc-events .wc-sunset .btn.solid:hover{filter:brightness(1.08)}
.wc-events .wc-flag{display:none}
.wc-events .wc-sunset .wc-flag{display:inline-block;font-size:.6rem;line-height:1.3;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:#2b0f02;background:linear-gradient(100deg,#f6b868,#f09a52);padding:.32rem .8rem;border-radius:999px;margin-bottom:.1rem}
.wc-events .wc-ev:not(.wc-sunset) .wc-sun-link{display:none}
.wc-sun-link{margin-top:.55rem;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,224,190,.85)}
@media(max-width:720px){.wc-events .wc-sunset .wc-flag{font-size:.54rem;letter-spacing:.14em;padding:.28rem .6rem}}
.cb-item.cb-sunset{background:linear-gradient(135deg,rgba(246,184,104,.3),rgba(232,118,60,.24) 55%,rgba(212,96,122,.17));box-shadow:inset 4px 0 0 #e8763c}
.cb-item.cb-sunset:hover{background:linear-gradient(135deg,rgba(246,184,104,.4),rgba(232,118,60,.33) 55%,rgba(212,96,122,.24))}
.cb-item.cb-sunset .cb-when{color:#f6b868}
.cb-item.cb-sunset .cb-what{color:#fff1df;font-weight:500}
.cb-item.cb-sunset .cb-what em{color:rgba(255,215,170,.82)}
.cb-item.cb-new{background:rgba(253,202,0,.09);box-shadow:inset 3px 0 0 var(--gold)}
.cb-item.cb-new:hover{background:rgba(253,202,0,.16)}
.cb-item.cb-new .cb-when{font-family:var(--sans);font-style:normal;font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;color:#2b1f02;background:var(--gold);padding:.25rem .55rem;border-radius:999px}

.wc-events .wc-hl{border-color:rgba(253,202,0,.45);background:rgba(253,202,0,.07)}
.wc-four .wc-ev h3{font-size:1.2rem}
.wc-four .wc-ev p{font-size:.8rem}
.wc-four .wc-ev .wc-price{font-size:.9rem}
.wc-four .wc-ev .btn{margin-top:.5rem;padding:.6rem 1.3rem;font-size:.64rem}
.wc-ev{border:1px solid rgba(253,202,0,.28);padding:1.6rem 1.3rem;background:rgba(253,202,0,.04);display:flex;flex-direction:column;align-items:center;gap:.45rem;transition:border-color .3s,background .3s}
.wc-ev:hover{border-color:var(--gold);background:rgba(253,202,0,.08)}
.wc-ev .wc-date{font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:600}
.wc-ev h3{font-family:var(--serif);font-style:italic;font-size:1.35rem;color:var(--cream);line-height:1.2}
.wc-ev .wc-x{font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:rgba(248,247,241,.68)}
.wc-ev p{font-size:.85rem;color:rgba(248,247,241,.75);line-height:1.5}
.wc-ev .wc-tag{font-family:var(--serif);font-style:italic;color:rgba(253,202,0,.8);font-size:.88rem}
.wc-ev .wc-price{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:1rem;margin-top:.2rem}.wc-ev .wc-soldout{margin-top:.7rem;display:inline-block;font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;color:#f0b3a8;border:1px solid rgba(240,179,168,.5);padding:.55rem 1.2rem}
.wc-ev .btn{margin-top:.7rem;padding:.7rem 1.6rem;font-size:.68rem}
/* Cards in a row stretch to the tallest, so without this their buttons
   float at whatever height the copy ends — the row reads as ragged. The
   price line takes the slack and the CTAs sit on one line. */
.wc-events .wc-ev:not(.wc-sunset) .wc-price{margin-top:auto;padding-top:.5rem}
.wc-events .wc-ev:not(.wc-sunset) .wc-soldout{margin-top:auto}
.wc-more{display:inline-block;margin-top:1.6rem;font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:rgba(248,247,241,.65);border-bottom:1px solid rgba(248,247,241,.25);cursor:pointer;background:none;border-top:none;border-left:none;border-right:none;font-family:var(--sans);transition:color .3s,border-color .3s;padding:0 0 2px}
.wc-more:hover{color:var(--gold);border-bottom-color:var(--gold)}
.wc-close{position:absolute;top:.7rem;right:.7rem;z-index:6;width:42px;height:42px;background:var(--green-deep);border:1px solid rgba(253,202,0,.4);color:var(--gold);font-size:1.15rem;line-height:1;cursor:pointer;transition:all .3s;border-radius:50%}
.wc-close:hover{background:var(--gold);color:var(--green-deep)}
@media(max-width:720px){.wc-events{grid-template-columns:1fr}.welcome{padding:max(.9rem,env(safe-area-inset-top)) .9rem max(.9rem,env(safe-area-inset-bottom));align-items:center}.welcome-card{max-height:88vh;max-height:88dvh;overflow:hidden;padding-top:3.9rem}.wc-close{top:.6rem;right:.6rem;width:44px;height:44px}}

/* ---------- google review pin ---------- */
.gpin{position:fixed;left:1.4rem;bottom:1.4rem;z-index:90;display:flex;align-items:center;gap:.5rem;background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);padding:.32rem .4rem .32rem .45rem;border-radius:40px;box-shadow:0 10px 28px rgba(0,0,0,.38);text-decoration:none;transition:transform .3s ease,box-shadow .3s ease,opacity .5s ease;animation:pinIn .9s ease .8s both}
.gpin:hover{transform:translateY(-3px);box-shadow:0 18px 44px rgba(0,0,0,.5)}
.gpin.hidden{opacity:0;pointer-events:none;animation:none;visibility:hidden}
/* Fades back when it is sitting over page content, so it never buries a card or a link. */
.gpin.settled{animation:none}
/* Dimming the whole pin took its text down with it — over a light section that
   left the score at 1.7:1. Step the panel back instead and leave the text alone. */
.gpin.dim{opacity:1;background:rgba(14,32,9,.72);border-color:rgba(253,202,0,.26);box-shadow:0 6px 18px rgba(0,0,0,.22)}
.gpin.dim:hover,.gpin.dim:focus-within{opacity:1}
@media(prefers-reduced-motion:reduce){.gpin{transition:none}}
@keyframes pinIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.gpin-main{display:flex;align-items:center;gap:.5rem;text-decoration:none;min-height:24px}
.gpin-div{width:1px;height:18px;background:rgba(253,202,0,.28);flex-shrink:0}
.gpin-soc{width:28px;height:28px;border:1px solid rgba(253,202,0,.4);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s}
.gpin-soc svg{width:12px;height:12px;fill:var(--gold);transition:fill .3s}
.gpin-soc:hover{background:var(--gold)}
.gpin-soc:hover svg{fill:var(--green-deep)}
.gpin .glogo{width:24px;height:24px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gpin .glogo svg{width:14px;height:14px}
/* One row instead of two — rating, stars and count read across, not stacked. */
.gpin .gtxt{display:flex;align-items:center;gap:.4rem;line-height:1}
.gpin .gnum{font-family:var(--serif);font-size:.95rem;color:var(--cream);font-weight:600}
.gpin .stars{display:flex;gap:1px}
.gpin .stars svg{width:11px;height:11px}
.gpin .gsub{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(248,247,241,.88);white-space:nowrap}
.gpin-min{width:26px;height:26px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:none;border:1px solid rgba(253,202,0,.28);border-radius:50%;color:var(--gold);cursor:pointer;padding:0;transition:background .3s,border-color .3s,color .3s}
.gpin-min svg{width:13px;height:13px;transform:rotate(180deg)}
.gpin-min:hover{background:var(--gold);border-color:var(--gold);color:var(--green-deep)}
.gpin.tucked{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(6px) scale(.96)}
.gpin-tab{position:fixed;left:1.4rem;bottom:1.4rem;z-index:90;display:flex;align-items:center;gap:.4rem;background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);border-radius:40px;padding:.3rem .7rem .3rem .32rem;box-shadow:0 10px 28px rgba(0,0,0,.38);cursor:pointer;font-family:var(--sans);opacity:0;visibility:hidden;transform:translateY(8px) scale(.96);pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility 0s linear .35s,box-shadow .3s ease}
.gpin-tab.show{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .35s ease,transform .35s ease,visibility 0s,box-shadow .3s ease}
.gpin-tab:hover{box-shadow:0 16px 38px rgba(0,0,0,.5)}
.gpin-tab .gt-g{width:24px;height:24px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gpin-tab .gt-g svg{width:14px;height:14px}
.gpin-tab .gt-n{font-family:var(--serif);font-size:.9rem;color:var(--cream);font-weight:600;line-height:1}
.gpin-tab:focus-visible,.gpin-min:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(max-width:920px){.gpin{left:.9rem;bottom:.9rem;padding:.3rem .35rem .3rem .38rem;gap:.42rem}.gpin .glogo{width:22px;height:22px}.gpin .glogo svg{width:13px;height:13px}.gpin .gnum{font-size:.88rem}.gpin .stars svg{width:10px;height:10px}.gpin .gsub{display:none}.gpin-soc{width:26px;height:26px}.gpin-min{width:24px;height:24px}.gpin-tab{left:.9rem;bottom:.9rem}}

/* ---------- story ---------- */
.story{background:var(--cream-2);padding:clamp(4rem,8vw,7rem) 1.5rem}
.story-grid{max-width:760px;margin:0 auto;text-align:center}
.story-grid .rule.left{margin:1.4rem auto}
.story-grid .btn{margin-top:.6rem}
.story h2{font-size:clamp(1.8rem,3.4vw,2.5rem);color:var(--green-mid);font-style:italic;margin:.6rem 0 1.2rem}
.story p{color:#4a5a43;font-size:.98rem;margin-bottom:1rem}
.story .eyebrow{color:var(--green)}

/* ---------- events ---------- */
.section-pad{max-width:1150px;margin:0 auto;padding:clamp(3rem,7vw,5.5rem) 1.5rem}
.sec-head{text-align:center;margin-bottom:2.6rem}
.sec-head .eyebrow{color:var(--green)}
.sec-head h2{font-size:clamp(1.9rem,3.8vw,2.7rem);color:var(--green-mid);font-style:italic;margin-top:.5rem}
.weekly-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}.weekly-grid.wg-two{grid-template-columns:repeat(2,1fr)}
.weekly-card{background:#fff;border:1px solid #e3e0d2;padding:2.2rem 1.8rem;text-align:center;transition:transform .35s,box-shadow .35s}
.weekly-card:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(30,44,24,.12)}
.weekly-card .day{font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;color:var(--gold-soft);font-weight:600}
.weekly-card h3{font-size:1.45rem;color:var(--green-mid);font-style:italic;margin:.6rem 0 .7rem}
.weekly-card p{font-size:.9rem;color:#5d6b55}
.weekly-card .meta{margin-top:.9rem;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green);font-weight:500}
.weekly-card.wc-link{display:flex;flex-direction:column;color:inherit}
.weekly-card.wc-link .meta{margin-top:.9rem}
.wc-go{margin-top:auto;padding-top:1.1rem;font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-soft);font-weight:600;transition:color .3s}
.weekly-card.wc-link:hover .wc-go,.weekly-card.wc-link:focus-visible .wc-go{color:var(--green)}
.weekly-card.wc-link:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* calendar */
.cal-shell{background:#fff;border:1px solid #e3e0d2;box-shadow:0 18px 50px rgba(30,44,24,.08)}
.cal-head{display:flex;align-items:center;justify-content:space-between;padding:1.3rem 1.5rem;border-bottom:1px solid #ece9dc}
.cal-head h3{font-size:1.5rem;color:var(--green-mid);font-style:italic}
.cal-btn{background:none;border:1px solid var(--green);color:var(--green);width:40px;height:40px;cursor:pointer;font-size:1rem;transition:all .3s;font-family:var(--sans)}
.cal-btn:hover{background:var(--green);color:var(--cream)}
.cal-dow,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-dow{border-bottom:1px solid #ece9dc}
.cal-dow span{padding:.7rem 0;text-align:center;font-size:.64rem;letter-spacing:.24em;text-transform:uppercase;color:#626a5a;font-weight:600}
.cal-cell{min-height:96px;border-bottom:1px solid #f0eee2;border-right:1px solid #f0eee2;padding:.45rem;position:relative;cursor:default;transition:background .25s}
.cal-cell:nth-child(7n){border-right:0}
.cal-cell .dnum{font-family:var(--serif);font-size:.92rem;color:var(--ink)}
.cal-cell.other{background:#fafaf5}.cal-cell.other .dnum{color:#72746d}
.cal-cell.closed{background:repeating-linear-gradient(-45deg,#fafaf5,#fafaf5 7px,#f4f3ea 7px,#f4f3ea 8px)}
.cal-cell.closed .dnum{color:#6f7568}
.cal-cell.today .dnum{background:var(--gold);color:var(--green-deep);width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:600}
.cal-cell.has-ev{cursor:pointer}
.cal-cell.has-ev:hover,.cal-cell.sel{background:#f5f8ee}
.cal-cell.sel{outline:2px solid var(--gold);outline-offset:-2px}
.ev-chip{display:block;font-size:.6rem;line-height:1.25;letter-spacing:.04em;padding:2px 5px;margin-top:3px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.ev-chip.rec{background:rgba(47,106,32,.1);color:var(--green-mid);border:1px solid rgba(47,106,32,.2)}
.ev-chip.spec{background:var(--gold);color:var(--green-deep);border:1px solid var(--gold)}
.ev-chip.hrs{background:#fff;color:var(--green-deep);border:1px dashed rgba(47,106,32,.45);font-weight:600}
.ev-chip.hrs.shut{background:#f6e4e1;color:#8e2a1f;border:1px solid rgba(142,42,31,.35)}
.cd-hours{font-size:.82rem;font-weight:600;color:var(--green-deep);background:rgba(47,106,32,.08);border-left:3px solid var(--green-mid);padding:.5rem .7rem;margin:.2rem 0 .8rem}
.cd-hours.shut{color:#8e2a1f;background:#f6e4e1;border-left-color:#8e2a1f}
.cp-hours{font-size:.8rem;font-weight:600;color:var(--cream);border-left:3px solid var(--gold);padding:.35rem .6rem;margin:0 0 .6rem}
.cp-hours.shut{border-left-color:#e2836f}
.cp-cell.shut{color:rgba(226,131,111,.9);text-decoration:line-through}
.cal-legend{display:flex;gap:1.6rem;justify-content:center;padding:1rem;border-top:1px solid #ece9dc;flex-wrap:wrap}
.cal-legend span{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#677660;display:flex;align-items:center;gap:.45rem}
.cal-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.cal-detail{padding:1.4rem 1.6rem;border-top:1px solid #ece9dc;background:#fbfaf4;display:none}
.cal-detail.show{display:block}
.cal-detail h3{font-family:var(--serif);font-style:italic;color:var(--green-mid);font-size:1.15rem}
.cal-detail .cd-ev{padding:.8rem 0;border-bottom:1px dotted #d8d5c5}
.cal-detail .cd-ev:last-child{border-bottom:0}
.cal-detail .cd-name{font-weight:500;color:var(--ink);font-size:1rem}
.cal-detail .cd-meta{font-size:.82rem;color:#677660;margin-top:.15rem}
.cal-detail a{color:var(--green);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;border-bottom:1px solid rgba(47,106,32,.35)}

/* special event cards */
.spec-list{display:grid;gap:1.4rem}
.spec-card{display:grid;grid-template-columns:130px 1fr auto;gap:1.6rem;align-items:center;background:#fff;border:1px solid #e3e0d2;padding:1.8rem 2rem;transition:transform .35s,box-shadow .35s}
.spec-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(30,44,24,.12)}
.spec-date{text-align:center;border-right:1px solid #ece9dc;padding-right:1.6rem}
.spec-date .mon{font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-soft);font-weight:600}
.spec-date .num{font-family:var(--serif);font-size:2.6rem;color:var(--green-mid);line-height:1.1}
.spec-date .dow{font-size:.72rem;color:#626a5a;letter-spacing:.16em;text-transform:uppercase}
.spec-info h3{font-size:1.5rem;color:var(--green-mid);font-style:italic}
.spec-info p{font-size:.92rem;color:#5d6b55;margin-top:.45rem}
.spec-info .meta{margin-top:.6rem;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--green);font-weight:500}
.spec-cta{text-align:center}
.spec-card.soldout{background:#f4f2ea;border-color:#dedbcd}
/* Noel theme — the Christmas Day card, red and gold against the light list so
   it reads as the headline event rather than one more Friday. */
.spec-card.noel{background:linear-gradient(150deg,#2A0A10,#4A1018);border-color:#D8A33C;border-width:2px}
.spec-card.noel:hover{border-color:#FDCA00;box-shadow:0 16px 36px rgba(42,10,16,.45)}
.spec-card.noel .spec-date{border-color:rgba(216,163,60,.5)}
.spec-card.noel .spec-date .mon{color:#FDCA00}
.spec-card.noel .spec-date .num{color:#FFF1E4}
.spec-card.noel .spec-date .dow{color:rgba(245,201,168,.85)}
.spec-card.noel .spec-info h3{color:#FFF1E4}
.spec-card.noel .spec-info p{color:#EBD6C8}
.spec-card.noel .spec-info .meta{color:#FDCA00}
.spec-card.noel .noel-flag{display:inline-block;font-family:var(--sans);font-size:.58rem;letter-spacing:.24em;
  text-transform:uppercase;font-weight:700;color:#FFF4EC;background:#B8202E;border-radius:999px;
  padding:.3rem .7rem;margin-bottom:.7rem;box-shadow:0 0 0 1px rgba(253,202,0,.45)}
.spec-card.noel .btn{background:var(--gold);border-color:var(--gold);color:#2b1f02}
.spec-card.noel .btn:hover{background:#ffe44d;border-color:#ffe44d;color:#2b1f02}
/* Bloody Shiraz theme — matches aranyaacres.com.au event styling */
.spec-card.shiraz{background:#1e0818;border-color:#5a1535}
.spec-card.shiraz:hover{border-color:#9b2d5a;box-shadow:0 16px 36px rgba(30,8,24,.45)}
.spec-card.shiraz .spec-date{border-color:rgba(155,45,90,.4)}
.spec-card.shiraz .spec-date .mon{color:#e8a0bc}
.spec-card.shiraz .spec-date .num{color:#f5f0e8}
.spec-card.shiraz .spec-date .dow{color:rgba(232,160,188,.6)}
.spec-card.shiraz .spec-info h3{color:#f5f0e8}
.spec-card.shiraz .spec-info p{color:#c8a0b4}
.spec-card.shiraz .spec-info .meta{color:#e8a0bc}
.spec-card.shiraz .tagline{font-family:var(--serif);font-style:italic;color:rgba(232,160,188,.6);font-size:.95rem;margin-top:.3rem}
.spec-card.shiraz .btn{background:var(--gold);border-color:var(--gold);color:#173300}
.spec-card.shiraz .btn:hover{background:#ffe44d;border-color:#ffe44d;color:#173300}
.ev-chip.shiraz{background:#9b2d5a;color:#f5f0e8;border:1px solid #9b2d5a}
.wc-ev.shiraz{background:#1e0818;border-color:#5a1535}
.wc-ev.shiraz:hover{border-color:#9b2d5a;background:#260a1e}
.wc-ev.shiraz .wc-date{color:#e8a0bc}
.wc-ev.shiraz h3{color:#f5f0e8}
.wc-ev.shiraz .wc-x{color:rgba(232,160,188,.75)}
.wc-ev.shiraz p{color:#c8a0b4}
.wc-ev.shiraz .wc-tag{font-family:var(--serif);font-style:italic;color:rgba(232,160,188,.65);font-size:.88rem}
.wc-ev.shiraz .wc-price{color:#e8a0bc}
.wc-ev.shiraz .btn{background:var(--gold);border-color:var(--gold);color:#173300}
.wc-ev.shiraz .btn:hover{background:#ffe44d;border-color:#ffe44d;color:#173300}
.soldout-tag{display:inline-block;font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;color:#8d3427;border:1px solid #d3a49d;padding:.5rem 1.1rem}

/* winery */
.wine-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.4rem}
.wine-col{background:#fff;border:1px solid #e3e0d2;padding:2rem 1.7rem;text-align:center}
.wine-col h3{font-size:1.2rem;color:var(--green-mid);font-style:italic;margin-bottom:1rem}
.wine-col ul{list-style:none}
.wine-col li{padding:.45rem 0;border-bottom:1px dotted #e0ddcd;font-size:.94rem;color:#4a5a43}
.wine-col li:last-child{border-bottom:0}
.two-col{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.two-col .imgbox{position:relative;min-height:360px;border:6px solid #fff;box-shadow:0 14px 40px rgba(30,44,24,.16);overflow:hidden}
/* Real <img> rather than a CSS background, so the photos are indexable — object-fit reproduces background-size:cover exactly. */
.two-col .imgbox img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.vidwrap{margin:0;justify-self:center;width:100%;max-width:330px}
.vidbox{border:6px solid #fff;box-shadow:0 14px 40px rgba(30,44,24,.16);background:var(--green-deep);overflow:hidden;line-height:0}
.vidbox video{display:block;width:100%;height:auto}
.vid-cap{margin-top:.9rem;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:#626a5a;text-align:center;line-height:1.5}
.two-col h2{font-size:clamp(1.8rem,3.4vw,2.4rem);color:var(--green-mid);font-style:italic;margin:.6rem 0 1rem}
.two-col p{color:#4a5a43;font-size:.96rem;margin-bottom:.9rem}

/* facts / steps */
.fact-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:2.4rem}
.fact{background:#fff;border:1px solid #e3e0d2;padding:1.8rem 1.2rem;text-align:center}
.fact .big{font-family:var(--serif);font-size:1.9rem;color:var(--green-mid);font-style:italic}
.fact .lbl{font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:#626a5a;margin-top:.5rem;font-weight:500}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.4rem}
.step{text-align:center;padding:1.6rem 1.2rem}
.step .n{font-family:var(--serif);font-style:italic;font-size:2.4rem;color:var(--gold-soft)}
.step h3{font-size:1.15rem;color:var(--green-mid);margin:.5rem 0 .6rem;font-style:italic}
.step p{font-size:.9rem;color:#5d6b55}

/* ---------- responsive ---------- */
@media(max-width:920px){
  .nav-side{display:none}
  .burger{display:block}
  .nav-wrap{height:64px}
  .brand span{font-size:.78rem}
  .brand img{width:32px;height:32px}
  .navgrid{grid-template-columns:repeat(2,1fr)}
  .band-grid,.contact-grid{grid-template-columns:1fr}
  .menu-items{columns:1}
  .map-frame{min-height:340px}
  .weekly-grid,.weekly-grid.wg-two,.wine-cols,.steps{grid-template-columns:1fr}
  .fact-row{grid-template-columns:repeat(2,1fr)}
  .two-col{grid-template-columns:1fr}
  .spec-card{grid-template-columns:1fr;gap:1rem;text-align:center}
  .spec-date{border-right:0;border-bottom:1px solid #ece9dc;padding:0 0 1rem}
  .cal-cell{min-height:64px;padding:.3rem}
  .ev-chip{font-size:0;padding:0;width:7px;height:7px;border-radius:50%;display:inline-block;margin:3px 2px 0 0}
  .cal-dow span{font-size:.55rem}
}

/* ================= A5 MENU TREATMENTS =================
   Two modifiers on .menu-wrap, so the à la carte and trade pages keep the
   two-column reading layout they were designed around while the Locals' and
   Functions menus follow the printed A5 cards.
     .mw-center — centres every item line, the way the printed card sets them
     .mw-solo   — one column, narrow measure (Locals' Lunch)
   Both are additive: no page loses a rule it already had. */
.mw-center .menu-item{text-align:center}
.mw-center .mi-top{justify-content:center;flex-wrap:wrap}
.mw-center .mi-top h3,.mw-center .mi-top h4{flex:0 1 auto;text-align:center}
.mw-center .mi-top .price{margin-left:0}
.mw-center .mi-top .dots{display:none}
.mw-solo .menu-items{columns:1;max-width:640px;margin:0 auto}
.mw-solo .menu-item{margin-bottom:1.7rem}

/* A section price that carries the whole section, so the individual lines
   under it do not need to repeat it. */
.ms-price{font-family:var(--serif);font-size:clamp(2.1rem,4.4vw,2.9rem);line-height:1;
  font-weight:600;color:var(--green-mid);margin:.55rem 0 .1rem}
.ms-price small{display:block;font-family:var(--sans);font-size:.7rem;letter-spacing:.24em;
  text-transform:uppercase;font-weight:600;color:var(--gold-soft);margin-top:.6rem}
.menu-section-head h2 .h2-price{color:var(--gold-soft);font-style:normal;font-weight:600}
.ms-info{max-width:620px;margin:.75rem auto 0;font-family:var(--sans);font-size:.82rem;
  letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--green);line-height:1.7}

/* A named sub-course inside one section (An Appetiser / A Main). */
.ms-sub{font-family:var(--sans);font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;
  font-weight:600;color:var(--gold-soft);text-align:center;margin:2.4rem 0 1.3rem;
  display:flex;align-items:center;gap:.9rem;justify-content:center}
.ms-sub::before,.ms-sub::after{content:'';height:1px;width:clamp(1.5rem,7vw,4.5rem);background:#d9d5c2}
.ms-incl{max-width:620px;margin:.4rem auto 0;text-align:center;font-size:.84rem;color:#5d6b55;
  line-height:1.6;padding-top:1rem;border-top:1px dotted #d9d5c2}
.ms-incl b{color:var(--green);font-weight:600}

/* The tier card grid — the printed card's two columns, each with its own
   heading, price rule and items underneath. */
.tier-grid{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(2.2rem,4vw,3.4rem) clamp(2rem,5vw,4.5rem)}
.tier{text-align:center}
.tier-head{display:flex;align-items:baseline;justify-content:center;gap:.7rem;flex-wrap:wrap;
  border-bottom:1px solid #d9d5c2;padding-bottom:.55rem;margin-bottom:1.5rem}
.tier-head h3{font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:clamp(1.4rem,2.6vw,1.8rem);color:var(--green)}
.tier-price{font-family:var(--serif);font-weight:600;font-size:clamp(1.4rem,2.6vw,1.8rem);
  color:var(--gold-soft)}
.tier-eyebrow{font-family:var(--sans);font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;
  font-weight:600;color:var(--gold-soft);margin-bottom:.5rem}
.tier .menu-item{margin-bottom:1.5rem;text-align:center}
.tier .menu-item:last-child{margin-bottom:0}
.tier .mi-top{justify-content:center;flex-wrap:wrap}
.tier .mi-top h4{flex:0 1 auto;text-align:center}
.tier-note{font-size:.84rem;color:#626a5a;font-style:italic;line-height:1.6;margin-top:.9rem}
.tier-sub{font-family:var(--serif);font-style:italic;font-size:1.15rem;color:var(--ink);margin-top:.2rem}
.mi-top h4{font-size:1.15rem;color:var(--ink);font-weight:500;white-space:normal;flex:1 1 auto;min-width:0}
@media(max-width:760px){
  .tier-grid{grid-template-columns:1fr;gap:2.4rem}
  .ms-info{font-size:.76rem;letter-spacing:.08em}
}

/* The printed card stacks the dishes inside a tier; only the tiers themselves
   sit side by side. And a section holding a single line centres it rather than
   leaving it stranded in the left column. */
.tier .menu-items{columns:1}
.menu-items.one{columns:1;max-width:640px;margin:0 auto}
.ms-tag{font-family:var(--sans);font-size:.76rem;letter-spacing:.24em;text-transform:uppercase;
  font-weight:600;color:var(--gold-soft);margin-top:.7rem}

/* A diet label above a course line — the trade card splits the main into a
   non-vegetarian and a vegetarian option, and the label carries that. */
.mi-lbl{font-family:var(--sans);font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;
  font-weight:700;color:var(--gold-soft);margin-bottom:.45rem}

/* ---------- Locals' Lunch panel in the Coming Up banner ----------
   Sage rather than gold, so it reads as its own thing between the gold "new
   menu" notice above it and the sunset featured event below. Two columns of
   highlights; the whole panel is one link to the menu. No data-ends — the
   Locals' Lunch is a standing offer, not a dated one. */
.wc-locals{display:block;margin:1rem 0 0;padding:1.1rem 1.3rem 1rem;
  text-decoration:none;border:1px solid rgba(154,190,130,.42);
  background:linear-gradient(135deg,rgba(126,164,106,.17),rgba(90,132,74,.11));
  transition:background .3s,border-color .3s}
.wc-locals:hover{background:linear-gradient(135deg,rgba(126,164,106,.26),rgba(90,132,74,.18));
  border-color:rgba(176,208,152,.75)}
.lc-head{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:.95rem}
.lc-tag{font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;
  color:#15290d;background:#AECD95;padding:.3rem .65rem;border-radius:999px}
.lc-when{font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:#C7DDB5}
.lc-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 1.4rem;text-align:left}
.lc-cell{display:block;padding-left:.8rem;border-left:2px solid rgba(174,205,149,.45)}
.lc-cell b{display:block;font-family:var(--serif);font-style:italic;font-weight:600;
  font-size:1rem;color:#D9E9C9;line-height:1.25}
.lc-cell em{display:block;font-style:normal;font-size:.74rem;line-height:1.45;
  color:rgba(248,247,241,.78);margin-top:.15rem}
.lc-go{display:block;text-align:center;margin-top:1rem;font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;font-weight:600;color:#AECD95}
@media(max-width:600px){
  .wc-locals{padding:1rem 1.1rem .9rem}
  .lc-grid{grid-template-columns:1fr;gap:.6rem}
}

/* ---------- Christmas & New Year hours panel in the Coming Up banner ----------
   Cranberry rather than sage, so the holiday dates do not read as one more
   standing offer sitting under the Locals' Lunch. It reuses that panel's lc-*
   children and only repaints them, so there is one layout to maintain rather
   than two. Carries data-ends, so it retires itself after 1 January and the
   banner goes back to normal with no content update. */
.wc-xmas{display:block;margin:1rem 0 0;padding:1.25rem 1.3rem 1.15rem;
  text-decoration:none;border:1px solid rgba(216,163,60,.55);
  background:linear-gradient(160deg,rgba(184,32,46,.22),rgba(120,18,28,.10));
  box-shadow:inset 0 0 0 1px rgba(184,32,46,.18);
  transition:background .3s,border-color .3s}
.wc-xmas:hover{background:linear-gradient(160deg,rgba(184,32,46,.22),rgba(120,18,28,.10));
  border-color:rgba(216,163,60,.55)}
.wc-xmas .lc-tag{color:#FFF4EC;background:#B8202E;box-shadow:0 0 0 1px rgba(253,202,0,.45)}
.wc-xmas .lc-when{color:#F5C9A8}
.wc-xmas .lc-cell{border-left-color:rgba(253,202,0,.5)}
.wc-xmas .lc-cell b{color:#FFF1E4}
@media(max-width:600px){
  .wc-xmas{padding:1rem 1.1rem .9rem}
}

/* ---------- Christmas Day set menu showcase ----------
   Three menus side by side on the dark band, built to echo the printed card:
   gold rules, serif dish names, the wine pairing under each course. It stacks
   to one column under 1000px because three columns of four courses each is
   unreadable on a phone. */
.xmas-wrap{max-width:1180px;margin:0 auto}
.xmas-head{text-align:center;margin-bottom:2.1rem}
.xh-eyebrow{font-size:.62rem;letter-spacing:.26em;text-transform:uppercase;font-weight:700;color:var(--gold)}
.xmas-head h2{font-family:var(--serif);font-size:clamp(2rem,4.4vw,2.9rem);color:var(--cream);
  margin:.45rem 0 0;font-weight:400;line-height:1.1}
.xh-sub{color:rgba(248,247,241,.82);font-size:.98rem;margin:.8rem auto 0;max-width:42rem}
.xmas-sprig{display:block;width:160px;height:16px;margin:1.15rem auto 0;opacity:.9}
.xmas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem;align-items:stretch}
@media(max-width:1000px){.xmas-grid{grid-template-columns:1fr;max-width:540px;margin-inline:auto}}
.xm-card{display:flex;flex-direction:column;text-align:center;padding:1.9rem 1.4rem 1.7rem;
  border:1px solid rgba(253,202,0,.3);
  background:linear-gradient(175deg,rgba(253,202,0,.06),rgba(253,202,0,.012))}
.xm-kind{font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;color:var(--gold)}
.xm-name{font-family:var(--serif);font-size:1.7rem;color:var(--cream);margin:.4rem 0 0;font-weight:400}
.xm-price{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(248,247,241,.8);margin:.55rem 0 0}
.xm-hr{width:46px;height:1px;background:rgba(253,202,0,.55);margin:1.15rem auto 1.3rem;border:0}
.xm-course + .xm-course{margin-top:1.15rem}
.xm-when{font-size:.57rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;color:var(--gold)}
.xm-dish{font-family:var(--serif);font-size:1.1rem;color:var(--cream);margin:.3rem 0 0;font-weight:600;line-height:1.3}
.xm-tag{display:inline-block;font-family:var(--sans);font-size:.54rem;letter-spacing:.06em;font-weight:700;
  color:#15290d;background:rgba(253,202,0,.8);border-radius:3px;padding:.08rem .26rem;margin-left:.2rem;vertical-align:.12em}
.xm-det{font-size:.83rem;line-height:1.5;color:rgba(248,247,241,.72);margin:.34rem 0 0}
.xm-pair{font-size:.73rem;font-style:italic;color:rgba(253,202,0,.82);margin:.36rem 0 0}
.xmas-addons{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:940px;margin:2.1rem auto 0}
@media(max-width:760px){.xmas-addons{grid-template-columns:1fr;max-width:420px}}
.xa{border:1px solid rgba(253,202,0,.22);background:rgba(253,202,0,.035);padding:1.05rem .9rem;text-align:center}
.xa b{display:block;font-family:var(--serif);font-size:1.05rem;color:var(--cream);font-weight:600}
.xa span{display:block;font-size:.8rem;color:rgba(248,247,241,.78);margin-top:.3rem}
.xa em{display:block;font-size:.72rem;font-style:italic;color:rgba(253,202,0,.8);margin-top:.3rem}
.xmas-legend{max-width:840px;margin:1.9rem auto 0;text-align:center;font-size:.72rem;line-height:1.8;
  color:rgba(248,247,241,.7)}
/* Christmas Day booking button — cranberry so it reads as seasonal rather than
   as a third permanent action next to the gold Book a Table. It carries
   data-ends, so it takes itself out of the nav after Christmas Day lunch. */
.nav-xmas{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
  font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:#FFF4EC;
  background:#B8202E;border:1px solid #D8A33C;padding:.58rem .95rem;transition:all .3s;
  white-space:nowrap;text-decoration:none;flex-shrink:0}
.nav-xmas:hover{background:#C92836;border-color:#FDCA00;color:#FFFFFF}
@media(max-width:1500px){.nav-xmas{padding:.5rem .7rem;font-size:.6rem;letter-spacing:.14em}}
.mobile-menu .nav-xmas{margin-top:.35rem;min-width:11rem}
/* The Christmas tile holds its own booking button now, so it is a panel
   rather than one big link — drop the whole-tile hover that implied it was. */
.wc-xmas{cursor:default}
.wc-xmas:hover{background:linear-gradient(135deg,rgba(214,116,102,.17),rgba(170,70,58,.11));
  border-color:rgba(224,145,133,.42)}
.wc-xmas .xm-book{display:flex;width:100%;max-width:20rem;margin:1.2rem auto 0}
/* Three buttons plus eight links is a tight row; tighten the gap and the
   two fixed-width buttons so nothing is clipped between 1320 and 1920. */
.nav-side.right{gap:1rem}
@media(min-width:1321px){.nav-book,.nav-take{min-width:7.8rem;padding:.58rem .9rem}}

/* ---------- guest reviews ----------
   Real, verbatim Google reviews with the reviewer named. No aggregateRating
   markup: Google only permits marking up ratings collected on your own site,
   so the 4.9 is presented as plain text and linked to the source instead. */
.revs{max-width:1120px;margin:0 auto}
.rev-head{text-align:center;margin-bottom:2.6rem}
.rev-score{display:inline-flex;align-items:center;gap:.6rem;margin-top:.9rem;
  font-family:var(--serif);font-size:1.05rem;color:var(--green)}
.rev-score b{font-size:1.9rem;font-weight:600;line-height:1}
.rev-score span{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  font-family:var(--sans);color:#626a5a}
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.5vw,1.9rem)}
.rev{background:#fff;border:1px solid #e8e5d8;padding:1.7rem 1.5rem;display:flex;
  flex-direction:column;box-shadow:0 6px 22px rgba(30,44,24,.05)}
.rev-stars{color:var(--gold);font-size:.9rem;letter-spacing:.18em;margin-bottom:.9rem}
.rev blockquote{margin:0;font-family:var(--serif);font-size:1rem;line-height:1.65;
  color:var(--ink);font-style:italic;flex:1}
.rev figcaption{margin-top:1.2rem;padding-top:.9rem;border-top:1px dotted #ddd9c8;
  font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:#626a5a}
.rev figcaption b{display:block;font-size:.9rem;letter-spacing:.02em;text-transform:none;
  color:var(--green);font-weight:600;margin-bottom:.15rem}
.rev-foot{text-align:center;margin-top:2.2rem;font-size:.84rem;color:#626a5a}
@media(max-width:900px){.rev-grid{grid-template-columns:1fr}}
/* ---------- takeaway panel: Uber Eats + current offers ----------
   Third full-width panel in the banner, between the gold new-menu notice and
   the sage Locals' Lunch block, so it takes a warm amber of its own. Two
   offers, two cells, collapsing to one column on a phone. Takeaway moved off
   Toast to Uber Eats; the outbound listener matches order.store and still
   fires order_takeaway_click, so the conversion is unaffected. */
.wc-take{display:block;margin:1rem 0 0;padding:1.1rem 1.3rem 1rem;
  text-decoration:none;border:1px solid rgba(226,157,96,.42);
  background:linear-gradient(135deg,rgba(226,157,96,.16),rgba(188,112,58,.10));
  transition:background .3s,border-color .3s}
.wc-take:hover{background:linear-gradient(135deg,rgba(226,157,96,.25),rgba(188,112,58,.17));
  border-color:rgba(240,180,124,.75)}
.tk-head{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:.95rem}
.tk-tag{font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;
  color:#30190A;background:#E8A86C;padding:.3rem .65rem;border-radius:999px}
.tk-when{font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:#F0C79E}
.tk-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 1.4rem;text-align:left}
.tk-cell{display:block;padding-left:.8rem;border-left:2px solid rgba(232,168,108,.45)}
.tk-cell b{display:block;font-family:var(--serif);font-style:italic;font-weight:600;
  font-size:1rem;color:#F6D9BC;line-height:1.25}
.tk-cell em{display:block;font-style:normal;font-size:.74rem;line-height:1.45;
  color:rgba(248,247,241,.78);margin-top:.15rem}
.tk-go{display:block;text-align:center;margin-top:1rem;font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;font-weight:600;color:#E8A86C}
@media(max-width:600px){
  .wc-take{padding:1rem 1.1rem .9rem}
  .tk-grid{grid-template-columns:1fr;gap:.6rem}
}
/* ---------- takeaway offers strip ----------
   Light-page twin of .wc-take, used on /menu where people are already
   deciding what to order. Lives in the shared block so every page stays
   byte-identical even though only the menu page renders it. */
.tk-strip{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.6rem 1.5rem;
  margin:1.6rem 0 0;padding:1rem 1.4rem;text-decoration:none;
  border:1px solid #E0CDB5;background:#FBF4EC;transition:background .3s,border-color .3s}
.tk-strip:hover{background:#F7EBDD;border-color:#CFAE8A}
.tk-s-tag{flex-shrink:0;font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;
  color:#fff;background:#9A5A24;padding:.32rem .7rem;border-radius:999px}
.tk-s-txt{font-size:.88rem;line-height:1.55;color:#5D6B55;text-align:center;max-width:640px}
.tk-s-txt b{color:#7A4418;font-weight:700}
.tk-s-go{flex-shrink:0;font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#9A5A24}
@media(max-width:720px){.tk-strip{padding:.9rem 1rem;gap:.5rem}.tk-s-txt{font-size:.82rem}}
/* ---------- subscribe bubble ----------
   Sits above the calendar tile in the same right-hand stack and borrows its
   shape, colours and shadow. No JS: it fades in on a delay like the reviews
   pin, and the sibling rule tucks it away whenever the calendar popover is
   open, so the panel never has a tile peeking out beneath it. The outbound
   listener already matches marketing-signup, so the click is tracked. */
.sub-fab{position:fixed;right:1.4rem;bottom:8.9rem;z-index:90;width:52px;height:52px;padding:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);border-radius:14px;
  box-shadow:0 12px 34px rgba(0,0,0,.4);text-decoration:none;font-family:var(--sans);
  transition:background .3s ease,border-color .3s ease,opacity .3s ease,transform .3s ease,visibility 0s;
  animation:pinIn .9s ease .8s both}
.sub-fab:hover{background:rgba(20,44,13,.99);border-color:var(--gold)}
.sub-fab svg{width:19px;height:19px;fill:none;stroke:var(--cream);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.sub-fab .sf-txt{font-size:.47rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold);font-weight:700;line-height:1}
.cal-pop.show ~ .sub-fab{opacity:0;visibility:hidden;transform:translateY(8px) scale(.96);
  pointer-events:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s}
@media(max-width:920px){.sub-fab{right:.9rem;bottom:7.5rem;width:46px;height:46px}
  .sub-fab svg{width:17px;height:17px}}
@media(max-width:560px){.sub-fab{bottom:7.3rem}}
@media(prefers-reduced-motion:reduce){.sub-fab{animation:none;transition:opacity .01s}}
/* ---------- intentional line breaks ----------
   Lines should break where the meaning breaks, not wherever the box runs out.
   .nb keeps an atomic phrase — a name, a date, a time, a price and its
   qualifier — on one line, so a panel that has to wrap does it at a separator
   rather than through the middle of "Uber Eats" or "23 October". The new-menu
   lead gets a line of its own so the headline reads as a headline. */
.nb{white-space:nowrap}
.nm-txt b{display:block;margin-bottom:.3rem}
/* balance evens the remaining lines so a panel never ends on an orphan
   word; pretty does the same for the longer event copy. Browsers that
   do not know these simply wrap as before. */
.nm-txt,.wc-sub,.tk-when,.lc-when,.wc-price{text-wrap:balance}
.wc-ev > p,.lc-cell em,.tk-cell em{text-wrap:pretty}
/* Where a meta line has to stack on a phone, it stacks on purpose and the
   middot goes with it, rather than being left dangling at a line end. */
/* All three panel heads stack the same way at every width: the pill alone on
   the first line, its byline centred underneath — the treatment the new-menu
   panel uses for "Aranya Summer is on." On a phone the byline itself stacks
   at its separators, which then drop out rather than dangling at a line end. */
@media(max-width:600px){
  .tk-when .sep,.lc-when .sep{display:none}
  .tk-when .nb,.lc-when .nb{display:block}
}
/* ---------- mobile legibility over the hero video ----------
   On a phone the portrait cut puts the sunset and the lit table directly
   behind the wordmark and the hero copy, and the gradient scrim alone is not
   enough. Both get a soft, rounded, slightly opaque panel. Desktop is left
   alone: the landscape cut is darker where the text sits.
   Scoped to header.hero-page so only the home page, whose header floats over
   video, gets the pill — every other page sits on solid deep green already. */
@media(max-width:859px){
  /* No panels and no pads: the dark sits directly against the letterforms and
     falls away within a few pixels, so it reads as a shadow the words cast on
     the video rather than a box behind them. Four stacked shadows at widening
     radii do it — the inner two hug the contour, the outer two knock the
     busiest frames back. Neighbouring letters' shadows overlap, so a word
     carries one soft shape instead of a ring per letter.
     drop-shadow() does the same job for the wordmark and the burger, following
     the artwork's alpha rather than its box. */
  .hero-inner{margin:0 .9rem;padding:1.6rem .4rem 1.8rem}
  .hero-inner img{
    margin-bottom:1.1rem;
    filter:drop-shadow(0 0 10px rgba(10,22,7,.8)) drop-shadow(0 0 22px rgba(10,22,7,.55))}
  .hero-inner .eyebrow,
  .hero-inner h1,
  .hero-inner .tag span,
  .hero-inner .hours-line{
    text-shadow:
      0 0 6px rgba(10,22,7,.95),
      0 0 13px rgba(10,22,7,.9),
      0 0 22px rgba(10,22,7,.78),
      0 0 36px rgba(10,22,7,.5)}
  header.hero-page:not(.scrolled) .brand,
  header.hero-page:not(.scrolled) .burger,
  .hero .scroll-cue{
    filter:
      drop-shadow(0 0 7px rgba(10,22,7,.95))
      drop-shadow(0 0 15px rgba(10,22,7,.8))
      drop-shadow(0 0 26px rgba(10,22,7,.5))}
  header.hero-page:not(.scrolled) .brand{gap:.55rem}
}
/* The three trades are three separate statements, so each takes its own
   line at every width rather than running together behind separators. */
.hero-inner .tag span{display:block}
.hero-inner .tag span + span{margin-top:.42rem}

/* ---------- paired call-to-action buttons ----------
   On a phone a pair like "Book a Table" and "Order Takeaway on Uber Eats"
   sat at wildly different widths because each sized to its own label. The
   groups stack and share one width below 600px, so the pair reads as two
   equal choices rather than one button that happens to be bigger. */
.hero-cta,.cta-pair{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;align-items:stretch}
@media(max-width:600px){
  /* grid, not flex: grid-auto-rows:1fr equalises the heights too, so a label
     that wraps to two lines does not make its button taller than its partner. */
  .hero-cta,.cta-pair{display:grid;grid-auto-rows:1fr;justify-items:center;gap:.8rem}
  .hero-cta .btn,.cta-pair .btn{width:100%;max-width:21rem}
}
/* Above phone width the pair sits side by side, and the same equality has to
   hold: a grid whose width is fit-content lets 1fr columns resolve to the
   wider label, so both boxes match whatever the two labels say. max-width
   keeps them inside a narrow tablet instead of running off the edge. */
@media(min-width:601px){
  .hero-cta,.cta-pair{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);
    align-items:stretch;width:fit-content;max-width:100%;margin-inline:auto}
  .hero-cta > .btn,.cta-pair > .btn{width:100%;max-width:none}
}
/* the header pair keeps one height as well as one width */
@media(max-width:1500px){.nav-book,.nav-take{padding:.5rem .8rem;font-size:.64rem;letter-spacing:.2em}}
/* ---------- enquiry forms ----------
   The site had no forms at all: weddings, functions and private dining all ran
   through mailto links, which fail silently on any device without a mail client
   and capture nothing. Submissions post to a form service, so the deploy model
   does not change; if that request fails the handler falls back to the same
   mailto it replaced, with the answers already written into the body. */
.aa-form{max-width:680px;margin:2.4rem auto 0;text-align:left}
/* the header is fixed, so an in-page jump has to stop short of it */
#enquire{scroll-margin-top:6.5rem}
/* The botanical flourishes are decoration at 8% opacity, but they are 340px
   squares positioned over the content. Without this they sit on top of
   whatever is beneath them and swallow taps — on a phone the Send Enquiry
   button on /weddings and /functions could not be pressed at all. */
.botanical{pointer-events:none}
/* ---------- collapsible floating dock ----------
   Join, the calendar and What's On used to sit stacked three deep down the
   right edge of every page, which on a phone is a column of chrome over the
   content. They now hide behind one handle and spring out above it when it is
   tapped. Each still decides for itself whether it is relevant — the handle
   only reveals the ones that would have been there anyway. */
.fab-dock{position:fixed;right:1.4rem;bottom:1.4rem;z-index:96;
  width:52px;height:52px;padding:0;display:flex;align-items:center;justify-content:center;
  background:rgba(14,32,9,.96);border:1px solid rgba(253,202,0,.45);border-radius:14px;
  box-shadow:0 12px 34px rgba(0,0,0,.4);cursor:pointer;color:var(--gold);
  transition:background .3s ease,border-color .3s ease,transform .35s ease}
.fab-dock svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;transition:transform .35s cubic-bezier(.4,0,.2,1)}
.fab-dock:hover,.fab-dock:focus-visible{background:rgba(20,44,13,.98);border-color:var(--gold)}
.fab-dock:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* the plus turns into a cross rather than swapping icon */
body.fabs-open .fab-dock svg{transform:rotate(45deg)}
/* a quiet mark that something is waiting behind the handle */
@media(max-width:920px){.fab-dock{right:.9rem;bottom:.9rem;width:46px;height:46px}.fab-dock svg{width:20px;height:20px}
  body.fabs-open .wc-tab{width:46px;height:46px}}
.fd-dot{position:absolute;top:7px;right:7px;width:7px;height:7px;border-radius:50%;
  background:var(--gold);opacity:0;transform:scale(.6);transition:opacity .3s ease,transform .3s ease}
.fab-dock.has-news .fd-dot{opacity:1;transform:scale(1)}
body.fabs-open .fd-dot{opacity:0}

/* collapsed: the three are gone, whatever their own state says */
body:not(.fabs-open) .cal-fab,
body:not(.fabs-open) .sub-fab,
body:not(.fabs-open) .wc-tab{
  opacity:0!important;visibility:hidden!important;pointer-events:none!important;
  transform:translateY(12px) scale(.92)!important}

/* Expanded, the three sit in a column above the handle. The slots are assigned
   in script rather than here, because only some of them are relevant at any
   moment and a fixed rule would leave a hole where a hidden one would sit. */
body.fabs-open .wc-tab{width:52px;height:52px;padding:0;border-radius:14px;justify-content:center;gap:0}
body.fabs-open .wc-tab .wc-tab-label{display:none}
body.fabs-open .cal-pop{max-height:calc(100dvh - 15.3rem)}

.aa-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.2rem}
.aa-grid .wide{grid-column:1/-1}
@media(max-width:620px){.aa-grid{grid-template-columns:1fr}}
.aa-f label{display:block;font-family:var(--sans);font-size:.62rem;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(248,247,241,.62);margin-bottom:.45rem}
.aa-f input,.aa-f select,.aa-f textarea{
  width:100%;box-sizing:border-box;font-family:var(--sans);font-size:.95rem;
  color:var(--cream);background:rgba(248,247,241,.045);
  border:1px solid rgba(253,202,0,.26);border-radius:10px;
  padding:.78rem .9rem;transition:border-color .3s ease,background .3s ease}
.aa-f textarea{min-height:7.5rem;resize:vertical;line-height:1.55}
.aa-f select{appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,rgba(253,202,0,.75) 50%),
    linear-gradient(135deg,rgba(253,202,0,.75) 50%,transparent 50%);
  background-position:calc(100% - 1.15rem) 1.22rem,calc(100% - .8rem) 1.22rem;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:2.4rem}
.aa-f select option{background:#0b1a07;color:var(--cream)}
.aa-f input:focus,.aa-f select:focus,.aa-f textarea:focus{
  outline:none;border-color:var(--gold);background:rgba(248,247,241,.075)}
.aa-f input:focus-visible,.aa-f select:focus-visible,.aa-f textarea:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px}
.aa-f input::placeholder,.aa-f textarea::placeholder{color:rgba(248,247,241,.34)}
.aa-req{color:var(--gold)}
/* the honeypot: never shown, never announced, only bots fill it */
.aa-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden}
.aa-actions{margin-top:1.6rem;display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:center}
.aa-note{margin-top:1.1rem;font-size:.82rem;color:rgba(248,247,241,.55);text-align:center}
.aa-note a{color:rgba(248,247,241,.75)}
.aa-status{margin-top:1.1rem;text-align:center;font-family:var(--sans);font-size:.88rem;
  line-height:1.6;min-height:1.2rem}
.aa-status.ok{color:var(--gold)}
.aa-status.bad{color:#ffb4a2}
.aa-form[data-sent="1"] .aa-grid,.aa-form[data-sent="1"] .aa-actions,.aa-form[data-sent="1"] .aa-note{display:none}

/* ===== New Year's Eve: charcoal and gold, second to Christmas ===== */
.nav-xmas.nav-nye{background:#17171A;color:#FDCA00;border-color:#D8A33C}
.nav-xmas.nav-nye:hover{background:#26262B;border-color:#FDCA00;color:#FFE27A}
.wc-xmas.wc-nye{background:linear-gradient(160deg,rgba(23,23,26,.92),rgba(40,36,24,.78));border-color:rgba(216,163,60,.7);box-shadow:inset 0 0 0 1px rgba(253,202,0,.12);margin-top:1rem}
.wc-xmas.wc-nye .lc-tag{background:#17171A;color:#FDCA00;box-shadow:0 0 0 1px rgba(253,202,0,.7)}
.wc-xmas.wc-nye .lc-when{color:#E9D9A6}
.spec-card.noel.nye{background:linear-gradient(150deg,#141416,#2A2618);border-color:#C9A13A}
.spec-card.noel.nye .noel-flag{background:#17171A;color:#FDCA00;box-shadow:0 0 0 1px rgba(253,202,0,.7)}
.spec-card.noel.nye .spec-date .dow{color:rgba(233,217,166,.85)}
.spec-card.noel.nye .spec-info p{color:#E6DEC8}
.band.nye-band{background:#131315}
.band.nye-band .xm-card{background:rgba(255,255,255,.02);border-color:rgba(216,163,60,.45)}

/* ===== New Year's Eve page: black and gold (matches the printed NYE menu) ===== */
body:has(#page-new-years-eve){background:#0D0D0F;color:#E9E2CF}
body:has(#page-new-years-eve) header.scrolled{background:rgba(13,13,15,.96);box-shadow:0 1px 0 rgba(216,163,60,.35)}
body:has(#page-new-years-eve) .mobile-menu{background:#0D0D0F}
body:has(#page-new-years-eve) footer{background:#0D0D0F;border-top:1px solid rgba(216,163,60,.35)}
#page-new-years-eve .page-hero{background:radial-gradient(ellipse at 50% 0%,#2a2414 0%,#141416 55%,#0D0D0F 100%);border-bottom:1px solid rgba(216,163,60,.4)}
#page-new-years-eve .page-hero .page-title{color:#F4ECD6}
#page-new-years-eve .page-hero .eyebrow{color:#FDCA00}
#page-new-years-eve .page-hero p{color:#D9CFB4}
#page-new-years-eve .page-hero .botanical{opacity:.18}
#page-new-years-eve .band,#page-new-years-eve .band.nye-band{background:#141416;border-top:1px solid rgba(216,163,60,.3);border-bottom:1px solid rgba(216,163,60,.3)}
#page-new-years-eve .sec-head h2{color:#F4ECD6}
#page-new-years-eve .sec-head .eyebrow,#page-new-years-eve .eyebrow[style]{color:#D8A33C!important}
#page-new-years-eve .section-pad p[style]{color:#BFB595!important}
#page-new-years-eve .section-pad .inline{color:#FDCA00;border-bottom-color:rgba(253,202,0,.45)}
#page-new-years-eve .weekly-card{background:#16161A;border:1px solid rgba(216,163,60,.45)}
#page-new-years-eve .weekly-card:hover{box-shadow:0 16px 36px rgba(0,0,0,.5);border-color:#FDCA00}
#page-new-years-eve .weekly-card .day{color:#D8A33C}
#page-new-years-eve .weekly-card h3{color:#F4ECD6}
#page-new-years-eve .weekly-card p{color:#C9BFA3}
#page-new-years-eve .weekly-card .meta{color:#FDCA00}
#page-new-years-eve .btn.dark{border-color:#D8A33C;color:#FDCA00}
#page-new-years-eve .btn.dark:hover{background:#FDCA00;border-color:#FDCA00;color:#141416}
#page-new-years-eve .btn.solid{background:#FDCA00;border-color:#FDCA00;color:#141416}
#page-new-years-eve #hours > div > div{border-color:rgba(216,163,60,.28)!important}
#page-new-years-eve #hours > div{border-color:rgba(216,163,60,.28)!important}
#page-new-years-eve #hours p[style*="font-family"]{color:#F4ECD6!important}
#page-new-years-eve #hours p[style*="font-weight:500"]{color:#E9E2CF!important}
#page-new-years-eve #hours div[style*="160,60,45"]{background:rgba(216,163,60,.07)!important}
#page-new-years-eve #hours div[style*="160,60,45"] p{color:#E7B9A4!important}
#page-new-years-eve .terms details{background:#16161A;border-color:rgba(216,163,60,.35)}
#page-new-years-eve .terms summary{color:#F4ECD6}
#page-new-years-eve .terms summary::after{color:#FDCA00}
#page-new-years-eve .terms .t-body{color:#C9BFA3}
#page-new-years-eve .xm-card{background:#101012}
.hero .btn.nye-cta{background:#141416;border-color:#D8A33C;color:#FDCA00}
.hero .btn.nye-cta:hover{background:#26262B;border-color:#FDCA00;color:#FFE27A}
/* Christmas + NYE + Takeaway + Book all in the bar: tighten the desktop nav on laptop widths */
@media(min-width:1321px) and (max-width:1600px){header .nav-side{gap:.72rem}header .nav-side.right{gap:.6rem}header .nav-link{letter-spacing:.1em;font-size:.64rem}header .nav-book,header .nav-take{min-width:0;padding:.5rem .7rem;letter-spacing:.14em}header .nav-xmas{padding:.5rem .6rem;letter-spacing:.1em}}
.hero .hero-cta .btn{white-space:nowrap}

/* ===== Homepage: proof strip + "Pick Your Occasion" photo cards (conversion-first) ===== */
.hx-proof{background:var(--green-deep);border-top:1px solid rgba(253,202,0,.18);border-bottom:1px solid rgba(253,202,0,.18)}
.hx-proof-list{list-style:none;margin:0 auto;padding:1.1rem 1.25rem;max-width:1180px;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 2.4rem}
.hx-proof-list li,.hx-proof-list a{display:flex;align-items:baseline;gap:.45rem;color:rgba(248,247,241,.82);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}
.hx-proof-list b{font-family:var(--serif);font-style:italic;font-weight:500;text-transform:none;letter-spacing:0;font-size:1.25rem;color:var(--gold)}
.hx-proof-list a:hover span{color:var(--cream)}
.hx{background:var(--cream);padding:clamp(3rem,6vw,5rem) clamp(1rem,3vw,2.5rem) clamp(3rem,6vw,4.5rem)}
.hx-head{text-align:center;margin-bottom:clamp(1.6rem,3vw,2.4rem)}
.hx-head .eyebrow{color:var(--green);margin-bottom:.6rem}
.hx-head h2{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--green-mid);font-size:clamp(2.1rem,4.6vw,3.4rem);line-height:1.05;margin:0}
.hx-feats,.hx-regs{max-width:1240px;margin:0 auto;display:grid;gap:clamp(.7rem,1.4vw,1.1rem)}
.hx-feats{grid-template-columns:repeat(auto-fit,minmax(min(100%,26rem),1fr));margin-bottom:clamp(.7rem,1.4vw,1.1rem)}
.hx-regs{grid-template-columns:repeat(4,minmax(0,1fr))}
.hx-card{position:relative;display:block;overflow:hidden;border-radius:4px;background:#0b1508;color:var(--cream);aspect-ratio:4/5;isolation:isolate}
.hx-feat{aspect-ratio:16/10}
.hx-card picture,.hx-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hx-card img{transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.hx-card:hover img,.hx-card:focus-visible img{transform:scale(1.05)}
.hx-card::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,14,6,0) 30%,rgba(8,14,6,.55) 62%,rgba(8,14,6,.9) 100%);z-index:1}
.hx-body{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(1rem,2vw,1.5rem);display:flex;flex-direction:column;gap:.3rem}
.hx-tag{align-self:flex-start;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#141416;background:var(--gold);padding:.28rem .55rem;border-radius:2px}
.hx-title{font-family:var(--serif);font-style:italic;font-size:clamp(1.35rem,2.1vw,1.7rem);line-height:1.1;color:#fff}
.hx-feat .hx-title{font-size:clamp(1.7rem,3.2vw,2.5rem)}
.hx-line{font-size:.86rem;color:rgba(248,247,241,.86)}
.hx-cta{margin-top:.45rem;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--gold)}
.hx-card:hover .hx-cta{color:#ffe44d}
.hx-card:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.hx-xmas .hx-tag{background:#B8202E;color:#FFF4EC}
.hx-xmas{box-shadow:0 0 0 1px rgba(216,163,60,.6)}
.hx-nye .hx-tag{background:#141416;color:#FDCA00;box-shadow:0 0 0 1px rgba(253,202,0,.7)}
.hx-nye{box-shadow:0 0 0 1px rgba(216,163,60,.6)}
.hx-foot{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:clamp(1.6rem,3vw,2.3rem)}
.hx-foot .btn{margin-top:0}
.hx-foot .btn.ghost.hx-ghost{color:var(--green-mid);border-color:var(--green-mid)}
.hx-foot .btn.ghost.hx-ghost:hover{background:var(--green-mid);color:var(--cream)}
@media(max-width:1000px){.hx-regs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.hx-card{aspect-ratio:3/4}.hx-card.hx-feat{aspect-ratio:4/3}.hx-regs .hx-tag{font-size:.5rem;letter-spacing:.1em;padding:.24rem .42rem}.hx-regs .hx-cta{font-size:.56rem;letter-spacing:.12em}.hx-feat .hx-title{font-size:1.65rem}.hx-title{font-size:1.2rem}.hx-line{font-size:.78rem}.hx-body{padding:.9rem}.hx-proof-list{gap:.5rem 1.2rem;padding:.9rem 1rem}.hx-proof-list li,.hx-proof-list a{font-size:.64rem}.hx-proof-list b{font-size:1.05rem}}
@media(max-width:420px){.hx-regs .hx-line{display:none}.hx-regs .hx-title{font-size:1.1rem}}
@media(prefers-reduced-motion:reduce){.hx-card img{transition:none}.hx-card:hover img{transform:none}}
@media(max-width:760px){.hx-foot .btn{min-width:min(17rem,100%)}}
.hx-feats .hx-feat:only-child{aspect-ratio:21/8}
@media(max-width:760px){.hx-feats .hx-feat:only-child{aspect-ratio:4/3}}

/* ---------- mobile book bar ---------- */
.mbar{display:none}
@media(max-width:760px){
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:92;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem calc(.5rem + env(safe-area-inset-bottom));background:rgba(11,26,7,.97);border-top:1px solid rgba(253,202,0,.32);box-shadow:0 -10px 28px rgba(0,0,0,.28);transform:translateY(110%);visibility:hidden;transition:transform .32s ease,visibility 0s linear .32s}
html.mbar-on .mbar{transform:none;visibility:visible;transition:transform .32s ease,visibility 0s}
.mbar a{-webkit-tap-highlight-color:transparent}
.mbar a.mb-rate{display:flex;align-items:center;gap:.4rem;height:44px;padding:0 .75rem 0 .45rem;flex-shrink:0;border:1px solid rgba(253,202,0,.32);border-radius:10px;text-decoration:none;color:var(--cream)}
.mbar .mb-g{width:26px;height:26px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.mbar .mb-g svg{width:15px;height:15px}
.mbar .mb-num{font-family:var(--serif);font-size:1rem;font-weight:600;line-height:1}
.mbar .mb-star{width:12px;height:12px;flex-shrink:0}
.mbar .mb-call{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border:1px solid rgba(253,202,0,.32);border-radius:50%;color:var(--gold)}
.mbar .mb-call svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mbar .mb-book{flex:1;min-width:0;height:44px;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:0 .9rem;background:var(--gold);color:var(--green-deep);border-radius:10px;text-decoration:none;font-family:var(--sans);font-weight:600;font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;white-space:nowrap;overflow:hidden}
.mbar .mb-book span{overflow:hidden;text-overflow:ellipsis}
.mbar .mb-book svg{width:14px;height:14px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.mbar a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.mbar .mb-book:focus-visible{outline-color:var(--cream)}
/* Room at the end of the page so the bar never sits over the last footer links. */
footer::after{content:"";display:block;height:calc(64px + env(safe-area-inset-bottom))}
/* While the bar is up the shortcuts handle rides above it (the column it opens
   is measured from the handle, so that follows on its own); the review pill
   (homepage only) gives way, since the bar carries the rating itself. */
html.mbar-on .fab-dock{translate:0 calc(-1 * var(--mbh,60px))}
html.mbar-on .gpin,html.mbar-on .gpin-tab{opacity:0;visibility:hidden;pointer-events:none}
}
@media(max-width:760px){body:has(#page-new-years-eve) .mbar{background:rgba(8,8,8,.97);border-top-color:rgba(212,175,55,.4)}}
@media(max-width:340px){.mbar a.mb-rate{padding-right:.55rem}.mbar .mb-book{letter-spacing:.1em;padding:0 .6rem}}
@media(prefers-reduced-motion:reduce){.mbar,html.mbar-on .mbar{transition:none}}

/* ---------- homepage occasions: the four regulars as text boxes ---------- */
.hx-boxes .hx-card{aspect-ratio:auto;display:flex;background:var(--green-deep);border:1px solid rgba(253,202,0,.28);transition:border-color .3s ease,transform .3s ease,box-shadow .3s ease}
.hx-boxes .hx-card::after{display:none}
.hx-boxes .hx-body{position:static;flex:1;padding:clamp(1.15rem,2vw,1.6rem);gap:.45rem}
.hx-boxes .hx-title{color:var(--cream)}
.hx-boxes .hx-line{line-height:1.45}
.hx-boxes .hx-cta{margin-top:auto;padding-top:.7rem}
.hx-boxes .hx-card:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:0 10px 26px rgba(8,14,6,.18)}
@media(max-width:760px){.hx-boxes .hx-card{aspect-ratio:auto}.hx-boxes .hx-body{padding:1rem .9rem}}
@media(max-width:420px){.hx-boxes .hx-card .hx-line{display:block}}
@media(prefers-reduced-motion:reduce){.hx-boxes .hx-card,.hx-boxes .hx-card:hover{transition:none;transform:none}}
/* trust strip: a tidy 2 x 2 on phones and tablets, number stacked over its label */
@media(max-width:900px){
.hx-proof-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem .75rem;max-width:560px}
.hx-proof-list li{flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.2rem}
.hx-proof-list li a[href]{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:0}
}

/* ---------- What's On pop-up: two big nights, then the programme ---------- */
.welcome-card.wn{max-width:940px;padding:0;text-align:left;background:#0b1708;border-color:rgba(253,202,0,.38)}
.wn .wc-scroll{padding-bottom:1.5rem}
.wn .wc-close{background:rgba(11,23,8,.82);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.wn-top{display:flex;align-items:center;gap:.65rem;margin:0;padding:1rem 4.4rem 1rem 1.3rem;font-family:var(--serif);font-style:italic;font-size:1.08rem;line-height:1.2;color:var(--cream)}
.welcome-card .wn-top img{width:26px;height:26px;margin:0;flex-shrink:0}
.wn-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;background:rgba(253,202,0,.4)}
.wn-big{position:relative;display:block;min-height:clamp(330px,52vh,440px);overflow:hidden;isolation:isolate;color:var(--cream);text-decoration:none;background:#0b1708}
.wn-big:only-child{grid-column:1/-1;min-height:clamp(300px,44vh,400px)}
.wn-txt{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;flex-direction:column;align-items:flex-start;padding:clamp(1rem,2.6vw,1.9rem)}
.wn-tag{font-size:.74rem;font-weight:700;letter-spacing:.03em;line-height:1;padding:.36rem .6rem;border-radius:2px}
.wn-xmas .wn-tag{background:#FFF4EC;color:#8E1B2A}
.wn-nye .wn-tag{background:#080808;color:#E9C46A;box-shadow:inset 0 0 0 1px #C9A646}
.wn-date{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(3.4rem,8.4vw,6rem);line-height:.88;letter-spacing:-.025em;margin:.45rem 0 .5rem;white-space:nowrap}
.wn-xmas .wn-date{color:#FFF9F0}
.wn-nye .wn-date{color:#E9C46A}
.wn-line{font-size:.92rem;line-height:1.4;color:rgba(248,247,241,.86)}
.wn-price{font-family:var(--serif);font-size:1.12rem;margin-top:.15rem;color:var(--gold)}
.wn-nye .wn-price{color:#E9C46A}
.wn-btn{margin-top:1rem;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.75rem 1.5rem;font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;transition:background .3s ease,color .3s ease}
.wn-xmas .wn-btn{background:var(--gold);color:var(--green-deep)}
.wn-nye .wn-btn{background:linear-gradient(100deg,#E9C46A,#C9A646);color:#0a0a0a}
.wn-big:hover .wn-btn,.wn-big:focus-visible .wn-btn{background:#fff;color:#0a0a0a}
.wn-big:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}

.wn-also{padding:1.5rem clamp(1.1rem,3vw,2rem) .2rem}
.wn-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.3rem}
.welcome-card .wn-head h3{margin:0;font-family:var(--serif);font-style:italic;font-weight:400;font-size:1.4rem;color:var(--cream)}
.wn-head a{font-size:.86rem;color:var(--gold);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.wn-list{list-style:none;margin:0;padding:0}
.wn-list li+li{border-top:1px solid rgba(248,247,241,.1)}
.wn-list a{display:grid;grid-template-columns:3.6rem minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.85rem .6rem;margin:0 -.6rem;color:var(--cream);text-decoration:none;border-radius:4px;transition:background .25s ease}
.wn-list a:hover,.wn-list a:focus-visible{background:rgba(253,202,0,.07)}
.wn-list a:focus-visible{outline:2px solid var(--gold);outline-offset:0}
.wn-d{display:flex;flex-direction:column;line-height:1}
.wn-d b{font-family:var(--serif);font-style:italic;font-weight:400;font-size:2.1rem;color:var(--gold)}
.wn-d span{margin-top:.25rem;font-size:.74rem;color:rgba(248,247,241,.6)}
.wn-what{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.wn-what b{font-family:var(--serif);font-weight:500;font-size:1.1rem;line-height:1.25}
.wn-what span{font-size:.84rem;line-height:1.4;color:rgba(248,247,241,.7)}
.wn-go{font-size:.74rem;font-weight:700;color:var(--gold);border:1px solid rgba(253,202,0,.55);border-radius:8px;padding:.5rem 1rem;white-space:nowrap}
.wn-list a:hover .wn-go{background:var(--gold);color:var(--green-deep)}
.wn-hot a{background:linear-gradient(90deg,rgba(246,184,104,.16),rgba(232,118,60,.06) 60%,transparent)}
.wn-hot .wn-d b{color:#f6b868}
.wn-hot .wn-go{background:linear-gradient(100deg,#f6b868,#e8763c);border-color:transparent;color:#3a1403}

.wn-more{list-style:none;margin:1.2rem clamp(1.1rem,3vw,2rem) 0;padding:1.2rem 0 0;border-top:1px solid rgba(253,202,0,.22);display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem 1.5rem}
.wn-more a{display:flex;flex-direction:column;gap:.15rem;color:var(--cream);text-decoration:none}
.wn-more b{font-family:var(--serif);font-weight:500;font-size:1rem;text-decoration:underline;text-decoration-color:rgba(253,202,0,.5);text-underline-offset:4px}
.wn-more a:hover b{text-decoration-color:var(--gold)}
.wn-more span{font-size:.82rem;color:rgba(248,247,241,.62)}

@media(max-width:720px){
.welcome-card.wn{padding:0}
.wn-top{font-size:1rem;padding:.85rem 4rem .85rem 1rem;min-height:60px}
.wn-big{min-height:clamp(270px,44vh,340px)}
.wn-big:only-child{min-height:260px}
.wn-txt{padding:.85rem}
.wn-tag{font-size:.64rem;padding:.3rem .45rem}
.wn-date{font-size:clamp(2.4rem,12vw,3.4rem);margin:.4rem 0 .35rem}
.wn-line{font-size:.78rem}
.wn-price{font-size:.95rem}
.wn-btn{align-self:stretch;margin-top:.75rem;padding:.7rem .4rem;font-size:.6rem;letter-spacing:.1em}
.wn-big:only-child .wn-btn{align-self:flex-start;padding:.7rem 1.4rem}
.wn-also{padding:1.2rem 1rem 0}
.wn-list a{grid-template-columns:2.8rem minmax(0,1fr) auto;gap:.75rem;padding:.75rem .5rem;margin:0 -.5rem}
.wn-d b{font-size:1.75rem}
.wn-what b{font-size:1rem}
.wn-what span{font-size:.78rem}
.wn-go{padding:.45rem .8rem}
.wn-more{margin:1rem 1rem 0;grid-template-columns:1fr;gap:.8rem}
}
@media(max-width:360px){.wn-price{font-size:.84rem}.wn-date{font-size:2.3rem}}
.wn-pair[hidden]+.wn-also[hidden]+.wn-more{border-top:0;padding-top:0}
/* panels are drawn, not photographed: a gold vine for Christmas lunch, fireworks for NYE */
.wn-xmas{background:radial-gradient(120% 95% at 82% 0%,#9A2030 0%,#6A1220 42%,#330810 100%)}
.wn-nye{background:radial-gradient(120% 95% at 74% 0%,#2E2814 0%,#100f0a 48%,#050505 100%)}
.wn-art{position:absolute;left:0;top:0;width:100%;height:68%;fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.wn-xmas .wn-art{stroke:#E9C46A;stroke-width:1.3;opacity:.8}
.wn-xmas .wn-art .v{stroke-width:.8;opacity:.7}
.wn-nye .wn-art{stroke:#E9C46A;stroke-width:1.4;opacity:.85}
.wn-nye .wn-art .dot{fill:#E9C46A;stroke:none}
.wn-xmas .wn-price{color:#FFD86A}
.welcome.show .wn-art [pathLength]{stroke-dasharray:1;stroke-dashoffset:1;animation:wnDraw 2.2s cubic-bezier(.45,.1,.25,1) .25s forwards}
.welcome.show .wn-art .dot{opacity:0;animation:wnPop .5s ease 1.6s forwards}
@keyframes wnDraw{to{stroke-dashoffset:0}}
@keyframes wnPop{to{opacity:1}}
@media(prefers-reduced-motion:reduce){.welcome.show .wn-art [pathLength],.welcome.show .wn-art .dot{animation:none;stroke-dashoffset:0;opacity:1}}
/* rounded card; each sentence of supporting copy sits on its own line */
.welcome-card.wn{border-radius:12px}
.wn-tag{border-radius:4px}
.wn-btn{border-radius:var(--r-btn)}
.wn-line{display:flex;flex-direction:column}
.wn-what span+span{margin-top:.05rem;color:rgba(248,247,241,.55)}
.wn-more span{line-height:1.45}
.wn-more b{margin-bottom:.15rem}
@media(max-width:720px){.welcome-card.wn{border-radius:10px}}
/* mobile menu open: the page underneath stays put */
html.menu-open,html.menu-open body{overflow:hidden}
.mobile-menu{overscroll-behavior:contain}

/* ================= ROUNDED EVERYWHERE =================
   No square corners on any box. Three steps: pills for anything you press,
   a soft 16px for cards and panels, 8px for small tags and calendar cells. */
:root{--r-card:10px;--r-small:4px;--r-btn:8px;--r-pill:999px}
/* pressables */
.btn,a.btn,button.btn,.nav-book,.nav-take,.nav-xmas,.cb-more,.menu-tab-btn,.cp-foot,.map-tag a{border-radius:var(--r-btn)}
.hero-cta .btn,.hx-foot .btn,.band-cta .btn,.aa-actions .btn,.f-sub .btn,.spec-cta .btn,.c-block .btn,.weekly-card .btn{border-radius:var(--r-btn)}
.menu-tabs{border-radius:var(--r-card)}
/* cards and panels */
.weekly-card,.xm-card,.xa,.fact,.spec-card,.pkg,.wed-space,.set-card,.set-intro,.byo-box,.addon,.enh,.rev,
.tk-strip,.navcard,.f-sub,.ms-incl,.tier-head,.section-pad>details,details,.cal-pop,.lightbox img,.welcome-card,.hx-card,
.stack .lnk,.vt-list li,.pkg .pair{border-radius:var(--r-card)}
.imgbox,.vidbox,.map-shell,.cal-shell,.gal-item,.hx-card{border-radius:var(--r-card);overflow:hidden}
.imgbox img,.vidbox video,.gal-item picture,.gal-item img{border-radius:inherit}
.cb-item,.map-tag,.home-map .map-tag{border-radius:8px}
.fx-table{border-collapse:separate;border-spacing:0;border-radius:var(--r-card);overflow:hidden}
/* small things */
.hx-tag,.wn-tag,.pkg-badge,.byo-tag,.soon-badge,.spec-date,.cal-cell,.cp-cell,.lc-tag,.nm-tag,.tk-tag{border-radius:var(--r-small)}
.pkg-badge{border-radius:var(--r-small)}
/* form fields */
.aa-f input,.aa-f select,.aa-f textarea{border-radius:8px}

@media(min-width:601px){
  .hero .hero-cta:has(> .btn:nth-child(4)){grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));max-width:40rem;margin-left:auto;margin-right:auto}
}
#hours div[style*="background"]{border-radius:8px}
.ev-chip{border-radius:3px}
/* iPhone Low Power Mode blocks autoplay and paints a play button over the
   hero; hide it so the poster behind shows cleanly instead. */
.hero video::-webkit-media-controls-start-playback-button,#liveVid::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}
.hero video::-webkit-media-controls,#liveVid::-webkit-media-controls{display:none!important}

/* ================= SUMMARY UP TOP, DETAIL BELOW =================
   Opening sections carry a one-line lead and a row of facts people can take in
   at a glance. The full, keyword-rich copy that used to sit there is kept word
   for word in an "In Detail" section lower on the same page, so search engines
   and AI assistants still read all of it. */
.page-hero p.lead-short{max-width:34rem;font-size:1.08rem;line-height:1.55;color:rgba(248,247,241,.9)}
.gist{max-width:58rem;margin:1.8rem auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.7rem;text-align:left}
.gist-item{display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.1rem;border:1px solid rgba(47,106,32,.22);border-radius:var(--r-card,10px);background:#fff;color:var(--ink);text-decoration:none;transition:border-color .25s ease,transform .25s ease}
.gist-item b{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.18rem;line-height:1.2;color:var(--green-mid)}
.gist-item span{font-size:.84rem;line-height:1.4;color:#5c6454}
a.gist-item:hover,a.gist-item:focus-visible{border-color:var(--gold);transform:translateY(-2px)}
a.gist-item:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.page-hero .gist-item,.band .gist-item{background:rgba(248,247,241,.05);border-color:rgba(253,202,0,.3);color:var(--cream)}
.page-hero .gist-item b,.band .gist-item b{color:var(--gold)}
.page-hero .gist-item span,.band .gist-item span{color:rgba(248,247,241,.72)}
.page-hero .gist-item.gist-hl{border-color:rgba(184,32,46,.8);background:rgba(184,32,46,.16)}
.page-hero .gist-item.gist-hl b{color:#FFD9C9}
.gist + .hero-cta{margin-top:2rem}
.more-about{border-top:1px solid rgba(74,90,67,.14)}
.ma-grid{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:1.6rem 3rem}
.ma-col h3{font-family:var(--serif);font-style:italic;font-weight:400;font-size:1.35rem;color:var(--green-mid);margin:0 0 .6rem}
.ma-col p{font-size:.95rem;line-height:1.75;color:#4a5a43;margin:0 0 1rem}
@media(max-width:600px){.gist{grid-template-columns:1fr 1fr;gap:.55rem}.gist-item{padding:.8rem .85rem}.gist-item b{font-size:1.02rem}.gist-item span{font-size:.76rem}}
@media(prefers-reduced-motion:reduce){a.gist-item:hover{transform:none}}
.sec-lead{max-width:40rem;margin:0 auto;text-align:center;color:#4a5a43;font-size:1.06rem;line-height:1.6}
.sec-lead + .gist{margin-top:1.4rem}
.two-col .gist,.ma-col .gist{margin-left:0;margin-right:0}
.two-col .gist{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr))}
.ma-grid:has(> .ma-col:only-child){max-width:46rem}
@media(max-width:600px){
  /* three facts on a phone read as a tidy list rather than a 2 + 1 grid */
  .gist:has(> :nth-child(3):last-child){grid-template-columns:1fr;gap:.45rem}
  .gist:has(> :nth-child(3):last-child) .gist-item{flex-direction:row;align-items:baseline;justify-content:space-between;gap:.8rem;padding:.7rem .9rem}
  .gist:has(> :nth-child(3):last-child) .gist-item span{text-align:right}
}

/* ---------- menu page: takeaway in Uber Eats colours ----------
   Black and Uber Eats green so the strip reads as "this is the Uber Eats order"
   at a glance. Plain text only: no Uber Eats logo is reproduced. */
.tk-strip.ue{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:1.4rem;padding:1.2rem 1.4rem;background:#000;border:0;border-radius:var(--r-card,10px);color:#fff;text-decoration:none;box-shadow:0 10px 28px rgba(0,0,0,.18);transition:transform .25s ease,box-shadow .25s ease}
.tk-strip.ue:hover{background:#000;transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.26)}
.tk-strip.ue:focus-visible{outline:3px solid #06C167;outline-offset:3px}
.ue-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.ue-kicker{align-self:flex-start;font-size:.62rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#000;background:#06C167;padding:.25rem .55rem;border-radius:4px;margin-bottom:.35rem}
.ue-title{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.45rem;line-height:1.15;color:#fff}
.ue-sub{font-size:.84rem;color:rgba(255,255,255,.78);line-height:1.4}
.ue-note{font-size:.76rem;color:rgba(255,255,255,.55)}
.ue-deals{display:flex;gap:.6rem}
.ue-deal{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:6.4rem;padding:.6rem .8rem;border:1px solid rgba(6,193,103,.55);border-radius:8px;text-align:center}
.ue-deal b{font-family:var(--serif);font-size:1.25rem;font-weight:600;color:#06C167;line-height:1.1}
.ue-deal span{font-size:.72rem;color:rgba(255,255,255,.75);margin-top:.15rem}
.ue-go{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:.75rem 1.4rem;background:#06C167;color:#000;border-radius:8px;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;transition:background .25s ease}
.tk-strip.ue:hover .ue-go{background:#05a85a;color:#fff}
@media(max-width:860px){.tk-strip.ue{grid-template-columns:1fr auto}.ue-go{grid-column:1/-1}}
@media(max-width:560px){.tk-strip.ue{grid-template-columns:1fr;gap:1rem;padding:1.1rem}.ue-deals{width:100%}.ue-deal{flex:1;min-width:0}.ue-title{font-size:1.3rem}}
@media(prefers-reduced-motion:reduce){.tk-strip.ue,.tk-strip.ue:hover{transition:none;transform:none}}

/* ================= MENU PAGE: SET MENUS + A SHORTER MENU ================= */
.setm{background:var(--green-deep);color:var(--cream);padding:clamp(2.6rem,6vw,4rem) 1.5rem;border-top:1px solid rgba(253,202,0,.18)}
.setm-head{text-align:center;margin-bottom:1.6rem}
.setm-head .eyebrow{color:var(--gold)}
.setm-head h2{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(1.9rem,4vw,2.7rem);color:var(--cream);margin:.4rem 0 .5rem}
.setm .sec-lead{color:rgba(248,247,241,.78)}
.setm-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}
.setm-card{display:flex;flex-direction:column;gap:.2rem;padding:1.2rem 1.25rem;border:1px solid rgba(253,202,0,.3);border-radius:var(--r-card,10px);background:rgba(248,247,241,.04);color:var(--cream);text-decoration:none;transition:border-color .25s ease,transform .25s ease,background .25s ease}
.setm-card:hover,.setm-card:focus-visible{border-color:var(--gold);background:rgba(253,202,0,.07);transform:translateY(-2px)}
.setm-card:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.setm-name{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.setm-price{font-family:var(--serif);font-style:italic;font-size:2.2rem;line-height:1.05;color:#fff;margin:.15rem 0 .2rem}
.setm-what{font-size:.92rem;color:rgba(248,247,241,.88)}
.setm-when{font-size:.8rem;color:rgba(248,247,241,.6);margin-top:auto;padding-top:.5rem}
.setm-rows{display:flex;flex-direction:column;gap:.1rem;font-size:.88rem;color:rgba(248,247,241,.85)}
.setm-rows span{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px dotted rgba(248,247,241,.18);padding:.12rem 0}
.setm-rows b{color:var(--gold);font-weight:600}
.setm-chef{grid-row:span 2;background:rgba(253,202,0,.08);border-color:rgba(253,202,0,.55)}
.setm-chef .setm-price{font-size:2.8rem}
.setm-xmas{border-color:rgba(184,32,46,.8);background:rgba(184,32,46,.14)}
.setm-xmas .setm-name{color:#FFB8A8}
.setm-nye{border-color:rgba(201,166,70,.7);background:#0d0d0f}
.setm-nye .setm-name,.setm-nye .setm-price{color:#E9C46A}
@media(max-width:900px){.setm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.setm-chef{grid-row:auto;grid-column:1/-1}}
@media(max-width:600px){.setm-card{padding:.95rem}.setm-price{font-size:1.75rem}.setm-chef .setm-price{font-size:2.2rem}.setm-what{font-size:.82rem}.setm-when{font-size:.74rem}}

/* course jump links (desktop) */
.course-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;margin:0 auto 1.4rem;max-width:900px}
.course-nav a{font-size:.74rem;font-weight:600;letter-spacing:.06em;color:var(--green-mid);text-decoration:none;padding:.45rem .85rem;border:1px solid rgba(47,106,32,.25);border-radius:8px;background:#fff}
.course-nav a:hover,.course-nav a:focus-visible{border-color:var(--gold);background:rgba(253,202,0,.12)}
#page-menu .menu-section{scroll-margin-top:110px}
/* allergen key folds away */
.legend-wrap{max-width:760px;margin:0 auto .8rem;text-align:center}
.legend-wrap summary{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.78rem;font-weight:600;color:var(--green-mid);padding:.35rem .8rem;border:1px solid rgba(47,106,32,.25);border-radius:8px;list-style:none}
.legend-wrap summary::-webkit-details-marker{display:none}
.legend-wrap summary::after{content:"+";font-weight:700}
.legend-wrap[open] summary::after{content:"\2212"}
.legend-wrap[open] .legend{margin-top:.8rem}
#page-menu .surcharge{margin-bottom:1.6rem}
/* tighter rhythm on desktop */
#page-menu .menu-section{margin-bottom:clamp(2rem,4vw,2.8rem)}
#page-menu .menu-section-head{margin-bottom:1.2rem}
#page-menu .menu-section-head h2{font-size:clamp(1.7rem,3vw,2.1rem)}
#page-menu .menu-item{margin-bottom:1.15rem}
.ms-toggle,.cf-toggle{display:none}
/* phones: each course is a fold; the first one starts open */
@media(max-width:760px){
  .course-nav{display:none}
  .mf .msf{margin-bottom:.55rem;border:1px solid #e3e0d2;border-radius:var(--r-card,10px);background:#fff;overflow:hidden}
  .mf .msf .menu-section-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin:0;padding:.85rem 1rem;text-align:left;cursor:pointer}
  .mf .msf .menu-section-head h2{font-size:1.3rem;margin:0}
  .mf .ms-titles{display:flex;flex-direction:column;gap:.1rem}
  .mf .ms-titles .ms-note{margin:0;font-size:.62rem}
  .mf .ms-toggle{display:flex;align-items:center;gap:.55rem;flex-shrink:0;background:none;border:0;padding:.4rem 0 .4rem .4rem;font:inherit;font-size:.74rem;color:#626a5a;cursor:pointer}
  .mf .ms-chev{width:8px;height:8px;border-right:2px solid var(--green-mid);border-bottom:2px solid var(--green-mid);transform:rotate(45deg) translateY(-2px);transition:transform .25s ease}
  .mf .msf.open .ms-chev{transform:rotate(-135deg)}
  .mf .msf:not(.open) .ms-body{display:none}
  .mf .ms-body{padding:.2rem 1rem 1rem;border-top:1px solid #efece0}
  .mf .ms-body .menu-items{margin-top:.8rem}
  .mf .msf .menu-item{margin-bottom:1rem}
  .mf .msf{scroll-margin-top:80px}
}
@media(prefers-reduced-motion:reduce){.setm-card:hover{transform:none}#page-menu .ms-chev{transition:none}}
/* desktop: courses sit two to a row, each course a single column of dishes */
@media(min-width:1000px){
  #page-menu .mtab.on{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:4rem;align-items:start}
  #page-menu .mtab > :not(.menu-section){grid-column:1/-1}
  #page-menu .mtab .menu-items{columns:1}
  #page-menu .mtab .menu-section-head{text-align:left;margin-bottom:1rem;padding-bottom:.6rem;border-bottom:1px solid rgba(74,90,67,.16)}
}
/* set menus: rows of three (two on phones); a short last row centres */
.setm-grid{display:flex;flex-wrap:wrap;justify-content:center}
.setm-card{flex:0 1 calc((100% - 1.6rem) / 3)}
.setm-chef{grid-row:auto}
@media(max-width:900px){.setm-card{flex-basis:calc((100% - .8rem) / 2)}.setm-chef{flex-basis:100%}}

/* ---------- folding cards on phones (Christmas / NYE menus, function set menus) ---------- */
@media(max-width:760px){
  .cf .cf-head{position:relative}
  .cf .cf-toggle{display:flex;align-items:center;justify-content:center;gap:.55rem;width:100%;margin-top:.8rem;min-height:44px;padding:.6rem 1rem;background:none;border:1px solid currentColor;border-radius:8px;font:inherit;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:inherit;opacity:.85;cursor:pointer}
  .cf .cf-toggle .ms-chev{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .25s ease}
  .cf.open .cf-toggle .ms-chev{transform:rotate(-135deg)}
  .cf:not(.open) .cf-body{display:none}
}

/* ---------- read more ---------- */
.rm:not(.open){max-height:9.6em;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent);mask-image:linear-gradient(180deg,#000 55%,transparent)}
.rm-m:not(.open){max-height:none;-webkit-mask-image:none;mask-image:none}
.rm-btn{display:inline-flex;align-items:center;gap:.45rem;margin:.7rem 0 0;min-height:40px;padding:.45rem 1rem;background:none;border:1px solid rgba(47,106,32,.35);border-radius:8px;font:inherit;font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--green-mid);cursor:pointer}
.rm-btn:hover,.rm-btn:focus-visible{border-color:var(--gold);background:rgba(253,202,0,.1)}
.rm-btn[hidden]{display:none}
.rm-btn-m{display:none}
.sec-head + .rm-block + .rm-btn,.intro .rm-btn{margin-left:auto;margin-right:auto}
@media(max-width:760px){
  .rm-m:not(.open){max-height:6.2em;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 50%,transparent);mask-image:linear-gradient(180deg,#000 50%,transparent)}
  .rm-btn-m{display:inline-flex}
  /* gallery: two photos across on a phone rather than one */
  .gal-grid{columns:2;column-gap:6px}
  /* "what you don't have to ask for": a tighter two-up grid */
  .enh-grid{grid-template-columns:1fr 1fr;gap:.6rem}
  .enh-grid .enh{padding:.85rem}
  .enh-grid .enh h3{font-size:1rem}
  .enh-grid .enh p{font-size:.8rem;line-height:1.45}
}
/* events on phones: the date sits beside the title instead of stacked above it */
@media(max-width:760px){
  .spec-list{gap:.8rem}
  .spec-list .spec-card{grid-template-columns:3.4rem minmax(0,1fr);gap:.4rem .9rem;align-items:start;padding:1.05rem 1rem;text-align:left}
  .spec-list .spec-date{border-right:1px solid #ece9dc;border-bottom:0;padding:.1rem .8rem 0 0;margin:0;text-align:center}
  .spec-list .spec-date .mon{font-size:.58rem;letter-spacing:.16em}
  .spec-list .spec-date .num{font-size:1.8rem;line-height:1.05}
  .spec-list .spec-date .dow{font-size:.56rem;letter-spacing:.08em}
  .spec-list .spec-info{text-align:left}
  .spec-list .spec-info h3{font-size:1.2rem;line-height:1.2}
  .spec-list .spec-info h3 span{display:block;margin-top:.2rem}
  .spec-list .spec-info p{font-size:.84rem;margin-top:.35rem}
  .spec-list .spec-info .meta{font-size:.66rem;letter-spacing:.08em}
  .spec-list .spec-info .rm-btn{margin-top:.5rem;min-height:36px;padding:.35rem .8rem;font-size:.66rem}
  .spec-list .spec-cta{grid-column:1/-1;text-align:left;margin-top:.4rem}
  .spec-list .spec-cta .btn{width:100%;margin:0}
}
.spec-card.noel .rm-btn,.spec-card.shiraz .rm-btn,.band .rm-btn,.page-hero .rm-btn,.setm .rm-btn{color:#FDCA00;border-color:rgba(253,202,0,.5)}
/* hold the calendar's space before its script fills it, so nothing below jumps */
#calGrid:empty{min-height:24rem}
/* headings kept in order for screen readers, styled as before */
.mi-top h3.as-h4{font-size:1.15rem;color:var(--ink);font-weight:500;white-space:normal;flex:1 1 auto;min-width:0}
.mw-center .mi-top h3.as-h4,.tier .mi-top h3.as-h4{flex:0 1 auto;text-align:center}

/* ---------- menu page: steadier rendering in Chrome on iPhone ----------
   The menu page was the only page combining a fading tab panel (a very tall
   animated layer), CSS columns inside folding sections and smooth programmatic
   scrolling. Together they flicker in Chrome's iOS web view, so the menu now
   renders as plain blocks, switches tabs instantly and scrolls without
   animation. It looks the same. */
html:has(#page-menu){scroll-behavior:auto}
#page-menu .mtab{animation:none}
#page-menu .menu-items,#page-menu .mtab .menu-items{columns:auto;column-gap:normal}
#page-menu .menu-item{break-inside:auto}
@media(min-width:761px) and (max-width:999px){#page-menu .mtab .menu-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:3rem}#page-menu .mtab .menu-item{min-width:0}#page-menu .mtab .mi-top{flex-wrap:wrap}#page-menu .mtab .mi-top h3{white-space:normal}}
/* NYE: every bookable time in a sitting, each one a direct Toast link */
.slot-lab{font-size:.66rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#E9C46A;margin:.2rem 0 .5rem}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.4rem,1fr));gap:.4rem;margin-top:auto}
.slots .slot{display:flex;align-items:center;justify-content:center;min-height:42px;padding:.4rem .3rem;border:1px solid rgba(233,196,106,.55);border-radius:8px;color:#F3E6C4;font-size:.86rem;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .2s ease,color .2s ease}
.slots .slot:hover,.slots .slot:focus-visible{background:#E9C46A;color:#0a0a0a}
.slots .slot:focus-visible{outline:2px solid #E9C46A;outline-offset:2px}

