/* Ghaima. Yoga above the fog. Hand built, no framework. */

@font-face{font-family:"Zodiak";src:url("fonts/zodiak-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Zodiak";src:url("fonts/zodiak-italic-var.woff2") format("woff2");font-weight:100 900;font-style:italic;font-display:swap}
@font-face{font-family:"Switzer";src:url("fonts/switzer-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Switzer";src:url("fonts/switzer-italic-var.woff2") format("woff2");font-weight:100 900;font-style:italic;font-display:swap}

:root{
  --sky-dawn-top:#B9C3E4;--sky-dawn-mid:#E9B9B3;--sky-dawn-low:#F6C9A3;
  --fog:#F3F2F0;--fog-2:#E6E6E3;--fog-3:#D6D6D2;
  --ink:#1E2330;--ink-2:#4B5163;--ink-3:#5A6073;
  --lamp:#F2A93B;--lamp-deep:#D98F1F;--lamp-text:#8F5B05;--lamp-ink:#2A1F08;
  --rose:#B85C48;
  --night:#171B29;
  --display:"Zodiak",Georgia,serif;
  --text:"Switzer",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --arabic:"Geeza Pro","Noto Naskh Arabic","Arial",sans-serif;
  --gutter:clamp(1.25rem,4vw,3rem);
  --wrap:1200px;
  --radius:24px;
  --ease:cubic-bezier(.16,1,.3,1);
  --on-sky:var(--ink);
  --on-sky-2:var(--ink-2);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;
  font-family:var(--text);
  font-size:1.0625rem;
  line-height:1.65;
  color:var(--ink);
  background:var(--sky-dawn-mid);
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
h1,h2,h3,p,ul,ol,dl,dd{margin:0}
p,dd,li{text-wrap:pretty}
ul,ol{padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
strong{font-weight:600}
em{font-style:italic}
:focus-visible{outline:3px solid var(--lamp);outline-offset:3px;border-radius:4px}
.btn-lamp:focus-visible{outline-color:var(--ink)}
.close .btn-lamp:focus-visible,.dock .btn-lamp:focus-visible{outline-color:var(--fog)}
.btn:focus-visible{border-radius:999px}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;top:-100px;left:1rem;z-index:100;background:var(--ink);color:var(--fog);padding:.75rem 1rem;border-radius:8px;text-decoration:none}
.skip:focus{top:1rem}

/* ---------- sky canvas ---------- */
#sky{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;pointer-events:none;
  /* static fallback painted in CSS in case the canvas never draws */
  background:linear-gradient(180deg,var(--sky-dawn-top) 0%,var(--sky-dawn-mid) 55%,var(--sky-dawn-low) 100%)}
#fog{position:fixed;inset:0;width:100%;height:100%;z-index:2;display:block;pointer-events:none}
.grain{position:fixed;inset:-50%;width:200%;height:200%;z-index:5;pointer-events:none;opacity:.07;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:220px 220px}
main,footer.foot{position:relative;z-index:3}
header.top{position:fixed;z-index:20}
.dock{z-index:30}

/* ---------- top bar ---------- */
.top{
  position:fixed;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;gap:1.5rem;
  padding:.85rem var(--gutter);
  color:var(--on-sky);
  transition:color .4s ease;
}
.mark{display:inline-flex;flex-direction:column;line-height:1;text-decoration:none;color:inherit;margin-right:auto;text-shadow:0 0 14px rgba(243,242,240,.9)}
html.is-night .mark,html.is-dusk .mark{text-shadow:0 0 14px rgba(23,27,41,.9)}
.mark-latin{font-family:var(--text);font-weight:300;letter-spacing:.32em;text-transform:uppercase;font-size:.95rem;padding-left:.32em}
.mark-arabic{font-family:var(--arabic);font-size:.8rem;opacity:.75;margin-top:.15rem;letter-spacing:0;direction:rtl;text-align:left}
.top-nav{display:flex;gap:1.6rem}
.top-nav a{text-decoration:none;font-size:.9rem;font-weight:500;letter-spacing:.01em;padding:.5rem 0;position:relative;color:inherit;opacity:.9;text-shadow:0 0 14px rgba(243,242,240,.9),0 0 3px rgba(243,242,240,.8)}
html.is-night .top-nav a,html.is-dusk .top-nav a{text-shadow:0 0 14px rgba(23,27,41,.9)}
.top-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:.3rem;height:1px;background:currentColor;transition:right .35s var(--ease)}
.top-nav a:hover::after,.top-nav a:focus-visible::after{right:0}
.top-nav a:hover{opacity:1}
@media (max-width:760px){.top-nav{display:none}.top{padding:.75rem var(--gutter)}}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:48px;padding:.8rem 1.5rem;border-radius:999px;border:1px solid transparent;
  font-weight:500;font-size:1rem;letter-spacing:.005em;text-decoration:none;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),background-color .25s ease,color .25s ease;
  will-change:transform;
}
.btn-small{min-height:44px;padding:.55rem 1.1rem;font-size:.9rem}
.btn-lamp{background:var(--lamp);color:var(--lamp-ink);box-shadow:0 8px 24px -10px rgba(217,143,31,.65)}
.btn-lamp:hover{background:#F6B24A;box-shadow:0 12px 30px -10px rgba(217,143,31,.85)}
.btn-lamp:active{transform:translateY(1px)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--fog-3)}
.btn-ghost:hover{background:var(--ink);color:var(--fog);border-color:var(--ink)}
.link-arrow{display:inline-flex;align-items:center;gap:.5rem;min-height:48px;text-decoration:none;font-weight:500;color:var(--on-sky);padding:.5rem 0}
.link-arrow::after{content:"";width:1.4rem;height:1px;background:currentColor;transform-origin:left center;transition:transform .35s var(--ease)}
.link-arrow:hover::after{transform:scaleX(1.7)}
.link-light{color:var(--fog)}

