/* RADS motion layer — scroll-linked and staggered motion, modelled on Obsidian Assembly's system.
   Every rule is scoped to html.js-split, which is only added when reduced motion is off.
   Removing that class (or reduced motion) restores the static layout from styles.css / sections.css. */
:root{--f-cubic:cubic-bezier(.35,.35,0,1);--f-cubic-in:cubic-bezier(.69,0,0,1);--f-fast:cubic-bezier(.2,.75,.35,1);--f-smooth:cubic-bezier(.5,0,.3,1)}

/* ---------- Split text: characters (headings) ---------- */
.-s-word{display:inline-block;white-space:nowrap}
.-s-char{display:inline-block;transform-origin:0 100%}
.js-split .-splitted .-s-char{opacity:0;translate:0 .55em;rotate:calc(var(--char-random,5)*.9deg - 4deg)}
.js-split .-splitted.-inview .-s-char{opacity:1;translate:0 0;rotate:0deg;
  transition:translate 1.3s var(--f-cubic),rotate 1.3s var(--f-cubic),opacity .9s var(--f-cubic);
  transition-delay:calc(var(--char-index)*38ms + var(--l-delay,0)*1s)}
.js-split:not(.-loaded) .hero h1{opacity:0}

/* ---------- Split text: words grouped into lines (paragraphs) ---------- */
.js-split .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.12em .05em .2em;margin:-.12em -.05em -.2em}
.js-split .w>.wi{display:inline-block;translate:0 115%}
.js-split .has-words.-inview .w>.wi{translate:0 0;transition:translate 1.5s var(--f-cubic);
  transition-delay:calc(var(--line,0)*75ms + var(--l-delay,0)*1s + .1s)}

/* ---------- Fade-up blocks (.reveal) with sibling stagger ---------- */
.js-motion .reveal{transform:none;translate:0 1.6rem;
  transition:opacity 1.4s var(--f-cubic) calc(var(--l-delay,0)*1s),translate 1.4s var(--f-cubic) calc(var(--l-delay,0)*1s)}
.js-motion .reveal.visible{translate:0 0}

/* ---------- Media reveal + inner parallax ---------- */
.js-split .rev{clip-path:inset(0 0 100% 0)}
.js-split .rev.-inview{clip-path:inset(-2px);transition:clip-path 1.5s var(--f-cubic) calc(var(--rev-delay,0)*1s)}
.js-split .rev .media-center{translate:0 calc((.5 - var(--progress,.5))*60px)}

/* ---------- Page-load entrance (html.-loaded) ---------- */
.js-split .site-header{translate:0 -115%;transition:translate 1.5s var(--f-cubic) .5s}
.js-split.-loaded .site-header{translate:0 0}
.js-split .hero-media{clip-path:inset(100% 0 0 0);translate:0 calc(var(--progress,0)*75px);transition:clip-path 2.2s var(--f-cubic) .3s}
.js-split.-loaded .hero-media{clip-path:inset(0)}
.js-split .hero h1{translate:0 calc(var(--progress,0)*-55px)}
.js-split .hero-halo{scale:calc(1 + var(--progress,0)*.45);opacity:calc(1 - var(--progress,0)*.9)}
.js-split .floating-card{transform:none;opacity:0;scale:.7;transition:opacity 1.6s var(--f-cubic) 1.1s,scale 1.8s var(--f-cubic) 1.1s}
.js-split.-loaded .floating-card{opacity:1;scale:1}
.js-split .floating-left{rotate:calc(-12deg + var(--progress,0)*8deg);translate:calc(var(--mxn,0)*-16px) calc(var(--progress,0)*-48px + var(--myn,0)*-10px)}
.js-split .floating-right{rotate:calc(11deg - var(--progress,0)*8deg);translate:calc(var(--mxn,0)*20px) calc(var(--progress,0)*-80px + var(--myn,0)*-14px)}
.js-split .hero-meta span,.js-split .hero-bottom>p,.js-split .hero-bottom>.scroll-cue{opacity:0;translate:0 1.4rem;transition:opacity 1.5s var(--f-cubic),translate 1.5s var(--f-cubic)}
.js-split .hero-bottom>.light-button{opacity:0;scale:.92;transition:opacity 1.5s var(--f-cubic) 1.5s,scale 1.5s var(--f-cubic) 1.5s,background .25s,transform .25s}
.js-split.-loaded .hero-meta span,.js-split.-loaded .hero-bottom>p,.js-split.-loaded .hero-bottom>.scroll-cue{opacity:1;translate:0 0}
.js-split.-loaded .hero-bottom>.light-button{opacity:1;scale:1}
.js-split.-loaded .hero-meta span:nth-child(1){transition-delay:.9s}
.js-split.-loaded .hero-meta span:nth-child(2){transition-delay:1.05s}
.js-split.-loaded .hero-bottom>p{transition-delay:1.3s}
.js-split.-loaded .hero-bottom>.scroll-cue{transition-delay:1.7s}
.js-split .hero-trail path{stroke-dasharray:1;stroke-dashoffset:1}
.js-split.-loaded .hero-trail path{stroke-dashoffset:0;transition:stroke-dashoffset 3.6s var(--f-smooth) .5s}
.hero-media .spot{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:var(--spot,0);
  background:radial-gradient(circle at var(--sx,50%) var(--sy,35%),rgba(255,245,232,.42),transparent 46%)}

