:root{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#fff;background:#160d38;font-synthesis:none}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;min-height:100%;overflow-x:hidden}button{font:inherit;color:inherit;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:4px solid #fff36e;outline-offset:3px}.game{position:relative;width:100%;min-height:100svh;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 15%,#5c47a6 0,#2d1b68 40%,#140b37);transition:background .7s}.scene{position:relative;z-index:3;width:min(100%,760px);min-height:100svh;margin:auto;padding:max(68px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center}.sky{position:absolute;inset:0;pointer-events:none;overflow:hidden}.sky i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 9px 3px #9fe8ff;animation:twinkle var(--d) ease-in-out infinite alternate}.sound-toggle{position:fixed;z-index:50;top:max(14px,env(safe-area-inset-top));right:14px;width:48px;height:48px;border-radius:50%;font-size:22px;background:#ffffff20;border:1px solid #ffffff44;backdrop-filter:blur(12px)}.partner-badge{position:fixed;z-index:20;top:max(12px,env(safe-area-inset-top));left:14px;width:54px;height:54px;overflow:hidden;border-radius:50%;background:#ffffff21;border:2px solid #fff58a}.partner-badge svg{width:54px;transform:translateY(2px)}.assistant{position:fixed;z-index:19;right:-16px;bottom:62px;width:76px;filter:drop-shadow(0 5px 6px #180c42aa);animation:peek 5s ease-in-out infinite;pointer-events:none}.subtitle{position:fixed;z-index:100;left:50%;bottom:max(18px,env(safe-area-inset-bottom));width:min(calc(100% - 36px),620px);padding:13px 18px;border-radius:18px;background:#17102be8;border:1px solid #ffffff55;box-shadow:0 8px 30px #0008;text-align:center;font-size:clamp(16px,4.5vw,20px);font-weight:700;transform:translate(-50%,150%);opacity:0;transition:.28s;pointer-events:none}.subtitle.show{transform:translate(-50%);opacity:1}.effects-canvas{position:fixed;inset:0;z-index:45;pointer-events:none}.primary,.secondary{min-height:52px;padding:13px 25px;border-radius:999px;font-size:17px;font-weight:800;box-shadow:0 7px #50318d,0 12px 25px #0d062c66;transition:transform .16s,box-shadow .16s}.primary{background:linear-gradient(135deg,#ff72c6,#8b78ff 52%,#58d7ff)}.secondary{background:#ffffff1c;border:2px solid #ffffff99;box-shadow:0 6px #1b1049}.primary:active,.secondary:active{transform:translateY(5px);box-shadow:0 2px #50318d}.scene-title,.compact-title{text-align:center;z-index:2}.scene-title span,.compact-title span,.eyebrow{display:inline-block;color:#fff28b;font-size:13px;font-weight:900;letter-spacing:.12em}.scene-title h1,.compact-title h1{margin:8px 0;font-family:ZCOOL KuaiLe,PingFang SC,sans-serif;line-height:1.08;text-shadow:0 4px 0 #4d2b86}.scene-title h1{font-size:clamp(32px,9vw,52px)}.compact-title h1{font-size:clamp(25px,7.2vw,39px)}.scene-title p,.compact-title p{margin:8px auto 14px;color:#e4e2ff}.home-scene .scene{justify-content:center}.hero-panel{position:relative;width:min(100%,520px);padding:34px 20px 26px;text-align:center;border:1px solid #ffffff42;border-radius:38px;background:linear-gradient(145deg,#ffffff1f,#a377ff14);box-shadow:inset 0 1px #fff5,0 24px 60px #0b052b77;backdrop-filter:blur(8px)}.hero-panel h1{margin:14px 0;font-family:ZCOOL KuaiLe,PingFang SC,sans-serif;font-size:clamp(45px,13vw,76px);line-height:1;text-shadow:0 5px 0 #4b2b86,0 0 32px #a6eaff}.hero-panel h1 span{color:#fff083}.hero-panel p{color:#e6e5ff;font-weight:700}.hero-panel small{display:block;margin-top:18px;color:#c9c2ee}.home-decor{position:absolute;inset:0;z-index:1;pointer-events:none}.moon{position:absolute;top:8%;left:8%;width:58px;height:58px;border-radius:50%;background:#fff6a0;box-shadow:0 0 35px #fff294;pointer-events:auto}.moon:after{content:"";position:absolute;width:46px;height:46px;left:20px;top:-8px;border-radius:50%;background:#433184}.moon.secret-open:before{content:"!";position:absolute;z-index:2;left:22px;top:13px;color:#6d4494;font-weight:900;font-size:24px}.rainbow{position:absolute;left:-60px;bottom:8%;width:220px;height:115px;border-radius:220px 220px 0 0;border:15px solid #ff78ae;border-bottom:0;box-shadow:inset 0 0 0 14px #ffc96d,inset 0 0 0 28px #78e1d5,inset 0 0 0 42px #8c82f5;opacity:.8}.castle{position:absolute;right:2%;bottom:0;width:130px;height:145px;opacity:.45}.castle i{position:absolute;bottom:0;width:42px;height:105px;background:#a687ed;border-radius:10px 10px 0 0}.castle i:before{content:"";position:absolute;left:-5px;top:-29px;border-left:26px solid transparent;border-right:26px solid transparent;border-bottom:31px solid #ffc9ef}.castle i:nth-child(2){left:44px;height:140px}.castle i:nth-child(3){left:88px;height:90px}.balloon{position:absolute;width:42px;height:54px;border-radius:50%;animation:float 3s ease-in-out infinite}.balloon:after{content:"";position:absolute;left:20px;top:52px;height:90px;border-left:1px solid #fff8}.b1{right:12%;top:15%;background:#ff78b8}.b2{left:18%;top:20%;background:#65dff1;animation-delay:-1.3s}.ribbon{position:absolute;width:80px;height:80px;border:7px solid transparent;border-top-color:#ffd760;border-radius:50%}.r1{right:18%;top:43%;transform:rotate(45deg)}.r2{left:5%;top:54%;border-top-color:#ff8ed5}.hidden-star{position:absolute;z-index:12;width:50px;height:50px;background:transparent;color:#fff7a0;font-size:25px;filter:drop-shadow(0 0 8px #fff);animation:twinkle 1.2s infinite alternate}.hidden-star.found{opacity:.25;pointer-events:none}.hs-home{right:9%;top:8%}.hs-battle{left:2%;bottom:2%}.hs-cake{right:5%;top:23%}.partner-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;width:100%;margin-top:18px}.partner-card{min-height:360px;padding:18px 12px;border-radius:27px;background:linear-gradient(160deg,#ffffff27,#6753a634);border:2px solid #ffffff3d;box-shadow:0 12px 30px #0d072d77}.partner-card .character{height:185px;transition:.3s}.partner-card svg{width:100%;height:100%;filter:drop-shadow(0 10px 7px #10072d55)}.partner-card h2{margin:6px 0;color:#fff17c}.partner-card p{min-height:46px;color:#dbd6fa;font-size:14px}.partner-card span{display:inline-block;padding:8px 12px;border-radius:20px;background:#ffffff15;font-weight:800}.partner-card.selected{border-color:#fff079;background:#ffffff38;animation:pop .5s}.partner-card.selected .character{animation:victoryDance .55s infinite alternate}.battle-scene .scene{padding-left:10px;padding-right:10px}.battle-hud{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 13px;border-radius:16px;background:#160e3aa8;font-size:13px}.timer{flex:1;max-width:280px;height:10px;border-radius:8px;background:#ffffff1f;overflow:hidden}.timer i{display:block;height:100%;background:linear-gradient(90deg,#62e8db,#fff174,#ff77bd);animation:timer 19s linear forwards}.battlefield{position:relative;width:100%;flex:1;min-height:480px;margin-top:8px;border-radius:28px;background:linear-gradient(#725ec237,#35286f45),radial-gradient(circle at 50% 90%,#8ce9e944,transparent 50%);border:1px solid #ffffff28;overflow:hidden}.battlefield:after{content:"";position:absolute;left:0;right:0;bottom:0;height:25%;background:linear-gradient(transparent,#5f60aa66);clip-path:polygon(0 60%,10% 20%,22% 60%,35% 12%,48% 65%,64% 22%,75% 65%,90% 18%,100% 55%,100% 100%,0 100%)}.monster{position:absolute;z-index:2;width:100px;height:100px;background:transparent;animation:monsterIn .35s both,monsterBob .7s .35s infinite alternate}.monster svg{width:100%;height:100%;overflow:visible}.monster.hit{pointer-events:none}.monster.hit.reaction-0{animation:spinAway 1.3s forwards}.monster.hit.reaction-1{animation:flagAway 1.7s forwards}.monster.hit.reaction-2{animation:fakeFall 1.8s forwards}.monster.hit.reaction-3{animation:jumpAway 1.2s forwards}.monster.tiptoe-away{animation:tiptoe 1s forwards;pointer-events:none}.white-flag{animation:wave .3s infinite alternate;transform-origin:77px 80px}.pets-scene .scene{padding-left:10px;padding-right:10px}.pet-field{position:relative;width:100%;height:470px;border-radius:28px;background:linear-gradient(#ffffff10,#789adf22),radial-gradient(ellipse at bottom,#7ce3bd66,transparent 60%);border:1px solid #ffffff28;overflow:hidden}.pet{position:absolute;width:118px;height:125px;background:transparent}.pet svg{width:100%;height:95px;overflow:visible;animation:petFloat 2s ease-in-out infinite;animation-delay:calc(var(--i) * -.35s)}.pet span{display:inline-block;padding:3px 8px;border-radius:10px;background:#271753cc;font-size:12px;font-weight:800}.pet:nth-child(1){left:3%;top:5%}.pet:nth-child(2){right:4%;top:7%}.pet:nth-child(3){left:34%;top:35%}.pet:nth-child(4){left:4%;bottom:3%}.pet:nth-child(5){right:3%;bottom:3%}.pet.dodging{animation:petDodge .8s ease}.pet.dodging svg,.pet.caught svg{animation:none}.pet.dodging .pet-tongue{display:block}.pet.caught{animation:caught .8s forwards;pointer-events:none}.pet-album{display:flex;align-items:center;gap:10px;width:min(100%,420px);margin-top:10px;padding:8px 12px;border-radius:18px;background:#170e40b8}.pet-album>b{font-size:13px;white-space:nowrap}.pet-album>div{display:flex;gap:8px}.pet-album i,.pet-album>div>div{width:54px;height:54px;border-radius:13px;background:#ffffff13;border:1px dashed #ffffff5c}.pet-album svg{width:52px;height:52px}.cake-scene .scene{justify-content:flex-start}.cake-wrap{display:flex;align-items:center;justify-content:center;flex:1;width:100%;min-height:410px}.cake{position:relative;width:300px;filter:drop-shadow(0 24px 25px #0a052777);transition:.5s}.cake.all-lit{filter:drop-shadow(0 0 36px #fff178)}.candles{position:absolute;z-index:5;left:34px;right:34px;top:-67px;display:flex;justify-content:space-around;align-items:flex-end}.candle{position:relative;width:44px;height:82px;background:transparent}.candle b{display:block;position:absolute;bottom:0;left:14px;width:15px;height:55px;border-radius:7px 7px 2px 2px;background:repeating-linear-gradient(45deg,#61dded 0 8px,#fdf6a0 8px 16px);border:2px solid #fff}.flame{position:absolute;z-index:2;left:14px;top:6px;width:16px;height:22px;border-radius:60% 45% 55% 35%;background:#65708e;transform:rotate(45deg) scale(.45);opacity:.45}.candle.lit .flame{background:#fff267;box-shadow:0 0 15px 5px #ffae50;opacity:1;transform:rotate(45deg);animation:flame .3s infinite alternate}.leg{position:absolute;bottom:-13px;width:3px;height:14px;background:#432b65}.leg.l{left:2px;transform:rotate(15deg)}.leg.r{right:2px;transform:rotate(-15deg)}.naughty.running{animation:candleRun 1s ease-in-out}.tier{margin:auto;border:4px solid #fff2ee;border-radius:20px;background:linear-gradient(90deg,#fc83bc,#ba79ef);text-align:center}.tier-one{width:215px;height:105px;padding:36px 10px;font-size:23px;letter-spacing:20px}.tier-two{width:285px;height:118px;padding:43px 10px;background:linear-gradient(90deg,#797ee8,#60cae9);font-size:21px;font-weight:900;letter-spacing:.2em}.icing{position:absolute;z-index:2;left:45px;width:210px;height:28px;border-radius:50%;background:#fff4ee}.icing.top{top:-10px}.icing.middle{left:7px;top:89px;width:285px}.cake-plate{width:325px;height:22px;margin-left:-13px;border-radius:50%;background:#e4deff}.candle-progress{padding:9px 17px;border-radius:18px;background:#ffffff18;font-weight:700}.reward-overlay{position:fixed;z-index:60;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;background:#1a0d43e8;backdrop-filter:blur(8px);animation:fadeIn .4s}.reward-star{font-size:120px;color:#fff371;filter:drop-shadow(0 0 25px #ffe760);animation:starBounce .8s infinite alternate}.reward-overlay h2{margin:2px;font-family:ZCOOL KuaiLe;font-size:42px}.reward-overlay p{max-width:380px;font-weight:700;color:#e7e1ff}.achievement{position:fixed;z-index:110;top:16%;left:50%;transform:translate(-50%);width:min(90%,420px);padding:16px;border-radius:18px;text-align:center;background:#ffe76c;color:#4e3474;font-weight:900;box-shadow:0 8px 35px #fff05c99;animation:achievement 4s both}.merge-scene .scene{justify-content:center}.star-merge{position:relative;width:310px;height:310px;margin:8px}.orbit-star{position:absolute;display:flex;flex-direction:column;align-items:center;transition:1.4s cubic-bezier(.65,-.2,.2,1.2)}.orbit-star b{font-size:66px;color:#fff176;filter:drop-shadow(0 0 12px #fff176)}.orbit-star span{font-size:12px;font-weight:800}.s1{left:0;top:45%}.s2{right:0;top:45%}.s3{left:38%;top:0}.rainbow-star{position:absolute;left:50%;top:50%;font-size:120px;transform:translate(-50%,-40%) scale(0);color:#fff;filter:drop-shadow(0 0 18px #ff79bd);transition:1s 1s}.merged .orbit-star{left:50%;top:50%;transform:translate(-50%,-50%) scale(.2);opacity:0}.merged .rainbow-star{transform:translate(-50%,-40%) scale(1);animation:hue 2s infinite}.treasure{position:relative;width:120px;height:75px;margin-top:-70px}.chest-body{position:absolute;bottom:0;width:120px;height:55px;border:5px solid #6a3a70;border-radius:8px 8px 18px 18px;background:#f1a64a}.chest-body i{position:absolute;left:48px;top:13px;width:22px;height:27px;border-radius:4px;background:#fff176}.chest-lid{position:absolute;z-index:2;top:0;width:120px;height:35px;border:5px solid #6a3a70;border-radius:50px 50px 8px 8px;background:#ffbd58;transform-origin:left bottom}.merged .chest-lid{animation:chestOpen .7s 1.5s both}.magic-ready{margin:14px;text-align:center;font-size:22px}.cards-scene .scene{justify-content:flex-start}.card-stage{height:390px;display:flex;align-items:center;perspective:1000px}.lucky-card{position:relative;width:245px;height:335px;transform-style:preserve-3d;transition:.75s cubic-bezier(.2,.8,.2,1);cursor:pointer}.lucky-card.flipped{transform:rotateY(180deg)}.card-back,.card-front{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;border-radius:28px;backface-visibility:hidden;border:5px solid #fff0a2;box-shadow:0 18px 45px #09041f88,inset 0 0 0 4px #fff5}.card-back{background:repeating-radial-gradient(circle at center,#6c55c8 0 14px,#44319a 15px 29px)}.card-back:after{content:"";position:absolute;inset:12px;border:2px dashed #fff4a4;border-radius:20px}.card-spark{font-size:100px;color:#fff17c;text-shadow:0 0 20px #fff}.card-back b{font-size:24px;z-index:2}.card-back span{z-index:2;margin-top:8px;font-size:10px;letter-spacing:.2em}.card-front{transform:rotateY(180deg);background:linear-gradient(145deg,var(--card-color,#ff8fcf),#6648b8)}.card-front>i{font-style:normal;font-size:90px;color:#fff174;filter:drop-shadow(0 0 12px #fff)}.card-front h2{margin:8px;font-family:ZCOOL KuaiLe;font-size:36px}.card-front p{text-align:center;font-weight:800;line-height:1.7}.card-actions,.final-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.final-scene .scene{justify-content:center}.final-scene.dark{background:#070510}.countdown,.fake-end,.kidding{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:ZCOOL KuaiLe;font-size:clamp(68px,24vw,130px);text-align:center;transition:.35s}.countdown.gone{opacity:0;transform:translate(-50%,-50%) scale(2)}.fake-end{font-size:clamp(34px,10vw,58px);opacity:0}.fake-end.show{opacity:1}.kidding{z-index:5;width:100%;font-size:clamp(60px,19vw,105px);color:#fff176;text-shadow:0 7px 0 #e34e9d,0 0 30px #fff;opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(-8deg)}.kidding.show{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-5deg)}.birthday-message{position:relative;text-align:center;opacity:0;transform:scale(.6);pointer-events:none}.birthday-message.show{opacity:1;transform:scale(1);pointer-events:auto;transition:.7s cubic-bezier(.2,1.5,.5,1)}.birthday-message>p{margin:5px;color:#fff17e;font-weight:900;letter-spacing:.15em}.birthday-message h1{margin:8px 0;font-family:ZCOOL KuaiLe;font-size:clamp(45px,13vw,76px);line-height:1.05;text-shadow:0 6px 0 #7a3a9f,0 0 30px #fff}.birthday-message h1 span{color:#fff17a}.wish{margin:16px 0 22px;font-size:clamp(17px,5vw,22px);font-weight:700;line-height:1.7}.final-cast{height:155px;display:flex;justify-content:center;align-items:flex-end}.final-cast svg{width:110px;height:140px;filter:drop-shadow(0 10px 8px #190c43aa);animation:victoryDance .55s infinite alternate}.final-cast svg:nth-child(2){height:100px;animation-delay:-.2s}.final-cast svg:nth-child(3){height:90px;animation-delay:-.4s}.celebrate{background:radial-gradient(circle at 50% 25%,#7554c9,#372078 42%,#170b3e)}.celebrate:before,.celebrate:after{content:"";position:absolute;z-index:1;inset:-20%;background:repeating-conic-gradient(from 20deg,transparent 0 11deg,#ffdf6633 12deg 13deg,transparent 14deg 29deg);animation:slowSpin 20s linear infinite}.celebrate:after{background-image:radial-gradient(circle,#ff7cbd 0 5px,transparent 6px),radial-gradient(circle,#75e1ff 0 4px,transparent 5px);background-size:80px 100px,110px 80px;animation:confettiFall 8s linear infinite}@keyframes twinkle{to{opacity:.25;transform:scale(.55)}}@keyframes peek{0%,75%,to{transform:translate(30px) rotate(10deg)}82%,94%{transform:translate(0) rotate(-8deg)}}@keyframes float{50%{transform:translateY(-15px) rotate(4deg)}}@keyframes pop{50%{transform:scale(1.05)}}@keyframes victoryDance{to{transform:translateY(-8px) rotate(4deg)}}@keyframes timer{to{width:0}}.timer i{width:100%}@keyframes monsterIn{0%{transform:scale(0) rotate(-20deg)}}@keyframes monsterBob{to{transform:translateY(-8px)}}@keyframes spinAway{to{transform:rotate(900deg) scale(0);opacity:0}}@keyframes flagAway{0%,65%{transform:translateY(0)}to{transform:translate(150vw);opacity:0}}@keyframes fakeFall{0%{transform:rotate(0)}30%,60%{transform:rotate(90deg) translateY(30px)}70%{transform:rotate(90deg) translateY(30px) scaleY(.8)}to{transform:translate(-130vw) rotate(90deg)}}@keyframes jumpAway{40%{transform:translateY(-70px)}to{transform:translate(130vw,-100px) rotate(360deg)}}@keyframes tiptoe{to{transform:translate(120vw) rotate(20deg);opacity:0}}@keyframes wave{to{transform:rotate(-18deg)}}@keyframes petFloat{50%{transform:translateY(-9px) rotate(3deg)}}@keyframes petDodge{30%{transform:translate(100px) rotate(12deg)}60%{transform:translate(-80px) rotate(-8deg)}to{transform:translate(0)}}@keyframes caught{40%{transform:scale(1.2)}to{transform:scale(.5) translateY(300px);opacity:0}}@keyframes flame{to{transform:rotate(42deg) scale(.85)}}@keyframes candleRun{20%{transform:translate(60px) rotate(8deg)}50%{transform:translate(-80px) rotate(-10deg)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}}@keyframes starBounce{to{transform:scale(1.15) rotate(8deg)}}@keyframes achievement{0%,to{transform:translate(-50%,-180%)}12%,88%{transform:translate(-50%)}}@keyframes hue{to{filter:hue-rotate(360deg) drop-shadow(0 0 25px #fff)}}@keyframes chestOpen{to{transform:rotate(-25deg) translateY(-22px)}}@keyframes slowSpin{to{transform:rotate(360deg)}}@keyframes confettiFall{to{transform:translateY(25%) rotate(15deg)}}@media(max-width:600px){.partner-grid{grid-template-columns:1fr;overflow:auto;padding:4px 4px 24px;scroll-snap-type:y mandatory}.partner-card{display:grid;grid-template-columns:110px 1fr;grid-template-rows:auto auto auto;align-items:center;min-height:145px;text-align:left;scroll-snap-align:start}.partner-card .character{grid-row:1/4;height:125px}.partner-card h2{margin:2px}.partner-card p{min-height:0;margin:4px 0}.partner-card span{font-size:13px;text-align:center}.partner-scene .scene{height:100svh}.battlefield{min-height:0}.monster{width:88px;height:88px}.pet-field{height:auto;flex:1;min-height:400px}.scene-title p,.compact-title p{font-size:14px}.card-stage{height:370px}.assistant{bottom:72px}.final-cast{height:125px}.final-cast svg{width:88px;height:115px}.final-cast svg:nth-child(2){height:82px}.final-cast svg:nth-child(3){height:75px}}@media(max-height:720px){.scene{padding-top:60px}.compact-title p{display:none}.pet-field,.cake-wrap{min-height:330px}.cake{transform:scale(.82)}.card-stage{height:330px}.lucky-card{width:215px;height:295px}.final-cast{height:100px}.final-cast svg{height:95px}.wish{margin:9px 0}.birthday-message h1{font-size:42px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.1ms!important}.timer i{animation-duration:19s!important}}
