:root{
  --color-ivory:     #F5EFE4;
  --color-cream:     #E7DDC6;
  --color-walnut:    #6E543F;
  --color-espresso:  #34271F;
  --color-deep-blue: #182746;

  --rgb-ivory:     245,239,228;
  --rgb-cream:     231,221,198;
  --rgb-walnut:    110,84,63;
  --rgb-espresso:  52,39,31;
  --rgb-deep-blue: 24,39,70;

  --font-display: "Cormorant Garamond", "Times New Roman", Georgia, serif;
  --font-text: "Manrope", "Segoe UI", system-ui, -apple-system, Arial, sans-serif;

  --fs-h1: clamp(40px, 5.2vw, 64px);
  --fs-h2: clamp(32px, 3.6vw, 44px);
  --fs-h3: clamp(24px, 2.2vw, 28px);
  --fs-body-lg: clamp(17px, 1.2vw, 18px);
  --fs-body: 16px;
  --fs-small: 14px;
  --fs-caption: 13px;

  --s-8: 8px;  --s-16: 16px; --s-24: 24px; --s-32: 32px;
  --s-48: 48px; --s-64: 64px; --s-96: 96px; --s-120: 120px;

  --section-y: clamp(72px, 8vw, 120px);
  --container: 1200px;
  --gutter: 24px;
  --header-h: 80px;
  --radius: 8px;
  --radius-sm: 6px;

  --line: 1px solid rgba(var(--rgb-walnut), .15);
  --ease: .25s ease;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  margin:0;
  background:var(--color-ivory);
  color:var(--color-espresso);
  font-family:var(--font-text);
  font-size:var(--fs-body);
  line-height:1.6;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
h1,h2,h3,h4,h5,h6{margin:0}
p{margin:0}
ul{margin:0;padding:0;list-style:none}

:focus-visible{
  outline:2px solid var(--color-deep-blue);
  outline-offset:2px;
  border-radius:2px;
}
.section--dark :focus-visible{outline-color:var(--color-cream)}

.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

.skip-link{
  position:absolute; left:var(--s-16); top:-100px; z-index:60;
  background:var(--color-deep-blue); color:var(--color-ivory);
  padding:12px 20px; border-radius:var(--radius-sm);
  font-size:var(--fs-small); text-decoration:none;
  transition:top var(--ease);
}
.skip-link:focus{top:var(--s-16)}

.h1,.h2,.h3{
  font-family:var(--font-display);
  font-weight:400;
  letter-spacing:-.01em;
  line-height:1.12;
}
.h1{font-size:var(--fs-h1);font-weight:300}
.h2{font-size:var(--fs-h2)}
.h3{font-size:var(--fs-h3);line-height:1.2}

.eyebrow{
  font-size:var(--fs-caption);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--color-walnut);
  margin-bottom:var(--s-16);
}
.lead{font-size:var(--fs-body-lg);color:var(--color-walnut);max-width:56ch}
.prose p{max-width:64ch}
.prose p + p{margin-top:var(--s-24)}
.muted{color:var(--color-walnut)}
.small{font-size:var(--fs-small)}
.caption{font-size:var(--fs-caption);color:var(--color-walnut)}

.section{padding-block:var(--section-y);scroll-margin-top:calc(var(--header-h) + 16px)}
.section--cream{background:var(--color-cream)}
.section--dark{background:var(--color-espresso);color:var(--color-ivory)}
.section--dark .eyebrow,
.section--dark .muted,
.section--dark .lead,
.section--dark .caption{color:var(--color-cream)}
.section__head{margin-bottom:var(--s-48)}
.section__head .lead{margin-top:var(--s-16)}

