/* Sections and page layouts. Tokens only. */

/* ---------- Hero ---------- */
.section.hero{display:flex;flex-direction:column;gap:40px;padding-bottom:40px;border-bottom:var(--border-hair) solid var(--line-grid)}
/* The hero's wraps are the layouts themselves, so they opt out of the section flex stack */
.section.hero > .hero__grid{display:grid}
.section.hero > .hero__loop{display:block}
@media (max-width:1024px){.section.hero{gap:32px;padding-bottom:0}}
@media (max-width:767px){.section.hero{gap:24px}}
.hero__grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-8);align-items:center}
.hero__copy{display:flex;flex-direction:column;gap:var(--space-6);align-items:flex-start}
.hero__copy .body-l{max-width:34ch}
.hero__screen{position:relative;padding:var(--space-8) var(--space-5) var(--space-8) 0}
.hero__card{position:absolute;z-index:2;padding:var(--space-3) var(--space-5);display:flex;flex-direction:column;gap:var(--space-1)}
.hero__card--signal{top:0;right:0;background:var(--surface-signal);color:var(--text-on-signal)}
.hero__card--mint{left:calc(var(--space-6) * -1);bottom:var(--space-5);background:var(--surface-data);color:var(--text-on-data);min-width:200px;padding-block:var(--space-4)}
.hero__card--mint .label-s{color:var(--text-on-data-secondary)}
.hero__card b{font-family:var(--font-display);font-stretch:var(--stretch-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-display);line-height:1}
.hero__loop{padding-bottom:var(--space-5)}
.hero__loop-head{display:flex;justify-content:space-between;margin-bottom:var(--space-2)}
.hero__slots{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--space-2)}
.hero__slot i{display:block;height:6px;background:var(--cm-black-700);position:relative;overflow:hidden}
.hero__slot span{display:block;margin-top:var(--space-2);color:var(--text-disabled)}
.hero__slot.is-past i{background:var(--line-strong)}
.hero__slot.is-now i::after{content:"";position:absolute;inset:0;background:var(--cm-orange);transform-origin:left;animation:cm-progress var(--dur-loop) linear infinite}
.hero__slot.is-now span{color:var(--text-primary)}
@media (max-width:1024px){
  .hero__grid{grid-template-columns:1fr;gap:var(--space-7)}
  .hero__screen{padding:var(--space-7) 0 var(--space-6)}
  .hero__card--mint{left:var(--space-3);bottom:0}
  .hero__card--signal{right:var(--space-3);top:var(--space-2)}
  .hero__slots{grid-template-columns:repeat(6,minmax(0,1fr));row-gap:var(--space-4)}
}

/* ---------- Ghost numerals: boxed to the container edge, nudged so the section clips them ---------- */
.ghost--top-left{top:0;left:max(var(--container-pad),(100% - var(--container-max)) / 2);transform:translateY(-30%)}
.ghost--top-right{top:0;right:max(var(--container-pad),(100% - var(--container-max)) / 2);transform:translateY(-30%)}
.ghost--bottom-right{bottom:0;right:max(var(--container-pad),(100% - var(--container-max)) / 2);transform:translateY(30%)}

/* ---------- Page hero ---------- */
.page-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:var(--section-gap);padding:var(--section-pad) var(--container-pad) var(--hero-pb,var(--section-pad));border-bottom:var(--border-hair) solid var(--line-grid)}
.page-hero > *{width:100%;max-width:var(--container-max);margin:0 auto}
.page-hero--plain{border-bottom:0;background:none}
.page-hero__head{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:var(--space-5) var(--space-7);align-items:end}
.page-hero__title{font-size:var(--type-display-page)}
.page-hero__side{display:grid;gap:var(--space-5)}
.page-hero__side .body-l,.page-hero__head > .body-l{max-width:44ch;line-height:1.45}
.page-hero__side .btn-row{gap:var(--space-3)}
.page-hero__after{position:relative}

/* ---------- Final CTA ---------- */
.cta-final__card{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);min-height:300px}
.cta-final__fact{background:var(--surface-signal);color:var(--text-on-signal);padding:var(--space-5);display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-7)}
.cta-final__fact .d-s{font-size:clamp(26px,2.6vw,40px)}
.cta-final__call{background:var(--surface-page);color:var(--text-primary);padding:var(--space-5) var(--space-6);display:flex;flex-direction:column;gap:var(--space-5);align-items:flex-start}
@media (max-width:1024px){.cta-final__card{grid-template-columns:1fr}.cta-final__call{padding:var(--space-5)}}