/* ---------- wordmark: monumental, spans the container, sits under the fog ---------- */
.wordmark{
  position:absolute;left:0;right:0;top:calc(4.5rem + 11vh);z-index:1;pointer-events:none;
  margin:0 auto;max-width:calc(var(--wrap) + 2*var(--gutter));padding:0 var(--gutter);
  font-family:var(--text);font-weight:200;text-transform:uppercase;
  font-size:clamp(3.6rem,15.4vw,15.5rem);line-height:.9;letter-spacing:0;
  display:flex;justify-content:space-between;color:var(--on-sky);will-change:opacity;
}
.wordmark span{display:inline-block;animation:letterIn 1.4s var(--ease) both;animation-delay:calc(var(--i,0)*70ms)}
.wordmark span:nth-child(1){--i:0}.wordmark span:nth-child(2){--i:1}.wordmark span:nth-child(3){--i:2}
.wordmark span:nth-child(4){--i:3}.wordmark span:nth-child(5){--i:4}.wordmark span:nth-child(6){--i:5}
@keyframes letterIn{from{opacity:0;transform:translateY(.25em);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}

/* ---------- hero: clouds first, the room opens as you scroll ---------- */
.hero{height:260vh;color:var(--on-sky)}
.hero-sticky{justify-content:flex-start;align-items:stretch}
.hero .hero-media{
  left:calc(50% + (1 - var(--p))*20%);
  top:calc(56% + (1 - var(--p))*2svh);
  width:calc(min(420px,74vw) + (100vw - min(420px,74vw))*var(--p));
  height:calc(min(250px,27svh) + (100svh - min(250px,27svh))*var(--p));
}
.hero .hero-media::after{background:linear-gradient(180deg,rgba(23,27,41,0) 35%,rgba(23,27,41,calc(.72*var(--p))) 100%)}
.hero .expand-title{
  position:absolute;left:var(--gutter);right:var(--gutter);top:calc(4.5rem + 11vh + clamp(3.6rem,15.4vw,15.5rem)*.78 + clamp(1rem,2.5vh,2rem));
  translate:0 0;font-size:clamp(2.4rem,4.8vw,4.4rem);line-height:1.02;letter-spacing:-.01em;justify-content:flex-start;gap:.3em;
  color:var(--on-sky);text-shadow:0 0 28px rgba(243,242,240,calc(.85*var(--p))),0 0 6px rgba(243,242,240,calc(.6*var(--p)));
  max-width:none;
}
.hero .expand-title .em{font-style:italic;color:var(--rose)}
.hero .expand-a{transform:translateX(calc(-1*var(--p)*0px))}
.hero .expand-b{transform:translateX(calc(var(--p)*min(30vw,420px)))}
.hero-inner{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  max-width:calc(var(--wrap) + 2*var(--gutter));margin:0 auto;padding:0 var(--gutter) clamp(2rem,5vh,3.5rem);
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.5rem 4rem;align-items:end;
  color:color-mix(in srgb,var(--fog) calc(var(--p)*100%),var(--on-sky));
}
.hero-do{display:flex;flex-direction:column;align-items:flex-start}
.hero-lead{font-size:clamp(1.05rem,1.3vw,1.2rem);max-width:40ch;color:inherit;opacity:.92;text-shadow:0 0 18px rgba(23,27,41,calc(.5*var(--p)))}
.hero .clock{border-color:color-mix(in srgb,currentColor 25%,transparent);background:color-mix(in srgb,var(--fog) calc(35% - var(--p)*25%),transparent);color:inherit}
.hero .offer{color:inherit;text-shadow:0 0 18px rgba(23,27,41,calc(.5*var(--p)))}
.hero .link-arrow{color:inherit}
.hero .expand-hint{bottom:auto;top:calc(4.5rem + 11vh + clamp(3.6rem,15.4vw,15.5rem)*.78 + clamp(1rem,2.5vh,2rem) + 6.5rem);left:var(--gutter);transform:none;opacity:calc(1 - var(--p)*3)}
@media (max-width:900px){
  .hero-inner{grid-template-columns:1fr;gap:.75rem}
  .hero-say{display:none}
}
@media (max-width:760px){
  .hero{height:230vh}
  .wordmark{top:calc(4.5rem + 5vh)}
  .hero .expand-title{top:calc(4.5rem + 5vh + clamp(3.6rem,15.4vw,15.5rem)*.78 + 1rem);font-size:clamp(2.1rem,9.5vw,3rem);flex-direction:column;gap:.05em}
  .hero .expand-b{transform:translateX(calc(var(--p)*22vw))}
  .hero .hero-media{left:50%;top:calc(50% - (1 - var(--p))*7svh);width:calc(min(280px,60vw) + (100vw - min(280px,60vw))*var(--p));height:calc(min(170px,20svh) + (100svh - min(170px,20svh))*var(--p))}
  .hero .expand-hint{display:none}
  .hero-inner{padding-bottom:calc(1.25rem + 84px)}
  .hero-do{gap:.2rem}
  .hero-actions{margin-top:.9rem}
}
html.is-still .hero,html.is-still .expand{--p:0}
@media (prefers-reduced-motion:reduce){.hero{height:100svh;--p:0}}
.clock{
  display:inline-flex;align-items:center;gap:.6rem;margin-top:0;
  font-size:.9rem;font-weight:500;letter-spacing:.01em;
  padding:.5rem .95rem .5rem .8rem;border-radius:999px;
  border:1px solid color-mix(in srgb,var(--on-sky) 22%,transparent);
  background:color-mix(in srgb,var(--fog) 35%,transparent);
  color:var(--on-sky);
}
.clock-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--lamp);box-shadow:0 0 0 0 rgba(242,169,59,.6);animation:pulse 2.4s ease-out infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(242,169,59,.55)}70%{box-shadow:0 0 0 .55rem rgba(242,169,59,0)}100%{box-shadow:0 0 0 0 rgba(242,169,59,0)}}
.offer{margin-top:1.1rem;font-size:1.05rem}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-top:1.3rem}
.rise{display:inline-block;animation:riseIn 1.1s var(--ease) both;animation-delay:calc(.45s + var(--i,0)*90ms)}
.expand-a.rise{--i:0}.expand-b.rise{--i:1}
@keyframes riseIn{from{opacity:0;filter:blur(8px)}to{opacity:1;filter:blur(0)}}
.rise-late{animation:riseIn 1s var(--ease) both;animation-delay:1.05s}
.rise-late + .rise-late{animation-delay:1.2s}
.rise-late + .rise-late + .rise-late{animation-delay:1.35s}

