/* venue-v2.css : new styles for the rebuilt venue pages. Everything is scoped under .vv (the main element).
   The page body keeps class "rd" so the existing header, footer and skip link come from redesign.css.
   Loads after fonts.css, tokens.css, redesign.css. Touches no existing selector.
   Rules: Sora, black base, cyan #67e8ff, no text effects, no card grids, no boxed takeaways.
   Depth comes from photo layering, offset frames, big type and slow reveals. */

.vv{
  --vv-bg:#050608;
  --vv-bg-2:#0a0d12;
  --vv-ink:#f4f6fa;
  --vv-ink-2:rgba(244,246,250,.78);
  --vv-ink-3:rgba(244,246,250,.6);
  --vv-rule:rgba(244,246,250,.16);
  --vv-cyan:#67e8ff;
  --vv-gut:clamp(16px,4.5vw,48px);
  --vv-max:1200px;
  --vv-ease:cubic-bezier(.16,1,.3,1);
  background:var(--vv-bg);
  color:var(--vv-ink);
  font-family:"Sora",ui-sans-serif,system-ui,sans-serif;
  overflow-x:clip;
}
.vv *,.vv *::before,.vv *::after{box-sizing:border-box}
.vv img{display:block;max-width:100%;height:auto}
.vv p{max-width:46ch;margin:0;font-size:1.0625rem;line-height:1.55;color:var(--vv-ink-2)}
.vv p + p{margin-top:.8em}
.vv a{color:inherit}
.vv a:focus-visible,.vv summary:focus-visible,.vv button:focus-visible{outline:2px solid var(--vv-cyan);outline-offset:3px}
.vv-wrap{width:100%;max-width:var(--vv-max);margin-inline:auto;padding-inline:var(--vv-gut)}

/* small all-caps label above headings */
.vv-eyebrow{display:block;margin:0 0 .9rem;font-size:.75rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--vv-cyan)}
.vv h2{margin:0;font-weight:800;letter-spacing:-.02em;line-height:1.08;font-size:clamp(1.75rem,1.1rem + 2.8vw,3rem);text-wrap:balance;overflow-wrap:anywhere}
.vv h3{margin:0;font-weight:700;letter-spacing:-.01em;line-height:1.2;font-size:clamp(1.15rem,1rem + .8vw,1.5rem)}

/* progress bar and reading time (the bar element is in the HTML, script only scales it) */
.vv-progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:60;background:transparent;pointer-events:none}
.vv-progress i{display:block;height:100%;width:100%;background:var(--vv-cyan);transform:scaleX(0);transform-origin:0 50%}
.vv-read{display:inline-block;margin:0;font-size:.8125rem;letter-spacing:.08em;text-transform:uppercase;color:var(--vv-ink-3)}

/* ---------- 1. hero: full bleed, title where there are no faces ---------- */
.vv-hero{position:relative;min-height:min(92svh,860px);display:grid;align-items:end;overflow:hidden;background:var(--vv-bg)}
.vv .vv-hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--vv-focus,50% 40%);will-change:transform}
.vv-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,.72) 22%,rgba(5,6,8,0) 58%),linear-gradient(to bottom,rgba(5,6,8,.55),rgba(5,6,8,0) 22%);pointer-events:none}
.vv-hero__text{position:relative;z-index:2;padding-block:clamp(5rem,16vh,9rem) clamp(1.75rem,5vh,3.25rem)}
/* data-title-pos on .vv-hero moves the title to the side with no faces */
.vv-hero[data-title-pos="top"]{align-items:start}
.vv-hero[data-title-pos="right"] .vv-hero__text{margin-left:auto;max-width:min(30rem,100%);text-align:right}
.vv-hero h1{margin:0;font-weight:800;letter-spacing:-.035em;line-height:.98;font-size:clamp(2.4rem,1rem + 7vw,6rem);text-wrap:balance;overflow-wrap:anywhere;max-width:16ch}
.vv-hero__town{display:block;margin-top:1rem;font-size:.8125rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--vv-cyan)}
.vv-hero .vv-read{margin-top:.75rem}

/* ---------- 2. credibility line ---------- */
.vv-count{padding-block:clamp(2rem,6vw,4rem) clamp(1rem,3vw,2rem)}
.vv-count__row{display:flex;align-items:baseline;gap:clamp(.75rem,2vw,1.5rem);flex-wrap:wrap}
.vv-count__num{font-weight:800;letter-spacing:-.05em;line-height:.85;font-size:clamp(4rem,2rem + 14vw,10rem);color:var(--vv-ink)}
.vv-count__plus{color:var(--vv-cyan)}
.vv-count__label{font-size:clamp(1.05rem,.9rem + .8vw,1.5rem);font-weight:600;line-height:1.2;max-width:14ch;color:var(--vv-ink)}
.vv-count__best{margin-top:1.25rem;font-size:.8125rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--vv-ink-3)}
.vv-count__best b{color:var(--vv-cyan);font-weight:600}

