/* ── theme.css ── */
/* Harbord Diggers — "Shoreline" (v1). Tokens, base, shared components.
   Section-specific CSS lives in sections/<key>/section.css. */

:root{
  /* Standard tokens (contract §3) — the Styles panel edits these */
  --ve-color-bg:#f9f4ec;
  --ve-color-surface:#f3ebe0;
  --ve-color-text:#260d3c;
  --ve-color-muted:rgba(38,13,60,.66);
  --ve-color-line:rgba(38,13,60,.14);
  --ve-color-accent:#c9963f;
  --ve-color-accent-contrast:#260d3c;
  --ve-color-inverse-bg:#260d3c;
  --ve-color-inverse-text:#f9f4ec;
  --ve-font-display:Newsreader,'Iowan Old Style',Georgia,serif;
  --ve-font-body:Inter,system-ui,sans-serif;
  --ve-radius:13px;
  --ve-radius-lg:22px;
  --ve-space-section:clamp(72px,10vw,160px);
  --ve-max-width:1440px;

  /* v1's own vocabulary, derived from the standard tokens so Styles edits flow through */
  --ink:var(--ve-color-text);
  --cream:var(--ve-color-bg);
  --sand:var(--ve-color-surface);
  --line:var(--ve-color-line);
  --muted:var(--ve-color-muted);
  --gold:var(--ve-color-accent);
  --gold-soft:#e9c98f;
  --gold-deep:#8a6420;
  --green:#2f7d5b;
  --display:var(--ve-font-display);
  --body:var(--ve-font-body);
  --pad:clamp(20px,4.4vw,72px);
  --gap:12px;
  --r:var(--ve-radius-lg);
  --menu-bg:var(--ve-color-inverse-bg);
  --menu-fg:var(--ve-color-inverse-text);
  --menu-accent:var(--gold-soft);
  --ease:cubic-bezier(.22,.8,.2,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
}

/* Reset */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;background:var(--cream);color:var(--ink);font:400 16px/1.6 var(--body)}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,h4,p,ul,ol,figure,dl,dd{margin:0}
h1,h2,h3{text-wrap:balance;font-family:var(--display);font-weight:400;letter-spacing:-.022em;line-height:1.04}
h1 em,h2 em{font-style:italic}
ul{padding:0;list-style:none}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[id]{scroll-margin-top:96px}

/* Section spacing: every padded section uses .sec; _spaceTop/_spaceBottom tune it (never neighbour-dependent) */
.sec{padding-top:var(--sec-top,var(--ve-space-section));padding-bottom:var(--sec-bottom,var(--ve-space-section))}
[data-space-top=small]{--sec-top:calc(var(--ve-space-section) * .4)}
[data-space-top=none]{--sec-top:0px}
[data-space-bottom=small]{--sec-bottom:calc(var(--ve-space-section) * .4)}
[data-space-bottom=none]{--sec-bottom:0px}
/* Panels (ink/sand bands) use margins rather than padding for their outer spacing */
.band{margin-top:var(--sec-top,0px);margin-bottom:var(--sec-bottom,0px)}

/* Type + layout primitives */
.eyebrow{font:600 11px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.wrap{padding-inline:var(--pad)}
.lede{color:var(--muted);font-size:clamp(16px,1.25vw,18px);max-width:46ch}
.cta{display:flex;flex-wrap:wrap;gap:10px}
.split em .w{padding-right:.1em;margin-right:-.1em}

/* Buttons */
.btn{white-space:nowrap;display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 20px;border-radius:999px;border:1px solid var(--line);font:600 12px/1 var(--body);letter-spacing:.1em;text-transform:uppercase;position:relative;overflow:hidden;isolation:isolate;transition:color .45s var(--ease),border-color .45s}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--ink);transform:translateY(101%);border-radius:inherit;transition:transform .55s var(--ease)}
.btn:hover{color:var(--cream);border-color:var(--ink)}
.btn:hover::before{transform:none}
.btn--solid{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.btn--solid::before{background:var(--gold)}
.btn--solid:hover{color:var(--ink);border-color:var(--gold)}
.btn--light{border-color:rgba(249,244,236,.4);color:var(--cream)}
.btn--light::before{background:var(--cream)}
.btn--light:hover{color:var(--ink);border-color:var(--cream)}
.arrow{display:inline-block;transition:transform .5s var(--ease)}
a:hover>.arrow,.btn:hover .arrow{transform:translateX(5px)}
/* Button arrows follow the link: → page, ↓ same-page anchor, ↗ new tab, ← when the button is a "back" link */
[data-arrow]::before{content:"→"}
a[href^="#"] [data-arrow]::before{content:"↓"}
a[target=_blank] [data-arrow]::before{content:"↗"}
[data-arrow-dir=back] [data-arrow]::before{content:"←"}
[data-arrow-dir=back] [data-arrow]{order:-1}
[data-arrow-dir=back]:hover [data-arrow]{transform:translateX(-5px)}
.status{display:inline-flex;align-items:center;gap:10px;font:500 13.5px/1.3 var(--body)}
.status i{flex:none;width:9px;height:9px;border-radius:50%;background:var(--gold);position:relative}
.status.is-open i{background:var(--green)}
.status.is-open i::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--green);animation:ping 2.2s var(--ease) infinite}
.pill{display:inline-block;padding:7px 11px;border-radius:999px;border:1px solid var(--gold);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep);white-space:nowrap;vertical-align:middle}

/* Section heading row (shared by rails, tiles, grids) */
.head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:clamp(28px,4vw,56px)}
.head h2{font-size:clamp(36px,5.2vw,84px);margin-top:18px}
.rail-ctrl{display:flex;gap:8px;align-items:center}
.rail-ctrl .btn{margin-right:8px}
.rail-ctrl button{width:48px;height:48px;border-radius:50%;border:1px solid var(--line);transition:background .4s,color .4s,transform .4s var(--ease),opacity .4s}
.rail-ctrl button:hover{background:var(--ink);color:var(--cream)}
.rail-ctrl button:active{transform:scale(.92)}
.rail-ctrl button:disabled{opacity:.3;pointer-events:none}

/* Card rail */
.rail{display:flex;gap:var(--gap);overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-inline:var(--pad);padding-inline:var(--pad);scrollbar-width:none;cursor:grab}
.rail::-webkit-scrollbar{display:none}
.rail.is-dragging{cursor:grabbing;scroll-snap-type:none}
.rail.is-dragging a{pointer-events:none}
.card{display:block;flex:0 0 clamp(260px,29vw,430px);scroll-snap-align:start}
.card__img{aspect-ratio:4/5;border-radius:var(--r);overflow:hidden;position:relative}
.card__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease);-webkit-user-drag:none}
.card:hover .card__img img{transform:scale(1.06)}
.card__tag{position:absolute;left:14px;top:14px;padding:7px 12px;border-radius:999px;background:rgba(249,244,236,.9);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase}
.card h3{font-size:clamp(24px,2.1vw,32px);margin-top:18px;display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.card h3 .arrow{font-family:var(--body);font-size:16px;opacity:0;transform:translateX(-8px);transition:opacity .4s,transform .5s var(--ease)}
.card:hover h3 .arrow{opacity:1;transform:none}
.card p{color:var(--muted);font-size:14.5px;margin-top:8px;max-width:38ch}

/* Photo tiles */
.tile{position:relative;display:block;border-radius:var(--r);overflow:hidden;color:#fff;min-height:300px}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.tile:hover img{transform:scale(1.05)}
.tile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,0) 40%,rgba(20,8,32,.78));pointer-events:none}
.tile__body{position:absolute;z-index:1;inset:auto 0 0;padding:clamp(20px,2.4vw,34px);display:flex;justify-content:space-between;align-items:end;gap:16px}
.tile .eyebrow{color:rgba(255,255,255,.8)}
.tile h3{font-size:clamp(26px,2.8vw,44px);margin-top:10px}
.tile__go{flex:none;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.5);display:grid;place-items:center;transition:background .4s,color .4s,transform .6s var(--ease)}
.tile:hover .tile__go{background:#fff;color:var(--ink);transform:rotate(-45deg)}

/* Motion utilities — hidden states only once behaviours add html.js (never in the editor canvas) */
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:calc(var(--d,0) * 90ms)}
.js .reveal.in{opacity:1;transform:none}
.js .wipe>*{clip-path:inset(100% 0 0 0);transition:clip-path 1.3s var(--ease-io),transform 1.9s var(--ease);transition-delay:calc(var(--d,0) * 90ms)}
.js .wipe>img{transform:scale(1.18)}
.js .wipe.in>*{clip-path:inset(0)}
.js .wipe.in>img{transform:none}
.js .tile.wipe::after{opacity:0;transition:opacity 1.2s var(--ease) .3s}
.js .tile.wipe.in::after{opacity:1}
.js .rise{opacity:0;transform:translateY(18px);transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:calc(var(--d,0) * 110ms + .55s)}
.js.is-loaded .rise{opacity:1;transform:none}
.split .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.12em;margin-bottom:-.12em}
.split .w>span{display:inline-block}
.js .split .w>span{transform:translateY(110%);transition:transform 1.1s var(--ease);transition-delay:calc(var(--i) * 55ms + var(--base,0ms))}
.js .split.in .w>span{transform:none}
.sw{transition:opacity .5s linear}

@keyframes ping{to{transform:scale(3.4);opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes drift{to{transform:translate(12vw,10vw) scale(1.15)}}
@keyframes mq{to{transform:translateX(-50%)}}
@keyframes rowin{from{opacity:0;transform:translateY(18px)}}

/* Cross-document view transitions. Per-item names come from data (venue-{{slug}}). */
@view-transition{navigation:auto}
::view-transition-group(*){animation-duration:.7s;animation-timing-function:var(--ease-io)}
::view-transition-old(*),::view-transition-new(*){height:100%;object-fit:cover}
::view-transition-old(root){animation:vt-out .35s var(--ease-io) both}
::view-transition-new(root){animation:vt-in .6s var(--ease) both}
::view-transition-old(hd),::view-transition-new(hd){height:auto;object-fit:none}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0}}
.vt [data-vt-hero]{clip-path:none!important}
.vt [data-vt-hero] img{transform:none!important;transition:none!important}

@media (max-width:640px){
  .head{flex-direction:column;align-items:start}
  .rail-ctrl button{display:none}
  .rail-ctrl .btn{margin:0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .js .reveal,.js .rise,.js .split .w>span{opacity:1;transform:none}
  .js .wipe>*{clip-path:none;transform:none}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* ── components.css ── */
/* Harbord Diggers — shared components from v1 (pages.css + venues.css), for sections to reuse by class.
   Header/menu chrome lives in sections/site-header. Page-specific pieces live in each section.css.
   Vertical spacing: never here — sections use .sec (padding) or .band (margins) driven by _spaceTop/_spaceBottom. */

/* Keep exploring grid (from shoreline.css) */
.next__grid{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--gap)}
.next .tile{min-height:clamp(320px,36vw,540px)}
@media (max-width:640px){.next__grid{grid-template-columns:1fr}.next .tile{min-height:300px}}

/* ── from pages.css ── */
/* Small shared pieces */
.lede{color:var(--muted);font-size:clamp(16px,1.25vw,18px);max-width:46ch}
.cta{display:flex;flex-wrap:wrap;gap:10px}
.tlink{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color .3s}
.tlink:hover{color:var(--gold)}
.pill{display:inline-block;padding:7px 11px;border-radius:999px;border:1px solid var(--gold);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:#8a6420;white-space:nowrap;vertical-align:middle}
.status{display:inline-flex;align-items:center;gap:10px;font:500 13.5px/1.3 var(--body)}
.status i{flex:none;width:9px;height:9px;border-radius:50%;background:var(--gold);position:relative}
.status.is-on i{background:#2f7d5b}
.status.is-on i::after{content:"";position:absolute;inset:0;border-radius:50%;background:#2f7d5b;animation:ping 2.2s var(--ease) infinite}
.h2{font-size:clamp(34px,4.6vw,72px)}

/* Two-column section: copy beside something */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,110px);align-items:center}
.duo h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.duo figure{border-radius:var(--r);overflow:hidden;aspect-ratio:5/4}
.duo figure img{width:100%;height:100%;object-fit:cover}
.duo .cta{margin-top:28px}

/* Label / value rows */
.rows{margin:0;border-top:1px solid var(--line)}
.rows>div{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;padding:16px 0;border-bottom:1px solid var(--line)}
.rows dt{font:600 11px/1.8 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.rows dd{margin:0}

/* Scroll-light statement (same recipe as the homepage About block) */
.say{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(32px,6vw,110px);align-items:end}
.say__statement{font-family:var(--display);font-size:clamp(28px,3.7vw,60px);line-height:1.12;letter-spacing:-.022em;margin-top:26px}
.say__statement .sw{opacity:clamp(.16,calc((var(--p,0) - .1) * 3.2 * var(--n) - var(--i)),1);transition:opacity .5s linear}
.say__side p{color:var(--muted);max-width:42ch}
.say__side p+p{margin-top:1em}

/* Wide photo that drifts as it crosses the screen */
.wide{position:relative;margin:clamp(40px,6vw,90px) var(--gap) 0;aspect-ratio:21/9;border-radius:var(--r);overflow:hidden;color:#fff}
.wide__in{position:absolute;inset:0}
.wide__in img{position:absolute;inset:-12% 0;width:100%;height:124%;max-width:none;object-fit:cover;transform:translate3d(0,calc((var(--p,.5) - .5) * -14%),0)}
.wide__in::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,0) 45%,rgba(20,8,32,.7))}
.wide figcaption{position:absolute;inset:auto 0 0;padding:clamp(20px,2.6vw,38px);display:flex;justify-content:space-between;align-items:end;gap:20px}
.wide figcaption p:last-child{font-family:var(--display);font-size:clamp(22px,2.6vw,40px);line-height:1.1;letter-spacing:-.02em;max-width:22ch;text-align:right}
.wide .eyebrow{color:rgba(255,255,255,.8)}

/* Dark panel with a slow gold glow */
.dark{margin-inline:var(--gap);padding:clamp(48px,7vw,110px) calc(var(--pad) - var(--gap));border-radius:var(--r);background:var(--ink);color:var(--cream);position:relative;overflow:hidden}
.dark::before{content:"";position:absolute;width:70vw;height:70vw;left:-30vw;top:-36vw;border-radius:50%;background:radial-gradient(closest-side,rgba(201,150,63,.3),transparent);animation:drift 16s ease-in-out infinite alternate}
.dark>*{position:relative}
.dark .eyebrow{color:rgba(249,244,236,.7)}
.dark h2{font-size:clamp(36px,5.2vw,84px);margin-top:20px;max-width:16ch}
.dark h2 em{color:#e9c98f}
.dark__lede{max-width:52ch;margin-top:26px;color:rgba(249,244,236,.76)}
.dark .tlink:hover{color:#e9c98f}

/* Big numbers */
.stats{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(40px,5.4vw,80px);border-top:1px solid var(--line)}
.stat{padding:26px 24px 0 0}
.stat+.stat{padding-left:24px;border-left:1px solid var(--line)}
.stat b{display:block;font:300 clamp(46px,6vw,98px)/1 var(--display);letter-spacing:-.03em;white-space:nowrap}
.stat>span{display:block;margin-top:10px;font-size:14px;color:var(--muted);max-width:32ch}
.dark .stats,.dark .stat+.stat{border-color:rgba(249,244,236,.2)}
.dark .stat>span{color:rgba(249,244,236,.72)}

/* Day picker (same build as the What's On week) */
.days{position:relative;display:grid;grid-template-columns:repeat(7,1fr);padding:6px;border-radius:20px;background:var(--cream)}
.days__ind{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px) / 7);border-radius:15px;background:var(--ink);transform:translateX(calc(var(--i,0) * 100%));transition:transform .7s var(--ease)}
.days button{position:relative;display:grid;justify-items:center;gap:8px;padding:15px 0 13px;border-radius:15px;transition:color .45s}
.days button[aria-selected="true"]{color:var(--cream)}
.days button span{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;opacity:.65}
.days button.is-today span{color:var(--gold);opacity:1}
.days button b{font:400 clamp(20px,2.2vw,32px)/1 var(--display);letter-spacing:-.02em}

/* Forms (mock only: nothing is sent) */
.form{display:grid;grid-template-columns:1fr 1fr;gap:22px var(--gap);padding:clamp(22px,3vw,44px);border-radius:var(--r);background:var(--sand)}
.form h3{grid-column:1/-1;font-size:clamp(26px,2.6vw,40px)}
.field{display:grid;gap:6px;min-width:0}
.field--full{grid-column:1/-1}
.field label{font:600 10.5px/1 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.field input,.field select,.field textarea{width:100%;min-width:0;height:46px;padding:0;border:0;border-bottom:1px solid rgba(38,13,60,.3);border-radius:0;background:none;color:var(--ink);font:400 17px/1.4 var(--body);transition:border-color .4s,box-shadow .4s;-webkit-appearance:none;appearance:none}
.field textarea{height:auto;min-height:112px;padding:10px 0;resize:vertical}
.field select{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23260d3c' stroke-width='1.5'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 4px center;padding-right:24px}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--ink);box-shadow:0 1px 0 var(--ink)}
.field input::placeholder,.field textarea::placeholder{color:rgba(38,13,60,.38)}
.form__end{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:6px}
.form__note{display:flex;align-items:center;gap:10px;font:500 14px/1.4 var(--body)}
.form__note::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--gold)}
.form__note[hidden]{display:none}
.form__note.in{animation:rowin .8s var(--ease) both}

@media (max-width:1000px){
  .duo,.say{grid-template-columns:1fr}
  .wide{aspect-ratio:4/3}
}
@media (max-width:640px){
  .wide figcaption{flex-direction:column;align-items:start}
  .wide figcaption p:last-child{text-align:left}
  .rows>div{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr;border-top:0}
  .stat,.stat+.stat{padding:22px 0;border-left:0;border-top:1px solid var(--line)}
  .dark .stat{border-color:rgba(249,244,236,.2)}
  .days{padding:4px;border-radius:16px}
  .days__ind{top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / 7);border-radius:12px}
  .days button span{font-size:9px;letter-spacing:.1em}
  .form{grid-template-columns:1fr}
}

/* ── from venues.css ── */
/* Small shared pieces */
.cta{display:flex;flex-wrap:wrap;gap:10px}
.pill{display:inline-block;padding:7px 11px;border-radius:999px;border:1px solid var(--gold);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep);white-space:nowrap;vertical-align:middle}
.fine{margin-top:20px;max-width:86ch;font-size:13px;color:var(--muted)}
.status{display:inline-flex;align-items:center;gap:10px;font:500 13.5px/1.3 var(--body)}
.status i{flex:none;width:9px;height:9px;border-radius:50%;background:var(--gold);position:relative}
.status.is-open i{background:var(--green)}
.status.is-open i::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--green);animation:ping 2.2s var(--ease) infinite}

/* Rotating seal */
.seal{position:absolute;width:118px;height:118px;border-radius:50%;background:var(--cream);display:grid;place-items:center;color:var(--ink)}
.js .seal{opacity:0;transform:scale(.6) rotate(-40deg);transition:opacity .8s var(--ease) 1.5s,transform 1.2s var(--ease) 1.5s}
.js.is-loaded .seal{opacity:1;transform:none}
.seal svg{position:absolute;inset:0;width:100%;height:100%;animation:spin 26s linear infinite}
.seal text{font:600 9.6px var(--body);letter-spacing:.21em;text-transform:uppercase;fill:currentColor}
.seal b{font:italic 400 30px/1 var(--display)}

