:root{--navy:#0b1f4a;--navy2:#143a7a;--red:#c8102e;--red2:#e23a4e;--gold:#e3b23c;--gold2:#f4d27a;--ice:#dcefff;--snow:#f7fbff;--ink:#0d2148;--r:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:70px}
body{margin:0;font:17px/1.6 Nunito,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--snow);overflow-x:hidden}
img{max-width:100%;height:auto}a{color:var(--red)}
.sr,.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.skip{position:absolute;left:-999px;top:0;background:#fff;padding:8px;z-index:99}.skip:focus{left:8px}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.script{font-family:'Mountains of Christmas',Georgia,cursive;color:var(--red)}
h1,h2,h3{line-height:1.15;margin:.2em 0 .4em}h2{font-size:clamp(1.8rem,4.5vw,2.7rem);text-align:center;color:var(--navy)}
.sub{text-align:center;max-width:680px;margin:0 auto 26px;color:#3a4f78}
#snow{position:fixed;inset:0;pointer-events:none;z-index:50}
/* lights */
.lights{position:fixed;top:0;left:0;right:0;height:22px;z-index:60;pointer-events:none;background:radial-gradient(circle at 50% -40px,transparent 46px,#16301f 47px,#16301f 49px,transparent 50px) 0 0/80px 40px repeat-x}
.lights::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20px 11px,#ff4d5e 5px,transparent 6px) 0 0/80px 22px repeat-x,radial-gradient(circle at 60px 11px,#ffd34d 5px,transparent 6px) 0 0/80px 22px repeat-x;animation:tw 1.6s steps(2) infinite;filter:drop-shadow(0 0 6px #fff8)}
.lights::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 40px 14px,#4dc3ff 5px,transparent 6px) 0 0/80px 22px repeat-x,radial-gradient(circle at 0px 8px,#5bff8a 5px,transparent 6px) 0 0/80px 22px repeat-x;animation:tw 1.6s steps(2) infinite .8s;filter:drop-shadow(0 0 6px #fff8)}
@keyframes tw{50%{opacity:.25}}
/* nav */
.nav{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:26px 20px 10px;background:rgba(11,31,74,.92);backdrop-filter:blur(8px);color:#fff}
.brand{display:flex;gap:10px;align-items:center;color:#fff;text-decoration:none;font-weight:800}.brand img{border-radius:50%;background:#fff}
.links{display:flex;gap:4px;align-items:center}.links a{color:#fff;text-decoration:none;padding:8px 12px;border-radius:99px;font-weight:600;font-size:.95rem}.links a:hover{background:#ffffff1f}
.links .pill{background:var(--gold);color:var(--navy)}
.menu-btn{display:none;background:none;border:2px solid #fff6;color:#fff;font-size:1.3rem;border-radius:10px;padding:2px 10px}
/* hero */
.hero{position:relative;color:#fff;background:radial-gradient(ellipse at 70% 10%,#2b5fb3 0,transparent 60%),linear-gradient(180deg,#0b1f4a 0%,#143a7a 60%,#2a63b8 100%);padding:40px 0 110px;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(1.5px 1.5px at 10% 20%,#fff,transparent),radial-gradient(1px 1px at 30% 70%,#fff,transparent),radial-gradient(2px 2px at 80% 30%,#fff,transparent),radial-gradient(1px 1px at 60% 15%,#fff,transparent),radial-gradient(1.5px 1.5px at 90% 60%,#fff,transparent),radial-gradient(1px 1px at 45% 45%,#fff,transparent);opacity:.7}
.hero-inner{position:relative;max-width:1120px;margin:auto;padding:0 20px;display:grid;grid-template-columns:.9fr 1.2fr;gap:48px;align-items:center}
.logo{width:100%;max-width:470px;justify-self:center;border-radius:50%;box-shadow:0 0 0 8px #fff2,0 0 0 16px #e3b23c33,0 30px 60px #0007;animation:bob 6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-10px) rotate(-1deg)}}
.eyebrow{letter-spacing:.12em;text-transform:uppercase;font-size:.8rem;color:var(--gold2);font-weight:800;margin:0}
.hero h1{font-size:clamp(2rem,4.4vw,3.3rem);margin:.15em 0 .25em;text-shadow:0 3px 0 #0005}
.hero h1 span{font-family:'Mountains of Christmas',Georgia,cursive;color:var(--gold2);font-size:1.18em}
.tag{font-size:1.15rem;opacity:.95;max-width:520px}
.count{display:flex;gap:10px;margin:22px 0 6px}.count div{background:#ffffff14;border:1px solid #ffffff38;border-radius:14px;padding:10px 0;width:78px;text-align:center;box-shadow:inset 0 -4px 0 #c8102e}
.count b{display:block;font-size:2rem;line-height:1;font-variant-numeric:tabular-nums}.count small{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;opacity:.85}
.count-cap{margin:4px 0 22px;font-size:.95rem;opacity:.85}
.cta{display:flex;flex-wrap:wrap;gap:12px}.cta .btn{white-space:nowrap;padding:13px 18px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:99px;padding:13px 22px;font:800 1rem Nunito,sans-serif;text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translateY(-2px)}.btn:focus-visible{outline:3px solid var(--gold2);outline-offset:3px}
.btn.red{background:linear-gradient(var(--red2),var(--red));color:#fff;box-shadow:0 6px 0 #8c0a1f,0 10px 20px #0004}
.btn.gold{background:linear-gradient(var(--gold2),var(--gold));color:var(--navy);box-shadow:0 6px 0 #a57b17,0 10px 20px #0004}
.btn.ghost{background:transparent;color:#fff;border:2px solid #fff8}
.btn.big{width:100%;font-size:1.15rem;padding:17px;margin-top:10px}
.hills{position:absolute;bottom:-1px;left:0;width:100%;height:120px}
.sleigh{position:absolute;top:60px;left:-300px;z-index:2;animation:fly 18s linear infinite;filter:drop-shadow(0 0 8px #f4d27a88)}
.sleigh .trail{position:absolute;right:240px;top:36px;width:240px;height:3px;background:linear-gradient(90deg,transparent,#f4d27a);border-radius:3px;opacity:.7}
@keyframes fly{0%{transform:translate(0,40px) rotate(-6deg)}50%{transform:translate(65vw,-10px) rotate(-3deg)}100%{transform:translate(calc(100vw + 600px),30px) rotate(-8deg)}}
/* facts */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:-40px;position:relative;z-index:3}
.facts.small{grid-template-columns:1fr 1fr;margin-top:24px}
.fact{background:#fff;border-radius:var(--r);padding:18px;box-shadow:0 10px 30px #0b1f4a1a;border-top:5px solid var(--red);text-align:center}
.fact:nth-child(even){border-top-color:var(--gold)}.fact span{font-size:1.8rem}.fact h3{font-size:1rem;margin:.3em 0;color:var(--navy2)}.fact p{margin:0;font-weight:700}
.soon{display:inline-block;color:#5a6b8c;background:#eef4fb;border-radius:99px;padding:2px 12px;font-weight:700;font-size:.8rem;line-height:1.6;font-family:Nunito,system-ui,sans-serif}
/* workshop */
.workshop{margin-top:70px;text-align:center}
.meters{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.meter{background:linear-gradient(160deg,#fff,#eef6ff);border:2px dashed #e3b23c88;border-radius:var(--r);padding:22px}
.meter .ico{font-size:2.2rem}.meter .num{display:block;font-size:3rem;color:var(--red);line-height:1.1;font-variant-numeric:tabular-nums}
.meter span{font-weight:700}.meter small{display:block;color:#5a6b8c;margin-top:6px}
.bar{height:14px;background:#dbe6f5;border-radius:99px;overflow:hidden;margin-top:12px}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--red),var(--red2));border-radius:99px;transition:width 1.4s cubic-bezier(.2,.8,.2,1)}
.bar.candy i{background:repeating-linear-gradient(45deg,var(--red) 0 10px,#fff 10px 20px);}
/* about */
.about{display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:center;margin-top:80px}
.about h2{text-align:left}.local{background:var(--ice);padding:14px 16px;border-radius:12px;border-left:5px solid var(--navy2)}
.nice-list{transform:rotate(2deg);max-width:340px;justify-self:center;width:100%}
.paper{background:repeating-linear-gradient(#fdf6e3 0 31px,#e8dcb8 31px 32px);padding:20px 26px 30px;font-family:'Mountains of Christmas',Georgia,cursive;font-size:1.35rem;color:#5b2a12;position:relative;box-shadow:0 10px 30px #0003}
.paper h3{text-align:center;color:var(--red);font-size:2rem;margin:0 0 6px}.paper ol{margin:0;padding-left:28px}
.scroll-top,.scroll-bot{height:22px;background:linear-gradient(#c9a227,#f4d27a,#a57b17);border-radius:12px}
.seal{position:absolute;right:16px;bottom:-14px;width:56px;height:56px;border-radius:50%;background:radial-gradient(var(--red2),#8c0a1f);color:var(--gold2);display:grid;place-items:center;font-size:1.6rem;box-shadow:0 4px 10px #0004}
/* how */
.how{margin-top:90px;padding:70px 0;background:linear-gradient(180deg,#0b1f4a,#143a7a);color:#fff}.how h2{color:#fff}
.steps{list-style:none;padding:0;margin:30px 0 0;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:s}
.steps li{position:relative;background:#ffffff10;border:1px solid #ffffff26;border-radius:var(--r);padding:26px 18px 18px;text-align:center}
.steps .n{position:absolute;top:-16px;left:50%;transform:translateX(-50%);width:34px;height:34px;border-radius:50%;background:var(--gold);color:var(--navy);font-weight:800;display:grid;place-items:center}
.steps .e{font-size:2.4rem}.steps p{opacity:.88;font-size:.95rem;margin:0}
/* donate */
.donate{margin-top:80px}.drops{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.drop{background:#fff;border-radius:var(--r);padding:18px;box-shadow:0 6px 20px #0b1f4a14;border-left:6px solid var(--red)}
.drop h3{margin:0;font-size:1.1rem}.drop p{margin:.2em 0;color:#3a4f78}
.drop.empty{text-align:center;border:2px dashed #b9c8e0;box-shadow:none;background:transparent}
/* forms */
.formsec{margin-top:90px;max-width:860px}
.form-head{display:flex;gap:16px;align-items:center;margin-bottom:14px}.form-head h2{text-align:left;margin:0}.form-head p{margin:.2em 0 0;color:#3a4f78}
.badge{flex:none;width:72px;height:72px;border-radius:50%;background:var(--red);display:grid;place-items:center;font-size:2.2rem;box-shadow:0 0 0 5px #fff,0 0 0 8px var(--red)}.badge.gold{background:var(--gold);box-shadow:0 0 0 5px #fff,0 0 0 8px var(--gold)}
.card{background:#fff;border-radius:22px;padding:26px;box-shadow:0 20px 50px #0b1f4a1f;border:1px solid #e3ebf6;position:relative}
.card::before{content:"";position:absolute;inset:0 0 auto;height:8px;border-radius:22px 22px 0 0;background:repeating-linear-gradient(-45deg,var(--red) 0 14px,#fff 14px 28px)}
.family .card::before{background:repeating-linear-gradient(-45deg,var(--gold) 0 14px,#fff 14px 28px)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px}.span2{grid-column:1/-1}
label{display:block;font-weight:700;font-size:.95rem;color:var(--navy)}
input,select,textarea{display:block;width:100%;margin-top:5px;font:inherit;font-weight:400;padding:12px 14px;border:2px solid #cfdcee;border-radius:12px;background:#fbfdff;color:var(--ink);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--navy2);box-shadow:0 0 0 4px #1d6fd133}
.bad{border-color:var(--red)!important;background:#fff5f6}
.fmsg{display:block;color:var(--red);font-weight:600;font-size:.85rem;margin-top:4px}
fieldset{border:0;padding:0;margin:20px 0}legend{font-weight:800;color:var(--navy);margin-bottom:8px}
.helps{display:flex;flex-wrap:wrap;gap:10px}.helps legend{width:100%}
.chip{position:relative}.chip input{position:absolute;opacity:0;width:1px;height:1px}
.chip span{display:inline-block;padding:9px 15px;border:2px solid #cfdcee;border-radius:99px;font-weight:700;cursor:pointer;background:#fbfdff;transition:.15s}
.chip input:checked+span{background:var(--red);color:#fff;border-color:var(--red);box-shadow:0 4px 12px #c8102e44}
.chip input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.privacy{background:#fff8e1;border:1px solid #f1d58a;border-radius:14px;padding:12px 16px;margin-bottom:16px;font-weight:600}
.kids{display:grid;gap:14px;margin-top:18px}
.kid{background:linear-gradient(160deg,#f3f8ff,#fff);border:2px solid #dce8f8;border-radius:16px;padding:14px 16px;margin:0}
.kid legend{background:var(--navy);color:#fff;padding:3px 14px;border-radius:99px;font-size:.9rem}
.err{color:var(--red);font-weight:700;min-height:1em;margin:10px 0 0}
.success{text-align:center;padding:30px 10px}.success .big-e{font-size:4rem;animation:pop .6s}.success h3{font-size:1.8rem;color:var(--navy)}
@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.2)}}
.outside{background:#eef6ff;border:2px solid #9cc3ef;border-radius:14px;padding:14px;color:var(--navy);font-weight:600}
/* faq */
.faq{margin-top:90px;max-width:820px}
details{background:#fff;border-radius:14px;margin:10px 0;box-shadow:0 4px 14px #0b1f4a12;border:1px solid #e3ebf6}
summary{cursor:pointer;padding:16px 20px;font-weight:800;list-style:none;position:relative;padding-right:50px}summary::-webkit-details-marker{display:none}
summary::after{content:"❄";position:absolute;right:20px;top:14px;color:var(--navy2);transition:transform .3s}details[open] summary::after{transform:rotate(180deg);color:var(--red)}
details p{margin:0;padding:0 20px 18px;color:#3a4f78}
/* sponsors */
.sponsors{margin-top:90px;text-align:center}.sp{display:flex;justify-content:center;align-items:center;gap:20px;flex-wrap:wrap}
.spc{background:#fff;border-radius:var(--r);padding:24px 34px;min-width:250px;box-shadow:0 10px 30px #0b1f4a1a;border-bottom:5px solid var(--gold)}.spi{font-size:2.2rem}.spc h3{margin:.2em 0;color:var(--navy)}.spc p{margin:0;color:#5a6b8c}
.amp{font-family:'Mountains of Christmas',Georgia,cursive;font-size:3rem;color:var(--red)}
/* footer */
.foot{margin-top:90px;background:var(--navy);color:#fff;text-align:center;padding:50px 0 40px;position:relative}
.foot::before{content:"";position:absolute;top:-30px;left:0;right:0;height:31px;background:radial-gradient(circle at 30px 0,transparent 30px,var(--navy) 31px) 0 0/60px 31px repeat-x}
.foot img{border-radius:50%}.btn.fb{background:#1877f2;color:#fff;margin:8px 0}.tiny{opacity:.6;font-size:.85rem}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--navy);color:#fff;padding:14px 22px;border-radius:99px;z-index:70;box-shadow:0 10px 30px #0006;font-weight:700}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}.reveal.in{opacity:1;transform:none}
/* responsive */
@media (max-width:880px){
 .hero-inner{grid-template-columns:1fr;text-align:center;gap:16px}.logo{max-width:300px}.count,.cta{justify-content:center}.tag{margin:auto}
 .facts{grid-template-columns:1fr 1fr}.meters,.steps{grid-template-columns:1fr 1fr}.about{grid-template-columns:1fr}.about h2{text-align:center}
 .menu-btn{display:block}.links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;background:var(--navy);padding:10px}.links.open{display:flex}
}
@media (max-width:560px){
 body{font-size:16px}.hero{padding:24px 0 90px}.logo{max-width:250px}.count div{width:66px}.count b{font-size:1.6rem}
 .meters,.steps,.grid{grid-template-columns:1fr}.facts,.facts.small{grid-template-columns:1fr 1fr;gap:10px}.fact{padding:14px 8px}.card{padding:20px 16px}.form-head{flex-direction:column;text-align:center}.form-head h2{text-align:center}
 .cta .btn{flex:1 1 100%}.brand span{font-size:.9rem}.amp{width:100%}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}html{scroll-behavior:auto}.sleigh{display:none}.reveal{opacity:1;transform:none}}

.hero-date{margin:.4em 0 .8em;font-size:1.1rem;color:#fff}.hero-date b{color:#f4d27a}
.bar{position:relative}.ly{position:absolute;top:-6px;bottom:-6px;width:3px;background:#0d2148;border-radius:2px;margin-left:-1px}
.ly::after{content:attr(data-t);position:absolute;top:-1.6em;left:50%;transform:translateX(-50%);font-size:.72rem;white-space:nowrap;font-style:normal;font-weight:800;color:#0d2148}
.ly[hidden]{display:none}.bar{overflow:visible!important;margin-top:1.6em}
.goal-label{text-align:center;font-weight:800;color:#c8102e;font-size:1.15rem;margin-top:1em}.ly-note{text-align:center;opacity:.85}
.spl{display:block;width:100%;max-width:260px;height:auto;margin:0 auto 10px;background:#fff;border-radius:12px;padding:8px}
.reg-soon{background:#fff;border:3px dashed #c9a227;border-radius:16px;padding:28px;text-align:center;margin:12px 0}.reg-soon .big-e{font-size:3rem}
[hidden]{display:none!important}

.music-btn{position:fixed;left:16px;bottom:16px;z-index:1000;display:flex;align-items:center;gap:8px;min-height:48px;padding:10px 16px;border-radius:999px;border:2px solid var(--gold);background:var(--navy);color:var(--snow);font:600 15px/1 inherit;font-family:inherit;box-shadow:0 6px 18px rgba(0,0,0,.25);cursor:pointer}
.music-btn:hover{background:var(--navy2)}.music-btn:focus-visible{outline:3px solid var(--gold2);outline-offset:3px}
.music-btn[aria-pressed="true"]{background:var(--red);border-color:var(--gold2)}
.music-btn[aria-pressed="true"] .mi{animation:mbob 1.2s ease-in-out infinite}
@keyframes mbob{50%{transform:translateY(-3px) rotate(-8deg)}}
@media (prefers-reduced-motion:reduce){.music-btn .mi{animation:none!important}}
.fact{min-width:0;overflow-wrap:anywhere}
