@font-face{font-family:Inter;src:url(fonts/inter-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{--ink:#23252b;--wall:#3a3f47;--blush:#fbe3e8;--blush-2:#f6ccd6;--magenta:#b3068f;--hot:#e61ec8;--violet:#4a2fbd;--white:#fff;--line:#e6dfe2;--muted:#5c5f68;--measure:62ch}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font:400 1.0625rem/1.6 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--white);font-feature-settings:"cv11","ss03"}
img{max-width:100%;height:auto;display:block}
a{color:var(--magenta)}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
h1,h2,h3{line-height:1.08;letter-spacing:-.03em;font-weight:800;margin:0 0 .5em;text-wrap:balance}
h1{font-size:clamp(2.6rem,7vw,5.25rem);letter-spacing:-.045em;line-height:.98}
h2{font-size:clamp(1.9rem,4vw,3rem)}
h3{font-size:1.3rem;letter-spacing:-.02em;line-height:1.2}
p{margin:0 0 1em;max-width:var(--measure)}
.wrap{width:min(1180px,100% - 40px);margin-inline:auto}
.skip{position:absolute;left:-999px;background:#fff;padding:.6em 1em;z-index:50}.skip:focus{left:12px;top:12px}
.btn{display:inline-block;background:var(--magenta);color:#fff;font-weight:700;text-decoration:none;padding:.8em 1.35em;border:2px solid var(--magenta);border-radius:4px;font-size:1rem;cursor:pointer;font-family:inherit}
.btn:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff}
.btn.light{background:#fff;color:var(--ink);border-color:#fff}
.btn.light:hover{background:var(--blush-2);border-color:var(--blush-2);color:var(--ink)}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.5rem}

/* header */
.top{background:#fff;position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:84px}
.logo img{height:68px;width:auto}
.nav{display:flex;align-items:center;gap:4px}
.nav ul{list-style:none;margin:0;padding:0}
.nav>ul{display:flex;align-items:center;gap:2px}
.nav li{position:relative}
.nav a.l,.nav button.l{display:block;padding:.55em .8em;color:var(--ink);text-decoration:none;font:600 .98rem/1.3 Inter,system-ui,sans-serif;background:none;border:0;cursor:pointer;border-radius:4px}
.nav a.l:hover,.nav button.l:hover,.nav a[aria-current=page]{color:var(--magenta)}
.nav .sub{position:absolute;left:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:4px;min-width:190px;padding:6px;display:none;box-shadow:0 10px 24px rgba(58,63,71,.14)}
.nav li:hover>.sub,.nav li:focus-within>.sub{display:block}
.nav .reg{margin-left:10px}
.menu{display:none;background:none;border:2px solid var(--ink);border-radius:4px;padding:.45em .8em;font:700 .95rem Inter,sans-serif;color:var(--ink);cursor:pointer}
@media(max-width:940px){
 .top .wrap{min-height:70px}.logo img{height:54px}
 .menu{display:block}
 .nav{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line);padding:10px 20px 20px;max-height:calc(100vh - 70px);overflow:auto}
 .nav.open{display:block}
 .nav>ul{display:block}
 .nav .sub{display:block;position:static;border:0;box-shadow:none;padding:0 0 0 14px;min-width:0}
 .nav button.l{font-weight:800;padding-left:.8em;cursor:default}
 .nav a.l{padding:.7em .8em}
 .nav .reg{margin:12px 0 0;display:block;text-align:center}
}

/* hero */
.hero{background:var(--blush);overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);gap:48px;align-items:center;padding-block:clamp(36px,5vw,64px)}
.hero h1{font-size:clamp(3rem,7.4vw,6rem)}
.hero p{font-size:1.2rem;max-width:30em}
.hero figure{margin:0}
.hero img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px}
.hero figcaption{font-size:.9rem;color:var(--wall);margin-top:.5em}
@media(max-width:860px){.hero .wrap{grid-template-columns:1fr;gap:28px}}

/* keyboard */
.board{background:#000;padding:0 0 14px}
.keys{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;background:#000;padding:0 3px;margin:0 auto;max-width:1400px;position:relative}
.key{position:relative;height:clamp(200px,24vw,270px);border:0;background:#fff;color:var(--ink);border-radius:0 0 6px 6px;cursor:pointer;font:700 clamp(.9rem,1.3vw,1.1rem)/1.15 Inter,sans-serif;letter-spacing:-.01em;display:flex;align-items:flex-end;justify-content:center;padding:0 6px 16px;text-align:center;transition:transform .12s ease,background .12s ease;transform-origin:top}
.key:hover{background:var(--blush)}
.key[aria-selected=true]{background:var(--hot);color:#000;transform:scaleY(1.012)}
.key:nth-child(1)::after,.key:nth-child(2)::after,.key:nth-child(4)::after,.key:nth-child(5)::after,.key:nth-child(6)::after{content:"";position:absolute;top:0;right:-31%;width:58%;height:56%;background:#000;border-radius:0 0 5px 5px;z-index:2;pointer-events:none;box-shadow:inset 0 -9px 0 #2b2b30}
.keyhint{color:#fff;max-width:1400px;margin:0 auto;padding:12px 20px 0;font-size:.95rem;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.keyhint p{margin:0;max-width:none}
.keyhint button{background:none;border:0;color:#fff;text-decoration:underline;font:inherit;cursor:pointer;padding:0}
@media(max-width:760px){
 .key{height:250px;writing-mode:vertical-rl;transform-origin:top;align-items:center;justify-content:flex-end;padding:0 0 14px;font-size:.95rem}
 .key span{transform:rotate(180deg)}
 .key:nth-child(1)::after,.key:nth-child(2)::after,.key:nth-child(4)::after,.key:nth-child(5)::after,.key:nth-child(6)::after{height:38%}
}
.panel{background:#fff}
.panel-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:48px;align-items:center;padding-block:clamp(36px,5vw,64px)}
.panel img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px}
.panel[hidden]{display:none}
@media(max-width:760px){.panel-in{grid-template-columns:1fr;gap:22px}}

/* sections */
.sec{padding-block:clamp(52px,8vw,104px)}
.sec.blush{background:var(--blush)}
.sec.wall{background:var(--wall);color:#fff}
.sec.wall a{color:#fff}
.sec.wall a.btn.light{color:var(--ink)}
.sec.wall a.btn.light:hover{color:var(--ink)}
.sec.violet{background:var(--violet);color:#fff}
.sec.tight{padding-top:0}
.lead{font-size:1.2rem}
.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,72px);align-items:center}
.split.top-a{align-items:start}
.split img{width:100%;border-radius:4px}
@media(max-width:820px){.split{grid-template-columns:1fr}.split .first-m{order:-1}}
.pagehead{background:var(--blush);padding-block:clamp(40px,6vw,76px)}
.pagehead h1{margin-bottom:.3em}
.pagehead p{font-size:1.2rem;margin-bottom:0}

/* legacy timeline */
.line{list-style:none;margin:2rem 0 0;padding:0}
.line li{display:grid;grid-template-columns:5.5rem 1fr;gap:16px;padding:1rem 0;border-top:1px solid rgba(255,255,255,.28)}
.line.dark li{border-top-color:var(--line)}
.line b{font-size:1.5rem;letter-spacing:-.03em;font-weight:800}
.line p{margin:0}

/* check list */
.plain{list-style:none;margin:0;padding:0}
.plain li{padding:.7rem 0;border-top:1px solid var(--line);font-weight:500}
.plain li:last-child{border-bottom:1px solid var(--line)}
.sec.blush .plain li{border-color:var(--blush-2)}

/* quotes */
.bigq{font-size:clamp(1.5rem,3.2vw,2.5rem);line-height:1.2;letter-spacing:-.025em;font-weight:700;margin:0 0 .6em;max-width:24em}
.quotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;margin-top:2.5rem}
.quotes blockquote{margin:0}
.quotes p{margin-bottom:.5em}
.quotes cite{font-style:normal;font-weight:700}
.quotes.dark{border-top:1px solid var(--line);padding-top:2rem}
@media(max-width:820px){.quotes{grid-template-columns:1fr}}

/* offers */
.offers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.offer{position:relative;display:block;color:#fff;text-decoration:none;overflow:hidden;background:#000;min-height:430px}
.offer img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72}
.offer:hover img{opacity:.55}
.offer div{position:absolute;left:0;right:0;bottom:0;padding:28px;background:linear-gradient(transparent,rgba(0,0,0,.72))}
.offer h2{margin-bottom:.2em}.offer p{margin:0}
.offer:hover{color:#fff}
@media(max-width:760px){.offers{grid-template-columns:1fr}.offer{min-height:340px}}

/* classes list */
.class{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:clamp(24px,4vw,56px);align-items:center;padding-block:32px;border-top:1px solid var(--line);scroll-margin-top:100px}
.class img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:4px}
@media(max-width:700px){.class{grid-template-columns:1fr}}

/* teachers */
.people{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 28px;margin:0 auto;padding:0;list-style:none;max-width:940px}
.people img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 22%;border-radius:4px;margin-bottom:.7rem}
.people b{display:block;font-size:1.12rem;letter-spacing:-.02em}
.people span{color:var(--muted)}
@media(max-width:700px){.people{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* prices */
.price{width:100%;border-collapse:collapse;font-size:1.05rem}
.price th,.price td{text-align:left;padding:.85rem .5rem;border-bottom:1px solid var(--line)}
.price th{font-weight:600;color:var(--muted);font-size:.95rem}
.price td.n,.price th.n{text-align:right;font-variant-numeric:tabular-nums}
.price tbody tr:first-child td{font-weight:700}
.tile{background:#fff;padding:24px;border-radius:4px}
.tile h3{margin-bottom:.35em}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:1.5rem}
.tile p:last-child{margin:0}
@media(max-width:820px){.tiles{grid-template-columns:1fr}}
.figure{font-size:clamp(3.2rem,8vw,5.5rem);font-weight:800;letter-spacing:-.05em;line-height:1;margin:0 0 .15em}

/* photos */
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.grid3 img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover}
.grid3 .wide{grid-column:span 2}
@media(max-width:640px){.grid3{grid-template-columns:repeat(2,minmax(0,1fr))}}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.filters button{font:600 .98rem Inter,sans-serif;padding:.5em 1em;border:2px solid var(--ink);background:#fff;color:var(--ink);border-radius:4px;cursor:pointer}
.filters button[aria-pressed=true]{background:var(--ink);color:#fff}
.gal{columns:4 220px;column-gap:6px}
.gal button{display:block;width:100%;border:0;padding:0;margin:0 0 6px;background:var(--blush);cursor:zoom-in;break-inside:avoid}
.gal img{width:100%}
dialog.lb{border:0;padding:0;background:transparent;max-width:94vw;max-height:94vh}
dialog.lb::backdrop{background:rgba(0,0,0,.88)}
dialog.lb img{max-width:94vw;max-height:84vh;width:auto}
.lb-bar{display:flex;justify-content:space-between;gap:8px;padding-top:8px}
.lb-bar button{background:#fff;border:0;padding:.5em 1em;font:600 .95rem Inter,sans-serif;border-radius:4px;cursor:pointer}

/* season */
.season{list-style:none;margin:0;padding:0;counter-reset:none}
.season li{display:grid;grid-template-columns:10rem 1fr;gap:20px;padding:1.15rem 0;border-top:1px solid var(--line)}
.season b{font-weight:800;letter-spacing:-.02em;font-size:1.1rem}
.season p{margin:0}
@media(max-width:600px){.season li{grid-template-columns:1fr;gap:4px}}

/* faq */
details.q{border-top:1px solid var(--line);padding:.95rem 0}
details.q:last-of-type{border-bottom:1px solid var(--line)}
details.q summary{font-weight:700;cursor:pointer;font-size:1.08rem}
details.q p{margin:.6rem 0 0}

/* form */
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.form label{display:block;font-weight:600;font-size:.97rem}
.form .full{grid-column:1/-1}
.form input,.form select,.form textarea{display:block;width:100%;margin-top:6px;padding:.7em .75em;font:400 1rem Inter,sans-serif;border:1.5px solid #8b8e96;border-radius:4px;background:#fff;color:var(--ink)}
.form fieldset{border:0;padding:0;margin:0}
.form legend{font-weight:600;font-size:.97rem;padding:0;margin-bottom:6px}
.checks{display:flex;flex-wrap:wrap;gap:8px 18px}
.checks label{display:flex;gap:7px;align-items:center;font-weight:500}
.checks input{width:auto;margin:0}
.note{font-weight:600;color:var(--magenta);min-height:1.5em;margin:0}
@media(max-width:560px){.form{grid-template-columns:1fr}}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{counter-increment:s;display:grid;grid-template-columns:2.4rem 1fr;gap:10px;padding:.9rem 0;border-top:1px solid var(--blush-2)}
.steps li::before{content:counter(s);font-weight:800;font-size:1.5rem;letter-spacing:-.03em;color:var(--magenta);line-height:1.2}
.map{width:100%;height:380px;border:0;display:block;border-radius:4px}

/* footer */
.ivory{height:44px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='168' height='44'%3E%3Crect width='168' height='44' fill='%23fff'/%3E%3Cg fill='%23000'%3E%3Crect x='17' width='14' height='27'/%3E%3Crect x='41' width='14' height='27'/%3E%3Crect x='89' width='14' height='27'/%3E%3Crect x='113' width='14' height='27'/%3E%3Crect x='137' width='14' height='27'/%3E%3Crect x='23' width='2' height='44'/%3E%3Crect x='47' width='2' height='44'/%3E%3Crect x='71' width='2' height='44'/%3E%3Crect x='95' width='2' height='44'/%3E%3Crect x='119' width='2' height='44'/%3E%3Crect x='143' width='2' height='44'/%3E%3Crect x='167' width='1' height='44'/%3E%3C/g%3E%3C/svg%3E") repeat-x;border-top:3px solid #000}
.foot{background:var(--wall);color:#fff;padding-block:48px 28px}
.foot a{color:#fff}
.foot .cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:32px}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin-bottom:.35em}
.foot h3{font-size:1rem;margin-bottom:.6em;letter-spacing:-.01em}
.foot .mark{background:#fff;display:inline-block;padding:8px 12px;border-radius:4px;margin-bottom:12px}
.foot .mark img{height:74px;width:auto}
.foot .fine{margin-top:32px;font-size:.92rem;opacity:.85;max-width:none}
@media(max-width:820px){.foot .cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mobilebar{display:none}
@media(max-width:640px){.mobilebar{display:grid;grid-template-columns:1fr 1fr;position:sticky;bottom:0;z-index:20;background:#fff;border-top:1px solid var(--line);padding:8px;gap:8px}.mobilebar .btn{text-align:center;padding:.65em .5em}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