/* ---------- Scroll-linked ornaments ---------- */
.js-split .section-star{rotate:calc(var(--progress,0)*240deg)}
.js-split .little-star{rotate:calc(var(--progress,0)*300deg)}
.js-split .invitation-orbit{rotate:calc(-12deg + (var(--progress,.5) - .5)*30deg);scale:calc(.85 + var(--progress,.5)*.25)}
.js-split .dark-section,.js-split .invitation{--r:calc((1 - var(--enter,1))*7vw)}
.js-split .dark-section{border-radius:var(--r) var(--r) 0 0}
.js-split .disciplines{overflow:clip}

/* ---------- Marquee band ---------- */
.marquee{overflow:hidden;background:var(--ivory);color:var(--ink);border-bottom:1px solid var(--line);padding:30px 0 34px;user-select:none}
.marquee-move{display:flex;width:max-content;will-change:transform;font:300 clamp(46px,6.4vw,96px)/1 var(--serif);letter-spacing:-.045em;white-space:nowrap}
.marquee-part{display:flex;align-items:center;flex-shrink:0}
.marquee-part span{padding:0 .45em}
.marquee-part span:nth-child(4n+3){font-style:italic}
.marquee-part i{font-style:normal;font-size:.42em;color:#8e7e9a}

/* ---------- Letter-roll hover (buttons + links) ---------- */
.roll{display:inline-flex;overflow:hidden;vertical-align:bottom;white-space:pre;line-height:1.3}
.roll .-s-char{position:relative;height:1.3em;transition:translate .9s var(--f-cubic);transition-delay:0s}
.roll .-s-char:after{content:attr(data-c);position:absolute;left:0;top:0;translate:0 100%;scale:1.3;transform-origin:0 0;
  transition:scale .9s var(--f-cubic);transition-delay:0s}
:is(a,button):is(:hover,:focus-visible) .roll .-s-char{translate:0 -100%;transition-delay:calc(var(--char-index)*16ms)}
:is(a,button):is(:hover,:focus-visible) .roll .-s-char:after{scale:1;transition-delay:calc(var(--char-index)*16ms)}

/* ---------- Menu overlay: staggered character entrance ---------- */
.js-split .menu-dialog nav a .-s-char{opacity:0;translate:0 .8em;rotate:calc(var(--char-random,5)*.9deg)}
.js-split .menu-dialog.-inview nav a .-s-char{opacity:1;translate:0 0;rotate:0deg;
  transition:translate 1.2s var(--f-cubic),rotate 1.2s var(--f-cubic),opacity .8s var(--f-cubic);
  transition-delay:calc(var(--link,0)*110ms + var(--char-index)*24ms + .15s)}
.js-split .menu-dialog nav small{opacity:0;transition:opacity .8s var(--f-cubic)}
.js-split .menu-dialog.-inview nav small{opacity:1;transition-delay:.8s}

@media (max-width:899px){.js-split .rev .media-center{translate:none}}
@media (prefers-reduced-motion:reduce){.marquee-move{transform:none!important}}

/* ---------- Real photography in media slots ---------- */
.slot-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.media-slot.has-img:before{display:none}
.media-slot.has-img:after{background:linear-gradient(180deg,transparent 55%,rgba(34,26,40,.42));opacity:1}
.has-img>.media-center,.has-img>.slot-bottom{display:none}
.has-img>.slot-corner{display:none}
.js-split .rev .slot-img{scale:1.14;translate:0 calc((.5 - var(--progress,.5))*44px)}
.js-split .hero-media .slot-img{scale:calc(1.04 + var(--progress,0)*.12)}
.js-split .floating-card .slot-img{scale:1.06}
.has-img.community-media:hover .slot-img{scale:1.06;transition:scale 1.2s var(--f-cubic)}

/* ---------- RADS logo (vector, recolours with currentColor) ---------- */
.wordmark{display:block;line-height:0}
.logo-mark{display:block;width:clamp(104px,9vw,134px);aspect-ratio:595.986/256.477;background:currentColor;
  -webkit-mask:url(images/logo.svg) center/contain no-repeat;mask:url(images/logo.svg) center/contain no-repeat;
  transition:width .6s var(--f-cubic)}
.site-header.scrolled .logo-mark{width:100px}
.footer .logo-mark{width:clamp(130px,12vw,170px)}
.menu-dialog .logo-mark{width:120px}
@media(max-width:600px){.logo-mark{width:104px}.site-header.scrolled .logo-mark{width:88px}}

/* ---------- Hero film ---------- */
.hero-video{object-fit:cover;object-position:50% 40%;background:#4a3f52}
.film-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;z-index:2}
.film-placeholder>[hidden]{display:none!important}

/* ---------- Hero legibility: headline inverts to ivory where it crosses the film ---------- */
.js-split .hero-media{z-index:4}
.hero-media .hero-echo{color:#f6f0e6;z-index:3;margin:0;translate:0 calc(var(--progress,0)*-130px)}
.js-split .hero-media .hero-echo{translate:0 calc(var(--progress,0)*-130px)}
.js-split .hero-media:after{background:linear-gradient(180deg,rgba(20,15,26,.55),transparent 42%,transparent 62%,rgba(20,15,26,.5));opacity:1}
.hero{height:1075px}
.hero-bottom{bottom:30px}
.line-one{margin-left:-7%}.line-two{margin-left:7%}
@media(min-width:1700px){.hero{height:1190px}}
@media(max-width:900px){.hero{height:985px}}
@media(max-width:600px){.hero{height:905px}.line-one{margin-left:-8%}.line-two{margin-left:2%}}


/* ---------- Soft mesh-gradient background (replaces flat cream) ----------
   Variants: default "mist" (lavender / peach). Set <html data-bg="champagne"> for warm gold / blush. */
:root{--bg-base:#f4efe8;--bg-a:184,165,204;--bg-b:228,186,166;--bg-c:216,172,194;--bg-d:255,251,245}
html[data-bg=champagne]{--bg-base:#f6f0e4;--bg-a:226,198,148;--bg-b:234,188,174;--bg-c:204,190,168;--bg-d:255,252,242}
body{background:var(--bg-base)}
body::before{content:'';position:fixed;inset:-15%;z-index:-1;pointer-events:none;
  background:
   radial-gradient(48% 42% at 12% 10%,rgba(var(--bg-a),.46),transparent 70%),
   radial-gradient(42% 38% at 88% 28%,rgba(var(--bg-b),.40),transparent 70%),
   radial-gradient(50% 44% at 26% 72%,rgba(var(--bg-c),.32),transparent 70%),
   radial-gradient(40% 36% at 82% 92%,rgba(var(--bg-a),.34),transparent 70%),
   radial-gradient(62% 52% at 50% 50%,rgba(var(--bg-d),.72),transparent 76%);
  animation:bg-drift 42s ease-in-out infinite alternate;will-change:transform}
@keyframes bg-drift{from{transform:translate3d(-2%,-1%,0) scale(1)}to{transform:translate3d(3%,2%,0) scale(1.08)}}
.hero,.f-hero,.d-hero{background:linear-gradient(180deg,#b49c99 0%,#d8c8ba 22%,rgba(238,232,221,0) 72%)}
.marquee,.f-pillars{background:transparent}
.founder{background:rgba(200,184,214,.26)}
.site-header.scrolled{background:rgba(244,239,231,.78)}
@media(prefers-reduced-motion:reduce){body::before{animation:none}}

/* ---------- Home hero: video left, copy right ---------- */
.hero.hero-split{height:auto;min-height:max(100vh,780px);display:flex;align-items:center;padding:130px 6% 70px}
.hero-split .hero-halo{left:-8%;top:8%;width:62%;height:84%}
.hero-split .hero-trail{z-index:1;opacity:.4}
.hero-grid{position:relative;z-index:3;width:100%;max-width:1320px;margin:0 auto;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(40px,7vw,120px);align-items:center}
.hero.hero-split .hero-media{position:relative;top:auto;left:auto;transform:none;width:100%;max-width:600px;height:auto;aspect-ratio:5/5.7;justify-self:start;border-radius:999px 999px 6px 6px;z-index:4}
.js-split .hero.hero-split .hero-media{translate:0 calc(var(--progress,0)*36px)}
.hero.hero-split .hero-copy{position:relative;z-index:5;max-width:600px}
.hero-eyebrow{font-size:11px;letter-spacing:2px;margin-bottom:34px}
.hero.hero-split h1{position:relative;top:auto;left:auto;width:auto;text-align:left;font-size:clamp(70px,8.6vw,132px);line-height:.88;letter-spacing:-.06em;margin:0 0 30px;pointer-events:auto}
.hero.hero-split .line-one,.hero.hero-split .line-two{margin-left:0;margin-top:0}
.js-split .hero.hero-split h1{translate:0 calc(var(--progress,0)*-24px)}
.hero-lead{font:25px/1.3 var(--serif);letter-spacing:-.2px;max-width:470px;margin:0 0 38px}
.hero-ctas{display:flex;align-items:center;gap:34px;flex-wrap:wrap}
.hero-ctas .text-button{font-size:12px}
.hero-facts{list-style:none;padding:0;margin:52px 0 0;display:flex;flex-wrap:wrap;gap:10px 28px;font-size:10px;letter-spacing:1.6px;text-transform:uppercase;border-top:1px solid var(--line);padding-top:20px}
.hero-facts li{display:flex;align-items:center;gap:28px}
.hero-facts li+li:before{content:'✳';color:#8e7e9a;font-size:12px;margin-left:-6px}
.hero-foot{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:34px}
.hero-foot p{font:italic 21px var(--serif);margin:0}
.hero-foot .scroll-cue{margin:0}
.js-split .hero-copy>:not(h1){opacity:0;translate:0 1.4rem;transition:opacity 1.5s var(--f-cubic),translate 1.5s var(--f-cubic)}
.js-split.-loaded .hero-copy>:not(h1){opacity:1;translate:0 0}
.js-split.-loaded .hero-copy>:nth-child(1){transition-delay:.7s}
.js-split.-loaded .hero-copy>:nth-child(3){transition-delay:1.1s}
.js-split.-loaded .hero-copy>:nth-child(4){transition-delay:1.3s}
.js-split.-loaded .hero-copy>:nth-child(5){transition-delay:1.5s}
.js-split.-loaded .hero-copy>:nth-child(6){transition-delay:1.7s}
@media(max-width:900px){
  .hero.hero-split{padding:118px 6% 60px;min-height:0;align-items:flex-start}
  .hero-grid{grid-template-columns:1fr;gap:44px}
  .hero.hero-split .hero-copy{order:1;max-width:none}
  .hero.hero-split .hero-media{order:2;max-width:520px;justify-self:center}
  .hero.hero-split h1{font-size:clamp(64px,15vw,120px)}
  .hero-lead{font-size:22px}
}
@media(max-width:600px){
  .hero-eyebrow{margin-bottom:24px;font-size:10px}
  .hero-facts{margin-top:34px;gap:8px 18px;font-size:9px}
  .hero-facts li{gap:18px}
  .hero-foot{flex-direction:column;align-items:flex-start;gap:16px}
}
.hero-ctas .light-button{background:var(--plum);color:var(--ivory);box-shadow:0 18px 40px -22px rgba(41,35,47,.7)}
.hero-ctas .light-button:hover{background:#3a3144}
.hero-ctas .button-mark{color:var(--lavender)}
@media(max-width:600px){
  .hero-facts,.hero-foot{display:none}
  .hero-grid{gap:34px}
  .hero-lead{margin-bottom:28px}
  .hero.hero-split{padding-bottom:50px}
}

/* ---------- Bigger hero film ---------- */
.hero-grid{grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr);gap:clamp(36px,5vw,90px)}
.hero.hero-split .hero-media{max-width:760px;width:100%;height:auto;aspect-ratio:5/5.5}
.hero.hero-split h1{font-size:clamp(62px,7.1vw,110px)}
.hero-lead{font-size:23px}
.hero.hero-split .hero-copy{max-width:500px}
.hero.hero-split{padding-top:120px;padding-bottom:60px}
@media(max-width:900px){.hero.hero-split .hero-media{max-width:680px}}
.hero-facts{gap:8px 16px;letter-spacing:1.1px;font-size:9.5px}
.hero-facts li{gap:16px;white-space:nowrap}
.hero-facts li+li:before{margin-left:0}

/* ---------- Disciplines: "Find your rhythm" — 8 forms in a mosaic, centre tile expands ----------
   Base rules = fallback (phones, short screens, reduced motion): a tappable grid of tiles.
   The scroll scene below only runs with html.js-split on screens >=900x700. */
.rhythm{padding:85px 0 90px}
.rhythm-head{padding:0 6%;text-align:center}
.rhythm-head .grand-title{margin:34px 0 14px}
.rhythm-sub{margin:0;font-size:14px;line-height:1.8;color:#c9bdce}
.rhythm-core,.rhythm-ticks{display:none}
.rhythm-mosaic{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:50px 6% 0;max-width:1100px;margin:0 auto}
.rt{position:relative;display:block;aspect-ratio:4/5;padding:0;border:0;overflow:hidden;border-radius:6px;background:#3a3144;color:var(--ivory);cursor:pointer;text-align:left}
.rt img,.rt video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:scale 1.2s var(--f-cubic)}
.rt:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,10,18,.72),transparent 55%)}
.rt-label{position:absolute;z-index:1;left:14px;bottom:16px;font:500 11px var(--sans);letter-spacing:1.4px;text-transform:uppercase;padding-bottom:9px}
.rt-label:after{content:'';position:absolute;left:0;bottom:0;width:22px;height:1px;background:var(--ivory);transition:width .6s var(--f-cubic)}
.rt:hover img,.rt:hover video,.rt:focus-visible img,.rt:focus-visible video{scale:1.07}
.rt:hover .rt-label:after{width:100%}
.js-split .rp h3 .-s-char{opacity:1;translate:none;rotate:none}
.rp-copy h3{font:300 clamp(52px,12vw,84px)/.9 var(--serif);letter-spacing:-.05em;margin:16px 0 18px}
.rp-copy p{font-size:14px;line-height:1.8;color:#c9bdce;max-width:440px;margin:0 0 24px}
.rp-copy .light-button{background:var(--paper);color:var(--plum);min-width:0}
.rp-copy .button-mark{color:#8e7e9a}

@media (min-width:900px) and (min-height:700px){
  .js-split .rhythm{padding:0}
  .js-split .rhythm-track{--e:0;height:900vh;position:relative}
  .js-split .rhythm-stage{position:sticky;top:0;height:100vh;overflow:hidden}
  .js-split .rhythm-head{position:absolute;z-index:6;left:31vw;top:12vh;width:30vw;padding:0;text-align:left;
    opacity:calc(1 - var(--e)*1.6);translate:0 calc(var(--e)*-40px)}
  .js-split .rhythm-head .grand-title{font-size:clamp(44px,5.4vw,92px);line-height:.92;margin:16px 0 14px;text-align:left}
  .js-split .rhythm-sub{max-width:300px}
  .js-split .rhythm-mosaic{display:block;padding:0;max-width:none;margin:0}
  .js-split .rt{position:absolute;aspect-ratio:auto;border-radius:6px;
    opacity:calc(1 - var(--e)*1.35);translate:calc(var(--dx,0vw)*var(--e)) calc(var(--dy,0vh)*var(--e));scale:calc(1 - var(--e)*.07)}
  .js-split .rhythm-track.-open .rt{pointer-events:none}
  .js-split .rt:nth-child(1){left:2.4vw;top:24vh;width:12.8vw;height:33vh;--dx:-30vw;--dy:-4vh}
  .js-split .rt:nth-child(2){left:16.2vw;top:24vh;width:12.8vw;height:33vh;--dx:-22vw;--dy:-8vh}
  .js-split .rt:nth-child(3){left:2.4vw;top:58vh;width:12.8vw;height:33vh;--dx:-30vw;--dy:6vh}
  .js-split .rt:nth-child(4){left:16.2vw;top:58vh;width:12.8vw;height:33vh;--dx:-22vw;--dy:10vh}
  .js-split .rt:nth-child(5){left:75.6vw;top:24vh;width:10.5vw;height:33vh;--dx:22vw;--dy:-8vh}
  .js-split .rt:nth-child(6){left:87.1vw;top:24vh;width:10.5vw;height:33vh;--dx:30vw;--dy:-4vh}
  .js-split .rt:nth-child(7){left:75.6vw;top:58vh;width:22vw;height:33vh;--dx:26vw;--dy:8vh}
  .js-split .rt-label{left:12px;bottom:14px;font-size:10px}

  .js-split .rhythm-core{display:block;padding:0;position:absolute;z-index:3;overflow:hidden;
    top:calc(38vh*(1 - var(--e)));left:calc(31vw*(1 - var(--e)));right:calc(26.4vw*(1 - var(--e)));bottom:calc(26vh*(1 - var(--e)));
    border-radius:calc(8px*(1 - var(--e)))}
  .js-split .rp{position:absolute;inset:0;display:block;clip-path:inset(calc((1 - var(--r,1))*100%) 0 0 0)}
  .js-split .rp-img{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;border-radius:0;scale:calc(1.18 - var(--e)*.1)}
  .js-split .rp-shade{display:block;position:absolute;inset:0;
    background:linear-gradient(90deg,rgba(14,10,18,.8),rgba(14,10,18,.15) 62%,transparent),linear-gradient(0deg,rgba(14,10,18,.62),transparent 52%);
    opacity:calc(.25 + var(--e)*.75)}
  .js-split .rp-label{display:block;position:absolute;left:1.4vw;bottom:3vh;z-index:2;color:var(--ivory);
    font:300 clamp(22px,2.3vw,36px)/1 var(--serif);letter-spacing:-.03em;opacity:calc(1 - var(--e)*4)}
  .js-split .rp-copy{position:absolute;z-index:2;left:6vw;bottom:15vh;max-width:min(560px,40vw);opacity:var(--a,0);translate:0 calc((1 - var(--a,0))*44px)}
  .js-split .rp-copy h3{font-size:clamp(56px,7vw,116px);margin:18px 0 22px}
  .js-split .rp-copy p{color:#e4dae8;margin-bottom:28px}
  .js-split .rhythm-core .rp h3:not(.-inview) .-s-char{opacity:0;translate:0 .55em;rotate:calc(var(--char-random,5)*.9deg - 4deg)}

  .js-split .rhythm-ticks{display:flex;position:absolute;z-index:7;left:50%;bottom:4vh;translate:-50% 0;gap:12px;
    opacity:calc((var(--e) - .8)*5)}
  .rhythm-ticks button{position:relative;width:clamp(26px,3.4vw,52px);padding:14px 0;background:none}
  .rhythm-ticks button span{display:block;position:relative;height:2px;background:rgba(238,232,221,.28)}
  .rhythm-ticks button span:before{content:'';position:absolute;left:0;top:0;bottom:0;width:calc(var(--f,0)*100%);background:var(--ivory)}
  .rhythm-ticks button:disabled{pointer-events:none}
}

/* ---------- Hero film: rounded square + fade-in (no slide) ---------- */
.hero.hero-split .hero-media{border-radius:clamp(26px,3.2vw,48px);aspect-ratio:1/1;max-width:min(760px,calc(100svh - 150px))}
.js-split .hero.hero-split .hero-media{clip-path:none;opacity:0;scale:.95;
  transition:opacity 1.8s var(--f-cubic) .3s,scale 2.2s var(--f-cubic) .3s}
.js-split.-loaded .hero.hero-split .hero-media{opacity:1;scale:1}
.js-split .hero-copy>:not(h1){translate:none}
.js-split.-loaded .hero-copy>:not(h1){translate:none}
.js-split .hero h1 .-s-char{translate:none;rotate:none;filter:blur(12px)}
.js-split .hero h1.-inview .-s-char{filter:blur(0);
  transition:opacity 1.3s var(--f-cubic),filter 1.3s var(--f-cubic);
  transition-delay:calc(var(--char-index)*40ms + .2s)}
@media(max-width:900px){.hero.hero-split .hero-media{max-width:min(640px,100%)}}
@media (min-width:900px) and (min-height:700px){
  .js-split .rp{clip-path:none;opacity:var(--r,1)}
}

/* ---------- Hero layout ---------- */
.hero.hero-split{flex-direction:column;justify-content:center;gap:clamp(30px,4vh,52px)}
.hero.hero-split .hero-media{max-width:min(720px,calc(100svh - 270px))}
.hero.hero-split{padding-top:100px;padding-bottom:34px;gap:clamp(22px,3.4vh,36px)}
.hero.hero-split .hero-media{max-width:min(720px,calc(100svh - 300px))}
@media(max-width:900px){.hero.hero-split{padding-top:118px}.hero.hero-split .hero-media{max-width:min(640px,100%)}}
@media(max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:40px}
  .hero.hero-split .hero-media{max-width:min(640px,100%);justify-self:center}
}

/* ---------- Founder credentials card ---------- */
.credits{display:grid;grid-template-columns:repeat(3,1fr);max-width:1000px;margin:0 auto;border-radius:20px;overflow:hidden;
  background:rgba(255,255,255,.42);border:1px solid rgba(255,255,255,.7);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 30px 60px -44px rgba(41,35,47,.5)}
.credit{display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;padding:38px 24px 34px}
.credit+.credit{border-left:1px solid var(--line)}
.credit strong{font:400 clamp(44px,5vw,68px)/1 var(--serif);letter-spacing:-.03em}
.credit strong span{display:inline;font:inherit;letter-spacing:inherit;text-transform:none;color:inherit;max-width:none}
.credit>span{font-size:11px;letter-spacing:1.8px;line-height:1.8;text-transform:uppercase;color:#5b525e}
.credits-band{padding:70px 6% 20px}
.founder .credits{margin-top:90px}
@media(max-width:800px){
  .credits{grid-template-columns:1fr}
  .credit+.credit{border-left:0;border-top:1px solid var(--line)}
  .credit{padding:28px 20px 26px;gap:12px}
  .credits-band{padding:44px 6% 10px}
  .founder .credits{margin-top:56px}
}

/* ---------- Testimonials: three staggered cards with crossfading reviews ---------- */
.testimonials{padding-top:130px;padding-bottom:130px}
.t-head{text-align:center;margin-bottom:70px}
.t-head .eyebrow{margin-bottom:32px}
.t-wrap{position:relative;max-width:1320px;margin:0 auto}
.t-photos{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(220px,25vw,360px);gap:10px}
.t-photo{margin:0;overflow:hidden;border-radius:6px;background:#cfc3d3}
.t-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:scale 1.4s var(--f-cubic)}
.t-photo:hover img{scale:1.05}
.t-photo-1{grid-column:1/6}.t-photo-2{grid-column:6/9}.t-photo-3{grid-column:9/13}
.t-photo-4{grid-column:1/5}.t-photo-5{grid-column:5/9}.t-photo-6{grid-column:9/13}
.t-cards{position:absolute;z-index:2;inset:0;pointer-events:none}
.t-card{position:absolute;box-sizing:border-box;margin:0;pointer-events:auto;background:rgba(250,246,240,.97);border-radius:16px;padding:26px 28px 22px;
  box-shadow:0 40px 70px -40px rgba(41,35,47,.55);opacity:1;transition:opacity .55s ease}
.t-card.is-changing{opacity:0}
.t-card-1{left:2.2%;top:30%;width:25%}
.t-card-2{left:61%;top:5%;width:25.5%}
.t-card-3{left:50.5%;top:53%;width:27.5%}
.t-mark{display:block;font:400 54px/.7 var(--serif);color:#8e7e9a;margin-bottom:12px}
.t-card blockquote{margin:0}
.t-card p{margin:0;font-size:14.5px;line-height:1.75;color:#3a3340}
.t-card figcaption{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:11px;font-weight:500;letter-spacing:1.6px;color:#7d6a92}
@media(max-width:1100px){.t-card{padding:20px 22px 18px}.t-card p{font-size:13px;line-height:1.65}.t-mark{font-size:44px}}
@media(max-width:900px){
  .testimonials{padding-top:90px;padding-bottom:80px}
  .t-head{margin-bottom:44px}
  .t-photos{grid-template-columns:1fr 1fr;grid-auto-rows:clamp(160px,38vw,260px)}
  .t-photo-1,.t-photo-2,.t-photo-3,.t-photo-4,.t-photo-5,.t-photo-6{grid-column:auto}
  .t-cards{position:static;display:grid;gap:14px;margin-top:14px}
  .t-card,.t-card-1,.t-card-2,.t-card-3{position:static;width:auto;padding:26px 24px 22px}
  .t-card p{font-size:14.5px;line-height:1.75}
}
@media(prefers-reduced-motion:reduce){
  .t-card{transition:none}
}

/* ---------- Offerings: all rows visible, photo wipes in on scroll ---------- */
.offering-trigger{display:grid;grid-template-columns:34px 1fr;gap:14px;align-items:center;padding:30px 0 22px}
.offering-name{display:block;font:30px/1.05 var(--serif);letter-spacing:-.5px}
.offering-name small{display:inline-block;margin-left:10px;font:9px var(--sans);letter-spacing:1px;color:#75687c;vertical-align:middle}
.offering-by{display:block;margin-top:9px;font:italic 18px/1.2 var(--serif);color:#6b606c}
.offering-head{margin:0;font-weight:inherit}
.offering-inner{display:grid;grid-template-columns:1.1fr .9fr;gap:34px;align-items:center;padding:0 0 44px 48px}
.offering-media{margin:0;overflow:hidden;border-radius:10px;aspect-ratio:3/2;background:#cfc3d3}
.offering-media img{display:block;width:100%;height:100%;object-fit:cover;transition:scale 1.4s var(--f-cubic)}
.offering:hover .offering-media img{scale:1.05}
.offering-text p{margin:0 0 20px;font-size:14px;line-height:1.8}
.js-split .offering-media{clip-path:inset(0 100% 0 0)}
.js-split .offering.visible .offering-media{clip-path:inset(0);transition:clip-path 1.3s var(--f-cubic) .15s}
.js-split .offering-media img{scale:1.22}
.js-split .offering.visible .offering-media img{scale:1;transition:scale 2.2s var(--f-cubic) .15s}
.js-split .offering.visible:hover .offering-media img{scale:1.05;transition:scale 1.4s var(--f-cubic)}
.js-split .offering-text{opacity:0}
.js-split .offering.visible .offering-text{opacity:1;transition:opacity 1.1s var(--f-cubic) .55s}
@media(max-width:800px){
  .offering-inner{grid-template-columns:1fr;gap:20px;padding:0 0 34px 0}
  .offering-by{font-size:16px}
}

/* ---------- Offerings: three cards in one row ---------- */
.offerings{display:block;padding-top:130px;padding-bottom:130px}
.offerings-intro{margin-bottom:0}
.offering-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);padding-top:70px;max-width:1320px}
.offering{display:flex;flex-direction:column;border-top:0}
.offering:last-child{border-bottom:0}
.offering-panel,.offering-clip,.offering-inner{display:contents}
.offering-media{order:1;aspect-ratio:4/5;border-radius:12px}
.offering-head{order:2}
.offering-text{order:3}
.offering-trigger{grid-template-columns:auto 1fr;gap:14px;align-items:start;padding:26px 0 10px}
.offering-number{padding-top:9px}
.offering-text p{max-width:360px}
@media(max-width:900px){
  .offering-list{grid-template-columns:1fr;max-width:560px;padding-top:50px;gap:56px}
  .offering-media{aspect-ratio:4/3}
}

/* ---------- Testimonials: full-bleed mosaic ---------- */
.testimonials{padding-left:0;padding-right:0}
.t-head{padding:0 8%}
.t-wrap{max-width:none;width:100%}
.t-photos{gap:0;grid-auto-rows:clamp(240px,27vw,480px)}
.t-photo{border-radius:0}
@media(max-width:900px){
  .t-photos{grid-auto-rows:clamp(160px,38vw,260px)}
}

/* ---------- Rounded photo corners: What moves you, founder block, Better together ---------- */
.pathway-media,.founder-portrait,.founder-back,.community-media{border-radius:20px}
@media(max-width:600px){.pathway-media,.founder-portrait,.founder-back,.community-media{border-radius:14px}}

/* ---------- What moves you: steps sit directly under the philosophy ---------- */
.pathways{padding-top:0;padding-bottom:90px}
.pathways .pathway-grid{margin-top:0}
@media(max-width:600px){.pathways{padding-top:0;padding-bottom:60px}}

/* ---------- Hero: landscape film + breathing room under the header ---------- */
.hero.hero-split{padding-top:156px;padding-bottom:40px}
.hero.hero-split .hero-media{aspect-ratio:16/10;max-width:min(790px,calc((100svh - 350px)*1.6));border-radius:clamp(22px,2.4vw,36px)}
@media(max-width:900px){
  .hero.hero-split{padding-top:134px}
  .hero.hero-split .hero-media{max-width:min(640px,100%)}
}
@media(min-width:901px){
  .hero.hero-split{padding-top:146px;padding-bottom:36px}
  .hero.hero-split .hero-eyebrow{margin-bottom:26px}
  .hero.hero-split h1{margin-bottom:22px}
  .hero-lead{margin-bottom:30px}
  .hero-facts{margin-top:36px;padding-top:16px}
  .hero-foot{margin-top:22px}
}

/* ---------- Founder introduction ---------- */
.founder-copy .founder-name{font:400 clamp(58px,6vw,94px)/.88 var(--serif);letter-spacing:-.055em;margin:0 0 22px;text-wrap:balance}
.founder-copy .founder-name em{font-weight:300;color:#71567b}
.founder-copy .founder-roles{font-size:11px;line-height:1.5;letter-spacing:2.4px;font-weight:600;margin:0 0 34px;color:#705b6e}
.founder-story p{font-size:15px;line-height:1.8;max-width:490px;margin:0 0 20px}
.founder-story p:last-child{margin-bottom:0}
.founder-copy .founder-story+.underline-button{margin-top:32px}
@media(max-width:800px){.founder-copy .founder-name{font-size:clamp(52px,7vw,72px)}.founder-story p{font-size:14px}}
@media(max-width:600px){.founder-copy .founder-name{font-size:clamp(58px,13vw,78px)}.founder-copy .founder-roles{font-size:10px;letter-spacing:1.8px;margin-bottom:28px}}

/* ---------- Offerings: cards span the full content width on wide screens ---------- */
.offering-list{max-width:none;width:100%}
.offering-media{aspect-ratio:5/6}
@media(max-width:900px){.offering-media{aspect-ratio:4/3}}

/* ---------- Credentials card: keep three columns on tablets ---------- */
@media(min-width:601px) and (max-width:800px){
  .credits{grid-template-columns:repeat(3,1fr)}
  .credit+.credit{border-left:1px solid var(--line);border-top:0}
  .credit{padding:30px 14px 26px;gap:12px}
  .credit>span{font-size:10px;letter-spacing:1.4px}
}

/* ---------- One space: shared disciplines statement and homepage CTA ---------- */
.one-space{padding:85px 0 100px;text-align:center}
.one-space .grand-title{margin-bottom:30px}
.one-space-intro{max-width:430px;margin:0 auto;font-size:15px;line-height:1.8;color:#c9bdce}
.one-space-cta{padding-bottom:110px}
.one-space-cta .light-button{margin-top:36px}
@media(max-width:600px){
  .one-space{padding:55px 0 80px}
  .one-space .grand-title{font-size:15vw}
  .one-space-intro{padding:0 6%;font-size:14px}
  .one-space-cta .light-button{margin-top:30px}
}


/* ---------- Philosophy: prominent title + quoted line ---------- */
.intro{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:0;padding-top:110px;padding-bottom:120px}
.intro>.intro-title{display:flex;align-items:center;gap:22px;margin:0 0 48px;font:600 clamp(14px,1.45vw,19px)/1 var(--sans);letter-spacing:.34em;color:#5f4a78}
.intro>.intro-title:before,.intro>.intro-title:after{content:'';width:clamp(30px,6vw,90px);height:1px;background:currentColor;opacity:.55}
.intro .editorial{font-size:clamp(46px,7vw,108px);max-width:13em;margin:0 auto}
.intro .section-star{position:static;margin-top:46px;font-size:48px}
@media(max-width:600px){.intro{padding-top:80px;padding-bottom:80px}.intro>.intro-title{letter-spacing:.24em;gap:14px;margin-bottom:34px}.intro .section-star{margin-top:34px;font-size:36px}}

/* ---------- Testimonials: a quote under every photo ---------- */
.t-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;width:100%}
.t-item{margin:0;display:flex;flex-direction:column;background:rgba(250,246,240,.9);border-bottom:1px solid var(--line)}
.t-item .t-photo{aspect-ratio:4/3;overflow:hidden;border-radius:0}
.t-item .t-card{position:static;width:auto;flex:1;display:flex;flex-direction:column;margin:0;border-radius:0;border:0;box-shadow:none;background:transparent;
  -webkit-backdrop-filter:none;backdrop-filter:none;padding:26px 32px 28px}
.t-item .t-mark{margin-bottom:10px}
.t-item .t-card figcaption{margin-top:auto;padding-top:20px}
@media(max-width:1000px){.t-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.t-grid{grid-template-columns:1fr}.t-item .t-card{padding:22px 24px 24px}}

/* ---------- Closing CTA: readable button on the dark section ---------- */
.dark-section .light-button{color:var(--plum)}
.dark-section .light-button .button-mark{color:#8e7e9a}

/* ---------- Founder: align the name's left edge with the byline ---------- */
.founder-copy .founder-name{margin-left:-.036em}
.founder-copy .founder-roles{margin-left:0;padding-left:0}


/* ---------- Class enquiry form (Netlify Forms) ---------- */
.booking-dialog label input,.booking-dialog label textarea{display:block;width:100%;margin-top:8px;padding:12px 6px 12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font:inherit;font-size:16px}
.booking-dialog label textarea{resize:vertical;min-height:70px}
.booking-dialog label input:focus,.booking-dialog label textarea:focus{outline:0;border-bottom-color:var(--plum)}
.booking-dialog .opt{font-size:11px;color:#8a7f8e}
.booking-dialog .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.booking-dialog button.dark-button{width:100%;border:0;cursor:pointer;font:inherit;font-size:12px;letter-spacing:.5px;text-transform:uppercase}
.booking-dialog button.dark-button:disabled{opacity:.6;cursor:progress}
.booking-dialog .form-status{min-height:1.4em;margin:12px 0 0;font-size:13px;color:#8e3b3b}
.booking-dialog form>small a{text-decoration:underline}
.booking-dialog .form-success{display:none;text-align:left;padding:26px 0 8px;outline:0}
.booking-dialog .form-success h3{font:400 clamp(34px,6vw,48px)/1 var(--serif);letter-spacing:-1.2px;margin:14px 0 16px}
.booking-dialog .form-success h3 em{font-weight:300}
.booking-dialog .form-success p{font-size:14px;line-height:1.7;color:#6b606c;margin:0}
.booking-dialog form.is-sent>:not(.form-success){display:none}
.booking-dialog form.is-sent .form-success{display:block}
