/* =====================================================================
   TDN template core styles. Colours come from CSS custom properties that
   the build writes into <head> from brand.themes[theme] in site.config.json.
   Widget styles live in assets/widgets/<name>.css and share these tokens.
   ===================================================================== */
:root{
  --header-h:84px;--gutter:clamp(1.15rem,4.2vw,3.5rem);--max:1320px;
  --ease:cubic-bezier(.2,.8,.2,1);--ease-io:cubic-bezier(.7,0,.2,1);
  --line:rgba(var(--ink-rgb),.12);--line2:rgba(var(--ink-rgb),.2);
  --radius:18px;--sec:clamp(5rem,11vw,9.5rem)
}
@media (max-width:1100px){:root{--header-h:72px}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--bg);color:var(--cream);font-family:var(--sans);font-size:clamp(1rem,.96rem + .2vw,1.075rem);line-height:1.65;font-weight:350;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
p{margin:0 0 1em}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.04;margin:0;letter-spacing:-.01em}
em{font-style:italic;color:var(--gold2)}
button{font:inherit;color:inherit}
::selection{background:var(--gold);color:var(--on-gold)}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.skip{position:fixed;left:1rem;top:-4rem;z-index:200;background:var(--gold);color:var(--on-gold);padding:.7rem 1.1rem;border-radius:8px;font-size:.85rem;transition:top .3s}
.skip:focus{top:1rem}
.wrap{width:100%;max-width:calc(var(--max) + var(--gutter) * 2);margin:0 auto;padding:0 var(--gutter)}
.wrap--narrow{max-width:calc(1060px + var(--gutter) * 2)}
.i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.i-fill{fill:currentColor;stroke:none}
.i .i-dot{fill:currentColor}

/* grain overlay for depth */
body::after{content:"";position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- type ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:.85rem;margin:0 0 1.1rem;font-family:var(--sans);font-size:.7rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--gold)}
.eyebrow::before{content:"";width:28px;height:1px;background:currentColor;opacity:.7}
.eyebrow--sm{margin-top:1.6rem;font-size:.62rem}
.display{font-size:clamp(3rem,7.6vw,7.4rem);line-height:.96;font-weight:400;letter-spacing:-.025em}
.display em{font-weight:400}
.display--md{font-size:clamp(2.6rem,6vw,5.6rem)}
.h2{font-size:clamp(2.3rem,4.6vw,4.2rem);font-weight:400;line-height:1.02;letter-spacing:-.02em}
.h3{font-size:clamp(1.6rem,2.4vw,2.2rem);font-weight:500}
.lead{font-size:clamp(1.05rem,1rem + .35vw,1.25rem);color:var(--muted);max-width:40rem;margin:1.3rem 0 0}
.body{color:var(--muted);max-width:36rem}
.small{font-size:.86rem;color:var(--muted)}
.sec-head{margin-bottom:clamp(2.4rem,5vw,4rem)}
.sec-head--center{text-align:center;margin-left:auto;margin-right:auto;max-width:52rem}
.sec-head--center .lead{margin-left:auto;margin-right:auto}
.sec-head--center .eyebrow::after{content:"";width:28px;height:1px;background:currentColor;opacity:.7}
.split-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:clamp(2.4rem,5vw,4rem)}
.split-head .sec-head{margin-bottom:0}

/* ---------- buttons & links ---------- */
.btn{-webkit-appearance:none;appearance:none;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.7rem;min-height:52px;padding:.85rem 1.6rem;border:1px solid var(--gold);border-radius:999px;background:transparent;color:var(--cream);font-family:var(--sans);font-size:.74rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;overflow:hidden;isolation:isolate;white-space:nowrap;transition:color .45s var(--ease),border-color .45s,transform .45s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--gold2);transform:translateY(101%);transition:transform .55s var(--ease)}
.btn:hover::before,.btn:focus-visible::before{transform:none}
.btn .i{width:16px;height:16px;transition:transform .45s var(--ease)}
.btn:hover .i{transform:translateX(4px)}
.btn--gold{background:var(--btn-bg,var(--gold));border-color:var(--btn-bg,var(--gold));color:var(--on-btn,var(--on-gold))}
.btn--gold::before{background:var(--btn-hover,var(--gold2))}
.btn--gold:hover,.btn--gold:focus-visible{color:var(--on-btn-hover,var(--on-gold))}
.btn--ghost{border-color:rgba(var(--ink-rgb),.35);background:rgba(var(--shade-rgb),.18);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.btn--ghost::before{background:var(--cream)}
.btn--ghost:hover{color:var(--bg);border-color:var(--cream)}
.btn--sm{min-height:44px;padding:.6rem 1.15rem;font-size:.66rem}
.btn--block{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:.9rem;align-items:center}
.btn-row--center{justify-content:center}
.link-arrow{-webkit-appearance:none;appearance:none;background:none;border:0;padding:.35rem 0;cursor:pointer;display:inline-flex;align-items:center;gap:.7rem;font-family:var(--sans);font-size:.74rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold2);position:relative}
.link-arrow span{background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:.3rem;transition:background-size .5s var(--ease)}
.link-arrow:hover span{background-size:0 1px;background-position:100% 100%}
.link-arrow .i{width:16px;height:16px;transition:transform .45s var(--ease)}
.link-arrow:hover .i{transform:translateX(5px)}
.w-btn{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:.55rem;margin:0;padding:.55rem 1rem;border:1px solid rgba(var(--ink-rgb),.22);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;transition:border-color .3s,color .3s}
.w-btn:hover{border-color:var(--gold);color:var(--gold2)}
.w-btn svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------- header ---------- */
.site-header{position:fixed;inset:0 0 auto;z-index:100;height:var(--header-h);transition:transform .5s var(--ease),background-color .5s,border-color .5s,height .4s;border-bottom:1px solid transparent}
.site-header::before{content:"";position:absolute;inset:0 0 -40px;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(var(--shade-rgb),.7),rgba(var(--shade-rgb),0));transition:opacity .5s}
.site-header.is-solid{background:rgba(var(--shade-rgb),.84);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--line)}
.site-header.is-solid::before{opacity:0}
.site-header.is-hidden{transform:translateY(-100%)}
.hdr{height:100%;max-width:calc(1560px + var(--gutter) * 2);margin:0 auto;padding:0 var(--gutter);display:flex;align-items:center;gap:2rem}
.brand{display:inline-flex;align-items:center;color:var(--cream);flex:none;transition:color .3s}
.brand:hover{color:var(--gold2)}
.logo{width:auto;height:46px}
.nav{margin-left:auto}
.nav ul{list-style:none;margin:0;padding:0;display:flex;gap:clamp(1.2rem,2.1vw,2.3rem)}
.nav a{position:relative;display:block;padding:.5rem 0;font-size:.72rem;font-weight:450;letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--ink-rgb),.82);transition:color .3s}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:.15rem;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.nav a:hover,.nav a[aria-current="page"]{color:var(--cream)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
.hdr-actions{display:flex;align-items:center;gap:.75rem;flex:none}
.hdr-cta-s{display:none}
.burger{-webkit-appearance:none;appearance:none;display:none;position:relative;width:46px;height:46px;margin:0;padding:0;border:1px solid rgba(var(--ink-rgb),.3);border-radius:50%;background:rgba(var(--shade-rgb),.25);color:var(--cream);cursor:pointer;place-items:center;transition:border-color .3s,background .3s}
.burger:hover{border-color:var(--gold)}
.burger-box{display:grid;place-items:center;width:22px;height:22px}
.burger svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;overflow:visible}
.burger path{transition:transform .5s var(--ease);transform-origin:11px 11px}
.burger[aria-expanded="true"] .b1{transform:translateY(3px) rotate(45deg)}
.burger[aria-expanded="true"] .b2{transform:translateY(-3px) rotate(-45deg)}
@media (max-width:1180px){
  .nav{display:none}
  .burger{display:grid}
  .hdr-actions{margin-left:auto}
  .logo{height:40px}
}
@media (max-width:520px){
  .logo{height:36px}
  .hdr-cta{padding:.5rem .95rem;min-height:42px}
  .hdr-cta-l{display:none}.hdr-cta-s{display:inline}
  .hdr-cta .i{display:none}
  .burger{width:42px;height:42px}
}
/* mobile menu */
.mnav{position:fixed;inset:0;z-index:99;visibility:hidden;pointer-events:none}
.mnav.is-open{visibility:visible;pointer-events:auto}
.mnav-bg{position:absolute;inset:0;background:radial-gradient(120% 70% at 85% 0%,var(--glow),transparent 60%),var(--bg);clip-path:circle(0 at calc(100% - var(--gutter) - 22px) calc(var(--header-h) / 2));transition:clip-path .8s var(--ease-io)}
.mnav.is-open .mnav-bg{clip-path:circle(150% at calc(100% - var(--gutter) - 22px) calc(var(--header-h) / 2))}
.mnav-inner{position:relative;height:100%;overflow-y:auto;display:flex;flex-direction:column;justify-content:space-between;gap:2rem;padding:calc(var(--header-h) + 3vh) var(--gutter) max(1.6rem,env(safe-area-inset-bottom))}
.mnav-list{list-style:none;margin:0;padding:0}
.mnav-list li{border-bottom:1px solid var(--line);opacity:0;transform:translateY(24px);transition:opacity .5s,transform .7s var(--ease)}
.mnav.is-open .mnav-list li{opacity:1;transform:none;transition-delay:calc(.2s + var(--n) * 55ms)}
.mnav-list a{display:flex;align-items:baseline;gap:1rem;padding:.55rem 0;font-family:var(--serif);font-size:clamp(2rem,7.4vw,3.2rem);line-height:1.12;color:var(--cream);transition:color .3s,padding .4s var(--ease)}
.mnav-list a:hover,.mnav-list a[aria-current="page"]{color:var(--gold2)}
.mnav-list a[aria-current="page"] .mnav-l{font-style:italic}
.mnav-num{font-family:var(--sans);font-size:.66rem;letter-spacing:.2em;color:var(--gold);transform:translateY(-.9em)}
.mnav-foot{display:grid;gap:1.4rem;opacity:0;transition:opacity .6s .45s}
.mnav.is-open .mnav-foot{opacity:1}
.mnav-foot .btn{justify-self:start}
.mnav-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem 1.2rem;font-size:.86rem;color:var(--muted)}
.mnav-info a,.mnav-info p{display:flex;align-items:center;gap:.55rem;margin:0}
.mnav-info .i{color:var(--gold);width:16px;height:16px}
@media (max-width:420px){.mnav-info{grid-template-columns:1fr}}
@media (min-width:1181px){.mnav{display:none}}
body.menu-open{overflow:hidden}

/* ---------- sections ---------- */
.sec{position:relative;padding:var(--sec) 0}
.sec + .sec{padding-top:calc(var(--sec) * .72)}

/* reveal on scroll (core) */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1.1s var(--ease)}
.js .reveal.is-in{opacity:1;transform:none}

/* ---------- heroes ---------- */
.hero,.phero,.nf{position:relative;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;isolation:isolate}
.hero{min-height:max(100svh,640px)}
.hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero-img{width:100%;height:100%;object-fit:cover;transform:scale(1.1);transition:transform 2.8s var(--ease)}
.is-loaded .hero-img{transform:scale(1.0001)}
.hero-shade{position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(var(--shade-rgb),.88) 0%,rgba(var(--shade-rgb),.55) 42%,rgba(var(--shade-rgb),.08) 75%),
  linear-gradient(0deg,rgba(var(--shade-rgb),.95) 0%,rgba(var(--shade-rgb),0) 45%),
  linear-gradient(180deg,rgba(var(--shade-rgb),.55) 0%,rgba(var(--shade-rgb),0) 25%)}
