@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&display=swap');
@font-face{font-family:'General Sans';src:url(/assets/v2/fonts/general-sans-300.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url(/assets/v2/fonts/general-sans-400.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url(/assets/v2/fonts/general-sans-500.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url(/assets/v2/fonts/general-sans-600.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700i-vietnamese.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap;unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700i-latin-ext.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700i-latin.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-500-vietnamese.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-500-latin-ext.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-500-latin.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-600-vietnamese.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-600-latin-ext.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-600-latin.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700-vietnamese.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700-latin-ext.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-700-latin.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-800-vietnamese.woff2) format('woff2');font-weight:800;font-style:normal;font-display:swap;unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-800-latin-ext.woff2) format('woff2');font-weight:800;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Barlow Condensed';src:url(/assets/v2/fonts/barlow-condensed-800-latin.woff2) format('woff2');font-weight:800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Instrument Serif';src:url(/assets/v2/fonts/instrument-serif-400i-latin-ext.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Instrument Serif';src:url(/assets/v2/fonts/instrument-serif-400i-latin.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Instrument Serif';src:url(/assets/v2/fonts/instrument-serif-400-latin-ext.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Instrument Serif';src:url(/assets/v2/fonts/instrument-serif-400-latin.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* metric-matched fallbacks (speed pass): while a web font is still arriving, the text is drawn in a local font scaled to the
   same width, so lines do not re-wrap (no layout shift) when it swaps in. Ratios measured in Edge against these files. */
@font-face{font-family:'General Sans Fallback';src:local('Arial'),local('ArialMT');size-adjust:99.6%;ascent-override:100%;descent-override:25%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback';src:local('Georgia');font-style:normal;size-adjust:92.1%;ascent-override:90%;descent-override:22%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback';src:local('Georgia Italic'),local('Georgia-Italic');font-style:italic;size-adjust:77.7%;ascent-override:103%;descent-override:31%;line-gap-override:0%}
@font-face{font-family:'Barlow Condensed Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Arial');font-weight:500 800;size-adjust:75.7%;ascent-override:100%;descent-override:20%;line-gap-override:0%}

/* STRUCTURE v2 — quiet luxury. One accent (bronze) used rarely, reading on light grounds, photography does the talking.
   Grounds: .t-dark (ink) .t-char (warm charcoal) .t-bone .t-paper .t-trav (travertine). Components: v2/core.py. Spec: docs/REDESIGN-V2-SPEC.md */
:root{
  --ink:#0A0A0B; --char:#161412; --char2:#1E1B18; --bone:#ECE7DF; --paper:#F5F1EA; --trav:#EEE8DB; --stone:#D9D2C7;
  --text:#16130F; --umber:#5E5A54; --dim:#A8A197; --bronze:#C79C6E; --bronze-t:#7A5634; --champ:#E4C198; --sage:#4F6B55; --terra:#A34A35;
  --display:"General Sans","General Sans Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --body:"General Sans","General Sans Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --gut:clamp(20px,4.4vw,72px); --max:1480px; --sec:clamp(64px,7.5vw,120px); --r:4px;
  --ease:cubic-bezier(.2,.7,.2,1); --ease2:cubic-bezier(.65,0,.35,1);
}
.t-dark{--bg:var(--ink);--fg:var(--bone);--fg2:var(--dim);--line:rgba(236,231,223,.14);--acc:var(--champ);--card:#131110}
.t-char{--bg:var(--char);--fg:var(--bone);--fg2:var(--dim);--line:rgba(236,231,223,.12);--acc:var(--champ);--card:var(--char2)}
.t-bone{--bg:var(--bone);--fg:var(--text);--fg2:var(--umber);--line:rgba(22,19,15,.13);--acc:var(--bronze-t);--card:#E3DDD2}
.t-paper{--bg:var(--paper);--fg:var(--text);--fg2:var(--umber);--line:rgba(22,19,15,.12);--acc:var(--bronze-t);--card:var(--bone)}
.t-trav{--bg:var(--trav);--fg:var(--text);--fg2:var(--umber);--line:rgba(22,19,15,.13);--acc:var(--bronze-t);--card:#E4DCCB}
.t-dark,.t-char,.t-bone,.t-paper,.t-trav{background:var(--bg);color:var(--fg)}

/* ---------------------------------------------------------------- base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--ink);scroll-padding-top:96px}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{margin:0;background:var(--paper);color:var(--text);font:400 16px/1.65 var(--body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}
img,svg{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{margin:0;font-weight:400}
p,figure,blockquote,address{margin:0}
address{font-style:normal}
ul,ol{margin:0;padding:0}
::selection{background:var(--bronze);color:#17120B}
:focus-visible{outline:2px solid var(--bronze);outline-offset:3px;border-radius:2px}
.v-wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.v-sec{padding-block:var(--sec)}
.v-sec + .v-sec.t-bone.after-bone{padding-top:0}
.v-skip{position:fixed;left:16px;top:-60px;z-index:100;background:var(--bronze);color:#17120B;padding:10px 16px;border-radius:999px;font-weight:600;transition:top .3s}
.v-skip:focus{top:16px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------------------------------------------------------------- type */
.v-d1{font:400 clamp(44px,6.8vw,118px)/.96 var(--display);letter-spacing:-.036em;text-wrap:balance}
/* the h1 = the small label (search phrase) + the display line, one heading that looks like the old label over a headline */
.v-h1{display:block}.v-h1 > .v-d1{display:block}
.v-d2{font:400 clamp(34px,4.3vw,70px)/1.02 var(--display);letter-spacing:-.03em;text-wrap:balance;max-width:17ch}
.v-d3{font:400 clamp(24px,2.3vw,38px)/1.16 var(--display);letter-spacing:-.022em;text-wrap:balance}
.soft{color:var(--fg2)}
.v-lead{font-size:clamp(17px,1.3vw,20.5px);line-height:1.55;color:var(--fg2);max-width:44ch;text-wrap:pretty}
.v-eye{display:flex;align-items:center;gap:14px;margin-bottom:26px;font:600 11.5px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.v-eye::before{content:"";flex:none;width:28px;height:1px;background:currentColor;opacity:.75}
.v-n{font:400 13px/1 var(--display);letter-spacing:.08em;color:var(--acc);font-variant-numeric:tabular-nums}
.v-prose{color:var(--fg2);max-width:58ch;font-size:clamp(16px,1.1vw,17.5px);line-height:1.7}
.v-prose p+p,.v-prose p+ul,.v-prose ul+p{margin-top:1em}
.v-prose b,.v-prose strong{color:var(--fg);font-weight:600}
.v-prose a{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
.v-prose a:hover{border-color:currentColor}
.v-prose ul{list-style:none;display:grid;gap:10px}
.v-prose li{position:relative;padding-left:22px}
.v-prose li::before{content:"";position:absolute;left:0;top:.8em;width:10px;height:1px;background:var(--acc)}
.v-cite{margin-top:18px;font-size:14px;color:var(--fg2)}

/* ---------------------------------------------------------------- buttons & links */
.v-acts{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.v-btn{--h:52px;position:relative;display:inline-flex;align-items:center;gap:14px;height:var(--h);padding:0 22px 0 26px;border-radius:999px;font:600 14.5px/1 var(--body);letter-spacing:.005em;white-space:nowrap;transition:background-color .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.v-btn i{display:grid;place-items:center;width:18px;height:18px;transition:transform .5s var(--ease)}
.v-btn i svg{width:16px;height:16px}
.v-btn:hover i{transform:translateX(4px)}
.v-btn.primary{background:var(--bronze);color:#17120B}
.v-btn.primary:hover{background:var(--champ)}
.v-btn.ghost{border:1px solid color-mix(in srgb,currentColor 55%,transparent);color:var(--fg,var(--bone))}
.v-btn.ghost:hover{border-color:currentColor}
.v-link{display:inline-flex;align-items:center;gap:10px;padding-bottom:6px;border-bottom:1px solid var(--line);font-weight:600;font-size:15px;color:var(--fg);transition:border-color .35s var(--ease)}
.v-link svg{width:15px;height:15px;transition:transform .5s var(--ease)}
.v-link:hover{border-color:currentColor}
.v-link:hover svg{transform:translateX(4px)}

/* ---------------------------------------------------------------- photos & reveal */
.v-pic{position:relative;overflow:hidden;background:var(--ph,#1a1816);border-radius:var(--r)}
.v-pic img{width:100%;height:100%;object-fit:cover;object-position:var(--fo,50% 50%)}
.v-pic[style*="aspect-ratio"] img{position:absolute;inset:0}
html.v2-ok [data-r]{opacity:0;transform:translate3d(0,26px,0);transition:opacity 1s var(--ease) var(--d,0ms),transform 1.25s var(--ease) var(--d,0ms)}
html.v2-ok [data-r].in{opacity:1;transform:none}
html.v2-ok .v-pic[data-r]{opacity:1;transform:none;clip-path:inset(9% 0 0 0 round var(--r));transition:clip-path 1.5s var(--ease2) var(--d,0ms)}
html.v2-ok .v-pic[data-r] img{transform:scale(1.1);transition:transform 2s var(--ease) var(--d,0ms)}
html.v2-ok .v-pic[data-r].in{clip-path:inset(0 0 0 0 round var(--r))}
html.v2-ok .v-pic[data-r].in img{transform:none}

/* ---------------------------------------------------------------- header */
.v-hdr{position:fixed;inset:0 0 auto;z-index:60;color:var(--bone);border-bottom:1px solid transparent;transition:background-color .5s var(--ease),color .5s var(--ease),border-color .5s var(--ease),transform .6s var(--ease)}
.v-hdr-in{display:flex;align-items:center;gap:32px;height:84px}
.v-logo{flex:none}
.v-logo img{height:21px;width:auto;transition:filter .5s var(--ease)}
.over-light .v-hdr:not(.solid){color:var(--text)}
.over-light .v-hdr:not(.solid) .v-logo img{filter:brightness(0) saturate(0) opacity(.9)}
.v-nav{display:flex;gap:clamp(18px,2vw,32px);margin-left:auto;font-size:14.5px;font-weight:500}
.v-nav a{position:relative;padding:8px 0;opacity:.82;transition:opacity .3s}
.v-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)}
.v-nav a:hover,.v-nav a[aria-current]{opacity:1}
.v-nav a:hover::after,.v-nav a[aria-current]::after{transform:scaleX(1);transform-origin:left}
.v-hdr-r{display:flex;align-items:center;gap:14px}
.v-hdr .v-btn{--h:44px;padding:0 18px 0 20px;font-size:13.5px}
.v-hdr.solid{background:rgba(12,11,10,.84);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border-color:rgba(236,231,223,.08);color:var(--bone)}
.v-hdr.hide{transform:translateY(-101%)}
.v-burger{display:none;width:44px;height:44px;place-items:center;position:relative}
.v-burger i{position:absolute;left:12px;right:12px;height:1.5px;background:currentColor;transition:transform .45s var(--ease)}
.v-burger i:first-child{transform:translateY(-4px)}
.v-burger i:last-child{transform:translateY(4px)}
.menu-open .v-burger i:first-child{transform:rotate(45deg)}
.menu-open .v-burger i:last-child{transform:rotate(-45deg)}
.v-mnav{position:fixed;inset:0;z-index:55;background:var(--ink);color:var(--bone);padding:108px 0 40px;overflow:auto;opacity:0;transition:opacity .45s var(--ease)}
.v-mnav.open{opacity:1}
.v-mnav-l{list-style:none}
.v-mnav-l a{display:block;padding:4px 0;font:400 clamp(34px,8.5vw,54px)/1.14 var(--display);letter-spacing:-.03em}
.v-mnav-l a[aria-current]{color:var(--champ)}
.v-mnav-c{list-style:none;display:grid;gap:12px;margin:36px 0 28px;padding-top:24px;border-top:1px solid rgba(236,231,223,.14);font-size:15px}
.v-mnav-c li{display:flex;justify-content:space-between;gap:16px}
.v-mnav-c a{color:var(--dim)}
.menu-open .v-hdr{background:transparent;border-color:transparent;color:var(--bone)}
.menu-open .v-hdr .v-logo img{filter:none}
@media (max-width:1120px){.v-nav{display:none}.v-burger{display:grid}.v-hdr-r{margin-left:auto}}
@media (max-width:560px){.v-hdr-in{height:68px}.v-hdr .v-btn{display:none}.v-logo img{height:18px}}

/* ---------------------------------------------------------------- crumbs */
.v-crumbs{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:34px;font-size:13px;color:var(--fg2)}
.v-crumbs a{transition:color .3s}
.v-crumbs a:hover{color:var(--fg)}
.v-crumbs i{font-style:normal;opacity:.5}

/* ---------------------------------------------------------------- heroes */
.v-hero{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:100vh;min-height:100svh;overflow:hidden;background:var(--ink)}
.v-hero > .v-pic{position:absolute;inset:0;z-index:-2;border-radius:0}
.v-hero > .v-pic img,.v-hero > .v-pic picture{position:absolute;inset:0;width:100%;height:100%}
.v-hero > .v-pic img{object-fit:cover}
.v-hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(90deg,rgba(10,10,11,.66) 0%,rgba(10,10,11,.3) 36%,rgba(10,10,11,0) 62%),linear-gradient(0deg,rgba(10,10,11,.82) 0%,rgba(10,10,11,.25) 34%,rgba(10,10,11,0) 55%)}
.v-hero-in{padding-top:150px;padding-bottom:clamp(36px,5vw,80px)}
.v-hero .v-d1{max-width:11.5ch}
.v-hero-foot{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:28px 64px;margin-top:clamp(28px,3vw,44px);padding-top:28px;border-top:1px solid rgba(236,231,223,.2)}
.v-hero .v-lead{color:rgba(236,231,223,.8)}
.v-hero--band{min-height:min(92svh,940px)}
.v-hero--band .v-d1{font-size:clamp(42px,6vw,104px)}
.v-hero .v-crumbs{color:rgba(236,231,223,.7)}
html.v2-ok .v-hero > .v-pic img{transform:scale(1.07);transition:transform 2.8s var(--ease)}
html.v2-ok .v-hero.in > .v-pic img{transform:none}
html.v2-ok .v-hero-in > *{opacity:0;transform:translate3d(0,22px,0);transition:opacity 1.1s var(--ease),transform 1.3s var(--ease)}
/* the h1 is the page's largest text (its LCP): it rises in but is never faded out, so it counts as painted at once */
html.v2-ok .v-hero-in > h1{opacity:1}
html.v2-ok .v-hero.in .v-hero-in > *{opacity:1;transform:none}
html.v2-ok .v-hero.in .v-hero-in > :nth-child(2){transition-delay:.12s}
html.v2-ok .v-hero.in .v-hero-in > :nth-child(3){transition-delay:.26s}
@media (max-width:760px){
  .v-hero::after{background:linear-gradient(0deg,rgba(10,10,11,.9) 0%,rgba(10,10,11,.5) 42%,rgba(10,10,11,.05) 72%)}
  .v-hero > .v-pic img{object-position:var(--fo-m,var(--fo,50% 50%))}
  .v-hero-foot{gap:22px}
  .v-hero .v-acts{width:100%}
}
.v-hsplit{padding-top:clamp(124px,13vw,188px);padding-bottom:var(--sec)}
.v-hsplit-in{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(36px,6vw,110px);align-items:end}
.v-hsplit .v-d1{font-size:clamp(44px,5.8vw,100px)}
.v-hsplit .v-lead{margin-top:30px}
.v-hsplit .v-acts{margin-top:38px}
@media (max-width:900px){.v-hsplit-in{grid-template-columns:1fr}.v-hsplit-in > .v-pic{max-height:78svh}}

/* ---------------------------------------------------------------- section heads */
.v-sh{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:28px 64px;align-items:end;margin-bottom:clamp(48px,6vw,96px)}
.v-sh-r{display:grid;gap:26px;justify-items:start}
@media (max-width:900px){.v-sh{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- statement */
.v-state{font:400 clamp(28px,3.3vw,54px)/1.18 var(--display);letter-spacing:-.026em;max-width:27ch;text-wrap:pretty}
.v-facts{list-style:none;display:grid;grid-template-columns:repeat(var(--fc,4),minmax(0,1fr));margin-top:clamp(56px,7vw,112px);border-top:1px solid var(--line)}
.v-facts li{display:grid;align-content:start;gap:10px;padding:28px 24px 0 0}
.v-facts li + li{padding-left:24px;border-left:1px solid var(--line)}
.v-facts b{font:300 clamp(40px,4.4vw,70px)/1 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.v-facts span{font-size:14px;color:var(--fg2);max-width:24ch}
@media (max-width:760px){.v-facts{grid-template-columns:1fr 1fr}.v-facts li:nth-child(3){padding-left:0;border-left:0}.v-facts li:nth-child(n+3){border-top:1px solid var(--line);margin-top:28px}}

/* ---------------------------------------------------------------- pillars */
.v-pillars{display:grid;grid-template-columns:repeat(var(--c,4),minmax(0,1fr));gap:clamp(12px,1.4vw,22px)}
.v-pillar{display:grid;align-content:start;gap:22px;color:var(--fg)}
.v-pillar .v-pic img{transition:transform 1.4s var(--ease)}
.v-pillar:hover .v-pic img{transform:scale(1.035)}
.v-pillar-t{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 14px;align-items:baseline}
.v-pillar-t .v-n{grid-row:1}
.v-pillar-t h3{grid-column:2;font:400 clamp(22px,1.9vw,30px)/1.1 var(--display);letter-spacing:-.02em}
.v-pillar-t p{grid-column:2;font-size:15px;color:var(--fg2);max-width:32ch}
.v-pillar-go{grid-column:3;grid-row:1;display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:50%;transition:background-color .4s var(--ease),border-color .4s var(--ease),color .4s var(--ease)}
.v-pillar-go svg{width:14px;height:14px}
.v-pillar:hover .v-pillar-go{background:var(--bronze);border-color:var(--bronze);color:#17120B}
@media (max-width:1100px){.v-pillars{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:48px}}
@media (max-width:640px){.v-pillars{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:80%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
  .v-pillars::-webkit-scrollbar{display:none}.v-pillar{scroll-snap-align:start}}

/* ---------------------------------------------------------------- numbered list with photo */
.v-nl{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);gap:clamp(40px,7vw,120px);align-items:start}
.v-nl-list{list-style:none;border-top:1px solid var(--line)}
.v-nl-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:18px;padding:clamp(26px,2.6vw,38px) 0;border-bottom:1px solid var(--line);transition:opacity .5s var(--ease)}
.v-nl-row .v-n{padding-top:12px}
.v-nl-row h3{font:400 clamp(26px,2.5vw,42px)/1.08 var(--display);letter-spacing:-.026em}
.v-nl-row p{margin-top:12px;color:var(--fg2);max-width:50ch}
.v-nl-m{display:none}
.v-nl-panel{position:sticky;top:112px;aspect-ratio:4/5;border-radius:var(--r);overflow:hidden;background:var(--card)}
.v-nl-p{position:absolute!important;inset:0;opacity:0;transform:scale(1.035);transition:opacity .9s var(--ease),transform 1.6s var(--ease)}
.v-nl-p.on{opacity:1;transform:none}
@media (hover:hover) and (min-width:901px){.v-nl-list:hover .v-nl-row:not(:hover){opacity:.42}}
@media (max-width:900px){.v-nl{grid-template-columns:1fr}.v-nl-panel{display:none}.v-nl-m{display:block;grid-column:1 / -1;margin-bottom:20px}.v-nl-row{grid-template-columns:44px minmax(0,1fr)}}

/* ---------------------------------------------------------------- film band */
.v-band{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:clamp(380px,50vw,820px);overflow:hidden}
.v-band-pic{position:absolute!important;inset:-8% 0;z-index:-2;border-radius:0}
.v-band-pic img{will-change:transform}
.v-band.has-t::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(10,10,11,.72) 0%,rgba(10,10,11,.1) 50%,rgba(10,10,11,0) 70%)}
.v-band-t{padding-bottom:clamp(36px,5.5vw,92px)}
.v-band .v-d3{max-width:24ch}

/* ---------------------------------------------------------------- pair / split */
.v-pair,.v-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,7vw,128px);align-items:center}
.v-pair.flip .v-pair-pics,.v-split.flip > .v-pic{order:2}
.v-pair-t .v-d2,.v-split-t .v-d2{margin-bottom:28px}
.v-pair-t .v-acts,.v-split-t .v-acts{margin-top:38px}
.v-pair-pics{position:relative;padding-bottom:16%}
.v-pair-pics .a{width:72%}
.v-pair-pics .b{position:absolute;right:0;bottom:0;width:44%;outline:clamp(8px,1vw,14px) solid var(--bg)}
.v-pair.flip .v-pair-pics .a{margin-left:auto}
.v-pair.flip .v-pair-pics .b{right:auto;left:0}
@media (max-width:900px){.v-pair,.v-split{grid-template-columns:1fr}.v-pair.flip .v-pair-pics,.v-split.flip > .v-pic{order:0}}

/* ---------------------------------------------------------------- clubs */
.v-clubs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,32px)}
.v-club{display:grid;align-content:start;gap:26px}
.v-club-t h3{font:400 clamp(28px,2.5vw,40px)/1 var(--display);letter-spacing:-.03em}
.v-tags{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.v-tags li{padding:5px 11px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:600;color:var(--fg2)}
.v-club address{margin-top:16px;max-width:34ch;font-size:15px;color:var(--fg2)}
.v-rate{display:flex;align-items:center;gap:8px;margin-top:10px;font-weight:600;font-variant-numeric:tabular-nums}
.v-rate small{font-size:13.5px;font-weight:500;color:var(--fg2)}
.v-stars{display:inline-flex;gap:1px;color:var(--bronze)}
.v-stars svg{width:14px;height:14px}
.v-club-acts{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);font-size:14px;font-weight:600}
.v-club-acts a{display:inline-flex;align-items:center;gap:8px;transition:color .3s}
.v-club-acts a:hover{color:var(--acc)}
.v-club-acts svg{width:16px;height:16px}
.v-club-acts .go{margin-left:auto}
@media (max-width:980px){.v-clubs{grid-template-columns:1fr;gap:64px}.v-club{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:center}}
@media (max-width:640px){.v-club{grid-template-columns:1fr}.v-club-acts .go{margin-left:0}}

/* ---------------------------------------------------------------- coach rail */
.v-rail{position:relative;--mid:42%}
/* arrows sit on the photos' vertical centre, left and right; glass discs that warm to bronze under the pointer */
.v-rail-nav{position:absolute;inset:0;z-index:3;pointer-events:none}
.v-rail-nav button{pointer-events:auto;position:absolute;top:var(--mid);display:grid;place-items:center;width:56px;height:56px;border-radius:50%;color:var(--bone);background:rgba(14,12,10,.5);-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);border:1px solid rgba(236,231,223,.24);box-shadow:0 14px 34px -14px rgba(0,0,0,.65);opacity:0;transform:translateY(-50%) scale(.92);transition:opacity .5s var(--ease),transform .5s var(--ease),background-color .35s var(--ease),border-color .35s var(--ease),color .35s var(--ease)}
.v-rail-nav .prev{left:18px}
.v-rail-nav .next{right:18px}
.v-rail:hover .v-rail-nav button,.v-rail-nav button:focus-visible{opacity:1;transform:translateY(-50%)}
.v-rail-nav button:hover{background:var(--bronze);border-color:var(--bronze);color:#17120B}
.v-rail-nav button:disabled{opacity:0!important;pointer-events:none}
.v-rail-nav svg{width:18px;height:18px;transition:transform .45s var(--ease)}
.v-rail-nav .prev:hover svg{transform:translateX(-3px)}
.v-rail-nav .next:hover svg{transform:translateX(3px)}
@media (hover:none){.v-rail-nav button{opacity:.92;transform:translateY(-50%);width:48px;height:48px}}
/* a hairline that shows where you are in the rail */
.v-rail-prog{position:relative;height:1px;margin-top:clamp(22px,2.4vw,34px);background:var(--line);overflow:hidden}
.v-rail-prog i{position:absolute;inset:0;background:var(--bronze);transform-origin:left;transform:scaleX(var(--rp,.2));transition:transform .6s var(--ease)}
.v-rail-track{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(210px,20vw,290px);gap:clamp(12px,1.4vw,20px);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut);padding-bottom:6px}
.v-rail-track::-webkit-scrollbar{display:none}
.v-coach{display:grid;align-content:start;gap:14px;scroll-snap-align:start}
.v-coach b{font:400 20px/1.15 var(--display);letter-spacing:-.012em}
.v-coach span{margin-top:-8px;font-size:13.5px;color:var(--fg2)}
.v-coachpic img{filter:saturate(.85);transition:transform 1.2s var(--ease),filter .6s var(--ease)}
.v-coach:hover .v-coachpic img{transform:scale(1.04);filter:none}
@media (max-width:640px){.v-rail-nav{display:none}.v-rail-track{grid-auto-columns:62%}}

/* ---------------------------------------------------------------- quote */
.v-quotes{display:grid}
.v-q{grid-area:1 / 1;opacity:0;transform:translateY(14px);visibility:hidden;transition:opacity .9s var(--ease),transform 1s var(--ease),visibility 0s .9s}
.v-q.on{opacity:1;transform:none;visibility:visible;transition-delay:0s}
.v-q p{font:400 clamp(27px,3.3vw,52px)/1.2 var(--display);letter-spacing:-.026em;max-width:30ch;text-wrap:pretty}
.v-q figcaption{margin-top:28px;font-size:14.5px;color:var(--fg2)}
.v-q-foot{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:32px;margin-top:clamp(40px,5vw,72px);padding-top:28px;border-top:1px solid var(--line)}
.v-q-dots{display:flex;gap:6px}
.v-q-dots button{width:34px;height:22px;position:relative}
.v-q-dots button::after{content:"";position:absolute;left:0;right:6px;top:50%;height:2px;background:var(--line);transition:background-color .4s}
.v-q-dots button[aria-current]::after{background:var(--fg)}
.v-score{display:flex;align-items:center;gap:18px}
.v-score > b{font:300 clamp(48px,4.4vw,64px)/1 var(--display);letter-spacing:-.04em}
.v-score > span{display:grid;gap:6px;max-width:25ch;font-size:13.5px;color:var(--fg2)}

/* ---------------------------------------------------------------- steps */
.v-steps{position:relative;list-style:none;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));border-top:1px solid var(--line)}
.v-steps::before{content:"";position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--bronze);transform:scaleX(var(--p,0));transform-origin:0 50%}
.v-steps li{padding:30px clamp(16px,2vw,32px) 0 0}
.v-steps h3{margin:18px 0 10px;font:400 clamp(20px,1.7vw,27px)/1.15 var(--display);letter-spacing:-.018em}
.v-steps p{font-size:15px;color:var(--fg2);max-width:34ch}
.v-steps-cta{margin-top:clamp(48px,5vw,72px)}
@media (max-width:900px){.v-steps{grid-template-columns:1fr;border-top:0;border-left:1px solid var(--line);padding-left:24px}
  .v-steps::before{top:0;left:-1px;width:1px;height:100%;transform:scaleY(var(--p,0));transform-origin:50% 0}
  .v-steps li{padding:0 0 36px}}

/* ---------------------------------------------------------------- menu */
.v-menu{list-style:none;border-top:1px solid var(--line)}
.v-menu li{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,.45fr) minmax(0,.9fr);gap:28px;align-items:baseline;padding:clamp(22px,2.2vw,32px) 0;border-bottom:1px solid var(--line)}
.v-menu .v-m-h{padding:0 0 14px;border-bottom:1px solid var(--line);font-size:11.5px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.v-m-n h3{font:400 clamp(22px,1.9vw,30px)/1.12 var(--display);letter-spacing:-.02em}
.v-m-n p{margin-top:8px;max-width:54ch;font-size:15px;color:var(--fg2)}
.v-m-t{font:400 16px/1.3 var(--display);font-variant-numeric:tabular-nums}
.v-m-x{font-size:14.5px;color:var(--fg2)}
@media (max-width:760px){.v-menu li{grid-template-columns:1fr;gap:8px}.v-menu .v-m-h{display:none}}

/* ---------------------------------------------------------------- faq */
.v-faq{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,6vw,110px);align-items:start}
.v-faq .v-sh{grid-template-columns:1fr;margin:0;position:sticky;top:112px}
.v-faq-l{border-top:1px solid var(--line)}
.v-faq-i{border-bottom:1px solid var(--line)}
.v-faq-i summary{display:flex;justify-content:space-between;gap:24px;padding:26px 0;cursor:pointer;list-style:none;font:400 clamp(19px,1.45vw,23px)/1.3 var(--display);letter-spacing:-.012em}
.v-faq-i summary::-webkit-details-marker{display:none}
.v-faq-i summary .v-faq-q{margin:0;font:inherit;letter-spacing:inherit;color:inherit;text-transform:none}
.v-faq-i summary i{position:relative;flex:none;width:14px;height:14px;margin-top:8px}
.v-faq-i summary i::before,.v-faq-i summary i::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:currentColor;transition:transform .45s var(--ease)}
.v-faq-i summary i::after{transform:rotate(90deg)}
.v-faq-i[open] summary i::after{transform:rotate(0)}
.v-faq-i .v-prose{padding:0 0 28px}
@media (max-width:900px){.v-faq{grid-template-columns:1fr}.v-faq .v-sh{position:static}}

/* ---------------------------------------------------------------- closing cta */
.v-close{position:relative;isolation:isolate;display:flex;align-items:center;min-height:clamp(560px,62vw,920px);overflow:hidden}
.v-close-pic{position:absolute!important;inset:0;z-index:-2;border-radius:0}
.v-close::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(10,10,11,.7) 0%,rgba(10,10,11,.25) 55%,rgba(10,10,11,.4) 100%)}
.v-close-in{display:grid;justify-items:start;gap:26px;padding-block:var(--sec)}
.v-close .v-d1{max-width:12ch}
.v-close .v-lead{color:rgba(236,231,223,.8)}