/* Story: a statement that lights up word by word, with a short aside */
.story{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(32px,6vw,110px);align-items:end}
.story__statement{font-family:var(--display);font-size:clamp(28px,3.7vw,60px);line-height:1.12;letter-spacing:-.022em;margin-top:26px}
.story__statement .sw{opacity:clamp(.16,calc((var(--p,0) - .1) * 3.2 * var(--n) - var(--i)),1);transition:opacity .5s linear}
.story__side p{color:var(--muted);max-width:42ch}
.story__side p+p{margin-top:1em}
.story__side .btn{margin-top:26px}

/* Wide parallax photo with a caption */
.wide{position:relative;margin:clamp(40px,6vw,90px) var(--gap) 0;aspect-ratio:21/9;border-radius:var(--r);overflow:hidden;color:#fff}
.wide__in{position:absolute;inset:0}
.wide__in img{position:absolute;inset:-12% 0;width:100%;height:124%;max-width:none;object-fit:cover;transform:translate3d(0,calc((var(--p,.5) - .5) * -14%),0)}
.wide__in::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,0) 45%,rgba(20,8,32,.72))}
.wide figcaption{position:absolute;inset:auto 0 0;padding:clamp(20px,2.6vw,38px);display:flex;justify-content:space-between;align-items:end;gap:20px}
.wide figcaption p:last-child{font-family:var(--display);font-size:clamp(22px,2.6vw,40px);line-height:1.1;letter-spacing:-.02em;max-width:24ch;text-align:right}
.wide .eyebrow{color:rgba(255,255,255,.82)}

/* Ink panel with a slow gold glow */
.ink{margin-inline:var(--gap);padding:clamp(48px,7vw,110px) calc(var(--pad) - var(--gap));border-radius:var(--r);background:var(--ink);color:var(--cream);position:relative;overflow:hidden;--pk-line:rgba(249,244,236,.2);--pk-accent:var(--gold-soft);--pk-soft:rgba(249,244,236,.78)}
.ink::before{content:"";position:absolute;width:70vw;height:70vw;left:-30vw;top:-36vw;border-radius:50%;background:radial-gradient(closest-side,rgba(201,150,63,.3),transparent);animation:drift 16s ease-in-out infinite alternate;pointer-events:none}
.ink>*{position:relative}
.ink .eyebrow{color:rgba(249,244,236,.7)}
.ink h2{font-size:clamp(36px,5.2vw,84px);margin-top:20px}
.ink h2 em{color:var(--gold-soft)}
.ink--flush{padding-bottom:0}
.ink__lede{margin-top:22px;max-width:50ch;color:rgba(249,244,236,.78)}

/* Sand panel */
.panel{margin-inline:var(--gap);padding:clamp(36px,5.4vw,88px) calc(var(--pad) - var(--gap));border-radius:var(--r);background:var(--sand)}
.panel h2{font-size:clamp(36px,5.2vw,84px);margin-top:18px}

/* Pick list: one item open at a time, with a matching image on the stage beside it */
.pick{--pk-line:var(--line);--pk-accent:var(--gold);--pk-soft:var(--muted);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,6vw,100px);align-items:end}
.ink .pick{--pk-line:rgba(249,244,236,.2);--pk-accent:var(--gold-soft);--pk-soft:rgba(249,244,236,.78)}
.pick__list{list-style:none;padding:0;margin:clamp(28px,4vw,52px) 0 0;border-top:1px solid var(--pk-line)}
.pick__list li{position:relative;border-bottom:1px solid var(--pk-line)}
.pick__list li::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--pk-accent);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.pick__list li.is-active::after{transform:scaleX(1)}
.pick__list button{display:grid;grid-template-columns:44px 1fr auto;align-items:baseline;gap:8px;width:100%;padding:22px 0 20px;text-align:left;opacity:.55;transition:opacity .5s}
.pick__list li.is-active button,.pick__list button:hover{opacity:1}
.pick__n{font:500 11px/1 var(--body);letter-spacing:.14em;font-variant-numeric:tabular-nums;color:var(--pk-accent)}
.pick__t{font-family:var(--display);font-size:clamp(24px,2.7vw,42px);line-height:1.08;letter-spacing:-.02em;transition:transform .7s var(--ease)}
.pick__list li.is-active .pick__t{font-style:italic;transform:translateX(6px)}
.pick__tag{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;padding:7px 11px;border-radius:999px;border:1px solid var(--pk-line);white-space:nowrap}
.pick__tag.is-on{border-color:var(--pk-accent);color:var(--pk-accent)}
.pick__d{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease)}
.pick__list li.is-active .pick__d{grid-template-rows:1fr}
.pick__d p{overflow:hidden;min-height:0;padding-left:52px;max-width:52ch;color:var(--pk-soft);opacity:0;transition:opacity .5s}
.pick__d p::after{content:"";display:block;height:22px}
.pick__list li.is-active .pick__d p{opacity:1;transition-delay:.15s}
.pick__stage{position:relative;aspect-ratio:var(--ar,1);border-radius:var(--r);overflow:hidden;background:rgba(249,244,236,.08)}
.pick__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.07);transition:opacity .8s var(--ease),transform 1.6s var(--ease)}
.pick__stage img.is-active{opacity:1;transform:none}
.pick__stage--art{align-self:center;background:var(--cream);padding:10px;transform:rotate(-1.6deg);box-shadow:0 40px 80px -40px rgba(0,0,0,.7);transition:transform .9s var(--ease)}
.pick__stage--art:hover{transform:rotate(0)}
.pick__stage--art img{inset:10px;width:calc(100% - 20px);height:calc(100% - 20px);object-fit:contain;border-radius:14px;transform:scale(1.03)}
.pick__foot{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}

/* Marquee along the bottom of an ink panel */
.mq{margin-top:clamp(44px,6vw,88px);margin-inline:calc(var(--gap) - var(--pad));border-top:1px solid rgba(249,244,236,.2);padding:26px 0 30px;overflow:hidden;white-space:nowrap}
.mq__track{display:inline-flex;animation:mq 44s linear infinite}
.mq:hover .mq__track{animation-play-state:paused}
.mq span{display:inline-flex;align-items:center;font-family:var(--display);font-style:italic;font-weight:300;font-size:clamp(26px,3.2vw,50px);letter-spacing:-.02em}
.mq span::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold-soft);margin-inline:clamp(20px,2.4vw,40px)}

/* Hours and bookings */
.hrs{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,110px);align-items:center}
.hrs h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.hrs__note{color:var(--muted);max-width:44ch;margin-top:18px}
.hrs__note a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.hrs .cta{margin-top:28px}
.hrs ul{border-top:1px solid var(--line)}
.hrs li{display:grid;grid-template-columns:1fr auto;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid var(--line);transition:padding .6s var(--ease)}
.hrs li span:first-child{font-family:var(--display);font-size:clamp(20px,1.8vw,26px);letter-spacing:-.01em}
.hrs li span:last-child{font-variant-numeric:tabular-nums;text-align:right}
.hrs li.is-shut{color:var(--muted)}
.hrs li.is-today{padding-inline:18px;margin-inline:-18px;background:var(--sand);border-radius:14px;border-bottom-color:transparent}
.hrs li.is-today span:first-child::after{content:"Today";margin-left:12px;font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);vertical-align:middle}

/* Mates Rates: one card per deal, today's turns ink */
.mr{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}
.mr__c{position:relative;display:flex;flex-direction:column;min-height:clamp(260px,25vw,360px);padding:clamp(20px,2.2vw,32px);border-radius:var(--r);background:var(--sand);transition:transform .8s var(--ease),background .6s,color .6s}
.mr__c:hover{transform:translateY(-6px)}
.mr__day{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:26px;font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.mr__c b{margin-top:auto;padding-top:28px;font:300 clamp(60px,6.6vw,108px)/.86 var(--display);letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.mr__c h3{font-size:clamp(22px,2vw,30px);margin-top:16px}
.mr__c p{margin-top:8px;font-size:14px;color:var(--muted)}
.mr__c.is-today{background:var(--ink);color:var(--cream)}
.mr__c.is-today .mr__day,.mr__c.is-today p{color:rgba(249,244,236,.74)}
.mr__c.is-today .mr__day::after{content:"Today";padding:7px 11px;border-radius:999px;border:1px solid var(--gold-soft);font:600 10px/1 var(--body);letter-spacing:.14em;color:var(--gold-soft)}

/* Scroll-drawn trail: a line that fills as you scroll, lighting each stop in turn */
.trail{position:relative;margin-top:clamp(36px,5vw,72px);--f:calc((var(--p,1) - .2) * 2.8)}
.trail__line{position:relative;height:1px;background:var(--line)}
.trail__line i{position:absolute;left:0;right:0;top:-1px;height:3px;border-radius:3px;background:var(--gold);transform-origin:left;transform:scaleX(clamp(0,var(--f),1));transition:transform .5s linear}
.trail ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}
.trail li{position:relative;padding:38px 28px 0 0}
.js .trail li{opacity:clamp(.3,calc((var(--f) - var(--at)) * 8 + .3),1);transition:opacity .6s linear}
.trail li::before{content:"";position:absolute;left:0;top:-7px;width:13px;height:13px;border-radius:50%;background:var(--cream);border:2px solid var(--gold)}
.trail li b{font:500 11px/1 var(--body);letter-spacing:.14em;color:var(--gold-deep)}
.trail h3{font-size:clamp(24px,2.5vw,38px);margin-top:14px}
.trail li p{margin-top:10px;max-width:34ch;color:var(--muted);font-size:15px}

/* Split: photo beside copy */
.split2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px);align-items:center}
.split2 figure{border-radius:var(--r);overflow:hidden;aspect-ratio:var(--ar,5/4)}
.split2 figure img{width:100%;height:100%;object-fit:cover}
.split2 h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.split2 p:not(.eyebrow):not(.status){color:var(--muted);max-width:46ch}
.split2 p+p{margin-top:1em}
.split2 .cta{margin-top:28px}
.split2 dl{margin:26px 0 0;border-top:1px solid var(--line)}
.split2 dl div{display:grid;grid-template-columns:130px 1fr;padding:15px 0;border-bottom:1px solid var(--line)}
.split2 dt{font:600 11px/1.8 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.split2 dd{margin:0}
/* Promo artwork has its words baked in, so it is always shown whole on a tinted panel */
.promo{overflow:hidden;padding:clamp(10px,1.4vw,20px);border-radius:var(--r);background:var(--sand);transition:transform .9s var(--ease)}
.promo img{width:100%;border-radius:14px}
.promo:hover{transform:rotate(-1deg)}

/* Day picker (dining deals) */
.dp{padding:clamp(16px,2.4vw,36px);border-radius:var(--r);background:var(--sand)}
.dp__days{position:relative;display:grid;grid-template-columns:repeat(7,1fr);padding:6px;border-radius:20px;background:var(--cream)}
.dp__ind{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px) / 7);border-radius:15px;background:var(--ink);transform:translateX(calc(var(--i,0) * 100%));transition:transform .7s var(--ease)}
.dp__day{position:relative;display:grid;justify-items:center;gap:8px;padding:14px 0 12px;border-radius:15px;transition:color .45s}
.dp__day[aria-selected="true"]{color:var(--cream)}
.dp__day span{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;opacity:.65}
.dp__day.is-today span{color:var(--gold);opacity:1}
.dp__day b{font:400 clamp(20px,2.2vw,32px)/1 var(--display);letter-spacing:-.02em}
.dp__day i{display:flex;gap:3px;height:5px}
.dp__day u{width:5px;height:5px;border-radius:50%;background:var(--gold)}
.dp__title{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:clamp(28px,3.2vw,50px);margin-top:clamp(24px,3vw,42px)}
.dp__list{margin-top:18px;border-top:1px solid var(--line)}
.dp__row{display:grid;grid-template-columns:clamp(88px,10vw,150px) minmax(0,1fr) auto;align-items:center;gap:6px 18px;padding:18px 0;border-bottom:1px solid var(--line);animation:rowin .9s var(--ease) both;animation-delay:calc(var(--i) * 80ms)}
.dp__price{font:300 clamp(40px,4.4vw,70px)/.9 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.dp__what b{display:block;font:400 clamp(20px,1.9vw,28px)/1.15 var(--display);letter-spacing:-.012em}
.dp__what small{display:block;margin-top:5px;font-size:13.5px;line-height:1.4;color:var(--muted)}
.dp__row .btn{height:38px;padding:0 15px;font-size:11px}
.dp__empty{padding:26px 0;border-bottom:1px solid var(--line);color:var(--muted);animation:rowin .9s var(--ease) both}
.dp__empty button{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}

/* Form (never submits; the note explains it is a mock-up) */
.fm{display:grid;grid-template-columns:1fr 1fr;gap:18px var(--gap);padding:clamp(20px,2.6vw,36px);border-radius:var(--r);background:var(--sand)}
.fm__f{display:grid;gap:9px;min-width:0}
.fm__f--full{grid-column:1/-1}
.fm label,.fm legend{font:600 11px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding:0}
.fm fieldset{border:0;margin:0;padding:0;min-width:0}
.fm legend{margin-bottom:10px}
.fm input[type=text],.fm input[type=tel],.fm select{width:100%;height:52px;padding:0 16px;border-radius:14px;border:1px solid var(--line);background:var(--cream);font:inherit;color:inherit;transition:border-color .4s,box-shadow .4s;appearance:none;-webkit-appearance:none}
.fm input:focus,.fm select:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 3px rgba(38,13,60,.1)}
.fm__fixed{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 16px;border-radius:14px;border:1px dashed var(--line);font-family:var(--display);font-size:20px}
.fm__fixed small{font:500 12px/1 var(--body);color:var(--muted)}
.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.chip{position:relative;cursor:pointer}
.chip input{position:absolute;opacity:0;inset:0}
.chip span{display:grid;justify-items:center;gap:6px;padding:12px 4px 11px;border-radius:14px;border:1px solid var(--line);background:var(--cream);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;transition:background .4s,color .4s,border-color .4s,transform .5s var(--ease)}
.chip span b{font:400 24px/1 var(--display);letter-spacing:-.02em}
.chip:hover span{transform:translateY(-3px)}
.chip input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.chip input:focus-visible+span{outline:2px solid var(--ink);outline-offset:3px}
.fm__go{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px}
.fm__note{display:grid;grid-template-rows:0fr;grid-column:1/-1;transition:grid-template-rows .7s var(--ease)}
.fm__note.is-on{grid-template-rows:1fr}
.fm__note div{overflow:hidden;min-height:0}
.fm__note p{padding:16px 18px;border-radius:14px;background:var(--cream);border:1px solid var(--gold);font-size:14.5px}
.fm__note b{display:block;font:400 22px/1.2 var(--display);letter-spacing:-.01em;margin-bottom:4px}

/* Link rows */
.lk{border-top:1px solid var(--line)}
.lk a{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}
.lk a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.lk a:hover::after{transform:scaleX(1)}
.lk b{display:block;font:400 clamp(22px,2.2vw,34px)/1.1 var(--display);letter-spacing:-.015em}
.lk small{display:block;margin-top:5px;font-size:13.5px;color:var(--muted)}
.lk a[hidden]{display:none}

.next__grid--3{grid-template-columns:1.3fr 1fr 1fr}

@media (max-width:1000px){
  .story,.pick,.hrs,.split2{grid-template-columns:1fr}
  .wide{aspect-ratio:4/3}
  .mr{grid-template-columns:1fr}
  .mr__c{min-height:0}
  .mr__c b{padding-top:36px}
  .next__grid--3{grid-template-columns:1fr 1fr}
  .next__grid--3>:first-child{grid-column:1/-1}
}
@media (max-width:640px){
  .hrs li span:last-child{font-size:14px}
  .hrs li.is-today span:first-child::after{margin-left:8px}
  .wide figcaption{flex-direction:column;align-items:start}
  .wide figcaption p:last-child{text-align:left}
  .pick__list button{grid-template-columns:32px 1fr}
  .pick__tag{grid-column:2;justify-self:start;margin-top:4px}
  .pick__d p{padding-left:40px}
  .trail__line{display:none}
  .trail ol{grid-template-columns:1fr;gap:0;border-left:1px solid var(--line);margin-left:6px}
  .trail li{padding:0 0 30px 26px}
  .trail li::before{left:-7px;top:0}
  .dp{margin-inline:calc(var(--gap) - var(--pad))}
  .dp__days{padding:4px;border-radius:16px}
  .dp__ind{top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / 7);border-radius:12px}
  .dp__day span{font-size:9px;letter-spacing:.1em}
  .dp__row{grid-template-columns:78px minmax(0,1fr)}
  .dp__row .btn{grid-column:2;justify-self:start}
  .fm{grid-template-columns:1fr;margin-inline:calc(var(--gap) - var(--pad))}
  .split2 dl div{grid-template-columns:1fr}
  .next__grid--3{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .js .seal{opacity:1;transform:none}
  .js .trail li{opacity:1}
  .trail__line i{transform:none}
}

/* Lightbox for image links ([data-lightbox], see lib/lightbox.js) */
.lb{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(24,9,38,.95);color:var(--cream);opacity:0;transition:opacity .45s var(--ease)}
.lb::backdrop{background:none}
.lb.is-open{opacity:1}
.lb__bar{position:absolute;inset:0 0 auto;height:68px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 14px 0 clamp(18px,3vw,36px);z-index:1}
.lb__bar p{font-family:var(--display);font-size:20px;letter-spacing:-.01em}
.lb__bar div{display:flex;gap:8px}
.lb__bar .btn{height:40px}
.lb__scroll{position:absolute;inset:68px 0 0;overflow:auto;display:flex;padding:0 clamp(12px,3vw,36px) 28px;overscroll-behavior:contain}
.lb__scroll img{margin:auto;width:min(100%,1500px);border-radius:12px;cursor:zoom-in;transform:translateY(30px) scale(.96);transition:transform .8s var(--ease)}
.lb.is-open .lb__scroll img{transform:none}
.lb.is-zoom .lb__scroll img{width:clamp(1300px,150vw,2000px);max-width:none;cursor:zoom-out}
html:has(.lb[open]){overflow:hidden}
@media (max-width:640px){.lb__bar p{display:none}.lb__bar{justify-content:flex-end}}

/* ── section: site-header ── */
/* Header: full-width bar that condenses into a floating pill */
.sh-hd .hd{position:fixed;inset:0 0 auto;top:var(--ve-top-offset,0px);z-index:100;padding:10px var(--gap);pointer-events:none;transition:transform .6s var(--ease);view-transition-name:hd}
.sh-hd .hd__bar{pointer-events:auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:60px;padding:0 10px 0 16px;margin-inline:auto;max-width:100%;border-radius:999px;border:1px solid transparent;transition:max-width .8s var(--ease),background .5s,border-color .5s,box-shadow .5s,height .6s var(--ease)}
.sh-hd .hd.is-scrolled .hd__bar{max-width:1080px;height:54px;background:rgba(249,244,236,.82);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-color:var(--line);box-shadow:0 12px 40px -18px rgba(38,13,60,.35)}
.sh-hd .hd__logo{justify-self:start}
.sh-hd .hd__logo img{height:40px;width:auto;transition:height .6s var(--ease)}
.sh-hd .hd.is-scrolled .hd__logo img{height:34px}
.sh-hd .hd__nav{display:flex;gap:clamp(14px,2vw,30px);font:500 13px/1 var(--body);white-space:nowrap}
.sh-hd .hd__it{display:contents}
.sh-hd .hd__nav a{position:relative;padding:8px 0}
.sh-hd .hd__nav a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.sh-hd .hd__nav a:hover::after,.sh-hd .hd__nav a[aria-current]::after{transform:scaleX(1);transform-origin:left}
.sh-hd .hd__nav a[aria-current]::after{background:var(--gold);height:2px;bottom:1px}
.sh-hd .hd__actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}
.sh-hd .hd__actions .btn{height:38px;padding:0 16px;font-size:11px}