.hero-inner{padding-top:calc(var(--header-h) + 3rem);padding-bottom:clamp(7.5rem,15vh,10rem)}
.hero .display{max-width:13ch;text-shadow:0 2px 40px rgba(0,0,0,.35)}
.hero-eyebrow{opacity:0;animation:fadeUp 1s .2s var(--ease) forwards}
.hero-lead{max-width:33rem;margin:1.6rem 0 2.2rem;font-size:clamp(1.05rem,1rem + .4vw,1.3rem);color:rgba(var(--ink-rgb),.86)}
.hero .hero-lead,.hero .btn-row{opacity:0;animation:fadeUp 1.1s .75s var(--ease) forwards}
.hero .btn-row{animation-delay:.95s}
@keyframes fadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.hero-badge{position:absolute;right:max(var(--gutter),calc((100vw - 1560px) / 2));bottom:clamp(7rem,16vh,10rem);opacity:0;animation:fadeUp 1s 1.2s var(--ease) forwards}
.hero-badge .ct-badge{width:clamp(118px,11vw,150px)}
.hero-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:2rem;padding-top:1.3rem;padding-bottom:1.5rem;font-size:.78rem;letter-spacing:.06em;color:rgba(var(--ink-rgb),.78)}
.hero-bar::before{content:"";position:absolute;left:var(--gutter);right:var(--gutter);top:0;height:1px;background:var(--line2)}
.hero-bar p{display:flex;align-items:center;gap:.6rem;margin:0}
.hero-bar .i{width:16px;height:16px;color:var(--gold)}
.hero-status .dot,.open-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 0 rgba(120,200,140,.5)}
[data-open-status].is-open .dot{background:#7ccf8e;animation:pulse 2.2s infinite}
[data-open-status].is-closed .dot{background:var(--terra)}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(124,207,142,0)}100%{box-shadow:0 0 0 0 rgba(124,207,142,0)}}
.hero-scroll{margin-left:auto;width:1px;height:46px;background:var(--line2);position:relative;overflow:hidden}
.hero-scroll i{position:absolute;left:0;top:-50%;width:1px;height:50%;background:var(--gold);animation:scrollcue 2.2s var(--ease-io) infinite}
@keyframes scrollcue{to{top:100%}}

.phero{min-height:clamp(560px,78svh,860px)}
.phero--short{min-height:clamp(480px,62svh,680px)}
.phero--text{min-height:auto;padding-top:calc(var(--header-h) + clamp(4rem,10vw,8rem))}
.phero--text .phero-inner{padding-bottom:clamp(2rem,4vw,3rem)}
.phero-glow{position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 80% at 20% 0%,var(--glow),transparent 70%),radial-gradient(40% 50% at 90% 30%,rgba(192,88,58,.12),transparent 70%)}
.phero-inner{padding-top:calc(var(--header-h) + 3rem);padding-bottom:clamp(3.5rem,8vh,6rem)}
.phero .display{max-width:15ch}
.phero .hero-lead{margin-bottom:0}
.crumbs{display:flex;gap:.6rem;align-items:center;margin-bottom:1.6rem;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(var(--ink-rgb),.6)}
.crumbs a:hover{color:var(--gold2)}
.crumbs [aria-current]{color:var(--cream)}

/* ---------- marquee band ---------- */
.band-marquee{position:relative;padding:clamp(1.4rem,3vw,2.2rem) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg)}
.band-marquee .mq-words .mq-item{font-family:var(--serif);font-size:clamp(2.2rem,5.2vw,4.6rem);line-height:1.1;font-weight:400;color:var(--cream)}
.band-marquee .mq-words .mq-item em{color:var(--gold2)}
.band-marquee .mq-star{display:inline-grid;place-items:center;color:var(--gold)}
.band-marquee .mq-star .i{width:clamp(14px,1.6vw,22px);height:clamp(14px,1.6vw,22px)}
.mq-outline .mq-item{color:transparent!important;-webkit-text-stroke:1px rgba(var(--ink-rgb),.55)}
.mq-link:hover .mq-outline .mq-item{-webkit-text-stroke-color:var(--gold2)}
.band-marquee .mq-controls{position:absolute;right:var(--gutter);bottom:-1rem;z-index:2;margin:0}
.band-marquee .mq-pause{background:var(--bg)}

/* ---------- statement ---------- */
.sec-statement .sh-text{font-size:clamp(1.75rem,3.7vw,3.4rem);line-height:1.22}
.sec-statement .sh-sign{margin-top:2rem}
.statement-link{margin-top:2.4rem}

/* ---------- horizontal dishes ---------- */
.hz-section{background:linear-gradient(180deg,var(--bg),var(--bg2) 30%,var(--bg2) 70%,var(--bg))}
.hz-cap .hz-time{color:var(--gold2)}
.hz-hint{display:inline-flex;align-items:center;gap:.6rem}
.hz-end .btn{margin-top:1.4rem}

/* ---------- feature ---------- */
.feature{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2.5rem,7vw,7rem);align-items:center}
.feature-media{margin:0}
.feature-media .sm-shape{aspect-ratio:4/5;max-width:520px}
.feature-copy .body{max-width:34rem}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:2.2rem 0 2.4rem;padding:1.6rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.facts div{display:flex;flex-direction:column-reverse;gap:.35rem}
.facts dd{margin:0;font-family:var(--serif);font-size:clamp(2.2rem,3.6vw,3.2rem);line-height:1;color:var(--gold2)}
.facts dt{font-size:.78rem;color:var(--muted);line-height:1.4}

/* ---------- chapters (accordion) ---------- */
.sec-chapters{background:var(--bg2)}
.acc-foot{display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap;margin:0!important}
.acc-panel.is-active .acc-content{pointer-events:auto}

/* ---------- events (teaser rows) ---------- */
.ev-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.ev-row{border-bottom:1px solid var(--line)}
.ev-row a{position:relative;display:grid;grid-template-columns:7rem minmax(0,1fr) auto;align-items:center;gap:clamp(1rem,3vw,3rem);padding:clamp(1.4rem,2.6vw,2.2rem) clamp(.4rem,1.4vw,1.2rem);transition:background .5s,padding .6s var(--ease)}
.ev-row a::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--glow),transparent);opacity:0;transition:opacity .5s}
.ev-row a:hover::before,.ev-row a:focus-visible::before{opacity:1}
.ev-row a:hover{padding-left:clamp(1rem,2.4vw,2rem)}
.ev-date{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
.ev-date b{font-family:var(--serif);font-weight:400;font-size:clamp(2.8rem,4.4vw,4rem);color:var(--gold2)}
.ev-date span{margin-top:.4rem;font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}
.ev-main{display:grid;gap:.35rem}
.ev-tag{font-size:.64rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0}
.ev-title{font-family:var(--serif);font-size:clamp(1.6rem,2.6vw,2.4rem);line-height:1.05}
.ev-meta{font-size:.86rem;color:var(--muted)}
.ev-go{width:54px;height:54px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;color:var(--gold2);transition:background .4s,color .4s,border-color .4s,transform .5s var(--ease)}
.ev-row a:hover .ev-go{background:var(--gold);color:var(--on-gold);border-color:var(--gold);transform:rotate(-45deg)}

/* ---------- testimonials ---------- */
.sec-testimonials{text-align:center;overflow:hidden}
.sec-testimonials .sec-head{margin-bottom:1.4rem}
.rating-line{display:inline-flex;align-items:center;gap:.8rem;margin:0 auto 2.4rem;font-size:.82rem;letter-spacing:.06em;color:var(--muted)}
.stars{display:inline-flex;gap:3px;color:var(--gold)}
.tc-bigmark{display:block;font-family:var(--serif);font-size:clamp(7rem,14vw,12rem);line-height:.5;height:.42em;color:var(--gold);opacity:.55;margin-top:1rem}
.tc-solo{max-width:980px}
.tc-solo .tc-viewport{border-radius:0}
.tc-solo .tc-content{padding:0 clamp(.5rem,4vw,3rem)}
.tc-solo .tc-stars{justify-content:center}
.tc-solo .tc-quote p{font-size:clamp(1.5rem,3.1vw,2.6rem);line-height:1.28;font-weight:400}
.tc-solo .tc-who{justify-content:center;text-align:left;margin-top:2rem}
.tc-solo .tc-slide .tc-content>*{transition:opacity .7s .2s,transform .9s .2s var(--ease)}
.tc-solo .tc-slide:not(.is-current) .tc-content>*{opacity:0;transform:translateY(12px)}
.tc-arrow svg,.cf-arrow svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden;isolation:isolate;min-height:clamp(520px,82vh,820px);display:grid;place-items:center;text-align:center;padding:clamp(6rem,12vw,9rem) 0}
.cta-media{position:absolute;inset:-12% 0;z-index:-2}
.cta-media img{width:100%;height:100%;object-fit:cover;will-change:transform}
.cta-shade{position:absolute;inset:0;z-index:-1;background:radial-gradient(80% 70% at 50% 50%,rgba(var(--shade-rgb),.55),rgba(var(--shade-rgb),.88)),linear-gradient(180deg,var(--bg) 0%,rgba(var(--shade-rgb),0) 22%,rgba(var(--shade-rgb),0) 78%,var(--bg) 100%)}
.cta-inner .eyebrow{justify-content:center}
.cta-inner .eyebrow::after{content:"";width:28px;height:1px;background:currentColor;opacity:.7}
.cta-text{max-width:34rem;margin:1.4rem auto 2.4rem;color:rgba(var(--ink-rgb),.86);font-size:1.1rem}