/* ---------------------------------------------------------------- footer */
.v-ftr{padding-top:clamp(80px,9vw,140px);padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}
.v-ftr-top{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:32px;padding-bottom:clamp(48px,6vw,88px);border-bottom:1px solid var(--line)}
.v-ftr-top .v-d2{max-width:none}
.v-ftr-cols{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:40px;padding-block:clamp(48px,6vw,84px)}
.v-ftr h4,.v-ftr .v-ftr-h{margin-bottom:22px;font:600 11.5px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.v-ftr ul{list-style:none;display:grid;gap:12px;font-size:15px}
.v-ftr a{color:var(--fg2);transition:color .3s}
.v-ftr a:hover{color:var(--fg)}
.v-ftr-clubs{gap:22px!important}
.v-ftr-clubs li{display:grid;gap:4px}
.v-ftr-clubs b{font-weight:600;color:var(--fg)}.v-ftr-clubs b a{color:inherit;text-decoration:none}
.v-ftr-clubs address{font-size:14px;color:var(--fg2);max-width:36ch}
.v-ftr-soc a{display:inline-flex;align-items:center;gap:10px}
.v-ftr-soc svg{width:16px;height:16px}
.v-ftr-mail{margin-top:22px;font-size:15px}
.v-ftr-mark{width:100%;height:auto;margin:clamp(8px,2vw,24px) 0 clamp(16px,2vw,28px);fill:#1d1a17;font:500 150px var(--display);letter-spacing:-.02em;cursor:default;overflow:visible}
.v-ftr-mark text{transition:fill .6s var(--ease)}
.v-ftr-mark:hover > text:not(.hl){fill:#221e1a}
.v-ftr-base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:24px;border-top:1px solid var(--line);font-size:13px;color:var(--fg2)}
@media (max-width:900px){.v-ftr-cols{grid-template-columns:1fr 1fr}.v-ftr-cols > :first-child{grid-column:1 / -1}}
@media (max-width:480px){.v-ftr-cols{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- phone quick bar */
.v-xbar{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:40;display:none;gap:8px;align-items:center;padding:8px;border-radius:999px;background:rgba(18,16,14,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(236,231,223,.1);color:var(--bone);transform:translateY(140%);transition:transform .6s var(--ease)}
.v-xbar.on{transform:none}
.v-xbar a,.v-xbar button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;border-radius:999px;font-size:14px;font-weight:600}
.v-xbar .xbar-book{flex:1;background:var(--bronze);color:#17120B}
.v-xbar .xbar-wa{padding:0 16px;border:1px solid rgba(236,231,223,.18)}
.v-xbar .xbar-wa svg{width:18px;height:18px}
.v-xbar .xbar-chat{width:44px;border:1px solid rgba(236,231,223,.18);font:600 15px var(--display)}
@media (max-width:760px){.v-xbar{display:flex}.v-ftr{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}}

@media (prefers-reduced-motion:reduce){
  html.v2-ok [data-r],html.v2-ok .v-pic[data-r],html.v2-ok .v-pic[data-r] img,html.v2-ok .v-hero-in > *,html.v2-ok .v-hero > .v-pic img{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
  *{scroll-behavior:auto!important}
}

/* ---------------------------------------------------------------- hover warmth: bronze arrives only where the pointer is */
.v-nav a::after{background:var(--bronze)}
.v-link:hover{border-color:var(--bronze)}
.v-link:hover svg{color:var(--bronze)}
.v-btn.ghost:hover{border-color:var(--bronze);color:var(--acc)}
.v-uline{background:linear-gradient(var(--bronze),var(--bronze)) 0 100% / 0 1px no-repeat;padding-bottom:3px;transition:background-size .7s var(--ease),color .4s var(--ease)}
.v-club-t h3 a,.v-coach b{background:linear-gradient(var(--bronze),var(--bronze)) 0 100% / 0 1px no-repeat;padding-bottom:3px;transition:background-size .7s var(--ease),color .4s var(--ease)}
.v-club:hover .v-club-t h3 a,.v-coach:hover b,a:hover > .v-uline{background-size:100% 1px}
.v-coach:hover span{color:var(--acc)}
.v-pillar-t h3{transition:color .4s var(--ease)}
.v-pillar:hover .v-pillar-t h3{color:var(--acc)}
.v-facts b{transition:color .5s var(--ease)}
.v-facts li:hover b{color:var(--acc)}
.v-nl-row{position:relative}
.v-nl-row::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.v-nl-row .v-n,.v-nl-row h3{transition:color .45s var(--ease)}
@media (min-width:901px){.v-nl-row.on::after{transform:scaleX(1)}.v-nl-row.on .v-n{color:var(--bronze)}}
.v-ftr a:hover{color:var(--champ)}
.v-club-acts a:hover svg{color:var(--bronze)}

/* ---------------------------------------------------------------- the eye-catching word: one per heading, serif italic in the accent */
.v-em{font-family:"Instrument Serif","Instrument Serif Fallback",Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;font-size:1.08em;letter-spacing:-.012em;line-height:0;color:var(--acc)}
.v-hero .v-em,.v-close .v-em,.v-band .v-em{color:var(--champ)}
.v-d1 .v-em{font-size:1.1em;letter-spacing:-.02em}
.soft .v-em{color:var(--acc)}
/* statements light up word by word as you read down the page */
.v-state .w{transition:opacity .5s var(--ease),color .5s var(--ease)}
html.v2-ok .v-state.lit-on .w{opacity:.16}
html.v2-ok .v-state.lit-on .w.on{opacity:1}

.v-clubs:has(> :nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:980px){.v-clubs:has(> :nth-child(2):last-child){grid-template-columns:1fr}}
/* a soft top scrim so the header stays readable over bright ceilings */
.v-hero > .v-pic::after{content:"";position:absolute;inset:0 0 auto;height:200px;background:linear-gradient(180deg,rgba(10,10,11,.55),rgba(10,10,11,0));pointer-events:none}

/* ---------------------------------------------------------------- hero stills that crossfade (home) */
.v-hs{position:absolute;inset:0;z-index:-2;overflow:hidden;background:var(--ink)}
.v-hs::after{content:"";position:absolute;inset:0 0 auto;height:200px;background:linear-gradient(180deg,rgba(10,10,11,.55),rgba(10,10,11,0));pointer-events:none;z-index:2}
.v-hs-i{position:absolute!important;inset:0;border-radius:0;opacity:0;transition:opacity 2s cubic-bezier(.45,0,.2,1);will-change:opacity;contain:paint}
.v-hs-i.on,html:not(.v2-ok) .v-hs-i.is-first{opacity:1}
.v-hs-i img,.v-hs-i picture{position:absolute;inset:0;width:100%;height:100%}
.v-hs-i img{object-fit:cover;object-position:var(--fo,50% 50%);transform:scale(1.075);transition:transform 9s cubic-bezier(.2,.5,.3,1);will-change:transform}
.v-hs-i.on img{transform:scale(1)}
.v-hero-foot{position:relative}
.v-hero-foot:has(.v-hs-prog){border-top-color:transparent}
.v-hs-prog{position:absolute;left:0;right:0;top:-12px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:10px}
.v-hs-prog button{position:relative;height:24px;cursor:pointer}
.v-hs-prog button::before,.v-hs-prog button i{content:"";position:absolute;left:0;right:0;top:50%;height:1px;margin-top:-.5px}
.v-hs-prog button::before{background:rgba(236,231,223,.22);transition:background-color .3s}
.v-hs-prog button:hover::before{background:rgba(236,231,223,.5)}
.v-hs-prog button i{background:var(--champ);transform-origin:left;transform:scaleX(0)}
.v-hs-prog button.run i{animation:hsFill var(--hs-t,7s) linear forwards}
@keyframes hsFill{to{transform:scaleX(1)}}
@media (max-width:760px){.v-hs-i:not(.is-first){display:none}.v-hs-prog{display:none}.v-hero-foot:has(.v-hs-prog){border-top-color:rgba(236,231,223,.2)}.v-hs-i img{object-position:var(--fo-m,var(--fo,50% 50%))}}
@media (prefers-reduced-motion:reduce){.v-hs-i,.v-hs-i img{transition:none!important;transform:none!important}.v-hs-prog button.run i{animation:none;transform:scaleX(1)}}

/* ---------------------------------------------------------------- statement with facts + a wide photo group */
.v-state-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(36px,6vw,110px);align-items:end}
.v-statement--pics .v-state{font-size:clamp(38px,4.8vw,78px);line-height:1.02;letter-spacing:-.034em;max-width:14ch}
.v-state-lead{margin-top:clamp(20px,2.2vw,30px);max-width:36ch}
.v-facts--grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;margin-top:0!important;border-top:0!important}
.v-facts--grid li{padding:22px 0 22px 0!important;border-left:0!important;border-top:1px solid var(--line)!important;margin:0!important}
.v-facts--grid li:nth-child(2n){padding-left:24px!important;border-left:1px solid var(--line)!important}
.v-grp{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:clamp(10px,1.2vw,18px);align-items:start}
.v-grp--wide{margin-top:clamp(56px,6vw,100px)}
.v-grp-i{will-change:transform}
.v-grp-i:nth-child(4n+1){margin-top:6%}
.v-grp-i:nth-child(4n+2){margin-top:18%}
.v-grp-i:nth-child(4n+3){margin-top:0}
.v-grp-i:nth-child(4n+4){margin-top:24%}
.v-grp .v-pic img{transition:transform 1.4s var(--ease)}
.v-grp-i:hover .v-pic img{transform:scale(1.04)}
.v-grp-cta{margin-top:clamp(36px,4vw,56px)}
@media (max-width:900px){.v-state-grid{grid-template-columns:1fr;align-items:start}}
@media (max-width:640px){.v-grp{grid-template-columns:repeat(2,minmax(0,1fr))}.v-grp-i:nth-child(n){margin-top:0}.v-grp-i:nth-child(2n){margin-top:16%}}
/* beats: three big words that land in turn */
.v-beats{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(88px,11vw,170px)}
.v-beats.has-pic::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(10,10,11,.78),rgba(10,10,11,.35) 60%,rgba(10,10,11,.55))}
.v-beats-pic{position:absolute!important;inset:0;z-index:-2;border-radius:0}
.v-beats-l{display:flex;flex-wrap:wrap;gap:.1em .42em;font:500 clamp(46px,8.2vw,150px)/.95 var(--display);letter-spacing:-.045em}
.v-beat{display:inline-block}
.v-beat:nth-child(2){color:var(--fg2)}
.v-beat:last-child{font-family:"Instrument Serif","Instrument Serif Fallback",Georgia,serif;font-style:italic;font-weight:400;color:var(--acc);letter-spacing:-.02em}
.t-dark .v-beat:last-child,.v-beats.has-pic .v-beat:last-child{color:var(--champ)}

/* ---------------------------------------------------------------- review loop: real reviews drifting past, pause on hover */
.v-rv-loop{position:relative;display:flex;gap:clamp(12px,1.4vw,20px);margin-top:clamp(48px,5vw,80px);overflow:hidden;
  -webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.v-rv-track{list-style:none;display:flex;flex:none;gap:clamp(12px,1.4vw,20px);min-width:max-content;animation:rvLoop var(--rv-t,70s) linear infinite}
.v-rv-loop:hover .v-rv-track,.v-rv-loop:focus-within .v-rv-track{animation-play-state:paused}
/* until the script has added the second strip (or with no script) the one strip scrolls by hand instead of looping */
.v-rv-loop:not(.dup){overflow-x:auto;scrollbar-width:none}.v-rv-loop:not(.dup) .v-rv-track{animation:none}
@keyframes rvLoop{to{transform:translateX(calc(-100% - clamp(12px,1.4vw,20px)))}}
.v-rv{display:grid;align-content:start;gap:14px;width:clamp(280px,26vw,380px);padding:clamp(22px,2vw,30px);border-radius:var(--r);background:var(--card);border:1px solid var(--line);transition:border-color .4s var(--ease),transform .5s var(--ease)}
.v-rv:hover{border-color:color-mix(in srgb,var(--bronze) 55%,transparent);transform:translateY(-4px)}
.v-rv p{font:400 16px/1.55 var(--body);color:var(--fg);display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.v-rv b{font-weight:600;font-size:14.5px;margin-top:auto}
.v-rv small{margin-top:-10px;font-size:12.5px;color:var(--fg2)}
.v-quote-sec{padding-bottom:var(--sec)}
@media (prefers-reduced-motion:reduce){.v-rv-track{animation:none}.v-rv-loop{overflow-x:auto}.v-rv-track[aria-hidden]{display:none}}
.v-quote-sec .v-q p{font-size:clamp(24px,2.7vw,44px);max-width:32ch}

/* ---------------------------------------------------------------- QA round: touch targets, overflow, phones */
.v-btn{max-width:100%}
.v-btn span{overflow:hidden;text-overflow:ellipsis}
.v-close-in{grid-template-columns:minmax(0,1fr)}
h3,.v-pillar-t h3,.v-steps h3,.v-nl-row h3{text-wrap:balance}
.v-xbar a,.v-xbar button{white-space:nowrap}
@media (max-width:374px){.v-xbar .xbar-wa{width:44px;padding:0}.v-xbar .xbar-wa span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}
@media (pointer:coarse){
  .v-club-acts a{min-height:44px}
  .v-ftr ul{gap:0}.v-ftr ul a{display:inline-flex;align-items:center;min-height:44px}
  .v-link,.v-crumbs a{position:relative}
  .v-link::before{content:"";position:absolute;inset:-8px -4px}
  .v-crumbs a::before{content:"";position:absolute;inset:-12px -4px}
}
@media (hover:none){
  .v-hdr.solid{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(12,11,10,.94)}
  .v-xbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(18,16,14,.96)}
  .v-rail-nav button{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(14,12,10,.82)}
}

/* loops that are off screen stop costing frames */
.v-rv-loop.off .v-rv-track{animation-play-state:paused}
.v-hs.off .v-hs-i img{transition:none}
@media (max-width:760px){.v-beats-pic img{object-position:var(--fo-m,var(--fo,50% 50%))}}
/* three photos stay one staggered row on phones (no orphan) */
@media (max-width:640px){.v-grp[style*="--n:3"]{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.v-grp[style*="--n:3"] .v-grp-i:nth-child(n){margin-top:0}.v-grp[style*="--n:3"] .v-grp-i:nth-child(2){margin-top:16%}}
/* final QA: every remaining small link gets a 44px touch area (the look does not change) */
.v-logo{display:inline-flex;align-items:center;min-height:44px}
@media (pointer:coarse){
  main small a,main dd a,.v-m-x a,.v-rate a{position:relative}
  main small a::before,main dd a::before,.v-m-x a::before,.v-rate a::before{content:"";position:absolute;inset:-13px -6px}
  .v-q-dots button{height:44px}
}

/* reviews: one heading + one loop (no featured quote repeated above the cards) */
.v-rv-head{margin-bottom:0}
.v-rv-head .v-sh-r{justify-items:end}
.v-quote-sec .v-rv-loop{margin-top:clamp(40px,4.5vw,64px)}
.v-rv{width:clamp(290px,27vw,400px);gap:16px}
.v-rv p{font-size:17px;line-height:1.6;-webkit-line-clamp:6}
@media (max-width:900px){.v-rv-head .v-sh-r{justify-items:start}}

/* ---------------------------------------------------------------- clarity pass (8 Oct): light footer, labels on photos */
.v-ftr.t-paper .v-ftr-mark{fill:#E6DFD3}
.v-ftr.t-paper .v-ftr-mark:hover > text:not(.hl){fill:#DED6C8}
.v-ftr.t-paper a{color:var(--umber)}
.v-ftr.t-paper a:hover{color:var(--bronze-t)}
/* small labels over hero photos get a soft local scrim, so a bright patch behind them never drops them under 4.5:1 */
.v-hero .v-eye,.v-hero .v-crumbs{width:fit-content;max-width:100%;border-radius:999px;background:rgba(10,10,11,.34);box-shadow:0 0 22px 12px rgba(10,10,11,.34);text-shadow:0 1px 2px rgba(10,10,11,.5)}
@media (max-width:760px){
  .v-hero::after{background:linear-gradient(0deg,rgba(10,10,11,.9) 0%,rgba(10,10,11,.62) 46%,rgba(10,10,11,.12) 76%)}
  .v-hero .v-eye,.v-hero .v-crumbs{background:rgba(10,10,11,.46);box-shadow:0 0 20px 12px rgba(10,10,11,.46)}
}

/* the home hero label names the three clubs on wide screens; on a phone it keeps to one line */
@media (max-width:760px){.v-hero .v-eye-x{display:none}}

/* speed pass: the AVIF <picture> round an eager photo adds no box of its own */
.v-pp{display:contents}

/* speed (13 Oct, SEO item 4): every section after the first screen is styled, laid out and painted only when it comes near
   the viewport. The home page is ~13,000 px of sections; on a phone the first render used to lay all of them out before it
   could show anything. "auto" remembers each section's real height once it has been seen, so the scrollbar settles. */
main > section:not(:first-child){content-visibility:auto;contain-intrinsic-size:auto 900px}

/* STRUCTURE — realistic 3D cards (see x-tilt.js). Desktop: pointer tilt + moving shadow; phones: scroll lean + press. */
.tl{will-change:rotate,scale;transform-style:flat;isolation:isolate}
.tl img{will-change:translate,scale}
/* soft glare that follows the pointer (desktop) or travels with the scroll (phones) */
.tl-gl{position:absolute;inset:0;z-index:6;border-radius:inherit;pointer-events:none;opacity:calc(var(--tl-h,0) * .9);
  background:radial-gradient(480px circle at var(--tl-gx,50%) var(--tl-gy,50%),rgba(255,247,235,.16),rgba(255,247,235,0) 55%)}
/* the rim facing the light catches it (a 1 px masked border) */
.tl-rim{position:absolute;inset:0;z-index:7;border-radius:inherit;pointer-events:none;padding:1px;opacity:calc(var(--tl-h,0) * .95);
  background:linear-gradient(var(--tl-ang,135deg),rgba(228,193,152,.9),rgba(228,193,152,.18) 30%,rgba(228,193,152,0) 55%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
/* desktop: a real shadow under the lifted card, sliding away from the raised edge (only while hovered) */
@media (hover: hover) and (pointer: fine) {
  .tl.tl-on{filter:drop-shadow(var(--tl-sx,0) var(--tl-sy,18px) calc(18px + var(--tl-h,0) * 26px) rgba(0,0,0,calc(var(--tl-h,0) * .42)))}
  html[data-theme="light"] .tl.tl-on,.x-light .tl.tl-on{filter:drop-shadow(var(--tl-sx,0) var(--tl-sy,18px) calc(18px + var(--tl-h,0) * 26px) rgba(60,45,25,calc(var(--tl-h,0) * .22)))}
}
/* phones: a lighter glare, no filter shadow (kept cheap for scrolling) */
.tl-touch .tl-gl{background:radial-gradient(360px circle at var(--tl-gx,50%) var(--tl-gy,50%),rgba(255,247,235,.12),rgba(255,247,235,0) 60%)}
.tl-touch .tl-rim{opacity:calc(var(--tl-h,0) * .7)}
@media (prefers-reduced-motion: reduce) { .tl-gl, .tl-rim { display:none } }

/* STRUCTURE v2 — the concierge chat. The panel is built by /assets/js/concierge.js (.stc-* classes, unchanged);
   v1's site.css is not loaded on v2 pages, so this is its whole dress: a warm charcoal panel, v2 type, thin rules,
   bronze only on the primary action (booking). On phones the launcher folds into the quick bar's "S" button. */
.stc{--stc-bg:var(--char);--stc-2:#1D1A17;--stc-l:rgba(236,231,223,.1);--stc-l2:rgba(236,231,223,.2);--stc-dim:rgba(236,231,223,.62);
  --stc-live:color-mix(in srgb,var(--sage) 55%,var(--bone));
  position:fixed;right:clamp(16px,1.8vw,28px);bottom:clamp(16px,1.8vw,28px);z-index:70;font:400 15px/1.5 var(--body);color:var(--bone)}
.stc button{font-family:inherit}

/* launcher (desktop) */
.stc-launch{position:relative;display:flex;align-items:center;height:58px;padding:0 4px 0 0;border-radius:999px;background:var(--stc-bg);color:var(--bone);border:1px solid var(--stc-l2);box-shadow:0 18px 48px rgba(10,10,11,.32);transition:transform .5s var(--ease),opacity .3s,border-color .35s var(--ease)}
.stc-launch:hover{border-color:rgba(236,231,223,.4)}
.stc-av{position:relative;flex:none;display:grid;place-items:center;width:56px;height:56px;border-radius:50%}
.stc-av::after{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid rgba(228,193,152,.45)}
.stc-av b{font:400 21px/1 var(--display);letter-spacing:-.02em;color:var(--bone)}
.stc-av i{position:absolute;right:10px;top:10px;width:7px;height:7px;border-radius:50%;background:var(--stc-live);box-shadow:0 0 0 2px var(--stc-bg)}
.stc-pill{display:flex;flex-direction:column;align-items:flex-start;max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .7s var(--ease),padding .7s var(--ease)}
.stc-pill b{font:600 14px/1.25 var(--body)}
.stc-pill small{font-size:12px;color:var(--stc-dim)}
.stc.nudge .stc-pill,.stc-launch:hover .stc-pill,.stc-launch:focus-visible .stc-pill{max-width:220px;padding:0 20px 0 2px}
.stc.open .stc-launch{opacity:0;transform:scale(.92);pointer-events:none}
@media (max-width:760px){.stc-launch{display:none}}

/* panel */
.stc-panel{position:absolute;right:0;bottom:0;display:flex;flex-direction:column;width:min(404px,calc(100vw - 32px));height:min(660px,calc(100vh - 48px));overflow:hidden;
  border-radius:var(--r);background:var(--stc-bg);color:var(--bone);border:1px solid var(--stc-l);box-shadow:0 40px 110px rgba(10,10,11,.5);
  transform-origin:100% 100%;opacity:0;transform:translate3d(0,16px,0);transition:opacity .45s var(--ease),transform .65s var(--ease)}
.stc-panel[hidden]{display:none}
.stc-panel.on{opacity:1;transform:none}
.stc-head{flex:none;display:flex;align-items:center;gap:14px;padding:18px 18px 16px 20px;border-bottom:1px solid var(--stc-l)}
.stc-head .stc-av{width:42px;height:42px;border:1px solid rgba(228,193,152,.45)}
.stc-head .stc-av::after{display:none}
.stc-head .stc-av b{font-size:17px}
.stc-head .stc-av i{right:-1px;top:-1px;width:9px;height:9px;box-shadow:0 0 0 2px var(--stc-bg)}
.stc-head > div{flex:1;min-width:0}
.stc-head > div > b{display:block;font:400 19px/1.15 var(--display);letter-spacing:-.014em}
.stc-head > div > small{display:flex;align-items:center;gap:7px;margin-top:4px;font-size:12px;color:var(--stc-dim)}
.stc-head > div > small i{width:6px;height:6px;border-radius:50%;background:var(--stc-live)}
.stc-x{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1px solid var(--stc-l);color:var(--stc-dim);transition:color .3s,border-color .3s}
.stc-x:hover{color:var(--bone);border-color:rgba(236,231,223,.4)}
.stc-x svg{width:15px;height:15px}

/* conversation */
.stc-log{flex:1;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:22px 16px 10px 20px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(236,231,223,.18) transparent}
.stc-row{display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:100%}
.stc-row.me{align-items:flex-end}
.stc-row.in{animation:stcIn .55s var(--ease) both}
@keyframes stcIn{from{opacity:0;transform:translate3d(0,8px,0)}}
.stc-b{max-width:88%;padding:12px 15px;border-radius:3px 14px 14px 14px;background:var(--stc-2);border:1px solid var(--stc-l);font-size:14.5px;line-height:1.55;overflow-wrap:anywhere}
.stc-b b{font-weight:600;color:#F6F2EB}
.stc-row.me .stc-b{border-radius:14px 3px 14px 14px;background:var(--bone);border-color:var(--bone);color:var(--text)}
.stc-dots{display:inline-flex;gap:4px;padding:4px 2px}
.stc-dots i{width:6px;height:6px;border-radius:50%;background:var(--stc-dim);animation:stcDot 1.1s ease-in-out infinite}
.stc-dots i:nth-child(2){animation-delay:.15s}
.stc-dots i:nth-child(3){animation-delay:.3s}
@keyframes stcDot{0%,60%,100%{opacity:.35;transform:none}30%{opacity:1;transform:translateY(-3px)}}

/* cards inside answers */
.stc-card{width:100%;overflow:hidden;border-radius:var(--r);background:var(--stc-2);border:1px solid var(--stc-l)}
.stc-card b{display:block;font:400 17px/1.2 var(--display);letter-spacing:-.01em;color:var(--bone)}
.stc-card small{display:block;margin-top:3px;font-size:12px;color:var(--stc-dim)}
.stc-card p{margin:6px 0 0;font-size:13px;line-height:1.5;color:rgba(236,231,223,.76)}
.stc-card.club{display:grid;grid-template-columns:86px minmax(0,1fr)}
.stc-card.club img{width:100%;height:100%;min-height:124px;object-fit:cover;filter:saturate(.85)}
.stc-card.club > div{padding:13px 14px}
.stc-card.plans{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--stc-l)}
.stc-plan{padding:13px 14px;background:var(--stc-2)}
.stc-plan b{font-size:16px}
.stc-plan b em{display:block;margin-top:5px;font:600 9.5px/1 var(--body);font-style:normal;letter-spacing:.18em;text-transform:uppercase;color:var(--champ)}
.stc-plan p{font-size:12px}
.stc-card.list{padding:4px 14px 14px}
.stc-li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--stc-l)}
.stc-li b{font:600 14px/1.2 var(--body)}
.stc-li span{font-size:13px;color:var(--stc-dim);font-variant-numeric:tabular-nums}
.stc-card.sum{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--stc-l)}
.stc-card.sum > div{padding:11px 13px;background:var(--stc-2)}
.stc-card.sum small{margin:0 0 5px;font:600 9.5px/1 var(--body);letter-spacing:.18em;text-transform:uppercase}
.stc-card.sum b{font:600 14px/1.3 var(--body)}
.stc-card.done{padding:18px;border-color:rgba(228,193,152,.32)}
.stc-card.done > b{margin-top:14px;font-size:22px}
.stc-card.done .n{color:var(--stc-dim)}
.stc-tick{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--champ);color:var(--champ)}
.stc-tick svg{width:17px;height:17px}

/* actions: quiet outlines; the booking action is the one bronze thing in the panel */
.stc-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.stc-row > .stc-acts{margin-top:0}
.stc-btn{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 15px;border-radius:999px;border:1px solid var(--stc-l2);color:var(--bone);font:600 12.5px/1 var(--body);letter-spacing:.005em;transition:background-color .3s,border-color .3s,color .3s}
.stc-btn:hover{border-color:rgba(236,231,223,.5)}
.stc-btn svg{width:14px;height:14px}
.stc-btn.gold{background:var(--bronze);border-color:var(--bronze);color:#17120B}
.stc-btn.gold:hover{background:var(--champ);border-color:var(--champ)}
.stc-btn[disabled]{opacity:.5;pointer-events:none}

/* suggestions + composer */
.stc-chips{flex:none;display:flex;gap:6px;overflow-x:auto;padding:10px 16px 4px 20px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 86%,transparent);mask-image:linear-gradient(90deg,#000 86%,transparent)}
.stc-chips::-webkit-scrollbar{display:none}
.stc-chips:empty{padding:0}
.stc-chip{flex:none;min-height:38px;padding:0 15px;border-radius:999px;border:1px solid var(--stc-l2);color:rgba(236,231,223,.84);font:500 13px/1 var(--body);white-space:nowrap;transition:border-color .3s,color .3s}
.stc-chip:hover{color:var(--bone);border-color:rgba(236,231,223,.5)}
.stc-chip.k{color:var(--bone);border-color:rgba(228,193,152,.6)}
.stc-form{flex:none;display:flex;gap:8px;padding:12px 14px 8px 16px}
.stc-form input{flex:1;min-width:0;height:50px;padding:0 20px;border-radius:999px;border:1px solid var(--stc-l2);background:rgba(236,231,223,.04);color:var(--bone);font:400 16px/1 var(--body);transition:border-color .3s}
.stc-form input::placeholder{color:rgba(236,231,223,.45)}
.stc-form input:focus{outline:0;border-color:rgba(236,231,223,.55)}
.stc-form button{flex:none;display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:var(--bone);color:var(--text);transition:background-color .3s}
.stc-form button:hover{background:#FFFDF9}
.stc-form button svg{width:18px;height:18px}
.stc-foot{flex:none;margin:0;padding:2px 16px calc(14px + env(safe-area-inset-bottom,0px));font-size:11px;text-align:center;color:rgba(236,231,223,.42)}

@media (max-width:640px){
  .stc{right:12px;bottom:12px}
  .stc-panel{position:fixed;inset:0;width:100%;height:100%;height:100dvh;border:0;border-radius:0;box-shadow:none}
  .stc-head{padding-top:calc(16px + env(safe-area-inset-top,0px))}
}
@media (prefers-reduced-motion:reduce){.stc-panel,.stc-row.in{transition:none;animation:none}}

/* STRUCTURE v2 — Journal graphics (v2/graphics.py, SEO item 8). HTML + CSS so they stay readable, sharp and responsive. */
.gx{--gx-acc:var(--bronze);padding:clamp(22px,2.6vw,36px);border:1px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--fg);font-family:var(--body)}
.gx-top{margin-bottom:clamp(18px,2vw,28px)}
.gx-eye{font:600 11px/1.3 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.gx-title{margin-top:8px;font:400 clamp(24px,2.1vw,32px)/1.12 var(--display);letter-spacing:-.022em}
.gx-title em{font-style:normal;color:var(--acc)}
.gx-h{font:400 clamp(19px,1.5vw,22px)/1.15 var(--display);letter-spacing:-.016em}
.gx-k{font:600 10.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.gx-s{font-size:14px;line-height:1.5;color:var(--fg2)}
/* inside an article body: undo the article's own list, paragraph and h3 styles */
.wd-gfx .gx{font-size:16px;line-height:1.5}
.wd-abody .gx p + p{margin-top:0}
.wd-abody .gx ul,.wd-abody .gx ol{margin:0}
.wd-abody .gx li{padding-left:0}
.wd-abody .gx li::before{display:none}
.wd-abody .gx .gx-h{margin:0;font:400 clamp(19px,1.5vw,22px)/1.15 var(--display);letter-spacing:-.016em}
.wd-abody .gx a{border:0}
/* heat and cold */
.gx-hc-l{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.gx-hc-c{display:grid;align-content:start;gap:10px;padding:clamp(16px,1.8vw,24px);background:var(--card)}
.gx-big{font:400 clamp(34px,3.4vw,48px)/1 var(--display);letter-spacing:-.03em;color:var(--fg)}
.gx-big small{margin-left:4px;font-size:.42em;letter-spacing:0;color:var(--fg2)}
.gx-bar{position:relative;display:block;height:4px;margin:6px 0 22px;border-radius:2px;background:var(--line)}
.gx-bar i{position:absolute;top:-2px;bottom:-2px;min-width:6px;border-radius:4px;background:#C2683F}
.gx-hc-c.cold .gx-bar i{background:#4E86A4}
.gx-bar b{position:absolute;top:10px;transform:translateX(-50%);font:500 10px/1 var(--body);color:var(--fg2);white-space:nowrap}
.gx-bar b:first-of-type{transform:none}
.gx-bar b:last-of-type{transform:translateX(-100%)}
.gx-dl{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:14px;line-height:1.4}
.gx-dl dt{font:600 10px/1.3 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--fg2)}
.gx-dl dd{margin:2px 0 0;color:var(--fg)}
.gx-foot{margin-top:clamp(16px,1.8vw,22px);font-size:13px;line-height:1.55;color:var(--fg2)}
.gx-foot b{font-weight:600;color:var(--fg)}
.gx-foot span{display:block;margin-top:8px;font:600 10.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--acc)}
/* a week */
.gx-wk-l{list-style:none;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.gx-d{display:grid;gap:8px;align-content:start;min-height:112px;padding:12px 10px;border-radius:4px;border:1px solid var(--line);font-size:13px;line-height:1.35}
.gx-d b{font:600 11px/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--fg2)}
.gx-d.s{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.gx-d.s b{color:var(--gx-acc)}
.gx-d.r{border-style:dashed;color:var(--fg2)}
.gx-key{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:16px;font-size:12.5px;color:var(--fg2)}
.gx-key span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:2px;border:1px solid var(--line);vertical-align:-1px}
.gx-key .s::before{background:var(--fg);border-color:var(--fg)}
.gx-key .r::before{border-style:dashed}
@media (max-width:620px){.gx-wk-l{grid-template-columns:1fr}.gx-d{min-height:0;grid-template-columns:52px 1fr;align-items:center}}
/* steps */
.gx-st-l{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,2vw,26px);counter-reset:none}
.gx-st-l li{position:relative;display:grid;gap:8px;align-content:start;padding-top:18px;border-top:1px solid var(--line)}
.gx-st-l li::after{content:"";position:absolute;left:0;top:-1px;width:28px;height:1px;background:var(--gx-acc)}
.gx-n{font:600 12px/1 var(--body);letter-spacing:.08em;color:var(--acc)}
@media (max-width:700px){.gx-st-l{grid-template-columns:1fr 1fr}}
@media (max-width:420px){.gx-st-l{grid-template-columns:1fr}}
/* a day: Ramadan, desk */
.gx-rd-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:4px 0 18px}
.gx-rd-bar i{display:block;height:100%}
.gx-rd-bar .night{flex:0 0 12%;background:#2B2F3A}
.gx-rd-bar .fast{flex:0 0 66%;background:var(--line)}
.gx-rd-bar .eve{flex:1;background:var(--gx-acc)}
.gx-rd-bar .desk{flex:1;background:repeating-linear-gradient(90deg,var(--line) 0 18%,var(--gx-acc) 18% 20%)}
.gx-rd-l{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.gx-rd-l li{display:grid;gap:6px;align-content:start;padding-top:12px;border-top:1px solid var(--line);font-size:13.5px;line-height:1.45;color:var(--fg2)}
.gx-rd-l b{font:400 17px/1.15 var(--display);letter-spacing:-.01em;color:var(--fg)}
@media (max-width:760px){.gx-rd-l{grid-template-columns:1fr}.gx-rd-l li{grid-template-columns:120px 1fr;padding-top:10px}}
/* plate */
.gx-pl-in{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:clamp(20px,3vw,40px);align-items:center}
.gx-plate{width:100%;height:auto}
.gx-plate .rim{fill:none;stroke:var(--line);stroke-width:2}
.gx-plate .edge{fill:none;stroke:var(--card);stroke-width:3}
.gx-plate .veg{fill:#6F8F5B}.gx-plate .pro{fill:#B0703F}.gx-plate .carb{fill:#D9C39A}
.gx-pl-l{list-style:none;display:grid;gap:14px}
.gx-pl-l li{display:grid;grid-template-columns:14px 1fr;gap:4px 12px;font-size:14px;line-height:1.45;color:var(--fg2)}
.gx-pl-l i{grid-row:span 2;width:14px;height:14px;margin-top:3px;border-radius:3px}
.gx-pl-l .veg i{background:#6F8F5B}.gx-pl-l .pro i{background:#B0703F}.gx-pl-l .carb i{background:#D9C39A}
.gx-pl-l b{font:400 17px/1.2 var(--display);color:var(--fg)}
@media (max-width:560px){.gx-pl-in{grid-template-columns:1fr}.gx-plate{max-width:200px}}
@media (max-width:520px){.gx-hc-l{grid-template-columns:1fr}}
/* the article's own list gap (.wd-abody ul) must not reach the graphics' grids */
.gx .gx-hc-l{gap:1px}.gx .gx-wk-l{gap:6px}.gx .gx-st-l{gap:clamp(14px,2vw,26px)}.gx .gx-rd-l{gap:14px}.gx .gx-pl-l{gap:14px}
.gx li.gx-hc-c,.wd-abody .gx li.gx-hc-c{padding:clamp(16px,1.8vw,24px)}.gx li.gx-d,.wd-abody .gx li.gx-d{padding:12px 10px}

/* STRUCTURE v2 — JOIN pages: membership, first visit + booking funnel, thanks, contact, FAQ (v2/p_join.py).
   Every class here is jn-* or scoped under a jn-* section, so nothing leaks into other pages. Tokens only (v2.css). */

.jn-k{font:600 11.5px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.jn-note{margin-top:26px!important;padding-left:18px;border-left:1px solid var(--acc);font-size:14.5px;color:var(--fg2)}

/* ---------------------------------------------------------------- quiet inline links (thanks lead, faq close) */
.jn-tel,.jn-mail{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
.jn-tel:hover,.jn-mail:hover{border-color:currentColor}
.v-close .jn-mail{color:var(--bone)}

/* ---------------------------------------------------------------- first visit: what to bring (four short lines, a thin rule each) */
.v-prose .jn-bring{gap:0;border-top:1px solid var(--line)}
.v-prose .jn-bring li{padding:16px 0 16px 26px;border-bottom:1px solid var(--line);font-size:clamp(17px,1.25vw,20px);line-height:1.4;color:var(--fg2)}
.v-prose .jn-bring li::before{top:calc(16px + .7em)}
.v-prose .jn-bring b{font-weight:600;color:var(--fg)}

/* ---------------------------------------------------------------- faq block (heading + link) */
.jn-faq-sec .jn-faq-h{position:sticky;top:112px;align-self:start}
.jn-faq-sec .jn-faq-h .v-sh{position:static}
.jn-faq-more{margin-top:34px}
@media (max-width:900px){.jn-faq-sec .jn-faq-h{position:static}.jn-faq-more{margin:22px 0 0}}

/* ---------------------------------------------------------------- membership: tiers */
.jn-tiers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.jn-tier{--tp:clamp(26px,2.4vw,40px);--tx:clamp(20px,2vw,34px);position:relative;display:flex;flex-direction:column;padding:var(--tp) var(--tx) clamp(28px,2.6vw,40px)}
.jn-tier + .jn-tier{border-left:1px solid var(--line)}
.jn-tier.pop{background:var(--card)}
.jn-tier.pop::before{content:"";position:absolute;z-index:2;left:0;right:0;top:-1px;height:1px;background:var(--bronze)}
.jn-tier-k{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:18px}
.jn-tier-tag{font:600 10.5px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
/* each plan opens on its own photo: the card reads at a glance, and the photo settles in on hover */
.jn-tier-ph{margin:calc(var(--tp) * -1) calc(var(--tx) * -1) clamp(22px,2vw,30px);overflow:hidden;border-radius:0}
.jn-tier-ph img{transition:transform 1.4s var(--ease)}
@media (hover:hover){.jn-tier:hover .jn-tier-ph img{transform:scale(1.045)}}
.jn-tier h3{margin-top:clamp(18px,1.8vw,30px);font:400 clamp(36px,3.1vw,54px)/1 var(--display);letter-spacing:-.034em}
.jn-tier-for{margin-top:12px;max-width:27ch;font-size:16px;line-height:1.5;color:var(--fg2)}
.jn-tier-pr{margin-top:26px;padding:20px 0 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.jn-tier-pr b{display:block;min-height:2.44em;font:400 clamp(19px,1.4vw,23px)/1.22 var(--display);letter-spacing:-.016em}
.jn-tier-pr small{display:block;margin-top:8px;font-size:13.5px;color:var(--fg2)}
.jn-tier-l{list-style:none;display:grid;gap:13px;margin:28px 0 38px;font-size:15px;line-height:1.45}
.jn-tier-l li{position:relative;padding-left:22px}
.jn-tier-l li::before{content:"";position:absolute;left:0;top:.72em;width:10px;height:1px;background:var(--acc)}
.jn-tier-l li.inh{color:var(--fg2)}
.jn-tier-a{margin-top:auto}
.jn-tier-a .v-btn{width:100%;justify-content:space-between}
/* hover: a thin bronze rule draws across the top of the tier, and its number warms */
.jn-tier::after{content:"";position:absolute;z-index:2;left:0;right:0;top:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.jn-tier .v-n{transition:color .5s var(--ease)}
@media (hover:hover){.jn-tier:hover::after{transform:scaleX(1)}.jn-tier:hover .v-n{color:var(--bronze-t)}}
@media (max-width:1100px){
  .jn-tiers{grid-template-columns:repeat(2,minmax(0,1fr))}
  .jn-tier:nth-child(3){border-left:0}
  .jn-tier:nth-child(n+3){border-top:1px solid var(--line)}
  .jn-tier.pop::before{top:0}
}
@media (max-width:640px){
  .jn-tiers{grid-template-columns:1fr;border-bottom:0}
  .jn-tier{--tx:0px;padding:30px 0 34px}
  .jn-tier + .jn-tier{border-left:0;border-top:1px solid var(--line)}
  .jn-tier.pop{margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut)}
  .jn-tier-ph{margin:0 0 24px;aspect-ratio:16/9!important}
  .jn-tier h3{margin-top:22px}
  .jn-tier-for{min-height:0}
  .jn-tier-l{margin:24px 0 30px}
  .jn-tiers + *{margin-top:0}
}

/* ---------------------------------------------------------------- membership: add-ons */
.jn-ad{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1fr);gap:clamp(40px,7vw,128px);align-items:start}
.jn-ad .jn-ad-pic{position:sticky;top:112px}
.jn-ad .v-sh{grid-template-columns:1fr;gap:22px;margin-bottom:clamp(36px,4vw,60px)}
.jn-ad-l{list-style:none;border-top:1px solid var(--line)}
.jn-ad-l li{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px 20px;align-items:baseline;padding:clamp(22px,2.2vw,32px) 0;border-bottom:1px solid var(--line)}
.jn-ad-l h3{font:400 clamp(22px,1.9vw,31px)/1.1 var(--display);letter-spacing:-.022em}
.jn-ad-l p{margin-top:9px;max-width:46ch;font-size:15px;color:var(--fg2)}
.jn-ad-t > .v-acts{margin-top:40px}
.jn-ad-l li{position:relative}
.jn-ad-l li::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.jn-ad-l h3,.jn-ad-l .v-n{transition:transform .6s var(--ease),color .5s var(--ease)}
@media (hover:hover){.jn-ad-l li:hover::after{transform:scaleX(1)}.jn-ad-l li:hover h3{transform:translateX(6px)}.jn-ad-l li:hover .v-n{color:var(--bronze)}}
@media (max-width:900px){.jn-ad{grid-template-columns:minmax(0,1fr)}.jn-ad .jn-ad-pic{position:relative;top:auto;max-height:72svh}}
@media (max-width:560px){.jn-ad-l li{grid-template-columns:36px minmax(0,1fr)}}

/* ---------------------------------------------------------------- club contacts (first visit, contact) */
.jn-cts{border-top:1px solid var(--line)}
.jn-ct{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,.86fr);gap:clamp(24px,3.6vw,72px);align-items:center;padding:clamp(28px,3vw,44px) 0;border-bottom:1px solid var(--line)}
.jn-ct-ph{display:block}
.jn-ct-ph .v-pic img{transition:transform 1.4s var(--ease)}
.jn-ct-ph:hover .v-pic img{transform:scale(1.03)}
.jn-ct-t h3{margin-top:14px;font:400 clamp(32px,3vw,52px)/1 var(--display);letter-spacing:-.032em}
.jn-ct-t address{margin-top:16px;max-width:34ch;color:var(--fg2)}
.jn-ct-t .v-tags{margin-top:18px}
.jn-ct-tel{display:grid;gap:8px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.jn-ct-tel small{font-size:13px;color:var(--fg2)}
.jn-ct-tel b{font:400 clamp(28px,2.4vw,40px)/1 var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;transition:color .35s var(--ease)}
.jn-ct-tel:hover b{color:var(--acc)}
.jn-ct-acts{list-style:none;display:grid;margin-top:10px;font-size:14.5px;font-weight:600}
.jn-ct-acts a{display:inline-flex;align-items:center;gap:12px;min-height:44px;transition:color .3s}
.jn-ct-acts a:hover{color:var(--acc)}
.jn-ct-acts svg{width:15px;height:15px;color:var(--fg2);transition:color .3s,transform .5s var(--ease)}
.jn-ct-acts a:hover svg{color:currentColor;transform:translateX(3px)}
.jn-ct-t h3 a{transition:color .4s var(--ease)}
.jn-ct-t h3 a:hover{color:var(--acc)}
@media (max-width:1100px){.jn-ct{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.jn-ct-ph{grid-row:span 2}}
@media (max-width:640px){.jn-ct{grid-template-columns:1fr;gap:22px}.jn-ct-ph{grid-row:auto}}

/* ---------------------------------------------------------------- the booking funnel (first visit, #book) */
.jn-bk-sec{--jn-err:color-mix(in srgb,var(--terra) 62%,var(--bone))}
.t-bone .jn-err,.t-paper .jn-err{--jn-err:var(--terra)}
.jn-bk-grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(40px,6.5vw,128px);align-items:start}
.jn-bk-side{position:sticky;top:112px}
.jn-bk-side .v-lead{margin-top:26px}
.jn-bk-prog{list-style:none;margin-top:clamp(36px,4vw,60px);border-top:1px solid var(--line)}
.jn-bk-prog li{border-bottom:1px solid var(--line)}
.jn-bk-prog button{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:baseline;width:100%;min-height:60px;padding:17px 0;text-align:left;opacity:.42;transition:opacity .45s var(--ease)}
.jn-bk-prog button:disabled{cursor:default}
.jn-bk-prog li.done button,.jn-bk-prog li.on button{opacity:1}
.jn-bk-prog li.done button:hover b{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
.jn-bk-prog .v-n{color:var(--fg2)}
.jn-bk-prog li.on .v-n{color:var(--acc)}
.jn-bp-t{display:flex;justify-content:space-between;align-items:baseline;gap:18px;min-width:0}
.jn-bp-t b{flex:none;font:400 19px/1.2 var(--display);letter-spacing:-.012em}
.jn-bp-t em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-size:14px;color:var(--fg2)}
.jn-bk-alt{margin-top:30px;max-width:40ch;font-size:14.5px;line-height:1.7;color:var(--fg2)}
.jn-bk-alt a,.jn-bk-alt button{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s;font-size:inherit}
.jn-bk-alt a:hover,.jn-bk-alt button:hover{border-color:currentColor}
.jn-bk-alt-m{display:none}
.jn-bk-ns{grid-column:1 / -1;font-size:16px;color:var(--fg2)}
.jn-bk-ns a{color:var(--fg);border-bottom:1px solid var(--line)}

.jn-bk{position:relative;min-width:0}
html:not(.js) .jn-bk{display:none}
.jn-bk-bar{height:1px;background:var(--line)}
.jn-bk-bar i{display:block;width:25%;height:1px;background:var(--bronze);transition:width .8s var(--ease)}
.jn-bk-count{margin:16px 0 clamp(30px,3.4vw,52px);font:600 11px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--fg2)}
.jn-bk-count b{font-weight:600;color:var(--fg)}
.jn-bk-p{min-width:0;margin:0;padding:0;border:0}
.jn-bk-p:not(.on){display:none}
.jn-bk-p.on{animation:jnIn .75s var(--ease) both}
@keyframes jnIn{from{opacity:0;transform:translate3d(0,14px,0)}}
.jn-bk-q{display:block;width:100%;padding:0;font:400 clamp(28px,2.7vw,44px)/1.06 var(--display);letter-spacing:-.028em;text-wrap:balance}
.jn-bk-q:focus{outline:0}
.jn-bk-s{margin-top:14px;max-width:52ch;color:var(--fg2)}
.jn-opts{margin-top:clamp(26px,3vw,40px)}
.jn-lbl{margin:clamp(28px,3vw,40px) 0 14px;font:600 11px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--fg2)}
.jn-lbl + .jn-opts{margin-top:0}

/* options: a real radio under a label card */
.jn-opt{position:relative;display:flex}
.jn-opt input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.jn-opt label{position:relative;flex:1;display:block;min-width:0;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;transition:border-color .35s var(--ease),background-color .35s var(--ease)}
.jn-opt label:hover{border-color:color-mix(in srgb,var(--bronze) 70%,transparent)}
.jn-opt label:hover .jn-o-r{border-color:var(--bronze)}
.jn-opt input:checked + label{border-color:var(--fg);background:color-mix(in srgb,var(--fg) 5%,transparent)}
.jn-opt input:focus-visible + label{outline:2px solid var(--bronze);outline-offset:3px}
.jn-o-r{position:absolute;right:18px;top:20px;width:18px;height:18px;border:1px solid color-mix(in srgb,var(--fg) 38%,transparent);border-radius:50%;transition:border-color .3s,background-color .3s,box-shadow .3s}
.jn-opt input:checked + label .jn-o-r{border-color:var(--fg);background:var(--fg);box-shadow:inset 0 0 0 4px var(--bg)}
.jn-o-s{display:block;color:var(--fg2);font-size:14.5px;line-height:1.5}

.jn-opts-club{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.jn-opt-club label{min-height:132px;padding:20px 48px 20px 128px}
.jn-opt-club .jn-o-ph{position:absolute;left:20px;top:20px;width:88px;pointer-events:none}
.jn-o-b small{display:block;font:600 10.5px/1.2 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.jn-o-b b{display:block;margin-top:8px;font:400 clamp(22px,1.8vw,27px)/1.05 var(--display);letter-spacing:-.022em}
.jn-o-b .jn-o-s{margin-top:8px;font-size:14px}
.jn-o-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.jn-o-tags span{padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:11.5px;font-weight:600;color:var(--fg2)}

.jn-opts-row{display:grid;gap:10px}
.jn-opt-row label{display:flex;justify-content:space-between;align-items:baseline;gap:24px;min-height:68px;padding:21px 60px 21px 24px}
.jn-opt-row b{font:400 clamp(20px,1.6vw,24px)/1.2 var(--display);letter-spacing:-.016em}
.jn-opt-row .jn-o-s{text-align:right}
.jn-opt-row .jn-o-r{top:50%;margin-top:-9px}

.jn-opts-time{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.jn-opt-time label{min-height:92px;padding:18px 20px}
.jn-opt-time b{display:block;font:400 21px/1.15 var(--display);letter-spacing:-.014em}
.jn-opt-time .jn-o-s{margin-top:6px;font-size:13.5px}
.jn-opt-time .jn-o-r{display:none}
.jn-opt-time input:checked + label{border-color:var(--fg);background:var(--fg);color:var(--bg)}
.jn-opt-time input:checked + label .jn-o-s{color:inherit;opacity:.72}

.jn-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.jn-day{display:grid;justify-items:center;align-content:center;gap:5px;min-height:88px;padding:12px 4px;border:1px solid var(--line);border-radius:var(--r);transition:border-color .3s var(--ease),background-color .3s var(--ease),color .3s var(--ease)}
.jn-day:hover{border-color:color-mix(in srgb,var(--bronze) 70%,transparent)}
.jn-day small{font:600 10.5px/1 var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--fg2)}
.jn-day b{font:400 25px/1 var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.jn-day span{font-size:12px;color:var(--fg2)}
.jn-day[aria-checked="true"]{border-color:var(--fg);background:var(--fg);color:var(--bg)}
.jn-day[aria-checked="true"] small,.jn-day[aria-checked="true"] span{color:inherit;opacity:.72}

/* details */
.jn-flds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:clamp(26px,3vw,40px)}
.jn-fld{display:grid;align-content:start;gap:10px}
.jn-fld label{font-size:13.5px;font-weight:600}
.jn-fld input{width:100%;height:58px;padding:0 18px;border:1px solid var(--line);border-radius:var(--r);background:color-mix(in srgb,var(--fg) 4%,transparent);color:var(--fg);font:400 17px/1 var(--body);transition:border-color .3s var(--ease),background-color .3s var(--ease)}
.jn-fld input:hover{border-color:color-mix(in srgb,var(--fg) 40%,transparent)}
.jn-fld input:focus{outline:0;border-color:var(--fg);background:color-mix(in srgb,var(--fg) 7%,transparent)}
.jn-fld input[aria-invalid="true"]{border-color:var(--jn-err)}
.jn-fld small{font-size:12.5px;color:var(--fg2)}
.jn-chk{position:relative;display:inline-flex;align-items:center;gap:14px;min-height:48px;margin-top:18px;font-size:15px;cursor:pointer}
.jn-chk input{position:absolute;width:1px;height:1px;opacity:0}
.jn-chk i{display:grid;place-items:center;width:22px;height:22px;border:1px solid color-mix(in srgb,var(--fg) 42%,transparent);border-radius:3px;transition:background-color .3s,border-color .3s,color .3s}
.jn-chk i svg{width:14px;height:14px;opacity:0;transition:opacity .25s}
.jn-chk input:checked + i{border-color:var(--fg);background:var(--fg);color:var(--bg)}
.jn-chk input:checked + i svg{opacity:1}
.jn-chk input:focus-visible + i{outline:2px solid var(--bronze);outline-offset:3px}
.jn-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.jn-sum{display:none;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:24px;border-top:1px solid var(--line)}
.jn-sum div{padding:14px 12px 14px 0;border-bottom:1px solid var(--line)}
.jn-sum dt{font:600 10.5px/1.2 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.jn-sum dd{margin:6px 0 0;font-weight:600}

/* the error: one calm line, drawn in, never a red box */
.jn-err{display:none;align-items:center;gap:14px;margin-top:24px;font-size:15px;color:var(--jn-err)}
.jn-err.on{display:flex;animation:jnIn .5s var(--ease) both}
.jn-err::before{content:"";flex:none;width:22px;height:1px;background:currentColor}

.jn-bk-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:clamp(30px,3.4vw,48px);padding-top:24px;border-top:1px solid var(--line)}
.jn-bk-nav > :only-child{margin-right:auto}
.jn-back{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 6px 0 0;font-size:14.5px;font-weight:600;color:var(--fg2);transition:color .3s}
.jn-back:hover{color:var(--fg)}
.jn-back svg{width:15px;height:15px;transition:transform .45s var(--ease)}
.jn-back:hover svg{transform:translateX(-3px)}
.jn-bk.busy .jn-submit{pointer-events:none;opacity:.72}
.jn-bk.busy .jn-submit i{animation:jnPulse 1s var(--ease) infinite alternate}
@keyframes jnPulse{to{transform:translateX(5px)}}

html.jn-in-book .v-xbar{transform:translateY(140%)}
@media (max-width:1360px) and (min-width:641px){.jn-opts-club{grid-template-columns:1fr}.jn-opt-club label{min-height:0}}
@media (max-width:1000px){
  .jn-bk-grid{grid-template-columns:minmax(0,1fr);gap:40px}
  .jn-bk-side{position:static}
  .jn-bk-prog{display:none}
  .jn-bk-side .jn-bk-alt{display:none}
  .jn-bk-alt-m{display:block;margin-top:0}
  .jn-sum{display:grid}
}
@media (max-width:640px){
  .jn-opts-club{grid-template-columns:1fr}
  .jn-opt-club label{min-height:0;padding:18px 44px 18px 100px}
  .jn-opt-club .jn-o-ph{left:16px;top:18px;width:68px}
  .jn-o-r{right:16px;top:18px}
  .jn-opt-row label{display:block;min-height:0;padding:18px 52px 18px 18px}
  .jn-opt-row .jn-o-s{margin-top:4px;text-align:left}
  .jn-opts-time{gap:8px}
  .jn-opt-time label{min-height:0;padding:16px 12px 16px 14px}
  .jn-opt-time b{font-size:18px}
  .jn-opt-time .jn-o-s{font-size:12.5px}
  .jn-days{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:66px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
  .jn-days::-webkit-scrollbar{display:none}
  .jn-day{scroll-snap-align:start;min-height:84px}
  .jn-flds{grid-template-columns:1fr}
  .jn-bk-nav .v-btn{padding:0 18px 0 22px}
}

/* ---------------------------------------------------------------- thanks */
.jn-ty{padding-top:clamp(132px,13vw,200px)}
.jn-ty-in{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(40px,7vw,128px);align-items:center}
.jn-ty .v-d1{max-width:9ch}
.jn-ty .v-lead{margin-top:30px}
.jn-ty .v-acts{margin-top:38px}
.jn-ticket{padding:clamp(28px,3vw,48px);border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
.jn-tk-k{display:flex;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px dashed color-mix(in srgb,var(--fg) 28%,transparent);font:600 11px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--fg2)}
.jn-tk-t{margin-top:30px;font:400 clamp(32px,2.8vw,46px)/1 var(--display);letter-spacing:-.03em}
.jn-tk-dl{margin-top:26px;border-top:1px solid var(--line)}
.jn-tk-dl div{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:16px 0;border-bottom:1px solid var(--line)}
.jn-tk-dl dt{font-size:14px;color:var(--fg2)}
.jn-tk-dl dd{margin:0;font-weight:600;text-align:right}
.jn-tk-n{margin-top:20px;font-size:13.5px;color:var(--fg2)}
.jn-ty-none .jn-ticket{display:none}
.jn-ty-none .jn-ty-in{grid-template-columns:1fr}
@media (max-width:900px){.jn-ty-in{grid-template-columns:minmax(0,1fr)}}

/* ---------------------------------------------------------------- contact: the front desk */
/* a real club photo beside three ways in: WhatsApp, email, the chat */
.jn-desk{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1fr);gap:clamp(40px,7vw,128px);align-items:center}
.jn-desk .v-sh{grid-template-columns:1fr;gap:22px;margin-bottom:clamp(32px,3.6vw,56px)}
.jn-ways{list-style:none;border-top:1px solid var(--line)}
.jn-ways li{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:8px 24px;align-items:center;padding:clamp(22px,2.2vw,30px) 0;border-bottom:1px solid var(--line)}
.jn-ways .v-n{align-self:start;padding-top:10px;transition:color .5s var(--ease)}
.jn-ways h3{font:400 clamp(24px,2vw,32px)/1.05 var(--display);letter-spacing:-.022em}
.jn-ways .jn-w-v{margin-top:8px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.jn-ways p:not(.jn-w-v){margin-top:4px;max-width:34ch;font-size:15px;color:var(--fg2)}
.jn-ways li::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
@media (hover:hover){.jn-ways li:hover .v-n{color:var(--champ)}.jn-ways li:hover::after{transform:scaleX(1)}}
@media (max-width:900px){.jn-desk{grid-template-columns:minmax(0,1fr)}.jn-desk .jn-desk-pic{max-height:62svh}}
@media (max-width:640px){.jn-ways li{grid-template-columns:36px minmax(0,1fr)}.jn-w-a{grid-column:2;margin-top:10px}}

/* ---------------------------------------------------------------- faq page */
.jn-fq-hero{padding-top:clamp(124px,13vw,188px);padding-bottom:clamp(48px,5vw,84px)}
.jn-fq-top{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:28px 64px;align-items:end}
.jn-fq-top .v-d1{font-size:clamp(46px,6vw,104px)}
.jn-fq-search{display:flex;align-items:center;gap:16px;height:72px;margin-top:clamp(44px,5.4vw,84px);border-bottom:1px solid color-mix(in srgb,var(--fg) 60%,transparent);transition:border-color .3s}
.jn-fq-search:focus-within{border-color:var(--fg)}
.jn-fq-search svg{flex:none;width:22px;height:22px;color:var(--fg2)}
.jn-fq-search input{flex:1;min-width:0;height:100%;padding:0;border:0;background:none;color:var(--fg);font:400 clamp(20px,1.7vw,28px)/1 var(--display);letter-spacing:-.014em;outline:0;-webkit-appearance:none;appearance:none}
.jn-fq-search input::placeholder{color:var(--fg2);opacity:.75}
.jn-fq-search input::-webkit-search-cancel-button{-webkit-appearance:none}
.jn-fq-search output{flex:none;font-size:13px;color:var(--fg2);font-variant-numeric:tabular-nums}
.jn-fq-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.jn-fq-chips a{display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 17px;border:1px solid var(--line);border-radius:999px;font-size:14px;font-weight:600;transition:border-color .3s var(--ease)}
.jn-fq-chips a:hover{border-color:var(--bronze)}
.jn-fq-chips a:hover sup{color:var(--acc)}
.jn-fq-chips sup{top:0;font-size:11.5px;font-weight:500;color:var(--fg2)}
.jn-fq-sec{padding-top:clamp(64px,7vw,112px)}
.jn-fq-grid{display:grid;grid-template-columns:minmax(210px,.32fr) minmax(0,1fr);gap:clamp(40px,7vw,128px);align-items:start}
.jn-fq-side{position:sticky;top:112px}
.jn-fq-side ol{list-style:none;border-top:1px solid var(--line)}
.jn-fq-side a{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:baseline;gap:6px;padding:15px 0;border-bottom:1px solid var(--line);font-size:15px;color:var(--fg2);transition:color .3s}
.jn-fq-side a:hover,.jn-fq-side a[aria-current="true"]{color:var(--fg)}
.jn-fq-side a:hover .v-n{color:var(--acc)}
.jn-fq-side a[aria-current="true"] .v-n{color:var(--acc)}
.jn-fq-side .v-n{color:var(--fg2)}
.jn-fq-side small{font-size:12px;font-variant-numeric:tabular-nums}
.jn-fg{scroll-margin-top:112px}
.jn-fg + .jn-fg{margin-top:clamp(64px,7vw,120px)}
.jn-fg-h{display:flex;align-items:baseline;gap:18px;margin-bottom:24px}
.jn-fg-h small{margin-left:auto;font-size:13px;color:var(--fg2)}
.jn-fg .v-faq-i[hidden]{display:none}
.jn-fq-empty{padding:40px 0;border-top:1px solid var(--line)}
.jn-fq-empty p{margin-bottom:24px;font:400 clamp(22px,1.8vw,28px)/1.25 var(--display);letter-spacing:-.016em}
@media (max-width:900px){.jn-fq-top{grid-template-columns:minmax(0,1fr)}.jn-fq-grid{grid-template-columns:minmax(0,1fr)}.jn-fq-side{display:none}}
@media (max-width:560px){.jn-fq-search{height:62px}.jn-fq-search output{display:none}}

/* ---------------------------------------------------------------- faq rows (in JOIN sections only): the plus warms on hover */
.jn-faq-sec .v-faq-i summary i,.jn-fq-sec .v-faq-i summary i{transition:color .4s var(--ease)}
.jn-faq-sec .v-faq-i summary span,.jn-fq-sec .v-faq-i summary span{transition:transform .6s var(--ease)}
@media (hover:hover){
  .jn-faq-sec .v-faq-i summary:hover i,.jn-fq-sec .v-faq-i summary:hover i{color:var(--bronze)}
  .jn-faq-sec .v-faq-i summary:hover span,.jn-fq-sec .v-faq-i summary:hover span{transform:translateX(4px)}
}
.jn-faq-sec .v-faq-i[open] summary i,.jn-fq-sec .v-faq-i[open] summary i{color:var(--acc)}
/* ---------------------------------------------------------------- QA pass (27 Sep): phones and short screens */
/* balanced titles */
.jn-tier h3,.jn-ad-l h3,.jn-ways h3{text-wrap:balance}
/* club choices on small phones: a smaller thumbnail gives the text a readable measure */
@media (max-width:420px){
  .jn-opt-club label{padding:16px 40px 16px 80px}
  .jn-opt-club .jn-o-ph{left:14px;top:16px;width:52px}
  .jn-opt-club .jn-o-r{right:14px;top:16px}
}
/* phones: topic chips are full tap targets */
@media (max-width:640px){.jn-fq-chips a{height:44px}}

/* Membership hero: its photo is daylight, so on a phone (where the headline lies across the people) the scrim is deeper
   than the shared one, keeping the headline at least as readable as the old still life (4.6:1 measured). Desktop is unchanged. */
@media (max-width:760px){
  .v-hero.jn-mem-hero::after{background:linear-gradient(0deg,rgba(10,10,11,.92) 0%,rgba(10,10,11,.74) 45%,rgba(10,10,11,.5) 70%,rgba(10,10,11,.12) 90%)}
}
.jn-fq-acts{margin-top:22px}

/* STRUCTURE v2 — TRAIN pages (v2/p_train.py): /training/, /programmes/, /women/, /coaches/, /coaches/<slug>/.
   Every rule is scoped to a tr- class (or to a section id only these pages use), so nothing leaks into other pages. */

.tr-prog[hidden],.tr-place[hidden],.tr-cc[hidden],.tr-fam[hidden]{display:none!important}
.tr-k{font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}

/* ---------------------------------------------------------------- coach pills (portrait + name) */
.tr-pills{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.tr-cpill{display:inline-flex;align-items:center;gap:10px;height:38px;padding:0 15px 0 4px;border:1px solid var(--line);border-radius:999px;font-size:13.5px;font-weight:500;line-height:1;color:var(--fg);white-space:nowrap;transition:border-color .35s var(--ease)}
.tr-cpill:hover{border-color:var(--bronze)}
.tr-av{flex:none;width:30px;aspect-ratio:1/1!important;border-radius:50%!important}
.tr-av img{transform:scale(2.3);transform-origin:50% 17%;filter:saturate(.8)!important}

/* ---------------------------------------------------------------- label / value rows */
.tr-dl{display:grid;gap:14px;margin-top:24px}
.tr-dl > div{display:grid;grid-template-columns:minmax(96px,124px) minmax(0,1fr);gap:18px;align-items:baseline}
.tr-dl dt{font:600 11px/1.3 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--fg2)}
.tr-dl dd{margin:0;font-size:15px;line-height:1.55;color:var(--fg)}
.tr-dl dd .tr-pills{margin-top:-4px}
.tr-dl dd > a{border-bottom:1px solid var(--line);transition:border-color .35s var(--ease)}
.tr-dl dd > a:hover{border-color:var(--bronze)}
.tr-ask{color:var(--fg2)}
@media (max-width:560px){.tr-dl > div{grid-template-columns:1fr;gap:8px}}

/* ---------------------------------------------------------------- programmes: families */
.tr-fam-in{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(40px,6vw,112px);align-items:start}
.tr-fam-in.flip{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}
.tr-fam-pic .v-pair-pics{padding-bottom:12%}.tr-fam-pic .v-pair-pics .a{width:86%}.tr-fam-pic .v-pair-pics .b{width:44%}
.tr-fam-in.flip > .tr-fam-pic{order:2}
.tr-fam-pic{position:sticky;top:112px}
.tr-progs{border-top:1px solid var(--line)}
.tr-prog{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:14px;padding:clamp(28px,2.8vw,42px) 0;border-bottom:1px solid var(--line)}
/* hover: a bronze rule draws in along the row */
.tr-prog::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease)}
.tr-prog:hover::after{transform:scaleX(1)}
.tr-prog > *{grid-column:2}
.tr-prog > .v-n{grid-column:1;grid-row:1;padding-top:.85em}
.tr-prog h3,.tr-prog-h h3{font:400 clamp(26px,2.3vw,38px)/1.08 var(--display);letter-spacing:-.025em}
.tr-prog-d{margin-top:12px;color:var(--fg2);max-width:54ch}
@media (max-width:900px){
  .tr-fam-in,.tr-fam-in.flip{grid-template-columns:minmax(0,1fr)}
  .tr-fam-in.flip > .tr-fam-pic{order:0}
  .tr-fam-pic{position:static}
  .tr-fam-pic .v-pic{aspect-ratio:1/1!important}
  .tr-prog{grid-template-columns:40px minmax(0,1fr)}
}

/* the goal filter: a quiet pill that floats over the families while you read them */
.tr-pwrap{position:relative}
/* the bar keeps its real height (so it leaves with the last family); the first visible family slides up beneath it */
.tr-fbar{position:sticky;top:16px;z-index:30;height:84px;display:flex;justify-content:center;align-items:flex-start;pointer-events:none;transition:top .6s var(--ease)}
.tr-fbar + .tr-fam,.tr-fbar + .tr-fam[hidden] + .tr-fam,.tr-fbar + .tr-fam[hidden] + .tr-fam[hidden] + .tr-fam,
.tr-fbar + .tr-fam[hidden] + .tr-fam[hidden] + .tr-fam[hidden] + .tr-fam{margin-top:-84px}
html:has(.v-hdr.solid:not(.hide)) .tr-fbar{top:96px}
.tr-fbar-in{pointer-events:auto;display:flex;align-items:center;gap:2px;max-width:calc(100vw - 2 * var(--gut));margin-top:30px;padding:5px;border-radius:999px;background:rgba(18,16,14,.88);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border:1px solid rgba(236,231,223,.12);color:var(--bone);box-shadow:0 14px 40px rgba(10,10,11,.22);overflow-x:auto;scrollbar-width:none}
.tr-fbar-in::-webkit-scrollbar{display:none}
.tr-fbar-l{flex:none;padding:0 14px 0 16px;font:600 10.5px/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.tr-fbar button{flex:none;display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 16px;border-radius:999px;font-size:13.5px;font-weight:500;color:rgba(236,231,223,.74);transition:background-color .4s var(--ease),color .4s var(--ease)}
.tr-fbar button:hover{color:var(--bone)}
.tr-fbar button[aria-pressed="true"]{background:var(--bone);color:var(--text)}
.tr-fbar sup{top:0;font:400 11px/1 var(--display);opacity:.6;font-variant-numeric:tabular-nums}
@media (max-width:760px){.tr-fbar-l{display:none}.tr-fbar-in{margin-top:22px}}
@media (max-width:560px){html:has(.v-hdr.solid:not(.hide)) .tr-fbar{top:80px}.tr-fbar button{padding:0 12px;height:36px;font-size:13px}.tr-fbar sup{display:none}}

/* two programmes that live in one place (real photos) */
.tr-places{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(40px,4vw,72px) clamp(18px,2.4vw,40px)}
.tr-place{display:grid;align-content:start;gap:28px}
.tr-place-ph .v-pic img{filter:saturate(.72) brightness(.94);transition:transform 1.4s var(--ease),filter .8s var(--ease)}
.tr-place:hover .tr-place-ph .v-pic img{filter:saturate(.85) brightness(.97)}
.tr-place:hover .tr-place-ph .v-pic img{transform:scale(1.03)}
.tr-prog-h{display:flex;align-items:baseline;gap:16px;margin-top:14px}
.tr-place .tr-prog-h h3{padding-bottom:3px;background:linear-gradient(var(--bronze),var(--bronze)) 0 100%/0 1px no-repeat;transition:background-size .7s var(--ease)}
.tr-place:hover .tr-prog-h h3{background-size:100% 1px}
.tr-where{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--acc)}
.tr-where svg{width:15px;height:15px}
.tr-place-go{margin-top:28px}
@media (max-width:900px){.tr-places{grid-template-columns:minmax(0,1fr)}}

/* timetables: one real club photo per club, each a WhatsApp link to that club's front desk */
.tr-tt-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,26px)}
.tr-tt-c{display:grid;align-content:start;gap:16px;color:var(--fg)}
.tr-tt-c .v-pic img{filter:saturate(.72) brightness(.94);transition:transform 1.4s var(--ease),filter .8s var(--ease)}
.tr-tt-c:hover .v-pic img{filter:saturate(.85) brightness(.97);transform:scale(1.03)}
.tr-tt-t{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 14px}
.tr-tt-t b{font:400 clamp(22px,1.9vw,30px)/1.1 var(--display);letter-spacing:-.02em}
.tr-tt-t > span{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--fg2);transition:color .35s var(--ease)}
.tr-tt-t svg{width:15px;height:15px}
.tr-tt-c:hover .tr-tt-t > span,.tr-tt-c:focus-visible .tr-tt-t > span{color:var(--acc)}
@media (max-width:760px){.tr-tt-g{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:78%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
  .tr-tt-g::-webkit-scrollbar{display:none}.tr-tt-c{scroll-snap-align:start}}

/* ---------------------------------------------------------------- coaches: the team */
.tr-ch{padding-top:clamp(124px,13vw,188px)}
.tr-ch-top{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:28px 64px;align-items:end}
.tr-ch .v-d1{font-size:clamp(44px,5.8vw,100px);max-width:12ch}
.tr-cfilter{display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;margin-top:clamp(56px,6.4vw,104px);padding-top:26px;border-top:1px solid var(--line)}
.tr-chips{display:flex;flex-wrap:wrap;gap:8px}
.tr-chip{display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 18px;border:1px solid var(--line);border-radius:999px;font-size:14px;font-weight:500;color:var(--fg2);transition:border-color .35s var(--ease),background-color .35s var(--ease),color .35s var(--ease)}
.tr-chip sup{top:0;font:400 11.5px/1 var(--display);opacity:.7;font-variant-numeric:tabular-nums}
.tr-chip:hover{border-color:var(--bronze);color:var(--fg)}
.tr-chip[aria-pressed="true"]{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.tr-count{margin-left:auto;font-size:14px;color:var(--fg2)}
.tr-count b{font:400 15px/1 var(--display);color:var(--fg);font-variant-numeric:tabular-nums}
.tr-cgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(44px,4.4vw,72px) clamp(14px,1.6vw,26px);margin-top:clamp(40px,4.4vw,64px)}
.tr-cnote{margin-top:clamp(48px,5vw,80px);padding-top:22px;border-top:1px solid var(--line);font-size:14px;color:var(--fg2)}
.tr-cc,.tr-wc-c{position:relative;display:grid;align-content:start;gap:18px;color:var(--fg)}
.tr-cc .v-coachpic img,.tr-wc-c .v-coachpic img{filter:saturate(.78) contrast(1.02);transition:transform 1.3s var(--ease),filter .7s var(--ease),opacity .7s var(--ease)}
.tr-cgrid .v-coachpic,.tr-wc .v-coachpic{background:var(--card)}
html.js .tr-cgrid .v-coachpic img:not(.ld),html.js .tr-wc .v-coachpic img:not(.ld){opacity:0}
.tr-cc:hover .v-coachpic img,.tr-wc-c:hover .v-coachpic img{transform:scale(1.035);filter:saturate(.95) contrast(1.02)}
.tr-cc-t{display:grid;gap:6px}
.tr-cc-t b{justify-self:start;padding-bottom:3px;font:400 clamp(20px,1.55vw,25px)/1.15 var(--display);letter-spacing:-.016em;
  background:linear-gradient(var(--bronze),var(--bronze)) 0 100%/0 1px no-repeat;transition:background-size .7s var(--ease)}
.tr-cc:hover .tr-cc-t b,.tr-wc-c:hover .tr-cc-t b,.tr-cc:focus-visible .tr-cc-t b{background-size:100% 1px}
.tr-cc-t > span{font-size:14px;line-height:1.45;color:var(--fg2)}
.tr-cc-t i{font-style:normal}
.tr-cc-go{position:absolute;top:14px;right:14px;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--bronze);color:#17120B;opacity:0;transform:translateY(6px);transition:opacity .45s var(--ease),transform .6s var(--ease)}
.tr-cc-go svg{width:14px;height:14px}
.tr-cc:hover .tr-cc-go,.tr-wc-c:hover .tr-cc-go,.tr-cc:focus-visible .tr-cc-go{opacity:1;transform:none}
@media (max-width:1100px){.tr-cgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.tr-ch-top{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .tr-cgrid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;row-gap:36px}
  .tr-cc{gap:12px}
  .tr-cc-t b{font-size:18px}
  .tr-cc-t > span{font-size:13px}
  .tr-chip{height:44px;padding:0 15px}
  .tr-count{margin-left:0}
}

/* ---------------------------------------------------------------- one coach */
.tr-cp{padding-top:clamp(112px,11vw,168px)}
.tr-cp-in{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:clamp(36px,6.5vw,120px);align-items:center}
.tr-cp-ph .v-coachpic{max-width:580px}
.tr-cp-ph .v-coachpic img{filter:saturate(.86) contrast(1.02)}
.tr-cp .v-crumbs{margin-bottom:clamp(28px,3.4vw,56px)}
.tr-cp h1{font:400 clamp(46px,5.6vw,98px)/.98 var(--display);font-stretch:97%;letter-spacing:-.036em;text-wrap:balance;max-width:11ch}
.tr-cp-bio{margin-top:clamp(26px,2.6vw,40px);font:400 clamp(21px,1.75vw,28px)/1.36 var(--display);letter-spacing:-.016em;max-width:32ch;text-wrap:pretty}
.tr-cp-bio.is-quiet{font:400 clamp(17px,1.3vw,20px)/1.6 var(--body);letter-spacing:0;color:var(--fg2);max-width:44ch}
.tr-sp{margin-top:clamp(30px,3.2vw,46px);max-width:560px}
.tr-sp ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;margin-top:14px;border-top:1px solid var(--line)}
.tr-sp li{padding:13px 0;border-bottom:1px solid var(--line);font-size:15px;font-weight:500}
.tr-cp .v-acts{margin-top:clamp(32px,3.4vw,48px)}
.tr-cp-note{margin-top:18px;font-size:13.5px;color:var(--fg2)}
@media (max-width:900px){
  .tr-cp-in{grid-template-columns:minmax(0,1fr);gap:34px}
  .tr-cp-ph .v-coachpic{max-width:520px;aspect-ratio:4/5!important;--fo:50% 30%}
}
@media (max-width:480px){.tr-sp ul{grid-template-columns:1fr}}

.tr-pn-sec{padding-block:clamp(44px,5vw,76px)}
.tr-pn{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:24px}
.tr-pn a{display:grid;gap:6px;justify-items:start}
.tr-pn small{display:inline-flex;align-items:center;gap:8px;font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.tr-pn small svg{width:13px;height:13px;transition:transform .5s var(--ease)}
.tr-pn b{padding-bottom:3px;font:400 clamp(22px,2vw,32px)/1.1 var(--display);letter-spacing:-.02em;
  background:linear-gradient(var(--bronze),var(--bronze)) 0 100%/0 1px no-repeat;transition:background-size .7s var(--ease)}
.tr-pn .nx b{background-position:100% 100%}
.tr-pn a:hover b{background-size:100% 1px}
.tr-pn a > span{font-size:14px;color:var(--fg2)}
.tr-pn .al{justify-items:center;padding:0 clamp(16px,3vw,48px);border-inline:1px solid var(--line)}
.tr-pn .nx{justify-items:end;text-align:right}
.tr-pn .pv:hover small svg{transform:translateX(-4px)}
.tr-pn .nx:hover small svg{transform:translateX(4px)}
@media (max-width:640px){.tr-pn{grid-template-columns:1fr 1fr}.tr-pn .al{display:none}.tr-pn b{font-size:19px}}

/* ---------------------------------------------------------------- women */
.tr-wc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,32px)}
.tr-wc-sp{margin-top:-4px;font-size:14px;color:var(--fg2)}
@media (max-width:760px){.tr-wc{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:74%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
  .tr-wc::-webkit-scrollbar{display:none}.tr-wc-c{scroll-snap-align:start}}
/* a member's words beside one photo */
.tr-wq-in{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:40px clamp(40px,7vw,128px);align-items:center}
.tr-wq .v-stars{margin:clamp(22px,2.4vw,34px) 0 22px}
.tr-wq .v-stars svg{width:17px;height:17px}
.tr-wq p{font:400 clamp(30px,3.6vw,58px)/1.1 var(--display);letter-spacing:-.03em;max-width:18ch;text-wrap:balance}
.tr-wq figcaption{margin-top:28px;font-size:14.5px;color:var(--fg2)}
.tr-wq-t .v-acts{margin-top:clamp(28px,3vw,44px)}
@media (max-width:900px){.tr-wq-in{grid-template-columns:minmax(0,1fr)}.tr-wq-pic{aspect-ratio:4/3!important}}
#female-floors .v-clubs{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,48px)}
@media (max-width:980px){#female-floors .v-clubs{grid-template-columns:1fr}}
/* ---------------------------------------------------------------- QA pass (27 Sep): responsive + smoothness */
/* the closing tile of the coaches grid: spans what is left of the last row (v2-train.js sets --span; 2 without JS) */
.tr-cend{grid-column:span var(--span,2);display:grid;align-content:end;gap:14px;min-height:clamp(220px,22vw,340px);padding:clamp(24px,2.6vw,40px);border:1px solid var(--line);border-radius:var(--r)}
.tr-cend-t{max-width:30ch;font:400 clamp(20px,1.6vw,26px)/1.25 var(--display);letter-spacing:-.014em}
.tr-cend .v-acts{margin-top:10px}
.tr-cend[hidden]{display:none}
@media (max-width:640px){.tr-cend{min-height:0;padding:24px 20px}.tr-cend .v-btn{width:100%;justify-content:space-between}}
/* long coach names: phones keep the button to "Book a session" rather than pushing the column wider than the screen */
@media (max-width:560px){.tr-bn{display:none}}
/* balanced headings where the shared steps/facts would leave one word on the last line */
.tr-ch ~ .v-steps-sec .v-steps h3,.tr-cc-t b,.tr-prog h3{text-wrap:balance}
/* coach profile: an odd count of specialities ends on a full-width row */
@media (min-width:481px){.tr-sp li:last-child:nth-child(odd){grid-column:1 / -1}}
/* the club's phone on a coach page is a real tap target */
.tr-dl dd > a[href^="tel:"]{display:inline-block;padding:12px 0;margin:-12px 0}
/* goal filter on small phones: all five goals fit; if they still overflow, the edge fades to show there is more */
@media (max-width:400px){.tr-fbar-in{max-width:calc(100vw - 20px);padding:4px;gap:0}.tr-fbar button{height:40px;padding:0 10px;font-size:12.5px}}
.tr-fbar-in.tr-ovf{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 34px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 34px),transparent);padding-right:26px}

/* ---------------------------------------------------------------- Round 2 (27 Sep): short & energetic */
/* a statement's second beat on its own line ("Not more effort. / A system.") */
.tr-blk{display:block}
/* women: the three-photo group stays one staggered row on phones (core's two columns would leave one photo alone) */
@media (max-width:640px){#privacy .v-grp{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}#privacy .v-grp-i:nth-child(3){margin-top:7%}}
/* training: what personal training gives you, as numbered one-liners in the display face */
.tr-ticks{list-style:none;margin-top:clamp(24px,2.6vw,36px);border-top:1px solid var(--line)}
.v-prose .tr-ticks li,.tr-ticks li{display:flex;align-items:baseline;gap:18px;padding:clamp(14px,1.4vw,20px) 0;border-bottom:1px solid var(--line);
  font:400 clamp(21px,1.85vw,30px)/1.15 var(--display);letter-spacing:-.02em;color:var(--fg)}
.v-prose .tr-ticks li::before{display:none}
.tr-ticks .v-n{flex:none;width:30px}
/* programmes: each family's title with its size as a big figure that counts up */
.tr-fam-h{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:18px clamp(24px,3vw,48px);margin-bottom:22px}
.tr-fam-h .v-d2{margin-bottom:0}
.tr-fam-n{display:grid;justify-items:end;gap:10px;padding-bottom:6px}
.tr-fam-n b{font:300 clamp(72px,7.4vw,132px)/.8 var(--display);letter-spacing:-.05em;color:var(--fg);font-variant-numeric:tabular-nums}
.tr-fam-n span{font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2);white-space:nowrap}
.tr-fam-t > .v-lead{margin-bottom:clamp(32px,3.4vw,52px)}
@media (max-width:560px){.tr-fam-n b{font-size:60px}}
/* one coach: the club's Google rating as a figure */
.v-prose .tr-rate,.tr-rate{display:flex;align-items:center;gap:18px;margin-top:22px}
.v-prose .tr-rate b{font:300 clamp(56px,5.2vw,84px)/.86 var(--display);letter-spacing:-.045em;color:var(--fg);font-variant-numeric:tabular-nums}
.tr-rate > span{display:grid;gap:8px;font-size:14px;line-height:1.3;color:var(--fg2)}
/* one coach: previous / next carry a small real portrait */
.tr-pn-av{display:block;margin-bottom:8px}
.tr-pn-av .tr-av{width:56px}
.tr-pn .nx .tr-pn-av{justify-self:end}
@media (max-width:640px){.tr-pn-av .tr-av{width:48px}}

/* STRUCTURE v2 — WELL: /longevity/ (.v-pg-lg) and /recovery/ (.v-pg-rc). Built from v2/p_well.py.
   A calm clinic: travertine reading grounds, thin rules, photography large, bronze only on small labels. */

/* ---------------------------------------------------------------- shared: notes, captions, times */
:is(.v-pg-lg,.v-pg-rc) .wl-note{max-width:72ch;margin-top:clamp(28px,3vw,40px);padding-left:22px;position:relative;font-size:14px;line-height:1.65;color:var(--fg2)}
:is(.v-pg-lg,.v-pg-rc) .wl-note::before{content:"";position:absolute;left:0;top:.8em;width:10px;height:1px;background:var(--acc)}
:is(.v-pg-lg,.v-pg-rc) .wl-note a{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
:is(.v-pg-lg,.v-pg-rc) .wl-note a:hover{border-color:currentColor}
:is(.v-pg-lg,.v-pg-rc) .wl-cap{font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
:is(.v-pg-lg,.v-pg-rc) .v-m-t small{display:block;margin-top:6px;font:500 13px/1.3 var(--body);letter-spacing:.01em;color:var(--fg2)}
:is(.v-pg-lg,.v-pg-rc) .v-m-x a{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
:is(.v-pg-lg,.v-pg-rc) .v-m-x a:hover{border-color:currentColor}

/* ---------------------------------------------------------------- menu: group labels, photos beside the list */
.wl-menu .v-menu li.wl-m-g{display:block;padding:clamp(40px,4vw,60px) 0 14px;border-bottom:1px solid var(--line)}
.wl-menu .v-menu li.wl-m-g:first-of-type{padding-top:clamp(20px,2vw,28px)}
.wl-menu .v-menu .v-m-h + li.wl-m-g{padding-top:clamp(20px,2vw,28px)}
.wl-m-g span{display:flex;align-items:center;gap:14px;font:600 11.5px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.wl-m-g span::before{content:"";width:28px;height:1px;background:currentColor;opacity:.75}
.wl-mx{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(40px,5vw,96px);align-items:start}
.wl-mx-a{position:sticky;top:112px}
@media (min-width:761px){.wl-mx .v-menu li{grid-template-columns:minmax(0,1.3fr) minmax(0,.72fr) minmax(0,.7fr);gap:22px}}
/* round 2: the session times are big figures that count up (v2.js); temperatures sit under them */
:is(.v-pg-lg,.v-pg-rc) .v-m-t b{display:block;font-weight:400}
:is(.v-pg-lg,.v-pg-rc) .v-m-t b[data-count]{font:300 clamp(26px,2.1vw,36px)/1 var(--display);letter-spacing:-.035em;white-space:nowrap}
:is(.v-pg-lg,.v-pg-rc) .v-m-t b[data-count] + small{margin-top:8px;color:var(--fg)}
/* the photo frame: one photo per group (Longevity) or per row (Recovery); it crossfades to the row you point at or read */
.wl-x{display:grid}
.wl-x-i{grid-area:1 / 1;opacity:0;visibility:hidden;transition:opacity .9s var(--ease),visibility 0s linear .9s}
.wl-x-i.on{opacity:1;visibility:visible;transition:opacity .9s var(--ease),visibility 0s}
.wl-x-i .v-pic img{transform:scale(1.06);transition:transform 2.6s var(--ease)}
.wl-x-i.on .v-pic img{transform:none}
.wl-x-cap{display:flex;align-items:center;gap:14px;margin-top:18px;font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wl-x-cap .v-n{letter-spacing:.08em}
@media (prefers-reduced-motion:reduce){.wl-x-i,.wl-x-i .v-pic img{transition:none!important;transform:none!important}}
.wl-by-g .v-menu li.wl-m-g span{transition:color .5s var(--ease)}
.wl-by-g .v-menu li.wl-m-g.wl-on span{color:var(--fg)}
/* inline photos: only where the frame is hidden (tablets and phones) */
.wl-th,.wl-g-ph{display:none}
@media (max-width:1100px){
  .wl-mx{grid-template-columns:minmax(0,1fr)}.wl-mx-a{display:none}
  .wl-g-ph{display:block;margin-bottom:18px}
  .wl-th{display:block}
  .wl-by-r .v-menu li.has-th{grid-template-columns:88px minmax(0,1.3fr) minmax(0,.72fr) minmax(0,.7fr);align-items:center}
  .wl-by-r .v-menu .v-m-h{padding-left:110px}
}
@media (min-width:761px) and (max-width:1100px){.wl-g-ph{aspect-ratio:21/9!important}}
@media (max-width:760px){
  .wl-by-r .v-menu li.has-th{grid-template-columns:76px minmax(0,1fr);column-gap:18px;align-items:start}
  .wl-by-r .v-menu li.has-th .wl-th{grid-row:1 / span 3}
  :is(.v-pg-lg,.v-pg-rc) .v-m-t b[data-count]{font-size:30px}
  /* the longevity-hero sauna still: keep her face in the phone's narrow crop */
  .v-pg-lg.v-hero--band > .v-pic{--fo-m:84% 50%}
}
/* phones: a three-photo group keeps two portraits side by side and runs the third as a wide strip */
@media (max-width:640px){
  :is(.v-pg-lg,.v-pg-rc) .v-grp[style*="--n:3"] .v-grp-i:nth-child(3){grid-column:1 / -1}
  :is(.v-pg-lg,.v-pg-rc) .v-grp[style*="--n:3"] .v-grp-i:nth-child(3) .v-pic{aspect-ratio:16/10!important}
}

/* ---------------------------------------------------------------- mosaic of the real floor */
.wl-mos{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(2,clamp(230px,20vw,380px));gap:clamp(14px,1.6vw,26px)}
.wl-tile{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:14px;min-height:0}
.wl-tile .v-pic{position:relative;height:100%;min-height:0}
.wl-tile .v-pic img{position:absolute;inset:0;transition:transform 1.6s var(--ease)}
.wl-tile:hover .v-pic img{transform:scale(1.025)}
.wl-mos .t0{grid-column:1 / 8;grid-row:1 / 3}
.wl-mos .t1{grid-column:8 / 13;grid-row:1}
.wl-mos .t2{grid-column:8 / 13;grid-row:2}
@media (max-width:900px){
  .wl-mos{grid-template-columns:1fr 1fr;grid-template-rows:none;gap:28px 12px}
  .wl-mos .t0{grid-column:1 / -1;grid-row:auto}.wl-mos .t1,.wl-mos .t2{grid-column:auto;grid-row:auto}
  .wl-tile .v-pic{height:auto;aspect-ratio:4/5}.wl-mos .t0 .v-pic{aspect-ratio:4/3}
}

/* ---------------------------------------------------------------- longevity: the plan beside one photo */
.wl-mem{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,112px);align-items:center}
.wl-plan .v-d2{margin-bottom:clamp(28px,3vw,44px)}
.wl-plan-c{padding:clamp(28px,3vw,52px);border-radius:var(--r);background:var(--card)}
.wl-price{font:400 clamp(32px,3vw,50px)/1.02 var(--display);letter-spacing:-.03em}
.wl-plan-s{margin-top:10px;font-size:14px;color:var(--fg2)}
.wl-plan ul{list-style:none;margin:26px 0 0;border-top:1px solid var(--line)}
.wl-plan li{position:relative;padding:13px 0 13px 24px;border-bottom:1px solid var(--line);font-size:15.5px}
.wl-plan li::before{content:"";position:absolute;left:0;top:1.4em;width:10px;height:1px;background:var(--acc)}
.wl-for{margin-top:22px;max-width:40ch;font-size:14.5px;color:var(--fg2)}
.wl-plan .v-acts{margin-top:30px;gap:14px 24px}
@media (max-width:900px){.wl-mem{grid-template-columns:minmax(0,1fr)}.wl-mem > .v-pic{aspect-ratio:4/3!important}}

/* ---------------------------------------------------------------- longevity: three coaches fill the row */
@media (min-width:641px){
  .v-pg-lg.v-rail-sec .v-rail-nav{display:none}
  .v-pg-lg.v-rail-sec .v-rail-track{grid-auto-columns:calc((100% - 2 * clamp(12px,1.4vw,20px)) / 3)}
}

/* ---------------------------------------------------------------- recovery: where each club offers what */
.wl-where{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(6,auto);column-gap:clamp(20px,3vw,56px)}
.wl-w-c{display:grid;grid-row:span 6;grid-template-rows:subgrid;align-content:start}
.wl-w-ph{display:block;margin-bottom:26px}
.wl-w-ph .v-pic img{transition:transform 1.4s var(--ease)}
.wl-w-c:hover .wl-w-ph .v-pic img{transform:scale(1.035)}
.wl-w-l{font:600 11px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wl-w-c h3{margin-top:12px;font:400 clamp(30px,2.7vw,44px)/1 var(--display);letter-spacing:-.03em}
.wl-w-c h3 a{transition:color .3s}
.wl-w-c h3 a:hover{color:var(--acc)}
.wl-w-s{margin-top:14px;max-width:34ch;font-size:15px;color:var(--fg2)}
.wl-w-c dl{margin:26px 0 0;border-top:1px solid var(--line)}
.wl-w-r{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:15px 0;border-bottom:1px solid var(--line);font-size:15px}
.wl-w-r dt{color:var(--fg)}
.wl-w-r dd{margin:0;text-align:right;color:var(--fg2)}
.wl-w-r:not(.on) dt{color:var(--fg2)}
.wl-y{display:inline-grid;place-items:center;color:var(--fg)}
.wl-y svg{width:16px;height:16px}
.wl-no{color:var(--fg2);opacity:.6}
.wl-w-a{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;font-size:14px;font-weight:600}
.wl-w-a a{display:inline-flex;align-items:center;gap:8px;transition:color .3s}
.wl-w-a a:hover{color:var(--acc)}
.wl-w-a svg{width:16px;height:16px}
.wl-w-a .go{margin-left:auto}
@media (max-width:900px){.wl-where{grid-template-columns:minmax(0,1fr);grid-template-rows:none;row-gap:56px}.wl-w-c{display:block;grid-row:auto}}

/* ---------------------------------------------------------------- hover moments: a thin bronze rule draws in (client, 26 Sep) */
:is(.v-pg-lg,.v-pg-rc) .v-link:hover{border-color:var(--acc)}
:is(.v-pg-lg,.v-pg-rc) .v-prose a:hover,:is(.v-pg-lg,.v-pg-rc) .wl-note a:hover,:is(.v-pg-lg,.v-pg-rc) .v-m-x a:hover{border-color:var(--acc)}
.wl-menu .v-menu li:not(.v-m-h):not(.wl-m-g),.wl-w-c,.wl-tile{position:relative}
.wl-menu .v-menu li:not(.v-m-h):not(.wl-m-g)::after,.wl-w-c dl::before{content:"";position:absolute;left:0;right:0;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease);pointer-events:none}
.wl-menu .v-menu li:not(.v-m-h):not(.wl-m-g)::after{bottom:-1px}
.wl-w-c dl{position:relative}
.wl-w-c dl::before{top:-1px}
.wl-by-r .v-menu li.wl-on::after{transform:scaleX(1)}
.wl-w-c h3 a,.wl-tile .wl-cap{transition:color .5s var(--ease)}
.wl-tile .wl-cap{display:flex;align-items:center;gap:0}
.wl-tile .wl-cap::before{content:"";width:0;height:1px;background:var(--bronze);transition:width .7s var(--ease),margin .7s var(--ease)}
@media (hover:hover){
  .wl-menu .v-menu li:not(.v-m-h):not(.wl-m-g):hover::after,.wl-w-c:hover dl::before{transform:scaleX(1)}
  .wl-tile:hover .wl-cap{color:var(--acc)}
  .wl-tile:hover .wl-cap::before{width:22px;margin-right:12px}
}

/* ---------------------------------------------------------------- phones: an even scrim on the closing photo so the title never sits on a bright patch */
@media (max-width:760px){
  :is(.v-pg-lg,.v-pg-rc).v-close::after{background:linear-gradient(180deg,rgba(10,10,11,.62) 0%,rgba(10,10,11,.42) 45%,rgba(10,10,11,.74) 100%)}
}
/* ---------------------------------------------------------------- QA pass (27 Sep) */
/* phones: the club links on /recovery/ are full 44px tap targets */
@media (pointer:coarse){.wl-w-a a{min-height:44px}}

/* ---------------------------------------------------------------- longevity: the team (lead, doctor, nutrition + floor coaches) */
.v-pg-lg .wl-team{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,1.4vw,20px)}
.v-pg-lg .wl-tm{display:flex;gap:18px;align-items:flex-start;padding:clamp(22px,2.2vw,32px);border-radius:var(--r);background:var(--card)}
.v-pg-lg .wl-tm-m{flex:none;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(217,200,174,.35);font:700 15px/1 var(--cond);letter-spacing:.06em;color:var(--accent,#d9c8ae)}
.v-pg-lg .wl-tm-r{font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg2)}
.v-pg-lg .wl-tm h3{margin:6px 0 8px;font:700 24px/1.05 var(--cond);text-transform:uppercase;letter-spacing:.02em}
.v-pg-lg .wl-tm p:last-child{font-size:14.5px;line-height:1.5;color:var(--fg2)}
.v-pg-lg .wl-tm-coaches{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,1.4vw,20px);margin-top:clamp(12px,1.4vw,20px)}
@media (max-width:900px){.v-pg-lg .wl-team{grid-template-columns:1fr}}
@media (max-width:640px){.v-pg-lg .wl-tm-coaches{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:68%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
  .v-pg-lg .wl-tm-coaches>a{scroll-snap-align:start}}

/* STRUCTURE v2 — /who-we-train/: the four-panel hero. The panel under the pointer opens; phones get a 2x2 grid. */
.wh-hero{padding-top:clamp(108px,9vw,136px);padding-bottom:clamp(48px,5vw,80px)}
.wh-head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:8px 64px;align-items:end;margin-bottom:clamp(24px,3vw,40px)}
.wh-head .v-crumbs,.wh-head .v-eye{grid-column:1 / -1}
.wh-head .v-crumbs{margin-bottom:10px}
.wh-head .v-eye{margin-bottom:6px}
.wh-head .v-d1{font-size:clamp(44px,5.2vw,92px);max-width:none}
.wh-head .v-lead{justify-self:end;max-width:30ch}
.wh-panels{display:flex;gap:clamp(8px,.9vw,14px);height:clamp(380px,calc(100svh - 330px),640px)}
.wh-p{position:relative;flex:1 1 0;min-width:0;overflow:hidden;border-radius:var(--r);isolation:isolate;transition:flex-grow .9s cubic-bezier(.2,.7,.2,1)}
.wh-p .wh-pic{position:absolute!important;inset:0;border-radius:0}
.wh-p .wh-pic img{transition:transform 1.4s var(--ease),filter .6s var(--ease);filter:saturate(.85) brightness(.82)}
.wh-p::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(0deg,rgba(10,10,11,.86) 0%,rgba(10,10,11,.2) 45%,rgba(10,10,11,.05) 70%);pointer-events:none}
.wh-t{position:absolute;left:clamp(16px,1.6vw,26px);right:clamp(16px,1.6vw,26px);bottom:clamp(18px,1.8vw,28px);z-index:2;display:grid;gap:8px;color:var(--bone)}
.wh-t b{font:400 clamp(24px,2.2vw,38px)/1.05 var(--display);letter-spacing:-.025em}
.wh-l{font:italic 400 clamp(18px,1.5vw,24px)/1.2 "Instrument Serif","Instrument Serif Fallback",Georgia,serif;color:var(--champ);max-height:0;opacity:0;overflow:hidden;transform:translateY(8px);transition:max-height .7s var(--ease),opacity .6s var(--ease),transform .7s var(--ease)}
.wh-t i{position:absolute;right:0;bottom:0;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid rgba(236,231,223,.3);transition:background-color .4s,border-color .4s,color .4s}
.wh-t i svg{width:16px;height:16px}
@media (hover:hover) and (min-width:761px){
  .wh-panels:hover .wh-p{flex-grow:.8}
  .wh-panels .wh-p:hover,.wh-panels .wh-p:focus-visible{flex-grow:2.4}
  .wh-p:hover .wh-pic img,.wh-p:focus-visible .wh-pic img{transform:scale(1.04);filter:none}
  .wh-p:hover .wh-l,.wh-p:focus-visible .wh-l{max-height:3em;opacity:1;transform:none}
  .wh-p:hover .wh-t i{background:var(--bronze);border-color:var(--bronze);color:#17120B}
}
@media (hover:none),(max-width:760px){.wh-l{max-height:3em;opacity:1;transform:none}}
@media (max-width:900px){.wh-head{grid-template-columns:1fr}.wh-head .v-lead{justify-self:start}}
@media (max-width:760px){
  .wh-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));height:auto}
  .wh-p{aspect-ratio:3/4}
  .wh-t i{display:none}
}
@media (hover:hover) and (min-width:761px){.wh-panels:hover .wh-p:not(:hover) .wh-t i{opacity:0}.wh-t i{transition:opacity .4s,background-color .4s,border-color .4s,color .4s}}

/* one coaches section with tabs */
.wh-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:-20px 0 34px}
.wh-tabs button{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 18px;border:1px solid var(--line);border-radius:999px;font-size:14px;font-weight:600;color:var(--fg2);transition:background-color .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.wh-tabs button small{font:500 12px var(--display);color:var(--fg2);opacity:.8}
.wh-tabs button:hover{border-color:var(--bronze);color:var(--fg)}
.wh-tabs button[aria-selected="true"]{background:var(--bone);border-color:var(--bone);color:#16130F}
.wh-tabs button[aria-selected="true"] small{color:#5E5A54}
.wh-rail[hidden]{display:none}
.wh-rail:not([hidden]){animation:whIn .6s var(--ease)}
@keyframes whIn{from{opacity:0;transform:translateY(10px)}}

/* STRUCTURE v2 — WORLD: the clubs (/branches/ + club pages), About, the Journal and 404. Owner: WORLD (v2/p_world.py).
   Every class here starts with wd- so nothing leaks into other pages. Tokens and idioms come from v2.css. */

/* ---------------------------------------------------------------- heroes */
/* real club photos have bright ceilings: a soft top scrim keeps the header legible (the core scrim covers left + bottom) */
.wd-hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(10,10,11,.6) 0,rgba(10,10,11,.26) 150px,rgba(10,10,11,0) 300px),
             radial-gradient(ellipse 58% 62% at 12% 74%,rgba(10,10,11,.5) 0%,rgba(10,10,11,.22) 55%,rgba(10,10,11,0) 100%)}
@media (max-width:760px){
  .wd-hero::before{background:linear-gradient(180deg,rgba(10,10,11,.6) 0,rgba(10,10,11,.3) 110px,rgba(10,10,11,.5) 30%,rgba(10,10,11,.6) 55%,rgba(10,10,11,.25) 100%)}
}
.wd-hero .v-crumbs,.wd-hero .v-eye{text-shadow:0 1px 14px rgba(10,10,11,.45)}
.wd-chero .v-d1{font-size:clamp(62px,9.4vw,176px);line-height:.92;letter-spacing:-.02em;max-width:none}
.wd-chero .v-d1 .v-em{font-size:1.06em;letter-spacing:-.018em}
/* about: the vision beats. On wide screens the photo sits in the right-hand part of the band and fades in from the
   dark, so the three big words never cover a face; phones keep the core full-bleed band. */
@media (min-width:901px){
  .wd-vis .v-beats-pic{left:34%!important;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 38%);mask-image:linear-gradient(90deg,transparent 0,#000 38%)}
  .wd-vis.has-pic::after{background:linear-gradient(90deg,rgba(10,10,11,.3),rgba(10,10,11,0) 55%,rgba(10,10,11,.2))}
  .wd-vis{padding-block:clamp(110px,12vw,190px)}
}
/* phones: the people stay in the top of a taller band and the words sit below them on a bottom-up scrim */
@media (max-width:900px){
  .wd-vis{padding-top:clamp(260px,70vw,420px);padding-bottom:clamp(44px,8vw,72px)}
  .wd-vis.has-pic::after{background:linear-gradient(0deg,rgba(10,10,11,.94) 0%,rgba(10,10,11,.72) 42%,rgba(10,10,11,.12) 72%,rgba(10,10,11,.05) 100%)}
}
.wd-404{min-height:100vh;min-height:100svh}
.wd-404 .v-d1{font-size:clamp(40px,5.2vw,90px);max-width:none}
.wd-404 .v-d1 .soft{display:block}
.wd-pg-about .v-d1{max-width:12.5ch}

/* ---------------------------------------------------------------- shared small parts */
.wd-meta{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:baseline;font:600 11.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wd-meta .v-n{letter-spacing:.08em}
.wd-fine{margin-top:clamp(24px,2.4vw,34px);font-size:14px;color:var(--fg2);max-width:72ch}
.wd-fine a,.wd-vr small a,.wd-dl dd a:not(.v-link){color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
.wd-fine a:hover,.wd-vr small a:hover,.wd-dl dd a:not(.v-link):hover{border-color:var(--bronze)}

/* hover moments: a thin bronze rule draws in along a row's own bottom line (bronze stays a hairline, never a fill of text) */
.wd-frows li,.wd-soc a,.wd-rel-l a{position:relative}
.wd-frows li::after,.wd-soc a::after,.wd-rel-l a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:0 50%;transition:transform .9s var(--ease);pointer-events:none}
.wd-frows li:hover::after,.wd-soc a:hover::after,.wd-rel-l a:hover::after{transform:scaleX(1)}
.wd-jcard:hover .v-link,.wd-pg-club ~ section .v-link:hover{border-color:var(--bronze)}

/* ---------------------------------------------------------------- /branches/: compare table */
.wd-cmp{position:relative}
.wd-cmp-t{width:100%;border-collapse:collapse;table-layout:fixed;font-size:15.5px;line-height:1.45}
.wd-cmp-t th,.wd-cmp-t td{padding:19px 28px 19px 0;text-align:left;vertical-align:top;font-weight:400;border-bottom:1px solid var(--line)}
.wd-cmp-t thead td:first-child{width:24%}
.wd-cmp-t thead th,.wd-cmp-t thead td{padding-top:0;padding-bottom:26px;vertical-align:bottom;border-bottom-color:color-mix(in srgb,var(--fg) 40%,transparent)}
.wd-cmp-t thead th a{display:block;font:400 clamp(26px,2.4vw,40px)/1 var(--display);letter-spacing:-.03em;color:var(--fg);transition:color .3s}
.wd-cmp-t thead th a:hover{color:var(--acc)}
.wd-cmp-t thead th small{display:block;margin-top:12px;font:600 11px/1.3 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--fg2)}
.wd-cmp-t tbody th{padding-top:22px;font:600 11.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wd-cmp-t td small{display:block;margin-top:2px;font-size:13.5px;color:var(--fg2)}
.wd-cmp-t .v-stars{vertical-align:-1px;margin-left:4px}
.wd-cmp-t .v-stars svg{width:13px;height:13px}
.wd-yes{display:inline-grid;place-items:center;width:26px;height:26px;border:1px solid var(--line);border-radius:50%;color:var(--acc)}
.wd-yes svg{width:13px;height:13px}
.wd-no{color:var(--fg2);opacity:.55}
.wd-cmp-t tfoot td{border-bottom:0;padding-top:28px}
.wd-cmp-t thead th{position:relative}
.wd-cmp-t thead th::after{content:"";position:absolute;left:0;right:28px;bottom:-1px;height:1px;background:var(--bronze);transform:scaleX(0);transform-origin:0 50%;transition:transform .8s var(--ease)}
.wd-cmp[data-hl="0"] thead th[data-c="0"]::after,.wd-cmp[data-hl="1"] thead th[data-c="1"]::after,.wd-cmp[data-hl="2"] thead th[data-c="2"]::after{transform:scaleX(1)}
.wd-cmp [data-c]{transition:opacity .45s var(--ease)}
.wd-cmp[data-hl="0"] [data-c]:not([data-c="0"]),.wd-cmp[data-hl="1"] [data-c]:not([data-c="1"]),.wd-cmp[data-hl="2"] [data-c]:not([data-c="2"]){opacity:.36}
@media (max-width:760px){
  .wd-cmp-t,.wd-cmp-t tbody,.wd-cmp-t tfoot{display:block}
  .wd-cmp-t thead{display:none}
  .wd-cmp-t tbody{border-top:1px solid var(--line)}
  .wd-cmp-t tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;padding:20px 0;border-bottom:1px solid var(--line)}
  .wd-cmp-t th,.wd-cmp-t td{display:block;padding:0;border:0}
  .wd-cmp-t tbody th{grid-column:1 / -1;padding:0 0 4px}
  .wd-cmp-t tbody td{font-size:14px;line-height:1.4}
  .wd-cmp-t tbody td::before{content:attr(data-club);display:block;margin-bottom:6px;font:400 15px/1.1 var(--display);letter-spacing:-.01em;color:var(--fg)}
  .wd-cmp-t tfoot tr{border-bottom:0;padding-top:24px}
  .wd-cmp-t tfoot td:first-child{display:none}
  .wd-cmp-t tfoot .v-link{font-size:14px}
  .wd-yes{width:22px;height:22px}
}

/* ---------------------------------------------------------------- club pages: the intro (one line + counting figures + the club's own photos) */
/* two photos (DHA): two wide frames side by side instead of narrow portraits */
@media (min-width:641px){
  .wd-n2 .v-grp{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
  .wd-n2 .v-grp .v-pic{aspect-ratio:4/3!important}
}
.wd-intro .v-state-lead{text-wrap:balance}
/* the facilities: short labelled rows under the photos */
.wd-frows-w{margin-top:clamp(64px,7vw,120px)}
.wd-frows-w > .v-eye{margin-bottom:20px}
.wd-frows{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(32px,5vw,96px);border-top:1px solid var(--line)}
.wd-frows li{display:grid;grid-template-columns:48px minmax(0,1fr);gap:6px 12px;align-content:start;padding:clamp(18px,1.8vw,26px) 0;border-bottom:1px solid var(--line)}
.wd-frows .v-n{padding-top:8px}
.wd-frows b{font:400 clamp(21px,1.8vw,29px)/1.12 var(--display);letter-spacing:-.022em;text-wrap:balance;transition:color .4s var(--ease)}
.wd-frows li > span:last-child{grid-column:2;font-size:15px;line-height:1.5;color:var(--fg2)}
.wd-frows li:hover b{color:var(--acc)}
@media (max-width:900px){.wd-frows{grid-template-columns:minmax(0,1fr)}.wd-frows li{grid-template-columns:40px minmax(0,1fr)}}

/* ---------------------------------------------------------------- club pages: women-only floor */
.wd-wf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,7vw,128px);align-items:center}
.wd-wf-t .v-d2{margin-bottom:24px}
.wd-wf-t .v-acts{margin-top:38px}
.wd-wf-l{list-style:none;margin-top:clamp(28px,3vw,40px);border-top:1px solid var(--line)}
.wd-wf-l li{display:flex;gap:18px;align-items:baseline;padding:clamp(14px,1.4vw,20px) 0;border-bottom:1px solid var(--line);font:400 clamp(24px,2.4vw,38px)/1.1 var(--display);letter-spacing:-.028em}
.wd-wf-l li:last-child{color:var(--fg2)}
.wd-wf-more{margin-top:28px}
.wd-wf-team{display:grid;grid-template-columns:1fr 1fr;gap:clamp(12px,1.4vw,22px)}
.wd-wf-c{display:grid;align-content:start;gap:14px}
.wd-wf-c b{font:400 20px/1.15 var(--display);letter-spacing:-.012em}
.wd-wf-c span{margin-top:-8px;font-size:13.5px;color:var(--fg2)}
.wd-wf-c:hover .v-coachpic img{transform:scale(1.04);filter:none}
.wd-wf-mark{display:grid;align-content:end;gap:22px;min-height:clamp(340px,34vw,540px);padding:clamp(28px,3.2vw,52px);background:var(--card);border-radius:var(--r)}
.wd-wf-mark .v-n{text-transform:uppercase;letter-spacing:.2em;font:600 11.5px/1 var(--body);color:var(--acc)}
.wd-wf-mark b{font:400 clamp(40px,4.6vw,76px)/.98 var(--display);letter-spacing:-.04em;max-width:9ch}
.wd-wf-mark small{padding-top:20px;border-top:1px solid var(--line);font-size:14px;color:var(--fg2)}
@media (max-width:900px){.wd-wf{grid-template-columns:minmax(0,1fr)}.wd-wf-mark{min-height:0}}

/* ---------------------------------------------------------------- club pages: visit */
.wd-visit{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,7vw,128px);align-items:start}
.wd-visit-l .v-d2{margin-bottom:26px}
.wd-visit-l .v-acts{margin-top:36px}
.wd-dl{margin:0;border-top:1px solid var(--line)}
.wd-dl > div{display:grid;grid-template-columns:minmax(110px,.32fr) minmax(0,1fr);gap:8px 28px;padding:22px 0;border-bottom:1px solid var(--line)}
.wd-dl dt{padding-top:5px;font:600 11.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wd-dl dd{margin:0;font-size:16px;color:var(--fg2)}
.wd-dl address{margin-bottom:16px;max-width:28ch;font:400 clamp(21px,1.7vw,27px)/1.28 var(--display);letter-spacing:-.016em;color:var(--fg)}
.wd-dl dd a.wd-tel{font:400 clamp(21px,1.7vw,27px)/1.28 var(--display);letter-spacing:-.01em;border:0}
.wd-rt{display:inline-flex;align-items:center;gap:8px;margin-right:4px;font-weight:600;color:var(--fg);font-variant-numeric:tabular-nums}
.wd-vr{display:flex;align-items:center;gap:clamp(16px,1.6vw,24px);margin-top:clamp(44px,4.6vw,64px);padding-top:28px;border-top:1px solid var(--line)}
.wd-vr b{font:300 clamp(64px,6.4vw,112px)/.86 var(--display);letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.wd-vr > span{display:grid;gap:10px}
.wd-vr .v-stars svg{width:15px;height:15px}
.wd-vr small{font-size:14px;color:var(--fg2)}
.wd-vq{margin-top:clamp(48px,5vw,72px);padding-top:28px;border-top:1px solid var(--line)}
.wd-vr + .wd-vq{margin-top:26px;padding-top:0;border-top:0}
.wd-vq p{font:400 clamp(20px,1.7vw,26px)/1.36 var(--display);letter-spacing:-.016em;max-width:34ch;text-wrap:pretty}
.wd-vq figcaption{margin-top:16px;font-size:14px;color:var(--fg2)}
@media (max-width:900px){.wd-visit{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.wd-dl > div{grid-template-columns:1fr;gap:10px}}

/* ---------------------------------------------------------------- club pages: the other two clubs */
.wd-other .v-clubs{grid-template-columns:repeat(2,minmax(0,1fr))}
.v-club-n{margin-top:16px;max-width:38ch;font-size:15px;line-height:1.5;color:var(--fg2)}
.v-club-t .v-club-n + .v-rate{margin-top:10px}
@media (max-width:980px){.wd-other .v-clubs{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- about: follow */
.wd-soc{list-style:none;border-top:1px solid var(--line)}
.wd-soc a{display:grid;grid-template-columns:40px minmax(120px,.3fr) minmax(0,1fr) minmax(0,.4fr) 46px;gap:16px 24px;align-items:center;padding:clamp(20px,2.1vw,32px) 0;border-bottom:1px solid var(--line);color:var(--fg)}
.wd-soc-i svg{width:20px;height:20px}
.wd-soc-p{font:600 11.5px/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--fg2)}
.wd-soc a > b{font:400 clamp(24px,2.6vw,44px)/1.05 var(--display);letter-spacing:-.032em;overflow-wrap:anywhere;transition:transform .6s var(--ease)}
.wd-soc-c{display:flex;align-items:baseline;gap:10px;min-width:0}
.wd-soc-n{font:300 clamp(34px,3.4vw,58px)/1 var(--display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;transition:color .4s var(--ease)}
.wd-soc small{font-size:14px;color:var(--fg2)}
.wd-soc-go{display:grid;place-items:center;width:46px;height:46px;border:1px solid var(--line);border-radius:50%;transition:background-color .4s var(--ease),border-color .4s var(--ease),color .4s var(--ease)}
.wd-soc-go svg{width:14px;height:14px;transform:rotate(-45deg)}
.wd-soc a:hover > b{transform:translateX(6px)}
.wd-soc a:hover .wd-soc-n{color:var(--acc)}
.wd-soc a:hover .wd-soc-go{background:var(--bronze);border-color:var(--bronze);color:#17120B}
@media (max-width:760px){
  .wd-soc a{grid-template-columns:minmax(0,1fr) 40px;gap:6px 14px}
  .wd-soc-i{display:none}
  .wd-soc-p,.wd-soc a > b,.wd-soc-c{grid-column:1}
  .wd-soc a > b{font-size:clamp(21px,6vw,26px)}
  .wd-soc-n{font-size:30px}
  .wd-soc-go{grid-column:2;grid-row:1 / 4;width:40px;height:40px}
}

/* ---------------------------------------------------------------- journal: index */
.wd-jl-sec{padding-top:clamp(132px,13vw,196px)}
.wd-jhead{max-width:980px;margin-bottom:clamp(64px,8vw,128px)}
.wd-jhead .v-d1{font-size:clamp(46px,6.4vw,112px)}
.wd-jhead .v-lead{margin-top:30px}
.wd-jlist{list-style:none;display:grid;gap:clamp(72px,9vw,150px)}
.wd-jcard{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(32px,5vw,100px);align-items:center;color:var(--fg)}
.wd-jrow.flip .wd-jcard{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr)}
.wd-jrow.flip .wd-jcard > .v-pic{order:2}
.wd-jcard .v-pic img{transition:transform 1.6s var(--ease)}
html.v2-ok .wd-jcard:hover .v-pic[data-r].in img,.wd-jcard:hover .v-pic img{transform:scale(1.03)}
.wd-jcard .v-d2{margin-top:24px;transition:color .4s var(--ease)}
.wd-jcard-s{margin-top:22px;max-width:44ch;font-size:clamp(16px,1.15vw,18px);line-height:1.6;color:var(--fg2)}
.wd-jcard .v-link{margin-top:34px}
.wd-jcard:hover .v-link svg{transform:translateX(4px)}
@media (max-width:900px){
  .wd-jcard,.wd-jrow.flip .wd-jcard{grid-template-columns:1fr}
  .wd-jrow.flip .wd-jcard > .v-pic{order:0}
}

/* ---------------------------------------------------------------- journal: article */
.wd-prog{position:fixed;left:0;right:0;top:0;z-index:70;height:2px;pointer-events:none}
.wd-prog{transition:opacity .6s var(--ease)}
.wd-prog.off{opacity:0}
.wd-prog i{display:block;height:100%;background:var(--bronze);transform:scaleX(var(--p,0));transform-origin:0 50%}
.wd-ah{padding-top:clamp(132px,13vw,196px);padding-bottom:clamp(44px,5vw,76px)}
.wd-ah .v-d1{font-size:clamp(46px,6.6vw,116px);max-width:13ch}
.wd-stand{margin-top:clamp(26px,3vw,42px);max-width:38ch;font:400 clamp(20px,1.75vw,28px)/1.42 var(--display);letter-spacing:-.012em;color:var(--fg2);text-wrap:pretty}
.wd-ah .wd-meta{margin-top:clamp(32px,3.4vw,48px);padding-top:22px;border-top:1px solid var(--line)}
@media (max-width:560px){.wd-ah .wd-meta span:nth-child(3){display:none}}
.wd-ah .wd-meta span + span::before{content:"";display:inline-block;width:3px;height:3px;margin:0 20px 0 0;border-radius:50%;background:currentColor;opacity:.55;vertical-align:.3em}
.wd-afig .v-pic{max-width:1320px;margin-inline:auto}
.wd-abody-sec{padding-top:clamp(64px,7vw,112px)}
.wd-agrid{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,auto) minmax(0,1fr);gap:clamp(32px,4vw,72px);align-items:start}
.wd-toc{position:sticky;top:112px;font-size:14px;line-height:1.4}
.wd-toc p{margin-bottom:18px;font:600 11.5px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--acc)}
.wd-toc ol{list-style:none;display:grid;border-left:1px solid var(--line)}
.wd-toc a{display:block;margin-left:-1px;padding:8px 0 8px 18px;border-left:1px solid transparent;color:var(--fg2);transition:color .3s,border-color .3s}
.wd-toc a:hover{color:var(--fg)}
.wd-toc a[aria-current]{color:var(--fg);border-left-color:var(--bronze)}
.wd-abody{max-width:65ch;font-size:clamp(17px,1.15vw,19px);line-height:1.75;color:var(--fg)}
.wd-abody p + p,.wd-abody ul + p{margin-top:1.15em}
.wd-abody h2{margin:2.3em 0 .75em;font:400 clamp(26px,2.2vw,36px)/1.14 var(--display);letter-spacing:-.024em;scroll-margin-top:112px;text-wrap:balance}
.wd-abody h2:first-child{margin-top:0}
.wd-ans{margin:0 0 2.4em;padding:clamp(24px,2.6vw,36px) 0 clamp(24px,2.6vw,36px) clamp(20px,2vw,28px);border-left:1px solid var(--bronze)}
.wd-ans .v-eye{margin-bottom:12px}
.wd-abody .wd-ans h2{margin:0 0 .55em;font-size:clamp(23px,1.8vw,29px)}
.wd-ans p:last-child{color:var(--fg)}
.wd-abody ul{list-style:none;display:grid;gap:.7em;margin:1.2em 0}
.wd-abody li{position:relative;padding-left:28px}
.wd-abody li::before{content:"";position:absolute;left:0;top:.85em;width:12px;height:1px;background:var(--acc)}
.wd-abody b{font-weight:600}
.wd-abody a{border-bottom:1px solid var(--acc);transition:color .3s}
.wd-abody a:hover{color:var(--acc)}
.wd-pq{margin:2.2em 0;padding:clamp(28px,3vw,44px) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.wd-pq p{font:400 clamp(27px,2.6vw,42px)/1.18 var(--display);letter-spacing:-.028em;text-wrap:balance}
.wd-pq p::before{content:"";display:block;width:28px;height:1px;margin-bottom:22px;background:var(--bronze)}
.wd-note{margin-top:3.2em;padding:clamp(24px,2.4vw,32px);background:var(--card);border-radius:var(--r)}
.wd-note .v-eye{margin-bottom:14px}
.wd-note p{font-size:15.5px;line-height:1.65;color:var(--fg2)}
@media (max-width:1100px){.wd-agrid{grid-template-columns:minmax(0,1fr)}.wd-toc{display:none}}

/* ---------------------------------------------------------------- journal: keep reading */
.wd-rel{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.55fr);gap:clamp(40px,6vw,120px);align-items:start}
.wd-rel .wd-jcard{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,3vw,56px)}
.wd-rel .wd-jcard .v-d2{font-size:clamp(30px,2.8vw,46px)}
.wd-rel .wd-jcard-s{font-size:15.5px}
.wd-rel-l ul{list-style:none;border-top:1px solid var(--line)}
.wd-rel-l a{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid var(--line);font:400 clamp(19px,1.5vw,23px)/1.2 var(--display);letter-spacing:-.014em;transition:color .3s}
.wd-rel-l a:hover{color:var(--acc)}
.wd-rel-l svg{flex:none;width:15px;height:15px;transition:transform .5s var(--ease)}
.wd-rel-l a:hover svg{transform:translateX(4px)}
@media (max-width:1000px){.wd-rel,.wd-rel .wd-jcard{grid-template-columns:1fr}}
/* ---------------------------------------------------------------- QA pass (27 Sep): phones */
/* compare table: the three club links become one list of full-width rows (no "Johar / Town" wrap, 48px targets) */
@media (max-width:760px){
  .wd-cmp-t tfoot tr{grid-template-columns:minmax(0,1fr);gap:0}
  .wd-cmp-t tfoot .v-link{display:flex;justify-content:space-between;align-items:center;min-height:48px;padding-bottom:0;font-size:15px}
}
/* phones: addresses' actions and the club phone are full 44px tap targets */
@media (pointer:coarse){
  .wd-dl dd a.wd-tel{display:inline-block;padding:8px 0;margin:-8px 0}
}
/* headings on club pages and About never end on a single word */
#different .v-pillar-t h3{text-wrap:balance}

/* About: Structure at a glance (the quotable entity facts) */
.wd-glance-dl{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(32px,5vw,72px);margin-top:clamp(28px,4vw,48px)}
.wd-glance-dl dd{margin:0;line-height:1.55}
.wd-glance-dl dd a{color:var(--fg);border-bottom:1px solid var(--line);transition:border-color .3s}
.wd-glance-dl dd a:hover{border-color:var(--bronze)}
@media (max-width:900px){.wd-glance-dl{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- journal: every article grid, tiles, tables (SEO item 7) */
.wd-jg-sec{padding-top:0}
.wd-jchips{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 clamp(36px,4vw,56px)}
.wd-jchips[hidden]{display:none}
.wd-jchips button{padding:10px 18px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--fg2);font:500 14px/1 var(--body);cursor:pointer;transition:color .3s,border-color .3s,background .3s}
.wd-jchips button:hover{color:var(--fg);border-color:var(--fg2)}
.wd-jchips button[aria-pressed="true"]{color:var(--bg,#F5F1EA);background:var(--fg);border-color:var(--fg)}
.wd-jgrid{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(40px,4vw,64px) clamp(24px,2.6vw,44px)}
.wd-jgrid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.wd-jgrid li[hidden]{display:none}
.wd-jtile{display:grid;gap:14px;color:var(--fg)}
.wd-jtile .v-pic{border-radius:var(--r);overflow:hidden}
.wd-jtile .v-pic img{transition:transform 1.4s var(--ease)}
.wd-jtile:hover .v-pic img{transform:scale(1.03)}
.wd-jtile .wd-meta{margin-top:6px;font-size:11px}
.wd-jtile .wd-meta span + span::before{content:"";display:inline-block;width:3px;height:3px;margin:0 14px 0 0;border-radius:50%;background:currentColor;opacity:.55;vertical-align:.3em}
.wd-jtile-h{font:400 clamp(23px,1.9vw,30px)/1.12 var(--display);letter-spacing:-.022em;text-wrap:balance;transition:color .4s var(--ease)}
.wd-jtile:hover .wd-jtile-h{color:var(--acc)}
.wd-jtile-s{font-size:15.5px;line-height:1.6;color:var(--fg2);max-width:42ch}
@media (max-width:1100px){.wd-jgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.wd-jgrid,.wd-jgrid.two{grid-template-columns:1fr}}
.wd-rel .wd-rel-a{align-self:start}
.wd-abody h3{margin:1.8em 0 .5em;font:400 clamp(21px,1.6vw,25px)/1.2 var(--display);letter-spacing:-.016em}
.wd-abody ol.wd-ol{list-style:none;counter-reset:wdol;display:grid;gap:.8em;margin:1.2em 0}
.wd-abody ol.wd-ol > li{counter-increment:wdol;padding-left:40px}
.wd-abody ol.wd-ol > li::before{content:counter(wdol,decimal-leading-zero);top:.2em;width:auto;height:auto;background:none;font:600 12px/1.6 var(--body);letter-spacing:.08em;color:var(--acc)}
.wd-abody ul + p,.wd-abody ol + p,.wd-tbl + p{margin-top:1.15em}
.wd-tbl{margin:1.6em 0;overflow-x:auto;border-top:1px solid var(--line)}
.wd-tbl table{width:100%;border-collapse:collapse;font-size:15.5px;line-height:1.5}
.wd-tbl th,.wd-tbl td{padding:14px 16px 14px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.wd-tbl thead th{font:600 11.5px/1.3 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--acc)}
.wd-tbl tbody th{font-weight:600}
.wd-tbl td{color:var(--fg2)}
.wd-afaq{margin-top:3em}
.wd-afaq .v-faq-l{margin-top:.4em}
.wd-afaq .v-faq-i summary{font-size:clamp(18px,1.3vw,21px);padding:20px 0}
.wd-afaq .v-prose{font-size:16.5px}
.wd-gfx{margin:2em 0}
.wd-gfx svg{display:block;width:100%;height:auto}
.wd-gfx figcaption{margin-top:12px;font-size:14px;line-height:1.5;color:var(--fg2)}

/* STRUCTURE v3 — energy layer (loads last). Picked from a study of six fitness templates, kept in Structure's own
   colours: condensed capital headlines (Barlow Condensed) with a serif italic accent word, grain on dark grounds,
   crossing fact tapes, sticky stacking programme cards, a numbered "what's inside" grid, a film break, black-and-white
   coaches that warm up on hover, an FAQ beside a photo, a turning "free first visit" badge and rolling button labels. */
:root{
  --cond:"Barlow Condensed","Barlow Condensed Fallback","Arial Narrow",var(--display);
  --serif:"Instrument Serif","Instrument Serif Fallback",Georgia,"Times New Roman",serif;
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .075 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* grain on the dark grounds (a still texture, painted once) */
.t-dark,.t-char{background-image:var(--grain);background-size:180px 180px}

/* ---------------------------------------------------------------- type */
.v-d1{font:700 clamp(58px,9.4vw,172px)/.84 var(--cond);letter-spacing:-.012em;text-transform:uppercase}
.v-d2{font:700 clamp(46px,5.9vw,104px)/.88 var(--cond);letter-spacing:-.006em;text-transform:uppercase;max-width:17ch}
.v-d3{font:700 clamp(28px,2.5vw,42px)/.96 var(--cond);letter-spacing:.004em;text-transform:uppercase}
.v-d1 .v-em,.v-d2 .v-em,.v-d3 .v-em,.e-fq-t .v-em,.e-film-b .v-em{font-family:var(--serif);font-style:italic;font-weight:400;text-transform:none;letter-spacing:-.018em;font-size:1.1em;line-height:.8;color:var(--acc)}
.v-hero .v-d1 .v-em,.v-close .v-d1 .v-em{color:var(--champ)}
.v-eye{font:600 13.5px/1.2 var(--cond);letter-spacing:.24em}
.v-eye::before{width:22px;height:2px}
.v-facts b{font:700 clamp(58px,6.2vw,108px)/.86 var(--cond);letter-spacing:-.01em}
.v-n{font-family:var(--cond);font-weight:600;font-size:15px}

/* statements, method rows, club names: the same condensed voice */
.v-state{font:700 clamp(36px,4.2vw,72px)/.92 var(--cond);letter-spacing:-.004em;text-transform:uppercase;max-width:22ch}
.v-statement--pics .v-state{font-size:clamp(44px,5.4vw,92px);line-height:.88;letter-spacing:-.006em;max-width:15ch}
.v-state .v-em{font-family:var(--serif);font-style:italic;font-weight:400;text-transform:none;letter-spacing:-.018em;font-size:1.1em;line-height:.8;color:var(--acc)}
.v-nl-row h3{font:700 clamp(32px,3vw,52px)/.92 var(--cond);letter-spacing:.004em;text-transform:uppercase}
.v-club-t h3{font:700 clamp(34px,3vw,50px)/.92 var(--cond);letter-spacing:.006em;text-transform:uppercase}
.v-xbar a,.v-xbar button{font-family:var(--cond);font-weight:600;letter-spacing:.12em;text-transform:uppercase;font-size:14px}

/* coach profile names: condensed capitals, the first name in the serif accent */
.tr-cp h1{font:700 clamp(56px,6.8vw,120px)/.86 var(--cond);letter-spacing:-.008em;text-transform:uppercase;max-width:10ch}
.tr-cp h1 .v-em{font-family:var(--serif);font-style:italic;font-weight:400;text-transform:none;letter-spacing:-.02em;font-size:1.08em;color:var(--acc)}

/* every other title in the condensed voice; reading text (bios, quotes, FAQ questions, addresses) stays in General Sans */
.jn-tier h3,.jn-ct-t h3,.jn-bk-q,.jn-o-b b,.jn-tk-t,.jn-ways h3,.jn-ad-l h3,.tr-prog h3,.tr-prog-h h3,.tr-tt-t b,.tr-cc-t b,.tr-pn b,.wl-w-c h3,.wh-t b,.wd-cmp-t thead th a,.wd-frows b,.wd-wf-l li,.wd-wf-mark b,.wd-soc a > b,.wd-abody h2,.v-pillar-t h3,.v-steps h3,.v-m-n h3,.v-beats-l{font-family:var(--cond);font-weight:700;text-transform:uppercase;letter-spacing:.004em;line-height:.95}
:is(.jn-tier h3,.jn-ct-t h3,.jn-bk-q,.jn-o-b b,.jn-tk-t,.jn-ways h3,.jn-ad-l h3,.tr-prog h3,.tr-prog-h h3,.tr-tt-t b,.tr-cc-t b,.tr-pn b,.wl-w-c h3,.wh-t b,.wd-cmp-t thead th a,.wd-frows b,.wd-wf-l li,.wd-wf-mark b,.wd-soc a > b,.wd-abody h2,.v-pillar-t h3,.v-steps h3,.v-m-n h3,.v-beats-l) .v-em{font-family:var(--serif);font-style:italic;font-weight:400;text-transform:none;letter-spacing:-.018em;font-size:1.08em;color:var(--acc)}
.jn-ct-tel b,.jn-day b,.tr-fam-n b,.v-prose .tr-rate b,.wl-price,.wd-vr b,.wd-soc-n,.v-score > b,:is(.v-pg-lg,.v-pg-rc) .v-m-t b[data-count]{font-family:var(--cond);font-weight:700;letter-spacing:0}
.v-mnav-l a{font-family:var(--cond);font-weight:700;text-transform:uppercase;letter-spacing:.01em;line-height:1.08}

/* ---------------------------------------------------------------- nav + buttons */
.v-nav a{font:600 14.5px/1 var(--cond);letter-spacing:.15em;text-transform:uppercase}
.v-btn{--h:54px;padding:0 22px 0 28px;font:600 15.5px/1 var(--cond);letter-spacing:.14em;text-transform:uppercase}
.v-hdr .v-btn{--h:46px;padding:0 18px 0 22px;font-size:14.5px}
.v-bt{display:block;overflow:hidden;height:1.2em;line-height:1.2em}
.v-bt > span{display:block;overflow:visible!important;transition:transform .55s var(--ease)}
.v-bt > span::after{content:attr(data-t);content:attr(data-t) / "";display:block}
.v-btn:hover .v-bt > span,.v-btn:focus-visible .v-bt > span{transform:translateY(-1.2em)}
.v-link span{font:600 14.5px/1 var(--cond);letter-spacing:.16em;text-transform:uppercase}

/* ---------------------------------------------------------------- hero */
.v-hero .v-d1{max-width:12ch;font-size:clamp(64px,10.6vw,196px)}
.v-hero--band .v-d1{font-size:clamp(54px,8vw,140px)}
.v-hero-foot{align-items:center}
.e-crew{display:inline-flex;align-items:center;gap:14px;padding:7px 18px 7px 7px;border-radius:999px;background:rgba(12,11,10,.42);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(236,231,223,.16);color:var(--bone);transition:border-color .4s}
.e-crew:hover{border-color:rgba(228,193,152,.6)}
.e-crew-f{display:flex}
.e-crew-f img{width:40px;height:40px;border-radius:50%;object-fit:cover;object-position:50% 18%;border:2px solid #100f0d;margin-left:-12px;background:#1b1916}
.e-crew-f img:first-child{margin-left:0}
.e-crew-t{display:grid;gap:4px}
.e-crew b{font:700 16.5px/1 var(--cond);letter-spacing:.07em;text-transform:uppercase}
.e-crew small{font-size:12.5px;line-height:1;color:rgba(236,231,223,.68)}

/* hero film: over the still, under the dark overlay. Its poster is the film's own first frame (a 16:9 cut for wide screens,
   a 9:16 cut for phones, each a CSS background under its own media query), so the film owns the stage from the first
   paint; reduced motion keeps the still. */
.e-film-v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 50%;opacity:0;transition:opacity 1.6s cubic-bezier(.45,0,.2,1);pointer-events:none}
.e-film-v.on{opacity:1}
.has-film .v-hs-prog{opacity:0;pointer-events:none;transition:opacity .6s}
@media (prefers-reduced-motion:no-preference){
  .e-hasfilm .e-film-v{opacity:1;transition:none;background:var(--poster) 62% 50%/cover no-repeat}
  .e-hasfilm .v-hs-i{visibility:hidden}
  .e-hasfilm .v-hs-prog{display:none}
}
@media (max-width:760px) and (prefers-reduced-motion:no-preference){
  .e-hasfilm .e-film-v{object-position:50% 50%;background:var(--poster-m) 50% 50%/cover no-repeat}
}
.e-film-t{position:absolute;right:0;top:-60px;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid rgba(236,231,223,.3);background:rgba(12,11,10,.35);color:var(--bone);transition:border-color .3s,background-color .3s}
.e-film-t:hover{border-color:var(--champ);background:rgba(12,11,10,.6)}
.e-film-t svg{width:15px;height:15px}
.e-film-t .i-play,.e-film-t.paused .i-pause{display:none}
.e-film-t.paused .i-play{display:block}

/* the hero's changing word ("Train with / intent."): its own line, every word stacked in one cell; the letters rise in
   out of a blur and leave upward. v2-zenergy.js writes the letters; without it the first word simply stays. */
.e-rot-l{display:block}
.e-rot-v{display:inline-grid}
.e-rot-w{grid-area:1/1;white-space:nowrap}
.e-rot-w:not(.on){visibility:hidden}
.e-rot-w .c{display:inline-block;transform-origin:50% 85%;will-change:transform,opacity,filter}
.e-rot-w.in .c{animation:eRotIn 1s cubic-bezier(.2,.75,.2,1) both;animation-delay:calc(var(--i) * 34ms)}
.e-rot-w.out .c{animation:eRotOut .62s cubic-bezier(.6,0,.8,.3) both;animation-delay:calc(var(--i) * 20ms)}
@keyframes eRotIn{0%{opacity:0;transform:translate3d(0,.5em,0) rotate(7deg) scale(.96);filter:blur(12px)}55%{opacity:1}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes eRotOut{0%{opacity:1;transform:none;filter:blur(0)}100%{opacity:0;transform:translate3d(0,-.36em,0) rotate(-4deg);filter:blur(10px)}}

/* ---------------------------------------------------------------- the Structure way: facts that fit, photos with labels */
.v-facts--grid li{container-type:inline-size}
.v-facts--grid li::before{content:"";display:block;width:26px;height:2px;margin-bottom:16px;background:var(--acc)}
.v-facts--grid b{font-size:min(clamp(52px,5.6vw,100px),27cqi)}
.v-statement--pics .v-grp{gap:clamp(12px,1.4vw,22px)}
.v-statement--pics .v-grp .v-pic{border-radius:18px;box-shadow:0 44px 80px -44px rgba(22,19,15,.6)}
.v-statement--pics .v-grp .v-pic::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(10,10,11,0) 52%,rgba(10,10,11,.58))}
.v-statement--pics .v-grp .v-pic img{transition:transform 1.6s var(--ease),filter .8s var(--ease);filter:saturate(.92)}
.v-statement--pics .v-grp-i:hover .v-pic img{transform:scale(1.06);filter:saturate(1.05)}
.v-grp-cap{position:absolute;left:14px;bottom:14px;z-index:5;display:inline-flex;align-items:center;gap:10px;padding:6px 15px 6px 6px;border-radius:999px;
  background:rgba(12,11,10,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(236,231,223,.2);
  color:var(--bone);font:600 13px/1 var(--cond);letter-spacing:.2em;text-transform:uppercase;transition:translate .6s var(--ease),background-color .4s var(--ease)}
.v-grp-cap i{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--bronze);color:#17120B;font-style:normal;font-size:11.5px;letter-spacing:.04em}
.v-grp-i:hover .v-grp-cap{translate:0 -4px;background:rgba(12,11,10,.62)}
@media (max-width:640px){.v-grp-cap{left:8px;bottom:8px;padding:4px 10px 4px 4px;gap:7px;font-size:11px;letter-spacing:.14em}.v-grp-cap i{width:22px;height:22px;font-size:10px}}

/* ---------------------------------------------------------------- crossing tapes */
.e-tapes{position:relative;height:clamp(150px,15vw,236px);overflow:hidden;background:var(--ink)}
.e-tape{position:absolute;left:-6%;right:-6%;top:50%;height:clamp(54px,4.8vw,76px);display:flex;align-items:center;overflow:hidden;transform:translateY(-50%) rotate(-2.6deg)}
.e-tape--a{z-index:2;background:linear-gradient(90deg,#B98C5E,#D6AE80 50%,#B98C5E);color:#16110A;box-shadow:0 22px 44px -20px rgba(0,0,0,.8)}
.e-tape--b{transform:translateY(-50%) rotate(2.2deg);background:#181512;color:rgba(236,231,223,.5);border-block:1px solid rgba(199,156,110,.3)}
.e-tape-run{display:flex;align-items:center;flex:none;white-space:nowrap;animation:eTape 46s linear infinite;animation-play-state:paused;will-change:transform}
.e-tape--b .e-tape-run{animation-direction:reverse;animation-duration:58s}
.e-tapes.run .e-tape-run{animation-play-state:running}
.e-tape-run span{padding:0 24px;font:700 clamp(22px,2.3vw,36px)/1 var(--cond);letter-spacing:.05em;text-transform:uppercase}
.e-tape-run i{flex:none;width:9px;height:9px;background:currentColor;opacity:.75;transform:rotate(45deg)}
@keyframes eTape{to{transform:translateX(-50%)}}

/* ---------------------------------------------------------------- ways to train: photo panels that open in place */
/* wide screens: six tall panels in one row, all on screen at once; the open one is wide with its words, the others keep
   a dimmed photo and their name upright. Phones: a row of full cards to swipe (see the phones block below). */
.e-ways{display:flex;gap:clamp(8px,.8vw,12px);height:clamp(540px,74vh,720px);margin-top:clamp(40px,5vw,72px)}
.e-way{position:relative;flex:1 1 0;min-width:0;border-radius:20px;overflow:hidden;isolation:isolate;background:#0e0d0b;
  transition:flex-grow .95s cubic-bezier(.7,0,.2,1),box-shadow .7s var(--ease)}
.e-way.on{flex-grow:5.2;box-shadow:0 44px 90px -44px rgba(0,0,0,.95)}
.e-way-pic{position:absolute!important;inset:0;z-index:-2;border-radius:0}
.e-way-pic img{filter:saturate(.82) brightness(.72);transform:scale(1.1);transition:filter 1s var(--ease),transform 1.8s var(--ease)}
.e-way:not(.on):hover .e-way-pic img{filter:saturate(.92) brightness(.84)}
.e-way.on .e-way-pic img{filter:none;transform:scale(1)}
.e-way::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,7,6,.62) 0%,rgba(8,7,6,0) 26%,rgba(8,7,6,0) 40%,rgba(8,7,6,.94) 100%)}
.e-way::before{content:"";position:absolute;inset:0;z-index:4;border-radius:inherit;pointer-events:none;border:1px solid rgba(236,231,223,.1);transition:border-color .7s var(--ease)}
.e-way.on::before{border-color:rgba(228,193,152,.42)}
.e-way-n{position:absolute;left:20px;top:20px;z-index:3;font:700 15px/1 var(--cond);letter-spacing:.16em;color:var(--champ)}
.e-way-h{margin:0}
.e-way-tab{position:absolute;inset:0;z-index:2;display:flex;align-items:flex-end;padding:0 0 26px 16px;border:0;background:none;color:var(--bone);cursor:pointer;text-align:left}
.e-way-tab span{writing-mode:vertical-rl;transform:rotate(180deg);font:700 clamp(28px,2.3vw,38px)/1 var(--cond);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
  transition:opacity .45s var(--ease),translate .7s var(--ease)}
.e-way.on .e-way-tab{pointer-events:none}
.e-way.on .e-way-tab span{opacity:0;translate:0 -16px}
.e-way-body{position:absolute;left:0;bottom:0;z-index:3;width:min(100%,660px);display:grid;justify-items:start;gap:14px;padding:clamp(24px,2.6vw,42px);
  opacity:0;visibility:hidden;translate:0 26px;transition:opacity .45s var(--ease),translate .7s var(--ease),visibility 0s linear .45s}
.e-way.on .e-way-body{opacity:1;visibility:visible;translate:0 0;transition:opacity .8s var(--ease) .38s,translate 1s var(--ease) .32s,visibility 0s}
.e-way-t{font:800 clamp(56px,5.6vw,104px)/.84 var(--cond);letter-spacing:-.012em;text-transform:uppercase;color:var(--bone)}
.e-way-d{max-width:42ch;color:rgba(236,231,223,.86);font-size:clamp(15px,1.1vw,17.5px);line-height:1.5}
.e-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px;list-style:none}
.e-tags li{padding:8px 13px;border:1px solid rgba(236,231,223,.26);border-radius:999px;background:rgba(12,11,10,.55);font:600 12.5px/1 var(--cond);letter-spacing:.15em;text-transform:uppercase;color:var(--bone)}
.e-way-go{display:inline-flex;align-items:center;gap:12px;height:48px;margin-top:6px;padding:0 20px 0 22px;border-radius:999px;background:var(--bronze);color:#17120B;
  font:600 14.5px/1 var(--cond);letter-spacing:.14em;text-transform:uppercase;transition:background-color .35s var(--ease)}
.e-way-go svg{width:16px;height:16px;transition:transform .5s var(--ease)}
.e-way-go:hover{background:var(--champ)}
.e-way-go:hover svg{transform:translateX(3px)}
/* the open panel's timer while the row moves on by itself */
.e-way-bar{position:absolute;left:0;right:0;bottom:0;z-index:4;height:3px;background:linear-gradient(90deg,var(--bronze),var(--champ));transform-origin:left;transform:scaleX(0);opacity:0}
.e-ways.auto .e-way.on .e-way-bar{opacity:1;animation:eWayBar var(--ways-t,6500ms) linear forwards}
@keyframes eWayBar{to{transform:scaleX(1)}}

/* ---------------------------------------------------------------- what's inside: a bento of photo cards */
/* every card carries its photo (darkened under the words); hover or focus lifts the card, brightens the photo, lights the
   rim in bronze and sends a soft sheen across. Wide cards span two columns; a card with no photo is a bronze icon tile. */
.e-inside{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(230px,20vw,300px);gap:clamp(10px,1vw,14px);margin-top:clamp(40px,5vw,72px);list-style:none}
.e-in{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:16px;padding:clamp(18px,1.6vw,26px);border-radius:18px;overflow:hidden;isolation:isolate;
  background:#14120f;border:1px solid rgba(236,231,223,.1);color:var(--bone)}
html.v2-ok .e-in[data-r],.e-in{transition:opacity 1s var(--ease) var(--d,0ms),transform 1.25s var(--ease) var(--d,0ms),translate .7s var(--ease),border-color .5s var(--ease),box-shadow .7s var(--ease)}
.e-in.wide{grid-column:span 2}
.e-in-ph{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;filter:saturate(.92) brightness(.82);scale:1.03;transition:scale 1.5s var(--ease),filter .8s var(--ease)}
.e-in::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(10,10,11,.52) 0%,rgba(10,10,11,0) 30%,rgba(10,10,11,.34) 50%,rgba(10,10,11,.9) 100%)}
.e-in::after{content:"";position:absolute;inset:-30% -70%;z-index:1;pointer-events:none;opacity:0;translate:-55% 0;
  background:linear-gradient(105deg,transparent 42%,rgba(255,240,220,.14) 50%,transparent 58%);transition:translate 1.2s var(--ease),opacity .5s var(--ease)}
.e-in:hover,.e-in:focus-within{translate:0 -6px;border-color:rgba(228,193,152,.55);box-shadow:0 36px 70px -34px rgba(0,0,0,.95),0 0 0 1px rgba(228,193,152,.16)}
.e-in:hover .e-in-ph{scale:1.09;filter:saturate(1.02) brightness(.92)}
.e-in:hover::after{translate:55% 0;opacity:1}
.e-in-n{position:relative;z-index:2;font:700 clamp(44px,3.6vw,62px)/.8 var(--cond);letter-spacing:-.01em;color:transparent;-webkit-text-stroke:1px rgba(228,193,152,.78);transition:color .5s var(--ease)}
.e-in:hover .e-in-n{color:rgba(228,193,152,.22)}
.e-in-t{position:relative;z-index:2;display:grid;gap:12px}
.e-in-t b{font:700 clamp(26px,2.1vw,36px)/.94 var(--cond);letter-spacing:.004em;text-transform:uppercase;color:var(--bone);max-width:18ch}
.e-in-t em{display:flex;align-items:center;gap:8px;padding-top:12px;border-top:1px solid rgba(236,231,223,.2);font:600 12.5px/1.2 var(--cond);font-style:normal;letter-spacing:.18em;text-transform:uppercase;color:var(--champ)}
.e-in-t em svg{width:14px;height:14px;flex:none}
.e-in.no-ph{background:radial-gradient(120% 140% at 88% 8%,rgba(199,156,110,.34),rgba(199,156,110,0) 56%),linear-gradient(135deg,#1e1a15,#100e0c);border-color:rgba(199,156,110,.32)}
.e-in-ic{position:absolute;right:clamp(18px,2.4vw,40px);top:50%;z-index:0;width:clamp(96px,9vw,150px);aspect-ratio:1;translate:0 -50%;color:rgba(228,193,152,.42);transition:color .5s var(--ease),scale .8s var(--ease)}
.e-in-ic svg{width:100%;height:100%}
.e-in.no-ph:hover .e-in-ic{color:rgba(228,193,152,.78);scale:1.06}

/* ---------------------------------------------------------------- film break */
.e-film{position:relative;isolation:isolate;display:flex;align-items:center;min-height:clamp(440px,74vh,780px);overflow:hidden;background:#0b0b0b}
.e-film-pic{position:absolute;inset:0;z-index:-2;border-radius:0}
.e-film-pic img{width:100%;height:100%;object-fit:cover;object-position:var(--fo,50% 50%);filter:sepia(.12) saturate(.92) contrast(1.05) brightness(.85)}
.e-film::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 80% 70% at 50% 55%,rgba(10,10,11,.22),rgba(10,10,11,.55))}
.e-film-in{text-align:center}
.e-film-b{font:800 clamp(78px,15.5vw,290px)/.8 var(--cond);letter-spacing:-.012em;text-transform:uppercase;color:var(--bone)}
.e-film-b .o{color:transparent;-webkit-text-stroke:clamp(1px,.12vw,2px) rgba(236,231,223,.92)}
.e-film-s{margin-top:26px;font:600 15px/1.4 var(--cond);letter-spacing:.26em;text-transform:uppercase;color:var(--champ)}

/* ---------------------------------------------------------------- coaches: in full colour, one warm grade */
/* the real portraits are shot against different walls; one gentle warm grade and a dark foot tie them together.
   Hover: the photo leans in, warms up, and a bronze rule fills along the bottom. */
.v-coach .v-coachpic,.tr-cc .v-coachpic{position:relative;border-radius:14px}
.v-coach .v-coachpic img,.tr-cc .v-coachpic img{filter:sepia(.14) saturate(.96) contrast(1.05) brightness(.97);transition:filter .7s var(--ease),transform 1.3s var(--ease),opacity .7s var(--ease)}
.v-coach:hover .v-coachpic img,.v-coach:focus-visible .v-coachpic img,.tr-cc:hover .v-coachpic img,.tr-cc:focus-visible .v-coachpic img{filter:sepia(.06) saturate(1.06) contrast(1.05) brightness(1.03);transform:scale(1.05)}
.v-coach .v-coachpic::before,.tr-cc .v-coachpic::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(10,10,11,0) 62%,rgba(10,10,11,.5));transition:opacity .6s var(--ease)}
.v-coach:hover .v-coachpic::before,.tr-cc:hover .v-coachpic::before{opacity:.6}
.v-coach .v-coachpic::after,.tr-cc .v-coachpic::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:2;height:4px;background:linear-gradient(90deg,var(--bronze),var(--champ));transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.v-coach:hover .v-coachpic::after,.tr-cc:hover .v-coachpic::after{transform:scaleX(1)}
.v-coach b{font:700 25px/1 var(--cond);letter-spacing:.02em;text-transform:uppercase;transition:color .4s var(--ease)}
.v-coach:hover b{color:var(--acc)}
.v-coach span{font:600 12.5px/1.3 var(--cond);letter-spacing:.16em;text-transform:uppercase}

/* ---------------------------------------------------------------- FAQ beside a photo */
.e-fq{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(40px,6vw,112px);align-items:start}
.e-fq-l .v-sh{margin-bottom:clamp(28px,3vw,44px)}
.e-fq-r{position:sticky;top:112px}
.e-fq-r > .v-pic{border-radius:20px;overflow:hidden}
.e-fq-card{position:absolute;left:clamp(-44px,-3vw,-16px);right:26px;bottom:26px;padding:24px 26px 26px;border-radius:16px;background:var(--ink);background-image:var(--grain);color:var(--bone);box-shadow:0 34px 70px -28px rgba(0,0,0,.7)}
.e-fq-k{font:600 13px/1 var(--cond);letter-spacing:.24em;text-transform:uppercase;color:var(--champ)}
.e-fq-t{margin:12px 0 18px;font:700 clamp(30px,2.5vw,40px)/.92 var(--cond);text-transform:uppercase}
.e-fq-t .v-em{color:var(--champ)}
.e-fq-card .v-acts{display:flex;flex-wrap:wrap;gap:10px}
.e-fq-card .v-btn{--h:48px}
.e-fq-card .v-btn.ghost{color:var(--bone)}

/* ---------------------------------------------------------------- closing call to action + turning badge */
.v-close-in{position:relative}
.e-badge{position:absolute;right:var(--gut);top:var(--sec);display:grid;place-items:center;width:clamp(116px,10vw,152px);aspect-ratio:1;color:var(--bone)}
.e-badge > svg{position:absolute;inset:0;width:100%;height:100%;animation:eSpin 24s linear infinite;animation-play-state:paused}
.run .e-badge > svg{animation-play-state:running}
.e-badge text{font:600 12px/1 var(--cond);letter-spacing:.2em;text-transform:uppercase;fill:currentColor}
.e-badge i{display:grid;place-items:center;width:46%;aspect-ratio:1;border-radius:50%;background:var(--bronze);color:#17120B;transition:transform .5s var(--ease),background-color .35s var(--ease)}
.e-badge i svg{width:40%;height:40%;transform:rotate(-45deg);transition:transform .6s var(--ease)}
.e-badge:hover i{transform:scale(1.08);background:var(--champ)}
.e-badge:hover i svg{transform:rotate(0)}
@keyframes eSpin{to{transform:rotate(360deg)}}

/* ---------------------------------------------------------------- club map (loads on request) */
.e-map{position:relative;margin-top:clamp(44px,5vw,80px);min-height:clamp(320px,34vw,480px);border-radius:20px;overflow:hidden;background:#141210;background-image:var(--grain),radial-gradient(ellipse at 70% 40%,rgba(199,156,110,.18),transparent 60%),repeating-linear-gradient(0deg,rgba(236,231,223,.05) 0 1px,transparent 1px 64px),repeating-linear-gradient(90deg,rgba(236,231,223,.05) 0 1px,transparent 1px 64px);color:var(--bone)}
.e-map-f{position:absolute;left:clamp(20px,3vw,44px);bottom:clamp(20px,3vw,44px);right:20px;display:grid;justify-items:start;gap:14px;max-width:520px}
.e-map-k{display:flex;align-items:center;gap:10px;font:700 clamp(28px,2.6vw,42px)/.95 var(--cond);text-transform:uppercase;color:var(--bone)}
.e-map-k svg{width:22px;height:22px;color:var(--bronze)}
.e-map address{color:rgba(236,231,223,.74)}
.e-map .v-btn.ghost{color:var(--bone)}
.e-map-n{font-size:12.5px;color:rgba(236,231,223,.5)}
.e-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) invert(.92) contrast(.9) brightness(.95)}
.e-map.on .e-map-f{display:none}

/* ---------------------------------------------------------------- side-by-side cards line up row by row */
/* club cards: name, tags, address, rating and the call/directions row sit on the same line across the columns,
   whatever the address length (subgrid); without subgrid, the action row still pins to the bottom */
.v-club{grid-template-rows:auto 1fr}
.v-club-t{display:flex;flex-direction:column}
.v-club-acts{margin-top:auto}
.v-club-t address + .v-rate{margin-top:10px}
@supports (grid-template-rows:subgrid){
  @media (min-width:901px){
    .v-club{grid-row:span 6;grid-template-rows:subgrid;row-gap:0}
    .v-club-t{display:contents}
    .v-club-t h3{margin-top:26px}
    .v-club-t .v-club-acts{margin-top:22px;align-self:end}
  }
}

/* programmes: the pool and Longevity Floor cards line up the same way (photo, place, name, line, coaches, link) */
@supports (grid-template-rows:subgrid){
  @media (min-width:901px){
    .tr-place{grid-row:span 6;grid-template-rows:subgrid;row-gap:0}
    .tr-place-t{display:contents}
    .tr-place-t .tr-where{margin-top:28px;align-self:start}
    .tr-place-t .tr-place-go{align-self:end}
  }
}

/* ---------------------------------------------------------------- phones and tablets */
@media (max-width:1000px){
  .e-inside{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:clamp(200px,34vw,280px)}
  .e-fq{grid-template-columns:1fr}
  .e-fq-r{position:relative;top:0;max-width:560px}
  .e-fq-card{left:16px;right:16px;bottom:16px}
}
/* ways to train on phones and tablets: a row of full cards to swipe, every card open */
@media (max-width:900px){
  .e-ways{display:grid;grid-auto-flow:column;grid-auto-columns:min(84%,440px);gap:12px;height:auto;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
    margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut);padding-bottom:4px}
  .e-ways::-webkit-scrollbar{display:none}
  .e-way{height:min(76svh,560px);min-height:460px;border-radius:18px;scroll-snap-align:start}
  .e-way-pic img,.e-way.on .e-way-pic img,.e-way:not(.on):hover .e-way-pic img{filter:none;transform:none}
  .e-way-tab{position:absolute;inset:auto;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0)}
  .e-way-body,.e-way.on .e-way-body{opacity:1;visibility:visible;translate:0 0;transition:none;padding:22px 20px 24px}
  .e-way-t{font-size:clamp(46px,12.5vw,70px)}
  .e-way::before,.e-way.on::before{border-color:rgba(236,231,223,.12)}
  .e-way-bar{display:none}
}
@media (max-width:760px){
  .v-hero .v-d1{font-size:clamp(58px,16.5vw,96px)}
  .v-d2{font-size:clamp(42px,11.6vw,64px)}
  .e-crew{padding-right:14px}
  .e-crew-f img{width:34px;height:34px}
  .e-in.wide:is(:first-child,:last-child){grid-column:span 2}
  .e-in.wide:not(:first-child,:last-child){grid-column:auto}
  .e-in{padding:16px;border-radius:16px}
  .e-in-n{font-size:38px}
  .e-in-t b{font-size:clamp(20px,5.6vw,24px)}
  .e-in-t em{font-size:11px;letter-spacing:.14em;padding-top:10px}
  .e-in-ic{width:84px;top:38%}
  .e-film{min-height:420px}
  .e-badge{position:relative;right:auto;bottom:auto;margin-top:30px;width:116px}
}
@media (prefers-reduced-motion:reduce){
  .e-tape-run,.e-badge > svg{animation:none}
  .v-bt > span{transition:none}
  .e-way,.e-way-pic img,.e-way-body,.e-way-tab span{transition:none!important}
  .e-ways.auto .e-way.on .e-way-bar{animation:none;opacity:0}
}

/* ---------------------------------------------------------------- one corner language for the photo blocks */
.v-nl-panel,.v-nl-m{border-radius:18px}
.v-club-ph .v-pic{border-radius:16px}
.v-pair-pics .v-pic{border-radius:18px}
.v-pair-pics .v-pic.b{box-shadow:0 30px 60px -30px rgba(22,19,15,.55)}

/* FAQ answers open and close smoothly where the browser can animate <details> (others simply open, as before) */
@supports (interpolate-size:allow-keywords){
  :root{interpolate-size:allow-keywords}
  .v-faq-i::details-content{block-size:0;overflow:hidden;opacity:0;transition:block-size .5s var(--ease),opacity .4s var(--ease),content-visibility .5s allow-discrete}
  .v-faq-i[open]::details-content{block-size:auto;opacity:1}
}
@media (prefers-reduced-motion:reduce){.v-faq-i::details-content{transition:none}}

/* ===== v4 heading treatment (sentence-case, non-condensed sans, weight contrast, no italic) ===== */
:root{ --cond:"General Sans","General Sans Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
.v-d1,.v-d2,.v-d3,.v-state,.v-hero .v-d1,.v-hero--band .v-d1,.e-way-t,.e-film-b,.tr-cp h1,.e-fq-t,.v-nl-row h3,.v-club-t h3{ text-transform:none; font-weight:500; letter-spacing:-.02em; }
.v-d1 .v-em,.v-d2 .v-em,.v-d3 .v-em,.v-state .v-em,.e-fq-t .v-em,.e-film-b .v-em,.tr-cp h1 .v-em,.v-hero .v-d1 .v-em,.v-close .v-d1 .v-em{ font-family:var(--display)!important; font-style:normal!important; font-weight:800!important; color:inherit!important; font-size:1em!important; line-height:inherit!important; letter-spacing:-.02em!important; }

/* ===== v4 → Montserrat (headings) ===== */
:root{ --cond:"Montserrat","Montserrat Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
.v-d1 .v-em,.v-d2 .v-em,.v-d3 .v-em,.v-state .v-em,.e-fq-t .v-em,.e-film-b .v-em,.tr-cp h1 .v-em,.v-hero .v-d1 .v-em,.v-close .v-d1 .v-em{ font-family:"Montserrat",var(--display)!important; font-weight:700!important; }