/* Dining & Bars dropdown */
.sh-hd .hd__dd{position:relative;display:flex}
.sh-hd .hd__dd>a{display:inline-flex;align-items:center;gap:7px}
.sh-hd .hd__dd>a i{width:6px;height:6px;border-right:1.5px solid;border-bottom:1.5px solid;transform:translateY(-2px) rotate(45deg);transition:transform .5s var(--ease)}
.sh-hd .hd__dd:hover>a i,.sh-hd .hd__dd:focus-within>a i{transform:translateY(1px) rotate(225deg)}
.sh-hd .hd__sub{position:absolute;left:50%;top:100%;padding-top:16px;transform:translate(-50%,10px);opacity:0;visibility:hidden;transition:opacity .35s var(--ease),transform .55s var(--ease),visibility 0s .35s}
.sh-hd .hd__dd:hover .hd__sub,.sh-hd .hd__dd:focus-within .hd__sub{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
.sh-hd .hd__sub>div{display:grid;min-width:236px;padding:8px;border-radius:20px;background:var(--cream);color:var(--ink);border:1px solid var(--line);box-shadow:0 26px 50px -26px rgba(38,13,60,.5)}
.sh-hd .hd__nav .hd__sub a{display:flex;justify-content:space-between;align-items:baseline;gap:22px;padding:10px 14px;border-radius:13px;font:400 19px/1.15 var(--display);letter-spacing:-.01em;transition:background .35s}
.sh-hd .hd__nav .hd__sub a::after{content:"→";position:static;height:auto;background:none;font:400 13px/1 var(--body);opacity:0;transform:translateX(-8px);transition:opacity .35s,transform .5s var(--ease)}
.sh-hd .hd__nav .hd__sub a:hover,.sh-hd .hd__nav .hd__sub a:focus-visible{background:var(--sand)}
.sh-hd .hd__nav .hd__sub a:hover::after,.sh-hd .hd__nav .hd__sub a:focus-visible::after{opacity:1;transform:none}
.sh-hd .hd__nav .hd__sub a[aria-current]{font-style:italic}
.sh-hd .hd__nav .hd__sub a[aria-current]::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold);opacity:1;transform:none;align-self:center}

/* Burger + full-screen menu */
.sh-hd .burger{display:none;position:relative;z-index:95;width:44px;height:44px;place-items:center;border-radius:50%}
.sh-hd .burger i{position:absolute;width:20px;height:1.5px;background:currentColor;transition:transform .5s var(--ease)}
.sh-hd .burger i:first-child{transform:translateY(-4px)}
.sh-hd .burger i:last-child{transform:translateY(4px)}
.sh-hd.menu-open .burger i:first-child{transform:rotate(45deg)}
.sh-hd.menu-open .burger i:last-child{transform:rotate(-45deg)}
.sh-hd.menu-open .hd{transform:none}
.sh-hd.menu-open .hd__bar{background:transparent!important;border-color:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;color:var(--cream)}
.sh-hd.menu-open .hd__logo,.sh-hd.menu-open .hd__nav,.sh-hd.menu-open .hd__actions .btn{opacity:0;pointer-events:none}
.sh-hd .menu{position:fixed;inset:0;z-index:90;background:var(--menu-bg);color:var(--menu-fg);display:flex;flex-direction:column;justify-content:space-between;padding:clamp(88px,14vh,140px) clamp(24px,6vw,80px) clamp(28px,5vh,56px);clip-path:inset(0 0 100% 0);visibility:hidden;transition:clip-path .8s var(--ease-io),visibility 0s .8s;overflow-y:auto}
.sh-hd.menu-open .menu{clip-path:inset(0);visibility:visible;transition:clip-path .8s var(--ease-io),visibility 0s}
.sh-hd .menu__it{display:contents}
.sh-hd .menu__links a{display:block;font-family:var(--display);font-size:clamp(34px,6.4vw,76px);line-height:1.12;letter-spacing:-.02em;opacity:0;transform:translateY(30px);transition:opacity .5s var(--ease),transform .8s var(--ease),color .3s}
.sh-hd.menu-open .menu__links a{opacity:1;transform:none;transition-delay:calc(var(--i,0) * 60ms + 250ms)}
.sh-hd .menu__links a:hover{color:var(--menu-accent)}
.sh-hd .menu__links a[aria-current]{color:var(--menu-accent);font-style:italic}
.sh-hd .menu__sub{display:flex;flex-wrap:wrap;gap:0 20px;padding:4px 0 12px}
.sh-hd .menu__links .menu__sub a{display:inline-block;font:500 15px/2 var(--body);letter-spacing:0}
.sh-hd .menu__foot{display:flex;flex-wrap:wrap;gap:10px 32px;margin-top:40px;font-size:14px;opacity:.75}
.sh-hd .menu__extra{display:contents}

@media (max-width:1000px){
  .sh-hd .hd__nav,.sh-hd .hd__actions .btn:not(.btn--solid){display:none}
  .sh-hd .hd__bar{grid-template-columns:1fr auto}
  .sh-hd .burger{display:grid}
}
/* An announcement bar above the header (the builder's top region) pushes it down: --ve-top-offset is how much
   of the bar is still on screen. */
/* Editor canvas: the fixed header would cover the first section and follow the scroll */
[data-ve-mode=edit] .sh-hd{position:absolute;inset:0 0 auto;top:var(--ve-top-h,0px);z-index:50}
[data-ve-mode=edit] .sh-hd .hd{position:relative;top:0}
/* …but the burger still opens the menu like on the live site: pin the header (✕ stays reachable at any
   scroll position) and let the menu cover the canvas until it's closed again. */
[data-ve-mode=edit] .sh-hd.menu-open{position:fixed;top:0;z-index:95}
/* Re-opened after an edit re-render: appear as it was, without replaying the open animation. */
.sh-hd.menu-instant,.sh-hd.menu-instant *{transition:none!important}
/* Never show the open menu at desktop widths (no burger to close it); the behaviour also closes it. */
@media (min-width:1001px){.sh-hd.menu-open .menu{clip-path:inset(0 0 100% 0);visibility:hidden}.sh-hd.menu-open .hd__logo,.sh-hd.menu-open .hd__nav,.sh-hd.menu-open .hd__actions .btn{opacity:1;pointer-events:auto}.sh-hd.menu-open .hd__bar{color:inherit}[data-ve-mode=edit] .sh-hd.menu-open{position:absolute}}

/* ── section: site-footer ── */
.sf{padding-bottom:96px}
.sf__foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 40px;padding-top:26px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.sf__foot a{transition:color .3s}
.sf__foot a:hover{color:var(--ink)}
.sf__foot nav{display:flex;flex-wrap:wrap;gap:8px 22px}

/* ── section: about ── */
/* About: statement lights up word by word as it scrolls, aside + two photos */
.ab__grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(32px,6vw,110px);align-items:end}
.ab__statement{font-family:var(--display);font-size:clamp(28px,3.7vw,60px);line-height:1.12;letter-spacing:-.022em;margin-top:26px}
.ab__statement .sw{opacity:clamp(.16,calc((var(--p,0) - .12) * 2.6 * var(--n) - var(--i)),1)}
.ab__body p{color:var(--muted);max-width:42ch}
.ab__body p+p{margin-top:1em}
.ab__side .btn{margin-top:28px}
.ab__img{margin-top:clamp(40px,6vw,90px);display:grid;grid-template-columns:1.6fr 1fr;gap:var(--gap)}
.ab__img figure{border-radius:var(--r);overflow:hidden;aspect-ratio:16/10}
.ab__img figure:nth-child(2n){aspect-ratio:auto}
.ab__img img{width:100%;height:100%;object-fit:cover}
@media (max-width:1000px){.ab__grid{grid-template-columns:1fr}}
@media (max-width:640px){.ab__img{grid-template-columns:1fr}.ab__img figure:nth-child(2n){aspect-ratio:4/3}}

/* ── section: cta-strip ── */
/* Sand strip: one line of copy and buttons */
.cs{margin-top:var(--sec-top,0px);margin-bottom:var(--sec-bottom,0px)}
.cs__in{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;padding:clamp(18px,2vw,28px) clamp(20px,2.4vw,34px);border-radius:var(--r);background:var(--sand)}
.cs__in>p{font:400 clamp(20px,2vw,30px)/1.2 var(--display);letter-spacing:-.015em;max-width:30ch}

/* ── section: deals ── */
/* Mates Rates: a day picker built from the offers (behaviour), then the deals at a glance by venue */
.dl .glance{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);margin-top:clamp(40px,5vw,72px)}
.dl .glance article{padding-top:22px;border-top:1px solid var(--line)}
.dl .glance h3{font-size:clamp(24px,2.1vw,32px);display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.dl .glance h3 a{display:inline-flex;gap:10px;align-items:baseline}
.dl .glance h3 .arrow{font:400 15px var(--body)}
.dl .glance ul{margin-top:14px;border-top:1px solid var(--line);padding-right:18px}
.dl .glance li{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.45}
.dl .glance li b{font:400 22px/1.1 var(--display);letter-spacing:-.02em}
.dl .glance li small{display:block;font-size:12.5px;color:var(--muted)}
.dl__join{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;margin-top:clamp(28px,4vw,52px);padding:clamp(18px,2vw,28px) clamp(20px,2.4vw,34px);border-radius:var(--r);background:var(--sand)}
.dl__join>p{font:400 clamp(20px,2vw,30px)/1.2 var(--display);letter-spacing:-.015em;max-width:30ch}
@media (max-width:1000px){.dl .glance{grid-template-columns:1fr}.dl .glance ul{padding-right:0}}

/* ── section: dining-hero ── */
/* Banner: headline, then the six venues as tall slats that open as you move across them */
.dh{padding-top:80px}
.dh__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:clamp(24px,4vw,64px);align-items:end;padding-block:clamp(10px,1.6vw,22px) clamp(24px,3vw,44px)}
.dh h1{font-size:clamp(52px,7.6vw,122px);font-weight:300;line-height:.98;--base:250ms}
.dh h1 em{font-weight:300}
.dh__aside p{color:var(--muted)}
.dh__aside .cta{margin-top:20px}.dh .slats{display:flex;gap:var(--gap);margin-inline:var(--gap);height:clamp(400px,calc(100svh - 394px),640px)}.dh .slat{position:relative;flex:1 1 0;min-width:0;border-radius:var(--r);overflow:hidden;color:#fff;background:#1c0b2c;transition:flex-grow 1s var(--ease)}.js .dh .slat{clip-path:inset(100% 0 0 0 round var(--r));transition:flex-grow 1s var(--ease),clip-path 1.3s var(--ease-io) calc(var(--i) * 80ms + .25s)}.js.is-loaded .dh .slat{clip-path:inset(0 round var(--r))}.vt .dh .slat{clip-path:none!important}.dh .slat.is-active{flex-grow:3.7}.dh .slat img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.82;transition:opacity .8s}.dh .slat.is-active img{opacity:1}.dh .slat::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,.28) 0%,rgba(20,8,32,0) 30%,rgba(20,8,32,.1) 50%,rgba(20,8,32,.82) 100%);pointer-events:none}.dh .slat__n{position:absolute;z-index:1;left:20px;top:20px;font:500 11px/1 var(--body);letter-spacing:.14em;font-variant-numeric:tabular-nums}.dh .slat__v{position:absolute;z-index:1;left:50%;bottom:28px;writing-mode:vertical-rl;transform:translateX(-50%) rotate(180deg);font:400 clamp(20px,1.9vw,28px)/1 var(--display);letter-spacing:-.01em;white-space:nowrap;transition:opacity .35s}.dh .slat.is-active .slat__v{opacity:0}.dh .slat__body{position:absolute;z-index:1;left:0;bottom:0;width:min(520px,38vw);padding:clamp(20px,2.4vw,34px);opacity:0;transform:translateY(16px);transition:opacity .3s,transform .6s var(--ease)}.dh .slat.is-active .slat__body{opacity:1;transform:none;transition:opacity .6s .3s,transform .9s var(--ease) .3s}.dh .slat .eyebrow{color:rgba(255,255,255,.82)}.dh .slat h2{font-size:clamp(30px,3.4vw,54px);margin-top:10px}.dh .slat__d{margin-top:10px;max-width:36ch;font-size:15px;color:rgba(255,255,255,.86)}.dh .slat .status{margin-top:16px;font-size:13px}.dh .slat .tile__go{position:absolute;z-index:1;right:20px;top:14px;width:40px;height:40px;opacity:0;transition:opacity .4s,background .4s,color .4s,transform .6s var(--ease)}.dh .slat.is-active .tile__go{opacity:1}.dh .slat:hover .tile__go{background:#fff;color:var(--ink);transform:rotate(-45deg)}


@media (max-width:1000px){
  .dh__row{grid-template-columns:1fr}.dh .slats{display:grid;grid-template-columns:1fr 1fr;height:auto}.dh .slat,.dh .slat.is-active{aspect-ratio:4/3}.dh .slat img{opacity:1}.dh .slat__v{display:none}.dh .slat__body{width:100%;opacity:1;transform:none}.dh .slat .tile__go{opacity:1}
}
@media (max-width:640px){.dh .slats{grid-template-columns:1fr}.dh .slat,.dh .slat.is-active{aspect-ratio:16/11}.dh .slat__d{display:none}
}.dh /* Before behaviours run (and in the editor) the first slat is open */
.slats:not(.is-ready) .slat[data-first]{flex-grow:3.7}.dh .slats:not(.is-ready) .slat[data-first] img{opacity:1}.dh .slats:not(.is-ready) .slat[data-first] .slat__v{opacity:0}.dh .slats:not(.is-ready) .slat[data-first] .slat__body{opacity:1;transform:none}.dh .slats:not(.is-ready) .slat[data-first] .tile__go{opacity:1}
.dh .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.dh .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.dh .crumb a:hover{color:var(--ink)}
.dh .crumb i{font-style:normal;opacity:.5}
.dh .crumb [aria-current]{color:var(--ink)}

/* ── section: duo ── */
/* Photo beside copy, with label/value rows and buttons */
.du{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px);align-items:center}
.du--right figure{order:2}
.du figure{border-radius:var(--r);overflow:hidden;aspect-ratio:var(--du-ar,5/4)}
.du figure img{width:100%;height:100%;object-fit:cover}
.du h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 26px}
.du__body p{color:var(--muted);max-width:46ch}
.du__body p+p{margin-top:1em}
.du__body+dl{margin-top:26px}
.du dl{margin:0;border-top:1px solid var(--line)}
.du dl div{display:grid;grid-template-columns:120px 1fr;padding:16px 0;border-bottom:1px solid var(--line)}
.du dt{font:600 11px/1.8 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.du dd{margin:0}
.du__cta{display:flex;flex-wrap:wrap;gap:10px 6px;margin-top:28px}
@media (max-width:1000px){.du{grid-template-columns:1fr}}
@media (max-width:640px){.du dl div{grid-template-columns:1fr}}
/* Row style "names": big serif names with a small note on the right */
.du--rows-names dl div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0}
.du--rows-names dt{font:400 clamp(21px,2vw,29px)/1.6 var(--display);letter-spacing:-.015em;text-transform:none;color:var(--ink)}
.du--rows-names dd{font:500 12.5px/1.3 var(--body);color:var(--muted);text-align:right}
.du--rows-names dd a{color:inherit}

/* ── section: fan-hero ── */
/* Fan banner: breadcrumb, centred headline, then three photos — the middle one wipes up, the outer two slide out from behind it */
.mh{padding:80px var(--pad) 0}
.mh__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.mh__crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.mh__crumb a:hover{color:var(--ink)}
.mh__crumb a:hover .arrow{transform:translateX(-4px)}
.mh__crumb i{font-style:normal;opacity:.5}
.mh__crumb [aria-current]{color:var(--ink)}
.mh__copy{display:grid;justify-items:center;text-align:center;padding-top:clamp(4px,1.4vw,20px)}
.mh h1{font-size:clamp(44px,6.4vw,102px);font-weight:300;max-width:13ch;margin-top:20px;--base:300ms}
.mh h1 em{font-weight:300}
.mh .lede{margin-top:22px;max-width:54ch}
.mh .cta{margin-top:26px;justify-content:center}
.mh__fan{display:grid;grid-template-columns:1fr 1.7fr 1fr;align-items:end;gap:var(--gap);margin-top:clamp(40px,4.6vw,68px)}
.mh__fan figure{border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.mh__fan img{width:100%;height:100%;object-fit:cover}
.mh__a,.mh__c{aspect-ratio:1;transition:opacity 1s var(--ease) .9s,transform 1.5s var(--ease) .9s}
.mh__a{grid-column:1;transform:rotate(-2.5deg) translateY(-20px)}
.mh__c{grid-column:3;transform:rotate(2.5deg) translateY(-20px)}
.mh__b{grid-column:2;grid-row:1;position:relative;z-index:1;aspect-ratio:3/2}
.js:not(.is-loaded) .mh__a{opacity:0;transform:translate(70%,24px)}
.js:not(.is-loaded) .mh__c{opacity:0;transform:translate(-70%,24px)}
.js .mh__b{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.5s var(--ease-io) .1s}
.js.is-loaded .mh__b{clip-path:inset(0 round var(--r))}
.js .mh__b img{transform:scale(1.2);transition:transform 2.6s var(--ease) .1s}
.js.is-loaded .mh__b img{transform:none}
@media (max-width:640px){
  .mh__fan{grid-template-columns:1fr 1fr}
  .mh__b{grid-column:1/-1;grid-row:1}
  .mh__a,.mh__c{grid-row:2;aspect-ratio:4/3;margin-top:-34px;border:6px solid var(--cream);z-index:2}
  .mh__a{grid-column:1;transform:rotate(-2deg)}
  .mh__c{grid-column:2;transform:rotate(2deg)}
}

/* ── section: form-split ── */
/* Form beside copy: a mock-up form (never sends) next to a heading, the club's phone/email/address, details rows and an accordion */
.fsp{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,6vw,110px);align-items:start}
.fsp--left{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,5vw,90px)}
.fsp--left .fsp__form{order:-1}
.fsp h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 26px}
.fsp--left h2{margin-bottom:22px}
.fsp__big{display:block;font:300 clamp(34px,4.2vw,66px)/1.05 var(--display);letter-spacing:-.03em;margin-bottom:26px;white-space:nowrap}
.fsp__body p{color:var(--muted);max-width:44ch}
.fsp__body p+p{margin-top:1em}
.fsp__body a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.fsp__body+.rows{margin-top:26px}
.fsp .rows:not(:has(div)){display:none}
/* Accordion */
.fsp__terms{margin-top:28px;border-top:1px solid var(--line)}
.fsp__terms details{border-bottom:1px solid var(--line)}
.fsp__terms summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;cursor:pointer;list-style:none;font-family:var(--display);font-size:clamp(20px,1.8vw,26px);letter-spacing:-.01em}
.fsp__terms summary::-webkit-details-marker{display:none}
.fsp__terms summary::after{content:"+";flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font:400 17px/1 var(--body);transition:transform .6s var(--ease),background .4s,color .4s}
.fsp__terms summary:hover::after{background:var(--ink);color:var(--cream)}
.fsp__terms details[open] summary::after{transform:rotate(45deg)}
.fsp__ans{padding:0 50px 18px 0;color:var(--muted);font-size:14.5px;animation:rowin .7s var(--ease) both}
.fsp__ans p+p{margin-top:.8em}
.fsp__ans a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
/* Form fields: one control per field kind (the others are removed by the behaviour) */
.fsp .field[data-full]{grid-column:1/-1}
.fsp .field:not([data-kind=textarea]) textarea,.fsp .field:not([data-kind=select]) select,.fsp .field[data-kind=textarea] input,.fsp .field[data-kind=select] input{display:none}
.fsp .field input[type=date]{min-height:46px}
[data-ve-mode=edit] .fsp .form__note[hidden]{display:flex}
@media (max-width:1000px){.fsp,.fsp--left{grid-template-columns:1fr}}
@media (max-width:640px){.fsp__ans{padding-right:0}}
.fsp .rows dd a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color .3s}
.fsp .rows dd a:hover{color:var(--gold)}

