:root{--cream:#FFF8F0;--coral:#FF6B4A;--teal:#14A3A0;--navy:#1B2340;--navy2:#2A3358;--gold:#FFD37A;--moon:#E8ECF8;}
body{margin:0;font-family:'Nunito',sans-serif;background:#f3e9dc;}
.serif{font-family:'Fraunces',serif;font-style:italic;}
.shell{max-width:480px;margin:0 auto;min-height:100vh;background:var(--cream);position:relative;box-shadow:0 0 40px rgba(0,0,0,.08);}
.night{background:linear-gradient(180deg,var(--navy),var(--navy2));color:var(--moon);}
.star{position:absolute;width:2px;height:2px;background:#fff;border-radius:50%;animation:tw 3s infinite ease-in-out;}
@keyframes tw{0%,100%{opacity:.2}50%{opacity:1}}
.moon{position:absolute;top:18px;right:22px;font-size:44px;filter:drop-shadow(0 0 18px rgba(255,211,122,.7));animation:float 5s infinite ease-in-out;}
@keyframes float{50%{transform:translateY(-6px)}}
.shoot{position:absolute;top:60px;left:-40px;width:80px;height:2px;background:linear-gradient(90deg,transparent,#fff);animation:shoot 9s infinite linear;opacity:0}
@keyframes shoot{0%{transform:translate(0,0) rotate(15deg);opacity:0}3%{opacity:1}10%{transform:translate(500px,130px) rotate(15deg);opacity:0}100%{opacity:0}}
.glass{background:rgba(120,130,220,.13);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);}
.pop{animation:pop .35s ease-out both}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.bounce{animation:b 1s infinite}
@keyframes b{50%{transform:translateY(-4px)}}
.confetti{position:fixed;top:-10px;width:8px;height:12px;z-index:99;animation:fall 1.8s linear forwards}
@keyframes fall{to{transform:translateY(105vh) rotate(720deg)}}
.glowdot{box-shadow:0 0 8px 2px var(--gold)}
input,select{outline:none}