/* ---------- Pricing page ---------- */
.picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:var(--space-5);align-items:stretch}
.picker__left{display:grid;gap:var(--space-4);align-content:start;background:var(--cm-black);border:var(--border-hair) solid var(--line-grid);padding:clamp(20px,3vw,32px)}
.picker__left > .label{color:var(--text-secondary)}
.picker__right{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));align-items:end;gap:20px;padding:clamp(20px,3vw,32px);background:var(--surface-signal);color:var(--text-on-signal)}
.picker__right .label-s{display:block}
.picker__right b{display:block;margin-top:var(--space-2);font-family:var(--font-display);font-stretch:var(--stretch-display);font-weight:var(--weight-display);font-size:56px;line-height:.9;letter-spacing:var(--tracking-display)}
.picker__right b small{font-family:var(--font-mono);font-stretch:100%;font-size:var(--type-label);font-weight:var(--weight-ui);letter-spacing:var(--tracking-label);margin-left:var(--space-2)}
.picker__right .btn{justify-self:start}
.includes-spec{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:var(--space-7);align-items:start}
.includes-spec__copy{display:grid;gap:var(--space-5)}
.includes-spec__copy > p{max-width:46ch;font-size:18px;line-height:1.5;color:var(--text-secondary)}
.includes{border-top:var(--border-hair) solid var(--line-grid)}
.includes li{display:flex;gap:var(--space-3);align-items:flex-start;padding:14px 0;border-bottom:var(--border-hair) solid var(--line-grid);font-size:var(--type-body);line-height:1.45}
.includes .icon{color:var(--text-signal);margin-top:2px}

/* ---------- Booking page ---------- */
.book{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--grid-gutter);align-items:start}
.book__col{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-6)}
.book__fs{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-4);min-width:0}
.book__fs legend{padding:0;margin-bottom:var(--space-4)}
.book__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.book__summary{position:sticky;top:calc(var(--header-h) + var(--space-5))}
.book__summary .stat-grid__head{background:var(--surface-page);color:var(--text-secondary);padding:0 0 var(--space-3)}
.stat-grid__total{grid-column:1/-1;display:flex;justify-content:space-between;align-items:flex-end;padding:var(--space-4);border-bottom:var(--border-hair) solid var(--line-on-data)}
.stat-grid__total .label-s{color:var(--text-on-data-secondary)}
.stat-grid__total strong{font-family:var(--font-display);font-stretch:var(--stretch-display);font-weight:var(--weight-display);font-size:clamp(48px,5vw,76px);line-height:.85;letter-spacing:var(--tracking-display)}
.stat-grid__pay{grid-column:1/-1;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}
.stat-grid__pay .btn{justify-content:space-between;text-align:left}
.stat-grid__pay p{color:var(--text-on-data-secondary)}
/* Promo code: a quiet link that opens a field; an applied code shows as a discount row */
.stat-grid__coupon{grid-column:1/-1;padding:var(--space-3) var(--space-4);border-bottom:var(--border-hair) solid var(--line-on-data);display:flex;flex-direction:column;gap:var(--space-2)}
.stat-grid__coupon .link-btn{align-self:flex-start;color:var(--text-on-data)}
.stat-grid__coupon-row{display:flex;gap:var(--space-2)}
.stat-grid__coupon-row .input{min-height:44px;text-transform:uppercase}
.stat-grid__coupon-row .btn{flex:none}
.stat-grid__coupon [data-coupon-msg]{color:var(--text-on-data)}
.stat-grid__coupon [data-coupon-msg]:empty{display:none}
.stat-grid__discount{grid-column:1/-1;display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:var(--border-hair) solid var(--line-on-data)}
.stat-grid__discount .label-s{color:var(--text-on-data-secondary)}
.stat-grid__discount strong{font-weight:var(--weight-ui)}
.stat-grid__discount .link-btn{margin-left:var(--space-2);color:var(--text-on-data-secondary)}
/* Fully booked: hovering the closed pay button says when the next start is */
.pay-gate{position:relative}
.pay-gate[data-tip]::after{content:attr(data-tip);position:absolute;left:0;right:0;bottom:calc(100% + var(--space-2));z-index:2;padding:var(--space-3) var(--space-4);background:var(--cm-black);color:var(--text-primary);font-size:var(--type-body-s);line-height:1.4;opacity:0;transform:translateY(4px);transition:opacity var(--dur-ui),transform var(--dur-ui);pointer-events:none}
.pay-gate[data-tip]:hover::after{opacity:1;transform:none}
.stat-grid__pay [data-next] b{color:var(--text-on-data)}
.link-btn{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.book-loc{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:var(--space-8);align-items:start}
.data-panel--mint{background:var(--surface-data);color:var(--text-on-data);border:0}
.data-panel--mint .data-panel__head{background:var(--surface-signal);color:var(--text-on-signal);border:0}
.data-panel--mint .data-panel__head .sq{background:var(--cm-black)}
.data-panel--mint .data-panel__head b,.data-panel--mint .data-panel__head .muted{color:var(--text-on-signal)}
.data-panel--mint .data-grid{background:var(--surface-data);grid-template-columns:repeat(2,minmax(0,1fr))}
.data-panel--mint .data-cell{background:var(--surface-data);border-color:var(--line-on-data);min-height:120px}
.data-panel--mint .data-cell::after{border-color:var(--text-on-data-secondary)}
.data-panel--mint .data-cell__label{color:var(--text-on-data-secondary)}
.data-panel--mint .data-cell__label i{color:var(--text-signal-on-data)}
@media (max-width:1024px){.book,.book-loc{grid-template-columns:1fr}.book__summary{position:static}.book__col{padding:var(--space-5)}.book__row{grid-template-columns:1fr}}

/* ---------- Location photos ---------- */
/* Two photos stacked on the right at 404x178; the first fills the full height beside them */
.photos{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--grid-gutter)}
.photo{margin:0;position:relative;background:var(--surface-well);border:var(--border-hair) solid var(--line-on-data);overflow:hidden}
.photo:not(.photo--1){aspect-ratio:404/178}
.photo--1{grid-row:1/3}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo__ph{position:absolute;inset:0;display:flex;align-items:flex-end;padding:var(--space-4);color:var(--text-secondary);background:repeating-linear-gradient(135deg,var(--surface-well) 0 12px,var(--cm-black) 12px 24px)}
@media (max-width:767px){.photos{grid-template-columns:1fr}.photo--1{grid-row:auto;aspect-ratio:16/10}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--grid-gutter);align-items:start}
.contact-grid__form{padding:var(--space-6)}
.contact-form{display:flex;flex-direction:column;gap:var(--space-5)}
.contact-grid__aside{display:flex;flex-direction:column;gap:var(--grid-gutter)}
.contact-grid__aside .aud{gap:var(--space-4)}
@media (max-width:1024px){.contact-grid{grid-template-columns:1fr}.contact-grid__form{padding:var(--space-5)}}