/* ---------- panels ---------- */
.panel{
  background:rgba(243,242,240,.96);
  color:var(--ink);
  padding:clamp(4rem,9vw,7.5rem) 0 clamp(4.5rem,10vw,8rem);
  position:relative;
}
.panel + .panel{border-top:1px solid var(--fog-2)}
.panel:first-of-type{border-radius:var(--radius) var(--radius) 0 0}
.hero + .panel,.sky-line + .panel,.expand + .panel{border-radius:var(--radius) var(--radius) 0 0}
.panel:has(+ .sky-clip){border-radius:0 0 var(--radius) var(--radius)}
.panel:has(+ .sky-line),.panel:has(+ .expand){border-radius:0 0 var(--radius) var(--radius)}
.panel:has(+ .close){border-radius:0 0 var(--radius) var(--radius)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.wrap-narrow{max-width:900px}
.section-head{max-width:62ch;margin-bottom:clamp(2.25rem,5vw,3.5rem)}
.kicker{font-family:var(--display);font-style:italic;font-weight:300;font-size:1.15rem;letter-spacing:0;color:var(--ink-3);margin-bottom:.9rem}
.kicker-light{color:rgba(243,242,240,.7)}
.h2{font-family:var(--display);font-weight:300;font-size:clamp(2rem,3.9vw,3.25rem);line-height:1.08;letter-spacing:-.01em;text-wrap:balance}
.h2 em{color:var(--rose)}
.lede{margin-top:1.1rem;font-size:1.0625rem;color:var(--ink-2);max-width:58ch}

/* ---------- reveal ---------- */
.reveal,.section-head,.step,.pass,.person,.q,.find-text p{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.is-in,.find-text p.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal,.section-head,.step,.pass,.person,.q,.find-text p{opacity:1;transform:none;transition:none}
  .rise,.rise-late,.wordmark span{animation:none}
  .clock-dot{animation:none}
}

/* ---------- day tabs ---------- */
.days{display:flex;gap:.4rem;overflow-x:auto;scrollbar-width:none;padding-bottom:.25rem;margin-bottom:1.5rem;-webkit-overflow-scrolling:touch}
.days::-webkit-scrollbar{display:none}
.day{
  flex:0 0 auto;min-height:44px;padding:.5rem 1rem;border-radius:999px;border:1px solid var(--fog-3);
  background:transparent;font-size:.9rem;font-weight:500;color:var(--ink-2);
  transition:background-color .25s ease,color .25s ease,border-color .25s ease;
}
.day span{display:block;font-size:.75rem;font-weight:400;color:var(--ink-3);letter-spacing:.04em}
.day:hover{border-color:var(--ink)}
.day[aria-selected="true"]{background:var(--ink);color:var(--fog);border-color:var(--ink)}
.day[aria-selected="true"] span{color:rgba(243,242,240,.7)}
.day.is-today:not([aria-selected="true"]){border-color:var(--lamp)}

/* ---------- timetable board ---------- */
.board{border-top:1px solid var(--ink);}
.tt{width:100%;border-collapse:collapse;font-size:1rem}
.tt th{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:var(--ink-3);text-align:left;padding:.9rem 0 .7rem;border-bottom:1px solid var(--fog-2)}
.tt td{padding:1.05rem 0;border-bottom:1px solid var(--fog-2);vertical-align:middle}
.tt th+th,.tt td+td{padding-left:1.25rem}
.tt td:first-child{font-weight:500;font-size:1.05rem;width:5.5rem;white-space:nowrap}
.tt td:nth-child(2){font-family:var(--display);font-size:1.45rem;font-weight:300;line-height:1.1;letter-spacing:-.005em}
.tt td:nth-child(3),.tt td:nth-child(4){color:var(--ink-2)}
.tt td:last-child{text-align:right;width:6rem}
.mats{display:inline-flex;align-items:center;gap:.6rem;white-space:nowrap}
.mats-dots{display:inline-grid;grid-template-columns:repeat(7,6px);gap:3px}
.mats-dots i{width:6px;height:6px;border-radius:50%;background:var(--fog-3)}
.mats-dots i.on{background:var(--ink)}
.mats-few .mats-dots i.on{background:var(--lamp-deep)}
.mats-text{font-size:.9rem;color:var(--ink-2)}
tr.is-past td{color:var(--ink-3)}
tr.is-past td:nth-child(2){color:var(--ink-3)}
tr.is-past .btn{opacity:.4;pointer-events:none}
tr.is-now td:first-child{color:var(--lamp-text)}
tr.is-next td:first-child::before{content:"";display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--lamp);margin-right:.5rem;vertical-align:.1em}
.board-note{margin-top:1.4rem;font-size:.9rem;color:var(--ink-3);max-width:60ch}
.tt-empty td{padding:2rem 0;color:var(--ink-2)}
@media (max-width:760px){
  .tt thead{display:none}
  .tt,.tt tbody,.tt tr,.tt td{display:block}
  .tt tr{display:grid;grid-template-columns:5rem 1fr auto;grid-template-areas:"time name book" "time meta book" "time mats book";column-gap:.75rem;padding:1rem 0;border-bottom:1px solid var(--fog-2)}
  .tt td{padding:0;border:0}
  .tt td+td{padding-left:0}
  .tt td:first-child{grid-area:time;width:auto;font-size:1.05rem}
  .tt td:nth-child(2){grid-area:name;font-size:1.35rem}
  .tt td:nth-child(3){display:none}
  .tt td:nth-child(4){grid-area:meta;font-size:.9rem}
  .tt td:nth-child(4)::before{content:attr(data-teacher) " · "}
  .tt td:nth-child(5){grid-area:mats;margin-top:.35rem}
  .tt td:last-child{grid-area:book;width:auto;align-self:center;text-align:right}
  .mats-dots{grid-template-columns:repeat(7,5px);gap:3px}
  .mats-dots i{width:5px;height:5px}
}