/* ── section: giving ── */
/* Giving back: sticky headline and numbers beside a numbered list of milestones, then a row of captioned archive photos */
.gv__grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(28px,6vw,110px);align-items:start}
.gv__lead{position:sticky;top:110px}
.gv__lead h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.gv__lead .stats{grid-template-columns:1fr 1fr;margin-top:clamp(28px,3.4vw,48px)}
.gv__lead .stat b{font-size:clamp(40px,4.4vw,72px)}
.gv__list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.gv__list li{display:grid;grid-template-columns:44px 1fr;align-items:baseline;gap:8px;padding:22px 0 20px;border-bottom:1px solid var(--line);font-family:var(--display);font-size:clamp(21px,2.1vw,32px);line-height:1.16;letter-spacing:-.018em;transition:padding .7s var(--ease),color .4s}
.gv__n{font:500 11px/1 var(--body);letter-spacing:.14em;color:var(--gold)}
.gv__list li:hover{padding-left:10px;font-style:italic}
.gv__arch{display:grid;grid-template-columns:1.12fr 1fr 1fr;gap:clamp(20px,2.4vw,36px) var(--gap);align-items:end;margin-top:clamp(48px,6vw,96px)}
.gv__arch figure{margin:0}
.gv__f{border-radius:var(--r);overflow:hidden;background:var(--sand)}
.gv__f img{display:block;width:100%;height:auto;transition:transform 1.4s var(--ease)}
.gv__arch figure:hover img{transform:scale(1.03)}
.gv__cap{display:flex;gap:10px;margin-top:12px;font-size:13px;line-height:1.45;color:var(--muted)}
.gv__cap b{flex:none;font:600 10.5px/1.75 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
@media (max-width:1000px){
  .gv__grid{grid-template-columns:1fr}
  .gv__lead{position:static}
}
@media (max-width:640px){
  .gv__lead .stats{grid-template-columns:1fr}
  .gv__arch{grid-template-columns:1fr}
  .gv__cap{flex-direction:column;gap:2px}
}

/* ── section: hero ── */
/* Home banner: full-bleed slideshow in a rounded frame that opens up on load, with numbered tabs */
.hh{padding:80px var(--gap) 0}
.hh__frame{position:relative;height:calc(100svh - 92px);min-height:520px;border-radius:var(--r);overflow:hidden;background:#1c0b2c;color:#fff;view-transition-name:home-hero}
.js .hh__frame{clip-path:inset(6% 4% round var(--r));transition:clip-path 1.5s var(--ease-io)}
.js.is-loaded .hh__frame,.vt .hh__frame{clip-path:inset(0 round var(--r))}
.vt .hh__frame{transition:none}
.hh__media{position:absolute;inset:-8% 0;transform:translate3d(0,calc(var(--sy,0) * .14px),0)}
.hh__slide{position:absolute;inset:0;opacity:0;transition:opacity 1.8s var(--ease-io)}
.hh__slide:first-child{opacity:1}
.hh__media.is-ready .hh__slide{opacity:0}
.hh__slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.14);transition:transform 9s linear}
.hh__media.is-ready .hh__slide.is-active{opacity:1}
.hh__slide.is-active img{transform:scale(1)}
.hh__frame::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,.2) 0%,rgba(20,8,32,0) 26%,rgba(20,8,32,0) 46%,rgba(20,8,32,.72) 100%),linear-gradient(75deg,rgba(20,8,32,.5),rgba(20,8,32,0) 55%);pointer-events:none}
.hh__content{position:absolute;z-index:2;inset:auto 0 0;display:grid;grid-template-columns:1fr auto;align-items:end;gap:32px;padding:clamp(22px,3.6vw,52px)}
.hh h1{font-size:clamp(40px,6.3vw,104px);font-weight:300;max-width:13ch;--base:500ms}
.hh h1 em{font-style:italic;font-weight:300}
.hh__sub{margin-top:22px;display:flex;flex-wrap:wrap;gap:10px}
.js .hh__sub{opacity:0;transform:translateY(16px);transition:opacity 1s var(--ease) 1.3s,transform 1s var(--ease) 1.3s}
.js.is-loaded .hh__sub{opacity:1;transform:none}
.hh__tabs{display:grid;gap:2px;min-width:230px}
.js .hh__tabs{opacity:0;transition:opacity 1s 1.5s}
.js.is-loaded .hh__tabs{opacity:1}
.hh__tab{position:relative;display:flex;gap:14px;align-items:baseline;padding:11px 0;text-align:left;font:500 13px/1.2 var(--body);opacity:.6;transition:opacity .4s}
.hh__tab b{font-weight:500}
.hh__tab span{font-variant-numeric:tabular-nums;font-size:11px;opacity:.75}
.hh__tab::before,.hh__tab::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:rgba(255,255,255,.28)}
.hh__tab::after{background:#fff;transform:scaleX(0);transform-origin:left}
.hh__tab.is-active,.hh__tab:hover{opacity:1}
.hh__tab.is-active::after{animation:hh-fill var(--interval,6000ms) linear forwards}
@keyframes hh-fill{to{transform:scaleX(1)}}
@media (max-width:640px){
  .hh__content{grid-template-columns:1fr}
  .hh__tabs{grid-template-columns:repeat(3,1fr);gap:10px;min-width:0}
  .hh__tab{padding:8px 0}
  .hh__tab b{display:none}
}

/* ── section: impact-panel ── */
/* Ink panel: headline, intro, two big numbers, then short columns with optional buttons */
.ip .stats{grid-template-columns:1fr 1fr}
.ip__more{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,72px);margin-top:clamp(36px,4.6vw,64px)}
.ip__more h3{font-size:clamp(24px,2.3vw,34px)}
.ip__more p{margin-top:10px;color:rgba(249,244,236,.76);max-width:44ch}
.ip__more .btn{margin-top:20px}
@media (max-width:640px){.ip .stats,.ip__more{grid-template-columns:1fr}}

/* ── section: join-steps ── */
/* Ink panel with step cards side by side (join / renew). Cards can carry their own #anchor and light up when targeted. */
.jn__cards{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--gap);margin-top:clamp(36px,5vw,72px)}
.jn__card{display:flex;flex-direction:column;padding:clamp(22px,2.8vw,40px);border-radius:18px;border:1px solid rgba(249,244,236,.18);background:rgba(249,244,236,.04);transition:border-color .8s,background .8s}
.jn__card:target{border-color:var(--gold-soft);background:rgba(233,201,143,.09)}
.jn__card h3{font-size:clamp(26px,2.8vw,42px);margin-top:14px}
.jn__card ol{list-style:none;padding:0;margin:26px 0 30px}
.jn__card li{display:grid;grid-template-columns:44px 1fr;padding:15px 0;border-top:1px solid rgba(249,244,236,.16);color:rgba(249,244,236,.76);font-size:15px}
.jn__n{font:500 11px/2.3 var(--body);letter-spacing:.14em;color:var(--gold-soft)}
.jn__card li b{display:block;font:400 clamp(19px,1.6vw,23px)/1.25 var(--display);letter-spacing:-.01em;color:var(--cream)}
.jn__card .cta{margin-top:auto}
.jn__help{margin-top:26px;color:rgba(249,244,236,.76);font-size:15px}
.jn__help a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color .3s}
.jn__help a:hover{color:var(--gold-soft)}
@media (max-width:1000px){.jn__cards{grid-auto-flow:row}}

/* ── section: link-panel ── */
/* Dark panel: numbered list of links (e.g. menus) beside a photo with a second photo tucked over its corner */
.lkp__grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,6vw,100px);align-items:center}
.lkp__list{margin-top:clamp(28px,4vw,48px);border-top:1px solid rgba(249,244,236,.2)}
.lkp__list a{position:relative;display:grid;grid-template-columns:44px 1fr auto;align-items:baseline;gap:8px;padding:21px 0 19px;border-bottom:1px solid rgba(249,244,236,.2)}
.lkp__list a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:#e9c98f;transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.lkp__list a:hover::after{transform:scaleX(1)}
.lkp__n{font:500 11px/1 var(--body);letter-spacing:.14em;color:#e9c98f}
.lkp__t{font-family:var(--display);font-size:clamp(24px,2.7vw,42px);line-height:1.08;letter-spacing:-.02em;transition:transform .7s var(--ease)}
.lkp__list a:hover .lkp__t{font-style:italic;transform:translateX(6px)}
.lkp__tag{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;padding:7px 11px;border-radius:999px;border:1px solid rgba(249,244,236,.3);white-space:nowrap}
.lkp__pics{position:relative;padding:0 0 14% 16%}
.lkp__pics figure{border-radius:18px;overflow:hidden}
.lkp__pics img{width:100%;height:100%;object-fit:cover}
.lkp__pics figure:first-child{aspect-ratio:3/2}
.lkp__pics figure+figure{position:absolute;left:0;bottom:0;width:46%;aspect-ratio:1;border:8px solid var(--ink);border-radius:var(--r)}
@media (max-width:1000px){.lkp__grid{grid-template-columns:1fr}}
@media (max-width:640px){
  .lkp__list a{grid-template-columns:32px 1fr}
  .lkp__tag{display:none}
}

/* ── section: location ── */
/* Getting here: photo with an address pin beside the address, extra details and directions / call buttons (from site settings) */
.loc{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,110px);align-items:center}
.loc--right figure{order:2}
.loc figure{position:relative;aspect-ratio:5/4}
.loc figure>div{height:100%;border-radius:var(--r);overflow:hidden}
.loc figure img{width:100%;height:100%;object-fit:cover;transform:translate3d(0,calc((var(--p,.5) - .5) * -8%),0) scale(1.12)}
.loc__pin{position:absolute;left:clamp(14px,1.8vw,24px);bottom:clamp(14px,1.8vw,24px);display:flex;align-items:center;gap:14px;padding:14px 20px 14px 18px;border-radius:999px;background:rgba(249,244,236,.94);color:var(--ink);font:500 14px/1.3 var(--body);box-shadow:0 20px 40px -22px rgba(38,13,60,.6)}
.loc__pin i{flex:none;position:relative;width:10px;height:10px;border-radius:50%;background:var(--gold)}
.loc__pin i::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--gold);animation:ping 2.4s var(--ease) infinite}
.loc__pin b{display:block;font:400 19px/1.1 var(--display);letter-spacing:-.01em}
.loc__pin span>span{display:block}
.loc h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.loc .cta{margin-top:28px}
@media (max-width:1000px){.loc{grid-template-columns:1fr}.loc--right figure{order:0}}
@media (max-width:640px){.loc__pin{right:14px}}
.loc dd a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color .3s}
.loc dd a:hover{color:var(--gold)}

/* ── section: member-band ── */
/* Ink band with a drifting gold glow, buttons and big count-up numbers */
.mb{margin-inline:var(--gap);padding:clamp(48px,7vw,110px) calc(var(--pad) - var(--gap));border-radius:var(--r);background:var(--ink);color:var(--cream);position:relative;overflow:hidden}
.mb::before{content:"";position:absolute;width:70vw;height:70vw;right:-25vw;top:-35vw;border-radius:50%;background:radial-gradient(closest-side,rgba(201,150,63,.34),transparent);animation:mb-drift 16s ease-in-out infinite alternate;pointer-events:none}
@keyframes mb-drift{to{transform:translate(-12vw,10vw) scale(1.15)}}
.mb>*{position:relative}
.mb .eyebrow{color:rgba(249,244,236,.7)}
.mb h2{font-size:clamp(36px,5.4vw,88px);max-width:14ch;margin-top:20px}
.mb h2 em{font-style:italic;color:var(--gold-soft)}
.mb__row{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:end;margin-top:28px}
.mb__row>p{max-width:52ch;color:rgba(249,244,236,.76)}
.mb__cta{display:flex;gap:10px;flex-wrap:wrap}
.mb__stats{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(44px,6vw,88px);border-top:1px solid rgba(249,244,236,.2)}
.mb__stat{padding:26px 24px 0 0}
.mb__stat+.mb__stat{padding-left:24px;border-left:1px solid rgba(249,244,236,.2)}
.mb__stat b{display:block;font:300 clamp(48px,6.4vw,104px)/1 var(--display);letter-spacing:-.03em}
.mb__stat>span{display:block;margin-top:10px;font-size:14px;color:rgba(249,244,236,.72)}
@media (max-width:1000px){.mb__row{grid-template-columns:1fr}}
@media (max-width:640px){
  .mb__stats{grid-template-columns:1fr;border-top:0}
  .mb__stat,.mb__stat+.mb__stat{padding:22px 0;border-left:0;border-top:1px solid rgba(249,244,236,.2)}
}

/* ── section: mosaic-hero ── */
/* Mosaic banner: one tall photo and two stacked ones on the left (captions in pills), breadcrumb and headline on the right */
.mhr{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);gap:clamp(28px,4.6vw,76px);padding:80px var(--pad) 0 var(--gap)}
.mhr__media{display:grid;grid-template-columns:1.55fr 1fr;grid-template-rows:1fr 1fr;gap:var(--gap);height:calc(100svh - 92px);min-height:560px;max-height:860px}
.mhr__media figure{position:relative;border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.mhr__media figure[data-first]{grid-row:1/3;view-transition-name:fn-hero}
.mhr__media figure:nth-child(n+4){display:none}
.mhr__par{position:absolute;inset:0}
.mhr__media figure[data-first] .mhr__par{inset:-6% 0;transform:translate3d(0,calc(var(--sy,0) * .1px),0)}
.mhr__media img{width:100%;height:100%;object-fit:cover}
.js .mhr__media figure{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.4s var(--ease-io) calc(var(--k,0) * .22s + .1s)}
.js.is-loaded .mhr__media figure{clip-path:inset(0 round var(--r))}
.js .mhr__media img{transform:scale(1.2);transition:transform 2.6s var(--ease) calc(var(--k,0) * .22s + .1s)}
.js.is-loaded .mhr__media img{transform:none}
.mhr__media figcaption{position:absolute;left:12px;bottom:12px;padding:7px 12px;border-radius:999px;background:rgba(249,244,236,.9);color:var(--ink);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase}
.mhr__copy{display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding-bottom:clamp(18px,3vw,44px)}
.mhr__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.mhr__crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.mhr__crumb a:hover{color:var(--ink)}
.mhr__crumb a:hover .arrow{transform:translateX(-4px)}
.mhr__crumb i{font-style:normal;opacity:.5}
.mhr__crumb [aria-current]{color:var(--ink)}
.mhr h1{font-size:clamp(46px,6vw,98px);font-weight:300;max-width:10ch;margin-top:22px;--base:350ms}
.mhr h1 em{font-weight:300}
.mhr .lede{margin-top:24px}
.mhr .cta{margin-top:26px}
.mhr__tel{margin-top:26px;font-size:14px;color:var(--muted)}
.mhr__tel a{color:var(--ink)}
@media (max-width:1000px){
  .mhr{grid-template-columns:1fr;padding-inline:var(--gap)}
  .mhr__copy{order:-1;padding-inline:calc(var(--pad) - var(--gap));padding-top:6px;padding-bottom:0}
  .mhr__media{height:86vw;min-height:0;max-height:640px}
}

/* ── section: open-hours ── */
/* Open day by day: pick a day, see every venue's hours (from the venues) plus extra rows such as the courtesy bus */
.ohs__panel{padding:clamp(16px,2.4vw,36px);border-radius:var(--r);background:var(--sand)}
.ohs__title{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:clamp(28px,3.2vw,50px);margin-top:clamp(22px,3vw,40px)}
.ohs__title:empty{display:none}
.ohs__list{margin-top:18px;border-top:1px solid var(--line)}
.ohs__list--more{margin-top:0;border-top:0}
.ohs__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;align-items:center;gap:6px 20px;padding:17px 0;border-bottom:1px solid var(--line)}
.ohs__panel.is-ready .ohs__row{animation:rowin .9s var(--ease) both;animation-delay:calc(var(--i) * 80ms)}
.ohs__row b{display:block;font:400 clamp(22px,2.2vw,32px)/1.1 var(--display);letter-spacing:-.02em;transition:transform .6s var(--ease)}
.ohs__row:hover b{font-style:italic;transform:translateX(4px)}
.ohs__row small{display:block;margin-top:4px;font-size:13.5px;color:var(--muted)}
.ohs__hrs{font-size:15px;line-height:1.5;font-variant-numeric:tabular-nums}
/* Before the day picker runs (and without script) the first day is shown */
.ohs__hrs>span{display:none}
.ohs__panel:not(.is-ready) .ohs__hrs>span:first-child,.ohs__hrs>span.is-sel{display:block}
.ohs__row.is-shut b,.ohs__row.is-shut .ohs__hrs{color:var(--muted)}
.ohs__go{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:background .4s,color .4s,transform .6s var(--ease)}
.ohs__row:hover .ohs__go{background:var(--ink);color:var(--cream);transform:rotate(-45deg)}
.ohs__row--down .ohs__go{transform:rotate(90deg)}
.ohs__row--down:hover .ohs__go{transform:rotate(90deg) translateX(3px)}
.ohs__note{margin-top:18px;font-size:13px;color:var(--muted)}
.ohs .days button{cursor:pointer}
@media (max-width:640px){
  .ohs__panel{margin-inline:calc(var(--gap) - var(--pad))}
  .ohs__row{grid-template-columns:minmax(0,1fr) 44px}
  .ohs__hrs{grid-column:1;grid-row:2}
  .ohs__go{grid-row:1/3;grid-column:2}
}