.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:var(--s-8);
  min-height:48px; padding:0 var(--s-32);
  border:1px solid transparent; border-radius:var(--radius-sm);
  background:none;
  font-size:15px; font-weight:500; letter-spacing:.02em;
  text-decoration:none; cursor:pointer;
  transition:background-color var(--ease), color var(--ease), border-color var(--ease);
}
.btn--primary{background:var(--color-deep-blue);color:var(--color-ivory)}
.btn--primary:hover{background:var(--color-espresso)}
.btn--secondary{border-color:var(--color-walnut);color:var(--color-espresso)}
.btn--secondary:hover{background:var(--color-cream)}
.section--cream .btn--secondary:hover{background:var(--color-ivory)}
.btn--ghost{padding:0;min-height:auto;color:var(--color-walnut);text-decoration:none;border-bottom:1px solid transparent}
.btn--ghost:hover{border-bottom-color:var(--color-walnut)}
.section--dark .btn--primary{background:var(--color-ivory);color:var(--color-espresso)}
.section--dark .btn--primary:hover{background:var(--color-cream)}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--s-16);margin-top:var(--s-32)}

.ph{
  position:relative;
  display:flex; align-items:flex-end;
  background:
    linear-gradient(135deg, rgba(var(--rgb-ivory), .9) 0%, rgba(var(--rgb-walnut), .22) 100%),
    var(--color-cream);
  border:var(--line);
  border-radius:var(--radius);
  overflow:hidden;
}
.ph__label{
  padding:var(--s-16);
  font-size:12px; font-weight:500;
  text-transform:uppercase; letter-spacing:.1em;
  color:var(--color-walnut);
}
.media{border-radius:var(--radius);overflow:hidden;background:var(--color-cream)}
.media img{width:100%;height:100%;object-fit:cover}

.card{
  background:var(--color-ivory);
  border:var(--line);
  border-radius:var(--radius);
  padding:var(--s-32);
}
.section--cream .card{background:var(--color-ivory)}
.section:not(.section--cream) .card{background:var(--color-cream)}

.header{
  position:sticky; top:0; z-index:40;
  height:var(--header-h);
  background:rgba(var(--rgb-ivory), .92);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  border-bottom:1px solid transparent;
  transition:border-color var(--ease), box-shadow var(--ease);
}
.header.is-scrolled{
  border-bottom-color:rgba(var(--rgb-walnut), .15);
  box-shadow:0 1px 24px rgba(var(--rgb-espresso), .05);
}
.header__inner{display:flex;align-items:center;gap:var(--s-32);height:100%}
.wordmark{text-decoration:none;display:block;line-height:1.05}
.wordmark__name{font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:-.01em}
.wordmark__role{
  display:block;margin-top:4px;
  font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--color-walnut);
}
.nav{margin-left:auto}
.nav__list{display:flex;gap:var(--s-32)}
.nav__link{
  position:relative;display:block;padding:8px 0;
  font-size:15px;text-decoration:none;color:var(--color-espresso);
  transition:color var(--ease);
}
.nav__link::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--color-deep-blue);
  transform:scaleX(0);transform-origin:left;
  transition:transform var(--ease);
}
.nav__link:hover{color:var(--color-walnut)}
.nav__link.is-active{color:var(--color-deep-blue)}
.nav__link.is-active::after{transform:scaleX(1)}
.header .btn{min-height:44px;padding:0 var(--s-24)}
.burger{
  display:none;margin-left:auto;
  width:44px;height:44px;padding:0;
  border:none;background:none;cursor:pointer;
}
.burger span{display:block;width:22px;height:1px;background:var(--color-espresso);margin:5px auto;transition:transform var(--ease), opacity var(--ease)}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

.mobile-menu{
  position:fixed;inset:var(--header-h) 0 0;z-index:39;
  background:var(--color-ivory);
  padding:var(--s-48) var(--gutter);
  display:flex;flex-direction:column;
  transform:translateY(-8px);opacity:0;visibility:hidden;
  transition:opacity var(--ease), transform var(--ease), visibility var(--ease);
}
.mobile-menu[hidden]{display:none}
.mobile-menu.is-open{opacity:1;transform:none;visibility:visible}
.mobile-menu a{
  font-family:var(--font-display);font-size:28px;text-decoration:none;
  padding:var(--s-16) 0;border-bottom:var(--line);
}
.mobile-menu .btn{margin-top:auto}

