*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;font-family:PingFang SC,Noto Sans SC,Microsoft YaHei,Hiragino Sans GB,sans-serif}#slides{width:100%;height:100dvh;position:relative}.slide{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 32px;opacity:0;pointer-events:none;transition:opacity .6s ease;text-align:center;gap:0}.slide.active{opacity:1;pointer-events:all}.slide-1{background:radial-gradient(ellipse at 50% 40%,#4a0040,#1a0020 60%,#0d0015)}.slide-2{background:linear-gradient(145deg,#0d001a,#2d0050,#1a0030)}.slide-3{background:linear-gradient(160deg,#001a2d,#003050,#001a40)}.slide-4{background:linear-gradient(150deg,#1a0d00,#3d1a00,#2d0d10)}.slide-5{background:radial-gradient(ellipse at 50% 60%,#3d0030,#1a0020,#0d0010)}#stars{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.slide>*{position:relative;z-index:1}.anim{opacity:0}.fly-up{transform:translateY(60px)}.fly-right{transform:translate(-60px)}.fly-left{transform:translate(60px)}.pop{transform:scale(.4)}.spin-in{transform:rotate(-15deg) scale(.5)}.drop-down{transform:translateY(-60px)}.anim.in{animation:animIn var(--dur, .7s) cubic-bezier(.22,1,.36,1) var(--delay, 0s) forwards}@keyframes animIn{to{opacity:1;transform:none}}.title-huge{font-size:clamp(2.8rem,11vw,5rem);font-weight:900;color:#fff;letter-spacing:.15em;line-height:1.1;text-shadow:0 0 40px rgba(255,100,180,.6),0 4px 20px rgba(0,0,0,.5)}.title-big{font-size:clamp(1.8rem,6vw,3rem);font-weight:800;color:#fff;line-height:1.3;text-shadow:0 2px 16px rgba(0,0,0,.4)}.title-gradient{background:linear-gradient(135deg,#ff9de2,#ffb347,#ff6b9d);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.title-gold{background:linear-gradient(135deg,#f9c74f,#fff3b0,#f9a825);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.title-blue{background:linear-gradient(135deg,#74b9ff,#a29bfe,#81ecec);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.subtitle{font-size:clamp(.9rem,3vw,1.2rem);color:#ffffffb3;letter-spacing:.2em}.body-text{font-size:clamp(1rem,3.5vw,1.4rem);color:#ffffffe0;line-height:2.1}.em-text{font-size:clamp(1.1rem,4vw,1.6rem);font-weight:700;color:#ff9de2;line-height:1.8}.soft-text{font-size:clamp(.85rem,3vw,1.1rem);color:#ffffff80;letter-spacing:.08em}.cake-wrap{position:relative;display:inline-block;margin-bottom:8px}.cake-emoji{font-size:clamp(5rem,18vw,9rem);display:block;animation:cakeFloat 2.5s ease-in-out infinite;filter:drop-shadow(0 8px 32px rgba(255,100,180,.5))}@keyframes cakeFloat{0%,to{transform:translateY(0) scale(1) rotate(-2deg)}50%{transform:translateY(-16px) scale(1.06) rotate(2deg)}}.sparkle{position:absolute;font-size:1.1rem;animation:sparkleSpin linear infinite;transform-origin:0 0;pointer-events:none}.sparkle:nth-child(1){animation-duration:4s;animation-delay:0s;--sr: 80px}.sparkle:nth-child(2){animation-duration:5s;animation-delay:-1.5s;--sr: 90px}.sparkle:nth-child(3){animation-duration:3.5s;animation-delay:-2.8s;--sr: 75px}.sparkle:nth-child(4){animation-duration:6s;animation-delay:-.8s;--sr: 95px}.sparkle:nth-child(5){animation-duration:4.5s;animation-delay:-3.5s;--sr: 70px}@keyframes sparkleSpin{0%{transform:rotate(0) translate(var(--sr)) scale(.7);opacity:.4}25%{opacity:1;transform:rotate(90deg) translate(var(--sr)) scale(1.1)}50%{opacity:.5;transform:rotate(180deg) translate(var(--sr)) scale(.8)}75%{opacity:1;transform:rotate(270deg) translate(var(--sr)) scale(1.1)}to{transform:rotate(360deg) translate(var(--sr)) scale(.7);opacity:.4}}.deco-ring{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.08);pointer-events:none}.name-glow{position:relative;display:inline-block}.name-glow:after{content:attr(data-text);position:absolute;top:0;right:0;bottom:0;left:0;filter:blur(20px);opacity:.6;background:linear-gradient(135deg,#ff6b9d,gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.divider{width:60px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);border-radius:1px;margin:16px auto}#fireworks{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#progress{position:fixed;bottom:0;left:0;height:3px;background:linear-gradient(90deg,#ff6b9d,gold,#a29bfe);transition:width .4s ease;z-index:20}#tap-hint{position:fixed;bottom:20px;left:0;right:0;text-align:center;font-size:.75rem;color:#ffffff4d;letter-spacing:.1em;z-index:20;animation:pulse 2.5s ease infinite;pointer-events:none}@keyframes pulse{0%,to{opacity:.2}50%{opacity:.6}}.countdown-box{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:4px}.countdown-label{font-size:clamp(.75rem,2.5vw,.95rem);color:#ffffff80;letter-spacing:.08em}.countdown-nums{font-size:clamp(1.4rem,5vw,2rem);font-weight:800;color:#fff;letter-spacing:.04em;background:linear-gradient(135deg,#ff9de2,gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.countdown-nums small{font-size:.5em;font-weight:400;-webkit-text-fill-color:rgba(255,255,255,.45);margin:0 4px 0 1px}#music-btn{position:fixed;top:18px;right:18px;width:40px;height:40px;border-radius:50%;background:#ffffff1f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.1rem;z-index:30;transition:background .2s,transform .2s;-webkit-user-select:none;user-select:none}#music-btn:active{transform:scale(.9)}#music-btn.playing{animation:musicPulse 1.8s ease infinite}@keyframes musicPulse{0%,to{box-shadow:0 0 #ff64b480}50%{box-shadow:0 0 0 8px #ff64b400}}#petals{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;overflow:hidden}.petal{position:absolute;top:-30px;animation:petalFall linear infinite;opacity:0}@keyframes petalFall{0%{opacity:0;transform:translateY(0) rotate(0) translate(0)}10%{opacity:.8}90%{opacity:.3}to{opacity:0;transform:translateY(105vh) rotate(var(--spin)) translate(var(--drift))}}