/* ── section: photo-banner ── */
/* Photo banner: one wide photo with the headline over it, and a card with what you need today */
.pbn{position:relative;padding:80px var(--gap) 0}
.pbn__frame{position:relative;height:calc(100svh - 92px);min-height:540px;max-height:860px;border-radius:var(--r);overflow:hidden;background:#1c0b2c;color:#fff}
.js .pbn__frame{clip-path:inset(0 0 100% 0 round var(--r));transition:clip-path 1.5s var(--ease-io) .1s}
.js.is-loaded .pbn__frame{clip-path:inset(0 round var(--r))}
.pbn__par{position:absolute;inset:-8% 0;transform:translate3d(0,calc(var(--sy,0) * .14px),0)}
.pbn__par img{width:100%;height:100%;object-fit:cover}
.js .pbn__frame img{transform:scale(1.16);transition:transform 2.8s var(--ease) .1s}
.js.is-loaded .pbn__frame img{transform:none}
.pbn__frame::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,.34) 0%,rgba(20,8,32,0) 24%,rgba(20,8,32,0) 44%,rgba(20,8,32,.74) 100%),linear-gradient(75deg,rgba(20,8,32,.45),rgba(20,8,32,0) 55%);pointer-events:none}
.pbn__top{position:absolute;z-index:2;inset:0 0 auto;padding:clamp(14px,2vw,26px) clamp(22px,3.6vw,52px)}
.pbn__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:#fff}
.pbn__crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;color:rgba(255,255,255,.8);transition:color .3s}
.pbn__crumb a:hover{color:#fff}
.pbn__crumb a:hover .arrow{transform:translateX(-4px)}
.pbn__crumb i{font-style:normal;opacity:.5}
.pbn__crumb [aria-current]{color:#fff}
.pbn__copy{position:absolute;z-index:2;inset:auto 0 0;padding:clamp(22px,3.6vw,52px);max-width:calc(100% - 420px)}
.pbn .eyebrow{color:rgba(255,255,255,.82)}
.pbn h1{font-size:clamp(46px,7vw,112px);font-weight:300;margin-top:18px;--base:500ms}
.pbn h1 em{font-weight:300}
.pbn__lede{margin-top:20px;max-width:44ch;color:rgba(255,255,255,.86);font-size:clamp(16px,1.25vw,18px)}
.pbn__card{position:absolute;z-index:3;right:calc(var(--gap) + clamp(14px,2vw,28px));bottom:clamp(14px,2vw,28px);width:min(372px,calc(100% - 2 * var(--gap) - 28px));padding:22px 22px 20px;border-radius:20px;background:rgba(249,244,236,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--ink);transition:opacity 1s var(--ease) 1.4s,transform 1.2s var(--ease) 1.4s}
.js:not(.is-loaded) .pbn__card{opacity:0;transform:translateY(24px)}
.pbn__card .eyebrow{color:var(--muted)}
.pbn__card h2{font-size:26px;letter-spacing:-.015em;margin-top:12px}
.pbn__card ul{margin-top:14px;border-top:1px solid var(--line)}
.pbn__card li{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.pbn__card li>span:first-child{color:var(--muted)}
.pbn__card li>span:last-child{text-align:right}
.pbn__card .cta{margin-top:16px}
.pbn__card .btn{height:40px;padding:0 16px;font-size:11px}
@media (max-width:1000px){
  .pbn__frame{height:auto;min-height:0;max-height:none;aspect-ratio:4/3.3}
  .pbn__copy{max-width:none}
  .pbn__card{position:relative;right:auto;bottom:auto;width:auto;margin:var(--gap) 0 0;background:var(--sand);backdrop-filter:none;-webkit-backdrop-filter:none}
}
@media (max-width:640px){
  .pbn__frame{aspect-ratio:auto;height:max(440px,72svh)}
}

/* ── section: photo-tiles ── */
/* Photo tiles: "feature" = one tall tile beside a column of two; "pair" = 1.5fr + 1fr; "three" = 1.3fr 1fr 1fr */
.pt .tile{view-transition-name:var(--vt)}
.pt__grid{display:grid;gap:var(--gap)}
.pt .tile{min-height:clamp(320px,36vw,540px)}
.pt--pair .pt__grid{grid-template-columns:1.5fr 1fr}
.pt--three .pt__grid{grid-template-columns:1.3fr 1fr 1fr}
.pt--three-equal .pt__grid{grid-template-columns:repeat(3,1fr)}
.pt--feature .pt__grid{grid-template-columns:1.25fr 1fr;grid-template-rows:auto auto;grid-auto-flow:column}
.pt--feature .tile{min-height:300px}
.pt--feature .tile[data-first]{grid-row:span 2;min-height:clamp(520px,58vw,820px)}
@media (max-width:1000px){
  .pt--three-equal .tile{min-height:280px}
  .pt--feature .pt__grid{grid-template-columns:1fr;grid-auto-flow:row}
  .pt--feature .tile[data-first]{grid-row:auto}
  .pt--three .pt__grid{grid-template-columns:1fr 1fr}
  .pt--three .tile[data-first]{grid-column:1/-1}
}
@media (max-width:640px){
  .pt--pair .pt__grid,.pt--three .pt__grid,.pt--three-equal .pt__grid{grid-template-columns:1fr}
  .pt .tile{min-height:300px}
}

/* ── section: pick-list ── */
/* Pick list: one item open at a time, its image on the stage beside it. Tone: ink panel, sand panel or plain. */
.pl__box.plain{padding-inline:var(--pad)}
/* Before behaviours run (and in the editor) the first item is open and its image shown */
.pl .pick:not(.is-ready) .pick__list li[data-first]::after{transform:scaleX(1)}
.pl .pick:not(.is-ready) .pick__list li[data-first] button{opacity:1}
.pl .pick:not(.is-ready) .pick__list li[data-first] .pick__t{font-style:italic;transform:translateX(6px)}
.pl .pick:not(.is-ready) .pick__list li[data-first] .pick__d{grid-template-rows:1fr}
.pl .pick:not(.is-ready) .pick__list li[data-first] .pick__d>div{opacity:1}
.pl .pick:not(.is-ready) .pick__stage img[data-first]{opacity:1;transform:none}
.pl__lede{margin-top:22px;max-width:50ch;color:var(--pk-soft)}
.pl .mq span[data-list]{display:contents}
.pl .mq{margin-top:clamp(44px,6vw,88px)}
.pl__box.panel .mq,.pl__box.plain .mq{border-top-color:var(--line)}
.pl__box.panel .mq span::after,.pl__box.plain .mq span::after{background:var(--gold)}
/* Editor: everything readable, no hidden descriptions */
[data-ve-mode=edit] .pl .pick__d{grid-template-rows:1fr}
[data-ve-mode=edit] .pl .pick__d>div{opacity:1}
/* Marquee runs to the panel's bottom edge (v1 .ink--flush) */
.pl__box.ink:has(> .mq),.pl__box.panel:has(> .mq){padding-bottom:0}
.pl__title{display:flex;align-items:center;gap:clamp(14px,2vw,28px);flex-wrap:wrap}
.pl__logo{width:clamp(90px,10vw,150px);height:auto;transform:rotate(-6deg);border-radius:10px;margin-top:18px}
.pl .pick__tag[data-hot]{border-color:var(--pk-accent);color:var(--pk-accent)}
.pl__note{margin-top:22px;max-width:52ch;font-size:13.5px;color:var(--pk-soft)}
/* Descriptions are richtext: style the wrapper so plain text and paragraphs look the same */
.pl .pick__d>div{overflow:hidden;min-height:0;padding-left:52px;max-width:52ch;color:var(--pk-soft);opacity:0;transition:opacity .5s}
.pl .pick__d>div::after{content:"";display:block;height:22px}
.pl .pick__d>div p+p{margin-top:.6em}
.pl .pick__d a{color:var(--pk-accent);white-space:nowrap;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.pl__box.plain .pick__d a,.pl__box.panel .pick__d a{color:var(--ink)}
.pl .pick__list li.is-active .pick__d>div{opacity:1;transition-delay:.15s}
.pl__box.plain h2,.pl__box.panel h2{font-size:clamp(36px,5.2vw,84px);margin-top:18px}
.pl__count{display:none}
@media (max-width:640px){.pl .pick__d>div{padding-left:40px}}

/* Layout "head": heading row across the top (buttons on the right), list beside a sticky photo with a counter */
.pl--head .pick{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-template-areas:"intro intro" "list stage" "note stage";align-items:start;column-gap:clamp(28px,5vw,90px)}
.pl--head .pick>div:first-child{display:contents}
.pl--head .pl__intro{grid-area:intro;margin-bottom:clamp(28px,4vw,56px)}
.pl--head .pick__foot{grid-area:intro;justify-self:end;align-self:end;margin:0 0 clamp(28px,4vw,56px)}
.pl--head .pl__intro{padding-right:clamp(180px,22vw,320px)}
.pl--head .pick__list{grid-area:list;margin-top:0}
.pl--head .pl__note{grid-area:note}
.pl--head .pick__stage{grid-area:stage;position:sticky;top:96px;aspect-ratio:4/5;max-height:calc(100svh - 124px);width:100%;align-self:start}
.pl--head .pl__count:not(:empty){display:block;position:absolute;right:16px;bottom:16px;z-index:1;padding:9px 13px;border-radius:999px;background:rgba(249,244,236,.92);color:var(--ink);font:600 11px/1 var(--body);letter-spacing:.14em;font-variant-numeric:tabular-nums}
@media (max-width:1000px){
  .pl--head .pick{grid-template-columns:1fr;grid-template-areas:"intro" "foot" "stage" "list" "note"}
  .pl--head .pl__intro{padding-right:0;margin-bottom:20px}
  .pl--head .pick__foot{grid-area:foot}
  .pl--head .pick__foot{justify-self:start}
  .pl--head .pick__stage{position:relative;top:auto;aspect-ratio:16/10;max-height:none;margin-bottom:24px}
}
/* components.css styles .pick__d p for plain markup — neutralise it inside the richtext wrapper */
.pl .pick__d>div p{overflow:visible;padding:0;max-width:none;opacity:1;color:inherit}
.pl .pick__d>div p::after{content:none}

/* ── section: quick-links ── */
.ql{padding:18px var(--pad) 0}
.ql__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0 28px}
.ql a{position:relative;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 0;font-family:var(--display);font-size:clamp(19px,1.7vw,25px);letter-spacing:-.01em;line-height:1.2}
.ql a::before,.ql a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line)}
.ql a::after{background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.ql a:hover::after{transform:scaleX(1)}
.ql small{display:block;font:500 12px/1.3 var(--body);color:var(--muted);letter-spacing:0;margin-top:4px}
@media (max-width:1000px){.ql__grid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.ql__grid{grid-template-columns:1fr}}

/* ── section: space-cards ── */
/* Space cards: photo, setting tag, capacity, details and an Enquire button that fills in the enquiry form. Fades the ones the finder rules out. */
.spc__sub{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:clamp(20px,2.4vw,32px)}
.spc__sub h3{font-size:clamp(28px,3.2vw,50px)}
.spc__sub p{color:var(--muted);font-size:14.5px;max-width:48ch;text-align:right}
.spc__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(28px,3vw,44px) var(--gap)}
.spc__card{display:flex;flex-direction:column}
.spc__card>*{transition:opacity .7s var(--ease),filter .7s var(--ease)}
.spc__img{position:relative;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:var(--sand)}
.spc__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.spc__card:hover .spc__img img{transform:scale(1.05)}
.spc__tag{position:absolute;left:14px;top:14px;padding:7px 12px;border-radius:999px;background:rgba(249,244,236,.9);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase}
.spc__fit{position:absolute;right:14px;top:14px;padding:7px 12px;border-radius:999px;background:var(--ink);color:var(--cream);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;opacity:0;transform:translateY(-6px);transition:opacity .5s,transform .6s var(--ease)}
.spc.is-finding .spc__fit{opacity:1;transform:none}
.spc__card.is-out .spc__fit{background:rgba(249,244,236,.9);color:var(--ink)}
.spc__card.is-out>*{opacity:.4;filter:grayscale(.7)}
.spc__card.is-out:hover>*,.spc__card.is-out:focus-within>*{opacity:1;filter:none}
.spc__top{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin-top:18px}
.spc h4{font:400 clamp(24px,2.1vw,32px)/1.08 var(--display);letter-spacing:-.022em}
.spc__cap{flex:none;font:500 13px/1 var(--body);color:var(--muted);white-space:nowrap}
.spc__cap b{font:400 clamp(24px,2.1vw,32px)/1 var(--display);letter-spacing:-.02em;color:var(--ink);margin-right:5px}
.spc__d{color:var(--muted);font-size:14.5px;margin-top:10px}
.spc dl{margin:16px 0 0;border-top:1px solid var(--line);font-size:14px}
.spc dl div{display:grid;grid-template-columns:92px 1fr;gap:8px;padding:10px 0;border-bottom:1px solid var(--line);line-height:1.45}
.spc dt{font:600 10.5px/2 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.spc dd{margin:0}
.spc .btn{align-self:flex-start;margin-top:18px;height:40px;padding:0 16px;font-size:11px}
.spc__end{margin-top:auto}
.spc__card[data-wide]{grid-column:span 2}
.spc__card[data-wide] .spc__img{aspect-ratio:8/3}
@media (max-width:1000px){
  .spc__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .spc__sub{flex-direction:column;align-items:start}
  .spc__sub p{text-align:left}
  .spc__grid{grid-template-columns:1fr}
  .spc__card[data-wide]{grid-column:auto}
  .spc__card[data-wide] .spc__img{aspect-ratio:4/3}
}

/* ── section: space-finder ── */
/* Space finder: guest slider + indoor/outdoor chips. Filters the space cards on the same page (they listen for "hd:find"). */
.sfd__box{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px clamp(20px,3.4vw,56px);padding:clamp(18px,2.4vw,34px) clamp(18px,2.8vw,40px);border-radius:var(--r);background:var(--sand)}
.sfd__n{display:flex;align-items:baseline;gap:12px;min-width:clamp(150px,17vw,250px)}
.sfd__n output{font:300 clamp(60px,7vw,112px)/.9 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.sfd__n span{font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.sfd__slide label{display:block;font:600 11px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.sfd input[type=range]{-webkit-appearance:none;appearance:none;display:block;width:100%;height:36px;margin:0;background:none;cursor:grab}
.sfd input[type=range]::-webkit-slider-runnable-track{height:2px;background:linear-gradient(90deg,var(--ink) var(--f,0%),rgba(38,13,60,.2) var(--f,0%))}
.sfd input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-14px;border-radius:50%;background:var(--ink);border:8px solid var(--sand);box-shadow:0 0 0 1px var(--ink);transition:transform .4s var(--ease)}
.sfd input[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}
.sfd input[type=range]::-moz-range-track{height:2px;background:rgba(38,13,60,.2)}
.sfd input[type=range]::-moz-range-progress{height:2px;background:var(--ink)}
.sfd input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--ink);border:8px solid var(--sand);box-shadow:0 0 0 1px var(--ink)}
.sfd__scale{display:flex;justify-content:space-between;font:500 11px/1 var(--body);color:var(--muted);font-variant-numeric:tabular-nums}
.sfd__chips{position:relative;display:inline-grid;grid-template-columns:repeat(3,1fr);padding:4px;border-radius:999px;background:var(--cream)}
.sfd__chips i{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / 3);border-radius:999px;background:var(--ink);transform:translateX(calc(var(--i,0) * 100%));transition:transform .6s var(--ease)}
.sfd__chips button{position:relative;height:40px;padding:0 16px;border-radius:999px;font:600 11px/1 var(--body);letter-spacing:.1em;text-transform:uppercase;transition:color .4s}
.sfd__chips button[aria-pressed="true"]{color:var(--cream)}
.sfd__out{grid-column:1/-1;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;padding-top:16px;border-top:1px solid var(--line);font-size:14.5px}
.sfd__out button{font:600 11px/1 var(--body);letter-spacing:.1em;text-transform:uppercase;text-decoration:underline;text-underline-offset:4px;padding:8px 0}
.sfd__out button[hidden]{display:none}
@media (max-width:1000px){
  .sfd__box{grid-template-columns:auto minmax(0,1fr)}
  .sfd__chips{grid-column:1/-1;justify-self:start}
}
@media (max-width:640px){
  .sfd__box{grid-template-columns:1fr}
  .sfd__n{min-width:0}
}

/* ── section: split-intro ── */
/* Heading on the left, short copy and buttons on the right, bottoms aligned */
.si{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,5vw,90px);align-items:end}
.si h2{font-size:clamp(34px,4.6vw,72px);margin-top:18px}
.si__body p{color:var(--muted);max-width:44ch}
.si__body p+p{margin-top:1em}
.si__body a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.si .cta{margin-top:24px}
@media (max-width:1000px){.si{grid-template-columns:1fr}}