.hero{position:relative;padding-block:clamp(48px,6vw,96px) var(--section-y);overflow:hidden}
.hero__grid{display:grid;grid-template-columns:55fr 45fr;gap:clamp(32px,5vw,96px);align-items:center}
.hero__title{margin-block:var(--s-16) var(--s-24)}
.hero__facts{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-16);
  margin-top:var(--s-48);
  font-size:var(--fs-small);color:var(--color-walnut);
}
.hero__facts li{display:flex;align-items:center;gap:var(--s-16)}
.hero__facts li + li::before{content:"";width:1px;height:14px;background:rgba(var(--rgb-walnut), .3)}
.hero__media{position:relative}
.hero__media .media,.hero__media .ph{aspect-ratio:3/4}
.hero__blob{
  position:absolute;z-index:-1;
  top:-8%;right:-38%;width:78%;aspect-ratio:1/1;
  background:var(--color-cream);
  border-radius:var(--radius);
}

.about__grid{display:grid;grid-template-columns:45fr 55fr;gap:clamp(32px,5vw,96px);align-items:start}
.about__media .media{aspect-ratio:1/1}
.about__details{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);margin-top:var(--s-16)}
.about__details .media{aspect-ratio:1/1}
.services{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-32);margin-top:var(--s-48)}
.service__title{font-size:16px;font-weight:600;margin-bottom:var(--s-8)}
.service__text{font-size:var(--fs-small);color:var(--color-walnut)}
.about .btn-row{margin-top:var(--s-48)}

.works__stage-wrap{max-width:760px;margin-inline:auto}
.ba{
  position:relative;
  aspect-ratio:4/5;
  border-radius:var(--radius);
  overflow:hidden;
  border:var(--line);
  touch-action:pan-y;
  cursor:ew-resize;
  --pos:50%;
}
.ba__layer{position:absolute;inset:0}
.ba__layer .ph,.ba__layer .media{width:100%;height:100%;border:0;border-radius:0}
.ba__layer .media img{width:100%;height:100%;object-fit:cover}
.ba__layer--before{clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.ba__tag{
  position:absolute;top:var(--s-16);
  padding:6px 12px;border-radius:4px;
  background:rgba(var(--rgb-espresso), .72);
  color:var(--color-ivory);
  font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;
}
.ba__tag--before{left:var(--s-16)}
.ba__tag--after{right:var(--s-16)}
.ba__divider{
  position:absolute;top:0;bottom:0;left:var(--pos);
  width:1px;background:var(--color-ivory);
  transform:translateX(-.5px);
  pointer-events:none;
}
.ba__handle{
  position:absolute;top:50%;left:var(--pos);
  width:48px;height:48px;margin:-24px 0 0 -24px;
  display:flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid rgba(var(--rgb-ivory), .8);
  border-radius:50%;
  background:rgba(var(--rgb-espresso), .55);
  color:var(--color-ivory);
  cursor:ew-resize;
  transition:background-color var(--ease);
}
.ba__handle:hover{background:rgba(var(--rgb-espresso), .75)}
.ba__handle svg{width:8px;height:12px;fill:currentColor}
.works__caption{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-16);
  margin-top:var(--s-16);
}
.thumbs{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(120px,1fr);
  gap:var(--s-16);margin-top:var(--s-32);
}
.thumb{
  padding:0;border:1px solid transparent;border-radius:var(--radius);
  background:none;cursor:pointer;overflow:hidden;
  transition:border-color var(--ease), opacity var(--ease);
  opacity:.7;
}
.thumb:hover{opacity:1}
.thumb[aria-pressed="true"]{border-color:var(--color-deep-blue);opacity:1}
.thumb .ph,.thumb .media{aspect-ratio:3/4;border-radius:0;border:0;width:100%}
.thumb .ph__label{font-size:11px;padding:var(--s-8)}

.reviews__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-32)}
.review__text{
  font-family:var(--font-display);font-size:20px;font-style:italic;
  line-height:1.45;letter-spacing:-.01em;
}
.review__sep{height:1px;background:rgba(var(--rgb-walnut), .2);margin-block:var(--s-24)}
.review__name{font-size:15px;font-weight:600}
.review__meta{font-size:var(--fs-caption);color:var(--color-walnut);margin-top:4px}