/* ---------- sky interludes ---------- */
.sky-line{
  min-height:44vh;display:flex;align-items:center;justify-content:center;
  padding:clamp(4rem,10vw,7rem) var(--gutter);color:var(--on-sky);text-align:center;
}
.sky-line-tall{min-height:64vh;padding-top:clamp(5rem,11vw,8rem);padding-bottom:clamp(5rem,11vw,8rem)}
.sky-line-stack{flex-direction:column;min-height:52vh}
.sky-clip{position:relative;overflow:hidden;min-height:78vh}
.bleed-wide{left:0;right:0;top:0;bottom:0}
.bleed-wide video,.bleed-wide img{object-position:50% 45%;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 78%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 78%,transparent 100%)}
.bleed-wide img{animation:slowZoom 22s ease-in-out infinite alternate;transform-origin:50% 60%;will-change:transform}
@keyframes slowZoom{from{transform:scale(1.02)}to{transform:scale(1.12)}}
@media (prefers-reduced-motion:reduce){.bleed-wide img{animation:none}}
html.is-still .bleed-wide img{animation:none}
.sky-clip .room{position:relative;z-index:1}
.sky-clip .sky-text,.sky-clip .sky-sub{text-shadow:0 0 24px rgba(243,242,240,.9),0 0 6px rgba(243,242,240,.7)}
.sky-line-stack .sky-text{max-width:22ch}
.sky-line-stack .sky-sub{max-width:44ch}
.sky-text{font-family:var(--display);font-weight:300;font-size:clamp(1.7rem,3.4vw,2.9rem);line-height:1.2;letter-spacing:-.005em;max-width:26ch;margin:0 auto;text-wrap:balance}
.room{width:100%;text-align:center}
.room .sky-text{max-width:20ch}
.sky-sub{margin:1.25rem auto 0;max-width:46ch;font-size:1.05rem;color:var(--on-sky-2)}

