/* KASH — typography, field markings, scorecard numerals, restrained motion. */
:root {
  --green:#173f35; --green-dark:#102f27; --green-soft:#eaf0e8;
  --paper:#faf9f5; --white:#fff; --ink:#202e29; --muted:#526059;
  --gold:#b89551; --line:#d6ddd3; --font:'Manrope',Arial,sans-serif;
  --score:'Barlow Condensed','Arial Narrow',sans-serif;
  --header:84px; --section:104px; --gutter:48px; --content:1248px;
  --ease:cubic-bezier(.22,1,.36,1); --duration:460ms; --quick:200ms;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:calc(var(--header) + 24px); }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.8 var(--font); -webkit-font-smoothing:antialiased; }
body.modal-open { overflow:hidden; }
.demo-notice { position:fixed; z-index:45; top:50%; left:50%; transform:translate(-50%,-50%); width:max-content; max-width:calc(100% - 32px); padding:16px 30px; border:1px solid #173f3526; border-radius:12px; background:rgb(250 249 245 / 76%); color:rgb(16 47 39 / 68%); box-shadow:0 6px 28px #102f2712; font-size:clamp(26px,4vw,48px); font-weight:700; line-height:1.35; letter-spacing:.035em; text-align:center; white-space:nowrap; pointer-events:none; user-select:none; }
.demo-notice>span { display:none; }
@media (max-width:599px) { .demo-notice { padding:14px 22px; } }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; }
button { cursor:pointer; color:inherit; }
button,a,input,select,summary { -webkit-tap-highlight-color:transparent; }
img { display:block; max-width:100%; height:auto; object-fit:cover; }
p,h1,h2,h3,figure { margin:0; }
p { color:var(--muted); }
h1,h2,h3 { font-weight:600; line-height:1.2; letter-spacing:-1.4px; }
h1 { font-size:clamp(42px,4.6vw,64px); letter-spacing:-2.5px; }
h2 { font-size:clamp(32px,3.3vw,46px); letter-spacing:-1.7px; }
h3 { font-size:23px; letter-spacing:-.6px; }
strong { font-weight:700; }
::selection { background:#e9d9b2; color:var(--green-dark); }
:focus-visible { outline:3px solid #9d711e; outline-offset:5px; }
.icon { width:22px; height:22px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.container { width:min(var(--content),calc(100% - var(--gutter)*2)); margin-inline:auto; }
.section { padding-block:var(--section); }
.sr-only { position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; padding:0; border:0; }
[hidden] { display:none!important; }
.skip-link { position:fixed; left:20px; top:-100px; z-index:100; padding:12px 20px; background:var(--green); color:white; }
.skip-link:focus { top:12px; }

/* Navigation */
.topbar { background:var(--green-dark); color:#e9eee5; font-size:12px; }
.topbar>.container { min-height:34px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.topbar strong { margin-left:7px; font-weight:600; }
.topbar a { font-variant-numeric:tabular-nums; }
.header { position:sticky; top:0; z-index:30; background:var(--paper); border-bottom:1px solid var(--line); transition:box-shadow 300ms; }
.header.is-scrolled { box-shadow:0 5px 24px #102f2709; }
.header-inner { height:var(--header); display:flex; align-items:center; justify-content:space-between; gap:25px; }
.reading-progress { position:absolute; bottom:-1px; left:0; height:2px; width:100%; background:var(--gold); transform:scaleX(0); transform-origin:left; pointer-events:none; }
.brand { display:flex; align-items:center; gap:12px; color:var(--green); flex-shrink:0; }
.brand img { width:50px; height:50px; border-radius:50%; }
.brand>span { font-size:24px; font-weight:800; letter-spacing:1.5px; line-height:1.1; }
.brand small { display:block; margin-top:6px; font-size:9px; letter-spacing:1.8px; font-weight:700; }
.header nav { display:flex; align-items:center; gap:27px; font-size:14px; font-weight:600; }
.header nav>a:not(.button) { position:relative; min-height:48px; display:flex; align-items:center; white-space:nowrap; }
.header nav>a:not(.button)::after { content:''; height:2px; width:100%; background:var(--green); position:absolute; left:0; bottom:3px; transform:scaleX(0); transform-origin:right; transition:transform 300ms var(--ease); }
.header nav>a:hover::after,.header nav>a[aria-current=page]::after { transform:scaleX(1); transform-origin:left; }
.menu-toggle { display:none; }

/* Shared controls */
.button { position:relative; display:inline-flex; align-items:center; justify-content:center; gap:16px; min-height:52px; padding:14px 21px; border:1px solid transparent; border-radius:2px; font-size:14px; line-height:1.5; font-weight:700; flex-shrink:0; overflow:hidden; transition:background var(--quick),border-color var(--quick),transform var(--quick) var(--ease),box-shadow var(--quick); }
.button .icon { transition:transform 350ms var(--ease); }
.button:hover .icon:last-child { transform:translateX(4px); }
.button:active { transform:translateY(1px); }
.button-primary { color:white; background:var(--green); }
.button-primary:hover { background:#265846; box-shadow:0 5px 12px #173f3510; }
.button-outline { border-color:#a3b49f; color:var(--green); background:transparent; }
.button-outline:hover { background:#e9eee5; border-color:var(--green); }
.nav-cta { min-height:46px; padding:12px 17px; }
.nav-cta .icon { width:19px; height:19px; }
.text-link { display:inline-flex; align-items:center; gap:14px; min-height:44px; font-size:14px; font-weight:700; color:var(--green); line-height:1.65; }
.text-link .icon { width:20px; height:20px; transition:transform 350ms var(--ease); }
.text-link:hover .icon { transform:translateX(5px); }
.text-link:hover { text-decoration:underline; text-underline-offset:5px; }
.inline-link { color:var(--green); font-weight:700; text-underline-offset:4px; }
.inline-link:hover { text-decoration:underline; }
.eyebrow { display:flex; align-items:center; gap:12px; color:#52634b; text-transform:uppercase; font-size:12px; font-weight:800; letter-spacing:1.5px; line-height:1.5; }
.crease-mark { display:flex; align-items:center; gap:4px; width:29px; height:22px; border-bottom:1px solid var(--gold); padding:0 4px 4px; }
.crease-mark i { height:16px; width:2px; background:var(--gold); }
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:36px; margin-bottom:42px; }
.section-heading h2 { margin-top:17px; }
.section-heading>p { max-width:380px; font-size:16px; line-height:1.8; }

/* Hero — editorial heading, two photographs and a rate ticket */
.hero { padding-block:40px 0; overflow:hidden; }
.hero-intro { display:grid; grid-template-columns:1.35fr 1fr; gap:65px; align-items:end; margin-bottom:32px; }
.hero h1 { font-size:clamp(54px,5.7vw,82px); line-height:1.04; letter-spacing:-3.6px; font-weight:500; margin-top:20px; }
.hero-line { display:block; overflow:hidden; padding-bottom:7px; }
.hero-line>span { display:block; }
.location-line { color:var(--green); }
.hero-aside { padding-bottom:10px; max-width:415px; justify-self:end; }
.hero-aside>p { font-size:17px; line-height:1.85; }
.hero-actions { display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-top:24px; }
.hero-stage { display:grid; grid-template-columns:1.85fr 1fr; grid-template-rows:254px 170px; gap:16px 24px; }
.hero-photo { grid-row:1/3; position:relative; overflow:hidden; background:#dce4d8; }
.hero-photo>img { height:100%; width:100%; object-position:50% 65%; }
.hero-photo figcaption { position:absolute; bottom:0; left:0; right:0; padding:16px 23px; display:flex; align-items:center; gap:14px; color:var(--green-dark); background:var(--paper); font-size:13px; }
.hero-photo figcaption>a { margin-left:auto; width:44px; height:44px; display:grid; place-items:center; }
.photo-index { color:#657559; font-family:var(--score); font-size:19px; }
.photo-crease { position:absolute; bottom:76px; left:24px; right:24px; height:12px; border-top:1px solid #ffffffb3; border-bottom:1px solid #ffffff70; pointer-events:none; transform-origin:left; }
.hero-training { position:relative; overflow:hidden; background:var(--green-soft); }
.hero-training img { width:100%; height:100%; object-position:50% 65%; }
.hero-training figcaption { position:absolute; bottom:0; left:0; padding:9px 14px; background:var(--paper); color:var(--ink); font-size:12px; }
.hero-ticket { position:relative; display:grid; grid-template-columns:1fr 1fr; align-content:center; gap:0 20px; padding:20px 28px; background:var(--green); color:var(--paper); overflow:hidden; }
.ticket-label { font-size:12px; letter-spacing:1.2px; text-transform:uppercase; color:#d4dfce; align-self:end; }
.ticket-price { grid-column:2; grid-row:1/4; font-family:var(--score); font-size:80px; font-weight:600; letter-spacing:-2px; line-height:1; justify-self:end; align-self:center; }
.ticket-price small { display:block; font-family:var(--font); font-size:12px; font-weight:400; letter-spacing:0; color:#d4dfce; margin-bottom:5px; }
.ticket-description { font-size:13px; margin:7px 0 12px; white-space:nowrap; }
.ticket-action { display:flex; align-items:center; gap:10px; font-size:12px; font-weight:700; }
.ticket-action .icon { height:18px; width:18px; transition:transform var(--duration) var(--ease); }
.hero-ticket:hover .ticket-action .icon { transform:translateX(6px); }
.ticket-seam { position:absolute; left:14px; top:12px; bottom:12px; border-left:1px dashed #bdcdb16b; }
.hero-ticket::after { content:''; position:absolute; top:0; left:0; right:0; height:3px; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform 650ms var(--ease); }
.hero-ticket:hover::after { transform:scaleX(1); }
.hero-context { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:20px 0; border-bottom:1px solid var(--line); font-size:13px; }
.hero-context>span { display:flex; align-items:center; gap:9px; color:var(--muted); }
.hero-context strong { font-weight:600; color:var(--ink); }
.hero-context .icon { width:18px; height:18px; color:var(--green); }
.hero-context>a { display:flex; align-items:center; gap:15px; font-weight:700; }
.hero-mobile-actions { display:none; }

/* Facility detail */
.facility-intro { display:grid; grid-template-columns:.85fr 1.3fr; gap:85px; align-items:center; }
.facility-intro h2 { margin:20px 0 24px; }
.facility-intro-copy>p { font-size:16px; line-height:1.9; }
.facility-intro .text-link { margin-top:23px; }
.facility-collage { display:grid; grid-template-columns:1fr .92fr; gap:32px; align-items:center; }
.facility-detail { height:440px; width:100%; }
.facility-notes>div { padding:22px 0; border-bottom:1px solid var(--line); }
.facility-notes>div:last-child { border-bottom:0; }
.note-number { color:#53644f; font-family:var(--score); font-size:20px; line-height:1; }
.facility-notes h3 { font-size:17px; font-weight:700; margin:10px 0 9px; letter-spacing:-.3px; }
.facility-notes p { font-size:14px; line-height:1.8; }

/* Practice selector */
.services-section { background:#edf1e9; }
.practice-tabs { display:grid; grid-template-columns:repeat(3,1fr); border-bottom:1px solid #bac9b4; }
.practice-tabs button { position:relative; background:none; border:0; display:flex; align-items:center; gap:15px; min-height:78px; padding:16px 23px; font-size:17px; font-weight:600; text-align:left; color:#4b5d4b; }
.practice-tabs button>span { font:500 22px var(--score); color:#52664c; }
.practice-tabs button>.icon { margin-left:auto; width:21px; height:21px; transform:rotate(-35deg); transition:transform var(--duration) var(--ease); }
.practice-tabs button::after { content:''; position:absolute; left:0; bottom:-1px; right:0; height:3px; background:var(--green); transform:scaleX(0); transform-origin:left; transition:transform var(--duration) var(--ease); }
.practice-tabs button[aria-selected=true] { color:var(--green); background:#e3eadd; }
.practice-tabs button[aria-selected=true]::after { transform:scaleX(1); }
.practice-tabs button[aria-selected=true]>.icon { transform:rotate(0); }
.practice-tabs button:hover { background:#e7eddf; }
.practice-content { display:grid; grid-template-columns:.9fr 1.2fr; gap:65px; align-items:center; padding-top:40px; }
.practice-panels { min-width:0; }
.section-number { display:block; font:500 60px/1 var(--score); color:#728567; letter-spacing:-1px; margin-bottom:20px; }
.practice-panels h3 { font-size:31px; line-height:1.3; letter-spacing:-1px; margin-bottom:20px; }
.practice-panels p { font-size:16px; line-height:1.85; max-width:430px; }
.practice-panels .practice-detail { margin-top:17px; font-size:14px; }
.practice-panels .text-link { margin-top:17px; }
.practice-visual { position:relative; overflow:hidden; background:#dce5d6; }
.practice-visual img { width:100%; height:420px; object-position:50% 57%; }
.practice-visual[data-practice="2"] img { object-position:50% 75%; }
.practice-visual figcaption { display:flex; justify-content:space-between; gap:20px; padding:14px 18px; font-size:12px; background:var(--green); color:#edf1e5; }
.practice-visual figcaption>span:last-child { font-family:var(--score); font-size:18px; line-height:1.25; letter-spacing:1px; }
.check-list { list-style:none; padding:0; margin:22px 0 0; display:grid; gap:12px; font-size:15px; }
.check-list li { display:flex; align-items:flex-start; gap:11px; }
.check-list .icon { width:20px; height:20px; color:#496b43; margin-top:3px; }

/* Prices — two scorecards */
.pricing-section { position:relative; background:var(--green-dark); color:white; overflow:hidden; }
.pricing-section::before { content:''; position:absolute; top:0; bottom:0; left:50%; border-left:1px solid #ffffff08; pointer-events:none; }
.pricing-section .eyebrow { color:#d8c38d; }
.pricing-section .section-heading>p { color:#d1ddca; }
.pricing-grid { display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.price-panel { position:relative; background:var(--paper); color:var(--ink); padding:30px; border-top:3px solid var(--gold); }
.price-panel-heading { display:flex; align-items:center; gap:16px; padding-bottom:24px; }
.price-panel h3 { font-size:24px; }
.price-panel-heading p { font-size:14px; margin-top:5px; }
.price-type { margin-left:auto; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.7px; color:#52634d; }
.ball-swatch { position:relative; width:37px; height:37px; border-radius:50%; flex-shrink:0; }
.ball-swatch.dimple { background:#ad961c; }
.ball-swatch.leather { background:#873b34; }
.ball-swatch::after { content:''; position:absolute; top:3px; bottom:3px; left:15px; width:5px; border-left:1px dashed #ffffffb0; border-right:1px dashed #ffffffb0; border-radius:50%; transform:rotate(-25deg); }
.price-panel table { border-collapse:collapse; width:100%; text-align:left; font-variant-numeric:tabular-nums; }
.price-panel thead th { padding:11px 0; border-bottom:1px solid var(--line); font-size:12px; text-transform:uppercase; letter-spacing:1px; font-weight:600; color:var(--muted); }
.price-panel tbody tr { border-bottom:1px solid var(--line); transition:background 300ms; }
.price-panel tbody tr:last-child { border-bottom:0; }
.price-panel tbody tr:hover,.price-panel tbody tr.is-selected { background:#eaf0e4; }
.price-panel tbody th { padding:14px 8px 14px 0; font-size:16px; font-weight:500; }
.price-panel td { padding:8px 0; font:600 33px/1.5 var(--score); letter-spacing:-.3px; }
.price-panel td:last-child { width:48px; text-align:right; }
.price-panel td>a { display:inline-grid; place-items:center; width:44px; height:44px; border:1px solid #bdccba; color:var(--green); transition:background var(--quick),color var(--quick); }
.price-panel td>a:hover,.price-panel tr.is-selected td>a { background:var(--green); color:white; border-color:var(--green); }
.coaching-price-note { border-top:1px solid var(--line); padding-top:18px; margin-top:9px; display:flex; align-items:center; gap:14px; }
.coaching-price-note .icon { color:#476342; }
.coaching-price-note p { font-size:14px; line-height:1.8; }
.coaching-price-note a { color:var(--green); font-weight:700; }
.coaching-price-note a:hover { text-decoration:underline; text-underline-offset:4px; }
.pricing-footnote { display:flex; justify-content:space-between; align-items:center; gap:25px; margin-top:23px; }
.pricing-footnote p { font-size:13px; color:#d2ddcb; }
.pricing-footnote .text-link { color:white; }

/* Gallery */
.gallery-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:25px; align-items:start; }
.gallery-grid>.gallery-item:nth-child(2) { margin-top:55px; }
.gallery-grid>.gallery-item:nth-child(3) { margin-top:110px; }
.gallery-item { position:relative; display:block; padding:0; border:0; background:none; text-align:left; min-width:0; }
.gallery-frame { display:block; position:relative; overflow:hidden; background:#dce4d7; }
.gallery-frame>img { height:350px; width:100%; transition:transform 800ms var(--ease); }
.gallery-grid>.gallery-item:first-child .gallery-frame>img { height:430px; }
.gallery-item:hover .gallery-frame>img { transform:scale(1.045); }
.expand-icon { position:absolute; right:12px; bottom:12px; display:grid; place-items:center; width:38px; height:38px; background:var(--paper); color:var(--green); transition:background var(--quick),color var(--quick),transform 400ms var(--ease); }
.expand-icon .icon { width:18px; height:18px; }
.gallery-item:hover .expand-icon { background:var(--green); color:white; transform:translate(-3px,-3px); }
.gallery-caption { display:grid; gap:4px; padding-top:17px; }
.gallery-caption strong { font-size:16px; font-weight:700; }
.gallery-caption>span { font-size:14px; color:var(--muted); line-height:1.65; }
.gallery-controls { display:none; }
.gallery-filter { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:32px; }
.gallery-filter button { min-height:44px; padding:10px 17px; background:none; border:1px solid #b9c9b3; border-radius:2px; font-size:14px; font-weight:600; transition:background var(--quick),color var(--quick); }
.gallery-filter button[aria-pressed=true] { background:var(--green); border-color:var(--green); color:white; }
.gallery-filter button:hover { border-color:var(--green); }
.full-gallery { display:grid; grid-template-columns:repeat(3,1fr); gap:38px 25px; align-items:start; }
.full-gallery .gallery-frame>img { height:350px; }
.gallery-counter { font-size:14px; margin-top:28px; }

/* Booking */
.booking-section { background:#eaf0e5; border-top:1px solid #d7e0d0; border-bottom:1px solid #d7e0d0; }
.booking-grid { display:grid; grid-template-columns:1fr 1fr; gap:95px; align-items:start; }
.booking-copy h2 { margin:18px 0 22px; }
.booking-copy>p { font-size:16px; max-width:450px; line-height:1.9; }
.booking-steps { list-style:none; padding:0; margin:30px 0; display:grid; gap:23px; }
.booking-steps li { display:flex; align-items:flex-start; gap:17px; }
.booking-steps li>span { font:500 22px/1 var(--score); color:#53694a; width:24px; flex-shrink:0; padding-top:4px; border-bottom:1px solid #98ad8a; padding-bottom:7px; }
.booking-steps strong { font-size:15px; }
.booking-steps p { font-size:14px; line-height:1.8; margin-top:4px; }
.booking-phone { display:flex; align-items:center; gap:16px; max-width:430px; padding-top:24px; border-top:1px solid #c4d2bc; }
.booking-phone>.icon { width:26px; height:26px; color:var(--green); }
.booking-phone>div { display:grid; gap:3px; }
.booking-phone span { font-size:13px; color:var(--muted); }
.booking-phone a { font-size:20px; font-weight:700; letter-spacing:-.4px; }
.booking-form { background:var(--white); border:1px solid #cdd8c6; padding:34px; }
.booking-form h3 { font-size:26px; }
.form-intro { font-size:14px; margin:8px 0 24px; }
.session-summary { display:grid; grid-template-columns:1fr auto; gap:6px 15px; border-left:2px solid var(--gold); background:#eff3e9; padding:16px 18px; margin-bottom:23px; }
.summary-label { grid-column:1/-1; font-size:11px; text-transform:uppercase; letter-spacing:1px; color:#52634b; font-weight:700; }
#session-summary-name { font-size:14px; font-weight:600; align-self:center; line-height:1.6; }
#session-summary-price { font:600 32px/1.2 var(--score); color:var(--green); align-self:center; }
.form-field { margin-top:21px; min-width:0; }
.form-field label { display:block; margin-bottom:9px; font-size:14px; font-weight:700; line-height:1.5; }
.form-field label>span { color:var(--muted); font-size:12px; font-weight:400; margin-left:3px; }
.form-field input,.form-field select { display:block; min-height:50px; width:100%; min-width:0; padding:12px 13px; background:#fdfdfb; color:var(--ink); border:1px solid #b7c5af; border-radius:2px; font-size:15px; line-height:1.5; transition:border-color var(--quick),background var(--quick),box-shadow var(--quick); }
.form-field input::placeholder { color:#616e5b; }
.form-field input:focus,.form-field select:focus { border-color:var(--green); background:white; box-shadow:0 0 0 3px #173f3507; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:15px; min-width:0; }
.booking-form>.button { margin-top:27px; width:100%; justify-content:flex-start; gap:11px; }
.booking-form>.button>.icon:last-child { margin-left:auto; }
.form-note { font-size:13px; line-height:1.8; margin-top:15px; }

/* Reviews, questions and location */
.reviews-grid { display:grid; grid-template-columns:1fr 1fr; gap:60px; }
.reviews-grid figure { border-top:1px solid var(--line); padding-top:25px; display:flex; flex-direction:column; }
.review-stars { color:#846118; font-size:16px; letter-spacing:3px; }
.reviews-grid blockquote { font-size:21px; line-height:1.8; font-weight:500; color:#344238; margin:22px 0 29px; max-width:490px; }
.reviews-grid figcaption { display:grid; gap:4px; margin-top:auto; }
.reviews-grid figcaption strong { font-size:14px; }
.reviews-grid figcaption>span { font-size:12px; color:var(--muted); }
.faq-section { padding-top:0; }
.faq-grid { display:grid; grid-template-columns:.85fr 1.2fr; gap:95px; }
.faq-grid h2 { margin:18px 0 22px; }
.faq-grid>div>p { font-size:15px; line-height:1.9; }
.faq-list details { border-bottom:1px solid #cbd6c4; }
.faq-list details:first-child { border-top:1px solid #cbd6c4; }
.faq-list summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:22px; padding:22px 0; font-size:16px; font-weight:600; line-height:1.65; }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary>span { font-size:24px; font-weight:400; color:#526c49; line-height:1; transition:transform var(--duration) var(--ease); }
.faq-list details[open] summary>span { transform:rotate(45deg); }
.faq-list details.is-closing summary>span { transform:rotate(0); }
.faq-list p { font-size:16px; line-height:1.85; padding:0 22px 24px 0; }
.location-section { background:#eff2e9; padding-block:78px; }
.location-grid { display:grid; grid-template-columns:1fr .95fr; gap:85px; align-items:center; }
.location-copy h2 { margin:20px 0 25px; }
.location-copy address { font-style:normal; font-size:17px; line-height:1.9; }
.location-landmark { display:flex; align-items:center; gap:9px; font-size:14px; margin-top:12px; }
.location-landmark .icon { width:18px; height:18px; }
.location-hours { display:grid; gap:4px; max-width:420px; margin-top:25px; padding-top:23px; border-top:1px solid #cbd8c3; }
.location-hours>span { font-size:14px; color:var(--muted); }
.location-hours strong { font:600 29px/1.4 var(--score); letter-spacing:.3px; }
.location-actions { display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-top:27px; }
.location-photo { overflow:hidden; }
.location-photo img { width:100%; height:430px; object-position:50% 45%; }
.location-photo figcaption { padding:14px 18px; background:var(--paper); font-size:13px; color:var(--muted); }

/* Footer */
.footer { padding-block:60px 24px; background:var(--green-dark); color:#e4ecdf; }
.footer-grid { display:grid; grid-template-columns:1.35fr .8fr 1fr 1fr; gap:50px; }
.footer .brand { color:#f7f5eb; }
.footer .brand img { width:48px; height:48px; }
.footer .brand>span { font-size:23px; }
.footer .brand small { font-size:9px; }
.footer-brand>p { max-width:280px; font-size:14px; line-height:1.9; color:#c1ceba; margin-top:20px; }
.footer-grid h2 { font-size:14px; font-weight:700; letter-spacing:0; margin:3px 0 9px; color:#f4f5e9; }
.footer-grid>nav,.footer-grid>div:not(.footer-brand) { display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.footer-grid a:not(.brand) { display:inline-flex; align-items:center; gap:6px; min-height:40px; font-size:13px; line-height:1.7; }
.footer-grid a:hover { text-decoration:underline; text-underline-offset:4px; }
.footer-grid .icon { height:15px; width:15px; }
.footer-grid>div>p { color:#c1ceba; font-size:14px; line-height:1.85; }
.footer-bottom { display:flex; align-items:center; justify-content:space-between; gap:25px; border-top:1px solid #3a5344; margin-top:42px; padding-top:20px; font-size:12px; color:#c1ceba; }
.footer-bottom a { display:inline-flex; align-items:center; min-height:36px; }
.footer-bottom a:hover { text-decoration:underline; }
.mobile-contact { display:none; }

/* Supporting pages */
.breadcrumb { display:flex; align-items:center; gap:10px; font-size:13px; color:#5b6b5b; margin-bottom:28px; }
.breadcrumb a:hover { text-decoration:underline; }
.page-heading { position:relative; background:#edf1e8; padding-block:44px 58px; overflow:hidden; }
.page-heading::after { content:''; position:absolute; width:90px; height:200px; bottom:-70px; right:max(var(--gutter),calc((100vw - var(--content))/2)); border-left:2px solid #b8955129; border-right:2px solid #b8955129; transform:rotate(25deg); pointer-events:none; }
.page-heading h1 { font-size:54px; margin:19px 0 21px; max-width:1000px; }
.page-heading p { max-width:700px; font-size:17px; line-height:1.85; }
.practice-editorial { display:grid; grid-template-columns:1fr 1fr; gap:85px; align-items:center; }
.practice-editorial>figure img { width:100%; height:520px; }
.practice-editorial h2 { margin:18px 0 23px; }
.practice-editorial p { font-size:16px; line-height:1.9; margin-top:15px; }
.practice-editorial .text-link { margin-top:18px; }
.practice-editorial figcaption { font-size:13px; color:var(--muted); margin-top:12px; }
.alternate-section { background:#edf1e8; }
.equipment-info { border-top:1px solid var(--line); margin-top:32px; padding-top:24px; }
.equipment-info h3 { font-size:18px; }
.equipment-info p { font-size:14px; }
.callout { display:flex; align-items:center; justify-content:space-between; gap:35px; padding:36px 40px; background:#e5ecdd; border-left:3px solid var(--gold); }
.callout h2 { font-size:29px; letter-spacing:-.8px; }
.callout p { margin-top:10px; font-size:15px; }
.coaching-panel { display:grid; grid-template-columns:1fr 1fr; gap:65px; align-items:center; }
.coaching-panel h2 { margin:18px 0 23px; }
.coaching-panel p { font-size:16px; line-height:1.85; }
.coaching-panel img { width:100%; height:450px; object-position:center; }
.rates-source { display:grid; grid-template-columns:.6fr 1fr; gap:45px; align-items:center; border-top:1px solid #cad6c4; margin-top:45px; padding-top:40px; }
.rates-source h3 { font-size:24px; }
.rates-source p { font-size:16px; margin-top:16px; line-height:1.85; }
.rates-source .gallery-frame>img { height:310px; object-position:50% 57%; }
.rates-source .gallery-caption>strong { font-size:15px; }
.contact-page-details { display:grid; grid-template-columns:1fr 1fr; gap:85px; align-items:start; }
.contact-page-details h2 { margin:17px 0 24px; }
.contact-page-details address { font-style:normal; font-size:18px; line-height:1.9; }
.contact-page-details img { width:100%; height:530px; }
.contact-facts { display:grid; grid-template-columns:1fr 1fr; gap:30px; padding-block:25px; margin:30px 0; border-block:1px solid var(--line); }
.contact-facts h3 { font-size:15px; font-weight:700; letter-spacing:0; margin-bottom:9px; }
.contact-facts p,.contact-facts a { font-size:15px; }
.contact-direct { display:flex; flex-wrap:wrap; gap:12px; margin-top:26px; }
.arrival-note { font-size:16px; margin-top:16px; }
.legal-copy { max-width:800px; padding-block:65px; }
.legal-copy h2 { font-size:25px; letter-spacing:-.6px; margin:32px 0 16px; }
.legal-copy p { font-size:16px; line-height:1.9; margin-bottom:18px; }
.legal-copy a { color:var(--green); text-decoration:underline; text-underline-offset:3px; }

/* Photo viewer */
.lightbox { width:1100px; max-width:95vw; max-height:94dvh; padding:46px 60px 24px; border:1px solid #64765c; background:var(--green-dark); color:white; }
.lightbox::backdrop { background:#071a13ed; }
.lightbox img { width:100%; height:66dvh; object-fit:contain; }
.lightbox figcaption { padding-top:16px; font-size:14px; text-align:center; line-height:1.7; color:#e1e8d8; }
.lightbox button { position:absolute; width:44px; height:44px; border:0; color:white; background:none; font-size:30px; line-height:1; display:grid; place-items:center; transition:background var(--quick); }
.lightbox button:hover { background:#ffffff12; }
.lightbox-close { top:3px; right:5px; }
.lightbox-prev { top:43%; left:7px; }
.lightbox-next { top:43%; right:7px; }
.lightbox-meta { display:flex; align-items:center; justify-content:center; gap:24px; font-size:13px; margin-top:8px; color:#e0e8d6; }
.lightbox-meta a { min-height:44px; display:inline-flex; align-items:center; text-decoration:underline; text-underline-offset:4px; }

/* Progressive motion; document content is visible without JavaScript. */
.reveal { transition:opacity 650ms var(--ease),transform 650ms var(--ease); }
.motion-enabled .reveal:not(.is-visible) { opacity:0; transform:translateY(22px); }

/* Desktop and tablet */
@media(min-width:1550px) {
  :root { --content:1320px; --gutter:60px; }
  .hero { padding-top:50px; }
  .hero-stage { grid-template-rows:290px 180px; }
}
@media(max-width:1199px) {
  :root { --gutter:32px; --section:84px; }
  .header nav { gap:19px; font-size:13px; }
  .brand { gap:9px; }
  .brand>span { font-size:23px; }
  .brand img { width:47px; height:47px; }
  .button { padding-inline:17px; }
  .nav-cta { font-size:13px; padding-inline:14px; }
  .hero-intro { gap:45px; }
  .hero h1 { font-size:66px; letter-spacing:-2.8px; }
  .hero-aside>p { font-size:16px; }
  .hero-actions { gap:16px; }
  .hero-actions .button { font-size:13px; }
  .hero-stage { grid-template-columns:1.65fr 1fr; grid-template-rows:240px 165px; gap:16px; }
  .hero-ticket { padding:19px 23px; gap:0 12px; }
  .ticket-price { font-size:70px; }
  .ticket-description { font-size:12px; }
  .ticket-action { font-size:11px; }
  .hero-context { font-size:12px; gap:15px; }
  .hero-context>span { gap:7px; }
  .facility-intro { gap:50px; grid-template-columns:.9fr 1.3fr; }
  .facility-collage { gap:23px; }
  .facility-detail { height:410px; }
  .facility-notes h3 { font-size:16px; }
  .practice-content { gap:45px; }
  .practice-tabs button { font-size:16px; padding-inline:19px; }
  .practice-visual img { height:430px; }
  .booking-grid { gap:55px; }
  .booking-form { padding:28px; }
  .form-row { grid-template-columns:1fr; gap:0; }
  .faq-grid,.location-grid { gap:60px; }
  .gallery-grid { gap:20px; }
  .gallery-frame>img { height:300px; }
  .gallery-grid>.gallery-item:first-child .gallery-frame>img { height:385px; }
  .full-gallery .gallery-frame>img { height:300px; }
  .footer-grid { gap:30px; }
  .practice-editorial,.contact-page-details { gap:55px; }
}
@media(max-width:899px) {
  :root { --header:74px; --gutter:24px; --section:72px; }
  .topbar>.container { font-size:11px; min-height:31px; gap:12px; }
  .topbar>.container>a { display:none; }
  .header nav { position:absolute; left:0; right:0; top:var(--header); display:flex; flex-direction:column; align-items:stretch; gap:0; padding:16px 24px 25px; max-height:calc(100dvh - var(--header) - 70px); overflow:auto; border-bottom:1px solid var(--line); background:var(--paper); box-shadow:0 18px 24px #102f2710; visibility:hidden; opacity:0; transform:translateY(-10px); transition:opacity 260ms var(--ease),transform 350ms var(--ease),visibility 0s 350ms; }
  .header nav.open { visibility:visible; opacity:1; transform:none; transition-delay:0s; }
  .header nav>a:not(.button) { min-height:50px; padding-block:11px; border-bottom:1px solid var(--line); font-size:16px; }
  .header nav>a[aria-current=page] { font-weight:800; }
  .header nav>a::after { display:none; }
  .header nav .nav-cta { margin-top:18px; min-height:50px; font-size:15px; justify-content:space-between; }
  .menu-toggle { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; width:46px; height:46px; border:1px solid #bfcdb7; background:none; }
  .menu-toggle>span { width:19px; height:1.5px; background:var(--green); transition:transform 350ms var(--ease),opacity 200ms; }
  .menu-toggle[aria-expanded=true]>span:first-child { transform:translateY(6.5px) rotate(45deg); }
  .menu-toggle[aria-expanded=true]>span:nth-child(2) { opacity:0; }
  .menu-toggle[aria-expanded=true]>span:last-child { transform:translateY(-6.5px) rotate(-45deg); }
  .hero { padding-top:34px; }
  .hero-intro { gap:30px; grid-template-columns:1fr 1fr; margin-bottom:28px; }
  .hero h1 { font-size:53px; letter-spacing:-2px; }
  .hero-aside { padding:0; }
  .hero-aside>p { font-size:15px; }
  .hero-actions { flex-direction:column; align-items:flex-start; gap:10px; margin-top:18px; }
  .hero-stage { grid-template-columns:1.5fr 1fr; grid-template-rows:225px 160px; gap:14px; }
  .hero-ticket { padding:18px; grid-template-columns:1fr auto; }
  .ticket-price { font-size:61px; }
  .ticket-description { font-size:11px; }
  .ticket-label { font-size:11px; }
  .ticket-action { font-size:11px; gap:5px; }
  .ticket-action .icon { width:16px; height:16px; }
  .ticket-seam { left:8px; }
  .hero-context { flex-wrap:wrap; gap:10px 20px; padding-block:19px; }
  .hero-context>a { display:none; }
  .hero-context>span { font-size:12px; }
  .facility-intro { grid-template-columns:1fr; gap:32px; }
  .facility-intro-copy { max-width:650px; }
  .facility-intro h2 br { display:none; }
  .facility-collage { grid-template-columns:1fr 1.2fr; gap:40px; }
  .facility-detail { height:350px; }
  .facility-notes h3 { font-size:18px; }
  .section-heading { align-items:flex-start; gap:28px; }
  .section-heading h2 { font-size:34px; }
  .section-heading>p { max-width:260px; font-size:15px; }
  .practice-tabs button { font-size:14px; min-height:72px; gap:11px; padding-inline:13px; }
  .practice-tabs button>span { font-size:20px; }
  .practice-tabs button>.icon { display:none; }
  .practice-content { gap:35px; grid-template-columns:1fr 1fr; }
  .practice-panels h3 { font-size:26px; }
  .practice-visual img { height:400px; }
  .practice-visual figcaption { font-size:11px; padding:13px 14px; }
  .practice-panels .text-link { font-size:13px; }
  .section-number { font-size:48px; }
  .price-panel { padding:24px; }
  .price-panel-heading { gap:12px; }
  .price-panel h3 { font-size:21px; }
  .price-type { display:none; }
  .pricing-footnote { align-items:flex-start; }
  .pricing-footnote p { max-width:320px; }
  .pricing-footnote .text-link { font-size:13px; }
  .gallery-grid { gap:17px; }
  .gallery-frame>img { height:260px; }
  .gallery-grid>.gallery-item:first-child .gallery-frame>img { height:340px; }
  .gallery-grid>.gallery-item:nth-child(2) { margin-top:40px; }
  .gallery-grid>.gallery-item:nth-child(3) { margin-top:80px; }
  .gallery-caption strong { font-size:14px; }
  .gallery-caption>span { font-size:13px; }
  .booking-grid { gap:40px; grid-template-columns:.9fr 1fr; }
  .booking-form { padding:25px; }
  .booking-form h3 { font-size:23px; }
  .booking-form>.button { padding-inline:13px; font-size:13px; gap:8px; }
  .booking-form>.button>.icon { width:19px; height:19px; }
  .session-summary { padding:14px; gap:6px 10px; }
  #session-summary-name { font-size:13px; }
  #session-summary-price { font-size:29px; }
  .reviews-grid { gap:35px; }
  .reviews-grid blockquote { font-size:19px; }
  .faq-grid { gap:45px; grid-template-columns:.85fr 1.2fr; }
  .faq-grid h2 { font-size:33px; }
  .faq-list summary { font-size:15px; }
  .location-grid { gap:35px; }
  .location-copy h2 { font-size:34px; }
  .location-copy address { font-size:16px; }
  .location-actions { gap:14px; }
  .location-actions .button,.location-actions .text-link { font-size:13px; }
  .location-photo img { height:410px; }
  .footer-grid { grid-template-columns:1.2fr 1fr; gap:40px 65px; }
  .footer-grid>nav { grid-row:2; }
  .footer-grid>div:last-child { grid-column:2; grid-row:2; }
  .page-heading h1 { font-size:45px; }
  .practice-editorial,.contact-page-details { gap:40px; }
  .practice-editorial h2 { font-size:34px; }
  .practice-editorial>figure img { height:490px; }
  .coaching-panel { gap:40px; }
  .contact-facts { grid-template-columns:1fr; gap:20px; }
  .full-gallery { grid-template-columns:1fr 1fr; }
  .full-gallery .gallery-frame>img { height:350px; }
  .mobile-contact { position:fixed; z-index:40; bottom:0; left:0; right:0; display:grid; grid-template-columns:1fr 1.4fr; padding-bottom:env(safe-area-inset-bottom); border-top:1px solid #cad5c3; background:var(--paper); box-shadow:0 -3px 15px #102f2708; transition:transform 350ms var(--ease); }
  .mobile-contact.is-covered { transform:translateY(110%); }
  .mobile-contact a { display:flex; align-items:center; justify-content:center; gap:10px; min-height:58px; padding:14px 12px; font-size:14px; font-weight:700; line-height:1.5; }
  .mobile-contact a:last-child { background:var(--green); color:white; }
  .mobile-contact .icon { width:21px; height:21px; }
  .footer { padding-bottom:calc(85px + env(safe-area-inset-bottom)); }
}

/* Mobile composition */
@media(max-width:599px) {
  :root { --header:68px; --gutter:20px; --section:58px; }
  h2 { font-size:32px; line-height:1.27; letter-spacing:-1.2px; }
  h3 { font-size:21px; }
  .topbar>.container { min-height:29px; font-size:11px; gap:8px; }
  .topbar strong { display:none; }
  .brand { gap:9px; }
  .brand img { width:42px; height:42px; }
  .brand>span { font-size:22px; letter-spacing:1.2px; }
  .brand small { margin-top:5px; font-size:8px; letter-spacing:1.4px; }
  .menu-toggle { width:44px; height:44px; }
  .eyebrow { font-size:11px; letter-spacing:1.25px; }
  .hero { padding-top:27px; }
  .hero-intro { grid-template-columns:1fr; gap:16px; margin-bottom:23px; }
  .hero h1 { font-size:clamp(41px,11vw,62px); line-height:1.05; letter-spacing:-1.8px; margin-top:17px; }
  .hero-line { padding-bottom:5px; }
  .hero-aside { max-width:none; justify-self:auto; }
  .hero-aside>p { font-size:16px; line-height:1.75; }
  .hero-actions { display:none; }
  .hero-stage { display:block; height:300px; position:relative; margin-inline:calc(var(--gutter)*-1); }
  .hero-photo { height:100%; width:100%; }
  .hero-photo>img { object-position:50% 64%; }
  .hero-photo figcaption { bottom:0; padding:11px 20px; font-size:12px; background:var(--paper); gap:10px; }
  .photo-index { font-size:17px; }
  .hero-photo figcaption>a { height:44px; width:44px; }
  .hero-photo figcaption .icon { width:18px; height:18px; }
  .photo-crease { bottom:66px; left:20px; right:20px; height:9px; }
  .hero-training { display:none; }
  .hero-ticket { position:absolute; top:15px; right:15px; display:grid; grid-template-columns:1fr; padding:14px 18px 13px 22px; gap:4px; }
  .ticket-label { font-size:10px; letter-spacing:.8px; }
  .ticket-price { grid-column:auto; grid-row:auto; justify-self:start; font-size:47px; letter-spacing:-.5px; display:flex; align-items:baseline; gap:7px; }
  .ticket-price small { font-size:11px; margin:0; }
  .ticket-description { margin:0; font-size:11px; }
  .ticket-action { display:none; }
  .ticket-seam { left:10px; }
  .hero-mobile-actions { display:grid; grid-template-columns:1.3fr 1fr; gap:10px; margin-top:19px; }
  .hero-mobile-actions .button { padding:13px 12px; font-size:14px; min-height:49px; gap:12px; }
  .hero-mobile-actions .icon { width:18px; height:18px; }
  .hero-context { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:16px; padding:20px 0; }
  .hero-context>span { display:block; font-size:11px; line-height:1.8; padding-left:25px; position:relative; }
  .hero-context .icon { width:17px; height:17px; position:absolute; left:0; top:3px; }
  .hero-context strong { display:block; font-size:12px; }
  .facility-intro { gap:28px; }
  .facility-intro h2 { font-size:32px; margin:15px 0 20px; }
  .facility-intro-copy>p { font-size:16px; line-height:1.85; }
  .facility-intro .text-link { margin-top:17px; }
  .facility-collage { grid-template-columns:1fr; gap:20px; }
  .facility-detail { height:270px; object-position:50% 55%; }
  .facility-notes>div { display:grid; grid-template-columns:27px 1fr; gap:0 14px; align-items:baseline; padding:20px 0; }
  .facility-notes .note-number { grid-column:1; grid-row:1/3; font-size:20px; }
  .facility-notes h3 { grid-column:2; font-size:17px; margin:0 0 6px; }
  .facility-notes p { grid-column:2; font-size:14px; margin:0; line-height:1.8; }
  .section-heading { flex-direction:column; align-items:flex-start; gap:18px; margin-bottom:28px; }
  .section-heading h2 { font-size:32px; margin-top:14px; }
  .section-heading>p { max-width:none; font-size:16px; }
  .desktop-break { display:none; }
  .practice-tabs { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; margin-inline:calc(var(--gutter)*-1); padding-inline:var(--gutter); }
  .practice-tabs::-webkit-scrollbar { display:none; }
  .practice-tabs button { flex:0 0 auto; min-width:185px; min-height:65px; padding:15px 18px 15px 10px; font-size:15px; gap:12px; scroll-snap-align:start; }
  .practice-tabs button>span { font-size:21px; }
  .practice-content { grid-template-columns:1fr; gap:27px; padding-top:25px; }
  .practice-panels { min-height:0; }
  .section-number { font-size:40px; margin-bottom:13px; }
  .practice-panels h3 { font-size:27px; line-height:1.3; margin-bottom:17px; }
  .practice-panels p { font-size:16px; line-height:1.85; max-width:none; }
  .practice-panels .practice-detail { font-size:14px; margin-top:14px; }
  .practice-panels .text-link { font-size:14px; margin-top:14px; }
  .practice-panels .check-list { font-size:14px; gap:10px; margin-top:17px; }
  .practice-visual img { height:280px; object-position:50% 60%; }
  .practice-visual[data-practice="2"] img { object-position:50% 65%; }
  .practice-visual figcaption { font-size:12px; padding:13px 15px; }
  .pricing-grid { grid-template-columns:1fr; gap:20px; }
  .price-panel { padding:23px 21px; }
  .price-panel-heading { gap:13px; padding-bottom:19px; }
  .price-panel h3 { font-size:23px; }
  .price-panel-heading p { font-size:14px; }
  .price-type { display:block; font-size:10px; }
  .ball-swatch { width:31px; height:31px; }
  .ball-swatch::after { left:12px; }
  .price-panel thead th { font-size:11px; }
  .price-panel tbody th { font-size:16px; padding:14px 8px 14px 0; }
  .price-panel td { font-size:32px; }
  .price-panel td>a { width:46px; height:46px; }
  .coaching-price-note p { font-size:14px; }
  .pricing-footnote { flex-direction:column; align-items:flex-start; gap:7px; margin-top:19px; }
  .pricing-footnote p { font-size:13px; max-width:none; line-height:1.8; }
  .pricing-footnote .text-link { font-size:14px; }
  .gallery-grid { grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:85%; overflow-x:auto; gap:17px; scroll-snap-type:x mandatory; scrollbar-width:none; margin-inline:calc(var(--gutter)*-1); padding:0 var(--gutter) 5px; scroll-padding-left:var(--gutter); }
  .gallery-grid::-webkit-scrollbar { display:none; }
  .gallery-grid>.gallery-item { margin-top:0!important; scroll-snap-align:start; }
  .gallery-grid .gallery-frame>img,.gallery-grid>.gallery-item:first-child .gallery-frame>img { height:320px; }
  .gallery-caption { gap:4px; padding-top:13px; }
  .gallery-caption strong { font-size:16px; }
  .gallery-caption>span { font-size:14px; }
  .gallery-section .section-heading>.button { min-height:46px; padding:11px 15px; font-size:13px; }
  .gallery-controls { display:flex; align-items:center; justify-content:space-between; gap:25px; margin-top:17px; }
  .gallery-position { font:500 21px var(--score); letter-spacing:1px; color:#53674c; }
  .gallery-controls>div { display:flex; gap:9px; }
  .gallery-controls button { width:44px; height:44px; border:1px solid #b5c5ac; background:none; font-size:21px; transition:background var(--quick); }
  .gallery-controls button:disabled { opacity:.35; cursor:default; }
  .gallery-controls button:not(:disabled):active { background:#e6ecdf; }
  .booking-grid { grid-template-columns:1fr; gap:28px; }
  .booking-copy h2 { margin:15px 0 18px; }
  .booking-copy>p { font-size:16px; line-height:1.85; }
  .booking-steps { display:none; }
  .booking-phone { margin-top:23px; padding-top:20px; gap:13px; }
  .booking-phone span { font-size:13px; }
  .booking-phone a { font-size:19px; }
  .booking-form { padding:24px 20px; }
  .booking-form h3 { font-size:25px; }
  .form-intro { font-size:14px; margin-bottom:22px; }
  .session-summary { padding:15px; margin-bottom:22px; }
  #session-summary-name { font-size:14px; }
  #session-summary-price { font-size:32px; }
  .form-field { margin-top:21px; }
  .form-field input,.form-field select { font-size:16px; min-height:51px; padding:13px 12px; }
  .form-row { grid-template-columns:1fr; gap:0; }
  .booking-form>.button { min-height:53px; padding:14px; font-size:14px; gap:10px; margin-top:25px; }
  .form-note { font-size:13px; margin-top:14px; line-height:1.8; }
  .reviews-grid { grid-template-columns:1fr; gap:30px; }
  .reviews-grid figure { padding-top:22px; }
  .reviews-grid blockquote { font-size:19px; line-height:1.8; margin:18px 0 22px; }
  .reviews-grid figcaption strong { font-size:14px; }
  .reviews-grid figcaption>span { font-size:12px; }
  .faq-grid { grid-template-columns:1fr; gap:25px; }
  .faq-grid h2 { font-size:32px; margin:15px 0 17px; }
  .faq-grid h2 br { display:none; }
  .faq-grid>div>p { font-size:15px; }
  .faq-list summary { font-size:16px; padding:20px 0; gap:14px; }
  .faq-list p { font-size:16px; padding:0 10px 22px 0; }
  .location-section { padding-block:50px; }
  .location-grid { grid-template-columns:1fr; gap:30px; }
  .location-copy h2 { font-size:32px; margin:16px 0 23px; }
  .location-copy h2 br { display:none; }
  .location-copy address { font-size:16px; line-height:1.85; }
  .location-hours { margin-top:24px; }
  .location-actions { gap:18px; }
  .location-actions .button,.location-actions .text-link { font-size:14px; }
  .location-photo img { height:320px; }
  .location-photo figcaption { font-size:12px; padding:13px 15px; }
  .footer { padding-top:43px; }
  .footer-grid { grid-template-columns:1fr 1fr; gap:30px 20px; }
  .footer-brand { grid-column:1/-1; }
  .footer-brand>p { max-width:none; margin-top:16px; font-size:14px; }
  .footer-grid>nav { grid-row:auto; }
  .footer-grid>div:last-child { grid-column:1/-1; grid-row:auto; flex-direction:row; flex-wrap:wrap; gap:8px 22px; }
  .footer-grid>div:last-child>h2 { width:100%; margin-bottom:2px; }
  .footer-grid a:not(.brand) { min-height:44px; font-size:13px; }
  .footer-bottom { flex-direction:column; align-items:flex-start; gap:8px; margin-top:28px; font-size:11px; }
  .footer-bottom a { font-size:12px; min-height:44px; }
  .page-heading { padding-block:27px 36px; }
  .page-heading::after { right:0; }
  .breadcrumb { font-size:12px; margin-bottom:22px; gap:8px; }
  .page-heading h1 { font-size:37px; line-height:1.2; letter-spacing:-1.3px; margin:15px 0 18px; }
  .page-heading p { font-size:16px; line-height:1.85; }
  .practice-editorial { grid-template-columns:1fr; gap:28px; }
  .practice-editorial>figure img { height:330px; }
  .practice-editorial h2 { font-size:31px; margin:15px 0 19px; }
  .practice-editorial p { font-size:16px; line-height:1.85; }
  .practice-editorial figcaption { font-size:12px; line-height:1.8; }
  .check-list { font-size:15px; }
  .equipment-info p { font-size:14px; }
  .gallery-filter { gap:8px; margin-bottom:25px; }
  .gallery-filter button { font-size:13px; padding:10px 13px; min-height:44px; }
  .full-gallery { grid-template-columns:1fr; gap:28px; }
  .full-gallery .gallery-frame>img { height:350px; }
  .gallery-counter { font-size:13px; }
  .callout { flex-direction:column; align-items:flex-start; padding:26px 23px; gap:22px; }
  .callout h2 { font-size:26px; }
  .callout p { font-size:15px; line-height:1.8; }
  .rates-source { grid-template-columns:1fr; gap:25px; margin-top:32px; padding-top:30px; }
  .rates-source h3 { font-size:23px; }
  .rates-source .gallery-frame>img { height:320px; }
  .rates-source p { font-size:16px; line-height:1.85; }
  .coaching-panel { grid-template-columns:1fr; gap:28px; }
  .coaching-panel h2 { font-size:31px; margin:15px 0 19px; }
  .coaching-panel img { height:350px; }
  .contact-page-details { grid-template-columns:1fr; gap:30px; }
  .contact-page-details h2 { font-size:30px; margin:15px 0 21px; }
  .contact-page-details address { font-size:17px; }
  .contact-page-details img { height:350px; }
  .contact-facts { gap:20px; }
  .contact-facts p,.contact-facts a { font-size:16px; }
  .lightbox { max-width:96vw; padding:47px 33px 22px; }
  .lightbox img { height:59dvh; }
  .lightbox figcaption { font-size:13px; }
  .lightbox-prev { left:0; }
  .lightbox-next { right:0; }
  .lightbox-meta { font-size:12px; gap:18px; }
  .legal-copy { padding-block:40px; }
  .legal-copy h2 { font-size:24px; margin-top:28px; }
}
@media(max-width:359px) {
  :root { --gutter:16px; }
  .topbar>.container { font-size:10px; }
  .hero h1 { font-size:40px; }
  .hero-aside>p { font-size:16px; }
  .hero-stage { height:285px; }
  .hero-mobile-actions .button { font-size:13px; gap:8px; padding-inline:10px; }
  .hero-mobile-actions .icon { width:16px; }
  .hero-context { gap:12px; }
  .hero-context>span { font-size:10px; }
  .hero-context strong { font-size:11px; }
  .price-type { display:none; }
  .price-panel { padding-inline:19px; }
  .booking-form { padding:23px 16px; }
  .booking-form>.button { font-size:13px; gap:8px; }
  .session-summary { padding:13px; gap:5px 8px; }
  #session-summary-name { font-size:13px; }
  #session-summary-price { font-size:28px; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  .motion-enabled .reveal:not(.is-visible) { opacity:1; transform:none; }
}