/* ---------- menus page ---------- */
.sec-menus{padding-top:0}
.mtabs-wrap{position:sticky;top:0;z-index:20;background:rgba(var(--shade-rgb),.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);margin-bottom:clamp(3rem,6vw,5rem);transition:top .5s var(--ease)}
.header-shown .mtabs-wrap{top:var(--header-h)}
.mtabs{display:flex;gap:clamp(.4rem,2vw,2.4rem);overflow-x:auto;scrollbar-width:none}
.mtabs::-webkit-scrollbar{display:none}
.mtab{-webkit-appearance:none;appearance:none;flex:none;position:relative;margin:0;padding:1.15rem .2rem 1.1rem;border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;color:var(--muted);transition:color .3s}
.mtab-it{font-family:var(--serif);font-style:italic;font-size:clamp(1.3rem,2vw,1.7rem);line-height:1.1}
.mtab-en{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase}
.mtab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.mtab:hover{color:var(--cream)}
.mtab[aria-selected="true"]{color:var(--cream)}
.mtab[aria-selected="true"] .mtab-it{color:var(--gold2)}
.mtab[aria-selected="true"]::after{transform:scaleX(1)}
.js .mpanel[data-inactive]{display:none}
.mpanel{outline:none}
.mpanel + .mpanel{margin-top:5rem}
.js .mpanel + .mpanel{margin-top:0}
.mpanel.is-entering .mpanel-grid{animation:fadeUp .8s var(--ease)}
.mpanel-grid{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(2.5rem,6vw,6rem);align-items:start}
.mpanel-side{position:sticky;top:calc(var(--header-h) + 6.5rem)}
.mpanel-fig{margin:0 0 2rem;border-radius:200px 200px var(--radius) var(--radius);overflow:hidden;aspect-ratio:4/4.4;box-shadow:0 40px 80px -40px rgba(0,0,0,.8)}
.mpanel-fig img{width:100%;height:100%;object-fit:cover}
.mpanel-side .h2{margin-bottom:1rem}
.mpanel-when{display:flex;align-items:center;gap:.6rem;font-size:.84rem;color:var(--gold2);margin-bottom:1rem}
.mpanel-when .i{width:16px;height:16px}
.mgroup + .mgroup{margin-top:clamp(2.8rem,5vw,4rem)}
.mgroup-title{display:flex;align-items:center;gap:1.2rem;font-size:clamp(1.9rem,3vw,2.6rem);font-weight:400;font-style:italic;color:var(--cream);margin-bottom:1.2rem}
.mgroup-title::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--gold),transparent);opacity:.55}
.mgroup-note{font-size:.84rem;color:var(--muted);margin:-.4rem 0 1rem}
.mitems{list-style:none;margin:0;padding:0}
.mitem{padding:1.05rem 0;border-bottom:1px solid var(--line)}
.mitem-top{display:flex;align-items:baseline;gap:.8rem}
.mitem-name{font-family:var(--serif);font-size:clamp(1.3rem,1.8vw,1.55rem);font-weight:500;line-height:1.2}
.mitem-dots{flex:1;min-width:1.5rem;border-bottom:1px dotted rgba(var(--ink-rgb),.28);transform:translateY(-.3em)}
.mitem-price{font-family:var(--serif);font-size:clamp(1.2rem,1.6vw,1.4rem);color:var(--gold2);white-space:nowrap}
.mitem-desc{margin:.3rem 0 0;color:var(--muted);font-size:.93rem;max-width:34rem}
.mitem-tags{display:flex;gap:.35rem;margin:.55rem 0 0}
.tag{display:inline-grid;place-items:center;min-width:28px;height:20px;padding:0 .4rem;border:1px solid rgba(207,167,106,.45);border-radius:999px;font-size:.56rem;letter-spacing:.12em;text-decoration:none;color:var(--gold2);cursor:help}
.sig{display:inline-flex;align-items:center;gap:.35rem;vertical-align:middle;margin-left:.4rem;padding:.15rem .55rem;border-radius:999px;background:rgba(207,167,106,.14);font-family:var(--sans);font-size:.56rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold2)}
.sig .i{width:10px;height:10px}
.menu-foot{margin-top:clamp(3rem,6vw,5rem);padding-top:2rem;border-top:1px solid var(--line);display:grid;grid-template-columns:auto minmax(0,1fr);gap:2rem 4rem;font-size:.86rem;color:var(--muted)}
.legend{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,auto);gap:.6rem 1.6rem}
.legend li{display:flex;align-items:center;gap:.55rem}
.menu-foot p{margin:0;max-width:40rem}

/* hotspots layout */
.hs-layout{display:grid;grid-template-columns:minmax(0,.62fr) minmax(0,1.38fr);gap:clamp(2rem,5vw,5rem);align-items:center}
.sec-hotspots .hs{max-width:none;margin:0}

/* ---------- story / chef ---------- */
.story{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2.5rem,7vw,7rem);align-items:center}
.story-media{margin:0;position:relative}
.story-media .sm-shape{aspect-ratio:4/5.2}
.story-cap{margin-top:1rem;font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);text-align:center}
.story-quote{margin:0 0 2rem}
.story-quote .st-lg{font-size:clamp(1.8rem,3.2vw,2.9rem);line-height:1.15;color:var(--cream)}
.story-copy .body{max-width:38rem}
.sec-chef{background:var(--bg2);overflow:hidden}
.sec-chef .ct-layout{max-width:none}
.sec-chef .ct-side .body{margin-bottom:1.6rem}
.ct-star .i{width:40%;height:40%}
.ct-icon .i{width:20px;height:20px}
.ct-core .i{width:22px;height:22px}

/* ---------- reveal / team / stats / icons ---------- */
.sec-reveal{padding:clamp(2rem,4vw,3rem) 0}
.sec-team .hv-grid{max-width:none}
.sec-team .hv{aspect-ratio:4/5}
.sec-stats .ac-wrap{max-width:none}
.sec-icons{background:var(--bg2)}
.sec-icons .ld-icons-wrap{max-width:none}