/* ── section: strip-hero ── */
/* Strip banner: headline beside a short intro, then up to three framed photos at staggered heights, each with a caption */
.ch{padding:clamp(112px,13vh,150px) var(--pad) 0}
.ch__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.ch__crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.ch__crumb a:hover{color:var(--ink)}
.ch__crumb a:hover .arrow{transform:translateX(-4px)}
.ch__crumb i{font-style:normal;opacity:.5}
.ch__crumb [aria-current]{color:var(--ink)}
.ch__top{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(24px,5vw,90px);align-items:end}
.ch h1{font-size:clamp(46px,6.2vw,104px);font-weight:300;margin-top:22px;--base:350ms}
.ch h1 em{font-weight:300}
.ch__side{padding-bottom:10px}
.ch__side .lede{margin-top:16px}
.ch__side .cta{margin-top:24px}
.ch__strip{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:var(--gap);align-items:start;margin:clamp(34px,4.6vw,64px) calc(var(--gap) - var(--pad)) 0}
.ch__strip figure{margin:0}
.ch__strip figure:nth-child(2){margin-top:clamp(28px,5vw,84px)}
.ch__strip figure:nth-child(3){margin-top:clamp(10px,2vw,30px)}
.ch__f{position:relative;border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.ch__f img{width:100%;height:100%;object-fit:cover}
.ch__strip figure:nth-child(1) .ch__f{aspect-ratio:5/4}
.ch__strip figure:nth-child(2) .ch__f{aspect-ratio:4/5}
.ch__strip figure:nth-child(3) .ch__f{aspect-ratio:1}
.ch__strip figure[data-first] .ch__f{view-transition-name:var(--vt)}
.js .ch__f{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.4s var(--ease-io) calc(var(--k,0) * .2s + .15s)}
.js.is-loaded .ch__f{clip-path:inset(0 round var(--r))}
.js .ch__f img{transform:scale(1.18);transition:transform 2.6s var(--ease) calc(var(--k,0) * .2s + .15s)}
.js.is-loaded .ch__f img{transform:none}
.ch__cap{--d:calc(var(--k,0) + 7);display:flex;gap:10px;margin-top:12px;font-size:13px;line-height:1.45;color:var(--muted)}
.ch__cap b{flex:none;font:600 10.5px/1.75 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
@media (max-width:1000px){.ch__top{grid-template-columns:1fr}}
@media (max-width:640px){
  .ch__strip{grid-template-columns:1fr 1fr}
  .ch__strip figure:nth-child(1){grid-column:1/-1}
  .ch__strip figure:nth-child(2){margin-top:0}
  .ch__strip figure:nth-child(3){margin-top:22px}
  .ch__strip figure:nth-child(2) .ch__f,.ch__strip figure:nth-child(3) .ch__f{aspect-ratio:1}
  .ch__cap{flex-direction:column;gap:2px}
}

/* ── section: text-page ── */
/* Simple text page: breadcrumb, big headline, a short body under a rule (first paragraph strong, the rest muted) and buttons */
.txp{min-height:calc(100svh - 120px);display:grid;align-content:center;padding:clamp(130px,18vh,200px) var(--pad) clamp(60px,9vw,120px);max-width:1100px}
.txp__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.txp__crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.txp__crumb a:hover{color:var(--ink)}
.txp__crumb a:hover .arrow{transform:translateX(-4px)}
.txp__crumb i{font-style:normal;opacity:.5}
.txp__crumb [aria-current]{color:var(--ink)}
.txp h1{font-size:clamp(50px,8vw,128px);font-weight:300;margin-top:22px;--base:350ms}
.txp h1 em{font-weight:300}
.txp__body{margin-top:clamp(26px,3.4vw,44px);padding-top:clamp(22px,2.6vw,34px);border-top:1px solid var(--line);max-width:60ch;font-size:clamp(16px,1.3vw,19px)}
.txp__body>*+*{margin-top:1em}
.txp__body p+p,.txp__body ul,.txp__body ol{color:var(--muted)}
.txp__body h3{font:400 clamp(22px,2vw,30px)/1.15 var(--display);letter-spacing:-.015em;margin-top:1.4em}
.txp__body ul,.txp__body ol{padding-left:1.2em}
.txp__body ul{list-style:disc}
.txp__body ol{list-style:decimal}
.txp__body a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.txp .cta{margin-top:32px}

/* ── section: timeline ── */
/* Timeline: the year and photograph hold still while the entries scroll past; the nearest entry to the middle of the screen drives them */
.tl__grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(28px,6vw,110px);align-items:start}
.tl__stage{position:sticky;top:96px}
.tl__year{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:16px}
.tl__year b{font:300 clamp(64px,8.6vw,140px)/.9 var(--display);letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.tl__year b span{display:none}
.tl__year small{font:600 11px/1 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums}
.tl__total span{display:none}
.tl__total span[data-last]{display:inline}
.tl__pics{position:relative;aspect-ratio:5/4;border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.tl__pics img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity 1s var(--ease),transform 1.8s var(--ease)}
.tl__pics img.tl__img--contain{object-fit:contain}
.tl__cap{margin-top:12px;font-size:13px;color:var(--muted);min-height:1.5em}
.tl__cap span{display:none}
/* Shown entry: the first one until the behaviour takes over */
.tl:not(.is-ready) .tl__year b span[data-first],.tl.is-ready .tl__year b span.is-on{display:inline-block}
.tl:not(.is-ready) .tl__cap span[data-first],.tl.is-ready .tl__cap span.is-on{display:inline}
.tl:not(.is-ready) .tl__pics img[data-first],.tl.is-ready .tl__pics img.is-on{opacity:1;transform:none}
.tl.is-ready .tl__year b span.flip{animation:tl-yr .7s var(--ease) both}
@keyframes tl-yr{from{opacity:0;transform:translateY(.28em)}}
.tl__list{position:relative;margin:0;padding:0 0 0 clamp(28px,3.4vw,52px);list-style:none}
.tl__list::before,.tl__list::after{content:"";position:absolute;left:0;top:10px;bottom:10px;width:1px;background:var(--line)}
.tl__list::after{background:var(--ink);transform-origin:top;transform:scaleY(var(--tp,0))}
.tl__list li{position:relative;padding:clamp(22px,3.2vw,46px) 0;transition:opacity .7s var(--ease)}
.js .tl__list li{opacity:.34}
.js .tl__list li.is-on,.js .tl__list li.is-past{opacity:1}
.tl__list li::before{content:"";position:absolute;left:calc(clamp(28px,3.4vw,52px) * -1 - 4px);top:calc(clamp(22px,3.2vw,46px) + 9px);width:9px;height:9px;border-radius:50%;background:var(--cream);border:1px solid var(--muted);transition:background .5s,border-color .5s,transform .6s var(--ease)}
.tl__list li.is-past::before{background:var(--ink);border-color:var(--ink)}
.tl__list li.is-on::before,.tl:not(.is-ready) .tl__list li[data-first]::before{background:var(--gold);border-color:var(--gold);transform:scale(1.7)}
.tl__date{font:600 11px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:12px}
.tl__list h3{font-size:clamp(24px,2.5vw,38px);max-width:20ch}
.tl__body{margin-top:10px;color:var(--muted);max-width:44ch}
@media (max-width:1000px){
  .tl__grid{grid-template-columns:1fr;gap:26px}
  .tl__stage{top:64px;z-index:2;display:grid;grid-template-columns:1fr 132px;align-items:center;gap:14px;margin-inline:calc(var(--pad) * -1);padding:12px var(--pad);background:var(--cream);border-bottom:1px solid var(--line)}
  .tl__year{display:block;margin:0}
  .tl__year b{display:block;font-size:clamp(46px,13vw,84px)}
  .tl__year small{display:block;margin-top:8px}
  .tl__pics{aspect-ratio:4/3;border-radius:14px}
  .tl__cap{display:none}
}

/* ── section: timetable ── */
/* Dark timetable panel: photo beside a weekly timetable with today highlighted and a live status line */
.ttb__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,5vw,90px);align-items:center;margin-top:clamp(36px,5vw,72px)}
.ttb figure{border-radius:18px;overflow:hidden;aspect-ratio:4/5}
.ttb figure img{width:100%;height:100%;object-fit:cover}
.ttb .dark__lede{margin-top:0}
.ttb .status{margin-top:26px}
.ttb ul{margin-top:22px;border-top:1px solid rgba(249,244,236,.2)}
.ttb li{display:grid;grid-template-columns:1fr auto;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid rgba(249,244,236,.2);transition:padding .6s var(--ease)}
.ttb li span:first-child{font-family:var(--display);font-size:clamp(20px,1.8vw,26px);letter-spacing:-.01em}
.ttb li span:last-child{font-variant-numeric:tabular-nums}
.ttb li.is-today{padding-inline:18px;margin-inline:-18px;background:rgba(249,244,236,.09);border-radius:14px;border-bottom-color:transparent}
.ttb li.is-today span:first-child::after{content:"Today";margin-left:12px;font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:#e9c98f;vertical-align:middle}
.ttb__notes{margin-top:22px;display:grid;gap:10px;color:rgba(249,244,236,.76);font-size:14.5px;max-width:56ch}
.ttb .cta{margin-top:26px}
@media (max-width:1000px){
  .ttb__grid{grid-template-columns:1fr}
  .ttb figure{aspect-ratio:16/10}
}

/* ── section: venue-callout ── */
/* Callout: an outlined box with a title, a line of copy and a button (e.g. group bookings under the hours).
   Default gap above is small; _spaceTop/_spaceBottom still tune it. */
.vcl.sec{padding-top:var(--sec-top,clamp(36px,5vw,72px))}
.vcl__box{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px 40px;padding:clamp(20px,2.4vw,34px);border-radius:var(--r);border:1px solid var(--line)}
.vcl__box h3{font-size:clamp(24px,2.4vw,36px)}
.vcl__box p{color:var(--muted);max-width:60ch;margin-top:8px;font-size:15px}

/* ── section: venue-day-tabs ── */
/* Through the day: tabs (breakfast / lunch / dinner…) on a sand panel; each pane = photo + when, title, copy,
   optional deal and button. Opens on whatever is on right now (behaviour.js); the first pane before that. */
.vdt .head{align-items:end}
.vdt__tabs{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:min(100%,calc(var(--n,3) * 173px));padding:6px;border-radius:999px;background:var(--cream)}
.vdt__ind{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px) / var(--n,3));border-radius:999px;background:var(--ink);transform:translateX(calc(var(--i,0) * 100%));transition:transform .7s var(--ease)}
.vdt__tab{position:relative;display:grid;justify-items:center;gap:6px;padding:13px 6px 12px;border-radius:999px;font:400 clamp(18px,1.7vw,24px)/1 var(--display);letter-spacing:-.01em;transition:color .45s}
.vdt__tab small{font:600 9.5px/1 var(--body);letter-spacing:.12em;text-transform:uppercase;opacity:.65}
.vdt__tab[aria-selected="true"]{color:var(--cream)}
.vdt__panes{display:grid;margin-top:clamp(24px,3.4vw,48px)}
.vdt__pane{grid-area:1/1;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(24px,4.6vw,76px);align-items:center;opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility 0s .5s}
.vdt__pane.is-active,.vdt__panes:not(.is-ready) .vdt__pane[data-first]{opacity:1;visibility:visible;transition:opacity .8s var(--ease) .15s}
.vdt__pane figure{border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;background:#1c0b2c}
.vdt__pane img{width:100%;height:100%;object-fit:cover;transform:scale(1.1);transition:transform 1.8s var(--ease)}
.vdt__pane.is-active img,.vdt__panes:not(.is-ready) .vdt__pane[data-first] img{transform:none}
.vdt__pane>div>*{transform:translateY(16px);transition:transform .9s var(--ease) calc(var(--k,0) * 70ms + .1s)}
.vdt__pane.is-active>div>*,.vdt__panes:not(.is-ready) .vdt__pane[data-first]>div>*{transform:none}
.vdt__when{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font:600 11px/1.4 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.vdt__when [hidden]{display:none}
.vdt__pane h3{font-size:clamp(32px,3.8vw,60px);margin-top:14px}
.vdt__d{color:var(--muted);max-width:44ch;margin-top:16px}
.vdt__deal{display:grid;grid-template-columns:auto 1fr;gap:4px 18px;align-items:center;margin-top:24px;padding:16px 20px;border-radius:18px;background:var(--cream)}
.vdt__deal b{grid-row:span 2;font:300 clamp(40px,4vw,60px)/.9 var(--display);letter-spacing:-.04em}
.vdt__deal strong{font:600 11px/1.3 var(--body);letter-spacing:.14em;text-transform:uppercase}
.vdt__deal span{font-size:14px;line-height:1.45;color:var(--muted)}
.vdt__pane .cta{margin-top:24px}
/* Editor: every pane visible, stacked */
[data-ve-mode=edit] .vdt__panes{gap:32px}
[data-ve-mode=edit] .vdt__pane{grid-area:auto;opacity:1;visibility:visible}
[data-ve-mode=edit] .vdt__pane img,[data-ve-mode=edit] .vdt__pane>div>*{transform:none}

@media (max-width:1000px){
  .vdt__pane{grid-template-columns:1fr;display:none}
  .vdt__pane.is-active,.vdt__panes:not(.is-ready) .vdt__pane[data-first]{display:grid;animation:rowin .9s var(--ease) both}
  [data-ve-mode=edit] .vdt__pane{display:grid}
  .vdt .head{flex-direction:column;align-items:start}
}
@media (max-width:640px){
  .vdt__tab small{display:none}
  .vdt__tab{padding-block:14px}
}

/* ── section: venue-deals ── */
/* Deal cards (Mates Rates): one card per deal with a big price; the card for today's day turns ink (behaviour.js) */
.vdl .mr{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
@media (max-width:1000px){.vdl .mr{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr}}

/* ── section: venue-dishes ── */
/* Dishes: a numbered list where one dish opens at a time, beside a tilted menu card (opens a zoomable lightbox for
   image menus) and a note; optional marquee of menu sections along the bottom. Ink or sand panel. */
.vd__box{--pk-line:var(--line);--pk-accent:var(--gold);--pk-soft:var(--muted)}
.vd__box.ink{padding-bottom:0}
.vd__box.ink{--pk-line:rgba(249,244,236,.2);--pk-accent:var(--gold-soft);--pk-soft:rgba(249,244,236,.78)}
.vd__box.panel{padding-bottom:0}
.vd__box:not(:has(.mq)){padding-bottom:clamp(48px,7vw,110px)}
.vd__grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,6vw,100px);align-items:end}
.vd__list{list-style:none;padding:0;margin:clamp(28px,4vw,52px) 0 0;border-top:1px solid var(--pk-line)}
.vd__list li{position:relative;border-bottom:1px solid var(--pk-line)}
.vd__list li::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--pk-accent);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.vd__list button{display:grid;grid-template-columns:44px 1fr auto;align-items:baseline;gap:8px;width:100%;padding:22px 0 20px;text-align:left;opacity:.55;transition:opacity .5s,padding .6s var(--ease)}
.vd__list button:hover{opacity:1}
.vd__n{font:500 11px/1 var(--body);letter-spacing:.14em;font-variant-numeric:tabular-nums;color:var(--pk-accent)}
.vd__t{font-family:var(--display);font-size:clamp(24px,2.7vw,42px);line-height:1.08;letter-spacing:-.02em;transition:transform .7s var(--ease)}
.vd__tag{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;padding:7px 11px;border-radius:999px;border:1px solid var(--pk-line);white-space:nowrap}
.vd__box.ink .vd__tag{border-color:rgba(249,244,236,.3)}
.vd__d{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease)}
.vd__d p{overflow:hidden;min-height:0;padding-left:52px;max-width:50ch;color:var(--pk-soft);opacity:0;transition:opacity .5s}
.vd__d p::after{content:"";display:block;height:22px}
/* Open dish: .is-active once behaviours run; the first one before that (and in the editor) */
.vd__list li.is-active::after,.vd__list:not(.is-ready) li[data-first]::after{transform:scaleX(1)}
.vd__list li.is-active button,.vd__list:not(.is-ready) li[data-first] button{opacity:1}
.vd__list li.is-active .vd__t,.vd__list:not(.is-ready) li[data-first] .vd__t{font-style:italic;transform:translateX(6px)}
.vd__list li.is-active .vd__d,.vd__list:not(.is-ready) li[data-first] .vd__d{grid-template-rows:1fr}
.vd__list li.is-active .vd__d p,.vd__list:not(.is-ready) li[data-first] .vd__d p{opacity:1;transition-delay:.15s}
[data-ve-mode=edit] .vd__d{grid-template-rows:1fr}
[data-ve-mode=edit] .vd__d p{opacity:1}

/* Menu card */
.vd__card{display:block;padding:10px 10px 0;border-radius:var(--r);background:var(--cream);color:var(--ink);transform:rotate(-2.2deg);box-shadow:0 40px 80px -40px rgba(0,0,0,.7);transition:transform .9s var(--ease),box-shadow .9s}
.vd__card:hover{transform:rotate(0) translateY(-6px);box-shadow:0 50px 90px -40px rgba(0,0,0,.8)}
.vd__box.panel .vd__card{box-shadow:0 40px 80px -40px rgba(38,13,60,.45)}
.vd__img{display:block;border-radius:14px;overflow:hidden;aspect-ratio:16/9;background:#fff}
.vd__img img{width:100%;height:100%;object-fit:contain}
.vd__row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 8px 14px 10px;font-family:var(--display);font-size:clamp(20px,1.8vw,26px);letter-spacing:-.01em}
.vd__row small{display:block;font:500 12px/1.3 var(--body);letter-spacing:0;color:var(--muted);margin-top:3px}
.vd__go{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:background .4s,color .4s,transform .6s var(--ease)}
.vd__card:hover .vd__go{background:var(--ink);color:var(--cream);transform:rotate(90deg)}
.vd__note{margin-top:30px;color:var(--pk-soft);max-width:46ch}

/* Marquee */
.vd .mq span[data-list]{display:contents}
.vd .mq span[data-list]::after{content:none}
.vd__box.panel .mq{border-top-color:var(--line)}
.vd__box.panel .mq span::after{background:var(--gold)}
.vd .sr-only span[data-item]+span[data-item]::before{content:", "}

/* Menu lightbox (built by behaviour.js when an image menu is opened) */

@media (max-width:1000px){
  .vd__grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .vd__list button{grid-template-columns:32px 1fr}
  .vd__tag{display:none}
  .vd__d p{padding-left:40px}
}

/* ── section: venue-facts ── */
/* Three quick facts under a rule: when, call, where — each with an optional link */
.vfa__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);border-top:1px solid var(--line)}
.vfa__grid>div{padding:22px 24px 0 0}
.vfa h3{font-size:clamp(24px,2.4vw,36px);margin-top:12px}
.vfa h3 a[href]{transition:color .3s}
.vfa h3 a[href]:hover{color:var(--gold-deep)}
.vfa__body{color:var(--muted);margin-top:8px;max-width:34ch;font-size:15px}
.vfa__go{display:inline-flex;gap:8px;margin-top:14px;font:600 12px/1 var(--body);letter-spacing:.1em;text-transform:uppercase}
@media (max-width:1000px){
  .vfa__grid{grid-template-columns:1fr;border-top:0}
  .vfa__grid>div{border-top:1px solid var(--line);padding-bottom:22px}
}

/* ── section: venue-hero ── */
/* Venue banner: copy on cream beside a tall photo that wipes up, a second photo tucked over its corner, and a spinning seal */
.vh{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:clamp(28px,4.6vw,76px);padding:80px var(--gap) 0 var(--pad)}
.vh__copy{display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding-bottom:clamp(18px,3vw,44px)}
.vh .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.vh .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.vh .crumb a:hover{color:var(--ink)}
.vh .crumb a:hover .arrow{transform:translateX(-4px)}
.vh .crumb i{font-style:normal;opacity:.5}
.vh .crumb [aria-current]{color:var(--ink)}
.vh h1{font-size:clamp(46px,6.2vw,100px);font-weight:300;max-width:11ch;margin-top:22px;--base:350ms}
.vh h1 em{font-weight:300}
.vh__lede{max-width:44ch;margin-top:24px;color:var(--muted);font-size:clamp(16px,1.25vw,18px)}
.vh__cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.vh .status{margin-top:28px}
.vh__media{position:relative;height:calc(100svh - 92px);min-height:560px;max-height:900px}
.vh__main{position:absolute;inset:0;border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.js .vh__main{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.5s var(--ease-io) .1s}
.js.is-loaded .vh__main{clip-path:inset(0 round var(--r))}
.vh__par{position:absolute;inset:-7% 0;transform:translate3d(0,calc(var(--sy,0) * .12px),0)}
.vh__par img{width:100%;height:100%;object-fit:cover}
.js .vh__main img{transform:scale(1.2);transition:transform 2.6s var(--ease) .1s}
.js.is-loaded .vh__main img{transform:none}
.vh__inset{position:absolute;left:-9%;bottom:7%;width:46%;aspect-ratio:4/3;transform:translate3d(0,calc(var(--sy,0) * -.07px),0)}
.vh__inset div{height:100%;border-radius:var(--r);overflow:hidden;border:8px solid var(--cream);box-shadow:0 30px 60px -30px rgba(38,13,60,.55)}
.vh__inset img{width:100%;height:100%;object-fit:cover}
.js .vh__inset div{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.3s var(--ease-io) .9s}
.js.is-loaded .vh__inset div{clip-path:inset(0 round var(--r))}
.vh__seal{position:absolute;right:22px;top:22px;width:118px;height:118px;border-radius:50%;background:var(--cream);display:grid;place-items:center;color:var(--ink)}
.js .vh__seal{opacity:0;transform:scale(.6) rotate(-40deg);transition:opacity .8s var(--ease) 1.5s,transform 1.2s var(--ease) 1.5s}
.js.is-loaded .vh__seal{opacity:1;transform:none}
.vh__seal svg{position:absolute;inset:0;width:100%;height:100%;animation:spin 26s linear infinite}
.vh__seal text{font:600 9.6px var(--body);letter-spacing:.21em;text-transform:uppercase;fill:currentColor}
.vh__seal b{font:italic 400 30px/1 var(--display)}
@media (max-width:1000px){
  .vh{grid-template-columns:1fr;padding-inline:var(--gap)}
  .vh__copy{padding-inline:calc(var(--pad) - var(--gap));padding-top:6px}
  .vh__media{height:112vw;min-height:0;max-height:680px}
  .vh__inset{left:14px;bottom:14px;width:44%}
  .vh__seal{top:-44px;right:18px;width:104px;height:104px}
}
@media (max-width:640px){.vh__inset div{border-width:6px}}

/* ── section: venue-hero-frame ── */
/* Venue banner, framed: one full-bleed photo of the venue with the copy over it, and an optional day/dusk switch */
.vhf{padding:80px var(--gap) 0}
.vhf__frame{position:relative;display:flex;flex-direction:column;justify-content:space-between;height:calc(100svh - 92px);min-height:600px;max-height:900px;padding:clamp(18px,2.4vw,36px) calc(var(--pad) - var(--gap));border-radius:var(--r);overflow:hidden;background:#1c0b2c;color:#fff}
.js .vhf__frame{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.5s var(--ease-io) .1s}
.js.is-loaded .vhf__frame{clip-path:inset(0 round var(--r))}
.vhf__par{position:absolute;inset:-7% 0;transform:translate3d(0,calc(var(--sy,0) * .1px),0)}
.vhf__par img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 1.6s var(--ease),transform 2.6s var(--ease)}
.vhf__par .vhf__alt{opacity:0}
.vhf__frame.is-alt .vhf__alt{opacity:1}
.js .vhf__par img{transform:scale(1.16)}
.js.is-loaded .vhf__par img{transform:none}
.vhf__frame::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,8,32,.5) 0%,rgba(20,8,32,0) 26%,rgba(20,8,32,.08) 46%,rgba(20,8,32,.84) 100%);pointer-events:none}
.vhf__frame>*:not(.vhf__par){position:relative;z-index:1}
.vhf .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:rgba(255,255,255,.78)}
.vhf .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.vhf .crumb a:hover,.vhf .crumb [aria-current]{color:#fff}
.vhf .crumb a:hover .arrow{transform:translateX(-4px)}
.vhf .crumb i{font-style:normal;opacity:.5}
.vhf__foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px clamp(24px,4vw,64px);align-items:end}
.vhf .eyebrow{color:rgba(255,255,255,.84)}
.vhf h1{font-size:clamp(44px,7vw,112px);font-weight:300;max-width:13ch;margin-top:18px;--base:450ms}
.vhf h1 em{font-weight:300}
.vhf__lede{max-width:46ch;margin-top:20px;color:rgba(255,255,255,.88);font-size:clamp(16px,1.25vw,18px)}
.vhf .cta{margin-top:24px}
.vhf .btn--solid{background:var(--cream);color:var(--ink);border-color:var(--cream)}
.vhf [data-arrow]::before{content:"→"}
.vhf a[href^="#"] [data-arrow]::before{content:"↓"}
.vhf a[target=_blank] [data-arrow]::before{content:"↗"}
.vhf__side{display:grid;justify-items:end;gap:16px}
.vhf__sky{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:5px;border-radius:999px;background:rgba(20,8,32,.42);border:1px solid rgba(255,255,255,.28);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.vhf__ind{position:absolute;top:5px;bottom:5px;left:5px;width:calc(50% - 5px);border-radius:999px;background:var(--cream);transition:transform .7s var(--ease)}
.vhf__frame.is-alt .vhf__ind{transform:translateX(100%)}
.vhf__sky button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-width:104px;height:40px;padding:0 18px;border-radius:999px;font:600 11px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;transition:color .45s}
.vhf__sky button[aria-pressed="true"]{color:var(--ink)}
.vhf__sky svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
@media (max-width:1000px){
  .vhf__foot{grid-template-columns:1fr}
  .vhf__side{justify-items:start}
}
@media (max-width:640px){
  .vhf__frame{height:auto;min-height:calc(100svh - 92px);gap:120px;padding-bottom:64px}
  .vhf__frame::after{background:linear-gradient(180deg,rgba(20,8,32,.55) 0%,rgba(20,8,32,.1) 22%,rgba(20,8,32,.5) 44%,rgba(20,8,32,.88) 100%)}
}