.location__grid{display:grid;grid-template-columns:60fr 40fr;gap:clamp(32px,5vw,64px);align-items:center}
.map{
  position:relative;aspect-ratio:16/9;
  border-radius:var(--radius);overflow:hidden;border:var(--line);
  background:
    repeating-linear-gradient(0deg, transparent 0 47px, rgba(var(--rgb-walnut), .12) 47px 48px),
    repeating-linear-gradient(90deg, transparent 0 63px, rgba(var(--rgb-walnut), .12) 63px 64px),
    linear-gradient(115deg, transparent calc(50% - 5px), rgba(var(--rgb-walnut), .16) calc(50% - 5px) calc(50% + 5px), transparent calc(50% + 5px)),
    var(--color-cream);
}
.map__pin{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-100%);
  width:20px;height:20px;border-radius:50% 50% 50% 0;
  background:var(--color-deep-blue);rotate:-45deg;
}
.map__pin::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--color-ivory)}
.map__note{
  position:absolute;left:var(--s-16);bottom:var(--s-16);
  font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-walnut);
}
.info-list{margin-top:var(--s-24)}
.info-list li,.info-list > div{display:flex;gap:var(--s-16);padding-block:10px;border-bottom:var(--line)}
.info-list dt,.info-list__key{flex:0 0 132px;font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.1em;color:var(--color-walnut)}

.booking{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-24)}
.booking--row{flex-direction:row;flex-wrap:wrap;align-items:center}
.booking .btn--primary{min-height:56px;padding:0 var(--s-48);font-size:16px}
.booking__note{font-size:var(--fs-small);max-width:44ch}
.section--dark .booking__note{color:var(--color-cream)}
.section--dark .btn--secondary{border-color:rgba(var(--rgb-cream), .5);color:var(--color-ivory)}
.section--dark .btn--secondary:hover{background:var(--color-cream);color:var(--color-espresso)}

.contacts__grid{display:grid;grid-template-columns:55fr 45fr;gap:clamp(32px,5vw,96px);align-items:start}
.contacts__list li{padding-block:14px;border-bottom:1px solid rgba(var(--rgb-cream), .2)}
.contacts__list a,.contacts__list span{text-decoration:none;text-underline-offset:4px;transition:text-decoration-color var(--ease)}
.contacts__list a:hover{text-decoration:underline}
.contacts__key{display:block;font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.1em;color:var(--color-cream);margin-bottom:4px}
.contacts__aside{margin-top:var(--s-32);border-radius:var(--radius);overflow:hidden}
.contacts__aside img{width:100%;aspect-ratio:1/1;object-fit:cover}

.footer{background:var(--color-deep-blue);color:rgba(var(--rgb-ivory), .8);padding-block:var(--s-64) var(--s-32)}
.footer a{text-decoration:none;transition:color var(--ease)}
.footer a:hover{color:var(--color-ivory)}
.footer__grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--s-48)}
.footer .wordmark__name{color:var(--color-ivory)}
.footer .wordmark__role{color:rgba(var(--rgb-ivory), .6)}
.footer__title{font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.14em;color:rgba(var(--rgb-ivory), .6);margin-bottom:var(--s-16)}
.footer__list li{padding-block:6px;font-size:var(--fs-small)}
.footer__bottom{
  display:flex;flex-wrap:wrap;gap:var(--s-16);justify-content:space-between;
  margin-top:var(--s-64);padding-top:var(--s-24);
  border-top:1px solid rgba(var(--rgb-ivory), .15);
  font-size:var(--fs-caption);color:rgba(var(--rgb-ivory), .6);
}
.footer__bottom nav{display:flex;gap:var(--s-24)}

.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease, transform .6s ease}
.js .reveal.is-visible{opacity:1;transform:none}