/* ---------- gallery ---------- */
.sec-gallery{padding-top:calc(var(--sec) * .6)}
.gfilters{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{-webkit-appearance:none;appearance:none;margin:0;padding:.6rem 1.15rem;border:1px solid var(--line2);border-radius:999px;background:transparent;color:var(--muted);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:all .35s}
.chip:hover{color:var(--cream);border-color:var(--gold)}
.chip[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}
.ggrid{list-style:none;margin:0;padding:0;columns:4 260px;column-gap:clamp(.7rem,1.2vw,1.1rem)}
.gitem{break-inside:avoid;margin-bottom:clamp(.7rem,1.2vw,1.1rem)}
.gitem.is-hidden{display:none}
.gbtn{-webkit-appearance:none;appearance:none;position:relative;display:block;width:100%;margin:0;padding:0;border:0;border-radius:12px;overflow:hidden;background:var(--bg2);cursor:zoom-in;isolation:isolate}
.gbtn img{width:100%;transition:transform 1.1s var(--ease),filter .6s}
.gbtn::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(var(--shade-rgb),.85));opacity:0;transition:opacity .5s}
.gcap{position:absolute;left:1rem;right:3.6rem;bottom:.9rem;z-index:1;text-align:left;font-family:var(--serif);font-style:italic;font-size:1.25rem;line-height:1.1;color:#f3e9dc;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .6s var(--ease)}
.gzoom{position:absolute;right:.9rem;bottom:.9rem;z-index:1;width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--on-gold);display:grid;place-items:center;opacity:0;transform:scale(.6);transition:opacity .4s,transform .5s var(--ease)}
.gzoom .i{width:16px;height:16px}
.gbtn:is(:hover,:focus-visible) img{transform:scale(1.06)}
.gbtn:is(:hover,:focus-visible)::after,.gbtn:is(:hover,:focus-visible) .gcap,.gbtn:is(:hover,:focus-visible) .gzoom{opacity:1;transform:none}
@media (hover:none){.gbtn::after{opacity:1}.gcap{opacity:1;transform:none;font-size:1.05rem}}
.lightbox{position:fixed;inset:0;z-index:150;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;padding:clamp(1rem,4vw,3rem);background:rgba(var(--shade-rgb),.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.lightbox[hidden]{display:none}
.lightbox.is-open{animation:fadeIn .4s ease}
@keyframes fadeIn{from{opacity:0}}
.lb-fig{margin:0;display:grid;justify-items:center;gap:1rem;min-height:0;max-height:100%}
.lb-img{max-height:calc(100svh - 9rem);width:auto;max-width:100%;border-radius:10px;box-shadow:0 40px 90px -30px #000}
.lb-cap{font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--cream)}
.lb-close,.lb-prev,.lb-next{-webkit-appearance:none;appearance:none;margin:0;padding:0;width:52px;height:52px;border-radius:50%;border:1px solid var(--line2);background:rgba(var(--shade-rgb),.6);color:var(--cream);display:grid;place-items:center;cursor:pointer;transition:border-color .3s,color .3s}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{border-color:var(--gold);color:var(--gold2)}
.lb-close{position:absolute;top:clamp(.8rem,2vw,1.6rem);right:clamp(.8rem,2vw,1.6rem)}
.cf-section{overflow:hidden}

/* ---------- events page ---------- */
.sec-spaces{background:var(--bg2)}
.fb-grid--4{max-width:none}
.center-link{text-align:center;margin-top:3rem}
.evcards{display:grid;gap:clamp(1.4rem,3vw,2.4rem)}
.evcard{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:linear-gradient(150deg,rgba(var(--ink-rgb),.04),rgba(var(--ink-rgb),.01));scroll-margin-top:calc(var(--header-h) + 2rem)}
.evcard:nth-child(even) .evcard-media{order:2}
.evcard-media{position:relative;min-height:340px;overflow:hidden}
.evcard-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.evcard:hover .evcard-media img{transform:scale(1.05)}
.evcard-date{position:absolute;left:1.2rem;top:1.2rem;display:grid;justify-items:center;min-width:76px;padding:.7rem .8rem .65rem;border-radius:12px;background:rgba(var(--shade-rgb),.78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(207,167,106,.35);line-height:1}
.evcard-date b{font-family:var(--serif);font-weight:400;font-size:2.4rem;color:var(--gold2)}
.evcard-date span{margin-top:.3rem;font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;color:var(--cream)}
.evcard-body{padding:clamp(1.6rem,4vw,3.4rem);display:flex;flex-direction:column;justify-content:center}
.evcard-body .h3{margin:.4rem 0 .8rem}
.evcard-meta{display:flex;align-items:center;gap:.6rem;font-size:.86rem;color:var(--gold2);margin-bottom:1rem}
.evcard-meta .i{width:16px;height:16px}
.evcard-foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:1rem;padding-top:1.2rem;border-top:1px solid var(--line)}
.evcard-price{font-family:var(--serif);font-size:1.4rem}

/* ---------- forms ---------- */
.sec-form{scroll-margin-top:var(--header-h)}
.form-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2.5rem,6vw,6rem);align-items:start}
.form-intro{position:sticky;top:calc(var(--header-h) + 2rem)}
.quick{list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:.4rem}
.quick a{display:inline-flex;align-items:center;gap:.8rem;padding:.4rem 0;color:var(--cream);transition:color .3s}
.quick a:hover{color:var(--gold2)}
.quick .i{color:var(--gold)}
.form-card{position:relative;padding:clamp(1.4rem,3.6vw,3rem);border-radius:calc(var(--radius) + 4px);background:linear-gradient(160deg,var(--bg3),var(--bg2));border:1px solid rgba(207,167,106,.22);box-shadow:0 50px 90px -50px rgba(0,0,0,.9)}
.fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.15rem 1.1rem}
.field{grid-column:1/-1;display:grid;gap:.45rem;align-content:start}
.field--half{grid-column:span 1}
.field label{font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.req{color:var(--gold)}
.field input,.field select,.field textarea{-webkit-appearance:none;appearance:none;width:100%;margin:0;padding:.9rem 1rem;min-height:52px;border:1px solid var(--line2);border-radius:10px;background:rgba(var(--shade-rgb),.45);color:var(--cream);font:inherit;font-size:1rem;line-height:1.4;transition:border-color .3s,box-shadow .3s,background .3s}
.field textarea{resize:vertical;min-height:120px}
.field input:hover,.field select:hover,.field textarea:hover{border-color:rgba(var(--ink-rgb),.36)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(207,167,106,.18);background:rgba(var(--shade-rgb),.7)}
.field input[type="date"]{min-height:52px}
.field input::-webkit-calendar-picker-indicator{filter:invert(.8) sepia(.6) saturate(2) hue-rotate(-10deg);cursor:pointer}
.select{position:relative}
.select::after{content:"";position:absolute;right:1.1rem;top:50%;width:8px;height:8px;border-right:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.select select{padding-right:2.6rem;cursor:pointer}
.select option{background:var(--bg2);color:var(--cream)}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{border-color:var(--terra);box-shadow:0 0 0 3px rgba(192,88,58,.16)}
.ferr{margin:0;min-height:0;font-size:.8rem;color:#e58b6f}
.ferr:empty{display:none}
.fhint{margin:0;font-size:.78rem;color:var(--muted)}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-actions{margin-top:1.6rem;display:grid;gap:.8rem}
.form-legal{margin:0;font-size:.76rem;color:var(--muted);text-align:center}
.form-status{margin:.8rem 0 0;font-size:.85rem;color:#e58b6f}
.form-status:empty{display:none}
.form.is-sending .btn{pointer-events:none;opacity:.7}
.form.is-done > :not(.form-success){display:none}
.form-success{text-align:center;padding:clamp(1rem,4vw,3rem) 0;outline:none}
.form-success:not([hidden]){animation:fadeUp .8s var(--ease)}
.fs-ic{display:inline-grid;place-items:center;width:72px;height:72px;border-radius:50%;border:1px solid var(--gold);color:var(--gold2);margin-bottom:1.4rem}
.fs-ic svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:30;animation:draw 1s .3s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.fs-title{font-size:clamp(2rem,3.4vw,2.8rem);margin-bottom:.8rem}
.fs-text{color:var(--muted);max-width:28rem;margin:0 auto 1.4rem}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem);margin-bottom:clamp(1rem,2vw,1.6rem)}
.ccard{padding:clamp(1.5rem,3vw,2.4rem);border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(160deg,rgba(var(--ink-rgb),.045),rgba(var(--ink-rgb),.01))}
.ccard .h3{margin-bottom:.8rem}
.ccard .body{color:var(--cream)}
.open-pill{display:inline-flex;align-items:center;gap:.6rem;margin:0 0 1rem;padding:.4rem .9rem;border-radius:999px;border:1px solid var(--line2);font-size:.8rem}
.hours{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:1rem}
.hours th,.hours td{padding:.48rem 0;border-bottom:1px solid var(--line);text-align:left;font-weight:400;vertical-align:top}
.hours td{text-align:right;color:var(--muted)}
.hours tr.is-today th,.hours tr.is-today td{color:var(--gold2)}
.hours tr.is-today th::after{content:"Today";margin-left:.6rem;padding:.1rem .45rem;border-radius:999px;background:rgba(207,167,106,.16);font-size:.56rem;letter-spacing:.18em;text-transform:uppercase;vertical-align:middle}
.clist{list-style:none;margin:0;padding:0;display:grid;gap:.2rem}
.clist a{display:inline-flex;align-items:center;gap:.8rem;padding:.45rem 0;transition:color .3s;word-break:break-word}
.clist a:hover{color:var(--gold2)}
.clist .i{color:var(--gold)}
.social{list-style:none;margin:0;padding:0;display:flex;gap:.6rem}
.social a{width:44px;height:44px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;color:var(--cream);transition:all .35s}
.social a:hover{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}
.mapbox{position:relative;border-radius:calc(var(--radius) + 4px);overflow:hidden;border:1px solid var(--line);aspect-ratio:21/9;min-height:380px;background:var(--bg2)}
.map-art{position:absolute;inset:0;width:100%;height:100%}
.m-bg{fill:var(--bg2)}
.mg{stroke:rgba(var(--ink-rgb),.04)}
.m-sea{fill:rgba(90,120,140,.12)}
.m-blocks rect{fill:rgba(var(--ink-rgb),.045);stroke:rgba(var(--ink-rgb),.06)}
.m-park{fill:rgba(120,150,90,.12)}
.m-roads path{fill:none;stroke:rgba(var(--ink-rgb),.14);stroke-width:7}
.m-main{fill:none;stroke:rgba(207,167,106,.55);stroke-width:12}
.m-label{fill:rgba(var(--ink-rgb),.5);font:600 13px var(--sans);letter-spacing:.25em}
.m-label--s{font-size:10px;fill:rgba(var(--ink-rgb),.32)}
.mgl0{stop-color:rgba(207,167,106,.35)}.mgl1{stop-color:rgba(207,167,106,0)}
.m-pin-b{fill:var(--gold)}.m-pin-c{fill:var(--bg)}
.m-pulse{fill:none;stroke:var(--gold);stroke-width:2;transform-origin:0 0;animation:mpulse 2.4s ease-out infinite}
@keyframes mpulse{from{transform:scale(.3);opacity:1}to{transform:scale(2.2);opacity:0}}
.map-ui{position:absolute;left:clamp(1rem,3vw,2rem);bottom:clamp(1rem,3vw,2rem);max-width:min(520px,calc(100% - 2rem));padding:1.3rem 1.4rem;border-radius:16px;background:rgba(var(--shade-rgb),.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line)}
.map-addr{display:flex;align-items:center;gap:.6rem;font-family:var(--serif);font-size:1.3rem;margin-bottom:1rem}
.map-addr .i{color:var(--gold)}
.map-note{margin:.9rem 0 0;font-size:.74rem}
.mapbox iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(.6) invert(.9) hue-rotate(180deg) contrast(.9)}
.mapbox.is-live .map-art,.mapbox.is-live .map-ui{display:none}
.sec-skyline{padding-top:calc(var(--sec) * .5)}
.sec-skyline .ld-pano{max-width:1200px;margin:0 auto}
.skyline-cap{text-align:center;margin:1.2rem 0 0;font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.faq-layout{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.faq{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.4rem 0;cursor:pointer;font-family:var(--serif);font-size:clamp(1.3rem,2vw,1.7rem);line-height:1.2;transition:color .3s}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{color:var(--gold2)}
.faq-ic{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;color:var(--gold);transition:transform .5s var(--ease),background .3s}
.faq-item[open] .faq-ic{transform:rotate(45deg);background:rgba(207,167,106,.12)}
.faq-a p{margin:0 0 1.5rem;color:var(--muted);max-width:44rem}
.faq-item[open] .faq-a{animation:fadeUp .5s var(--ease)}

/* ---------- reservations ---------- */
.resv{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);min-height:100svh}
.resv-visual{position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate}
.resv-media{position:absolute;inset:0;z-index:-2}
.resv-media img{width:100%;height:100%;object-fit:cover}
.resv-visual .hero-shade{background:linear-gradient(0deg,rgba(var(--shade-rgb),.92),rgba(var(--shade-rgb),.1) 55%),linear-gradient(180deg,rgba(var(--shade-rgb),.6),transparent 25%)}
.resv-badge{position:absolute;right:clamp(1.5rem,4vw,3rem);top:calc(var(--header-h) + 2rem)}
.resv-badge .ct-badge{width:clamp(110px,10vw,140px)}
.resv-hours{position:absolute;left:clamp(1.5rem,4vw,3.5rem);right:clamp(1.5rem,4vw,3.5rem);bottom:clamp(1.5rem,4vw,3rem)}
.resv-main{padding:calc(var(--header-h) + clamp(2.5rem,6vw,5rem)) clamp(1.15rem,5vw,5rem) clamp(4rem,8vw,6rem)}
.resv-main .display{margin-bottom:1.2rem}
.resv-text{margin-bottom:2.2rem}
.resv-alt{margin:1.6rem 0 0;font-size:.92rem;color:var(--muted)}
.resv-alt a{color:var(--gold2);border-bottom:1px solid rgba(207,167,106,.4)}
.notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;margin-top:2.6rem;padding-top:2rem;border-top:1px solid var(--line)}
.note-t{font-family:var(--sans);font-size:.68rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:.5rem}
.note p{margin:0;font-size:.86rem;color:var(--muted);line-height:1.55}
.hours-list{list-style:none;margin:0;padding:0;font-size:.88rem}
.hours-list li{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-bottom:1px solid var(--line)}
.hours-list li span:last-child{color:var(--muted);text-align:right}
.hours-list .is-closed span:last-child{color:var(--muted)}

/* ---------- 404 ---------- */
.nf{min-height:100svh}
.nf-inner{padding-top:calc(var(--header-h) + 3rem);padding-bottom:clamp(4rem,12vh,8rem)}
.nf .display{max-width:14ch;margin-bottom:1.2rem}
.nf .hero-lead{margin-top:0}

/* ---------- footer ---------- */
.site-footer{position:relative;padding:clamp(4.5rem,9vw,7.5rem) 0 2rem;background:radial-gradient(70% 60% at 50% 0%,var(--glow),transparent 70%),var(--bg);border-top:1px solid var(--line);font-size:.92rem}
.ft-top{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;padding-bottom:clamp(3rem,6vw,4.5rem);margin-bottom:clamp(3rem,6vw,4.5rem);border-bottom:1px solid var(--line)}
.ft-big{margin:0;font-family:var(--serif);font-size:clamp(2.8rem,7vw,6.4rem);line-height:.95;letter-spacing:-.02em;max-width:12ch}
.ft-grid{display:grid;grid-template-columns:1.5fr repeat(4,minmax(0,1fr));gap:2.4rem}
.ft-brand p{color:var(--muted);max-width:22rem;margin:1.2rem 0 1.4rem}
.brand--ft .logo{height:54px}
.ft-h{font-family:var(--sans);font-size:.66rem;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:1.1rem}
.site-footer p{color:var(--muted)}
.ft-list{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.ft-list a,.ft-link{color:var(--muted);transition:color .3s;word-break:break-word}
.ft-list a:hover,.ft-link:hover{color:var(--gold2)}
.ft-link{display:inline-flex;align-items:center;gap:.4rem}
.ft-link .i{width:14px;height:14px}
.site-footer .hours-list{font-size:.84rem}
.site-footer .hours-list li{border-bottom:0;padding:.18rem 0;flex-direction:column;gap:0}
.site-footer .hours-list li span:last-child{text-align:left}
.ft-bottom{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:clamp(3rem,6vw,4.5rem);padding-top:1.6rem;border-top:1px solid var(--line);font-size:.8rem}
.ft-bottom p{margin:0}
.credit a{color:var(--cream);border-bottom:1px solid rgba(207,167,106,.45);transition:color .3s,border-color .3s}
.credit a:hover{color:var(--gold2);border-color:var(--gold2)}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .ft-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ft-brand{grid-column:1/-1}
  .contact-grid{grid-template-columns:1fr 1fr}
  .contact-grid .ccard:last-child{grid-column:1/-1}
}
@media (max-width:960px){
  .feature,.story,.hs-layout,.form-layout,.faq-layout,.mpanel-grid{grid-template-columns:1fr}
  .feature-media .sm-shape{max-width:440px;margin:0 auto}
  .story-media{max-width:420px;width:100%;margin:0 auto}
  .form-intro,.mpanel-side{position:static}
  .mpanel-fig{aspect-ratio:16/10;border-radius:var(--radius);max-height:360px}
  .resv{grid-template-columns:1fr}
  .resv-visual{position:relative;height:auto;min-height:62svh;display:flex;flex-direction:column;justify-content:flex-end}
  .resv-hours{position:relative;left:auto;right:auto;bottom:auto;padding:0 var(--gutter) 2rem;margin-top:auto}
  .resv-hours .eyebrow{margin-top:calc(var(--header-h) + 9rem)}
  .resv-main{padding-top:clamp(2.5rem,6vw,4rem)}
  .evcard{grid-template-columns:1fr}
  .evcard:nth-child(even) .evcard-media{order:0}
  .evcard-media{min-height:0;aspect-ratio:16/10}
  .menu-foot{grid-template-columns:1fr}
}
@media (max-width:760px){
  .hero-bar{gap:1rem;font-size:.72rem}
  .hero-addr{display:none!important}
  .hero-badge{bottom:auto;top:calc(var(--header-h) + 1rem);right:var(--gutter)}
  .hero-badge .ct-badge{width:96px}
  .hero .display{font-size:clamp(2.7rem,12vw,4rem)}
  .facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}
  .facts dd{font-size:2rem}
  .ev-row a{grid-template-columns:4.4rem minmax(0,1fr);row-gap:.6rem}
  .ev-go{display:none}
  .contact-grid{grid-template-columns:1fr}
  .mapbox{aspect-ratio:auto;min-height:520px}
  .map-ui{left:.8rem;right:.8rem;bottom:.8rem;max-width:none}
  .notes{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
  .field--half{grid-column:1/-1}
  .legend{grid-template-columns:repeat(2,auto)}
  .ggrid{columns:2 140px}
  .lightbox{grid-template-columns:1fr;grid-template-rows:1fr auto;justify-items:center}
  .lb-prev,.lb-next{position:absolute;bottom:1.2rem}
  .lb-prev{left:calc(50% - 64px)}.lb-next{right:calc(50% - 64px)}
  .lb-img{max-height:calc(100svh - 12rem)}
  .ft-grid{grid-template-columns:1fr 1fr;gap:2rem 1.4rem}
  .band-marquee .mq-controls{right:var(--gutter)}
  .mitem-name{font-size:1.25rem}
}
@media (max-width:420px){
  .ft-grid{grid-template-columns:1fr}
  .btn{padding:.85rem 1.3rem;letter-spacing:.16em}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .js .reveal{opacity:1;transform:none}
  .hero-img{transform:none}
}

/* =====================================================================
   v1.1 sections (approved Italian Restaurant plan)
   ===================================================================== */
/* logo placeholder (raster, caption baked in) */
/* --logo-h = resting header logo height; the mobile footer logo uses the same token so both render identically */
:root{--logo-h:58px}
@media (max-width:1180px){:root{--logo-h:52px}}
@media (max-width:520px){:root{--logo-h:46px}}
.logo{height:var(--logo-h);width:auto}
.brand--ft .logo{height:112px}

/* cinematic hero extras */
.cs-hero .eyebrow{margin-bottom:1.2rem}
.cs--full .cs-h{letter-spacing:-.02em}
.cs-actions .btn--ghost{background:rgba(var(--shade-rgb),.35);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.cs-bar{position:absolute;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:1rem;padding-bottom:1.6rem;font-size:.78rem;letter-spacing:.06em;color:rgba(var(--ink-rgb),.85)}
.cs-bar p{display:flex;align-items:center;gap:.6rem;margin:0}
.cs-bar .hero-addr{justify-content:flex-end}
.cs-bar .i{width:16px;height:16px;color:var(--gold)}
.cs-bar .cs-cue{position:static;transform:none}
.cs--short .crumbs{margin-bottom:1.6rem}
.cs--short .cs-h em{color:var(--gold2)}

/* intro */
.intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(2.5rem,7vw,7rem);align-items:center}
.intro-statement{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,3.6vw,3.4rem);line-height:1.12;letter-spacing:-.01em;margin:0 0 2rem;color:var(--cream)}
.intro-copy .body{max-width:36rem}
.intro-link{margin-top:2rem}
.intro-media{position:relative;margin:0;aspect-ratio:4/5;border-radius:220px 220px var(--radius) var(--radius);overflow:hidden;box-shadow:0 50px 90px -50px rgba(0,0,0,.9)}
.intro-media img{width:100%;height:118%;object-fit:cover;margin-top:-9%}
.intro-media figcaption{position:absolute;left:0;right:0;bottom:0;padding:3rem 1.2rem 1.1rem;background:linear-gradient(transparent,rgba(var(--shade-rgb),.85));font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;color:#f3e9dc;text-align:center}

/* events stack cards */
.sec-evstack .sk-card{background:linear-gradient(160deg,var(--bg3),var(--bg2))}
.ev-card .sk-media{position:relative}
.ev-when{display:flex;align-items:center;gap:.6rem;color:var(--cream)!important;font-size:.9rem}
.ev-when .i{color:var(--gold);flex:none}
.ev-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1.4rem;padding-top:1.1rem;border-top:1px solid var(--line)}
.ev-price{font-family:var(--serif);font-size:1.5rem;color:var(--gold2)}

