
body{margin:0;background:#FBF7F0}
a{color:#141A3C}a:hover{color:#C8102E}
html{scroll-behavior:smooth}
@keyframes rvUp{from{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}
@keyframes heroIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes draw{from{stroke-dashoffset:600}to{stroke-dashoffset:0}}
.rv{animation:rvUp linear both;animation-timeline:view();animation-range:entry 0% cover 26%}
.hero-in{animation:heroIn .9s var(--spring) both}
.marq{animation:marq 28s linear infinite}
.spin{animation:spin 18s linear infinite}
.floaty{animation:floaty 5s ease-in-out infinite}
.scribble{stroke-dasharray:600;animation:draw 1.4s .5s cubic-bezier(.6,0,.2,1) both}
.pol{transition:transform .5s var(--spring),box-shadow .5s}
.pol:hover{transform:rotate(0deg) scale(1.05)!important;box-shadow:0 30px 60px -20px rgba(20,26,60,.45);z-index:5}
.lift{transition:transform .5s var(--spring),box-shadow .5s}
.lift:hover{transform:translateY(-8px);box-shadow:0 28px 50px -22px rgba(20,26,60,.35)}
.zoom img{transition:transform .8s var(--spring)}
.zoom:hover img{transform:scale(1.07)}
.pill{transition:transform .25s var(--spring),filter .25s}
.pill:hover{transform:scale(1.03);filter:brightness(1.06)}
.pill:active{transform:scale(.96)}
.strip{scroll-snap-type:x mandatory}
.strip>figure{scroll-snap-align:start}
@media (prefers-reduced-motion: reduce){.rv,.hero-in,.marq,.spin,.floaty,.scribble{animation:none}.pol,.lift,.pill,.zoom img{transition:none}.scribble{stroke-dasharray:none}}

:root{--spring:cubic-bezier(.32,.72,0,1);--easein:cubic-bezier(.4,0,1,1);interpolate-size:allow-keywords}
@keyframes ovFadeIn{0%{opacity:0}100%{opacity:1}}
@keyframes modalPopIn{0%{opacity:0;transform:scale(.94) translateY(8px)}100%{opacity:1;transform:scale(1) translateY(0)}}
@keyframes sheetUp{0%{transform:translate3d(0,100%,0)}100%{transform:none}}
@keyframes rowIn{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:none}}
@keyframes contentFadeIn{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:none}}
@keyframes loginShake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}
@keyframes skelSweep{0%{background-position:100% 0}100%{background-position:-100% 0}}
.ov{animation:ovFadeIn .25s ease both}
.sheet{animation:modalPopIn .5s var(--spring) both}
@media (max-width:640px){.ov{align-items:flex-end!important;padding:0!important}.sheet{animation:sheetUp .46s var(--spring) both;border-radius:28px 28px 0 0!important;max-height:88vh}}
.rise{animation:rowIn .5s var(--spring) both}
.rise:nth-child(2){animation-delay:.04s}.rise:nth-child(3){animation-delay:.08s}.rise:nth-child(4){animation-delay:.12s}.rise:nth-child(5){animation-delay:.16s}.rise:nth-child(6){animation-delay:.2s}.rise:nth-child(7){animation-delay:.24s}.rise:nth-child(8){animation-delay:.28s}
main{animation:contentFadeIn .45s var(--spring) both}
.pill:active,button:active{transform:scale(.97)}
.shake{animation:loginShake .5s both}
@media (prefers-reduced-motion: reduce){.ov,.sheet,.rise,main,.shake{animation:none!important}}