/* ---------- 3. info: open squares, thin lines, label over value ---------- */
.vv-info{margin-block:clamp(1.25rem,3vw,2.25rem)}
.vv-info__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--vv-rule)}
.vv-info__item{padding:1.1rem 0 1.25rem 0;border-bottom:1px solid var(--vv-rule);min-width:0}
.vv-info__item:nth-child(even){padding-left:1rem;border-left:1px solid var(--vv-rule)}
.vv-info__label{display:block;font-size:.6875rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--vv-ink-3)}
.vv-info__value{display:block;margin-top:.45rem;font-size:clamp(1.05rem,.95rem + .6vw,1.35rem);font-weight:700;line-height:1.2;overflow-wrap:anywhere;color:var(--vv-ink)}
.vv-info__value a{text-decoration-color:var(--vv-cyan);text-underline-offset:.2em}
.vv-info__cta .vv-info__value,.vv-info__cta .vv-info__value a{color:var(--vv-cyan)}
@media (min-width:900px){
  .vv-info__list{grid-template-columns:repeat(4,minmax(0,1fr))}
  .vv-info__item,.vv-info__item:nth-child(even){padding:1.25rem 1.25rem 1.5rem;border-left:1px solid var(--vv-rule)}
  .vv-info__item:first-child{padding-left:0;border-left:0}
}