/* gallery strip */
.sec-strip{overflow:hidden}
.sec-strip .mq-cards{margin:0}
.sec-strip .mq-card{width:clamp(180px,19vw,280px)}
.sec-strip .mq-controls{display:flex;justify-content:flex-end;margin-top:1rem}

/* mask CTA */
.sec-maskcta{position:relative;overflow:hidden;padding-bottom:var(--sec);background:radial-gradient(60% 50% at 50% 30%,var(--glow),transparent 70%)}
.sec-maskcta .mt-reveal{padding-bottom:clamp(2rem,6vh,4rem);text-align:center}
.sec-maskcta .reveal-line{font-size:clamp(2.6rem,11vw,11rem);display:inline-block}
.sec-maskcta .mt-reveal>.reveal-line{display:block;width:max-content;max-width:100%;margin:0 auto .06em}
.maskcta-foot{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.maskcta-copy .lead{max-width:30rem}
.maskcta-hours{padding:clamp(1.4rem,3vw,2.2rem);border:1px solid var(--line2);border-radius:var(--radius);background:rgba(var(--ink-rgb),.03)}
.no-js .mt-fill,.sec-maskcta .mt-fill{clip-path:inset(0 0 0 0)}
.js .sec-maskcta .mt-fill{clip-path:inset(0 100% 0 0)}
@media (prefers-reduced-motion:reduce){.js .sec-maskcta .mt-fill{clip-path:none}}

/* mask page hero (MENU / RESERVE) */
.mt-pagehero .mt-hero{min-height:clamp(560px,86svh,900px);padding:calc(var(--header-h) + 2rem) var(--gutter) clamp(3rem,7vh,5rem);overflow:hidden}
.mt-pagehero--short .mt-hero{min-height:clamp(480px,70svh,720px)}
.mt-pagehero .crumbs{justify-content:center;margin-bottom:1.4rem}
.mt-h1{margin:0;line-height:.8}
.mt-word{font-size:min(21rem,calc(86vw / (var(--chars) * .7)));letter-spacing:-.03em;line-height:.82;padding:0 .02em}
.mt-pagehero .mt-sub{max-width:34rem;font-size:clamp(1.15rem,1.8vw,1.6rem)}

/* wine 360 */
.sec-wine .r3-layout{max-width:none}  /* v1.2: follows the shared --container (logo left / CTA right) */
.wine-list{list-style:none;margin:clamp(3rem,6vw,5rem) auto 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem);max-width:none}
.wine-list li{padding:1.5rem 1.6rem;border:1px solid var(--line);border-radius:var(--radius);background:rgba(var(--ink-rgb),.03)}
.wine-list h4{margin:0 0 .4rem;font-family:var(--serif);font-weight:500;font-size:1.4rem;color:var(--cream)}
.wine-list p{margin:0 0 1rem;color:var(--muted);font-size:.92rem}
.wine-list span{font-family:var(--serif);font-size:1.25rem;color:var(--gold2)}
.wine-list small{font-family:var(--sans);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* notice */
.notice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(1.2rem,3vw,2.4rem);padding:clamp(1.8rem,4vw,3.4rem);border:1px solid var(--line2);border-radius:calc(var(--radius) + 6px);background:linear-gradient(160deg,var(--bg3),var(--bg2))}
.notice-ic{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line2);color:var(--gold)}
.notice-ic .i{width:26px;height:26px}
.notice .sec-head{margin-bottom:1.2rem}
.notice-copy .body{max-width:52rem}
.notice-actions{grid-column:2;margin-top:.6rem}

/* flip grids (3-up) */
.fb-grid--3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1180px}
.fb-price{margin:.4rem 0 0;font-family:var(--serif);font-size:1.6rem;color:var(--gold2)}
.fb-back .fb-price{margin:0 0 .8rem}
.acc-cap{display:flex;align-items:center;gap:.5rem;margin:0 0 .4rem;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold2)}
.acc-cap .i{width:16px;height:16px}

/* before/after */
.sec-ba .ba-main{max-width:1240px;margin:0 auto}

/* image trail */
.sec-trail .it-stage{border:1px solid var(--line);background:radial-gradient(70% 60% at 50% 50%,var(--glow),transparent 70%),var(--bg2)}
.sec-trail .w-note{text-align:center;color:var(--muted);font-size:.85rem;margin:1.2rem auto 0;max-width:40rem}
.it-kicker{font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold)}
.it-word em{color:var(--gold2)}

/* contact hero badge */
.phero--contact{position:relative}
.contact-badge{position:absolute;right:max(var(--gutter),calc((100vw - 1400px) / 2));bottom:clamp(3rem,10vh,6rem);z-index:2}
.ct-badge--xl{width:clamp(130px,13vw,190px)}

/* contact cards */
.ccards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
.ccard{position:relative;display:flex;flex-direction:column;gap:.2rem}
.ccard-ic{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin-bottom:1rem;border:1px solid var(--line2);color:var(--gold)}
.ccard-main{margin:0;font-family:var(--serif);font-size:clamp(1.4rem,1.9vw,1.75rem);line-height:1.15;color:var(--cream)}
.ccard-main a{transition:color .3s}.ccard-main a:hover{color:var(--gold2)}
.ccard-email{font-size:clamp(1.05rem,1.35vw,1.3rem);word-break:break-word}
.ccard .small{color:var(--muted);margin:.4rem 0 1rem}
.ccard .link-arrow{margin-top:auto}
.ccard-social{margin-top:auto;display:flex;align-items:center;gap:1rem}
.ccard-social .eyebrow{margin:0}

/* hours */
.hours-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.hours--lg{font-size:1.02rem}
.hours--lg th,.hours--lg td{padding:1rem 0}
.hours--lg th{font-family:var(--serif);font-size:1.35rem;color:var(--cream)}
.hours--lg td{color:var(--cream)}
.hours--lg td.is-off{color:var(--muted)}
.hours-k{display:inline-block;margin-right:.7rem;font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}

/* map */
.sec-map{padding-top:0}

/* directions */
.dir-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
.dir{padding:clamp(1.4rem,2.6vw,2rem);border-top:1px solid var(--gold)}
.dir-ic{display:inline-grid;place-items:center;width:52px;height:52px;margin-bottom:1.1rem;color:var(--gold2)}
.dir-ic .i{width:34px;height:34px;stroke-width:1.2}
.dir h3{font-family:var(--serif);font-weight:500;font-size:1.5rem;margin:0 0 .5rem}
.dir p{margin:0;color:var(--muted);font-size:.94rem}

/* booking */
.sec-booking{padding-top:clamp(2rem,5vw,4rem)}
.booking{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.75fr);gap:clamp(1.6rem,4vw,3.5rem);align-items:start}
.booking-card .sec-head{margin-bottom:.8rem}
.booking-card>.body{margin-bottom:2rem;color:var(--muted)}
.booking-side{position:sticky;top:calc(var(--header-h) + 1.5rem);display:grid;gap:1.4rem}
.bside-block{padding:1.5rem 1.6rem;border:1px solid var(--line);border-radius:var(--radius)}
.bside-block p{margin:0}
.bside-block .eyebrow{margin-bottom:.9rem}
.bside-block .open-pill{margin-bottom:.9rem}

/* policies */
.pol-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
.pol{padding:clamp(1.5rem,2.6vw,2.2rem);border:1px solid var(--line);border-radius:var(--radius);background:rgba(var(--ink-rgb),.025)}
.pol-n{display:block;font-family:var(--serif);font-style:italic;font-size:2.6rem;line-height:1;color:var(--gold);margin-bottom:1rem}
.pol h3{font-family:var(--serif);font-weight:500;font-size:1.45rem;margin:0 0 .6rem}
.pol p{margin:0;color:var(--muted);font-size:.93rem}

/* groups */
.groups{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2.5rem,7vw,7rem);align-items:center}
.groups-media{margin:0;aspect-ratio:5/4;border-radius:var(--radius);overflow:hidden;box-shadow:0 50px 90px -50px rgba(0,0,0,.9)}
.groups-media img{width:100%;height:118%;object-fit:cover;margin-top:-9%}

