/* Save The Music-CNMI Foundation · preview by Ink Harbor
   EDITORIAL REDESIGN (Nov 5, v3) — matches the approved social rollout:
   Inter Tight display · Inter body · Geist Mono labels · Fraunces italic accents.
   PALETTE (from their own materials): navy #1D204E · ink #12143A · plum #842068 · yellow #F7DF35 · cream #F7F1E3
   hibiscus #C50C62 (Girls' Empowerment flyer) only for full / waitlist states.
   Contrast (WCAG AA): navy on cream 13:1 · white on plum 8.8:1 · plum on cream 7.9:1 · yellow on navy 10.7:1 ·
   white on navy 14.5:1 · ink-soft #4A4C6B on cream 7.6:1 · #C9CADF on navy 9.3:1.
   Yellow is an accent only: short bars, underlines, one word in a headline. */
@font-face{font-family:"Inter Tight";src:url(../fonts/inter-tight.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Inter";src:url(../fonts/inter.woff2) format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(../fonts/geist-mono.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Fraunces";src:url(../fonts/fraunces-italic.woff2) format("woff2");font-weight:400 600;font-style:italic;font-display:swap}
:root{
  --bg:#FBF8F1;--bg-2:#F4EDDD;--cream:#F7F1E3;--card:#FFFFFF;
  --line:rgba(29,32,78,.14);--line-2:rgba(29,32,78,.26);
  --ink:#1D204E;--ink-deep:#12143A;--ink-soft:#4A4C6B;
  --plum:#842068;--plum-deep:#621252;--plum-wash:#F5ECF2;
  --yellow:#F7DF35;--hibiscus:#C50C62;
  --on-dark:#ECEBF4;--on-dark-soft:#C9CADF;--line-dark:rgba(255,255,255,.16);
  --radius:6px;--wrap:1240px;--hh:72px;
  --disp:"Inter Tight","Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ser:"Fraunces",Georgia,"Times New Roman",serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--hh) + 12px)}
body{margin:0;overflow-x:clip;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:1.0625rem;line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--plum-deep);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{color:var(--plum);text-decoration-thickness:2px}
h1,h2,h3,h4{font-family:var(--disp);font-weight:800;line-height:.98;margin:0 0 .5em;letter-spacing:-.035em;text-wrap:balance}
h1{font-size:clamp(2.8rem,8vw,6.4rem)}
h2{font-size:clamp(2.2rem,5vw,3.9rem)}
h3{font-size:1.45rem;font-weight:700;letter-spacing:-.02em;line-height:1.1}
h1 em,h2 em,.foot-line em{font-family:var(--ser);font-style:italic;font-weight:500;letter-spacing:-.02em}
h2 em{color:var(--plum)}
.h-sm{font-size:clamp(1.7rem,3.2vw,2.4rem)}
p{margin:0 0 1em}
.wrap{width:min(100% - 2.5rem,var(--wrap));margin-inline:auto}
@media(min-width:900px){.wrap{width:min(100% - 5rem,var(--wrap))}}
.narrow{max-width:46rem}
.center{text-align:center;margin-inline:auto}
.muted{color:var(--ink-soft)}
.small{font-size:.92rem}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
:focus-visible{outline:3px solid var(--plum);outline-offset:3px;border-radius:3px}
.on-dark :focus-visible,.hero :focus-visible,.site-footer :focus-visible,.page-hero :focus-visible,.aside-card :focus-visible,.tier.featured :focus-visible{outline-color:var(--yellow)}
.skip{position:absolute;left:1rem;top:-100px;z-index:100;background:var(--ink);color:#fff;padding:.7rem 1rem;border-radius:var(--radius);font-weight:700;text-decoration:none}
.skip:focus{top:.75rem;color:#fff}

/* ---------- labels ---------- */
.kicker{display:flex;align-items:center;flex-wrap:wrap;font:500 .76rem/1.3 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--plum);margin:0 0 1.25rem}
.kicker .idx{display:inline-flex;align-items:center;color:var(--ink)}
.kicker .idx::after{content:"";display:inline-block;width:28px;height:2px;background:var(--yellow);margin:0 .8rem}
.kicker .bar{display:inline-block;width:36px;height:3px;background:var(--yellow);margin-right:.8rem;flex-shrink:0}
.on-dark .kicker,.hero .kicker,.page-hero .kicker,.aside-card .kicker{color:var(--yellow)}
.on-dark .kicker .idx{color:#fff}

/* ---------- header / nav ---------- */
/* no backdrop-filter here: it would become the containing block for the fixed mobile menu */
.site-header{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--line)}
@media (max-width:440px){.nav-toggle{padding:.5rem .7rem}.nav-toggle .label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.brand{gap:.6rem}.brand-text{padding-left:.6rem}.brand-text b{font-size:.84rem}}
.site-header .bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--hh)}
.brand{display:flex;align-items:center;gap:.85rem;text-decoration:none;color:var(--ink);flex-shrink:0}
.brand-mark{display:block;height:46px;width:auto;background:none}
.brand-text{display:flex;flex-direction:column;justify-content:center;border-left:1px solid var(--line-2);padding-left:.85rem}
.brand-text b{font:700 1rem/1.1 var(--disp);letter-spacing:-.015em;color:var(--ink)}
.brand-text span{font:500 .64rem/1.2 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-top:.25rem}
@media (max-width:600px){:root{--hh:64px}.brand-mark{height:38px}.brand-text b{font-size:.9rem}.brand-text span{font-size:.58rem}}
@media (max-width:380px){.brand-text{display:none}}
.nav-toggle{display:inline-flex;align-items:center;gap:.5rem;background:transparent;color:var(--ink);border:1.5px solid var(--ink);border-radius:var(--radius);padding:.5rem .85rem;font:500 .76rem var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;min-height:44px}
.nav-toggle svg{width:18px;height:18px}
.nav-toggle .close{display:none}
.nav-open .nav-toggle{background:var(--ink);color:#fff}
.nav-open .nav-toggle .open{display:none}.nav-open .nav-toggle .close{display:block}
.site-nav ul{list-style:none;margin:0;padding:0}
@media (max-width:1179px){
  .site-nav{display:block;position:fixed;inset:var(--hh) 0 0 0;background:var(--ink);overflow:auto;padding:1.5rem 1.25rem 2.5rem;
    opacity:0;visibility:hidden;transform:translateY(-8px);pointer-events:none;
    transition:opacity .22s var(--ease),transform .22s var(--ease),visibility 0s linear .22s}
  .nav-open .site-nav{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .25s var(--ease),transform .25s var(--ease),visibility 0s}
  .site-nav a{display:flex;align-items:center;justify-content:space-between;padding:.85rem .1rem;font:700 clamp(1.5rem,6vw,2.1rem)/1.1 var(--disp);letter-spacing:-.025em;color:#fff;text-decoration:none;border-bottom:1px solid var(--line-dark)}
  .site-nav a::after{content:"→";font:400 1rem var(--mono);color:var(--on-dark-soft)}
  .site-nav a[aria-current="page"]{color:var(--yellow)}
  .site-nav a.nav-cta{margin:1rem 0;border:0;background:var(--yellow);color:var(--ink);border-radius:var(--radius);padding:1rem 1.2rem;font-size:1.2rem}
  .site-nav a.nav-cta::after{color:var(--ink)}
  .site-nav li{opacity:0;transform:translateY(-4px);transition:opacity .2s var(--ease),transform .2s var(--ease)}
  .nav-open .site-nav li{opacity:1;transform:none;transition:opacity .3s var(--ease-out) calc(var(--i,0)*30ms + 60ms),transform .3s var(--ease-out) calc(var(--i,0)*30ms + 60ms)}
}
@media (min-width:1180px){
  .nav-toggle{display:none}
  .site-nav{display:block}
  .site-nav ul{display:flex;align-items:center;gap:.15rem;white-space:nowrap}
  .site-nav a{position:relative;display:block;font:500 .9rem/1 var(--sans);color:var(--ink);text-decoration:none;padding:.7rem .6rem}
  .site-nav a:not(.nav-cta){background:linear-gradient(var(--yellow),var(--yellow)) no-repeat left .6rem bottom .25rem/0 3px;transition:background-size .25s var(--ease),color .2s var(--ease)}
  .site-nav a:not(.nav-cta):hover,.site-nav a[aria-current="page"]:not(.nav-cta){background-size:calc(100% - 1.2rem) 3px}
  .site-nav a[aria-current="page"]{font-weight:700}
  .site-nav a.nav-cta{margin-left:.6rem;padding:.8rem 1.1rem;background:var(--ink);color:#fff;border-radius:var(--radius);font-weight:600}
  .site-nav a.nav-cta:hover,.site-nav a.nav-cta[aria-current="page"]{background:var(--plum);color:#fff}
}
@media (min-width:1320px){.site-nav a{font-size:.94rem;padding:.7rem .75rem}.site-nav a:not(.nav-cta){background-position:left .75rem bottom .25rem}.site-nav a:not(.nav-cta):hover,.site-nav a[aria-current="page"]:not(.nav-cta){background-size:calc(100% - 1.5rem) 3px}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:52px;padding:.8rem 1.45rem;border-radius:var(--radius);font:600 1rem/1.1 var(--sans);letter-spacing:-.005em;text-decoration:none;border:1.5px solid transparent;cursor:pointer}
.btn-primary{background:var(--plum);color:#fff}
.btn-primary:hover{background:var(--plum-deep);color:#fff}
.btn-teal{background:var(--ink);color:#fff}
.btn-teal:hover{background:var(--plum);color:#fff}
.btn-ghost{border-color:var(--ink);color:var(--ink);background:transparent}
.btn-ghost:hover{background:var(--ink);color:#fff}
.on-dark .btn-ghost,.hero .btn-ghost,.tier.featured .btn-ghost{color:#fff;border-color:rgba(255,255,255,.7)}
.on-dark .btn-ghost:hover,.hero .btn-ghost:hover{background:#fff;color:var(--ink);border-color:#fff}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem}
.btn svg{width:18px;height:18px}
.more{font:500 .78rem/1.2 var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--ink);display:inline-flex;gap:.5rem;align-items:center;padding-bottom:.3rem;border-bottom:2px solid var(--yellow)}
.more::after{content:"→";transition:transform .2s}
.more:hover{color:var(--plum)}
.more:hover::after{transform:translateX(3px)}

/* ---------- sections ---------- */
.section{padding:clamp(4.5rem,10vw,8rem) 0}
.section.tight{padding:clamp(3.5rem,7vw,5rem) 0}
.alt{background:var(--bg-2)}
.paper{background:var(--card)}
.on-dark{background:var(--ink);color:var(--on-dark)}
.btn-row.on-dark{background:none}
.on-dark h2,.on-dark h3{color:#fff}
.on-dark a:not(.btn){color:var(--yellow)}
.section-head{max-width:52rem;margin:0 0 clamp(2.5rem,5vw,4rem)}
.section-head h2{margin-bottom:.35em}
.section-head .kicker,.split .kicker,.band .kicker{margin-bottom:1.5rem}
.section-head p{color:var(--ink-soft);font-size:1.15rem;max-width:38rem;margin:0}
.on-dark .section-head p{color:var(--on-dark-soft)}

/* ---------- photo slots ---------- */
.ph{margin:0;position:relative;overflow:hidden;background:#E3DDD2;color:var(--ink);display:flex;align-items:center;justify-content:center;aspect-ratio:var(--ar,4/3);width:100%;border-radius:var(--radius)}
.ph .ph-tag{position:absolute;left:.75rem;bottom:.75rem;background:rgba(255,255,255,.92);color:var(--ink);font:500 .7rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:.35rem .6rem;border-radius:3px;max-width:calc(100% - 1.5rem)}
.ph.has-photo{background:var(--bg-2)}
.ph.has-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.on-dark .ph:not(.has-photo),.hero .ph:not(.has-photo){background:#34376A;color:#fff}
.ph.fit-contain{background:var(--ink)}
.ph.fit-contain img{object-fit:contain;padding:.75rem}

/* ---------- home hero: full-bleed photo, type set over a navy fade ---------- */
.hero{position:relative;background:var(--ink-deep);color:#fff;overflow:hidden}
.hero .ph{border-radius:0;aspect-ratio:4/5;max-height:68svh;min-height:300px}
.hero .ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,20,58,0) 38%,rgba(18,20,58,.82) 74%,var(--ink-deep) 96%)}
.hero-copy{position:relative;z-index:1;margin-top:-5rem;padding:0 1.25rem 3rem}
.hero .kicker{margin-bottom:1rem}
.hero h1{color:#fff;font-size:clamp(3rem,13vw,7.4rem);line-height:.9;letter-spacing:-.045em;margin-bottom:.4em}
.hero h1 em{color:var(--yellow);display:inline-block;letter-spacing:-.03em}
.hero .lede{font-size:clamp(1.05rem,1.6vw,1.25rem);color:var(--on-dark);max-width:34rem;margin-bottom:1.75rem;line-height:1.6}
.hero-meta{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;margin:2.25rem 0 0;padding:1.1rem 0 0;border-top:1px solid var(--line-dark);font:500 .74rem/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-soft);list-style:none}
.hero-meta li{display:flex;align-items:center;gap:.5rem}
.hero-meta svg{width:15px;height:15px;color:var(--yellow)}
@media (min-width:900px){
  .hero{display:grid;min-height:min(calc(100svh - var(--hh)),860px)}
  .hero>*{grid-area:1/1}
  .hero .ph{aspect-ratio:auto;max-height:none;height:100%;min-height:0}
  .hero .ph::after{background:linear-gradient(90deg,rgba(18,20,58,.94) 0%,rgba(18,20,58,.82) 34%,rgba(18,20,58,.25) 62%,rgba(18,20,58,0) 80%),linear-gradient(0deg,rgba(18,20,58,.7) 0%,rgba(18,20,58,0) 40%)}
  .hero-copy{align-self:end;margin:0;padding:6rem 0 3.5rem max(2.5rem,calc((100vw - var(--wrap))/2));max-width:calc(48rem + max(2.5rem,(100vw - var(--wrap))/2))}
  .hero h1{font-size:clamp(4.2rem,7.2vw,7.4rem)}
}
.hero-logo{display:grid;place-items:center;padding:2.5rem 1.25rem 0;background:var(--ink)}
.hero-logo img{width:min(78vw,420px);height:auto}

/* ---------- inner page hero ---------- */
.page-hero{background:var(--ink);color:#fff;padding:clamp(4rem,10vw,7.5rem) 0 clamp(3rem,7vw,5rem);position:relative;overflow:hidden}
.page-hero h1{color:#fff;font-size:clamp(2.8rem,8vw,6rem);line-height:.92;letter-spacing:-.045em;max-width:14ch;margin-bottom:.35em}
.page-hero .lede{font-size:clamp(1.08rem,1.6vw,1.25rem);color:var(--on-dark);max-width:40rem;margin:0}

/* ---------- next event strip ---------- */
.next-event{background:var(--ink-deep);color:#fff;border-top:1px solid var(--line-dark)}
.next-event .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.75rem;padding:1.15rem 0}
.next-event .label{display:inline-flex;align-items:center;gap:.55rem;font:500 .72rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--yellow)}
.next-event .label::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--yellow);flex-shrink:0}
.next-event .what{font:700 1.15rem/1.2 var(--disp);letter-spacing:-.015em}
.next-event .when{font:500 .8rem var(--mono);letter-spacing:.06em;color:var(--on-dark-soft)}
.next-event a{color:#fff;font:500 .76rem var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border-bottom:2px solid var(--yellow);padding-bottom:.2rem;margin-left:auto}
.next-event a:hover{color:var(--yellow)}

/* ---------- grids & cards ---------- */
.grid{display:grid;gap:2.5rem 1.75rem}
@media (min-width:700px){.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}.g4{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}}
.card{display:flex;flex-direction:column}
a.card{text-decoration:none;color:inherit}
.card .ph{aspect-ratio:4/5}
.card-body{padding:1.4rem 0 0;display:flex;flex-direction:column;flex:1;border-top:0}
.card-body .idx{font:500 .74rem var(--mono);letter-spacing:.16em;color:var(--plum);margin-bottom:.7rem}
.card-body h3{font-size:clamp(1.8rem,2.6vw,2.4rem);font-weight:800;letter-spacing:-.035em;margin-bottom:.4em}
.card-body p{color:var(--ink-soft)}
.card-body .btn,.card-body .more{margin-top:auto;align-self:flex-start}
.icon-badge{width:52px;height:52px;border-radius:var(--radius);display:grid;place-items:center;background:var(--ink);color:var(--yellow);margin-bottom:1rem;flex-shrink:0}
.icon-badge svg{width:24px;height:24px}

/* split */
.split{display:grid;gap:2.5rem;align-items:center}
@media (min-width:900px){.split{grid-template-columns:1fr 1fr;gap:clamp(3rem,7vw,6.5rem)}.split.rev>:first-child{order:2}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin:2.5rem 0 0;padding:0;list-style:none}
.stats li{border-top:2px solid var(--ink);padding-top:1rem}
.stats b{display:block;font:800 clamp(2.2rem,4vw,3.2rem)/1 var(--disp);letter-spacing:-.045em;color:var(--ink);margin-bottom:.4rem}
.stats li:first-child b{color:var(--plum)}
.stats span{display:block;font:500 .72rem/1.45 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}

/* quote */
.quote{font-family:var(--ser);font-style:italic;font-weight:500;font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.12;letter-spacing:-.02em;margin:0 0 1.25rem;color:#fff;text-wrap:balance}
.quote.sm{font-size:clamp(1.4rem,2.4vw,1.8rem)}
.quote::before{content:"“";color:var(--yellow)}.quote::after{content:"”";color:var(--yellow)}
.cite{color:var(--on-dark-soft);font-size:1rem;max-width:34rem;margin-bottom:1.75rem}

/* chips */
.pill-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0}
.pill-list a,.pill-list span{display:inline-block;padding:.55rem .9rem;border-radius:3px;border:1px solid var(--line-2);color:var(--ink);text-decoration:none;font:500 .78rem var(--mono);letter-spacing:.08em;text-transform:uppercase}
.press{margin-top:3.5rem}
.press h3{font:500 .76rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--plum);margin-bottom:1rem}

/* access note */
.access{display:grid;gap:1.5rem;align-items:start;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);padding:2.25rem 0}
@media(min-width:800px){.access{grid-template-columns:auto 1fr;gap:2.5rem}.access>div:last-child{display:grid;grid-template-columns:1fr 1fr;gap:0 3rem}.access h2{grid-column:1/-1}}
.access h2{font-size:clamp(1.7rem,3.2vw,2.4rem)}
.access .icon-badge{margin:0}
.access ul{margin:0;padding-left:1.1rem;color:var(--ink-soft)}
.access li{margin-bottom:.35rem}

/* social strip */
.social-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
@media(min-width:800px){.social-grid{grid-template-columns:repeat(4,1fr)}}
.social-grid .ph{border-radius:3px}

/* partners: hairline type grid */
.wordmarks{display:grid;grid-template-columns:repeat(2,1fr);list-style:none;padding:0;margin:0;border-top:1px solid var(--line-2)}
@media(min-width:700px){.wordmarks{grid-template-columns:repeat(4,1fr)}}
.wordmarks li{min-height:100px;display:flex;align-items:flex-start;padding:1.1rem 1rem 1.1rem 0;border-bottom:1px solid var(--line-2);font:700 1.08rem/1.2 var(--disp);letter-spacing:-.015em;color:var(--ink)}
@media(min-width:700px){.wordmarks li{padding-left:1rem;border-left:1px solid var(--line)}.wordmarks li:nth-child(4n+1){border-left:0;padding-left:0}}
.wordmarks li small{display:block;font:500 .66rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:.35rem}

/* people */
.people{display:grid;gap:2rem}
@media(min-width:800px){.people{grid-template-columns:1fr 1fr;gap:3rem}}
.person{display:grid;grid-template-columns:120px 1fr;gap:1.5rem;align-items:start;border-top:2px solid var(--ink);padding-top:1.5rem}
.person .ph{--ar:1/1;aspect-ratio:1/1}
.person h3{font-size:1.75rem;margin-bottom:.3em}
.person .role{font:500 .72rem/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--plum);margin:0 0 .75rem}
.person .ph .ph-tag,.person .ph figcaption{display:none}
.names{list-style:none;padding:0;margin:0;border-top:1px solid var(--line-2)}
.names li{padding:.85rem 0;border-bottom:1px solid var(--line);font:700 1.2rem/1.2 var(--disp);letter-spacing:-.015em}
.names li small{font:500 .7rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}

/* program rows */
.stack{display:grid;gap:clamp(3.5rem,7vw,6rem)}
.program{display:grid;gap:2rem;align-items:center}
.program .ph{aspect-ratio:4/3}
@media(min-width:900px){.program{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(3rem,6vw,5.5rem)}.program:nth-child(even) .ph{order:2}}
.program-body h2{font-size:clamp(2.1rem,4.2vw,3.4rem);margin:.6rem 0 .4em}
.program-body>p{color:var(--ink-soft);font-size:1.08rem;max-width:34rem}
.facts{display:grid;grid-template-columns:auto 1fr;gap:0 1.5rem;margin:1.5rem 0 1.9rem;font-size:.98rem;border-top:1px solid var(--line-2)}
.facts dt,.facts dd{padding:.7rem 0;border-bottom:1px solid var(--line)}
.facts dt{font:500 .72rem/1.9 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.facts dd{margin:0;color:var(--ink);font-weight:500}
.tag{display:inline-block;font:500 .68rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;padding:.45rem .6rem;border-radius:3px;border:1px solid var(--line-2);background:transparent;color:var(--ink);margin:0 .35rem .4rem 0}
.tag.gold{background:var(--yellow);border-color:var(--yellow);color:var(--ink)}
.tag.flag{border-color:var(--plum);color:var(--plum)}
.tag.full{background:var(--hibiscus);border-color:var(--hibiscus);color:#fff}
.band{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.5rem 3rem}
.band h2{font-size:clamp(2rem,4vw,3rem);margin-bottom:.3em}
.band p{margin:0;max-width:36rem}

/* status board + form */
.status-board{display:grid;gap:0 2.5rem;grid-template-columns:1fr;margin:0 0 3.5rem;padding:0;list-style:none;border-top:1px solid var(--line-2)}
@media(min-width:700px){.status-board{grid-template-columns:repeat(2,1fr)}}
.status-board li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.15rem 0;border-bottom:1px solid var(--line)}
.status-board li.is-full{border-left:4px solid var(--hibiscus);padding-left:1rem;background:#FBEAF1}
.status-board b{display:block;font:700 1.2rem/1.2 var(--disp);letter-spacing:-.015em}
.status-board .small{display:block;margin-top:.2rem}
.status-board .tag{margin:0;white-space:nowrap}
.form-shell{display:grid;gap:2rem}
@media(min-width:1000px){.form-shell{grid-template-columns:1.6fr 1fr;align-items:start;gap:3rem}}
.form-card{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--ink);border-radius:var(--radius);padding:1.5rem}
@media(min-width:700px){.form-card{padding:2.5rem}}
.form-card.waitlist{border-top-color:var(--hibiscus)}
.form-card h2{font-size:clamp(1.9rem,3.5vw,2.6rem)}
fieldset{border:0;margin:0 0 1.4rem;padding:0;min-width:0}
legend{font:500 .74rem var(--mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:.7rem;padding:0;color:var(--ink)}
.field{margin-bottom:1.15rem}
.field label{display:block;font-weight:600;margin-bottom:.4rem;font-size:.98rem}
.field .hint{display:block;font-weight:400;font-size:.88rem;color:var(--ink-soft)}
input[type=text],input[type=email],input[type=tel],input[type=number],select,textarea{width:100%;font:1.05rem var(--sans);color:var(--ink);background:#fff;border:1.5px solid #8A8496;border-radius:var(--radius);padding:.75rem .9rem;min-height:52px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--plum);outline-offset:1px;border-color:var(--plum)}
.row2{display:grid;gap:0 1rem}
@media(min-width:600px){.row2{grid-template-columns:1fr 1fr}}
.choices{display:grid;gap:.6rem;grid-template-columns:1fr 1fr}
.choice{position:relative}
.choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.choice span{display:block;border:1.5px solid #8A8496;border-radius:var(--radius);padding:.85rem 1rem;background:#fff;font:700 1.05rem/1.2 var(--disp);min-height:66px}
.choice small{display:block;font:400 .84rem/1.4 var(--sans);color:var(--ink-soft);margin-top:.2rem}
.choice small.full-note{color:var(--hibiscus);font-weight:700}
.choice input:checked+span{border:2px solid var(--ink);background:var(--cream);box-shadow:inset 4px 0 0 var(--yellow)}
.choice input:focus-visible+span{outline:3px solid var(--plum);outline-offset:2px}
.check{display:flex;gap:.75rem;align-items:flex-start;background:var(--cream);border-radius:var(--radius);padding:.95rem 1rem;font-weight:600;cursor:pointer}
.check input{width:22px;height:22px;margin:.15rem 0 0;accent-color:var(--ink);flex-shrink:0}
.notice{display:none;gap:.9rem;align-items:flex-start;background:var(--hibiscus);color:#fff;border-radius:var(--radius);padding:1.1rem 1.2rem;margin:0 0 1.4rem}
.notice.show{display:flex}
.notice svg{width:28px;height:28px;flex-shrink:0;color:#fff}
.notice b{display:block;font:700 1.15rem/1.2 var(--disp);margin-bottom:.2rem}
.notice p{margin:0}
.info-note{display:none;background:var(--plum-wash);color:var(--plum-deep);border-radius:var(--radius);padding:.9rem 1.1rem;margin:0 0 1.2rem;font-weight:600}
.info-note.show{display:block}
.is-hidden{display:none!important}
.form-foot{font-size:.88rem;color:var(--ink-soft);margin-top:1rem}
#submit-btn{min-height:56px;font-size:1.05rem}
.aside-card{background:var(--ink);color:var(--on-dark);border-radius:var(--radius);padding:2rem}
.aside-card h3{color:#fff;font-size:1.7rem}
.aside-card ul{padding-left:1.1rem;margin:0 0 1.25rem}
.aside-card li{margin-bottom:.4rem}
.aside-card a{color:var(--yellow)}

/* events: editorial list */
.events{list-style:none;padding:0;margin:0;border-top:2px solid var(--ink)}
.event{display:grid;grid-template-columns:92px 1fr;gap:1.25rem;padding:1.75rem 0;border-bottom:1px solid var(--line-2);align-items:start}
@media(min-width:700px){.event{grid-template-columns:170px 1fr auto;gap:2rem;padding:2.25rem 0;align-items:center}}
.datebox{line-height:1;color:var(--ink)}
.datebox .m{font:500 .74rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--plum)}
.datebox .d{font:800 clamp(2.6rem,6vw,4.4rem)/.95 var(--disp);letter-spacing:-.05em;margin:.15rem 0 .3rem}
.datebox .w{font:500 .68rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
.datebox.recur svg{width:22px;height:22px;color:var(--plum);margin-bottom:.5rem}
.datebox.recur .d,.datebox.tba .d{font-size:clamp(1.5rem,3vw,2.1rem);letter-spacing:-.035em}
.h3,.event h2{font:800 clamp(1.5rem,2.8vw,2.2rem)/1.05 var(--disp);letter-spacing:-.035em;margin:0 0 .45rem}
.event .meta{color:var(--ink-soft);font-size:1rem;margin:0 0 .15rem}
.event .meta strong{color:var(--ink)}
.event .side{grid-column:2}
@media(min-width:700px){.event .side{grid-column:auto;text-align:right}}
.event.past{opacity:.6}

/* support */
.tiers{display:grid;gap:1rem}
@media(min-width:700px){.tiers{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1050px){.tiers{grid-template-columns:repeat(4,1fr);gap:0}.tier+.tier{border-left:0}}
.tier{background:var(--card);border:1px solid var(--line-2);padding:1.75rem 1.6rem;display:flex;flex-direction:column}
.tier h3{font-size:1.3rem}
.tier.featured{background:var(--ink);color:var(--on-dark);border-color:var(--ink)}
.tier.featured h3{color:#fff}
.tier .amt{font:800 3.4rem/1 var(--disp);letter-spacing:-.05em;margin:.5rem 0 .9rem;color:var(--ink)}
.tier.featured .amt{color:var(--yellow)}
.tier .amt small{font:500 .66rem var(--mono);color:var(--ink-soft);letter-spacing:.12em;text-transform:uppercase;margin-left:.45rem;vertical-align:middle}
.tier.featured .amt small{color:var(--on-dark-soft)}
.tier p{color:var(--ink-soft);font-size:.98rem}
.tier.featured p{color:var(--on-dark)}
.tier .btn{margin-top:auto}
.placeholder-flag{display:inline-flex;align-items:center;gap:.35rem;font:500 .7rem/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--plum);border:1px dashed var(--plum);border-radius:3px;padding:.35rem .65rem}
.btn[aria-disabled="true"]{cursor:not-allowed}
.wish{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line-2)}
@media(min-width:900px){.wish{grid-template-columns:repeat(4,1fr)}}
.wish li{display:flex;align-items:center;gap:.9rem;padding:1.4rem 0;border-bottom:1px solid var(--line);font:700 1.3rem/1.1 var(--disp);letter-spacing:-.02em}
.wish svg{width:30px;height:30px;color:var(--plum);flex-shrink:0;display:block}
.funders{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.75rem;display:grid;gap:2rem}
@media(min-width:900px){.funders{grid-template-columns:1fr 1fr 1fr;padding:2.5rem;gap:3rem}}
.funders h3{font:500 .74rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--plum);margin-bottom:.8rem}
.funders ul{margin:0;padding-left:1.1rem;color:var(--ink-soft)}
.big-stat{font:800 clamp(4rem,8vw,6rem)/.9 var(--disp);letter-spacing:-.055em;color:var(--plum);margin:0 0 .6rem}

/* contact */
.contact-list{list-style:none;padding:0;margin:0;border-top:2px solid var(--ink)}
.contact-list li{display:flex;gap:1.1rem;align-items:center;padding:1.2rem 0;border-bottom:1px solid var(--line)}
.contact-list .icon-badge{margin:0;width:46px;height:46px}
.contact-list b{display:block;font:500 .7rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:.2rem}
.contact-list a{font:700 1.2rem/1.25 var(--disp);letter-spacing:-.01em;word-break:break-word;color:var(--ink)}
.contact-list a:hover{color:var(--plum)}
.map-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.map-card iframe{display:block;width:100%;aspect-ratio:4/3;border:0;background:var(--bg-2)}
.map-card .card-body{padding:1.4rem 1.5rem 1.6rem}
.map-card h3{font-size:1.5rem}

/* phase page / thanks / 404 */
.phase{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--ink);border-radius:var(--radius);padding:clamp(2rem,5vw,3.25rem);text-align:center;max-width:48rem;margin:0 auto}
.phase h1,.phase h2{font-size:clamp(2rem,4.5vw,3rem)}
.phase .btn-row{justify-content:center}
.phase ul{text-align:left;display:inline-block;color:var(--ink-soft);margin:.5rem 0 1.5rem}

/* footer */
.site-footer{background:var(--ink);color:var(--on-dark);font-size:.97rem}
.site-footer .wrap{padding:clamp(3.5rem,8vw,5.5rem) 0 2rem}
.foot-cta{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.75rem 3rem;padding-bottom:clamp(2.5rem,6vw,4rem);margin-bottom:clamp(2.5rem,6vw,3.5rem);border-bottom:1px solid var(--line-dark)}
.foot-line{font:800 clamp(2.2rem,5.4vw,4.4rem)/.95 var(--disp);letter-spacing:-.045em;color:#fff;margin:0;max-width:14ch;text-wrap:balance}
.foot-line em{color:var(--yellow)}
.foot-grid{display:grid;gap:2.5rem}
@media(min-width:900px){.foot-grid{grid-template-columns:1.5fr 1fr 1fr}}
.site-footer h2{font:500 .72rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--yellow);margin-bottom:1rem}
.site-footer a:not(.btn){color:#fff;text-decoration-color:rgba(255,255,255,.35)}
.site-footer a:not(.btn):hover{text-decoration-color:var(--yellow)}
.site-footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.45rem}
.foot-brand{display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;margin-bottom:1.1rem}
.foot-brand img{width:220px;height:auto}
.foot-brand b{font:700 1.15rem/1.2 var(--disp);letter-spacing:-.015em;color:#fff;display:block}
.foot-brand span{font:500 .7rem/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-soft)}
.signoff{font-family:var(--ser);font-style:italic;font-size:1.25rem;color:#fff}
.foot-base{border-top:1px solid var(--line-dark);margin-top:3rem;padding-top:1.4rem;display:flex;flex-wrap:wrap;gap:.75rem 1.75rem;justify-content:space-between;font-size:.84rem;color:var(--on-dark-soft)}
.foot-base .cnmi{display:inline-flex;align-items:center;gap:.6rem}
.foot-base .cnmi img{width:36px;height:36px;flex-shrink:0}
.social-links{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.25rem}
.site-footer .social-links a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .9rem;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius);text-decoration:none;font-weight:600;min-height:44px}
.site-footer .social-links a:hover{background:#fff;color:var(--ink)}
.social-links svg{width:18px;height:18px}

/* mobile tuning */
@media(max-width:699px){
  .stats{grid-template-columns:1fr 1fr}.stats li:last-child:nth-child(odd){grid-column:1/-1}
  .btn-row .btn{flex:1 1 auto}
  .next-event a{margin-left:0}
  .person{grid-template-columns:88px 1fr}
  .wish li{font-size:1.1rem}
}

/* =====================================================================
   MOTION LAYER (Nov 5, fixed) · subtle, professional, opt-out honoured
   - Hidden start states gated behind html.motion-ok (head script; skipped
     when prefers-reduced-motion: reduce).
   - Keyframe entrances gated behind html.motion-go (main.js double-rAF)
     so the from-state paints before animation starts — hard refresh shows
     a real entrance instead of an instant appear after image load.
   - Easing: one calm curve. Distances: 8–18px. No bounce, no spin, no parallax.
   ===================================================================== */
:root{--ease:cubic-bezier(.22,.61,.36,1);--ease-out:cubic-bezier(.16,1,.3,1)}
.motion-ok{scroll-behavior:smooth}

/* 1 · scroll reveal (IntersectionObserver adds .in; JS sets --d for stagger) */
/* reveal uses the individual `translate`/`scale` properties so hover `transform` lifts never fight it */
.motion-ok .reveal{opacity:0;translate:0 18px}
.motion-ok .reveal.in{opacity:1;translate:none}
.reveal{transition:opacity .85s var(--ease-out) var(--d,0ms),translate .85s var(--ease-out) var(--d,0ms),transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
/* photos settle in as their block reveals */
.motion-ok .reveal .ph.has-photo img{scale:1.04}
.motion-ok .reveal.in .ph.has-photo img{scale:none}
/* grids inside one reveal wrapper: children stagger in */
.motion-ok .stagger>*{opacity:0;translate:0 14px}
.motion-ok .in .stagger>*,.motion-ok .stagger.in>*{opacity:1;translate:none}
.stagger>*{transition:opacity .7s var(--ease-out) var(--d,0ms),translate .7s var(--ease-out) var(--d,0ms),transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
/* when the grid itself is the reveal target, don't fade the container too */
.motion-ok .stagger.reveal{opacity:1;translate:none}

/* 2 · hero entrance — held at from-state until html.motion-go */
@keyframes ih-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes ih-settle{from{transform:scale(1.045)}to{transform:none}}
@keyframes ih-fade{from{opacity:0}to{opacity:1}}
.motion-ok .hero-copy>*,.motion-ok .page-hero .wrap>*{opacity:0;transform:translateY(18px)}
.motion-ok.motion-go .hero-copy>*,.motion-ok.motion-go .page-hero .wrap>*{animation:ih-rise .75s var(--ease-out) both}
.motion-ok.motion-go .hero-copy>:nth-child(1),.motion-ok.motion-go .page-hero .wrap>:nth-child(1){animation-delay:.06s}
.motion-ok.motion-go .hero-copy>:nth-child(2),.motion-ok.motion-go .page-hero .wrap>:nth-child(2){animation-delay:.16s}
.motion-ok.motion-go .hero-copy>:nth-child(3),.motion-ok.motion-go .page-hero .wrap>:nth-child(3){animation-delay:.26s}
.motion-ok.motion-go .hero-copy>:nth-child(4){animation-delay:.36s}
.motion-ok.motion-go .hero-copy>:nth-child(5){animation-delay:.46s}
/* hero photo stays opaque (keeps it the fast LCP paint) and just settles */
.motion-ok.motion-go .hero .ph.has-photo img{animation:ih-settle 1.5s var(--ease-out) both}
.motion-ok.motion-go .hero-logo img{animation:ih-fade .7s var(--ease) both}
.motion-ok.motion-go .next-event .wrap{animation:ih-fade .55s var(--ease) .4s both}

/* 3 · nav */
.site-header{transition:box-shadow .25s var(--ease)}
.site-header.scrolled{box-shadow:0 1px 0 var(--line)}
.nav-toggle svg{transition:transform .25s var(--ease)}

/* 4 · cards: no lifts or drop shadows; photos ease in ≤1.04 inside their frame */
.ph.has-photo img{transition:transform .7s var(--ease),scale 1.1s var(--ease-out) var(--d,0ms)}
@media (hover:hover){
  a.card:hover .ph.has-photo img,.program:hover .ph.has-photo img,.social-grid .ph.has-photo:hover img{transform:scale(1.04)}
  a.card:hover h3{color:var(--plum)}
  a.card:hover .more::after{transform:translateX(3px)}
}
.card h3{transition:color .2s var(--ease)}
.social-links a,.pill-list a{transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease)}

/* 5 · buttons: 180ms colour change, slight press */
.btn{transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease),transform .12s var(--ease)}
.btn:active:not([aria-disabled="true"]){transform:scale(.97)}
.nav-toggle{transition:background-color .18s var(--ease),transform .12s var(--ease)}
.nav-toggle:active{transform:scale(.96)}
.more::after{transition:transform .2s var(--ease)}

/* 6 · next-event strip: a small, slow "live" dot. Nothing else moves. */
@keyframes ih-breathe{0%,100%{opacity:1}50%{opacity:.35}}
.motion-ok.motion-go .next-event .label::before{animation:ih-breathe 2.8s ease-in-out infinite}

/* 7 · form: JS animates height/(optional opacity) of notice, info note and fieldsets */
.form-card h2,#submit-btn{transition:opacity .18s var(--ease),background-color .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease),transform .12s var(--ease)}
.form-card h2.swap,#submit-btn.swap{opacity:0}
.choice span{transition:border-color .2s var(--ease),background-color .2s var(--ease),box-shadow .2s var(--ease)}
.choice:hover span{border-color:var(--ink)}
.choice small{transition:color .25s var(--ease)}
input[type=text],input[type=email],input[type=tel],input[type=number],select,textarea{transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.form-card{transition:border-color .35s var(--ease)}
/* banner show/hide: JS sets .show; keep overflow clip friendly during WAAPI */
.notice,.info-note{will-change:opacity,height}

/* reduced motion: hard stop on everything */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .reveal,.stagger>*,.hero-copy>*,.page-hero .wrap>*{opacity:1!important;translate:none!important;transform:none!important}
  .ph.has-photo img{scale:none!important}
  .btn:active,.nav-toggle:active{transform:none}
}