/* ---------- bleeding media (edges dissolve like fog) ---------- */
.bleed{position:absolute;pointer-events:none;overflow:hidden}
.bleed img,.bleed video{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.92)}
.panel-first,.panel-teachers{position:relative;overflow:hidden}

/* first hour: the room fills the top of the section, dissolving into the panel */
.bleed-room{left:0;right:0;top:0;height:min(78vh,760px)}
.bleed-room img{object-position:50% 68%;
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 40%,transparent 92%);mask-image:linear-gradient(to bottom,#000 0%,#000 40%,transparent 92%)}
.panel-first{padding-top:min(58vh,560px)}
.section-head-over{position:relative}
@media (max-width:760px){.bleed-room{height:min(62vh,520px)}.panel-first{padding-top:min(38vh,340px)}}

/* golden hour: the room opens as you scroll (sticky, scroll linked, no hijack) */
.expand{position:relative;height:250vh;--p:0}
.expand-sticky{position:sticky;top:0;height:100svh;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--on-sky)}
.expand-media{
  position:absolute;left:50%;top:calc(50% + (1 - var(--p))*6svh);transform:translate(-50%,-50%);overflow:hidden;
  width:calc(min(360px,72vw) + (100vw - min(360px,72vw))*var(--p));
  height:calc(min(440px,46svh) + (100svh - min(440px,46svh))*var(--p));
  border-radius:calc(22px*(1 - var(--p)));
  box-shadow:0 40px 90px -40px rgba(30,35,48,calc(.5*(1 - var(--p))));
}
.expand-media video,.expand-media img{width:100%;height:100%;object-fit:cover;display:block}
.expand-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,27,41,0) 40%,rgba(23,27,41,calc(.45*var(--p))) 100%);pointer-events:none}
.expand-title{
  position:relative;z-index:1;font-family:var(--display);font-weight:300;font-size:clamp(2.4rem,6.4vw,5.8rem);line-height:1;letter-spacing:-.015em;text-align:center;
  display:flex;gap:.35em;justify-content:center;white-space:nowrap;
  color:var(--on-sky);
  text-shadow:0 0 28px rgba(243,242,240,calc(.85*var(--p))),0 0 6px rgba(243,242,240,calc(.6*var(--p)));
}
.expand:not(.hero) .expand-title{translate:0 calc(-1*(1 - var(--p))*30svh)}
.expand-a{transform:translateX(calc(-1*var(--p)*min(17vw,250px)))}
.expand-b{transform:translateX(calc(var(--p)*min(17vw,250px)))}
.expand-sub{
  position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(2rem,6vh,4rem);z-index:1;margin:0 auto;max-width:44ch;text-align:center;
  color:var(--fog);font-size:1.05rem;opacity:calc((var(--p) - .8)*5);transform:translateY(calc((1 - var(--p))*20px));
}
.expand-hint{position:absolute;bottom:clamp(1.5rem,4vh,3rem);left:50%;transform:translateX(-50%);z-index:1;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500;opacity:calc(1 - var(--p)*2.5);color:var(--on-sky)}
.expand-hint::after{content:"";display:block;width:1px;height:2rem;margin:.5rem auto 0;background:currentColor;animation:hint 1.8s ease-in-out infinite}
@keyframes hint{0%,100%{transform:scaleY(.4);transform-origin:top;opacity:.4}50%{transform:scaleY(1);opacity:1}}
html.is-still .expand-hint{display:none}
@media (prefers-reduced-motion:reduce){.expand{--p:1;height:100svh}.expand-hint{display:none}.expand-hint::after{animation:none}}
@media (max-width:760px){
  .expand{height:220vh}
  .expand-title{font-size:clamp(2.2rem,9.5vw,3rem);flex-direction:column;gap:.1em;white-space:normal}
  .expand:not(.hero) .expand-title{translate:0 calc(-1*(1 - var(--p))*33svh)}
  .expand-a{transform:translateX(calc(-1*var(--p)*6vw))}
  .expand-b{transform:translateX(calc(var(--p)*6vw))}
  .expand-sub{font-size:1rem}
}