/* Apple-style scroll effects */
@keyframes progressGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.scroll-progress{position:fixed;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#C8102E,#FFC93C);transform-origin:0 50%;z-index:200;animation:progressGrow linear both;animation-timeline:scroll(root)}
@keyframes hdrShrink{to{padding-top:2px;padding-bottom:2px}}
@keyframes logoShrink{to{height:60px}}
@keyframes hdrShadow{to{box-shadow:0 10px 30px -18px rgba(20,26,60,.35)}}
.hdr{animation:hdrShadow linear both;animation-timeline:scroll(root);animation-range:0 200px}
.hdr-in{animation:hdrShrink linear both;animation-timeline:scroll(root);animation-range:0 200px}
.hdr-logo{animation:logoShrink linear both;animation-timeline:scroll(root);animation-range:0 200px}
@keyframes heroOut{to{opacity:0;transform:translateY(-60px) scale(.94);filter:blur(6px)}}
.hero-copy{animation:heroOut linear both;animation-timeline:scroll(root);animation-range:0 700px}
@keyframes paraA{to{transform:translateY(-120px) rotate(-10deg)}}
@keyframes paraB{to{transform:translateY(-40px) rotate(9deg)}}
@keyframes paraC{to{transform:translateY(-200px) rotate(2deg)}}
.para-a{animation:paraA linear both;animation-timeline:scroll(root);animation-range:0 800px}
.para-b{animation:paraB linear both;animation-timeline:scroll(root);animation-range:0 800px}
.para-c{animation:paraC linear both;animation-timeline:scroll(root);animation-range:0 800px}
@keyframes blurIn{from{opacity:0;filter:blur(14px);transform:translateY(30px) scale(.97);letter-spacing:.02em}to{opacity:1;filter:blur(0);transform:none}}
.h-reveal{animation:blurIn linear both;animation-timeline:view();animation-range:entry 0% cover 30%}
@keyframes imgZoom{from{transform:scale(1.18)}to{transform:scale(1)}}
.img-zoom{animation:imgZoom linear both;animation-timeline:view();animation-range:entry 0% cover 60%}
@keyframes fillText{from{background-size:0% 100%}to{background-size:100% 100%}}
.fill-text{background:linear-gradient(#141A3C,#141A3C) 0 0/0% 100% no-repeat,#D9D3C7;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fillText linear both;animation-timeline:view();animation-range:cover 15% cover 55%}
@keyframes scaleUp{from{transform:scale(.88);border-radius:60px}to{transform:scale(1)}}
.scale-up{animation:scaleUp linear both;animation-timeline:view();animation-range:entry 0% cover 40%}
@keyframes footerRise{from{transform:translateY(80px);opacity:.2}to{transform:none;opacity:1}}
.footer-rise{animation:footerRise linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
@supports not (animation-timeline: scroll()){.hero-copy,.para-a,.para-b,.para-c,.hdr,.hdr-in,.hdr-logo,.scroll-progress{animation:none}.fill-text{color:#141A3C;background:none}.h-reveal,.img-zoom,.scale-up,.footer-rise{animation:none}}
@media (prefers-reduced-motion: reduce){.scroll-progress,.hdr,.hdr-in,.hdr-logo,.hero-copy,.para-a,.para-b,.para-c,.h-reveal,.img-zoom,.scale-up,.footer-rise{animation:none!important}.fill-text{animation:none!important;color:#141A3C;background:none}}
[hidden]{display:none!important}

*,*::before,*::after{box-sizing:border-box}
body{margin:0;-webkit-font-smoothing:antialiased}
img{max-width:100%}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #FFC93C;outline-offset:2px}
.tm-dlg{padding:0;border:0;margin:0;width:100vw;height:100vh;max-width:100vw;max-height:100vh;background:transparent;overflow:hidden}
.tm-dlg::backdrop{background:transparent}
.tm-dlg[open] .ov{animation:ovFadeIn .28s ease both}
.tm-dlg[open] .sheet{animation:modalPopIn .42s var(--spring) both}
html:has(dialog[open]){overflow:hidden}
.prose{font-size:18px;line-height:1.75;color:#3E4566}
.prose h1{font-family:'Bricolage Grotesque',sans-serif;font-size:56px;line-height:1;color:#141A3C;margin:0 0 18px}
.prose h2{font-family:'Bricolage Grotesque',sans-serif;font-size:30px;color:#141A3C;margin:28px 0 8px}
.prose p{margin:0 0 14px}.prose a{color:#C8102E}.prose ul{padding-left:22px}
.regform{display:flex;flex-direction:column;gap:14px}
.fld{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px}
.fld input,.fld textarea{font:inherit;font-weight:500;font-size:16px;padding:14px 16px;border:1.5px solid #E3DED3;border-radius:16px;background:#FBF7F0;color:#141A3C;transition:border-color .2s,box-shadow .2s}
.fld input:focus,.fld textarea:focus{border-color:#141A3C;box-shadow:0 0 0 4px rgba(255,201,60,.35);outline:none}
.fld input:user-invalid{border-color:#C8102E}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.5;color:#3E4566}
.consent input{width:20px;height:20px;margin-top:1px;accent-color:#C8102E;flex:none}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.chip{background:#FBF7F0;border:1px solid #EEE8DC;border-radius:999px;padding:7px 12px;font-size:13px}
.submit{border:0;background:#C8102E;color:#fff;font:inherit;font-weight:800;font-size:17px;padding:16px 26px;border-radius:999px;cursor:pointer;box-shadow:0 14px 30px -12px rgba(200,16,46,.6)}
.submit[disabled]{opacity:.6;cursor:wait}
.form-err{margin:0;background:#FDE7EA;color:#9B0C24;border-radius:14px;padding:12px 14px;font-weight:700;font-size:14px}
.note{margin:0;background:#FBF7F0;border:1px solid #EEE8DC;border-radius:18px;padding:18px;font-size:16px;line-height:1.6}
.done{text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center;animation:modalPopIn .5s var(--spring) both}
.done h3{margin:0;font-family:'Bricolage Grotesque',sans-serif;font-size:30px}.done p{margin:0;color:#3E4566;line-height:1.6}
.done-ic{width:72px;height:72px;border-radius:50%;background:#E7F4EC;color:#1E6B3E;font-size:36px;font-weight:800;display:flex;align-items:center;justify-content:center}
.shake{animation:loginShake .4s}
@media (max-width: 900px){
  header nav{display:none!important}
  h1{font-size:56px!important}
  h2{font-size:42px!important}
  .ev-title{font-size:44px!important}
  .fill-text{font-size:36px!important}
  [style*="grid-column: span 2"]{grid-column:auto!important}
  #top [style*="height: 560px"]{height:440px!important}
  footer p[style*="font-size: 80px"]{font-size:56px!important}
  #join>div{padding:44px 24px!important}
  #next [style*="padding: 48px"]{padding:30px 24px!important}
  #join [aria-hidden="true"]{width:130px!important;height:130px!important;right:-50px!important;top:-50px!important}
}
@media (max-width: 560px){
  .hdr-logo{height:56px!important}
  .hdr-in>div:last-child a.pill:last-child{display:none}
  h1{font-size:46px!important}
  h2{font-size:36px!important}
  .sheet [style*="padding: 48px 44px"]{padding:40px 24px 24px!important}
  .sheet [style*="padding: 34px 44px"]{padding:24px!important}
  .sheet [style*="font-size: 56px"]{font-size:38px!important}
  #events img[style*="width: 220px"]{width:100%!important;height:180px!important}
  .regcard{padding:22px!important}
}