/* ── section: venue-hero-grid ── */
/* Venue banner, stepped grid: headline | a tall photo (capsule or rounded) with a spinning seal | the welcome and buttons */
.vhg{padding:80px var(--pad) 0}
.vhg .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.vhg .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.vhg .crumb a:hover,.vhg .crumb [aria-current]{color:var(--ink)}
.vhg .crumb a:hover .arrow{transform:translateX(-4px)}
.vhg .crumb i{font-style:normal;opacity:.5}
.vhg__grid{display:grid;grid-template-columns:minmax(0,1fr) clamp(250px,25vw,370px) minmax(0,1fr);gap:clamp(24px,4vw,64px);padding-top:clamp(8px,1.4vw,20px)}
.vhg__a{align-self:start;padding-top:clamp(10px,2.4vw,40px)}
.vhg h1{font-size:clamp(48px,6.6vw,106px);font-weight:300;margin-top:20px;--base:300ms}
.vhg h1 em{font-weight:300}
.vhg__media{position:relative;--rr:999px}
.vhg--rounded .vhg__media{--rr:var(--r)}
.vhg__cap{aspect-ratio:10/17;max-height:calc(100svh - 150px);min-height:420px;width:100%;border-radius:var(--rr);overflow:hidden;background:#1c0b2c}
.js .vhg__cap{clip-path:inset(50% 0 50% 0 round var(--rr));transition:clip-path 1.6s var(--ease-io) .1s}
.js.is-loaded .vhg__cap{clip-path:inset(0 round var(--rr))}
.vhg__par{height:114%;margin-top:-7%;transform:translate3d(0,calc(var(--sy,0) * .08px),0)}
.vhg__par img{width:100%;height:100%;object-fit:cover}
.js .vhg__cap img{transform:scale(1.2);transition:transform 2.6s var(--ease) .1s}
.js.is-loaded .vhg__cap img{transform:none}
.vhg__seal{left:-46px;bottom:12%}
.vhg__b{align-self:end;padding-bottom:clamp(14px,3vw,48px)}
.vhg__lede{font:400 clamp(22px,2.1vw,32px)/1.2 var(--display);letter-spacing:-.015em;max-width:18ch}
.vhg__body{color:var(--muted);max-width:38ch;margin-top:16px}
.vhg .cta{margin-top:24px}
.vhg .status{margin-top:22px}
.vhg [data-arrow]::before{content:"→"}
.vhg a[href^="#"] [data-arrow]::before{content:"↓"}
.vhg a[target=_blank] [data-arrow]::before{content:"↗"}
@media (max-width:1000px){
  .vhg__grid{grid-template-columns:1fr 1fr;align-items:center}
  .vhg__a{grid-column:1/-1;padding-top:0}
  .vhg__b{padding-bottom:0;align-self:center}
  .vhg__seal{left:auto;right:-30px}
}
@media (max-width:640px){
  .vhg__grid{grid-template-columns:1fr}
  .vhg__media{width:min(76%,300px);margin-inline:auto}
  .vhg__cap{min-height:0}
}

/* ── section: venue-hero-panel ── */
/* Venue banner, ink panel: the photo fades in from the right, a tilted logo chip, and a ticker running along the bottom */
.vhp{padding:80px var(--gap) 0}
.vhp__panel{position:relative;display:flex;flex-direction:column;min-height:min(calc(100svh - 92px),880px);border-radius:var(--r);overflow:hidden;background:#190a29;color:var(--cream)}
.js .vhp__panel{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.5s var(--ease-io) .1s}
.js.is-loaded .vhp__panel{clip-path:inset(0 round var(--r))}
.vhp__img{position:absolute;inset:0 0 0 34%;-webkit-mask-image:linear-gradient(90deg,transparent,#000 46%);mask-image:linear-gradient(90deg,transparent,#000 46%)}
.vhp__img img{width:100%;height:100%;object-fit:cover;opacity:.9;transform:translate3d(0,calc(var(--sy,0) * .05px),0) scale(1.08)}
.vhp__panel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(25,10,41,.35),rgba(25,10,41,0) 30%,rgba(25,10,41,.75));pointer-events:none}
.vhp__in{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:clamp(18px,2.4vw,36px) calc(var(--pad) - var(--gap)) clamp(24px,3vw,44px)}
.vhp .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:rgba(249,244,236,.72)}
.vhp .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.vhp .crumb a:hover,.vhp .crumb [aria-current]{color:var(--cream)}
.vhp .crumb a:hover .arrow{transform:translateX(-4px)}
.vhp .crumb i{font-style:normal;opacity:.5}
.vhp__top{display:flex;justify-content:space-between;align-items:start;gap:20px}
.vhp__chip{flex:none;display:block;width:clamp(112px,11vw,164px);padding:10px 12px;border-radius:16px;background:#fff;transform:rotate(4deg);box-shadow:0 24px 50px -24px rgba(0,0,0,.8);transition:transform .8s var(--ease)}
.js .vhp__chip.rise{transform:rotate(4deg) translateY(18px)}
.js.is-loaded .vhp__chip.rise{transform:rotate(4deg)}
.vhp__chip:hover,.js.is-loaded .vhp__chip.rise:hover{transform:rotate(-2deg) scale(1.05)}
.vhp__chip img{width:100%}
.vhp .eyebrow{color:rgba(249,244,236,.76)}
.vhp .eyebrow b{display:inline-block;margin-right:10px;padding:6px 9px;border-radius:999px;border:1px solid var(--gold-soft);color:var(--gold-soft);font-weight:600;letter-spacing:.12em}
.vhp h1{font-size:clamp(46px,7.4vw,118px);font-weight:300;max-width:10ch;margin-top:20px;--base:450ms}
.vhp h1 em{font-weight:300;color:var(--gold-soft)}
.vhp__lede{max-width:44ch;margin-top:22px;color:rgba(249,244,236,.84);font-size:clamp(16px,1.25vw,18px)}
.vhp .cta{margin-top:26px}
.vhp .btn--solid{background:var(--cream);color:var(--ink);border-color:var(--cream)}
.vhp [data-arrow]::before{content:"→"}
.vhp a[href^="#"] [data-arrow]::before{content:"↓"}
.vhp a[target=_blank] [data-arrow]::before{content:"↗"}
.vhp__tk{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;border-top:1px solid rgba(249,244,236,.2);background:rgba(25,10,41,.5);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.vhp__tkl{display:flex;align-items:center;gap:10px;padding:0 22px 0 calc(var(--pad) - var(--gap));height:58px;border-right:1px solid rgba(249,244,236,.2);font:600 10.5px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.vhp__tkl i{width:8px;height:8px;border-radius:50%;background:#e2574c;animation:vhp-ping 1.8s ease-in-out infinite}
@keyframes vhp-ping{50%{opacity:.3}}
.vhp__run{overflow:hidden;white-space:nowrap;-webkit-mask-image:linear-gradient(90deg,transparent,#000 60px,#000 calc(100% - 60px),transparent);mask-image:linear-gradient(90deg,transparent,#000 60px,#000 calc(100% - 60px),transparent)}
.vhp__track{display:inline-flex;animation:mq 30s linear infinite}
.vhp__track>span{display:contents}
.vhp__track span span{display:inline-flex;align-items:center;font:italic 300 clamp(20px,2vw,28px)/1 var(--display);letter-spacing:-.01em}
.vhp__track span span::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--gold-soft);margin-inline:clamp(18px,2vw,32px)}
[data-ve-mode=edit] .vhp__track{animation-play-state:paused}
@media (max-width:1000px){
  .vhp__img{inset:0;-webkit-mask-image:none;mask-image:none}
  .vhp__img img{opacity:.5}
}
@media (max-width:640px){
  .vhp__chip{width:84px;padding:7px 9px;border-radius:12px}
  .vhp .crumb{max-width:calc(100% - 100px)}
  .vhp__tkl span{display:none}
  .vhp__tkl{padding-right:16px}
}

/* ── section: venue-hero-trio ── */
/* Venue banner with three photos. "row": headline beside the intro over a staggered triptych that drifts at three
   speeds (main photo first, spinning seal). "centred": centred copy over three photos, the main one in the middle,
   the outer two sliding out from behind it as the page loads. */
.vht{padding:80px var(--pad) 0}
.vht .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.vht .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.vht .crumb a:hover{color:var(--ink)}
.vht .crumb a:hover .arrow{transform:translateX(-4px)}
.vht .crumb i{font-style:normal;opacity:.5}
.vht .crumb [aria-current]{color:var(--ink)}
.vht h1{font-weight:300;--base:300ms}
.vht h1 em{font-weight:300}
.vht__lede{color:var(--muted);max-width:44ch;font-size:clamp(16px,1.25vw,18px)}
.vht__trip{position:relative;display:grid;gap:var(--gap);margin-inline:calc(var(--gap) - var(--pad))}
.vht__more{display:contents}
.vht__f{border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.vht__f img{width:100%;height:100%;object-fit:cover}
.vht__seal{top:22px}
.vht [hidden]{display:none}

/* row (Teddy Larkin's) */
.vht--row .vht__row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(24px,5vw,90px);align-items:end;padding-block:clamp(10px,1.6vw,22px) clamp(26px,3.4vw,50px)}
.vht--row .eyebrow{margin-bottom:18px}
.vht--row h1{font-size:clamp(46px,7.2vw,116px)}
.vht--row .cta,.vht--row .status{margin-top:22px}
.vht--row .vht__lede+.cta{margin-top:22px}
.vht--row .vht__trip{grid-template-columns:1.32fr .72fr .86fr;align-items:start}
.vht--row .vht__main{aspect-ratio:3/2}
.vht--row .vht__f[data-n="1"]{aspect-ratio:3/4;margin-top:clamp(28px,5vw,80px);transform:translate3d(0,calc(var(--sy,0) * -.09px),0)}
.vht--row .vht__f[data-n="2"]{aspect-ratio:1;transform:translate3d(0,calc(var(--sy,0) * .05px),0)}
.vht--row .vht__seal{left:calc(1.32 / 2.9 * 100% - 150px)}
.js .vht--row .vht__f{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.4s var(--ease-io) calc(var(--i) * 160ms + .15s)}
.js.is-loaded .vht--row .vht__f{clip-path:inset(0 round var(--r))}
.js .vht--row .vht__f img{transform:scale(1.18);transition:transform 2.4s var(--ease) calc(var(--i) * 160ms + .15s)}
.js.is-loaded .vht--row .vht__f img{transform:none}

/* centred (DD Collective) */
.vht--centred .vht__row{display:grid;justify-items:center;text-align:center;padding-block:clamp(10px,1.2vw,18px) clamp(26px,2.8vw,40px)}
.vht--centred .vht__title,.vht--centred .vht__side{display:grid;justify-items:center}
.vht--centred h1{font-size:clamp(44px,6.3vw,100px);max-width:12ch;margin-top:16px}
.vht--centred .vht__lede{max-width:62ch;margin-top:18px}
.vht--centred .cta{justify-content:center;margin-top:20px}
.vht--centred .status{margin-top:18px}
.vht--centred .vht__trip{grid-template-columns:1fr 2.1fr 1fr;align-items:end}
.vht--centred .vht__f{height:clamp(250px,29vw,450px)}
.vht--centred .vht__main{grid-area:1/2;height:clamp(300px,36vw,560px);z-index:1;position:relative}
.vht--centred .vht__seal{right:22px;top:22px}
.js .vht--centred .vht__f[data-n="1"]{transform:translateX(62%) scale(.9);opacity:0}
.js .vht--centred .vht__f[data-n="2"]{transform:translateX(-62%) scale(.9);opacity:0}
.js .vht--centred .vht__f[data-n]{transition:transform 1.6s var(--ease) .75s,opacity .7s var(--ease) .75s}
.js.is-loaded .vht--centred .vht__f[data-n]{transform:translate3d(0,calc(var(--sy,0) * -.06px),0);opacity:1}
.js .vht--centred .vht__main{clip-path:inset(100% 0 0 0 round var(--r));transition:clip-path 1.4s var(--ease-io) .1s}
.js.is-loaded .vht--centred .vht__main{clip-path:inset(0 round var(--r))}
.js .vht--centred .vht__main img{transform:scale(1.18);transition:transform 2.4s var(--ease) .1s}
.js.is-loaded .vht--centred .vht__main img{transform:none}

@media (max-width:1000px){
  .vht--row .vht__row{grid-template-columns:1fr}
  .vht--row .vht__trip{grid-template-columns:1fr 1fr}
  .vht--row .vht__main{grid-column:1/-1}
  .vht--row .vht__f[data-n="1"]{margin-top:0;aspect-ratio:1}
  .vht--row .vht__f[data-n]{transform:none}
  .vht__seal{display:none}
}
@media (max-width:640px){
  .vht--centred .vht__trip{grid-template-columns:1fr 1fr}
  .vht--centred .vht__main{grid-area:1/1/2/-1;height:auto;aspect-ratio:4/3}
  .vht--centred .vht__f[data-n]{height:auto;aspect-ratio:1}
  .js .vht--centred .vht__f[data-n="1"]{transform:translateX(30%) scale(.9)}
  .js .vht--centred .vht__f[data-n="2"]{transform:translateX(-30%) scale(.9)}
  .js.is-loaded .vht--centred .vht__f[data-n]{transform:none}
}
@media (prefers-reduced-motion:reduce){
  .js .vht--centred .vht__f[data-n]{transform:none;opacity:1}
}

/* ── section: venue-hours ── */
/* Hours and bookings: the venue's own hours (from the venue item), today highlighted by behaviours */
.vho .hrs li[data-closed]{color:var(--muted)}
.vho .hrs .hrs__note p+p{margin-top:.8em}
.vho .hrs[data-align=end]{align-items:end}

/* ── section: venue-lineup ── */
/* Heading row, a wide drifting photo and a row of big words (sports on the screens, styles of music, cuisines) */
.vln .wide{margin-top:0}
.vln [data-arrow]::before{content:"→"}
.vln a[href^="#"] [data-arrow]::before{content:"↓"}
.vln a[target=_blank] [data-arrow]::before{content:"↗"}
.vln__words{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;margin-top:clamp(28px,4vw,56px);border-top:1px solid var(--line)}
.vln__words li{position:relative;padding:22px 0 4px;font:300 clamp(30px,4.4vw,72px)/1 var(--display);letter-spacing:-.03em;overflow:hidden}
.vln__words li+li{padding-left:clamp(12px,1.6vw,26px);border-left:1px solid var(--line)}
.vln__words li span{display:block;transition:transform .8s var(--ease)}
.vln__words li:hover span{font-style:italic;transform:translateX(6px)}
.vln__words li small{display:block;margin-top:14px;font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
@media (max-width:1000px){
  .vln__words{grid-auto-flow:row;grid-template-columns:repeat(3,1fr)}
  .vln__words li:nth-child(3n+1){padding-left:0;border-left:0}
  .vln__words li:nth-child(n+4){border-top:1px solid var(--line)}
}
@media (max-width:640px){
  .vln__words{grid-template-columns:1fr 1fr}
  .vln__words li,.vln__words li+li{padding-left:0;border-left:0;border-top:1px solid var(--line)}
  .vln__words li:nth-child(-n+2){border-top:0}
  .vln__words li:nth-child(even){padding-left:14px;border-left:1px solid var(--line)}
}

/* ── section: venue-links ── */
/* Heading row and a list of link rows (weekly nights, one-off events). Rows with a "show until" date hide once it has passed. */
.vlk .lk a:not([href]){pointer-events:none}
.vlk .lk a:not([href]) .arrow{visibility:hidden}

/* ── section: venue-reserve ── */
/* Reservations: hours and contact beside a booking form (a mock: nothing is sent). Date chips are the next bookable days. */
.vrs__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,6vw,110px);align-items:start}
.vrs h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.vrs__note{color:var(--muted);max-width:44ch}
.vrs__note p+p{margin-top:.8em}
.vrs__note a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.vrs dl{margin:28px 0 0;border-top:1px solid var(--line)}
.vrs dl div{display:grid;grid-template-columns:1fr auto;gap:16px;padding:15px 0;border-bottom:1px solid var(--line)}
.vrs dt{font-family:var(--display);font-size:clamp(20px,1.8vw,26px);letter-spacing:-.01em}
.vrs dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.vrs dd small{display:block;font-size:12.5px;color:var(--muted)}
.vrs .cta{margin-top:26px}
.vrs .fm__go .fine{margin:0}
.vrs__lbl{font:600 11px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
/* Before the date chips are built (and in the editor before mount) keep the row's height */
.vrs .chips:empty{min-height:68px;border-radius:14px;border:1px dashed var(--line)}
@media (max-width:1000px){.vrs__grid{grid-template-columns:1fr}}

/* ── section: venue-split ── */
/* Photo (or promo artwork) beside copy. Optional badge on the photo and day chips that light up today (live acts, weekly nights). */
.vsp__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px);align-items:center}
.vsp--right .vsp__media{order:2}
.vsp__media{position:relative}
.vsp__media figure{border-radius:var(--r);overflow:hidden;aspect-ratio:5/4}
.vsp--portrait .vsp__media figure{aspect-ratio:4/5}
.vsp__media figure img{width:100%;height:100%;object-fit:cover}
/* Artwork with words baked in: always shown whole on a sand panel */
.vsp--artwork .vsp__media figure{aspect-ratio:auto;padding:clamp(10px,1.4vw,20px);background:var(--sand);transition:transform .9s var(--ease)}
.vsp--artwork .vsp__media figure img{height:auto;border-radius:14px}
.vsp--artwork .vsp__media:hover figure{transform:rotate(-1deg)}
.vsp__hit{position:absolute;inset:0;z-index:1;border-radius:var(--r)}
.vsp__on{position:absolute;left:16px;top:16px;padding:9px 13px;border-radius:999px;background:rgba(249,244,236,.92);color:var(--ink);font:600 10px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;display:inline-flex;align-items:center;gap:9px}
.vsp__on i{width:8px;height:8px;border-radius:50%;background:var(--gold)}
.vsp__on.is-on i{background:var(--green);animation:vsp-ping 1.8s ease-in-out infinite}
@keyframes vsp-ping{50%{opacity:.35}}
.vsp h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 22px}
.vsp__body p{color:var(--muted);max-width:46ch}
.vsp__body p+p{margin-top:1em}
.vsp__days{display:flex;gap:8px;margin-top:26px}
.vsp__days span{display:grid;place-items:center;min-width:64px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);font:400 20px/1 var(--display);transition:background .5s,color .5s,border-color .5s}
.vsp__days span.is-today{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.vsp .cta{margin-top:28px}
@media (max-width:1000px){.vsp__grid{grid-template-columns:1fr}.vsp--right .vsp__media{order:0}}

/* ── section: venue-steps ── */
/* Numbered steps beside a portrait photo, on an ink or sand panel */
.vst{--st-line:var(--line);--st-num:var(--gold-deep);--st-soft:var(--muted)}
.vst .ink{--st-line:rgba(249,244,236,.2);--st-num:var(--gold-soft);--st-soft:rgba(249,244,236,.78)}
.vst__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:clamp(32px,6vw,100px);align-items:center}
.vst__lede{margin-top:22px;max-width:50ch;color:var(--st-soft)}
.vst ol{list-style:none;margin:clamp(28px,4vw,52px) 0 0;padding:0;border-top:1px solid var(--st-line)}
.vst li{display:grid;grid-template-columns:52px 1fr;gap:8px;padding:22px 0;border-bottom:1px solid var(--st-line)}
.vst li b{font:500 11px/2.6 var(--body);letter-spacing:.14em;color:var(--st-num)}
.vst li h3{font-size:clamp(22px,2.3vw,34px)}
.vst li p{margin-top:6px;color:var(--st-soft);max-width:44ch}
.vst figure{border-radius:var(--r);overflow:hidden;aspect-ratio:4/5}
.vst figure img{width:100%;height:100%;object-fit:cover}
@media (max-width:1000px){
  .vst__grid{grid-template-columns:1fr}
  .vst figure{aspect-ratio:4/3}
}

/* ── section: venue-trail ── */
/* Trail: a line that draws itself as you scroll, lighting each stop in turn (shared .trail component).
   Its default gap above is small (it usually follows a statement); _spaceTop/_spaceBottom still tune it. */
.vtr.sec{padding-top:var(--sec-top,clamp(36px,5vw,72px))}
.vtr .trail{margin-top:0}
.vtr__eyebrow{margin-bottom:26px}
.vtr .trail ol{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);--step:calc(1 / 3)}
.vtr .trail ol:has(>li:nth-child(2):last-child){--step:.5}
.vtr .trail ol:has(>li:nth-child(4)){--step:.25}
.vtr .trail ol:has(>li:nth-child(5)){--step:.2}
.vtr .trail li{--at:calc(var(--k,0) * var(--step))}
[data-ve-mode=edit] .vtr .trail li{opacity:1}
@media (max-width:640px){
  .vtr .trail ol{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr}
}