/* teachers: the class fills the right, dissolving into the panel */
.bleed-evening{right:0;top:0;bottom:0;width:min(58vw,900px)}
.bleed-evening img,.bleed-evening video{object-position:50% 78%;
  -webkit-mask-image:linear-gradient(to left,#000 30%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 18%,#000 82%,transparent 100%);
  mask-image:linear-gradient(to left,#000 30%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 18%,#000 82%,transparent 100%);
  -webkit-mask-composite:source-in;mask-composite:intersect}
.teachers-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:2rem 4rem;align-items:start}
.teachers-grid .section-head{grid-column:1;margin-bottom:0}
.people{grid-column:1;display:grid;grid-template-columns:1fr;gap:1.5rem 2rem;padding-top:.5rem}
.person dt{font-family:var(--display);font-weight:300;font-size:2rem;line-height:1.05;letter-spacing:-.005em}
.person dd{margin-top:.35rem;color:var(--ink-2);max-width:40ch}
@media (min-width:761px){.people{grid-template-columns:1fr 1fr}}
@media (max-width:960px){
  .bleed-evening{position:relative;width:100vw;left:calc(-1*var(--gutter));height:min(56vh,420px);margin-bottom:-2rem;margin-top:-1rem}
  .bleed-evening img,.bleed-evening video{-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 100%)}
  .teachers-grid{grid-template-columns:1fr}
  .people{grid-template-columns:1fr}
}

/* ---------- board head + tabs side by side on desktop ---------- */
.board-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem 4rem;align-items:end;margin-bottom:1.75rem}
.board-top .section-head{margin-bottom:0}
.board-top .days{margin-bottom:0;flex-wrap:wrap;justify-content:flex-end;overflow:visible;max-width:34rem}
@media (max-width:1023px){.board-top{grid-template-columns:1fr;gap:1.75rem}.board-top .days{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;max-width:none}}

/* ---------- first hour: a centred line, steps alternate sides ---------- */
.hour{position:relative;max-width:1000px;margin:clamp(2rem,4vw,3rem) auto 0;--draw:0;padding:1rem 0}
.hour::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--fog-3);transform:translateX(-.5px)}
.hour::after{content:"";position:absolute;left:50%;top:0;width:1px;height:calc(100%*var(--draw));background:var(--lamp);box-shadow:0 0 12px rgba(242,169,59,.6);transform:translateX(-.5px)}
.step{position:relative;width:50%;padding:0 clamp(2rem,4vw,3.5rem) clamp(2rem,4vw,3rem) 0;text-align:right}
.step:nth-child(even){margin-left:50%;padding:0 0 clamp(2rem,4vw,3rem) clamp(2rem,4vw,3.5rem);text-align:left}
.step::before{content:"";position:absolute;top:.85rem;right:-5.5px;width:10px;height:10px;border-radius:50%;background:var(--fog);border:1px solid var(--fog-3);transition:background-color .4s ease,border-color .4s ease,box-shadow .4s ease}
.step:nth-child(even)::before{right:auto;left:-5.5px}
.step.is-lit::before{background:var(--lamp);border-color:var(--lamp);box-shadow:0 0 0 4px rgba(242,169,59,.18)}
.step-time{font-family:var(--display);font-weight:300;font-size:clamp(1.6rem,2.6vw,2.2rem);line-height:1;color:var(--ink-3);letter-spacing:-.01em;margin-bottom:.6rem;transition:color .4s ease}
.step.is-lit .step-time{color:var(--lamp-text)}
.step h3{font-family:var(--text);font-weight:500;font-size:1.05rem;line-height:1.3;letter-spacing:.005em}
.step p{margin-top:.35rem;color:var(--ink-2);max-width:34ch}
.step:nth-child(odd) p{margin-left:auto}
.cta-row{margin-top:1rem;text-align:center}
@media (max-width:760px){
  .hour{padding-left:1.5rem;margin-top:1rem}
  .hour::before,.hour::after{left:0;transform:none}
  .step,.step:nth-child(even){width:auto;margin-left:0;padding:0 0 1.75rem 0;text-align:left}
  .step::before,.step:nth-child(even)::before{left:calc(-1.5rem - 4.5px);right:auto;top:.7rem}
  .step:nth-child(odd) p{margin-left:0}
  .step-time{font-size:1.5rem}
  .cta-row .btn{width:100%}
}

