@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400&family=Montserrat:wght@300;400&display=swap";:root{color:#f8e7e4;background:#030611;font-family:"Noto Serif SC",Microsoft YaHei,serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#scene,.experience{width:100%;height:100%;margin:0;overflow:hidden}body{background:#030611}#scene{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%}.experience{position:relative;isolation:isolate;background:radial-gradient(circle at 72% 44%,rgba(79,31,76,.15),transparent 33%),radial-gradient(circle at 30% 52%,rgba(24,50,89,.12),transparent 38%),#030611}.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,2,10,.58) 100%),linear-gradient(90deg,rgba(0,3,12,.28),transparent 48%)}.intro{position:absolute;z-index:2;top:50%;left:clamp(52px,7vw,132px);width:min(44vw,680px);transform:translateY(-49%);pointer-events:none}.eyebrow{margin:0 0 22px;color:#eac2be94;font:300 clamp(9px,.72vw,12px)/1.6 Montserrat,sans-serif;letter-spacing:.48em}h1{margin:0;color:#ffeeeaeb;font-size:clamp(27px,2.65vw,51px);font-weight:300;line-height:1.62;letter-spacing:.12em;text-shadow:0 0 35px rgba(245,169,164,.13)}h1 span{color:#f0c9c4}.rule{position:relative;width:min(360px,70%);height:1px;margin:27px 0 20px;background:linear-gradient(90deg,#f2b9b314,#f2b9b38c,#f2b9b300)}.rule i{position:absolute;top:-3px;left:56%;width:7px;height:7px;border-radius:50%;background:#ffe5cf;box-shadow:0 0 8px #ffbba8,0 0 20px #ff9c96cc}.hint{margin:0;color:#e5dadfad;font-size:clamp(12px,.95vw,16px);font-weight:300;letter-spacing:.26em}.music-notice{position:fixed;z-index:20;top:28px;right:32px;display:flex;align-items:center;gap:11px;padding:12px 20px;color:#fff7f5fa;border:1px solid rgba(255,205,207,.78);border-radius:999px;background:linear-gradient(135deg,#5c263ef5,#140d20f2);box-shadow:0 8px 32px #00000070,0 0 25px #ff799947,inset 0 0 18px #ffcbcf1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font:400 13px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.12em;cursor:pointer;pointer-events:none;transform:translateY(-8px);transition:opacity .45s ease,transform .45s ease,border-color .3s ease,color .3s ease,background .3s ease}.music-notice.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.music-notice.is-paused{animation:musicNoticeGlow 2s ease-in-out infinite}.music-notice:hover{color:#fff;border-color:#ffe1dde6;background:linear-gradient(135deg,#64273ff5,#140d20f0)}.music-notice__speaker{display:grid;flex:0 0 22px;width:22px;height:22px;place-items:center;color:#f4b9bb;filter:drop-shadow(0 0 7px rgba(255,151,169,.72))}.music-notice__speaker svg{width:100%;height:100%;overflow:visible;fill:currentColor}.music-notice__speaker .music-notice__wave{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;transform-origin:14px 12px}.music-notice.is-playing .music-notice__wave{animation:musicPulse 1.35s ease-in-out infinite}.music-notice.is-paused .music-notice__wave{opacity:.24}.question-stage{position:fixed;inset:0;z-index:4;display:grid;place-items:center;padding:7vh 7vw;pointer-events:none}.legacy-hidden{display:none!important}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.constellation-stage,.story-overlay-stage,.birthday-wish-stage{position:fixed;inset:0;z-index:5;display:grid;place-items:center;padding:96px 6vw 32px;overflow:hidden auto;visibility:hidden;pointer-events:none}.constellation-stage.is-stage-transitioning,.story-overlay-stage.is-stage-transitioning,.birthday-wish-stage.is-stage-transitioning{pointer-events:none;will-change:opacity,transform}.constellation-stage.is-active,.story-overlay-stage.is-active,.birthday-wish-stage.is-active{visibility:visible;pointer-events:auto}.constellation-stage__back,.story-stage__back,.wish-stage__back{position:absolute;z-index:2;top:24px;left:50%;display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:0 22px;color:#ffefebeb;border:1px solid rgba(249,190,192,.48);border-radius:999px;background:linear-gradient(135deg,#39192bd6,#080916e0);box-shadow:0 10px 34px #0000004d,0 0 25px #ff829924;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translate(-50%);font:400 12px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.14em;cursor:pointer}.constellation-stage__back>span:first-child,.story-stage__back>span:first-child,.wish-stage__back>span:first-child{color:#ffd8cf;font-size:16px}.constellation-card{position:relative;width:min(760px,92vw);padding:36px clamp(24px,5vw,56px) 34px;overflow:hidden;border:1px solid rgba(255,213,207,.17);border-radius:32px;background:radial-gradient(circle at 50% 43%,rgba(179,86,128,.17),transparent 46%),radial-gradient(circle at 78% 18%,rgba(94,83,173,.1),transparent 34%),#03061180;box-shadow:0 30px 100px #0000005c,inset 0 0 55px #ffb8bf09;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);contain:layout style;backface-visibility:hidden;text-align:center}.constellation-kicker{margin:0 0 12px;color:#ecbfbf94;font:300 10px/1.5 Montserrat,sans-serif;letter-spacing:.45em}.constellation-card h2{margin:0;color:#ffefebf7;font-size:clamp(31px,3.7vw,50px);font-weight:300;line-height:1.42;letter-spacing:.11em;text-shadow:0 0 36px rgba(249,160,167,.2)}.constellation-guide{margin:11px 0 0;color:#e5d3d99c;font-size:13px;line-height:1.8;letter-spacing:.14em}.libra-map{position:relative;width:min(520px,100%);aspect-ratio:500 / 330;margin:21px auto 8px;border-radius:26px;background:radial-gradient(circle at 44% 46%,rgba(255,191,198,.08),transparent 44%),linear-gradient(180deg,#ffffff03,#ffffff06)}.libra-symbol{position:absolute;inset:50% auto auto 50%;color:#ffe1da09;font:300 148px/1 Georgia,serif;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none}.libra-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.constellation-path{fill:none;stroke:#ffd9d81f;stroke-width:1.25;stroke-linecap:round;stroke-dasharray:6 9;transition:stroke .7s ease,stroke-width .7s ease,filter .7s ease,stroke-dasharray .7s ease}.constellation-path.is-lit{stroke:#ffcfcdc7;stroke-width:2;stroke-dasharray:none;filter:drop-shadow(0 0 6px rgba(255,155,176,.75))}.constellation-star{position:absolute;z-index:2;top:var(--star-y);left:var(--star-x);width:48px;height:48px;padding:0;border:0;border-radius:50%;outline:none;background:transparent;transform:translate(-50%,-50%);cursor:pointer;-webkit-tap-highlight-color:transparent}.constellation-star:before,.constellation-star:after,.constellation-star span{content:"";position:absolute;top:50%;left:50%;border-radius:50%;transform:translate(-50%,-50%)}.constellation-star:before{width:28px;height:28px;border:1px solid rgba(255,220,217,.08);transition:border-color .45s ease,transform .45s ease}.constellation-star:after{width:6px;height:6px;background:#eecdd261;box-shadow:0 0 7px #ffafc04d;transition:width .45s ease,height .45s ease,background .45s ease,box-shadow .45s ease}.constellation-star span{width:2px;height:2px;opacity:0;background:#fff4dc}.constellation-star.is-next:before{border-color:#ffd4d273;animation:constellationOrbit 1.8s ease-out infinite}.constellation-star.is-next:after{width:10px;height:10px;background:#ffd9d1;box-shadow:0 0 9px #ffbdc2,0 0 25px #ff789dad;animation:constellationPulse 1.35s ease-in-out infinite}.constellation-star.is-lit:before{border-color:#ffd8d33b;transform:translate(-50%,-50%) scale(.72)}.constellation-star.is-lit:after{width:12px;height:12px;background:#fff0dc;box-shadow:0 0 9px #ffd3c8,0 0 24px #ff83a3d6,0 0 45px #ff88a36b}.constellation-star.is-lit span{opacity:.9;box-shadow:0 -15px #ffe0d8b3,0 15px #ffe0d8b3,15px 0 #ffe0d8b3,-15px 0 #ffe0d8b3}.constellation-star:focus-visible{box-shadow:0 0 0 2px #ffebe2bd,0 0 0 7px #ff99b121}.constellation-message{display:flex;align-items:center;justify-content:space-between;gap:18px;width:min(520px,100%);min-height:48px;margin:0 auto;padding:12px 17px;border:1px solid rgba(255,211,207,.13);border-radius:16px;background:#0705126b;text-align:left}.constellation-blessing{margin:0;color:#f6dddccc;font-size:12px;line-height:1.65;letter-spacing:.12em}.constellation-progress{flex:0 0 auto;color:#ffcdcf8c;font:400 10px/1.2 Montserrat,sans-serif;letter-spacing:.15em}.constellation-romance{margin:13px auto 0;color:#f0d3d9b3;font-size:12px;line-height:1.8;letter-spacing:.1em;opacity:0;transform:translateY(7px);transition:opacity .9s ease,transform .9s ease}.constellation-card.is-complete .constellation-romance{opacity:1;transform:translateY(0)}.constellation-next{min-width:260px;min-height:50px;margin-top:14px;padding:0 25px;color:#3a1521;border:1px solid rgba(255,235,225,.88);border-radius:999px;background:linear-gradient(135deg,#ffe7dd,#efb3bd);box-shadow:0 10px 35px #ee7a9733,0 0 25px #ffd1c91f;font:400 13px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.11em;cursor:pointer;transition:opacity .4s ease,filter .3s ease,box-shadow .3s ease}.constellation-next:disabled{color:#e4cfd37a;border-color:#efc1c826;background:#1a101f94;box-shadow:none;cursor:default}.constellation-next:not(:disabled):hover{filter:brightness(1.07);box-shadow:0 12px 42px #ee7a974d,0 0 28px #ffd1c92e}@keyframes constellationPulse{50%{transform:translate(-50%,-50%) scale(.76);opacity:.72}}@keyframes constellationOrbit{0%{transform:translate(-50%,-50%) scale(.65);opacity:.82}to{transform:translate(-50%,-50%) scale(1.35);opacity:0}}.story-card{position:relative;width:min(720px,92vw);padding:38px clamp(24px,5vw,58px) 36px;overflow:hidden;border:1px solid rgba(255,213,207,.17);border-radius:32px;background:radial-gradient(circle at 50% 35%,rgba(169,72,106,.17),transparent 50%),#03061180;box-shadow:0 30px 100px #0000005c,inset 0 0 55px #ffb8bf09;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);contain:layout style;backface-visibility:hidden;text-align:center}.story-kicker{margin:0 0 12px;color:#ecbfbf94;font:300 10px/1.5 Montserrat,sans-serif;letter-spacing:.43em}.story-card h2{margin:0;color:#ffefebf7;font-size:clamp(31px,3.7vw,49px);font-weight:300;line-height:1.42;letter-spacing:.1em;text-shadow:0 0 36px rgba(249,160,167,.2)}.story-guide{margin:11px 0 0;color:#e5d3d99c;font-size:13px;line-height:1.8;letter-spacing:.13em}.story-next-button,.music-box-trigger,.moonlight-reveal,.future-submit-button{min-height:50px;padding:0 25px;border-radius:999px;font:400 13px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.1em;cursor:pointer}.story-next-button,.future-submit-button{color:#3a1521;border:1px solid rgba(255,235,225,.88);background:linear-gradient(135deg,#ffe7dd,#efb3bd);box-shadow:0 10px 35px #ee7a9733,0 0 25px #ffd1c91f}.story-next-button:disabled{color:#e4cfd37a;border-color:#efc1c826;background:#1a101f94;box-shadow:none;cursor:default}.fortune-options{display:flex;align-items:center;justify-content:center;gap:clamp(34px,8vw,82px);min-height:155px;margin:17px auto 4px}.fortune-star{position:relative;width:76px;height:76px;padding:0;color:#ffdfd8d9;border:0;border-radius:50%;outline:none;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .4s ease,transform .45s ease,filter .45s ease}.fortune-star i{position:absolute;inset:5px;border:1px solid rgba(255,205,206,.22);border-radius:50%;box-shadow:inset 0 0 22px #ffa0b812,0 0 20px #ff8bad12;animation:fortuneOrbit 4.8s linear infinite}.fortune-star i:before{content:"";position:absolute;top:8px;right:5px;width:7px;height:7px;border-radius:50%;background:#ffd4cf;box-shadow:0 0 10px #ff98afcc}.fortune-star span{position:relative;z-index:1;font-size:28px;text-shadow:0 0 13px rgba(255,175,185,.8),0 0 30px rgba(255,115,154,.35)}.fortune-star:nth-child(2){transform:translateY(-18px) scale(1.08)}.fortune-star:nth-child(3) i{animation-direction:reverse;animation-duration:5.6s}.fortune-star:hover{filter:brightness(1.25);transform:translateY(-5px) scale(1.08)}.fortune-star:nth-child(2):hover{transform:translateY(-23px) scale(1.15)}.fortune-star.is-chosen{filter:brightness(1.32);transform:scale(1.18)}.fortune-star:nth-child(2).is-chosen{transform:translateY(-18px) scale(1.24)}.fortune-star.is-faded{opacity:.22;transform:scale(.8);pointer-events:none}.fortune-result{width:min(520px,100%);min-height:108px;margin:0 auto;padding:16px 22px;border:1px solid rgba(255,211,207,.13);border-radius:18px;background:#07051275}.fortune-result__kicker{margin:0 0 5px;color:#ffc9cd8c;font:400 9px/1.4 Montserrat,sans-serif;letter-spacing:.28em}.fortune-result h3{margin:0;color:#ffece8ed;font-size:18px;font-weight:400;letter-spacing:.12em}.fortune-result>p:last-child{margin:7px 0 0;color:#e7d3d9a1;font-size:12px;line-height:1.75;letter-spacing:.08em}.fortune-next{min-width:250px;margin-top:16px}.music-box-card{background:radial-gradient(circle at 50% 44%,rgba(115,100,183,.17),transparent 43%),radial-gradient(circle at 34% 28%,rgba(255,152,183,.1),transparent 35%),#03061185}.music-box-visual{position:relative;width:260px;height:260px;margin:19px auto 4px}.music-box-moon{position:absolute;top:50%;left:50%;width:112px;height:112px;border-radius:50%;background:radial-gradient(circle at 39% 36%,#fff3dc 0 8%,#f5c8c8 38%,#a56a91 72%,#402642);box-shadow:0 0 22px #ffd5c96b,0 0 70px #d3739f38;transform:translate(-50%,-50%)}.music-box-moon:after{content:"";position:absolute;top:-8px;right:-14px;width:108px;height:108px;border-radius:50%;background:#100c1c;box-shadow:inset 9px -5px 16px #ffc9cb09}.music-box-moon i{position:absolute;z-index:2;top:47px;left:29px;width:8px;height:8px;border-radius:50%;background:#fff1dc;box-shadow:0 0 12px #ffc5bf}.music-box-orbit{position:absolute;inset:24px;border:1px solid rgba(255,207,214,.2);border-radius:50%;transform:rotate(-18deg)}.music-box-planet{position:absolute;top:18px;right:21px;width:16px;height:16px;border-radius:50%;background:#ffc1c8;box-shadow:0 0 10px #ff9caf,0 0 24px #ff779e9e}.music-box-card.is-playing .music-box-orbit{animation:musicBoxSpin 2.9s cubic-bezier(.38,.08,.26,1) forwards}.music-box-card.is-playing .music-box-moon{animation:moonGlow 1.2s ease-in-out infinite alternate}.music-box-note{position:absolute;color:#ffdcd78f;font-family:Georgia,serif;opacity:.18}.music-box-note--one{top:37px;left:35px;font-size:24px}.music-box-note--two{top:42px;right:38px;font-size:32px}.music-box-note--three{bottom:38px;right:44px;font-size:19px}.music-box-card.is-playing .music-box-note{animation:floatMusicNote 1.5s ease-out infinite}.music-box-card.is-playing .music-box-note--two{animation-delay:-.5s}.music-box-card.is-playing .music-box-note--three{animation-delay:-1s}.music-box-trigger,.moonlight-reveal{min-width:235px;color:#ffebe8e8;border:1px solid rgba(249,190,192,.38);background:linear-gradient(135deg,#5d2b46d1,#16122ae6);box-shadow:0 10px 34px #00000047,0 0 26px #ff82991f}.music-box-trigger span{display:inline-block;margin-right:8px;font-size:18px}.music-box-trigger:disabled{opacity:.65;cursor:default}.music-box-status{min-height:24px;margin:11px 0 0;color:#e7d3d99e;font-size:11px;letter-spacing:.1em}.music-box-next{min-width:250px;margin-top:12px}.moonlight-letter-card{background:radial-gradient(circle at 50% 28%,rgba(247,216,191,.13),transparent 38%),radial-gradient(circle at 76% 64%,rgba(130,94,171,.1),transparent 42%),#03061185}.moonlight-envelope{position:relative;width:min(540px,100%);min-height:370px;margin:22px auto 0;padding:34px 30px 26px;border:1px solid rgba(255,224,211,.2);border-radius:7px 7px 22px 22px;background:linear-gradient(145deg,#ffe5da11,#744c760a),#0a0713a8;box-shadow:inset 0 0 38px #ffcabe09,0 16px 45px #00000038}.moonlight-envelope:before,.moonlight-envelope:after{content:"";position:absolute;top:0;width:50%;height:86px;border-bottom:1px solid rgba(255,221,211,.11)}.moonlight-envelope:before{left:0;transform:skewY(18deg);transform-origin:left top}.moonlight-envelope:after{right:0;transform:skewY(-18deg);transform-origin:right top}.moonlight-seal{position:absolute;z-index:2;top:36px;left:50%;display:grid;place-items:center;width:45px;height:45px;color:#ffe4d1;border:1px solid rgba(255,226,211,.5);border-radius:50%;background:radial-gradient(circle,#9a5572,#4b2947 68%);box-shadow:0 0 22px #ff87a847;transform:translate(-50%,-50%)}.moonlight-lines{position:relative;z-index:1;display:grid;gap:9px;margin:36px 0 0;padding:0;list-style:none;color:#f9e5e0e0;font:400 14px/1.78 KaiTi,STKaiti,"Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.035em;text-align:left}.moonlight-lines li{opacity:0;transform:translateY(8px);transition:opacity .75s ease,transform .75s ease}.moonlight-lines li.is-visible{opacity:1;transform:translateY(0)}.moonlight-character{display:inline-block;opacity:0;transform:translateY(7px);filter:blur(3px)}.moonlight-letter-card.is-opening .moonlight-character{will-change:opacity,transform,filter}.moonlight-letter-card.is-opening .moonlight-seal{animation:moonlightSealOpen 1.15s ease forwards}.moonlight-reveal{margin-top:18px}.moonlight-reveal:disabled{opacity:.55;cursor:default}.moonlight-letter-next{display:block;min-width:265px;margin:13px auto 0}@keyframes fortuneOrbit{to{transform:rotate(360deg)}}@keyframes musicBoxSpin{to{transform:rotate(1062deg)}}@keyframes moonGlow{to{filter:brightness(1.16);box-shadow:0 0 30px #ffd5c994,0 0 90px #d3739f52}}@keyframes moonlightSealOpen{45%{transform:translate(-50%,-50%) scale(1.12);box-shadow:0 0 34px #ff97b57a}to{transform:translate(-50%,-50%) scale(.92);opacity:.72}}@keyframes floatMusicNote{0%{opacity:0;transform:translateY(8px) scale(.8)}45%{opacity:.72}to{opacity:0;transform:translateY(-24px) scale(1.08)}}.birthday-wish-card{position:relative;display:grid;place-items:center;width:min(780px,92vw);min-height:0;padding:34px clamp(22px,5vw,58px) 36px;border:1px solid rgba(255,213,207,.15);border-radius:32px;background:radial-gradient(circle at 50% 30%,rgba(169,72,106,.15),transparent 48%),#03061170;box-shadow:0 30px 100px #00000057,inset 0 0 55px #ffb8bf08;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.wish-candle-step,.wish-form-step,.future-letter-step,.wish-success{grid-area:1 / 1;width:100%;text-align:center}.wish-kicker{margin:0 0 13px;color:#ecbfbf8c;font:300 10px/1.5 Montserrat,sans-serif;letter-spacing:.46em}.birthday-wish-card h2{margin:0;color:#ffefebf5;font-size:clamp(30px,3.5vw,49px);font-weight:300;line-height:1.45;letter-spacing:.11em;text-shadow:0 0 35px rgba(249,160,167,.17)}.wish-guide{margin:12px 0 0;color:#e5d3d994;font-size:13px;line-height:1.8;letter-spacing:.18em}.wish-cake{position:relative;width:300px;height:285px;margin:38px auto 8px;filter:drop-shadow(0 18px 24px rgba(0,0,0,.35))}.wish-candles{position:absolute;z-index:4;top:15px;left:50%;display:flex;align-items:flex-end;justify-content:center;gap:34px;width:180px;transform:translate(-50%)}.wish-candle{position:relative;display:block;width:13px;height:64px;border-radius:8px 8px 3px 3px;background:repeating-linear-gradient(-35deg,#8fd2e3 0 9px,#f8ebd0 9px 17px);box-shadow:inset -3px 0 3px #1b244d2e,0 0 12px #8bd5e62e}.wish-candle:nth-child(2){height:72px;background:repeating-linear-gradient(-35deg,#f1be65 0 9px,#fff0c8 9px 17px)}.wish-candle em{position:absolute;top:-5px;left:50%;width:2px;height:8px;background:#49311f;transform:translate(-50%)}.wish-flame{position:absolute;z-index:2;top:-44px;left:50%;width:24px;height:39px;border-radius:52% 48% 58% 42%/67% 63% 37% 33%;background:radial-gradient(circle at 50% 67%,#fffbd3 0 18%,#ffc86a 36%,#ff725c,#ff5c5f14);box-shadow:0 0 13px #ffca7d,0 0 30px #ff6c66cc,0 0 60px #ff786357;transform:translate(-50%);transform-origin:50% 100%;animation:candleFlicker .72s ease-in-out infinite alternate}.wish-candle:nth-child(2) .wish-flame{animation-delay:-.31s}.wish-candle:nth-child(3) .wish-flame{animation-delay:-.53s}.wish-candle:after{content:"";position:absolute;z-index:3;top:-46px;left:50%;width:10px;height:30px;border:2px solid rgba(210,213,227,.42);border-bottom:0;border-left-color:transparent;border-radius:50%;opacity:0;transform:translate(-50%) rotate(16deg)}.wish-cake.is-out .wish-flame{opacity:0;transform:translate(-50%) translateY(-7px) scale(.15) rotate(25deg);animation:none;transition:opacity .28s ease,transform .36s ease}.wish-cake.is-out .wish-candle:after{animation:candleSmoke 1.9s ease-out forwards}.wish-cake__tier{position:absolute;left:50%;overflow:hidden;border:1px solid rgba(255,239,226,.64);border-radius:18px 18px 14px 14px;transform:translate(-50%);box-shadow:inset 0 10px 18px #ffffff24,inset 0 -12px 18px #50234d1c,0 8px 18px #1106192e}.wish-cake__tier:before{content:"";position:absolute;top:0;left:0;right:0;height:15px;border-radius:17px 17px 9px 9px;background:linear-gradient(180deg,#fff9e7fa,#ffe0cbe0);box-shadow:0 3px 8px #5e2a411a}.wish-cake__tier:after{content:"";position:absolute;right:23px;bottom:14px;width:6px;height:6px;border-radius:50%;background:#fff0d9d6;box-shadow:-27px 5px #ffd7cbb8,-54px 0 #fff0d9c7}.wish-cake__tier--top{z-index:3;top:91px;width:142px;height:56px;background:linear-gradient(145deg,#ffc98e,#e88da7)}.wish-cake__tier--middle{z-index:2;top:150px;width:211px;height:57px;background:linear-gradient(145deg,#f2a2bc,#bd668e)}.wish-cake__tier--bottom{z-index:1;top:210px;width:276px;height:58px;background:linear-gradient(145deg,#a88edb,#6c4f8a)}.blow-meter{width:min(330px,78vw);height:8px;margin:18px auto 0;overflow:hidden;border:1px solid rgba(255,219,213,.16);border-radius:999px;background:#ffffff12;box-shadow:inset 0 0 8px #00000047}.blow-meter i{display:block;width:calc(var(--blow-level, 0) * 100%);height:100%;border-radius:inherit;background:linear-gradient(90deg,#7fcbe0,#ffe2a4,#ff878f);box-shadow:0 0 15px #ffb18eb8;transition:width .08s linear}.blow-actions{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:26px}.microphone-button,.wish-submit-button,.future-submit-button,.wish-success__back{min-height:50px;padding:0 24px;color:#3a1521;border:1px solid rgba(255,235,225,.88);border-radius:999px;background:linear-gradient(135deg,#ffe7dd,#efb3bd);box-shadow:0 10px 35px #ee7a9733,0 0 25px #ffd1c91f;font:400 13px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.11em;cursor:pointer}.microphone-button:disabled,.wish-submit-button:disabled,.future-submit-button:disabled{opacity:.55;cursor:wait}.tap-blow-button{padding:9px 8px;color:#e8d0d699;border:0;border-bottom:1px solid rgba(232,184,197,.25);background:transparent;font:400 11px/1.3 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.08em;cursor:pointer}.wish-form-step,.future-letter-step,.wish-success{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(18px)}.birthday-wish-card.is-writing .wish-candle-step,.birthday-wish-card.is-future .wish-candle-step,.birthday-wish-card.is-success .wish-candle-step{visibility:hidden;opacity:0;pointer-events:none}.birthday-wish-card.is-writing .wish-form-step{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);transition:opacity .8s ease,transform .8s ease}.birthday-wish-card.is-future .wish-form-step{visibility:hidden;opacity:0;pointer-events:none}.birthday-wish-card.is-future .future-letter-step{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);transition:opacity .8s ease,transform .8s ease}.wish-form-step,.future-letter-step{max-width:620px}.wish-input-label{display:block;margin:30px 0 10px;color:#f5dddcc7;font-size:12px;text-align:left;letter-spacing:.15em}.wish-form-step textarea,.future-letter-step textarea{display:block;width:100%;min-height:180px;resize:none;padding:18px 20px;color:#fff2eef0;border:1px solid rgba(244,190,198,.28);border-radius:19px;outline:none;background:#050510ad;box-shadow:inset 0 0 28px #ffa7b909;font:400 15px/1.8 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.06em}.wish-form-step textarea:focus,.future-letter-step textarea:focus{border-color:#ffd5d3a3;box-shadow:0 0 0 3px #ff9dad14,inset 0 0 28px #ffa7b90e}.wish-form-meta{display:flex;justify-content:space-between;gap:16px;min-height:36px;padding:9px 5px 0;color:#d9c2cb8c;font-size:11px;text-align:left}.wish-submit-status.is-error,.future-submit-status.is-error{color:#f2a3ae}.wish-submit-button,.future-submit-button{margin-top:12px}.birthday-wish-card.is-success .wish-form-step,.birthday-wish-card.is-success .future-letter-step{visibility:hidden;opacity:0;pointer-events:none}.birthday-wish-card.is-success .wish-success{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);transition:opacity 1s ease,transform 1s ease}.wish-success__star{margin:0 0 22px;color:#ffe0bc;font-size:56px;text-shadow:0 0 15px #ffad9c,0 0 45px rgba(255,114,143,.65);animation:wishStarPulse 1.8s ease-in-out infinite}.wish-success>p:not(.wish-kicker){margin:18px 0 34px;color:#e5d3d9a6;line-height:1.8;letter-spacing:.12em}@keyframes candleFlicker{0%{transform:translate(-50%) rotate(-5deg) scale(.93,1.06)}to{transform:translate(-50%) rotate(6deg) scale(1.05,.94)}}@keyframes candleSmoke{0%{opacity:0;transform:translate(-50%) translateY(0) scale(.6) rotate(8deg)}18%{opacity:.75}to{opacity:0;transform:translate(-30%) translateY(-48px) scale(1.4) rotate(35deg)}}@keyframes wishStarPulse{50%{opacity:.58;transform:scale(.82) rotate(45deg)}}.question-card,.finale{grid-area:1 / 1;width:min(820px,90vw);text-align:center}.question-card{box-sizing:border-box;width:min(1024px,90vw);min-height:min(550px,72vh);padding:74px 72px 40px;border:1px solid rgba(255,213,207,.13);border-radius:28px;background:radial-gradient(circle at 50% 0%,rgba(169,72,106,.12),transparent 54%),#0306116b;box-shadow:0 30px 100px #00000047,inset 0 0 45px #ffb8bf06;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.question-kicker,.finale__kicker{margin:0 0 17px;color:#ecbfbf85;font:300 10px/1.5 Montserrat,sans-serif;letter-spacing:.46em}.question-card .question-kicker{margin-bottom:22px}.question-card h2,.finale h2{margin:0;color:#ffeeebf0;font-size:clamp(28px,3.1vw,48px);font-weight:300;line-height:1.55;letter-spacing:.12em;text-shadow:0 0 32px rgba(249,160,167,.15)}.question-note,.finale>p:last-child{margin:15px 0 0;color:#e5d3d98c;font-size:13px;letter-spacing:.23em}.question-card .question-note{margin-top:20px}.answer-arena{position:relative;width:min(850px,80vw);height:240px;margin:36px auto 0}.answer{position:absolute;top:88px;min-width:142px;height:50px;padding:0 25px;border-radius:999px;font:400 15px/1 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.14em;cursor:pointer;-webkit-user-select:none;user-select:none;will-change:left,top,transform}.answer--yes{left:calc(50% - 188px);color:#3a1521;border:1px solid rgba(255,229,221,.8);background:linear-gradient(135deg,#ffe7dd,#efb3bd);box-shadow:0 8px 32px #ee7a972e,0 0 22px #ffd1c91f;transition:filter .3s ease,box-shadow .3s ease}.answer--yes:hover{filter:brightness(1.08);box-shadow:0 10px 40px #ee7a974d,0 0 28px #ffd1c933}.answer--no{left:calc(50% + 46px);color:#f5dee0bd;border:1px solid rgba(239,193,200,.25);background:#1a101f99;box-shadow:inset 0 0 18px #f5aebe09}.finale{visibility:hidden;opacity:0;pointer-events:none;justify-self:start;width:min(43vw,660px);margin-left:clamp(52px,7vw,132px);text-align:left}.finale h2 span{color:#f3c2c4}.question-stage.is-active,.question-stage.is-finale{pointer-events:auto}.question-stage.is-finale .question-card{visibility:hidden;pointer-events:none}.question-stage.is-finale .finale{visibility:visible}.stage-back{position:absolute;z-index:6;top:24px;left:50%;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:12px;min-width:218px;padding:10px 20px;color:#ffefebf0;border:1px solid rgba(249,190,192,.52);border-radius:999px;background:linear-gradient(135deg,#39192bd1,#080916db);box-shadow:0 10px 34px #00000052,0 0 28px #ff82992e,inset 0 0 22px #ffd2cf0a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translate(-50%);font:400 12px/1.2 Montserrat,"Noto Serif SC",sans-serif;letter-spacing:.2em;cursor:pointer;animation:replayGlow 2.6s ease-in-out infinite;transition:color .35s ease,border-color .35s ease,background .35s ease,box-shadow .35s ease}.stage-back:hover{color:#fff;border-color:#ffe1dae0;background:linear-gradient(135deg,#552236eb,#0d0b1cf0);box-shadow:0 12px 40px #0000005c,0 0 36px #ff8fa14d}.stage-back__label:before{content:"←";display:inline-block;margin-right:8px;color:#ffd7cf;font-size:15px;text-shadow:0 0 10px rgba(255,141,151,.72)}.stage-back__orbit{width:36px;height:36px;transform:rotate(180deg)}.stage-back:hover .stage-back__orbit{transform:rotate(0) scale(1.08);border-color:#ffd3c9b8}.replay{position:absolute;z-index:3;bottom:28px;left:50%;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:13px;min-width:238px;padding:10px 22px;color:#ffefebf0;border:1px solid rgba(249,190,192,.52);border-radius:999px;background:linear-gradient(135deg,#39192bc7,#080916d1);box-shadow:0 10px 34px #00000052,0 0 28px #ff829929,inset 0 0 22px #ffd2cf09;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translate(-50%);font:400 12px/1.2 Montserrat,"Noto Serif SC",sans-serif;letter-spacing:.2em;cursor:pointer;animation:replayGlow 2.6s ease-in-out infinite;transition:color .35s ease,border-color .35s ease,background .35s ease,box-shadow .35s ease}.replay.is-temporarily-hidden{display:none!important}.replay:hover{color:#fff;border-color:#ffe1dae0;background:linear-gradient(135deg,#552236e6,#0d0b1ceb);box-shadow:0 12px 40px #0000005c,0 0 36px #ff8fa147}.replay__label:after{content:"→";display:inline-block;margin-left:8px;color:#ffd7cf;font-size:15px;text-shadow:0 0 10px rgba(255,141,151,.72)}.replay__orbit{position:relative;width:42px;height:42px;border:1px solid rgba(243,186,179,.32);border-radius:50%;transition:transform .6s cubic-bezier(.2,.8,.2,1),border-color .35s}.replay:hover .replay__orbit{transform:rotate(180deg) scale(1.08);border-color:#ffd3c9b8}.replay__orbit:before,.replay__orbit:after,.replay__orbit i{content:"";position:absolute;top:50%;left:50%;border-radius:50%}.replay__orbit:before{width:4px;height:4px;background:#ffe2d2;transform:translate(-50%,-50%);box-shadow:0 0 10px #ff9c91}.replay__orbit:after{width:4px;height:4px;background:#f5b3b0;transform:translate(15px,-11px);box-shadow:0 0 8px #ff8e88}.replay__orbit i{width:27px;height:12px;border-top:1px solid rgba(255,205,199,.45);transform:translate(-50%,-50%) rotate(-25deg)}.loading{position:fixed;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;gap:14px;color:#f4d8d5ad;background:#030611;font-size:12px;letter-spacing:.35em}.loading__star{color:#ffd8cb;font-size:17px;animation:pulse 1.5s ease-in-out infinite}.entry-gate{position:fixed;inset:0;z-index:7;display:grid;place-items:center;padding:7vh 7vw;visibility:hidden;opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 48%,rgba(89,35,72,.2),transparent 32%),#030611b3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.entry-gate.is-ready{pointer-events:auto}.entry-gate__content{width:min(720px,88vw);text-align:center}.entry-gate__star{position:relative;width:84px;height:84px;margin:0 auto 30px;border:1px solid rgba(255,198,198,.24);border-radius:50%;box-shadow:0 0 42px #ff829f1f,inset 0 0 28px #ffcfc90a;animation:entryStarFloat 3.2s ease-in-out infinite}.entry-gate__star:before,.entry-gate__star:after,.entry-gate__star i{content:"";position:absolute;top:50%;left:50%;border-radius:50%}.entry-gate__star:before{width:6px;height:6px;background:#ffe1d6;transform:translate(-50%,-50%);box-shadow:0 0 12px #ff9c9f,0 0 26px #ff8099cc}.entry-gate__star:after{width:5px;height:5px;background:#f2aeb6;transform:translate(29px,-22px);box-shadow:0 0 10px #ff7b8fcc}.entry-gate__star i{width:60px;height:25px;border-top:1px solid rgba(255,201,198,.45);transform:translate(-50%,-50%) rotate(-24deg)}.entry-gate__star b{position:absolute;top:-8px;right:3px;color:#ffd9cdd1;font:400 13px/1 Montserrat,sans-serif;text-shadow:0 0 12px rgba(255,146,158,.85)}.entry-gate__kicker{margin:0 0 20px;color:#ecbfbf94;font:300 10px/1.5 Montserrat,sans-serif;letter-spacing:.48em}.entry-gate h2{margin:0;color:#ffefebf5;font-size:clamp(34px,3.4vw,58px);font-weight:300;line-height:1.45;letter-spacing:.14em;text-shadow:0 0 38px rgba(246,157,168,.2)}.entry-gate__note{margin:20px 0 38px;color:#e8d5d9a6;font-size:clamp(12px,.9vw,15px);letter-spacing:.24em}.entry-gate__button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-width:310px;padding:15px 24px;color:#fff1edf5;border:1px solid rgba(255,197,199,.64);border-radius:999px;background:linear-gradient(135deg,#5b233ae6,#0f0b1de6);box-shadow:0 12px 38px #00000057,0 0 34px #ff7f993d,inset 0 0 22px #ffd5cf0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font:400 13px/1.2 "Noto Serif SC",Microsoft YaHei,serif;letter-spacing:.16em;cursor:pointer;animation:entryButtonGlow 2.4s ease-in-out infinite;transition:border-color .35s ease,background .35s ease,box-shadow .35s ease}.entry-gate__button:hover{border-color:#ffe5def2;background:linear-gradient(135deg,#742b44f5,#160d23f5);box-shadow:0 14px 44px #00000061,0 0 44px #ff899e61}.entry-gate__button>span:first-child,.entry-gate__button i{color:#ffd8cf;font-style:normal;font-size:16px;text-shadow:0 0 12px rgba(255,139,153,.85)}@keyframes pulse{50%{opacity:.35;transform:scale(.7) rotate(45deg)}}@keyframes musicPulse{50%{opacity:.48;transform:translateY(-2px)}}@keyframes musicNoticeGlow{50%{box-shadow:0 8px 34px #00000057,0 0 34px #ff79995c,inset 0 0 18px #ffcbcf14}}@keyframes replayGlow{50%{border-color:#ffd1cfc7;box-shadow:0 10px 36px #00000057,0 0 38px #ff82994d,inset 0 0 24px #ffd2cf0e}}@keyframes entryStarFloat{50%{transform:translateY(-7px) rotate(8deg);box-shadow:0 0 55px #ff829f33,inset 0 0 28px #ffcfc90f}}@keyframes entryButtonGlow{50%{border-color:#ffdcd7e0;box-shadow:0 12px 40px #0000005c,0 0 46px #ff7f9966,inset 0 0 24px #ffd5cf12}}@media(max-width:900px){.intro{left:7vw;width:62vw;top:34%}h1{font-size:clamp(24px,4vw,38px)}.question-card{min-height:min(500px,72vh);padding:48px 20px 28px}.answer-arena{width:min(680px,80vw);height:210px}}@media(max-width:700px)and (orientation:portrait){.constellation-stage.is-stage-transitioning-out .constellation-card,.story-overlay-stage.is-stage-transitioning-out .story-card,.birthday-wish-stage.is-stage-transitioning-out .birthday-wish-card{-webkit-backdrop-filter:none;backdrop-filter:none}.experience{background:radial-gradient(circle at 50% 65%,rgba(97,45,113,.18),transparent 36%),radial-gradient(circle at 50% 18%,rgba(41,68,113,.13),transparent 34%),#030611}.vignette{background:radial-gradient(ellipse at center,transparent 48%,rgba(0,2,10,.64) 100%)}.intro{top:max(76px,calc(env(safe-area-inset-top) + 54px));left:6vw;width:88vw;transform:none;text-align:center}.eyebrow{margin-bottom:13px;font-size:8px;line-height:1.5;letter-spacing:.32em}h1{font-size:clamp(23px,7.1vw,31px);line-height:1.5;letter-spacing:.08em}.rule{width:min(280px,76vw);margin:16px auto 13px}.hint{font-size:11px;line-height:1.6;letter-spacing:.18em}.music-notice{top:max(12px,env(safe-area-inset-top));right:12px;gap:7px;min-height:44px;padding:10px 14px;font-size:11px;letter-spacing:.08em}.entry-gate{padding:max(28px,env(safe-area-inset-top)) 6vw max(28px,env(safe-area-inset-bottom))}.entry-gate__content{width:88vw}.entry-gate__star{width:72px;height:72px;margin-bottom:24px}.entry-gate__kicker{margin-bottom:14px;font-size:8px;letter-spacing:.3em}.entry-gate h2{font-size:clamp(30px,9vw,42px);letter-spacing:.08em}.entry-gate__note{max-width:82vw;margin:16px auto 30px;font-size:12px;line-height:1.8;letter-spacing:.12em}.entry-gate__button{width:min(330px,86vw);min-width:0;min-height:54px;padding:14px 18px;font-size:12px;letter-spacing:.1em}.loading{padding-left:.35em;font-size:11px}.constellation-stage,.story-overlay-stage,.birthday-wish-stage{display:grid;align-items:center;justify-items:center;padding:max(76px,calc(env(safe-area-inset-top) + 66px)) 4vw max(26px,env(safe-area-inset-bottom))}.constellation-stage__back,.story-stage__back,.wish-stage__back{top:max(12px,env(safe-area-inset-top));min-height:46px;padding:0 17px;font-size:11px}.constellation-card{width:92vw;margin:0 auto;padding:27px 18px 25px;border-radius:25px}.constellation-kicker{margin-bottom:9px;font-size:8px;letter-spacing:.3em}.constellation-card h2{font-size:clamp(27px,8vw,36px);letter-spacing:.06em}.constellation-guide{margin-top:8px;font-size:11px;line-height:1.7;letter-spacing:.08em}.libra-map{width:100%;margin:15px auto 6px}.libra-symbol{font-size:106px}.constellation-star{width:44px;height:44px}.constellation-message{min-height:46px;padding:10px 13px}.constellation-blessing{font-size:10px;letter-spacing:.08em}.constellation-progress{font-size:9px}.constellation-romance{margin-top:10px;font-size:10px;line-height:1.7;letter-spacing:.06em}.constellation-next{width:min(310px,80vw);min-width:0;min-height:50px;margin-top:11px;font-size:11px}.story-card{width:92vw;margin:0 auto;padding:27px 18px 26px;border-radius:25px}.story-kicker{margin-bottom:9px;font-size:8px;letter-spacing:.28em}.story-card h2{font-size:clamp(27px,8vw,36px);letter-spacing:.06em}.story-guide{margin-top:8px;font-size:11px;line-height:1.7;letter-spacing:.07em}.fortune-options{gap:22px;min-height:128px;margin-top:10px}.fortune-star{width:66px;height:66px}.fortune-result{min-height:112px;padding:14px 13px}.fortune-result h3{font-size:16px}.fortune-result>p:last-child{font-size:10px}.fortune-next,.music-box-next,.moonlight-letter-next,.music-box-trigger,.moonlight-reveal{width:min(310px,80vw);min-width:0;min-height:50px;font-size:11px}.music-box-visual{width:225px;height:225px;margin-top:12px}.music-box-moon{width:98px;height:98px}.music-box-moon:after{width:95px;height:95px}.music-box-moon i{top:41px;left:25px}.music-box-orbit{inset:19px}.moonlight-envelope{min-height:405px;margin-top:16px;padding:31px 17px 20px}.moonlight-lines{gap:8px;margin-top:34px;font-size:12px;line-height:1.7;letter-spacing:.02em}.birthday-wish-card{width:92vw;min-height:0;margin:0 auto;padding:27px 18px 30px;border-radius:25px}.wish-kicker{margin-bottom:9px;font-size:8px;letter-spacing:.32em}.birthday-wish-card h2{font-size:clamp(27px,8vw,36px);letter-spacing:.07em}.wish-guide{font-size:11px;letter-spacing:.1em}.wish-cake{width:300px;height:238px;margin:34px auto -2px;transform:scale(.82);transform-origin:50% 0}.blow-actions{flex-direction:column;gap:6px}.microphone-button,.wish-submit-button,.future-submit-button,.wish-success__back{width:min(310px,80vw);min-height:52px;font-size:12px}.wish-input-label{margin-top:22px}.wish-form-step textarea,.future-letter-step textarea{min-height:150px;font-size:14px}}@media(prefers-reduced-motion:reduce){.loading__star,.entry-gate__star,.entry-gate__button,.replay,.stage-back,.music-notice,.music-notice__wave{animation:none}.replay__orbit{transition:none}.wish-flame,.wish-success__star,.constellation-star.is-next:before,.constellation-star.is-next:after,.fortune-star i,.music-box-card.is-playing .music-box-orbit,.music-box-card.is-playing .music-box-moon,.music-box-card.is-playing .music-box-note{animation:none}}
