/* Youth Science Center website preview by Landon Scales. Shared styles for every page. */
:root{--navy:#052747;--deep:#031A33;--blue:#005395;--gold:#F0B310;--orange:#F26522;--sky:#EEF5FC;--line:#D9E4EF;--ink:#0D1B2A;--muted:#4A5B6C;--r:14px;--rb:10px;--hh:84px;--ease:cubic-bezier(.16,1,.3,1);--sh:0 30px 60px -30px rgba(5,39,71,.3),0 12px 26px -16px rgba(5,39,71,.16);--sh2:0 40px 80px -30px rgba(3,26,51,.6),0 18px 34px -18px rgba(3,26,51,.45)}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:100px}
html.lock{overflow:hidden}
body{margin:0;font-family:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:17px;line-height:1.6;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:var(--blue);text-decoration-thickness:1.5px;text-underline-offset:3px}
h1,h2,h3{margin:0;font-weight:800;line-height:1.08;letter-spacing:-.025em}
p,figure,blockquote,ul,ol,dl,dd{margin:0}
main{display:block;overflow-x:clip}
button{font-family:inherit}
.wrap{width:min(1200px,100% - 48px);margin-inline:auto}
@media(max-width:640px){.wrap{width:calc(100% - 32px)}}
.sr{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:absolute;left:12px;top:-80px;z-index:400;padding:12px 18px;border-radius:var(--rb);background:var(--gold);color:var(--navy);font-weight:700;text-decoration:none}
.skip:focus{top:12px}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.center{text-align:center}
.g{color:var(--gold)}
[id]{scroll-margin-top:100px}

/* scroll line and page curtain */
.prog{position:fixed;left:0;top:0;z-index:250;width:100%;height:3px;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;pointer-events:none}
.curtain{position:fixed;inset:0;z-index:300;background:var(--navy);transform:translateY(100%);visibility:hidden;pointer-events:none}
.curtain.leave{visibility:visible;transform:none;transition:transform .3s cubic-bezier(.7,0,.3,1)}
.arrive .curtain{visibility:visible;animation:curOff .5s cubic-bezier(.7,0,.3,1) .05s both}
@keyframes curOff{from{transform:none}to{transform:translateY(-100%)}}

/* header */
.hdr{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid transparent;transition:background-color .35s,box-shadow .35s,border-color .35s}
.hdr.scrolled{background:rgba(255,255,255,.88);-webkit-backdrop-filter:saturate(170%) blur(14px);backdrop-filter:saturate(170%) blur(14px);border-bottom-color:var(--line);box-shadow:0 14px 34px -24px rgba(5,39,71,.4)}
.hdr .wrap{display:flex;align-items:center;gap:26px;height:var(--hh)}
.logo{flex:none;display:block}
.logo img{width:150px}
.nav{display:flex;gap:30px;margin-left:auto}
.nav a{position:relative;padding:8px 0;color:var(--ink);font-size:16px;font-weight:600;text-decoration:none}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:1px;height:2px;border-radius:2px;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;transition:transform .45s var(--ease)}
.nav a:hover::after,.nav a[aria-current=page]::after{transform:scaleX(1)}
.hdr .tel{margin-left:6px;color:var(--navy);font-weight:700;text-decoration:none;white-space:nowrap}
.hdr .tel:hover{color:var(--blue)}
.menu-btn{display:none;margin-left:auto;align-items:center;gap:10px;height:44px;padding:0 16px;border:1.5px solid var(--line);border-radius:var(--rb);background:#fff;color:var(--navy);font-size:15px;font-weight:700;cursor:pointer}
.bars{position:relative;width:18px;height:12px}
.bars::before,.bars::after{content:"";position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor}
.bars::before{top:1px}.bars::after{bottom:1px}

/* phone menu sheet */
.sheet{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;padding:14px 20px calc(24px + env(safe-area-inset-bottom));overflow-y:auto;background:var(--navy);color:#fff;transform:translateY(-100%);visibility:hidden;transition:transform .6s var(--ease),visibility 0s .6s}
.sheet.open{transform:none;visibility:visible;transition:transform .6s var(--ease)}
.sheet-top{display:flex;align-items:center;justify-content:space-between;min-height:48px}
.sheet-top img{width:124px}
.sheet-x{height:44px;padding:0 16px;border:1.5px solid rgba(255,255,255,.3);border-radius:var(--rb);background:transparent;color:#fff;font-size:15px;font-weight:700;cursor:pointer}
.sheet nav{display:flex;flex-direction:column;margin-top:26px}
.sheet nav a{padding:13px 0;border-bottom:1px solid rgba(255,255,255,.12);color:#fff;font-size:32px;font-weight:800;line-height:1.2;letter-spacing:-.02em;text-decoration:none;opacity:0;transform:translateX(48px);transition:transform .7s var(--ease),opacity .7s var(--ease)}
.sheet nav a[aria-current=page]{color:var(--gold)}
.sheet.open nav a{opacity:1;transform:none}
.sheet.open nav a:nth-child(1){transition-delay:.12s}.sheet.open nav a:nth-child(2){transition-delay:.18s}.sheet.open nav a:nth-child(3){transition-delay:.24s}.sheet.open nav a:nth-child(4){transition-delay:.3s}.sheet.open nav a:nth-child(5){transition-delay:.36s}
.sheet-cta{display:grid;gap:12px;margin-top:auto;padding-top:28px;opacity:0;transform:translateX(48px);transition:transform .7s var(--ease) .42s,opacity .7s var(--ease) .42s}
.sheet.open .sheet-cta{opacity:1;transform:none}
.sheet-cta .btn{width:100%}

/* buttons and links */
.btn{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 26px;overflow:hidden;border:2px solid transparent;border-radius:var(--rb);font-size:16px;font-weight:700;line-height:1.15;text-align:center;text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .4s var(--ease),background-color .3s,color .3s,border-color .3s}
.btn:active{transform:translateY(1px)}
.btn-sm{min-height:46px;padding:0 20px;font-size:15px}
.btn-gold{background:var(--gold);color:var(--navy)}
.btn-gold::after{content:"";position:absolute;top:0;bottom:0;left:-75%;z-index:-1;width:50%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);transform:skewX(-18deg);opacity:0;pointer-events:none}
.btn-line{border-color:rgba(255,255,255,.65);background:transparent;color:#fff}
.btn-out{border-color:var(--navy);background:transparent;color:var(--navy)}
.btn-gl{border-color:var(--gold);background:transparent;color:var(--gold)}
@media(hover:hover){
 .btn-gold:hover{box-shadow:0 12px 32px -10px rgba(240,179,16,.7)}
 .btn-gold:hover::after{opacity:1;animation:sheen .9s var(--ease) forwards}
 .btn-line:hover{border-color:#fff;background:#fff;color:var(--navy)}
 .btn-out:hover{background:var(--navy);color:#fff}
 .btn-gl:hover{background:var(--gold);color:var(--navy)}
}
@keyframes sheen{from{left:-75%}to{left:130%}}
.ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.ctas.center{justify-content:center}
.alink{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--blue);font-weight:700;text-decoration:none}
.alink svg{width:18px;height:18px;transition:transform .4s var(--ease)}
.alink:hover svg{transform:translateX(4px)}
.navy .alink{color:var(--gold)}

/* bottom bar on phones */
.bbar{display:none}
@media(max-width:980px){
 :root{--hh:68px}
 .nav,.hdr .tel,.hdr .hcta{display:none}
 .menu-btn{display:inline-flex}
 .logo img{width:124px}
 .bbar{position:fixed;left:0;right:0;bottom:0;z-index:90;display:grid;grid-template-columns:1fr 1.5fr;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);box-shadow:0 -10px 30px -20px rgba(5,39,71,.35)}
 .bbar .btn{min-height:50px;padding:0 12px}
 body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
}

/* sections */
.sec{position:relative;padding:clamp(72px,9vw,124px) 0}
.navy{position:relative;isolation:isolate;overflow:hidden;background:var(--navy);color:#fff}
.deep{background:var(--deep)}
.sky{position:relative;isolation:isolate;overflow:hidden;background:var(--sky)}
h2{font-size:clamp(2rem,3.7vw,3.2rem);line-height:1.06;letter-spacing:-.032em;color:var(--navy)}
.navy h2,.navy h3{color:#fff}
.sub{max-width:34em;margin-top:16px;font-size:19px;line-height:1.55;color:var(--muted)}
.navy .sub{color:rgba(255,255,255,.8)}
.head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 40px;margin-bottom:clamp(36px,5vw,56px)}
.head .sub{margin-top:0}
.narrow{max-width:860px}

/* slow color fields */
.fx{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.fx i{position:absolute;width:min(78vw,960px);aspect-ratio:1;border-radius:50%;translate:0 var(--fy,0px);animation:drift 30s ease-in-out infinite}
.fx i:first-child{left:-22%;top:-40%;background:radial-gradient(closest-side,rgba(0,83,149,.8),rgba(0,83,149,0))}
.fx i:last-child{right:-24%;bottom:-48%;background:radial-gradient(closest-side,rgba(240,179,16,.15),rgba(240,179,16,0));animation-delay:-15s;animation-direction:reverse}
.sky .fx i:first-child{background:radial-gradient(closest-side,rgba(0,83,149,.08),rgba(0,83,149,0))}
.sky .fx i:last-child{background:radial-gradient(closest-side,rgba(240,179,16,.1),rgba(240,179,16,0))}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(9%,7%) scale(1.1)}}

/* photo frames */
.ph{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--r);background:#c9d6e3}
.ph img{width:100%;height:100%;object-fit:cover}
.ph.pp img{position:absolute;left:0;top:-6%;width:100%;height:112%}
.r45{aspect-ratio:4/5}.r43{aspect-ratio:4/3}.r11{aspect-ratio:1}.r34{aspect-ratio:3/4}.r1610{aspect-ratio:16/10}
.hmain{position:relative;margin:0 16px 16px 0}
.outline{position:absolute;inset:16px -16px -16px 16px;border:1.5px solid var(--gold);border-radius:var(--r);pointer-events:none}
.hmain .ph{box-shadow:var(--sh2)}

/* home hero */
.hero{display:flex;align-items:center;min-height:calc(100vh - var(--hh));min-height:calc(100svh - var(--hh));padding:44px 0 56px}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-template-areas:"copy media" "proof media";column-gap:64px;align-items:center}
.hero-copy{grid-area:copy;align-self:end}
.hero-media{grid-area:media;position:relative;justify-self:end;width:min(100%,460px);width:min(100%,460px,calc((100svh - var(--hh) - 170px)*.8));margin:0 16px 16px 0}
.hero-media .hmain{margin:0}
.hsmall{position:absolute;z-index:2;left:-14%;bottom:-9%;width:44%;border:6px solid #fff;box-shadow:0 30px 60px -18px rgba(0,0,0,.55)}
.kick{margin-bottom:18px;color:var(--gold);font-size:20px;font-weight:700;line-height:1.35}
h1{font-size:clamp(2.5rem,5.2vw,4.4rem);line-height:1.03;letter-spacing:-.04em}
.lede{max-width:31em;margin-top:22px;font-size:19px;line-height:1.55;color:rgba(255,255,255,.84)}
.hero-proof{grid-area:proof;align-self:start;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;max-width:520px;margin-top:30px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14)}
.hero-proof blockquote{color:#fff;font-size:17px;font-weight:600}
.hero-proof figcaption{width:100%;color:rgba(255,255,255,.66);font-size:15px}
.stars{display:inline-block;flex:none;width:92px;height:17px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 19'%3E%3Cpath fill='%23F0B310' d='M10 .8l2.8 5.8 6.3.8-4.6 4.4 1.2 6.3L10 15l-5.7 3.1 1.2-6.3L.9 7.4l6.3-.8z'/%3E%3C/svg%3E") 0 0/18.4px 17px repeat-x}
@media(max-width:900px){
 .hero{min-height:0;padding:28px 0 48px}
 .hero-grid{grid-template-columns:1fr;grid-template-areas:"copy" "media" "proof"}
 .hero-media{justify-self:end;width:min(86%,420px);margin:40px 16px 36px 0}
 .hsmall{left:-12%;bottom:-10%;width:46%}
 .kick{margin-bottom:14px;font-size:17px}
 .lede{margin-top:16px;font-size:17px}
 .hero .ctas{margin-top:22px}
}
@media(max-width:560px){.hero .ctas .btn,.phero .ctas .btn{flex:1 1 100%}}

/* facts row */
.facts{padding:clamp(48px,6vw,72px) 0;border-bottom:1px solid var(--line)}
.facts .wrap{display:grid;grid-template-columns:repeat(4,1fr)}
.fact{padding:4px 28px;border-left:1px solid var(--line)}
.fact:first-child{padding-left:0;border-left:0}
.fact b{display:block;color:var(--navy);font-size:clamp(2.1rem,3.6vw,3.2rem);font-weight:800;line-height:1.02;letter-spacing:-.04em}
.fact span{display:block;max-width:15em;margin-top:10px;color:var(--muted);font-size:16px;line-height:1.5}
@media(max-width:760px){.facts .wrap{grid-template-columns:1fr 1fr;row-gap:32px}.fact{padding:0 0 0 18px}.fact:nth-child(odd){padding-left:0;border-left:0}.fact b{font-size:clamp(1.6rem,7vw,2rem)}}

/* reviews */
.rv-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 40px}
.rv-score{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:18px}
.rv-score b{color:var(--navy);font-weight:800}
.rv-score a{font-weight:700}
.rv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:64px;align-items:start}
.rcard{display:flex;flex-direction:column;gap:14px;padding:28px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.rcard:nth-child(odd){margin-top:32px}
.rc-top{display:flex;align-items:center;gap:12px}
.av{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:50%;background:var(--c);color:#fff;font-size:18px;font-weight:800}
.rc-top b{display:block;color:var(--ink);font-size:16px;line-height:1.3}
.rc-top small{display:block;color:var(--muted);font-size:14px}
.rc-top .gl{width:22px;height:22px;margin-left:auto}
.rcard p{color:var(--ink);font-size:17px;line-height:1.6}
.dots{display:none;justify-content:center;gap:4px;margin-top:4px}
.dots button{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;background:none;cursor:pointer}
.dots button::before{content:"";width:8px;height:8px;border-radius:8px;background:#b4c4d6;transition:width .3s,background-color .3s}
.dots button.on::before{width:22px;background:var(--navy)}
.rv-more{margin-top:28px}
@media(max-width:860px){
 .rv-grid{display:flex;gap:14px;margin:36px -24px 0;padding:6px 24px 18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
 .rv-grid::-webkit-scrollbar{display:none}
 .rcard{flex:0 0 86%;scroll-snap-align:center}
 .rcard:nth-child(odd){margin-top:0}
 .dots{display:flex}
}
@media(max-width:640px){.rv-grid{margin-inline:-16px;padding-inline:16px}}

/* program finder */
.stage{position:relative;isolation:isolate;overflow:hidden;padding:clamp(16px,5vw,64px);border-radius:var(--r);background:var(--sky)}
.fcard{position:relative;max-width:800px;min-height:500px;margin:0 auto;padding:clamp(22px,4vw,44px);overflow:hidden;background:#fff;border-radius:var(--r);box-shadow:var(--sh)}
.fbar{height:6px;margin-bottom:22px;overflow:hidden;border-radius:6px;background:var(--line)}
.fbar i{display:block;width:0;height:100%;border-radius:6px;background:var(--gold);transition:width .45s var(--ease)}
.fstep{animation:fIn .6s var(--ease) both}
.fstep.back{animation-name:fBack}
@keyframes fIn{from{opacity:0;transform:translateX(56px)}to{opacity:1;transform:none}}
@keyframes fBack{from{opacity:0;transform:translateX(-56px)}to{opacity:1;transform:none}}
.fstep h3{color:var(--navy);font-size:clamp(1.55rem,2.8vw,2.1rem);letter-spacing:-.03em;outline:none}
.flink{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:none;color:var(--blue);font-size:15px;font-weight:700;cursor:pointer}
.fback{margin:-10px 0 4px}
.opts{display:grid;gap:12px;margin-top:22px}
.opt{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:56px;padding:12px 18px;border:1.5px solid var(--navy);border-radius:var(--rb);background:#fff;color:var(--navy);font-size:17px;font-weight:700;line-height:1.3;text-align:left;cursor:pointer;transition:background-color .25s,color .25s,transform .25s var(--ease),box-shadow .3s}
.opt[hidden]{display:none}
.opt small{display:block;margin-top:2px;color:var(--muted);font-size:14px;font-weight:500}
.opt .ck{flex:none;width:26px;height:26px;color:var(--gold);opacity:0;transform:scale(.5);transition:opacity .3s,transform .4s var(--ease)}
.opt.on{background:var(--navy);color:#fff}
.opt.on small{color:rgba(255,255,255,.75)}
.opt.on .ck{opacity:1;transform:none}
@media(hover:hover){.opt:hover{transform:translateY(-2px);box-shadow:0 12px 26px -16px rgba(5,39,71,.55)}}
.fsearch{margin-top:18px}
.slist{max-height:372px;padding:2px 6px 2px 2px;overflow-y:auto;overscroll-behavior:contain}
.fres{position:relative;padding:clamp(24px,4vw,40px);overflow:hidden;border-radius:var(--r);background:var(--navy);color:#fff}
.fres .fit{color:var(--gold);font-size:18px;font-weight:700}
.fres h3{margin-top:8px;color:#fff;font-size:clamp(1.7rem,3.2vw,2.4rem);outline:none}
.fres ul{display:grid;gap:10px;margin-top:20px;padding:0;list-style:none}
.fres li{position:relative;padding-left:22px;color:rgba(255,255,255,.88)}
.fres li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:8px;border-radius:50%;background:var(--gold)}
.fres .ctas{margin-top:26px}
.fres .alink{margin-top:10px;color:var(--gold)}
.freset{margin-top:14px}
@media(max-width:640px){.fcard{min-height:420px}.fres .ctas .btn{flex:1 1 100%}}

/* program stack */
.stack{display:grid;gap:36px}
.pcard{position:sticky;top:calc(var(--hh) + 22px);transform-origin:50% 0;transform:scale(calc(1 - var(--p,0)*.04))}
.pcard-in{position:relative;display:grid;grid-template-columns:55% 1fr;min-height:470px;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.pcard-in::after{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;background:var(--navy);opacity:calc(var(--p,0)*.2);pointer-events:none}
.pcard:nth-child(even) .pcard-in{grid-template-columns:1fr 55%}
.pcard:nth-child(even) .pmedia{order:2}
.pmedia.ph{min-height:340px;border-radius:0}
.pmedia.ph img{position:absolute;inset:0}
.pbody{display:flex;flex-direction:column;justify-content:center;padding:clamp(28px,4vw,52px)}
.pbody h3{color:var(--navy);font-size:clamp(1.6rem,2.6vw,2.2rem)}
.pline{margin-top:10px;color:var(--muted);font-size:19px}
.ticks{display:grid;gap:10px;margin-top:22px;padding:0;list-style:none}
.ticks li{position:relative;padding-left:32px;font-weight:600}
.ticks li::before{content:"";position:absolute;left:0;top:.2em;width:20px;height:20px;border-radius:50%;background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.5l3 3 6-6.5' fill='none' stroke='%23052747' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}
.navy .ticks li{color:#fff}
.lapwrap{display:grid;place-items:center;padding:clamp(28px,4vw,56px);background:var(--sky)}
.laptop{width:100%;max-width:540px}
.scr{position:relative;padding:3% 3% 3.6%;border-radius:16px 16px 6px 6px;background:#0c1724;box-shadow:var(--sh2)}
.scr::before{content:"";position:absolute;top:1.1%;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#2c3d50}
.scr .ph{border-radius:4px}
.base{position:relative;height:14px;margin:0 -6%;border-radius:0 0 16px 16px;background:linear-gradient(#e3eaf1,#b6c3d1)}
.base::before{content:"";position:absolute;left:50%;top:0;width:18%;height:5px;margin-left:-9%;border-radius:0 0 8px 8px;background:#9fb0c1}
@media(max-width:980px){
 .pcard{position:relative;top:auto;transform:none}
 .pcard-in::after{display:none}
 .pcard-in,.pcard:nth-child(even) .pcard-in{grid-template-columns:1fr;min-height:0}
 .pcard:nth-child(even) .pmedia{order:0}
 .pmedia.ph{min-height:0;aspect-ratio:4/3}
}

/* StarLab band */
.stars-cv{position:absolute;inset:0;z-index:-1;width:100%;height:100%;pointer-events:none}
.sl-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,7vw,96px);align-items:center}
.specs{display:flex;flex-wrap:wrap;gap:18px 40px;margin:34px 0 36px}
.specs p{display:flex;flex-direction:column}
.specs b{color:var(--gold);font-size:clamp(2.4rem,4.4vw,3.6rem);font-weight:800;line-height:1;letter-spacing:-.04em}
.specs span{margin-top:6px;color:rgba(255,255,255,.8);font-weight:600}
@media(max-width:900px){.sl-grid{grid-template-columns:1fr}}

/* grant band */
.gr-grid{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center}
.big{color:var(--navy);font-size:clamp(4.6rem,12vw,10rem);line-height:.9;letter-spacing:-.055em;white-space:nowrap}
.gr-text{color:var(--ink);font-size:clamp(1.2rem,2vw,1.6rem);font-weight:600;line-height:1.45}
.links{display:flex;flex-wrap:wrap;gap:4px 28px;margin-top:18px}
@media(max-width:760px){.gr-grid{grid-template-columns:1fr}}

/* photo strip */
.rows{display:grid;gap:16px}
.srow{overflow:hidden}
.track{display:flex;gap:16px;width:max-content}
.js .track{animation:mq 80s linear infinite}
.srow.rev .track{animation-direction:reverse}
.srow:hover .track,.srow.hold .track{animation-play-state:paused}
.track figure{flex:none;height:240px;aspect-ratio:4/3;overflow:hidden;border-radius:var(--r);background:#c9d6e3}
.track img{width:100%;height:100%;object-fit:cover;transition:scale .8s var(--ease)}
@media(hover:hover){.track figure:hover img{scale:1.06}}
@keyframes mq{to{transform:translateX(calc(-50% - 8px))}}
@media(max-width:760px){.track figure{height:150px}}

/* closing band */
.close{padding:clamp(84px,11vw,140px) 0;text-align:center}
.bigcall{display:inline-block;margin-top:14px;color:#fff;font-size:clamp(2.1rem,6.2vw,5.2rem);font-weight:800;line-height:1.05;letter-spacing:-.04em;text-decoration:none}
.bigcall span{color:var(--gold);white-space:nowrap}
@media(hover:hover){.bigcall:hover span{text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:8px}}

/* footer */
.foot{padding:72px 0 28px;border-top:1px solid var(--gold);background:var(--navy);color:rgba(255,255,255,.75);font-size:16px}
.foot-grid{display:grid;grid-template-columns:1.25fr .8fr 1.25fr .9fr;gap:40px}
.foot-brand img{width:170px}
.motto{margin-top:16px;color:#fff;font-weight:700}
.foot-brand .btn{margin-top:20px}
.fcol{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.fcol b{margin-bottom:8px;color:#fff}
.fcol a{display:inline-flex;align-items:center;min-height:40px;color:rgba(255,255,255,.85);text-decoration:none;overflow-wrap:anywhere}
.fcol a:hover{color:var(--gold)}
.fcol address{margin-top:6px;font-style:normal;line-height:1.55}
.social{display:flex;gap:4px;margin-left:-10px}
.social a{display:grid;place-items:center;width:44px;height:44px;color:#fff}
.social svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.social a:hover{color:var(--gold)}
.foot-bot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:56px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.6);font-size:14px}
@media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.foot{padding-top:56px}.foot-grid{grid-template-columns:1fr;gap:32px}.fcol a{min-height:44px}}

/* inner page heroes and splits */
.phero{padding:clamp(44px,7vw,96px) 0 clamp(64px,8vw,112px)}
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(36px,6vw,84px);align-items:center}
.split.flip>:first-child{order:2}
.split.top{align-items:start}
@media(max-width:900px){.split{grid-template-columns:1fr}.split.flip>:first-child{order:0}}

/* programs page */
.jump{position:sticky;top:var(--hh);z-index:80;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.jump .wrap{display:flex;gap:32px;overflow-x:auto;scrollbar-width:none}
.jump .wrap::-webkit-scrollbar{display:none}
.jump a{position:relative;flex:none;padding:17px 0;color:var(--ink);font-size:16px;font-weight:700;text-decoration:none;white-space:nowrap}
.jump a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;transition:transform .45s var(--ease)}
.jump a.cur::after,.jump a:hover::after{transform:scaleX(1)}
.jump a.cur{color:var(--navy)}
.psec{padding:clamp(72px,9vw,120px) 0;scroll-margin-top:calc(var(--hh) + 56px)}
.olist{columns:2;column-gap:32px;margin-top:24px;padding:0;list-style:none}
.olist li{position:relative;padding:0 0 12px 22px;font-weight:600;break-inside:avoid}
.olist li::before{content:"";position:absolute;left:0;top:.6em;width:9px;height:9px;border-radius:50%;background:var(--gold)}
.note{margin-top:18px;color:var(--muted)}
.sch-h{margin-top:clamp(48px,6vw,72px);color:var(--navy);font-size:clamp(1.5rem,2.4vw,2rem)}
.schools{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:24px;padding:0;list-style:none}
.schools li{padding:18px 18px 16px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:0 10px 24px -20px rgba(5,39,71,.4)}
.schools b{display:block;color:var(--navy);line-height:1.3}
.schools span{display:block;margin-top:4px;color:var(--muted);font-size:15px}
.rates{width:100%;max-width:460px;margin-top:24px;border-collapse:collapse}
.rates th,.rates td{padding:14px 4px;border-bottom:1px solid var(--line);text-align:left}
.rates th{color:var(--muted);font-weight:600}
.rates td{color:var(--navy);font-size:19px;font-weight:800;text-align:right}
.mini{margin-top:28px;color:var(--navy);font-size:20px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding:0;list-style:none}
.chips li{padding:8px 14px;background:#fff;border:1px solid var(--line);border-radius:var(--rb);color:var(--navy);font-size:15px;font-weight:600}
@media(max-width:980px){.schools{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.schools{grid-template-columns:1fr}.olist{columns:1}}
.faq{max-width:880px;margin:44px auto 0;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:44px;padding:22px 0;color:var(--navy);font-size:19px;font-weight:700;line-height:1.35;list-style:none;cursor:pointer}
.faq summary::-webkit-details-marker{display:none}
.pl{position:relative;flex:none;width:22px;height:22px;transition:transform .45s var(--ease)}
.pl::before,.pl::after{content:"";position:absolute;left:2px;right:2px;top:10px;height:2px;border-radius:2px;background:var(--blue)}
.pl::after{transform:rotate(90deg)}
.faq details[open]:not(.shut) .pl{transform:rotate(135deg)}
.ans{overflow:hidden}
.ans p{padding:0 48px 24px 0;color:var(--muted)}

/* StarLab page */
.spec4{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:44px}
.spec4 p{display:flex;flex-direction:column;padding-top:18px;border-top:1px solid rgba(240,179,16,.5)}
.spec4 b{color:#fff;font-size:clamp(2.2rem,4.4vw,3.6rem);font-weight:800;line-height:1;letter-spacing:-.04em}
.spec4 span{margin-top:8px;color:rgba(255,255,255,.78);font-weight:600}
.min{margin-top:22px;color:var(--gold);font-size:19px;font-weight:700}
.topics-h{margin-top:72px;font-size:20px}
.navy .topics-h{color:var(--gold)}
.topics{margin-top:18px;padding:0;list-style:none}
.topics li{padding:16px 0;border-bottom:1px solid rgba(240,179,16,.45);color:#fff;font-size:clamp(1.9rem,4.6vw,3.6rem);font-weight:800;line-height:1.1;letter-spacing:-.035em}
.topics li:first-child{border-top:1px solid rgba(240,179,16,.45)}
@media(max-width:760px){.spec4{grid-template-columns:1fr 1fr}}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.tile{padding:26px 24px;background:var(--sky);border-top:3px solid var(--gold);border-radius:0 0 var(--r) var(--r)}
.tile h3{color:var(--navy);font-size:22px}
.tile p{margin-top:10px;color:var(--muted)}
@media(max-width:980px){.tiles{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.tiles{grid-template-columns:1fr}}
.card{padding:clamp(22px,3.6vw,40px);background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.plan-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:24px;align-items:start}
.plab{display:block;color:var(--navy);font-size:clamp(1.3rem,2.2vw,1.7rem);font-weight:800;letter-spacing:-.02em}
.prow{display:flex;align-items:center;gap:18px;margin-top:18px}
.prow input[type=number]{flex:none;width:110px;color:var(--navy);font-size:20px;font-weight:800;text-align:center}
.domes{display:flex;flex-wrap:wrap;gap:10px;min-height:70px;margin-top:26px}
.dome{width:88px;height:auto;animation:pop .5s var(--ease) both}
.dome circle{fill:rgba(255,255,255,.22);transition:fill .25s}
.dome circle.on{fill:var(--gold)}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.9)}to{opacity:1;transform:none}}
.plout{margin-top:18px;color:var(--ink);font-size:19px}
.plout b{color:var(--navy)}
.crew p{color:var(--ink);font-size:18px}
.crew .memorial{margin-top:18px;color:var(--muted);font-size:15px}
@media(max-width:900px){.plan-grid{grid-template-columns:1fr}}

/* about page */
.mq{margin-top:22px;color:var(--ink);font-size:clamp(1.25rem,2.3vw,1.7rem);font-weight:400;line-height:1.55}
.tl{position:relative;max-width:980px;margin:56px auto 0;padding:0;list-style:none}
.tl::before,.tl::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--line)}
.tl::after{background:var(--gold);transform:scaleY(var(--tl,0));transform-origin:50% 0}
.tli{position:relative;width:50%;padding:0 56px 56px 0;text-align:right}
.tli.r{margin-left:50%;padding:0 0 56px 56px;text-align:left}
.tli::before{content:"";position:absolute;top:8px;right:-10px;z-index:1;width:20px;height:20px;border:3px solid var(--gold);border-radius:50%;background:#fff}
.tli.r::before{right:auto;left:-10px}
.tli h3{color:var(--navy);font-size:clamp(1.6rem,3vw,2.4rem)}
.tli p{margin-top:8px;color:var(--muted)}
.tli .ph{width:min(100%,300px);margin:16px 0 0 auto}
@media(max-width:760px){.tl::before,.tl::after{left:10px}.tli,.tli.r{width:auto;margin-left:0;padding:0 0 44px 46px;text-align:left}.tli::before,.tli.r::before{left:0;right:auto}.tli .ph{margin-left:0}}
.bgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px;padding:0;list-style:none}
.bgrid li{padding:22px;background:#fff;border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:0 0 var(--r) var(--r)}
.bgrid b{display:block;color:var(--navy);font-size:19px;font-weight:700}
.bgrid span{color:var(--muted)}
@media(max-width:900px){.bgrid{grid-template-columns:1fr 1fr}}
.gi{display:grid;gap:clamp(48px,7vw,88px);margin-top:48px}
.gi h3{color:var(--navy);font-size:clamp(1.6rem,2.8vw,2.3rem)}
.gi-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
.gi-row.flip>.ph{order:2}
.gi-row p{margin-top:12px;color:var(--muted)}
.donate{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:28px 48px;align-items:center;padding:clamp(28px,5vw,56px);border-radius:var(--r)}
.donate p{margin-top:12px;color:rgba(255,255,255,.82)}
.mail{padding:20px 22px;border:1px solid rgba(255,255,255,.18);border-radius:var(--r);color:#fff;font-weight:600;line-height:1.55}
@media(max-width:860px){.gi-row,.donate{grid-template-columns:1fr}.gi-row.flip>.ph{order:0}}

/* contact page */
.ccards{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:40px}
.ccard{display:flex;flex-direction:column;align-items:flex-start}
.ccard h3{color:var(--navy);font-size:22px}
.ccard .role{margin:4px 0 8px;color:var(--muted)}
.ccard a{display:inline-flex;align-items:center;min-height:44px;font-size:18px;font-weight:700;text-decoration:none;overflow-wrap:anywhere}
.ccard address{margin-top:6px;font-style:normal;font-weight:600;line-height:1.6}
@media(max-width:700px){.ccards{grid-template-columns:1fr}}
.cm-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:28px;align-items:start}
.cform h2{font-size:clamp(1.6rem,2.8vw,2.2rem)}
.mapf{aspect-ratio:4/3;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);background:#dfe8f1;box-shadow:var(--sh)}
.mapf iframe{display:block;width:100%;height:100%;border:0}
.map figcaption{margin-top:12px;color:var(--muted);font-size:15px;font-weight:600}
.soc{margin-top:28px}
.soc h3{color:var(--navy);font-size:20px}
.social.dark a{color:var(--navy)}
.social.dark a:hover{color:var(--blue)}
@media(max-width:900px){.cm-grid{grid-template-columns:1fr}}

/* forms */
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}
.full{grid-column:1/-1}
.fl{display:grid;gap:6px;color:var(--navy);font-size:15px;font-weight:700}
.fl .op{color:var(--muted);font-weight:500}
input,select,textarea{width:100%;min-height:52px;padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--rb);background:#fff;color:var(--ink);font-family:inherit;font-size:16px;font-weight:500;line-height:1.4;transition:border-color .2s,box-shadow .2s}
textarea{min-height:120px;resize:vertical}
select{-webkit-appearance:none;appearance:none;padding-right:40px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 8l5 5 5-5' fill='none' stroke='%23052747' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") right 14px center/18px no-repeat}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,83,149,.14)}
.radios{display:flex;flex-wrap:wrap;gap:10px}
.radios label{display:flex;flex:1 1 200px;align-items:center;gap:10px;min-height:52px;padding:10px 14px;border:1.5px solid var(--line);border-radius:var(--rb);color:var(--ink);font-weight:600;cursor:pointer}
.radios input{flex:none;width:20px;height:20px;min-height:0;accent-color:var(--navy)}
.radios label:has(input:checked){border-color:var(--navy);background:var(--sky)}
form .btn{width:100%;margin-top:22px}
.ok{padding:32px 8px;text-align:center;outline:none;animation:fIn .6s var(--ease) both}
.ok svg{width:56px;height:56px;margin:0 auto 14px;color:var(--gold)}
.ok h3{color:var(--navy);font-size:clamp(1.5rem,2.6vw,2rem)}
.ok p{margin-top:10px;color:var(--muted)}
input[type=range]{flex:1;min-height:44px;padding:0;border:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:pointer;box-shadow:none}
input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:8px;background:linear-gradient(90deg,var(--gold) var(--fill,30%),var(--line) var(--fill,30%))}
input[type=range]::-webkit-slider-thumb{width:30px;height:30px;margin-top:-11px;border:4px solid #fff;border-radius:50%;background:var(--navy);box-shadow:0 3px 12px rgba(5,39,71,.4);-webkit-appearance:none}
input[type=range]::-moz-range-track{height:8px;border-radius:8px;background:var(--line)}
input[type=range]::-moz-range-progress{height:8px;border-radius:8px;background:var(--gold)}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border:4px solid #fff;border-radius:50%;background:var(--navy);box-shadow:0 3px 12px rgba(5,39,71,.4)}
input[type=range]:focus{box-shadow:none}
@media(max-width:640px){.fgrid{grid-template-columns:1fr}}

/* reveal engine: content shows without JS, hidden only under .js */
.js [data-rv]{transition:opacity .9s var(--ease),transform .9s var(--ease),box-shadow .5s var(--ease);transition-delay:var(--d,0ms)}
.js [data-rv]:not(.in){opacity:0}
.js [data-rv=up]:not(.in){transform:translateY(56px)}
.js [data-rv=down]:not(.in){transform:translateY(-56px)}
.js [data-rv=left]:not(.in){transform:translateX(-56px)}
.js [data-rv=right]:not(.in){transform:translateX(56px)}
.js [data-rv=zoom]:not(.in){transform:scale(.92)}
.js :is(h1,h2,h3)[data-rv]:not(.in){opacity:1}
.js .sw[data-rv]:not(.in){transform:none}
.sw .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}
.sw .w>span{display:inline-block;transition:transform 1s var(--ease)}
.js .sw:not(.in) .w>span{transform:translateY(110%)}
.js [data-rv] .ph img,.js .ph[data-rv] img{scale:1.12;transition:scale 1.6s var(--ease)}
.js .in .ph img,.js .ph.in img{scale:1}

/* hover, after the reveal rules so they win */
@media(hover:hover){
 .lift:hover{transform:translateY(-6px);box-shadow:0 34px 60px -30px rgba(5,39,71,.4),0 0 0 1px rgba(240,179,16,.55),0 20px 50px -24px rgba(240,179,16,.6)}
 .lift:hover .ph img,.ph.hz:hover img{scale:1.05}
}

@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
 .js [data-rv]:not(.in){opacity:1;transform:none}
 .js .sw:not(.in) .w>span{transform:none}
 .js [data-rv] .ph img,.js .ph[data-rv] img{scale:1}
 .fx i,.js .track{animation:none}
 .curtain{display:none}
}

.track figure.tall{aspect-ratio:3/4}
.gi .navy h3{color:#fff}
.stage .fx i:first-child{background:radial-gradient(closest-side,rgba(0,83,149,.09),rgba(0,83,149,0))}
.stage .fx i:last-child{background:radial-gradient(closest-side,rgba(240,179,16,.12),rgba(240,179,16,0))}

/* home hero v2: YSC shooting star swoosh, star dust, Google rating panel, depth */
.hero.navy{background:radial-gradient(90% 80% at 80% 0%,#0b3d6e 0%,rgba(11,61,110,0) 60%),linear-gradient(180deg,#052747 0%,#041f3c 100%)}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:-1;height:140px;background:linear-gradient(rgba(3,26,51,0),rgba(3,26,51,.55));pointer-events:none}
.hero-cv{inset:-12px;width:calc(100% + 24px);height:calc(100% + 24px)}
.swoosh{position:absolute;left:-65%;top:-17.2%;z-index:-1;width:190%;max-width:none;height:auto;overflow:visible;pointer-events:none}
.swoosh .tr{fill:none;stroke:url(#swg);stroke-linecap:round;stroke-dasharray:1 1.02}
.swoosh .tr:nth-of-type(1){stroke-width:4.6}
.swoosh .tr:nth-of-type(2){stroke-width:3.2}
.swoosh .tr:nth-of-type(3){stroke-width:2}
.swoosh .st{fill:#F5BE22;transform-box:fill-box;transform-origin:50% 50%;rotate:14deg}
.js .swoosh .tr{stroke-dashoffset:1;animation:swDraw 1.8s cubic-bezier(.65,0,.35,1) .35s forwards}
.js .swoosh .tr:nth-of-type(2){animation-delay:.47s}
.js .swoosh .tr:nth-of-type(3){animation-delay:.59s}
.js .swoosh .st{animation:starIn .9s var(--ease) 1.75s both}
@keyframes swDraw{to{stroke-dashoffset:0}}
@keyframes starIn{from{opacity:0;transform:scale(.2) rotate(-120deg)}to{opacity:1;transform:none}}
.hsmall-wrap{position:absolute;z-index:2;left:-14%;bottom:-9%;width:44%}
.hero .hsmall{position:relative;left:auto;bottom:auto;width:100%;rotate:-3deg}
.hero-proof{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:0 20px;max-width:540px;margin-top:34px;padding:16px 22px 16px 18px;border:1px solid rgba(255,255,255,.16);border-radius:var(--r);background:rgba(255,255,255,.045)}
.gscore{display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding-right:20px;border-right:1px solid rgba(255,255,255,.16)}
.gtop{display:flex;align-items:center;gap:8px}
.gscore .gl{width:22px;height:22px}
.gscore b{color:#fff;font-size:26px;font-weight:800;line-height:1;letter-spacing:-.02em}
.gscore a{color:rgba(255,255,255,.75);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}
.gscore a:hover{color:var(--gold)}
.gquote blockquote{color:#fff;font-size:17px;font-weight:600;line-height:1.45}
.gquote p{margin-top:4px;color:rgba(255,255,255,.66);font-size:14px}
@media(max-width:900px){.hsmall-wrap{left:-12%;bottom:-10%;width:46%}.hero-proof{margin-top:8px}}
@media(max-width:420px){.hero-proof{padding:14px 16px;column-gap:16px}.gscore{padding-right:16px}.gquote blockquote{font-size:16px}}
@media(prefers-reduced-motion:reduce){.js .swoosh .tr{stroke-dashoffset:0}}