/* ---------- prices: a band of numbers ---------- */
.section-head-centre{margin-left:auto;margin-right:auto;text-align:center}
.passes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem 2.5rem;padding-top:1.5rem;border-top:1px solid var(--ink)}
.pass{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}
.pass-name{font-weight:500;font-size:.95rem;letter-spacing:.01em}
.pass-num{font-family:var(--display);font-weight:300;font-size:clamp(3.2rem,6vw,5.6rem);line-height:.95;letter-spacing:-.025em;margin:.2rem 0 .4rem}
.pass-num .cur{font-family:var(--text);font-size:.85rem;font-weight:500;letter-spacing:.1em;vertical-align:1.6em;margin-right:.3rem;color:var(--ink-3)}
.pass-lamp .pass-num{color:var(--lamp-text)}
.pass-desc{color:var(--ink-2);font-size:.98rem;max-width:26ch;min-height:4.8em}
.pass .btn{margin-top:.6rem}
.btn-text{background:none;border:0;padding:.55rem 0;min-height:44px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--ink);line-height:1;margin-top:.6rem;transition:color .25s ease,border-color .25s ease}
.btn-text:hover{color:var(--rose);border-color:var(--rose)}
.pass-foot{margin-top:2.25rem;padding-top:1.25rem;border-top:1px solid var(--fog-2);color:var(--ink-2);max-width:60ch}
.pass-foot .btn-text{margin:0 0 0 .5rem;padding:.2rem 0;min-height:0}
@media (max-width:960px){.passes{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem 2rem}.pass-desc{min-height:0}}
@media (max-width:420px){.pass-num{font-size:3rem}}

/* ---------- find us: prose beside a drawn map ---------- */
.find{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:3rem 5rem;align-items:center}
.find-text .section-head{margin-bottom:1.5rem}
.find-text p{color:var(--ink-2);max-width:48ch}
.find-text p+p{margin-top:1rem}
.mapbox{position:relative;border-radius:2px;overflow:hidden;background:var(--fog-2);min-height:min(56vh,460px);display:flex;align-items:flex-end}
.mapbox-tile{position:absolute;inset:0;background:linear-gradient(112deg,transparent 46%,rgba(30,35,48,.12) 46%,rgba(30,35,48,.12) calc(46% + 2px),transparent calc(46% + 2px)),linear-gradient(28deg,transparent 60%,rgba(30,35,48,.09) 60%,rgba(30,35,48,.09) calc(60% + 2px),transparent calc(60% + 2px)),radial-gradient(ellipse at 62% 40%,rgba(199,208,230,.9),rgba(199,208,230,0) 55%),var(--fog-2)}
.mapbox-pin{position:absolute;left:58%;top:38%;width:14px;height:14px;border-radius:50%;background:var(--lamp);box-shadow:0 0 0 6px rgba(242,169,59,.22),0 0 0 14px rgba(242,169,59,.1)}
.mapbox-text{position:relative;margin:1.25rem;padding:1.1rem 1.25rem;background:rgba(243,242,240,.96);border-radius:2px;max-width:22rem}
.mapbox-label{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:var(--ink-3)}
.mapbox-addr{margin:.35rem 0 .9rem;color:var(--ink);line-height:1.5}
@media (max-width:960px){.find{grid-template-columns:1fr;gap:2.25rem}}

/* ---------- questions: visible answers, two columns ---------- */
.qa{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 4rem;border-top:1px solid var(--ink);padding-top:2rem}
.q dt{font-family:var(--display);font-weight:300;font-size:1.45rem;line-height:1.2;letter-spacing:-.005em}
.q dd{margin-top:.5rem;color:var(--ink-2);max-width:46ch}
@media (max-width:760px){.qa{grid-template-columns:1fr;gap:1.6rem}}