@media (max-width:1200px){
  .nav__list{gap:var(--s-24)}
}
@media (max-width:900px){
  .wordmark{display:inline-flex;flex-direction:column;justify-content:center;min-height:44px}
  .contacts__list a,
  .footer__list a,
  .footer__bottom nav a{display:inline-flex;align-items:center;min-height:44px}
  .footer__list li{padding-block:0}

  .nav,.header .btn{display:none}
  .burger{display:block}
  .hero__grid,.about__grid,.location__grid,.contacts__grid{grid-template-columns:1fr}
  .hero__media{order:2;max-width:420px}
  .hero__blob{display:none}
  .reviews__grid{
    grid-auto-flow:column;grid-auto-columns:minmax(280px,80%);
    grid-template-columns:none;
    overflow-x:auto;scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);
    scrollbar-width:none;
  }
  .reviews__grid::-webkit-scrollbar{display:none}
  .reviews__grid > *{scroll-snap-align:start}
  .footer__grid{grid-template-columns:1fr 1fr;gap:var(--s-32)}
  .thumbs{
    grid-auto-columns:minmax(104px,1fr);
    overflow-x:auto;scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);
    scrollbar-width:none;
  }
  .thumbs::-webkit-scrollbar{display:none}
  .thumb{scroll-snap-align:start}
}
@media (max-width:600px){
  :root{--gutter:16px}
  .btn{min-height:52px;width:100%}
  .header .btn,.btn--ghost,.thumb,.burger{width:auto}
  .btn-row .btn--ghost{width:auto}
  .btn-row .btn{width:100%}
  .hero__facts{flex-direction:column;align-items:flex-start;gap:var(--s-8)}
  .hero__facts li + li::before{display:none}
  .services{grid-template-columns:1fr;gap:var(--s-24)}
  .about__details{max-width:none}
  .footer__grid{grid-template-columns:1fr}
  .info-list li,.info-list > div{flex-direction:column;gap:2px}
  .info-list__key{flex-basis:auto}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
  .js .reveal{opacity:1;transform:none}
}

.training-hero{padding-block:clamp(56px,7vw,96px) var(--section-y)}
.training-hero .lead{margin-top:var(--s-24)}

.courses{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-32)}
.course{display:flex;flex-direction:column;padding:0;overflow:hidden}
.course__media{aspect-ratio:4/3;border-radius:0}
.course__body{display:flex;flex-direction:column;flex:1;padding:var(--s-32)}
.course__meta{
  display:flex;flex-wrap:wrap;gap:var(--s-16);margin-block:var(--s-16);
  font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.1em;color:var(--color-walnut);
}
.course__meta li{display:flex;align-items:center;gap:var(--s-16)}
.course__meta li + li::before{content:"";width:1px;height:12px;background:rgba(var(--rgb-walnut), .3)}
.course__text{font-size:var(--fs-small);color:var(--color-walnut)}
.course__foot{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-16);
  margin-top:auto;padding-top:var(--s-32);border-top:var(--line);
}
.course__price{font-family:var(--font-display);font-size:var(--fs-h3);letter-spacing:-.01em}

.steps__grid{display:grid;grid-template-columns:40fr 60fr;gap:clamp(32px,5vw,96px);align-items:center}
.steps__media .media{aspect-ratio:3/4}
.step{display:grid;grid-template-columns:88px 1fr;gap:var(--s-24);padding-block:var(--s-32);border-bottom:var(--line)}
.step:first-child{padding-top:0}
.step:last-child{border-bottom:0;padding-bottom:0}
.step__num{font-family:var(--font-display);font-size:48px;font-weight:300;line-height:.9;color:var(--color-walnut)}

.step__title{font-size:16px;font-weight:600;margin-bottom:var(--s-8)}
.step__text{font-size:var(--fs-small);color:var(--color-walnut)}

.cta__grid{display:grid;grid-template-columns:45fr 55fr;gap:clamp(32px,5vw,96px);align-items:start}

@media (max-width:900px){
  .courses{grid-template-columns:1fr}
  .steps__grid,.cta__grid{grid-template-columns:1fr}
  .steps__media{max-width:420px}
}
@media (max-width:600px){
  .step{grid-template-columns:56px 1fr;gap:var(--s-16)}
  .step__num{font-size:36px}
}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.legal{max-width:760px}
.legal__updated{margin-top:var(--s-16)}
.legal__body{margin-top:var(--s-48)}
.legal__body h2{margin:var(--s-48) 0 var(--s-16)}
.legal__body h2:first-child{margin-top:0}
.legal__body p + p{margin-top:var(--s-16)}
