:root{--ink:#191919;--muted:#626262;--accent:#fff;--paper:#fff;--soft:#f5f5f3;--line:#dedede;--serif:'Libre Caslon Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--gutter:clamp(24px,5.5vw,88px)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:125px}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}
body,button,a{-webkit-tap-highlight-color:transparent}
h1,h2,h3,p,figure{margin:0}
h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-.025em;line-height:1.05}
h2{font-size:clamp(42px,4.2vw,62px)}
h3{font-weight:500;line-height:1.2}
img{display:block;max-width:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
a,button{touch-action:manipulation}
button,a,summary{outline-offset:6px}
:focus-visible{outline:2px solid #666}
a:not(.button):hover{text-decoration:underline;text-underline-offset:5px}
button:hover{color:#555}
.skip-link{position:fixed;top:-100px;left:20px;padding:14px 24px;background:var(--accent);z-index:100}
.skip-link:focus{top:12px}
.overline{font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-weight:600;line-height:1.4}
.button{display:inline-flex;align-items:center;justify-content:center;padding:15px 25px;min-height:50px;font-size:13px;font-weight:600;letter-spacing:.025em;border:1px solid transparent;transition:background .2s,color .2s}
.button:hover{text-decoration:none}
.button-dark{background:var(--ink);color:white}.button-dark:hover{background:#3c3c3c}
.button-light{background:var(--accent);color:var(--ink)}.button-light:hover{background:#e7e7e7}
.compact{padding:11px 22px;min-height:44px}
.text-link{display:inline-block;font-size:14px;font-weight:500;text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;padding:9px 0}
.offer-bar{color:white;min-height:36px;padding:8px 20px;background:var(--ink);display:flex;justify-content:center;align-items:center;gap:6px;font-size:11px;letter-spacing:.02em;line-height:1.5}
.offer-bar strong{font-weight:600}.offer-bar span{margin-left:24px;text-decoration:underline;text-underline-offset:3px}
.site-header{height:108px;background:#fff;display:grid;grid-template-columns:1fr 180px 1fr;align-items:center;padding:0 40px;position:sticky;top:0;z-index:30;border-bottom:1px solid #eee}
.brand{display:flex;align-items:center;justify-content:center}.brand img{width:135px;height:auto;filter:brightness(0)}
.desktop-nav{display:flex;align-items:center;gap:27px;font-size:13px}
.desktop-nav a{white-space:nowrap}.nav-right{justify-content:flex-end}
.menu-button,.mobile-trial{display:none}#mobile-menu[hidden]{display:none}
.hero{position:relative;margin:0 16px;height:clamp(500px,42.7vw,670px);min-height:500px;color:white;overflow:hidden;background:#252525}
.hero-photo{width:100%;height:100%;object-position:50% 39%}
.hero-shade{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.77),rgba(0,0,0,.2) 67%,rgba(0,0,0,.03))}
.hero-copy{position:absolute;left:var(--gutter);bottom:48px}
.hero-copy .overline{margin-bottom:20px;color:#f2f2f2}
.hero h1{font-size:clamp(48px,4.9vw,72px);margin-bottom:20px}
.hero-copy>p:not(.overline){font-size:16px;line-height:1.6;margin-bottom:26px;color:#f6f6f6}
.hero-caption{display:flex;justify-content:space-between;padding:17px 40px;font-size:11px;color:var(--muted);border-bottom:1px solid var(--line)}
.hero-caption a{text-decoration:underline;text-underline-offset:4px}
.section-wrap{max-width:1600px;margin:auto;padding:88px var(--gutter)}
.section-intro{text-align:center;max-width:730px;margin:0 auto 43px}
.section-intro .overline{margin-bottom:17px}.section-intro h2{margin-bottom:22px}
.section-intro>p:last-child{color:var(--muted);font-size:16px}
.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}
.class-photo{display:block;position:relative;aspect-ratio:4/4.7;overflow:hidden;background:#333;color:#fff}
.class-photo img{width:100%;height:100%;transition:transform .6s}
.class-photo:after{content:'';position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.65))}
.class-photo:hover img{transform:scale(1.025)}
.class-photo span{position:absolute;bottom:22px;left:26px;right:20px;z-index:1;font:40px/1.1 var(--serif);letter-spacing:-.02em}
.class-card:nth-child(2) img{object-position:25% center}.class-card:nth-child(3) img{object-position:50% 42%}
.class-copy{padding:23px 8px 0 0}.class-copy p{font-size:14px;color:var(--muted);max-width:350px;line-height:1.75;margin-bottom:8px}
.programme{padding-top:30px}
.section-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:40px}
.section-heading .overline{margin-bottom:15px}.section-heading>p{font-size:14px;color:var(--muted);padding-bottom:4px}
.schedule{border:1px solid var(--line)}
.day-tabs{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid var(--line)}
.day-tabs button{border:0;border-right:1px solid var(--line);background:white;min-height:57px;font-size:13px;transition:background .2s}
.day-tabs button:last-child{border-right:0}.day-tabs button[aria-selected=true]{background:var(--ink);color:white}
.day-tabs button:hover{background:#ededed;color:var(--ink)}
.session-info{display:grid;grid-template-columns:1fr 1fr 1fr;gap:26px;padding:32px 38px;align-items:center}
.session-info h3{font-family:var(--serif);font-size:36px;margin-top:9px}.session-info>p{font-size:14px;color:var(--muted);max-width:300px}.session-info>a{justify-self:end}
.session-times{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;border-top:1px solid var(--line);background:var(--line)}
.session-times>span{padding:19px 30px;background:var(--soft);font-size:22px;font-weight:400;text-align:center}
.session-times small{font-size:13px;margin-left:2px}
.session-times:has(>span:nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}
.schedule-note{font-size:12px;line-height:1.8;color:var(--muted);margin-top:15px}
.schedule-note a{text-decoration:underline;text-underline-offset:3px;margin-left:5px}
.trial{background:#f1f1ef;display:grid;grid-template-columns:1fr 1fr;gap:10%;padding:66px var(--gutter);margin:0 16px}
.trial-heading .overline{margin-bottom:17px}.trial-heading h2{font-size:60px}
.trial-heading>p:not(.overline){max-width:340px;margin:20px 0 24px;color:#5a5a5a;font-size:15px}
.trial-heading .contact-note{font-size:12px!important;margin-bottom:0!important}
.contact-note a{text-decoration:underline;text-underline-offset:3px}
.trial-steps{padding:4px 0}.trial-steps>div{padding:25px 0;border-bottom:1px solid #d3d3d1}
.trial-steps>div:first-child{padding-top:0}.trial-steps>div:last-child{border-bottom:0;padding-bottom:0}
.trial-steps h3{font-size:19px;margin-bottom:12px}.trial-steps p{max-width:450px;font-size:14px;color:#5a5a5a}
.coaches{padding-top:100px;padding-bottom:100px}
.coach-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px}
.coach{display:grid;grid-template-columns:.9fr 1.1fr;gap:26px;align-items:start}
.coach>img{width:100%;aspect-ratio:4/5;height:auto}
.coach-copy{padding-top:10px}.coach-copy>.overline{font-size:10px;color:var(--muted)}
.coach h3{font-family:var(--serif);font-size:32px;margin:10px 0 18px}
.coach p:not(.overline){font-size:13px;color:var(--muted);line-height:1.8}
.coach details{margin-top:14px}.coach summary{font-size:12px;text-decoration:underline;text-underline-offset:5px;padding:8px 0;cursor:pointer;list-style:none}
.coach summary::-webkit-details-marker{display:none}.coach details[open] summary{margin-bottom:8px}
.inside{margin:0 16px;display:grid;grid-template-columns:1.3fr 1fr;gap:16px}
.inside-main>img{width:100%;height:100%;min-height:530px;object-position:45% center}
.inside-side{display:flex;flex-direction:column}
.inside-copy{padding:40px 44px 42px;background:var(--soft);flex:1}
.inside-copy .overline{margin-bottom:18px}.inside-copy h2{font-size:48px}
.inside-copy>p:last-child{font-size:14px;color:var(--muted);margin-top:20px}
.inside-side>img{width:100%;height:280px;object-position:50% 35%}
.membership{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-top:100px;padding-bottom:100px}
.membership-intro .overline{margin-bottom:20px}
.membership-intro>p:not(.overline){font-size:15px;color:var(--muted);max-width:400px;margin:24px 0 15px}
.faq details{border-bottom:1px solid var(--line);padding:0 0 21px;margin-bottom:21px}
.faq details:first-child{border-top:1px solid var(--line);padding-top:21px}
.faq summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:16px;font-weight:500;min-height:30px}
.faq summary:after{content:'+';font-size:24px;font-weight:400}.faq details[open] summary:after{content:'−'}
.faq summary::-webkit-details-marker{display:none}
.faq details>p{font-size:14px;color:var(--muted);padding:17px 25px 0 0}
.faq details>a{font-size:13px;display:inline-block;padding-top:14px;text-decoration:underline}
.visit{display:grid;grid-template-columns:1.15fr .8fr 1fr;gap:40px;padding:65px var(--gutter);background:var(--ink);color:white}
.visit .overline{color:var(--accent);margin-bottom:18px}.visit h2{font-size:48px}.visit h3{font-size:17px;margin:9px 0 16px}
.visit address{font-style:normal;font-size:14px;color:#ccc;margin-bottom:14px}
.visit-contact{padding-top:5px;display:flex;flex-direction:column;align-items:start}
.visit-contact p{font-size:14px;color:#ccc;margin-bottom:18px}
.visit-contact>a:not(.button){font-size:14px;padding:5px 0}.visit-contact .button{margin-top:20px}.visit .text-link{font-size:13px}
footer{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:28px var(--gutter);background:var(--ink);color:#bbb;border-top:1px solid #3c3c3c;font-size:11px}
footer img{width:105px;height:auto}footer p{font-family:var(--serif);font-size:23px;color:#e5e5e5}footer span{text-align:right}
@media(min-width:1600px){.hero,.trial,.inside{max-width:1568px;margin-left:auto;margin-right:auto}.hero-caption{max-width:1600px;margin:auto}}
@media(max-width:1100px){
.desktop-nav{gap:17px;font-size:12px}.site-header{padding:0 24px;grid-template-columns:1fr 150px 1fr}
.coach-grid{gap:30px}.coach{grid-template-columns:1fr;gap:16px}.coach>img{aspect-ratio:1/1;object-position:50% 30%}
.coach-copy{max-width:430px}.coach h3{font-size:34px}.coach p:not(.overline){font-size:14px}
.session-info{grid-template-columns:1fr 1fr}.session-info>a{grid-column:1/-1;justify-self:start}
.visit{gap:28px;grid-template-columns:1fr 1fr}.visit>div:first-child{grid-column:1/-1}
.inside-copy{padding:30px}.inside-copy h2{font-size:41px}}
@media(max-width:800px){
html{scroll-padding-top:100px}.site-header{height:88px;grid-template-columns:1fr 130px 1fr;padding:0 22px}
.desktop-nav{display:none}.brand{grid-column:2;grid-row:1}.brand img{width:112px}
.menu-button{display:block;grid-column:1;grid-row:1;justify-self:start;border:0;background:none;padding:12px 0;font-size:13px;min-height:44px;min-width:44px;text-align:left}
.mobile-trial{display:inline-flex;grid-column:3;grid-row:1;justify-self:end;font-size:12px;padding:9px 17px}
#mobile-menu{display:flex;position:absolute;top:88px;left:0;right:0;flex-direction:column;background:#fff;padding:18px 24px 24px;border-bottom:1px solid var(--line);box-shadow:0 15px 20px #0000000a}
#mobile-menu a{padding:13px 0;border-bottom:1px solid #eee;font-size:16px}
.hero{height:570px;margin:0 10px}.hero-copy{left:28px;bottom:36px}.hero h1{font-size:56px}
.hero-photo{object-position:58% center}.hero-caption{padding:17px 24px}.hero-caption>a{display:none}
.class-grid{gap:16px}.class-photo{aspect-ratio:3/4}.class-photo span{font-size:30px;left:16px;bottom:18px}
.class-copy p{font-size:13px}.class-copy .text-link{font-size:12px}.day-tabs button span{display:none}
.trial{gap:50px;padding:50px 30px;margin:0 10px}.trial-heading h2{font-size:48px}
.inside{margin:0 10px;grid-template-columns:1fr 1fr;gap:10px}.inside-copy{padding:25px}.inside-copy h2{font-size:37px}
.inside-main>img{min-height:480px}.inside-side>img{height:230px}.membership{gap:50px}
.section-heading{align-items:start;flex-direction:column;gap:20px}.section-wrap{padding-top:65px;padding-bottom:65px}
.programme{padding-top:0}.section-heading>p br{display:none}.section-heading>p{max-width:400px}}
@media(max-width:580px){
.offer-bar{font-size:10px;padding:9px 10px;gap:4px}.offer-bar span{display:none}
.site-header{height:82px;padding:0 18px;grid-template-columns:1fr 115px 1fr}.brand img{width:106px}#mobile-menu{top:82px}
.hero{min-height:0;height:560px}.hero-copy{left:23px;right:20px;bottom:30px}
.hero h1{font-size:43px;line-height:1.05;letter-spacing:-.035em;margin-bottom:18px}
.hero-copy .overline{font-size:9px;margin-bottom:16px}
.hero-copy>p:not(.overline){font-size:14px;line-height:1.65;margin-bottom:22px}
.hero-photo{object-position:57% center}.hero-shade{background:linear-gradient(0deg,rgba(0,0,0,.8),rgba(0,0,0,.12) 77%)}
.hero .button{padding:13px 21px;font-size:12px}.hero-caption{font-size:10px;justify-content:center;padding:15px 18px}
.section-intro{margin-bottom:30px}.section-intro h2{font-size:42px}.section-intro>p:last-child{font-size:14px}
.desktop-break{display:none}.class-grid{grid-template-columns:1fr;gap:33px}.class-photo{aspect-ratio:5/4}
.class-photo span{font-size:38px;left:23px;bottom:22px}
.class-card:nth-child(1) img{object-position:50% 43%}.class-card:nth-child(2) img{object-position:50% 34%}.class-card:nth-child(3) img{object-position:50% 35%}
.class-copy{padding-top:16px}.class-copy p{font-size:14px;max-width:none}.class-copy .text-link{font-size:13px}
.section-heading{margin-bottom:28px;gap:17px}.section-heading h2{font-size:43px}.section-heading .overline{margin-bottom:13px}
.day-tabs button{font-size:12px;min-height:51px}.session-info{grid-template-columns:1fr;padding:24px;gap:16px}
.session-info h3{font-size:34px;margin-top:8px}.session-info>a{font-size:13px}
.session-times{grid-template-columns:repeat(2,1fr)}.session-times>span{padding:14px;font-size:21px}
.schedule-note{font-size:11px}.schedule-note a{display:inline-block;margin-left:0}
.trial{grid-template-columns:1fr;gap:36px;padding:42px 24px}.trial-heading h2{font-size:51px}
.trial-heading>p:not(.overline){font-size:14px}.trial-steps h3{font-size:18px}.trial-steps p{font-size:13px}.trial-steps>div{padding:22px 0}
.coach-grid{grid-template-columns:1fr;gap:43px}.coach{gap:18px}.coach>img{aspect-ratio:5/4;object-position:50% 30%}
.coach-copy{padding-top:0}.coach h3{margin:9px 0 13px}.coach summary{font-size:13px;min-height:44px}
.inside{grid-template-columns:1fr;gap:0}.inside-main>img{min-height:0;height:310px}
.inside-side{display:grid;grid-template-columns:1fr}.inside-copy{padding:36px 25px}.inside-copy h2{font-size:43px}
.inside-side>img{height:270px;object-position:50% 30%}.membership{grid-template-columns:1fr;gap:35px}.membership h2{font-size:49px}
.membership-intro>p:not(.overline){font-size:14px}.faq summary{font-size:15px;min-height:40px}
.faq details{padding-bottom:16px;margin-bottom:16px}.visit{grid-template-columns:1fr;padding:48px 26px;gap:35px}
.visit h2{font-size:46px}.visit-contact{padding-top:0}.visit-contact>a:not(.button){overflow-wrap:anywhere}
.visit>div:first-child{grid-column:auto}.visit h3{margin-top:0}
footer{flex-wrap:wrap;padding:26px;gap:25px}footer img{width:90px}footer p{font-size:21px;max-width:155px}
footer span{flex-basis:100%;text-align:left;font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.class-photo:hover img{transform:none}}