/* ---------- photo + words rows ---------- */
.vv-split{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:center;padding-block:clamp(1.75rem,5vw,3.5rem)}
.vv-split__text{min-width:0}
.vv-split__text h2{margin-bottom:1rem}
@media (min-width:860px){
  .vv-split{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .vv-split--flip{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
  .vv-split--flip .vv-split__text{order:2}
}

/* a photo with an offset cyan outline behind it for depth (no blur, no tint) */
.vv-photo{position:relative;margin:0;isolation:isolate}
.vv-photo::before{content:"";position:absolute;z-index:-1;inset:0;transform:translate(14px,14px);border:1px solid var(--vv-cyan);opacity:.55;pointer-events:none}
.vv-photo img{width:100%;box-shadow:0 30px 60px -28px rgba(0,0,0,.95),0 10px 22px -12px rgba(0,0,0,.8);transition:transform .8s var(--vv-ease)}
.vv-photo:hover img{transform:translate(-3px,-3px)}
.vv-photo figcaption,.vv-credit{margin-top:.75rem;font-size:.75rem;line-height:1.4;color:var(--vv-ink-3);max-width:46ch}
.vv-credit a{text-decoration-color:var(--vv-cyan);text-underline-offset:.2em}
@media (max-width:480px){.vv-photo::before{transform:translate(8px,8px)}}

/* short checkmark list */
.vv-ticks{list-style:none;margin:0;padding:0}
.vv-ticks li{position:relative;padding:.7rem 0 .7rem 2rem;border-bottom:1px solid var(--vv-rule);font-size:1.0625rem;line-height:1.4;color:var(--vv-ink);overflow-wrap:anywhere}
.vv-ticks li:first-child{border-top:1px solid var(--vv-rule)}
.vv-ticks li::before{content:"";position:absolute;left:.15rem;top:.95rem;width:.9rem;height:.5rem;border-left:2px solid var(--vv-cyan);border-bottom:2px solid var(--vv-cyan);transform:rotate(-45deg)}

/* photo rows: 2 or 3 photos, then 1 wide */
.vv-rows{display:grid;gap:clamp(.75rem,2vw,1.25rem);padding-block:clamp(1.25rem,3vw,2rem)}
.vv-rows__line{display:grid;gap:clamp(.75rem,2vw,1.25rem);grid-template-columns:repeat(2,minmax(0,1fr))}
.vv-rows__line--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.vv-rows__line--1{grid-template-columns:minmax(0,1fr)}
.vv-rows figure{margin:0}
.vv-rows img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.vv-rows__line--1 img{aspect-ratio:21/9}
@media (max-width:560px){
  .vv-rows__line--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vv-rows__line--3 > :first-child{grid-column:1 / -1}
  .vv-rows__line--3 > :first-child img{aspect-ratio:16/10}
  .vv-rows__line--1 img{aspect-ratio:16/10}
}

/* ---------- the day in order (data-slot="night"): photo, short bit, photo ---------- */
.vv-night{padding-block:clamp(2rem,6vw,4.5rem);counter-reset:vvstep}
.vv-night__head{margin-bottom:clamp(1.25rem,4vw,2.5rem);max-width:40ch}
.vv-night__date{margin-top:.9rem;font-size:.8125rem;letter-spacing:.1em;text-transform:uppercase;color:var(--vv-ink-3)}
.vv-step{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;margin-top:clamp(2rem,6vw,4rem);counter-increment:vvstep}
.vv-step__text{min-width:0}
.vv-step__text h3::before{content:counter(vvstep,decimal-leading-zero);display:block;margin-bottom:.5rem;font-size:.75rem;font-weight:600;letter-spacing:.2em;color:var(--vv-cyan)}
.vv-step__text p{margin-top:.6rem}
.vv-step .vv-photo img{aspect-ratio:4/3;object-fit:cover}
@media (min-width:860px){
  .vv-step{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
  .vv-step:nth-of-type(even){grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .vv-step:nth-of-type(even) .vv-photo{order:2}
}

/* ---------- spaces (only when the venue really has them) and Where I set up ---------- */
.vv-spaces,.vv-setup{padding-block:clamp(2rem,6vw,4rem)}
.vv-spaces__list{list-style:none;margin:1.5rem 0 0;padding:0}
.vv-space{display:grid;gap:.5rem;padding:1.25rem 0;border-top:1px solid var(--vv-rule)}
.vv-space:last-child{border-bottom:1px solid var(--vv-rule)}
.vv-space p{margin:0}
@media (min-width:760px){.vv-space{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:2rem}}
.vv-setup__grid{display:grid;gap:clamp(1.25rem,3vw,2.5rem);grid-template-columns:minmax(0,1fr);align-items:center}
@media (min-width:860px){.vv-setup__grid{grid-template-columns:minmax(0,6fr) minmax(0,6fr)}}
.vv-tour{padding-block:clamp(1.5rem,4vw,3rem)}
.vv-tour__frame{position:relative;margin-top:1.25rem;aspect-ratio:16/9;background:var(--vv-bg-2)}
.vv-tour__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* ---------- jump menu: a thin row, one swipe row on a phone ---------- */
.vv-jump{position:sticky;top:0;z-index:40;background:rgba(5,6,8,.94);border-bottom:1px solid var(--vv-rule)}
.vv-jump ul{list-style:none;margin:0 auto;padding:0 var(--vv-gut);display:flex;gap:1.75rem;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;max-width:var(--vv-max)}
.vv-jump ul::-webkit-scrollbar{display:none}
.vv-jump a{display:block;padding:1rem 0;white-space:nowrap;font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--vv-ink-3);border-bottom:2px solid transparent}
.vv-jump a:hover,.vv-jump a[aria-current="true"]{color:var(--vv-cyan);border-bottom-color:var(--vv-cyan)}
.vv [id]{scroll-margin-top:3.75rem}

/* ---------- why listen to me: a small card, NOT sticky, never follows the reader ---------- */
.vv-why{position:static;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;margin-block:clamp(2rem,6vw,4rem);padding:1.5rem 0;border-top:1px solid var(--vv-rule);border-bottom:1px solid var(--vv-rule)}
.vv-why img{width:84px;height:84px;object-fit:cover;object-position:50% 20%;border-radius:50%;flex:none}
.vv-why__line{flex:1 1 14rem;min-width:0;margin:0;max-width:34ch;font-size:clamp(1.1rem,1rem + .6vw,1.4rem);font-weight:700;line-height:1.25;color:var(--vv-ink)}
.vv-btn{display:inline-block;padding:.95rem 1.6rem;background:var(--vv-cyan);color:#06070a;font-weight:700;font-size:.9375rem;text-decoration:none;letter-spacing:.01em;transition:transform .4s var(--vv-ease)}
.vv a.vv-btn{color:#06070a}
.vv-btn:hover{transform:translateY(-3px)}

/* ---------- SHOWSTOPPER HOOK (T006d) ----------
   One signature moment per page lives in the section data-slot="showstopper" data-showstopper="NAME".
   T006d adds its rules in the marked block below and registers its script with VV.show(NAME, fn) in venue-v2.js.
   Default pose (no JS, reduced motion, or no registered show): the photos sit in a plain row, finished and readable. */
.vv-show{position:relative;padding-block:clamp(2rem,6vw,4rem)}
.vv-show__head{margin-bottom:1.5rem;max-width:40ch}
.vv-show__stack{display:grid;gap:clamp(.75rem,2vw,1.25rem);grid-template-columns:repeat(3,minmax(0,1fr))}
.vv-show__stack figure{margin:0}
.vv-show__stack img{width:100%;aspect-ratio:3/4;object-fit:cover}
@media (max-width:560px){.vv-show__stack{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* >>> T006d BEGIN showstopper rules (scope them under .vv-show[data-show-live]) >>> */
/* The night as a stack of prints (works on any venue page that uses .vv-night + .vv-step).
   Default pose = finished: each photo is a paper print with a small tilt and a contact shadow, in order. */
.vv-night .vv-photo{--vv-rot:0deg;--vv-dim:0;position:relative;margin:0;padding:10px 10px 10px;background:#ece8df;border-radius:2px;isolation:isolate;
  box-shadow:0 1px 1px rgba(0,0,0,.55),0 10px 16px -6px rgba(0,0,0,.75),0 26px 40px -22px rgba(0,0,0,.9),inset 0 0 0 1px rgba(255,255,255,.55);
  transform:rotate(var(--vv-rot));transform-origin:50% 60%}
.vv-night .vv-photo::before{content:"";position:absolute;z-index:2;inset:0;border:0;border-radius:2px;background:#050608;opacity:var(--vv-dim);transform:none;pointer-events:none}
.vv-night .vv-photo img{box-shadow:none;aspect-ratio:4/5;object-fit:cover;object-position:50% 30%;transition:none;filter:none}
.vv-night .vv-photo:hover img{transform:none}
.vv-night .vv-step:nth-of-type(1) .vv-photo{--vv-rot:-2deg}
.vv-night .vv-step:nth-of-type(2) .vv-photo{--vv-rot:1.6deg}
.vv-night .vv-step:nth-of-type(3) .vv-photo{--vv-rot:-1.2deg}
.vv-night .vv-step:nth-of-type(4) .vv-photo{--vv-rot:2.2deg}
.vv-night .vv-step:nth-of-type(5) .vv-photo{--vv-rot:-1.8deg}
.vv-night .vv-step{padding-inline:6px}
.vv-night__intro{margin-top:clamp(1.5rem,4vw,2.5rem)}
@media (max-width:859px){
  .vv-night .vv-photo{width:min(100%,420px);justify-self:center}
}
.vv-night .vv-photo[data-reveal]{transition:opacity .9s var(--vv-ease)}
@media (prefers-reduced-motion:no-preference) and (min-width:860px){
  .vv-night .vv-step{position:relative;min-height:84svh;margin-top:0;grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center}
  .vv-night .vv-step:nth-of-type(even){grid-template-columns:minmax(0,6fr) minmax(0,5fr)}
  .vv-night .vv-step:nth-of-type(even) .vv-photo{order:0}
  .vv-night .vv-photo{width:min(100%,50svh);justify-self:center}
  .vv-night[data-night-live] .vv-photo{will-change:transform;z-index:var(--vv-z,1)}
  .vv-night[data-night-live] .vv-step__text{transition:opacity .5s ease}
  .vv-night[data-night-live] .vv-step.is-past .vv-step__text{opacity:.45}
}
/* <<< T006d END <<< */

/* ---------- the Google half: folded, click to open ---------- */
.vv-fold-wrap{padding-block:clamp(2rem,6vw,4rem)}
.vv-fold-wrap > h2{margin-bottom:1.5rem}
.vv-fold{border-top:1px solid var(--vv-rule)}
.vv-fold:last-of-type{border-bottom:1px solid var(--vv-rule)}
.vv-fold > summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.15rem 0;min-height:44px}
.vv-fold > summary::-webkit-details-marker{display:none}
.vv-fold > summary h2,.vv-fold > summary h3,.vv-fold > summary h4,.vv-fold > summary .vv-q{margin:0;font-size:clamp(1.05rem,.95rem + .6vw,1.35rem);font-weight:700;letter-spacing:-.01em;line-height:1.25;min-width:0;overflow-wrap:anywhere}
.vv-fold > summary::after{content:"+";flex:none;font-size:1.6rem;line-height:1;font-weight:300;color:var(--vv-cyan);transition:transform .35s var(--vv-ease)}
.vv-fold[open] > summary::after{transform:rotate(45deg)}
.vv-fold__body{padding:0 0 1.5rem}
.vv-fold__body p{max-width:62ch}
.vv-fold__body ul{margin:.75rem 0 0;padding-left:1.1rem;color:var(--vv-ink-2);line-height:1.55}
.vv-fold__body a{text-decoration-color:var(--vv-cyan);text-underline-offset:.2em}
.vv-links{padding-block:clamp(1.5rem,4vw,2.5rem)}
.vv-links ul{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem 1.5rem}
.vv-links a{font-size:.9375rem;text-decoration-color:var(--vv-cyan);text-underline-offset:.25em}

/* ---------- motion: only when JS marks the page and the visitor allows motion ---------- */
.vv-anim [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .9s var(--vv-ease),transform .9s var(--vv-ease)}
.vv-anim [data-reveal].is-in{opacity:1;transform:none}
.vv-anim .vv-photo[data-reveal]::before{transform:translate(0,0);transition:transform 1.1s var(--vv-ease) .15s}
.vv-anim .vv-photo[data-reveal].is-in::before{transform:translate(14px,14px)}
@media (max-width:480px){.vv-anim .vv-photo[data-reveal].is-in::before{transform:translate(8px,8px)}}

@media (prefers-reduced-motion:reduce){
  .vv [data-reveal],.vv-anim [data-reveal],.vv-anim [data-reveal].is-in{opacity:1;transform:none;transition:none}
  .vv-photo img,.vv-btn,.vv-fold > summary::after{transition:none}
  .vv-photo:hover img,.vv-btn:hover{transform:none}
  .vv-hero__img{transform:none !important}
  .vv-anim .vv-photo[data-reveal]::before,.vv-anim .vv-photo[data-reveal].is-in::before{transition:none;transform:translate(14px,14px)}
}

/* 320 px safety: nothing may push the page sideways */
@media (max-width:360px){
  .vv-hero h1{font-size:2.15rem}
  .vv-count__num{font-size:3.75rem}
  .vv-why img{width:64px;height:64px}
  .vv-btn{width:100%;text-align:center}
}
@media print{.vv-progress,.vv-jump{display:none}}

/* Header and skip link: the live venue pages carried these as inline styles, which the v2 build drops. Same rules as live. */
.rd .rd-skip{position:absolute;left:-9999px;top:8px;z-index:10;padding:12px 16px;background:var(--rd-accent);color:var(--rd-accent-ink)}
.rd .rd-skip:focus{left:16px}
.rd .evermore-nav{height:64px;display:flex;align-items:center;gap:16px}
.rd .evermore-nav .rd-wordmark{font-size:24px;margin-right:auto}
.rd .evermore-nav > a:last-child{min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}


/* ===== HUB v2 (/guides venue finder). Own block. Scoped under .hv2. ===== */
.hv2{--hv-bg:#050608;--hv-ink:#f4f6fa;--hv-ink-2:rgba(244,246,250,.78);--hv-ink-3:rgba(244,246,250,.6);--hv-rule:rgba(244,246,250,.18);--hv-cyan:#67e8ff;
  margin:2.5rem 0 3rem;padding:clamp(16px,3vw,32px);background:var(--hv-bg);color:var(--hv-ink);font-family:"Sora",ui-sans-serif,system-ui,sans-serif;border-top:1px solid var(--hv-rule);border-bottom:1px solid var(--hv-rule)}
.hv2 *,.hv2 *::before,.hv2 *::after{box-sizing:border-box}
.hv2 .hub-sub{margin:0 0 .6rem;color:var(--hv-ink)}
.hv2-intro{max-width:56ch;margin:0 0 1.2rem;color:var(--hv-ink-2);line-height:1.55}
.hv2-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.6rem}
.hv2-chip{display:inline-block;padding:.5rem .9rem;border:1px solid var(--hv-rule);background:transparent;color:var(--hv-ink);font-size:.8125rem;letter-spacing:.04em;text-decoration:none;border-radius:2px}
.hv2-chip:hover{border-color:var(--hv-cyan)}
.hv2-chip[aria-pressed="true"]{border-color:var(--hv-cyan);color:var(--hv-cyan)}
.hv2 a:focus-visible{outline:2px solid var(--hv-cyan);outline-offset:3px}
.hv2-body{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(20px,3vw,40px);align-items:start}
.hv2-mapwrap{max-width:900px}
.hv2-map{display:block;width:100%;height:auto;border:1px solid var(--hv-rule)}
.hv2-river{fill:none;stroke:rgba(244,246,250,.35);stroke-width:2;stroke-dasharray:2 5}
.hv2-rv,.hv2-side{fill:var(--hv-ink-3);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.hv2-pin{cursor:pointer}
.hv2-pin circle{fill:var(--hv-cyan);fill-opacity:.9;stroke:var(--hv-bg);stroke-width:2}
.hv2-pin text{fill:var(--hv-ink);font-size:13px;font-weight:600}
.hv2-pin.is-dim circle{fill:#5b6370;fill-opacity:.7}
.hv2-pin.is-dim text{fill:var(--hv-ink-3);font-weight:400}
.hv2-pin:focus-visible circle,.hv2-pin:hover circle{stroke:var(--hv-ink)}
.hv2-note{margin:.7rem 0 0;font-size:.8125rem;line-height:1.5;color:var(--hv-ink-3);max-width:60ch}
.hv2-count{margin:0 0 .8rem;font-size:.8125rem;letter-spacing:.14em;text-transform:uppercase;color:var(--hv-ink-3)}
.hv2-count span{color:var(--hv-cyan)}
.hv2-list{list-style:none;margin:0;padding:0;columns:3;column-gap:2rem}
.hv2-list li{display:block;break-inside:avoid;padding:.65rem 0;border-top:1px solid var(--hv-rule)}
.hv2-list li[hidden]{display:none}
.hv2-list a{display:block;color:var(--hv-ink);font-weight:600;text-decoration:none;line-height:1.35}
.hv2-list a:hover{color:var(--hv-cyan)}
.hv2-list span{display:block;margin-top:.15rem;font-size:.8125rem;color:var(--hv-ink-3);line-height:1.4}
.hv2-none{margin:.8rem 0 0;color:var(--hv-ink-2)}
@media (max-width:980px){.hv2-list{columns:2}}
@media (max-width:620px){.hv2-list{columns:1}.hv2-pin text{font-size:19px}.hv2-rv,.hv2-side{font-size:15px}}
@media (prefers-reduced-motion:no-preference){.hv2-pin circle,.hv2-chip{transition:fill .25s,border-color .25s,color .25s}}
/* ===== end HUB v2 ===== */

/* ---------- QA fix Nov 5: hero title always readable on bright photos (dark scrim behind the text side only) ---------- */
.vv-hero::after{background:linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,.84) 28%,rgba(5,6,8,.4) 56%,rgba(5,6,8,0) 78%),linear-gradient(to bottom,rgba(5,6,8,.5),rgba(5,6,8,0) 22%)}
.vv-hero[data-title-pos="top"]::after{background:linear-gradient(to bottom,rgba(5,6,8,.9) 0%,rgba(5,6,8,.66) 34%,rgba(5,6,8,0) 68%),linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,0) 22%)}
.vv-hero[data-title-pos="right"]::after{background:linear-gradient(to left,rgba(5,6,8,.88) 0%,rgba(5,6,8,.55) 40%,rgba(5,6,8,0) 72%),linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,0) 26%)}
.vv-hero__credit{margin-top:.5rem}
.vv-credit,.vv-photo figcaption.vv-credit{color:var(--vv-ink-2)}

/* small count line for venues with fewer than 3 weddings on record (main, Nov 5) */
.vv-count__small{margin:0 0 1rem;font-size:.8125rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--vv-cyan)}

/* the day in order: a timeline rail above the photo steps (Sean, Nov 4 "going through the day... chronological, less wording") */
.vv-tl{list-style:none;margin:0 0 clamp(2rem,6vw,3.5rem);padding:0;display:grid;gap:0;position:relative}
.vv-tl__item{position:relative;padding:0 0 1.4rem 1.75rem;min-width:0}
.vv-tl__item::before{content:"";position:absolute;left:5px;top:.9rem;bottom:0;width:1px;background:rgba(103,232,255,.35)}
.vv-tl__item:last-child::before{display:none}
.vv-tl__dot{position:absolute;left:0;top:.35rem;width:11px;height:11px;border-radius:50%;border:1.5px solid var(--vv-cyan);background:#000}
.vv-tl__item:first-child .vv-tl__dot,.vv-tl__item:last-child .vv-tl__dot{background:var(--vv-cyan)}
.vv-tl__when{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;font-size:.8125rem;letter-spacing:.16em;text-transform:uppercase}
.vv-tl__when b{font-weight:600;color:#fff}
.vv-tl__when time{color:var(--vv-cyan);font-weight:500;letter-spacing:.08em}
.vv-tl__line{margin:.35rem 0 0;max-width:34ch;color:rgba(255,255,255,.78);font-size:.98rem;line-height:1.5}
@media (min-width:860px){
.vv-tl{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:1.25rem}
.vv-tl__item{padding:1.75rem 0 0}
.vv-tl__item::before{left:11px;right:-1.25rem;top:5px;bottom:auto;width:auto;height:1px}
.vv-tl__dot{top:0}
}

/* Best for: Sean's own guide line, sentence case (main, Nov 5) */
.vv-count__best{text-transform:none;letter-spacing:0;font-size:1rem;font-weight:400}

/* QA round 4 fixes (main, Nov 5) */
html body{margin:0}
.vv-count__small{font-size:.9375rem;letter-spacing:.14em}
.vv-night .vv-photo{box-shadow:0 1px 2px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.4)}
.vv-night .vv-photo .vv-credit,.vv-night .vv-photo .vv-credit a{color:#1a1c20;font-size:.8125rem;opacity:1}
.vv-night .vv-photo .vv-credit{padding:.45rem .1rem 0}
.vv-night .vv-step__text p{color:var(--vv-ink)}
.vv-info__label{font-size:.75rem}
.vv h2 + p,.vv h2 + .vv-night__date{margin-top:.75rem}
@media (prefers-reduced-motion:no-preference) and (min-width:860px){
  .vv-night .vv-step{min-height:66svh}
  .vv-night .vv-photo{width:min(100%,46svh)}
}
/* Desktop hero: title on a black band above the full-width photo, so it never sits on faces (QA round 4, Sean Q16) */
@media (min-width:860px){
  .vv-hero,.vv-hero[data-title-pos]{display:flex;flex-direction:column;align-items:stretch;min-height:0}
  .vv-hero .vv-hero__text,.vv-hero[data-title-pos="right"] .vv-hero__text{order:1;margin-left:auto;margin-right:auto;text-align:left;max-width:none;padding-block:clamp(3rem,9vh,5.5rem) clamp(1.5rem,4vh,2.5rem)}
  .vv .vv-hero__img{order:2;position:relative;inset:auto;height:min(78svh,52vw);flex:none}
  .vv-hero h1{font-size:clamp(2.6rem,1rem + 3.4vw,4.4rem);max-width:24ch}
  .vv-hero::after,.vv-hero[data-title-pos]::after{top:auto;height:22%;background:linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,0) 100%)}
}
@media (max-width:859px){
  .vv-hero,.vv-hero[data-title-pos]{display:flex;flex-direction:column;align-items:stretch;min-height:0}
  .vv-hero .vv-hero__text,.vv-hero[data-title-pos="right"] .vv-hero__text{order:1;text-align:left;max-width:none;padding-block:2rem 1.25rem}
  .vv .vv-hero__img{order:2;position:relative;inset:auto;height:min(62svh,118vw);flex:none}
  .vv-hero::after,.vv-hero[data-title-pos]::after{top:auto;height:18%;background:linear-gradient(to top,var(--vv-bg) 0%,rgba(5,6,8,0) 100%)}
}

/* ===== Round 5 (roast council, Nov 5): one grid, calmer type, the day as photo + line per stage ===== */
.vv-hero .vv-hero__text,.vv-hero[data-title-pos="right"] .vv-hero__text{max-width:var(--vv-max);margin-inline:auto;width:100%}
@media (min-width:860px){.vv .vv-hero__img{height:min(66svh,48vw)}}
.vv h2{font-size:clamp(1.6rem,1rem + 2vw,2.4rem);max-width:22ch}
.vv-split{align-items:start}
@media (min-width:900px){.vv-info__list{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}}
.vv-count__small{font-size:1.25rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--vv-ink)}
.vv-night__date{text-transform:none;letter-spacing:0;font-size:.9375rem}
/* the day rail: every stage sits on one cyan line, photo stages show their print beside the line */
.vv-day{position:relative}
.vv-day__row{padding-block:0}
.vv-day__row > *,.vv-night .vv-step__text{position:relative;padding-left:1.6rem;border-left:1px solid rgba(103,232,255,.35)}
.vv-day__row > :last-child{padding-bottom:1.4rem}
.vv-day__row .vv-day__line{padding-top:.35rem;margin-top:0}
.vv-day__when{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;margin:0;font-size:.8125rem;letter-spacing:.16em;text-transform:uppercase}
.vv-day__when::before{content:"";position:absolute;left:-6px;top:.3rem;width:11px;height:11px;border-radius:50%;border:1.5px solid var(--vv-cyan);background:#000}
.vv-step .vv-day__when::before{background:var(--vv-cyan)}
.vv-day__when b{font-weight:600;color:#fff}
.vv-step .vv-day__when{font-size:.875rem}
.vv-day__when time{color:var(--vv-cyan);font-weight:500;letter-spacing:.08em}
.vv .vv-day__line{max-width:36ch;color:var(--vv-ink);font-size:1.0625rem;line-height:1.5}
.vv-night .vv-step__text .vv-day__line{margin-top:.5rem}
.vv-night .vv-step__text .vv-step__cap{margin-top:.6rem;color:var(--vv-ink-2);font-size:.98rem;max-width:40ch}
.vv-night .vv-step{margin-top:1.25rem;margin-bottom:1.25rem}
.vv-night .vv-step__text{padding-block:.2rem 1rem}
@media (min-width:860px){
  .vv-day__row{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);column-gap:clamp(1.5rem,4vw,3.5rem)}
  .vv-day__row > *{grid-column:2}
  .vv-night .vv-step,.vv-night .vv-step:nth-of-type(even){grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center}
  .vv-night .vv-step:nth-of-type(even) .vv-photo{order:0}
}
@media (prefers-reduced-motion:no-preference) and (min-width:860px){
  .vv-night .vv-step{min-height:62svh;margin-block:0}
  .vv-night .vv-photo{width:min(100%,52svh)}
}
.vv-night .vv-step{padding-inline:0}
@media (min-width:860px){.vv-split .vv-photo img{aspect-ratio:4/3;object-fit:cover}}
@media (prefers-reduced-motion:no-preference) and (min-width:860px){.vv-night .vv-step{min-height:56svh}}
/* round 6: one print per stage, no dead space, extras as a small row, open spaces list */
@media (prefers-reduced-motion:no-preference) and (min-width:860px){.vv-night .vv-step{min-height:0;padding-block:clamp(1.5rem,4vh,2.75rem)}}
@media (min-width:860px){.vv .vv-step .vv-day__line{font-size:1.25rem;line-height:1.45}}
.vv-day__more{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin:0 0 1.5rem}
.vv-day__more figure{margin:0}
.vv-day__more img{width:100%;aspect-ratio:4/5;object-fit:cover}
.vv-day__more .vv-credit{margin-top:.35rem;font-size:.6875rem}
@media (min-width:860px){.vv-day__more{width:calc(54.5% - 1rem);margin-left:0;grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:760px){.vv-space{grid-template-columns:minmax(0,1fr);gap:.4rem;max-width:62ch}}
.vv-tour__frame::before{content:"Loading the venue's 360 tour";position:absolute;inset:0;display:grid;place-items:center;font-size:.875rem;letter-spacing:.08em;color:var(--vv-ink-3)}
/* extras now live in the stage text column, under the line */
.vv-day__more,.vv-day__more[data-n]{width:auto;margin:1rem 0 0;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));max-width:30rem}
.vv-day__more[data-n="1"]{--n:1;max-width:11rem}
.vv-day__more[data-n="2"]{--n:2;max-width:21rem}
@media (min-width:860px){.vv-day__more,.vv-day__more[data-n]{width:auto;margin:1.25rem 0 0}}
/* round 7: rows before the first photo sit under the heading, not floating right */
@media (min-width:860px){.vv-day > .vv-day__row:not(.vv-step ~ .vv-day__row) > *{grid-column:1}}
/* round 8: one rail down the left, prints on the right, stage label level with the print top */
@media (min-width:860px){
  .vv-day__row,.vv-night .vv-step,.vv-night .vv-step:nth-of-type(even){grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:clamp(2rem,5vw,4.5rem);align-items:stretch}
  .vv-day__row > *,.vv-day > .vv-day__row:not(.vv-step ~ .vv-day__row) > *{grid-column:1}
  .vv-night .vv-step .vv-step__text{grid-column:1;grid-row:1;padding-top:1.25rem;opacity:1}
  .vv-night .vv-step .vv-photo,.vv-night .vv-step:nth-of-type(even) .vv-photo{grid-column:2;grid-row:1;order:0;justify-self:start;align-self:start}
}
/* round 9: stage text rides beside its print, print flush to the gutter, one rail scale, no dead right half */
.vv-day__when,.vv-step .vv-day__when{font-size:.8125rem}
.vv .vv-day__line,.vv .vv-step .vv-day__line{font-size:1.125rem;line-height:1.45}
.vv-day__row > :last-child{padding-bottom:2rem}
@media (max-width:859px){.vv-night .vv-step{margin-block:.75rem}}
@media (min-width:860px){
  .vv-night .vv-step .vv-step__text{align-self:start;position:sticky;top:6.5rem;padding-top:1rem;padding-bottom:2rem}
  .vv-night .vv-step .vv-photo,.vv-night .vv-step:nth-of-type(even) .vv-photo{justify-self:end;width:100%;max-width:25rem}
  .vv .vv-step .vv-day__line{font-size:1.25rem}
  .vv-spaces{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:clamp(2rem,5vw,4.5rem);align-items:start}
  .vv-spaces > .vv-eyebrow,.vv-spaces > h2{grid-column:1}
  .vv-spaces > .vv-spaces__list{grid-column:2;grid-row:1 / span 3;margin-top:0}
  .vv-split:not(:has(.vv-photo)) .vv-split__text,.vv-setup__grid > div:only-child{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:clamp(2rem,5vw,4.5rem);grid-column:1 / -1;max-width:none;width:100%}
  .vv-split:not(:has(.vv-photo)) .vv-split__text > *,.vv-setup__grid > div:only-child > *{grid-column:1}
  .vv-split:not(:has(.vv-photo)) .vv-split__text > p,.vv-setup__grid > div:only-child > p{grid-column:2;grid-row:1 / span 2;margin-top:0;align-self:end}
}
@media (min-width:860px){
  .vv-night .vv-step,.vv-night .vv-step:nth-of-type(even){grid-template-columns:minmax(0,1fr) minmax(0,22rem)}
  .vv-night .vv-step .vv-photo,.vv-night .vv-step:nth-of-type(even) .vv-photo{max-width:22rem}
  .vv .vv-step .vv-day__line{font-size:1.375rem;max-width:30ch}
  .vv-split:not(:has(.vv-photo)) .vv-split__text > p,.vv-setup__grid > div:only-child > p{grid-row:2;align-self:center}
}
/* round 10: one rail system: one label size, one line size, filled dot marks a photo stage */
.vv .vv-day .vv-day__when,.vv .vv-day .vv-step .vv-day__when{font-size:.8125rem;letter-spacing:.16em}
.vv .vv-day .vv-day__line,.vv .vv-day .vv-step .vv-day__line{font-size:1.1875rem;line-height:1.45;max-width:34ch}
.vv-day__row > :last-child,.vv-night .vv-step .vv-step__text{padding-bottom:1.5rem}
.vv-night,.vv-spaces,.vv-setup{padding-block:clamp(2rem,4vw,3rem)}
@media (max-width:859px){
  .vv-night .vv-step{display:flex;flex-direction:column}
  .vv-night .vv-step .vv-step__text{order:-1}
  .vv-night .vv-step .vv-photo{order:0}
}
@media (min-width:860px){
  .vv .vv-day .vv-day__line,.vv .vv-day .vv-step .vv-day__line{font-size:1.25rem}
  .vv-split:not(:has(.vv-photo)) .vv-split__text > p,.vv-setup__grid > div:only-child > p{align-self:start;padding-top:2.2rem}
}
/* round 10b: spaces = heading on top, rooms in two columns (no empty left half) */
@media (min-width:860px){
  .vv-spaces{display:block}
  .vv-spaces > .vv-spaces__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,5vw,4.5rem);margin-top:1.5rem}
}
/* round 11: closing card, two buttons then one clean link row (Sean Nov 5 12:54 "the bottom is sloppy") */
.vv-close__ctas{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}
.vv-btn--ghost{background:transparent;color:var(--vv-cyan);box-shadow:inset 0 0 0 1px var(--vv-cyan)}
.vv a.vv-btn--ghost{color:var(--vv-cyan)}
.vv-close__links{display:flex;flex-wrap:wrap;gap:.5rem 1.75rem;list-style:none;margin:1.5rem 0 0;padding:0;font-size:1rem}
.vv-close__links li{margin:0}
@media (max-width:640px){.vv-close__ctas{flex-direction:column}.vv-close__ctas .vv-btn{width:100%}}
/* round 12 (full QA Nov 5): extra photos sit under the main print as matching prints, not stray thumbnails */
.vv-night .vv-step .vv-day__more,.vv-night .vv-step .vv-day__more[data-n]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%;max-width:none;margin:.75rem 0 0}
.vv-night .vv-step .vv-day__more figure{margin:0;padding:.5rem;background:#efe9df}
.vv-night .vv-step .vv-day__more img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.vv-night .vv-step .vv-day__more .vv-credit{color:#3a3a3a;margin:.35rem 0 0}
@media (min-width:860px){.vv-night .vv-step .vv-day__more,.vv-night .vv-step .vv-day__more[data-n]{grid-column:2;justify-self:end;max-width:22rem;margin-top:1.25rem;margin-bottom:2rem}}
@media (max-width:859px){.vv-night .vv-step .vv-day__more{order:1}}
/* a room section with no photo is one column, not an empty half */
.vv-split:not(:has(> figure)){grid-template-columns:minmax(0,1fr)!important}
/* old text inside open folds: definition lists and stray headings read as body text */
.vv-fold__body dl{margin:.75rem 0 0;display:grid;gap:.9rem}
.vv-fold__body dt{font-weight:700;color:var(--vv-ink)}
.vv-fold__body dd{margin:.2rem 0 0;color:var(--vv-ink-2);line-height:1.55;max-width:62ch}
.vv-fold__body h2,.vv-fold__body h3,.vv-fold__body h4{font-size:1.0625rem;line-height:1.35;margin:1.25rem 0 .35rem;letter-spacing:0;text-transform:none}
@media (min-width:860px){
  .vv-night .vv-step:has(.vv-day__more){align-items:start}
  .vv-night .vv-step:has(.vv-day__more) .vv-photo{grid-column:2;grid-row:1}
  .vv-night .vv-step:has(.vv-day__more) .vv-step__text{grid-column:1;grid-row:1 / span 2}
  .vv-night .vv-step .vv-day__more{grid-row:2}
}