/* ── section: venues-rail ── */
/* Rail spacing and layout come from the shared .head / .rail / .card components in theme.css */
.vr .rail{padding-bottom:4px}

/* ── section: wide-photo ── */
/* Wide photo that drifts as it crosses the screen. Its gap above is spacing data, not a neighbour rule. */
.wp{--sec-top-default:clamp(40px,6vw,90px);margin-top:var(--sec-top,var(--sec-top-default))}
.wp[data-space-top=small]{--sec-top:clamp(20px,3vw,44px)}
.wp .wide{margin-top:0}

/* ── section: wo-events ── */
/* Upcoming events: big date, photo, details, tickets */
.wo-ev .ev{position:relative;display:grid;grid-template-columns:clamp(84px,9vw,140px) clamp(210px,23vw,350px) minmax(0,1fr) auto;align-items:center;gap:clamp(16px,3vw,52px);padding:clamp(22px,2.6vw,36px) 0;border-top:1px solid var(--line)}
.wo-ev .ev:last-of-type{border-bottom:1px solid var(--line)}
.wo-ev .ev::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.wo-ev .ev:hover::before{transform:scaleX(1)}
.wo-ev .ev.is-past{display:none}
.wo-ev .ev__date b{display:block;font:300 clamp(50px,5.8vw,94px)/.9 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.wo-ev .ev__date>span{display:block;margin-top:10px;font:600 11px/1 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.wo-ev .ev__img{display:block;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:var(--sand);transition:transform .9s var(--ease),box-shadow .9s}
.wo-ev .ev__img[data-poster]{aspect-ratio:2/1}
.wo-ev .ev__img img{width:100%;height:100%;object-fit:cover}
.wo-ev .ev:hover .ev__img{transform:translateY(-5px) rotate(-1deg);box-shadow:0 26px 44px -28px rgba(38,13,60,.5)}
.wo-ev .ev__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font:500 13px/1.3 var(--body);color:var(--muted)}
.wo-ev .ev h3{font-size:clamp(26px,2.7vw,42px);margin:10px 0 10px}
.wo-ev .ev__body>p:last-child{color:var(--muted);max-width:56ch;font-size:15px}
.wo-ev .ev-none{display:none;padding:28px 0;border-block:1px solid var(--line);color:var(--muted)}
.wo-ev:not(:has(.ev:not(.is-past))) .ev-none{display:block}
@media (max-width:1000px){
  .wo-ev .ev{grid-template-columns:auto minmax(0,1fr);align-items:start}
  .wo-ev .ev__img{grid-column:2;grid-row:1}
  .wo-ev .ev__body{grid-column:1/-1}
  .wo-ev .ev>.btn{grid-column:1/-1;justify-self:start}
  .wo-ev .ev__date{min-width:84px}
}

/* ── section: wo-feature ── */
/* Photo panel (v1 What's On "Kids") */
.wo-feature .kids{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:clamp(20px,4vw,64px);padding:12px;border-radius:var(--r);background:var(--sand)}
.wo-feature figure{border-radius:14px;overflow:hidden;aspect-ratio:16/10}
.wo-feature img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.wo-feature .kids:hover img{transform:scale(1.05)}
.wo-feature .kids__body{padding:clamp(8px,2vw,28px) clamp(8px,2vw,28px) clamp(8px,2vw,28px) 0}
.wo-feature h2{font-size:clamp(32px,4vw,60px);margin:16px 0 14px}
.wo-feature .kids__body>p:not(.eyebrow){color:var(--muted);max-width:44ch}
.wo-feature .btn{margin-top:24px}
@media (max-width:1000px){
  .wo-feature .kids{grid-template-columns:1fr}
  .wo-feature .kids__body{padding:6px 10px 16px}
}

/* ── section: wo-hero ── */
/* Banner: headline first, then a wide photo that opens like a curtain, with today's line-up pinned to it */
.wo-hero{padding-top:80px}
.wo-hero .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 12.5px/1.2 var(--body);color:var(--muted)}
.wo-hero .crumb a{position:relative;display:inline-flex;gap:8px;padding:8px 0;transition:color .3s}
.wo-hero .crumb a:hover{color:var(--ink)}
.wo-hero .crumb a:hover .arrow{transform:translateX(-4px)}
.wo-hero .crumb i{font-style:normal;opacity:.5}
.wo-hero .crumb [aria-current]{color:var(--ink)}
.wo-hero__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:clamp(24px,4vw,64px);align-items:end;padding-block:clamp(10px,1.6vw,22px) clamp(24px,3vw,44px)}
.wo-hero h1{font-size:clamp(52px,8.6vw,138px);font-weight:300;line-height:.98;--base:250ms}
.wo-hero h1 em{font-weight:300}
.wo-hero__aside p{color:var(--muted)}
.wo-hero__jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.wo-hero__frame{position:relative;margin-inline:var(--gap);height:clamp(300px,52svh,600px);border-radius:var(--r);overflow:hidden;background:#1c0b2c}
.js .wo-hero__frame{clip-path:inset(0 46% round var(--r));transition:clip-path 1.6s var(--ease-io) .2s}
.js.is-loaded .wo-hero__frame{clip-path:inset(0 round var(--r))}
.wo-hero__par{position:absolute;inset:-10% 0;transform:translate3d(0,calc(var(--sy,0) * .14px),0)}
.wo-hero__par img{width:100%;height:100%;object-fit:cover}
.js .wo-hero__frame img{transform:scale(1.18);transition:transform 2.8s var(--ease) .2s}
.js.is-loaded .wo-hero__frame img{transform:none}
.wo-hero .today{position:absolute;left:clamp(12px,1.6vw,24px);bottom:clamp(12px,1.6vw,24px);max-width:min(440px,calc(100% - 24px));display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 18px;padding:16px 16px 16px 20px;border-radius:18px;background:rgba(249,244,236,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--ink);transition:transform .6s var(--ease),opacity 1s var(--ease) 1.5s}
.js .wo-hero .today{opacity:0}
.js.is-loaded .wo-hero .today{opacity:1}
.wo-hero .today:hover{transform:translateY(-4px)}
.wo-hero .today .eyebrow{display:flex;align-items:center;gap:8px}
.wo-hero .today .eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold)}
.wo-hero .today b{grid-column:1;font:400 clamp(19px,1.7vw,24px)/1.2 var(--display);letter-spacing:-.01em}
.wo-hero .today__go{grid-row:1/3;grid-column:2;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:background .4s,color .4s,transform .6s var(--ease)}
.wo-hero .today:hover .today__go{background:var(--ink);color:var(--cream);transform:rotate(90deg)}
@media (max-width:1000px){
  .wo-hero__row{grid-template-columns:1fr}
}
@media (max-width:640px){
  .wo-hero__frame{height:auto;overflow:visible;background:none;clip-path:none!important;view-transition-name:none!important}
  .wo-hero__par{position:relative;inset:auto;transform:none;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:#1c0b2c;view-transition-name:var(--wo-vt)}
  .js .wo-hero__par{clip-path:inset(0 46% round var(--r));transition:clip-path 1.6s var(--ease-io) .2s}
  .js.is-loaded .wo-hero__par{clip-path:inset(0 round var(--r))}
  .wo-hero .today{position:relative;left:auto;bottom:auto;max-width:none;margin-top:var(--gap);background:var(--sand);backdrop-filter:none;-webkit-backdrop-filter:none}
}

/* ── section: wo-live ── */
/* Live & Local: sticky photo, session times, the next few gigs */
.wo-live .lm{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:clamp(28px,5.4vw,96px);align-items:start}
.wo-live .lm__pic{position:sticky;top:96px;border-radius:var(--r);overflow:hidden;aspect-ratio:4/5;background:#1c0b2c}
.wo-live .lm__pic img{width:100%;height:100%;object-fit:cover}
.wo-live h2{font-size:clamp(34px,4.6vw,72px);margin:18px 0 20px}
.wo-live .lm__lede{color:var(--muted);max-width:48ch}
.wo-live .lm__when{display:grid;grid-template-columns:repeat(3,1fr);margin:clamp(24px,3vw,40px) 0 clamp(28px,3.4vw,48px);border-top:1px solid var(--line)}
.wo-live .lm__when div{padding:16px 16px 0 0}
.wo-live .lm__when div+div{padding-left:16px;border-left:1px solid var(--line)}
.wo-live .lm__when b{display:block;font:400 clamp(21px,2vw,30px)/1.1 var(--display);letter-spacing:-.02em}
.wo-live .lm__when span{display:block;margin-top:6px;font-size:13.5px;line-height:1.45;color:var(--muted)}
.wo-live .lm__sub{font:600 11px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.wo-live .gigs{border-top:1px solid var(--line)}
.wo-live .gig{display:grid;grid-template-columns:clamp(84px,8vw,120px) 1fr auto;align-items:baseline;gap:6px 16px;padding:15px 0;border-bottom:1px solid var(--line);animation:rowin .9s var(--ease) both;animation-delay:calc(var(--i) * 80ms)}
.wo-live .gig[hidden]{display:none}
.wo-live .gig__day{font:600 11px/1.4 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.wo-live .gig__who{font-family:var(--display);font-size:clamp(22px,2.2vw,32px);line-height:1.1;letter-spacing:-.02em;transition:transform .6s var(--ease)}
.wo-live .gig:hover .gig__who{font-style:italic;transform:translateX(5px)}
.wo-live .gig__time{font-size:14px;color:var(--muted);white-space:nowrap}
.wo-live .gig.is-today .gig__day{color:var(--gold-deep)}
.wo-live .gigs__none{display:none;padding:20px 0;border-bottom:1px solid var(--line);color:var(--muted)}
.wo-live .gigs:not(:has(.gig:not([hidden]))) + .gigs__none{display:block}
@media (max-width:1000px){
  .wo-live .lm{grid-template-columns:1fr}
  .wo-live .lm__pic{position:static;aspect-ratio:4/3}
  .wo-live .lm__pic img{object-position:50% 25%}
}
@media (max-width:640px){
  .wo-live .lm__when{grid-template-columns:1fr}
  .wo-live .lm__when div,.wo-live .lm__when div+div{padding:14px 0;border-left:0;border-bottom:1px solid var(--line)}
  .wo-live .gig{grid-template-columns:1fr auto}
  .wo-live .gig__day{grid-column:1/-1}
}

/* ── section: wo-regulars ── */
/* Every week: the regulars */
.wo-reg__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(28px,3vw,44px) var(--gap)}
.wo-reg figure{aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:var(--sand)}
.wo-reg figure img{width:100%;height:100%;object-fit:cover}
.wo-reg article>div{padding-right:14px}
.wo-reg h3{font-size:clamp(24px,2.1vw,32px);margin-top:18px}
.wo-reg ul{margin-top:12px;border-top:1px solid var(--line)}
.wo-reg li{display:grid;grid-template-columns:86px 1fr;gap:8px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.45}
.wo-reg li b{font:600 11px/1.9 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.wo-reg article p{margin-top:12px;font-size:14.5px;color:var(--muted)}
.wo-reg article p.note{font:italic 400 15px/1.4 var(--display)}
@media (max-width:1000px){.wo-reg__grid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.wo-reg__grid{grid-template-columns:1fr}}

/* ── section: wo-week ── */
/* This week: day picker. The panel is built by behaviour.js from the hidden activities/events data. */
.wo-week .wk:not(.is-ready){display:none}
.wo-week .wk{padding:clamp(16px,2.4vw,36px);border-radius:var(--r);background:var(--sand)}
.wo-week .wk__bar{display:flex;justify-content:space-between;align-items:center;gap:16px}
.wo-week .wk__range{font-family:var(--display);font-size:clamp(22px,2.2vw,32px);letter-spacing:-.015em}
.wo-week .rail-ctrl{display:flex}
.wo-week .rail-ctrl button{display:block;width:44px;height:44px}
.wo-week .wk__days{position:relative;display:grid;grid-template-columns:repeat(7,1fr);margin-top:18px;padding:6px;border-radius:20px;background:var(--cream)}
.wo-week .wk__ind{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px) / 7);border-radius:15px;background:var(--ink);transform:translateX(calc(var(--i,0) * 100%));transition:transform .7s var(--ease)}
.wo-week .wk__day{position:relative;display:grid;justify-items:center;gap:7px;padding:14px 0 12px;border-radius:15px;transition:color .45s}
.wo-week .wk__day[aria-selected="true"]{color:var(--cream)}
.wo-week .wk__day span{font:600 10px/1 var(--body);letter-spacing:.16em;text-transform:uppercase;opacity:.65}
.wo-week .wk__day.is-today span{color:var(--gold);opacity:1}
.wo-week .wk__day b{font:400 clamp(22px,2.6vw,38px)/1 var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.wo-week .wk__day i{display:flex;gap:3px;height:5px}
.wo-week .wk__day u{width:5px;height:5px;border-radius:50%;background:var(--gold)}
.wo-week .wk__panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.86fr);gap:clamp(20px,3.4vw,56px);align-items:start;margin-top:clamp(22px,3vw,40px)}
.wo-week .wk__title{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:clamp(28px,3.2vw,50px)}
.wo-week .wk__list{margin-top:18px;border-top:1px solid var(--line)}
.wo-week .wk__row{display:grid;grid-template-columns:clamp(96px,10.4vw,150px) 1fr auto;align-items:center;gap:6px 16px;padding:17px 0;border-bottom:1px solid var(--line);animation:rowin .9s var(--ease) both;animation-delay:calc(var(--i) * 90ms)}
.wo-week .wk__time{font-family:var(--display);font-size:clamp(24px,2.4vw,36px);line-height:1;letter-spacing:-.02em;transition:transform .6s var(--ease)}
.wo-week .wk__row.is-active .wk__time{font-style:italic;transform:translateX(4px)}
.wo-week .wk__what b{display:block;font:600 15.5px/1.3 var(--body)}
.wo-week .wk__what small{display:block;margin-top:3px;font-size:13.5px;line-height:1.4;color:var(--muted)}
.wo-week .wk__row .btn{height:38px;padding:0 15px;font-size:11px}
.wo-week .wk__row.is-paused .wk__time,.wo-week .wk__row.is-paused b{opacity:.45;text-decoration:line-through;text-decoration-thickness:1px}
.wo-week .wk__empty{padding:22px 0;border-bottom:1px solid var(--line);color:var(--muted);animation:rowin .9s var(--ease) both}
.wo-week .wk__empty a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.wo-week .wk__stage{position:relative;aspect-ratio:16/9;border-radius:var(--r);overflow:hidden;background:var(--cream)}
.wo-week .wk__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transform:scale(1.05);transition:opacity .8s var(--ease),transform 1.4s var(--ease)}
.wo-week .wk__stage img.is-photo{object-fit:cover}
.wo-week .wk__stage img.is-active{opacity:1;transform:none}
.wo-week .wk__notes{margin-top:18px;font-size:13px;color:var(--muted)}
@media (max-width:1000px){
  .wo-week .wk__panel{grid-template-columns:1fr}
  .wo-week .wk__stage{order:-1}
}
@media (max-width:640px){
  .wo-week .wk{margin-inline:calc(var(--gap) - var(--pad))}
  .wo-week .wk__days{padding:4px;border-radius:16px}
  .wo-week .wk__ind{top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / 7);border-radius:12px}
  .wo-week .wk__day span{font-size:9px;letter-spacing:.1em}
  .wo-week .wk__row{grid-template-columns:76px 1fr}
  .wo-week .wk__row .btn,.wo-week .wk__row .pill{grid-column:2;justify-self:start}
}