/* ---------- close (night) ---------- */
.close{
  min-height:88svh;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:clamp(5rem,12vw,9rem) var(--gutter);color:var(--fog);
}
.close-inner{max-width:38rem}
.close-title{font-family:var(--display);font-weight:300;font-size:clamp(2.8rem,7vw,6rem);line-height:1;letter-spacing:-.015em}
.close-title em{color:var(--lamp)}
.close-lead{margin-top:1.4rem;font-size:1.1rem;color:rgba(243,242,240,.82);max-width:36ch;margin-left:auto;margin-right:auto}
.close .hero-actions{justify-content:center;margin-top:2rem}

/* ---------- footer ---------- */
.foot{color:rgba(243,242,240,.85);padding:2.5rem var(--gutter) calc(2.5rem + 72px);background:linear-gradient(180deg,rgba(23,27,41,0) 0%,rgba(23,27,41,.55) 18%,rgba(23,27,41,.8) 100%)}
.foot-inner{max-width:var(--wrap);margin:0 auto;display:grid;grid-template-columns:1fr auto;gap:2rem 3rem;align-items:start;border-top:1px solid rgba(243,242,240,.18);padding-top:2rem}
.foot-brand{display:flex;flex-direction:column;line-height:1.1}
.foot-brand .mark-latin{font-size:.95rem}
.foot-brand p{margin-top:.9rem;font-size:.9rem;line-height:1.55;color:rgba(243,242,240,.8)}
.foot-nav{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;font-size:.9rem}
.foot-nav a{text-decoration:none;opacity:.8;padding:.4rem 0}
.foot-nav a:hover{opacity:1;text-decoration:underline;text-underline-offset:.25em}
.foot-note{grid-column:1/-1;font-size:.85rem;color:rgba(243,242,240,.78);max-width:62ch;line-height:1.55}
.foot-credit{grid-column:1/-1;font-size:.85rem;color:rgba(243,242,240,.78)}
.foot-credit a{text-decoration:none;border-bottom:1px solid rgba(245,239,230,.35);font-weight:500}
.foot-credit .agm-name{color:#F5EFE6}
.foot-credit .agm-media{color:#46A67C}
.foot-credit a:hover{border-color:#46A67C}
@media (max-width:760px){.foot-inner{grid-template-columns:1fr}.foot{padding-bottom:calc(2rem + 84px)}}
@media (min-width:761px){.foot{padding-bottom:2.5rem}}

/* ---------- phone dock ---------- */
.dock{
  visibility:hidden;
  position:fixed;left:.75rem;right:.75rem;bottom:.75rem;z-index:30;
  display:none;align-items:center;justify-content:space-between;gap:1rem;
  padding:.55rem .55rem .55rem 1.1rem;border-radius:999px;
  background:rgba(30,35,48,.92);color:var(--fog);
  box-shadow:0 12px 32px -12px rgba(0,0,0,.45);
  transform:translateY(120%);transition:transform .5s var(--ease);
  backdrop-filter:saturate(1.2) blur(6px);
}
.dock.is-on{transform:none;visibility:visible}
.dock-text{font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:760px){.dock{display:flex}}

/* ---------- handoff dialog ---------- */
.handoff{border:0;border-radius:20px;padding:0;max-width:min(92vw,30rem);background:var(--fog);color:var(--ink);box-shadow:0 30px 80px -20px rgba(0,0,0,.4)}
.handoff::backdrop{background:rgba(23,27,41,.55);backdrop-filter:blur(2px)}
.handoff-inner{padding:2rem 2rem 1.75rem;display:flex;flex-direction:column;align-items:flex-start;gap:.9rem}
.handoff h2{font-family:var(--display);font-weight:300;font-size:1.8rem;line-height:1.1;letter-spacing:-.005em}
.handoff p{color:var(--ink-2)}
.handoff-small{font-size:.85rem;color:var(--ink-3)}
.handoff .btn{margin-top:.5rem}
.handoff .kicker{margin-bottom:0}

/* ---------- night mode for text over the sky ---------- */
html.is-night{--on-sky:#F3F2F0;--on-sky-2:rgba(243,242,240,.78)}
html.is-night .clock{border-color:rgba(243,242,240,.3);background:rgba(243,242,240,.08)}
html.is-night .top{color:var(--fog)}
html.is-dusk .top{color:var(--fog)}
html.nav-on-panel .top{color:var(--ink)}
html.nav-on-panel .top-nav a,html.nav-on-panel .mark{text-shadow:0 0 14px rgba(243,242,240,.9)}

/* ---------- screenshot mode (?still): everything settled ---------- */
html.is-still .rise,html.is-still .rise-late,html.is-still .wordmark span{animation:none;opacity:1;transform:none;filter:none}
html.is-still .clock-dot{animation:none}
html.is-still .reveal,html.is-still .section-head,html.is-still .step,html.is-still .pass,html.is-still .person,html.is-still .q,html.is-still .find-text p{opacity:1;transform:none;transition:none}