/* call us */
.sec-callus{background:radial-gradient(50% 70% at 50% 100%,var(--glow),transparent 70%);border-top:1px solid var(--line)}
.callus{text-align:center}
.callus .lead{margin:0 auto 2.4rem;max-width:36rem}
.callus-row{display:flex;justify-content:center;gap:clamp(1rem,3vw,2rem);flex-wrap:wrap}
.callus-big{display:flex;align-items:center;gap:1rem;padding:1.2rem 1.8rem 1.2rem 1.4rem;border:1px solid var(--line2);border-radius:999px;transition:border-color .3s,background .3s}
.callus-big:hover{border-color:var(--gold);background:rgba(207,167,106,.08)}
.callus-big .i{width:28px;height:28px;color:var(--gold)}
.callus-big span{display:grid;text-align:left;font-family:var(--serif);font-size:clamp(1.5rem,2.6vw,2.2rem);line-height:1.05;color:var(--cream)}
.callus-big small{font-family:var(--sans);font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}

/* gallery masonry with hover tiles */
.sec-gallery{padding-top:clamp(1rem,3vw,2rem)}
.sec-gallery .gfilters{margin-bottom:clamp(1.8rem,4vw,3rem)}
.chip-n{margin-left:.5rem;opacity:.6;font-size:.9em}
.gmason .hv{aspect-ratio:auto;border-radius:12px;box-shadow:0 30px 60px -36px rgba(0,0,0,.85)}
.gmason .hv-media{position:relative;inset:auto;display:block}
.gmason .hv-media img{height:auto}
.gmason .hv-cap{left:1rem;right:3.6rem;bottom:.9rem;text-align:left}
.gmason .hv-cap strong{font-size:clamp(1.15rem,1.5vw,1.4rem)}
.gmason .gbtn::after{display:none}
.gmason .gbtn:is(:hover,:focus-visible) img{transform:scale(1.1)}
@media (hover:none){.gmason .hv-zoom .hv-cap{transform:none}}

/* footer: newsletter + nav */
.ft-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,.9fr) minmax(0,1.35fr)}
.ft-h--2{margin-top:2rem}
.ft-news p{margin:0 0 1.2rem}
.form--compact .inline-row{display:flex;gap:.5rem;padding:.35rem;border:1px solid var(--line2);border-radius:999px;background:rgba(var(--ink-rgb),.04);transition:border-color .3s}
.form--compact .inline-row:focus-within{border-color:var(--gold)}
.form--compact input{flex:1;min-width:0;border:0!important;background:transparent!important;padding:.6rem .9rem!important;box-shadow:none!important;color:var(--cream);font:inherit;font-size:.9rem}
.form--compact input:focus{outline:none}
.form--compact .btn{flex:none}
.form--compact .ferr{margin:.5rem 0 0 1rem}
.form--compact .form-success{display:flex;gap:.9rem;align-items:flex-start;text-align:left;padding:1rem 1.1rem;border:1px solid var(--line2);border-radius:var(--radius)}
.form--compact .form-success[hidden]{display:none}
.form--compact.is-done .field{display:none}
.form--compact .fs-title{font-size:1.2rem;margin:0 0 .2rem}
.form--compact .fs-text{margin:0;font-size:.85rem}
.ft-nav{margin-top:clamp(2.5rem,5vw,3.5rem)}
.ft-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem 2rem}
.ft-nav a{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);transition:color .3s}
.ft-nav a:hover{color:var(--gold2)}

@media (max-width:1100px){
  .ft-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ft-brand,.ft-news{grid-column:auto}
  .ccards,.dir-grid,.pol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fb-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:960px){
  .intro,.groups,.hours-layout,.booking,.maskcta-foot{grid-template-columns:1fr}
  .intro-media{max-width:420px;width:100%;margin:0 auto;order:-1}
  .booking-side{position:static}
  .wine-list{grid-template-columns:1fr}
}
@media (max-width:760px){
  .cs-bar{grid-template-columns:1fr auto;font-size:.72rem}
  .cs-bar .hero-addr{display:none}
  .cs-h{font-size:clamp(5rem,30vw,8rem)}
  [data-cinematic="short"] .cs-h{font-size:clamp(2.6rem,11vw,4rem)}
  .contact-badge{bottom:auto;top:calc(var(--header-h) + 1rem)}
  .ct-badge--xl{width:104px}
  .ccards,.dir-grid,.pol-grid,.fb-grid--3{grid-template-columns:1fr}
  .notice{grid-template-columns:1fr}
  .notice-actions{grid-column:auto}
  .callus-big{width:100%;justify-content:center}
  .ft-grid{grid-template-columns:1fr}
  /* v1.3 mobile footer: logo = header logo size; no footer nav row (the burger menu covers it); copyright row stays */
  .brand--ft .logo{height:var(--logo-h)}
  .ft-nav{display:none}
}
.mapbox{width:100%}
.band-marquee{overflow-x:clip}
.maskcta-hours .eyebrow,.bside-block .eyebrow{display:flex}
.maskcta-hours .open-pill,.bside-block .open-pill{display:flex;width:fit-content}
.maskcta-copy .btn-row{margin-top:1.8rem}
.sec-maskcta .mt-reveal{padding-top:clamp(4rem,14vh,9rem)}
@media (max-width:520px){.cs-title .eyebrow{font-size:.58rem;letter-spacing:.2em}.cs-title .eyebrow::before{display:none}}
/* overrides of widget CSS need higher specificity (widget files load after base.css) */
.fb-grid.fb-grid--3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1180px}
.contact-badge .ct-badge--xl{width:clamp(130px,13vw,190px)}
@media (max-width:1100px){.fb-grid.fb-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.fb-grid.fb-grid--3{grid-template-columns:1fr}.contact-badge .ct-badge--xl{width:104px}}
.phero--text{position:relative;overflow:hidden}
.phero-word{position:absolute;right:-.04em;bottom:-.18em;z-index:-1;font-family:var(--serif);font-style:italic;font-size:clamp(7rem,21vw,22rem);line-height:1;letter-spacing:-.03em;color:transparent;-webkit-text-stroke:1px rgba(207,167,106,.22);pointer-events:none;white-space:nowrap}
@media (max-width:760px){.phero-word{font-size:clamp(5rem,30vw,9rem);bottom:-.12em}}
[data-cinematic="short"] .cs-title{text-shadow:0 2px 26px rgba(0,0,0,.55)}
@media (max-width:760px){
  [data-cinematic="short"] .cs-shade{background:linear-gradient(0deg,rgba(var(--shade-rgb),.96) 8%,rgba(var(--shade-rgb),.62) 55%,rgba(var(--shade-rgb),.4)),linear-gradient(180deg,rgba(var(--shade-rgb),.55),transparent 22%)}
}
@media (max-width:600px){
  .hours--lg thead.sr-only{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;clip-path:none;white-space:normal}
  .hours--lg thead th{font-family:var(--sans);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);padding:.2rem 0 .6rem;text-align:right}
  .hours--lg thead th:first-child{text-align:left}
  .hours--lg .hours-k{display:none}
  .hours--lg th{font-size:1.1rem}
  .hours--lg td{white-space:nowrap;font-size:.86rem;padding-left:.8rem}
}

/* ---------- Home video hero: Scroll indicator can never collide with the buttons (v1.1.1) ----------
   The hero is a 2-row grid: row 1 = centred content (title / pinned lines), row 2 = status · Scroll · address bar,
   in normal flow. Header height is reserved at the top, a minimum 56px gap above the bar, and the hero grows
   (min-height instead of a fixed height) if the content ever needs more room than the viewport. */
.cs--full .cs-hero{height:auto;min-height:100vh;min-height:100svh;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);place-items:center;padding-top:var(--header-h)}
.cs--full .cs-title,.cs--full .cs-lines{grid-row:1;grid-column:1;padding-top:clamp(1rem,4vh,2.5rem);padding-bottom:clamp(3.5rem,8vh,5.5rem)}
.cs--full .cs-h{font-size:min(22vw,20rem,30svh)}
.cs--full .cs-bar{position:relative;left:auto;right:auto;bottom:auto;grid-row:2;grid-column:1;width:100%;align-self:end;padding-top:0;padding-bottom:clamp(1rem,3vh,1.6rem)}
.cs--full .cs-cue{gap:.6rem}
.cs--full .cs-cue i{height:clamp(28px,6vh,56px)}
@media (max-width:760px){.cs--full .cs-h{font-size:min(30vw,8rem,22svh)}}
/* short viewports (laptops with browser chrome, small phones): tighten the stack */
@media (max-height:760px){
  .cs--full .cs-title .eyebrow{margin-bottom:.8rem}
  .cs--full .cs-sub{margin-top:.6rem}
  .cs--full .cs-actions{margin-top:1.4rem}
  .cs--full .cs-title,.cs--full .cs-lines{padding-bottom:3.5rem}
}
/* very short (landscape phones): drop the Scroll cue, keep the info bar */
@media (max-height:560px){
  .cs--full .cs-cue{display:none}
  .cs--full .cs-bar{grid-template-columns:1fr 1fr}
  .cs--full .cs-title,.cs--full .cs-lines{padding-bottom:2.5rem}
}