/* ---------- FAQ page ---------- */
.faq-group{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--space-6) var(--grid-gutter)}
.section--ruled .faq-group{border-top:var(--border-hair) solid var(--line-grid);padding-top:var(--space-4)}
.section--ruled .faq-group .faq{margin-top:var(--space-2)}
.faq-group > h2{padding-top:0}
@media (max-width:1024px){.faq-group{grid-template-columns:1fr}.faq-group > h2{padding-top:0}}

/* ---------- Long-form content (privacy, cookies, terms) ---------- */
.prose{max-width:72ch;color:var(--text-secondary)}
.prose h2,.prose h3{font-family:var(--font-display);font-stretch:var(--stretch-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-display);color:var(--text-primary);line-height:1;margin:var(--space-7) 0 var(--space-4)}
.prose h2{font-size:var(--type-display-m)}.prose h3{font-size:var(--type-display-s)}
.prose p,.prose ul,.prose ol{margin-bottom:var(--space-4)}
.prose ul{list-style:square;padding-left:var(--space-5)}.prose ol{list-style:decimal;padding-left:var(--space-5)}
.prose a{color:var(--text-primary);text-decoration:underline;text-underline-offset:3px}
/* Complianz documents (cookie policy): its "custom document CSS" can force black text; the class + id here outranks it */
.prose #cmplz-document,.prose #cmplz-document p,.prose #cmplz-document li,.prose #cmplz-document td{color:var(--text-secondary)}
.prose #cmplz-document h2,.prose #cmplz-document h3,.prose #cmplz-document h4,.prose #cmplz-document a{color:var(--text-primary)}

/* Hide ghost words from assistive tech and keep them from causing scroll */
.ghost{max-width:100vw}

/* Heading measures, so display type wraps like the design */
.measure{max-width:8em}
.cta-final__call .body-l{color:var(--text-secondary)}
.cta-final__call .label--muted,.cta-final__call .label{color:var(--text-secondary)}
.hero__card b{font-size:26px}
.hero .ghost{right:-5%;top:auto;bottom:-.06em;font-size:clamp(300px,42vw,680px);-webkit-text-stroke:1.5px var(--cm-grey-800);z-index:0}

.book__row--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.contact-loc{padding:var(--space-5);display:grid;gap:var(--space-4)}
.contact-loc .d-m{padding-bottom:var(--space-4);border-bottom:var(--border-hair) solid var(--line-grid)}
.contact-loc a{text-decoration:underline;text-decoration-color:var(--cm-orange);text-underline-offset:3px}
@media (max-width:1024px){.book__row--3{grid-template-columns:1fr}}

/* ---------- Password form (password.php) ---------- */
.pw{min-height:60vh;display:flex;align-items:center}
.pw .wrap{align-items:center}
.pw__card{width:min(100%,520px);display:flex;flex-direction:column;gap:var(--space-5);background:var(--surface-panel);border:var(--border-hair) solid var(--line-grid);padding:clamp(24px,4vw,48px)}
.pw__card > .label-s{display:flex;align-items:center;gap:var(--space-2)}
.pw__form{display:flex;flex-direction:column;gap:var(--space-5);align-items:flex-start}
.pw__form .field{width:100%}