/* ---------- Header v1.1.1: transparent over heroes, fixed, darkens + compacts on scroll ---------- */
:root{--header-h-s:68px}
@media (max-width:1100px){:root{--header-h-s:62px}}
html{scroll-padding-top:calc(var(--header-h-s) + 16px)}
.hdr-sentinel{position:absolute;top:0;left:0;width:1px;height:64px;opacity:0;pointer-events:none}
.site-header{background:rgba(var(--shade-rgb),0);box-shadow:0 0 0 rgba(0,0,0,0);transition:height .3s var(--ease),background-color .3s ease,border-color .3s ease,box-shadow .3s ease,-webkit-backdrop-filter .3s ease,backdrop-filter .3s ease}
.site-header.is-hidden{transform:none}
/* soft top gradient: keeps logo + nav legible over bright hero media */
.site-header::before{inset:0 0 -56px;background:linear-gradient(180deg,rgba(var(--shade-rgb),.78),rgba(var(--shade-rgb),.38) 55%,rgba(var(--shade-rgb),0));transition:opacity .3s ease}
.site-header.is-solid{height:var(--header-h-s);background:rgba(var(--shade-rgb),.8);-webkit-backdrop-filter:blur(16px) saturate(1.25);backdrop-filter:blur(16px) saturate(1.25);border-bottom-color:var(--line);box-shadow:0 12px 32px -20px rgba(0,0,0,.85)}
.site-header.is-solid::before{opacity:0}
.logo{transition:height .3s var(--ease)}
.site-header.is-solid .logo{height:46px}
.site-header.is-solid .hdr-cta{transition:padding .3s var(--ease)}
@media (max-width:1180px){.site-header.is-solid .logo{height:42px}}
@media (max-width:520px){.site-header.is-solid .logo{height:38px}}
/* sticky UI below the header follows the compact height (it only sticks once the page is scrolled) */
.mtabs-wrap,.header-shown .mtabs-wrap{top:var(--header-h-s)}
.sec-form{scroll-margin-top:var(--header-h-s)}
.form-intro{top:calc(var(--header-h-s) + 2rem)}
.booking-side{top:calc(var(--header-h-s) + 1.5rem)}
.mpanel-side{top:calc(var(--header-h-s) + 6.5rem)}
/* mobile menu open: header blends into the menu panel in both states; panel reveal starts at the burger */
body.menu-open .site-header{background:transparent;border-bottom-color:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
body.menu-open .site-header::before{opacity:0}
body.header-solid .mnav-bg{clip-path:circle(0 at calc(100% - var(--gutter) - 22px) calc(var(--header-h-s) / 2))}
body.header-solid .mnav.is-open .mnav-bg{clip-path:circle(150% at calc(100% - var(--gutter) - 22px) calc(var(--header-h-s) / 2))}
@media (max-width:520px){
  body.header-solid .mnav-bg{clip-path:circle(0 at calc(100% - var(--gutter) - 21px) calc(var(--header-h-s) / 2))}
  body.header-solid .mnav.is-open .mnav-bg{clip-path:circle(150% at calc(100% - var(--gutter) - 21px) calc(var(--header-h-s) / 2))}
}
.site-header:not(.is-solid) .nav a{text-shadow:0 1px 14px rgba(0,0,0,.6)}

/* ---------- Container v1.2: ONE container for the header and every section ----------
   --container (content width) + --gutter (side padding) drive .hdr, .wrap and every page-level layout, so content
   lines up with the logo on the left and Book a Table / the menu button on the right at every viewport.
   Widget blocks inside the container fill it (their own library max-widths were narrower and inset them);
   full-bleed media (hero video, marquees, coverflow, horizontal scroll track, image trail) stays full-bleed. */
:root{--container:1440px;--max:var(--container)}
.hdr{max-width:calc(var(--container) + var(--gutter) * 2)}
.hero-badge,.contact-badge{right:max(var(--gutter),calc((100vw - var(--container)) / 2))}
.wrap :is(.fb-grid,.fb-grid.fb-grid--3,.it-stage,.st-grid,.sm-reveal,.accordion,.sk-stack,.ba-main,.ba-row,.ld-pano,.ct-layout,.mt-words,.sh-wrap),
.sec-ba .ba-main,.sec-skyline .ld-pano{max-width:none}
/* blocks that sit outside a .wrap follow the same container */
.cf-section>.sec-head{width:min(52rem,calc(100% - var(--gutter) * 2))}
.mt-pagehero .mt-hero{padding-left:max(var(--gutter),calc((100% - var(--container)) / 2));padding-right:max(var(--gutter),calc((100% - var(--container)) / 2));container-type:inline-size}
.mt-pagehero .mt-word{font-size:min(21rem,calc(90cqi / (var(--chars) * .74)))}
/* horizontal-scroll story: the intro starts on the container's left edge (the track itself stays full-bleed) */
.hz-section .hz-track{padding-left:max(var(--gutter),calc((100vw - var(--container)) / 2));padding-right:max(var(--gutter),calc((100vw - var(--container)) / 2))}
.hz-section.is-static .hz-track{scroll-padding-left:max(var(--gutter),calc((100vw - var(--container)) / 2))}
/* long e-mail addresses wrap inside their card instead of overflowing it */
.ccard-main a,.ccard-email,.ccard-email a{overflow-wrap:anywhere}
.ccard-social{flex-wrap:wrap;row-gap:.7rem}
/* full-viewport image page hero (config: hero section "height": "full"): 100vh, 100svh where supported so mobile
   browser bars never make it jump; content taller than the screen grows it. Same seam-free edge as the video heroes. */
.phero--vh{min-height:100vh;min-height:100svh}
.phero--image .hero-media,.phero--image .hero-shade{inset:-2px}
.phero--image::after{content:"";position:absolute;left:-2px;right:-2px;bottom:-2px;height:clamp(110px,22%,260px);z-index:-1;pointer-events:none;background:linear-gradient(180deg,transparent,var(--bg) 88%)}
/* live map (Contact #map): interactive from page load, dark-styled frame, compact card with a real Google Maps link */
.mapwrap{position:relative}
.mapbox{aspect-ratio:21/9;min-height:420px;box-shadow:0 30px 60px -40px rgba(0,0,0,.8)}
.mapbox iframe{display:block}
.mapwrap .map-ui{position:absolute;left:clamp(.8rem,2vw,1.4rem);bottom:clamp(.8rem,2vw,1.4rem);right:auto;max-width:calc(100% - 1.6rem);display:flex;align-items:center;flex-wrap:wrap;gap:.7rem 1.2rem;padding:.75rem .8rem .75rem 1.1rem;border-radius:14px;border:1px solid var(--line);background:rgba(var(--shade-rgb),.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.mapwrap .map-addr{margin:0;font-size:1.08rem}
@media (max-width:760px){
  .mapbox{aspect-ratio:auto;height:min(68svh,520px);min-height:360px}
  .mapwrap .map-ui{position:static;max-width:none;margin-top:.9rem;padding:1rem 1.1rem;justify-content:space-between}
}
@media (min-width:761px){.mapwrap .map-ui{left:auto;bottom:auto;right:clamp(.8rem,2vw,1.4rem);top:clamp(.8rem,2vw,1.4rem)}}
/* image page hero parallax moves the media down by 25% of the scroll; extend it upward so it still covers the hero's top */
.phero--image .hero-media{top:calc(-26% - 2px)}

/* =====================================================================
   Light theme (v1.3). Theme rules are written ".theme-light <selector>": switchable demo builds keep them,
   a locked "light" build makes them unconditional, a locked "dark" build drops them (build.mjs).
   ===================================================================== */
/* photo/video-led areas keep a dark "on-media" palette (m-* keys of brand.themes.light): light type on a dark scrim */
.theme-light .on-media{--cream:var(--m-cream);--muted:var(--m-muted);--ink-rgb:var(--m-ink-rgb);--shade-rgb:var(--m-shade-rgb);--gold:var(--m-gold);--gold2:var(--m-gold2);--on-gold:var(--m-on-gold);--line:rgba(var(--m-ink-rgb),.12);--line2:rgba(var(--m-ink-rgb),.2);color:var(--cream)}
/* header: transparent with a soft ivory veil at the top (::before, from --shade-rgb); ivory glass at ~88% once scrolled */
.theme-light .site-header.is-solid{background:rgba(var(--bg-rgb),.88);box-shadow:0 14px 34px -24px rgba(74,52,28,.38)}
.theme-light .nav a{color:rgba(var(--ink-rgb),.78)}
/* surfaces: raised ivory cards with a warm shadow instead of tinted panels */
.theme-light .ccard{background:linear-gradient(160deg,#fffdf9,#fbf6ee);border-color:rgba(var(--ink-rgb),.08);box-shadow:var(--card-shadow)}
.theme-light .pol{background:linear-gradient(160deg,#fffdf9,#fbf6ee);border-color:rgba(var(--ink-rgb),.08);box-shadow:var(--card-shadow)}
.theme-light .wine-list li{background:linear-gradient(160deg,#fffdf9,#fbf6ee);border-color:rgba(var(--ink-rgb),.08);box-shadow:var(--card-shadow)}
.theme-light .maskcta-hours{background:rgba(255,253,249,.82);border-color:rgba(var(--ink-rgb),.1);box-shadow:var(--card-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.theme-light .notice{background:linear-gradient(160deg,#fffdf9,#f5ecdf);border-color:rgba(135,96,31,.2);box-shadow:var(--card-shadow)}
.theme-light .form-card{background:linear-gradient(160deg,#fffdf9,#f8f1e6);border-color:rgba(135,96,31,.2);box-shadow:0 1px 0 rgba(255,255,255,.8) inset,0 50px 90px -50px rgba(74,52,28,.42)}
.theme-light .callus-big{background:rgba(255,253,249,.7);box-shadow:var(--card-shadow)}
.theme-light .callus-big:hover{background:#fffdf9}
/* forms: light native controls (date picker, select) */
.theme-light .field input,.theme-light .field select,.theme-light .field textarea{background:rgba(255,255,255,.78);border-color:rgba(var(--ink-rgb),.18)}
.theme-light .field input:focus,.theme-light .field select:focus,.theme-light .field textarea:focus{background:#fff;box-shadow:0 0 0 3px rgba(135,96,31,.16)}
.theme-light .select option{background:#fff}
.theme-light .form--compact .inline-row{background:rgba(255,255,255,.75)}
/* map: natural, warm-toned tiles (the dark theme inverts them) in a card-like frame */
.theme-light .mapbox{border-color:rgba(var(--ink-rgb),.12);box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 30px 60px -40px rgba(74,52,28,.5)}
.theme-light .mapbox iframe{filter:grayscale(.3) sepia(.2) saturate(.92) contrast(.96)}
.theme-light .mapwrap .map-ui{box-shadow:0 18px 40px -24px rgba(74,52,28,.45)}

/* 2026-10-15 standing rule: light/dark lives only in the header icon; never an in-menu theme row */
.mnav-theme{display:none!important}

/* 2026-10-19 kit fix (QA: sideways scroll on Samsung phones). body{overflow-x:clip} alone is not enough on mobile:
   it is passed up to the viewport, which some phone browsers (Samsung Internet, iOS Safari) still let you pan sideways.
   Putting the guard on <html> keeps body's clip on the page box itself, so nothing can stick out to the right.
   Sticky sections still work (html's overflow goes to the viewport, body clip makes no scroll box).
   Long unbroken text (emails, web addresses) wraps instead of pushing the page wider. */
html{overflow-x:hidden}
body{overflow-x:clip;max-width:100%}
:where(img,video,iframe,canvas){max-width:100%}
:where(h1,h2,h3,h4,h5,h6,p,li,dd,dt,td,th,address,blockquote,figcaption,label,a){overflow-wrap:break-word}
/* Root cause found on demo-017 About (360 px): the counter numbers never wrap (white-space:nowrap), so a value with a
   long suffix such as "12 months" in the two-column phone grid is wider than its card and pushes the page sideways.
   Same class: buttons never wrap, so a long label ("Book a free discovery call") widens its card at 320 px. */
@media (max-width:760px){.ac-stat{min-width:0}} /* counters: no wrap, see Steakhouses counter fix */
@media (max-width:520px){.btn.btn{white-space:normal;max-width:100%;text-align:center}}
/* Italian kit (same 2026-10-19 fix): the large opening-hours table keeps both time columns on one line and adds a
   "Today" badge to the day name, so at 320 px the row is wider than the screen (contact page 338 px). Let the badge sit
   under the day name on small phones and let a time range wrap if it still does not fit. */
@media (max-width:400px){.hours--lg tr.is-today th::after{display:table;margin:.35rem 0 0}.hours--lg td{white-space:normal}}
/* 2026-10-19b kit fix (QA demo-010: gallery captions too big on phones, labels overlapping captions). In the 2-column phone
   masonry the tiles are ~110 px tall, so the desktop caption size filled the whole tile and the tight line height let the
   italic caption run into its category label. Smaller caption, more line height, at most 3 lines, full tile width. */
@media (max-width:640px){
  .gmason .hv-cap{left:.75rem;right:.75rem;bottom:.7rem}
  .gmason .hv-cap strong{font-size:1rem;line-height:1.22;overflow-wrap:normal;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .gmason .hv-eff{margin-bottom:.45rem;line-height:1.4}
}
/* 2026-10-19d kit fix (optional public email): Follow-only card and 2-3 card rows. Only used when a site has no public email
   (or hides the Telehealth card); sites with an email are unchanged. */
.ccard--follow .ccard-social{margin-top:0;flex-direction:column;align-items:flex-start}
@media (min-width:1101px){.ccards--n3{grid-template-columns:repeat(3,minmax(0,1fr))}.ccards--n2{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 2026-10-19f kit fix (QA row 41): text logo of the business name when there is no business logo (never the Plusto mark). */
.logo.logo--text{display:block;height:auto;max-height:none;max-width:min(17ch,52vw);font-family:var(--serif);font-size:clamp(1.12rem,1.9vw,1.55rem);line-height:1.08;letter-spacing:.01em;color:currentColor;white-space:normal;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.site-header.is-solid .logo.logo--text,.brand .logo.logo--text{height:auto;max-height:none}
.brand--ft .logo.logo--text{font-size:clamp(1.5rem,3vw,2.2rem);max-width:18ch;height:auto}
/* 2026-10-19f kit fix (QA row 42): open phone menu, a clear gap between the header (and demo bar) and "01 Home". */
@media (max-width:1180px){.mnav-inner{padding-top:calc(var(--header-h) + max(3vh,28px))}html:has(.site-notice) .mnav-inner{padding-top:calc(var(--header-h) + var(--notice-h,40px) + max(3vh,28px))}}

/* Caption contrast fix 20 Oct 2026: the caption on the intro photo sits on its own dark chip, so it reads at 4.5:1 or better on any photo, light or dark theme */
.sec-intro .intro-media figcaption{left:1rem;right:auto;bottom:1rem;max-width:calc(100% - 2rem);padding:.6rem .9rem;background:rgba(14,12,11,.82);color:#f7f4ee;line-height:1.4;border-radius:3px}

/* ---------- TOP BAR (Plusto 20261021; Admin option brand.topBar = off | dark | site; off = no markup at all) ----------
   Thin contact bar above the header, in normal flow so it scrolls away. The fixed header sits at --tb-y (bar height
   at the top, 0 once the bar has scrolled off; set by site.js; no-JS fallback keeps it under the bar). */
.topbar{position:relative;z-index:101;font-size:.8rem;line-height:1.2;--tb-fg:#e8edf3;--tb-bg:#0a1220;--tb-ic:#cfd8e3;background:var(--tb-bg);color:var(--tb-fg)}
.topbar--site{--tb-bg:var(--bg2);--tb-fg:var(--cream);--tb-ic:var(--gold);border-bottom:1px solid var(--line,rgba(127,127,127,.18))}
.tb-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:38px;width:100%;max-width:calc(1560px + var(--gutter,1.5rem) * 2);margin-inline:auto;padding:0 var(--gutter,1.5rem);box-sizing:border-box}
.tb-addr{display:flex;align-items:center;gap:.5rem;margin:0;min-width:0}
.tb-addr span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-r{display:flex;align-items:center;gap:.25rem 1.4rem;margin:0;padding:0;list-style:none;flex:none}
.tb-r a{display:inline-flex;align-items:center;gap:.45rem;color:inherit;text-decoration:none;white-space:nowrap;min-height:38px}
.tb-r a:hover,.tb-r a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.topbar a:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:3px}
.topbar svg{flex:none;color:var(--tb-ic)}
.tb-so a{min-width:28px;justify-content:center}
html.has-topbar .site-header{top:var(--tb-y,38px)}
@media (max-width:720px){
  .tb-addr{display:none}
  .tb-in{justify-content:center;min-height:36px}
  .tb-r{gap:.2rem 1rem;flex-wrap:wrap;justify-content:center}
  .tb-r a{min-height:36px}
  html.has-topbar .site-header{top:var(--tb-y,36px)}
}
@media (max-width:420px){.tb-ph2 .tb-t,.tb-wa .tb-t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.tb-r a{min-width:36px;justify-content:center}}


/* ==== Cooking classes layer (2026-10-23): type + colour matched to the "French cooking classes" hero (Playfair Display 600, Jost body, navy #14253F, orange #F19000) ==== */
html{font-synthesis:none}
h1,h2,h3,.h2,.display,.cs-h,.intro-statement,.ft-big,.mt-h1,.sm-title,.r3-title{font-family:var(--serif);font-weight:600;text-transform:none;letter-spacing:-.005em;line-height:1.08}
h1 em,h2 em,h3 em,.h2 em,.cs-h em,.ft-big em,.intro-statement em{font-style:italic;color:var(--gold)}
.intro-statement{font-family:var(--serif);font-weight:600;letter-spacing:-.005em;line-height:1.18;font-size:clamp(1.6rem,2.8vw,2.6rem)}
.mitem-name,.wine-list h4,.dir h3,.pol h3,.ccard-main,.hours--lg th,.callus-big span,.ev-title,.evcard h3,.mgroup-title,.fb-card h3,.acc h3,.ih-card h3,.cf-name{font-family:var(--sans);font-weight:600;text-transform:none;letter-spacing:-.01em;font-style:normal}
.gcap,.lb-cap,.mtab-it,.pol-n,.phero-word,.ld-pano-cap,.skyline-cap{font-style:normal}
.mtab-it{font-family:var(--sans);font-weight:600;font-size:clamp(.95rem,1.3vw,1.1rem);letter-spacing:.02em}
.mitem-price,.wine-list span,.fb-price,.ev-price,.evcard-price{font-family:var(--sans);font-weight:600}
.mtab-en{font-family:var(--serif);font-style:italic;letter-spacing:0}
.eyebrow{letter-spacing:.3em}
/* daily specials: map the widget's --w-* settings onto the kit tokens */
.w-ds{--w-accent:var(--gold);--w-bg:var(--bg);--w-surface:var(--bg2);--w-ink:var(--cream);--w-muted:var(--muted);--w-line:var(--line);--w-on-accent:var(--on-gold);
 --w-display:var(--serif);--w-display-weight:600;--w-display-case:none;--w-display-tracking:0;--w-body:var(--sans);--w-radius:var(--radius,14px);--w-ease:cubic-bezier(.22,.61,.36,1);--w-space:clamp(1rem,2vw,1.6rem)}
.w-ds .w-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.sec-ds .w-ds{margin-top:clamp(2rem,4vw,3rem)}
/* wine page: alternate the bottle side */
@media (min-width:861px){.sec-wine--rev .r3-layout{direction:rtl}.sec-wine--rev .r3-layout>*{direction:ltr}}
.sec-wine+.sec-wine{border-top:1px solid var(--line)}
/* skyline heading */
.sec-skyline .sec-head{margin-bottom:clamp(1.5rem,3vw,2.5rem)}
.sec-skyline .ld-pano{margin-bottom:0}
.skyline-cap{text-align:center;margin:1.2rem 0 0;color:var(--muted);letter-spacing:.24em;text-transform:uppercase;font-size:.78rem}
/* Counter fix 23 Oct 2026: values never wrap or change size while counting (no layout shift).
   The final value's width is reserved (JS sets min-width), digits are tabular, and the size fits "250 000+" in a 2-column card at 360px. */
.sec-stats .ac-num{white-space:nowrap;overflow:visible;font-variant-numeric:tabular-nums lining-nums;line-height:1;min-height:1em;contain:layout}
.sec-stats .ac-val{display:inline-block;white-space:nowrap;text-align:left}
@media (max-width:760px){.sec-stats .ac-num{font-size:clamp(1.55rem,8.4vw,2.2rem)}}
/* ===== Cooking classes kit (2026-10-23) ===== */
/* the cook hero is always light (frames are shot on warm grey #d8d4d0): in dark mode the resting header over it uses the light palette + teal logo */
.theme-dark .page-home .site-header:not(.is-solid){--shade-rgb:216,212,208;--ink-rgb:20,37,63;--cream:#14253F;--muted:#4c5a70;--line:rgba(20,37,63,.14);--line2:rgba(20,37,63,.22);--gold:#a85f00;color:#14253F}
.theme-dark .page-home .site-header:not(.is-solid) .logo--dark{opacity:0;visibility:hidden}.theme-dark .page-home .site-header:not(.is-solid) .logo--light{opacity:1;visibility:visible}
.page-home .site-header:not(.is-solid)::before{background:linear-gradient(180deg,rgba(216,212,208,.85),rgba(216,212,208,.4) 55%,rgba(216,212,208,0))}
/* class cards: seats + diet tags */
.ev-seats{display:block;font-size:.78rem;font-weight:500;color:var(--muted);letter-spacing:.02em;margin-top:.2rem}
.ev-diet{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:.2rem 0 1rem;padding:0}
.ev-diet li{font-size:.74rem;letter-spacing:.04em;padding:.28rem .7rem;border-radius:99px;border:1px solid var(--line2);color:var(--cream)}

/* ===== Client-admin builds only (deploy.clientAdmin): appended to base.css by build.mjs. Demo builds never ship this. ===== */

/* site-wide notices banner (config.announcement, edited in the client admin) */
.site-notice{position:fixed;inset:0 0 auto;z-index:101;display:flex;align-items:center;justify-content:center;gap:.75rem;min-height:40px;padding:.45rem calc(var(--gutter) + 40px) .45rem var(--gutter);background:var(--gold);color:var(--on-gold);font:500 .86rem/1.35 var(--sans);letter-spacing:.01em;text-align:center}
.site-notice--alert{background:var(--terra);color:#fff}
.site-notice-t{margin:0}
.site-notice-a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px;margin-left:.35rem;white-space:nowrap}
.site-notice-x{position:absolute;right:calc(var(--gutter) - 8px);top:50%;transform:translateY(-50%);width:36px;height:36px;display:grid;place-items:center;background:none;border:0;color:inherit;cursor:pointer;border-radius:50%}
.site-notice-x:hover,.site-notice-x:focus-visible{background:rgba(0,0,0,.12)}
.site-notice-x .i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
html:has(.site-notice) .site-header{top:var(--notice-h,40px)}
html:has(.site-notice){scroll-padding-top:calc(var(--header-h-s) + var(--notice-h,40px) + 16px)}
html:has(.site-notice) .mnav-inner{padding-top:calc(var(--header-h) + var(--notice-h,40px) + 3vh)}
@media (max-width:760px){.site-notice{font-size:.8rem;min-height:36px}}

/* no upcoming events left */
.ev-empty{margin:0;padding:2rem 0;color:var(--muted);font-size:1.05rem;max-width:46ch}

/* Cloudflare Turnstile (only takes space when Cloudflare asks the visitor to interact) */
.form .cf-turnstile{margin:.25rem 0 1rem}
.form--compact .cf-turnstile{margin:.5rem 0 0}
.form .cf-turnstile:empty{display:none}

/* rich-text lists from the admin's editor (prose(): role=list spans, so they also sit inside the section's <p>).
   Bullets and numbers use the accent (--gold, per theme); spacing follows the surrounding body text.
   The list shrink-wraps and follows the block's own alignment, so it also works in centred copy. */
.rt-ul,.rt-ol{display:inline-block;vertical-align:top;max-width:100%;text-align:start;counter-reset:rt-n}
.rt-li{display:block;position:relative;padding-left:1.45em}
.rt-li+.rt-li{margin-top:.4em}
.rt-li>.rt-ul,.rt-li>.rt-ol{display:block;margin-top:.4em}
.rt-ul>.rt-li::before{content:"";position:absolute;left:.3em;top:.62em;top:calc(.5lh - .2em);width:.4em;height:.4em;border-radius:50%;background:var(--gold)}
.rt-li .rt-ul>.rt-li::before{background:none;box-shadow:inset 0 0 0 1.5px var(--gold)}
.rt-li .rt-li .rt-ul>.rt-li::before{border-radius:1px;background:var(--gold);box-shadow:none;width:.34em;height:.34em}
.rt-ol>.rt-li{counter-increment:rt-n;padding-left:1.9em}
.rt-ol>.rt-li::before{content:counter(rt-n) ".";position:absolute;left:0;top:0;min-width:1.45em;text-align:right;color:var(--gold);font-weight:500;font-variant-numeric:tabular-nums}
.rt-li .rt-ol>.rt-li::before{content:counter(rt-n,lower-alpha) "."}
.rt-li .rt-li .rt-ol>.rt-li::before{content:counter(rt-n,lower-roman) "."}
