:root{--bg-1:#1a1030;--bg-2:#2b1b4d;--bg-3:#4a2a6b;--accent:#ff7eb3;--accent-2:#ffd166;--text:#fff7ff;--text-dim:#fff7ffb8;--card:#ffffff14;--card-border:#ffffff29;--radius:20px;--shadow:0 18px 40px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text);background:radial-gradient(1200px 700px at 15% -10%, var(--bg-3), transparent 60%), radial-gradient(900px 600px at 110% 20%, #6b2f6e, transparent 55%), linear-gradient(160deg, var(--bg-1), var(--bg-2) 45%, #150e28);-webkit-font-smoothing:antialiased;background-attachment:fixed;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,-apple-system,Segoe UI,sans-serif;overflow-x:hidden}button{font-family:inherit}.stage{z-index:1;min-height:100dvh;padding:max(56px, env(safe-area-inset-top)) clamp(16px, 5vw, 40px) max(32px, env(safe-area-inset-bottom));text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(16px,3vh,28px);display:flex;position:relative}.title{letter-spacing:.06em;text-shadow:0 4px 24px #ff7eb359;margin:0;font-size:clamp(28px,6.5vw,52px);line-height:1.25}.subtitle{color:var(--text-dim);margin:0;font-size:clamp(14px,3.6vw,18px);line-height:1.7}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow);max-width:min(560px,100%);padding:clamp(16px,4vw,26px)}.btn{appearance:none;cursor:pointer;color:#3a1030;background:linear-gradient(135deg, var(--accent-2), #ff9ec4);touch-action:manipulation;border:none;border-radius:999px;min-height:46px;padding:12px 30px;font-size:clamp(15px,4vw,17px);font-weight:600;transition:transform .15s,box-shadow .15s,opacity .2s;box-shadow:0 10px 26px #ff7eb366}.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px #ff7eb380}.btn:active{transform:translateY(1px)scale(.98)}.btn.ghost{color:var(--text);border:1px solid var(--card-border);box-shadow:none;background:0 0}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.progress{top:max(14px, env(safe-area-inset-top));z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#00000047;border-radius:999px;gap:8px;padding:7px 14px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.progress i{background:#ffffff40;border-radius:50%;width:8px;height:8px;transition:all .3s}.progress i.on{background:var(--accent-2);border-radius:999px;width:22px;box-shadow:0 0 12px #ffd166cc}.music-toggle{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));z-index:30;border:1px solid var(--card-border);width:44px;height:44px;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#00000059;border-radius:50%;place-items:center;font-size:18px;animation:6s linear infinite spin;display:grid;position:fixed}.music-toggle.off{opacity:.55;animation:none}@keyframes spin{to{transform:rotate(360deg)}}.reveal{z-index:40;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.reveal-hole{border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 120vmax #241543,0 0 60px #ffd1668c}.reveal-label{letter-spacing:.2em;color:var(--text);text-shadow:0 0 30px #ffd16699;font-size:clamp(24px,7vw,44px);font-weight:700;position:relative}.cake-wrap{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;animation:5s ease-in-out infinite cakeFloat;display:flex;position:relative}@keyframes cakeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.cake-wrap:before{content:"";filter:blur(6px);pointer-events:none;z-index:-1;background:radial-gradient(at 50% 35%,#ffc46e6b,#ff965a24 45%,#0000 70%);width:clamp(240px,70vw,420px);height:clamp(200px,50vw,320px);transition:opacity 1.1s;position:absolute;top:-34px;left:50%;transform:translate(-50%)}.cake-wrap.out:before{opacity:.18}.candles{justify-content:center;align-items:flex-end;gap:clamp(14px,5vw,26px);height:clamp(72px,16vw,104px);display:flex}.candle{cursor:pointer;background:repeating-linear-gradient(45deg,#ff8fb8 0 6px,#fff 6px 12px);border:none;border-radius:4px 4px 2px 2px;width:clamp(9px,2.4vw,12px);height:clamp(46px,11vw,66px);padding:0;position:relative;box-shadow:inset -2px 0 4px #0003,inset 2px 0 3px #ffffff80,0 2px 5px #00000059}.candle:after{content:"";background:linear-gradient(#fff,#ffd7e6);border-radius:4px;height:6px;position:absolute;bottom:-3px;left:-2px;right:-2px;box-shadow:0 2px 4px #0000004d}.wick{background:#2a2a2a;border-radius:1px;width:2px;height:7px;position:absolute;top:-7px;left:50%;transform:translate(-50%)}.flame{pointer-events:none;background:radial-gradient(circle at 50% 72%,#fff9c4,#ffb02e 52%,#ff5e3a);border-radius:50% 50% 45% 45%;width:clamp(14px,3.6vw,18px);height:clamp(21px,5vw,27px);animation:.55s ease-in-out infinite alternate flicker;position:absolute;top:-27px;left:50%;transform:translate(-50%);box-shadow:0 0 16px 5px #ffaa3ccc,0 0 46px 14px #ff783c61}.flame:after{content:"";filter:blur(1px);background:#ffffffd9;border-radius:50%;width:45%;height:45%;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}@keyframes flicker{0%{transform:translate(-50%)scale(1)rotate(-4deg)}to{transform:translate(-50%)scale(1.08,.94)rotate(4deg)}}.smoke{pointer-events:none;background:#fff9;border-radius:50%;width:8px;height:8px;animation:.9s ease-out forwards smoke;position:absolute;top:-20px;left:50%}@keyframes smoke{to{opacity:0;transform:translate(-50%,-42px)scale(3.4)}}.cake-body{flex-direction:column;align-items:center;display:flex;position:relative}.tier{border-radius:14px 14px 10px 10px;position:relative;box-shadow:inset 0 -10px 18px #00000038,inset 6px 0 12px #ffffff24,0 6px 14px #0000004d}.icing{background:linear-gradient(180deg, #fffffff5, var(--ic) 70%, #ffffffbf);border-radius:13px 13px 6px 6px;height:44%;position:absolute;top:0;left:0;right:0;box-shadow:inset 0 -4px 8px #00000014,0 3px 6px #0000002e}.icing:after{content:"";background-image:radial-gradient(circle at 9px 0, var(--ic) 7px, transparent 7.5px), radial-gradient(circle at 24px 0, #ffffffe6 10px, transparent 10.5px);background-position:4px 0,15px 0;background-repeat:repeat-x;background-size:19px 20px,47px 20px;height:20px;position:absolute;top:98%;left:0;right:0}.sprinkles{border-radius:inherit;opacity:.9;pointer-events:none;background-image:radial-gradient(circle at 18% 74%,#ff5c8a 0 2px,#0000 2.5px),radial-gradient(circle at 34% 88%,#4ade80 0 2px,#0000 2.5px),radial-gradient(circle at 62% 78%,#60a5fa 0 2px,#0000 2.5px),radial-gradient(circle at 80% 90%,#facc15 0 2px,#0000 2.5px),radial-gradient(circle at 48% 96%,#c084fc 0 2px,#0000 2.5px),radial-gradient(circle at 88% 72%,#ff5c8a 0 1.8px,#0000 2.3px);position:absolute;inset:0;overflow:hidden}.cherry{pointer-events:none;z-index:3;background:radial-gradient(circle at 32% 28%,#ffb3c6,#e11d48 55%,#8f0f36);border-radius:50%;width:clamp(14px,3.6vw,18px);height:clamp(14px,3.6vw,18px);position:absolute;top:-9px;box-shadow:inset -2px -3px 5px #00000059,0 3px 6px #0006}.cherry:before{content:"";transform-origin:bottom;background:#4ade80;border-radius:2px;width:2px;height:8px;position:absolute;top:-7px;left:52%;transform:rotate(24deg)}.cherry:after{content:"";filter:blur(.5px);background:#fffc;border-radius:50%;width:30%;height:22%;position:absolute;top:20%;left:22%}.cherry.left{left:clamp(8px,3vw,16px)}.cherry.right{right:clamp(8px,3vw,16px)}.macaron{pointer-events:none;z-index:3;background:linear-gradient(#fda4af 0 42%,#fff7ed 42% 58%,#fb7185 58% 100%);border-radius:50%/45%;width:clamp(22px,6vw,30px);height:clamp(15px,4vw,19px);position:absolute;top:-7px;box-shadow:0 3px 6px #00000059}.macaron.left{left:clamp(10px,4vw,22px);transform:rotate(-12deg)}.macaron.right{right:clamp(10px,4vw,22px);transform:rotate(12deg)}.tier-3{--ic:#ffe4ef;z-index:3;background:linear-gradient(#ff9ec4,#e2618f);width:clamp(120px,34vw,170px);height:clamp(34px,9vw,46px)}.tier-2{--ic:#fff1dc;z-index:2;background:linear-gradient(#ffd9a8,#f0a35e);width:clamp(160px,46vw,230px);height:clamp(40px,11vw,56px)}.tier-1{--ic:#efe6ff;z-index:1;background:linear-gradient(#b98cff,#8b5cf6);border-radius:16px 16px 12px 12px;width:clamp(200px,58vw,300px);height:clamp(46px,13vw,66px)}.plate{z-index:4;background:linear-gradient(#ffffffbf,#ffffff2e 55%,#ffffff80);border-radius:50%;width:clamp(250px,74vw,390px);height:clamp(16px,4.5vw,22px);margin-top:-5px;position:relative;box-shadow:0 6px 16px #0006,inset 0 -3px 6px #00000026}.table-shadow{filter:blur(6px);z-index:0;background:radial-gradient(#00000080,#0000 70%);border-radius:50%;width:clamp(220px,66vw,340px);height:clamp(16px,4vw,24px);margin-top:-8px;position:relative}.gift-dots{justify-content:center;gap:8px;display:flex}.gift-dots i{background:#ffffff40;border-radius:50%;width:8px;height:8px;transition:all .3s}.gift-dots i.on{background:var(--accent-2);box-shadow:0 0 10px #ffd166b3}.gift{border:1px solid var(--card-border);background:var(--card);border-radius:var(--radius);cursor:pointer;min-height:clamp(150px,34vw,190px);color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:clamp(14px,3.5vw,20px) 12px;transition:transform .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.gift:hover{border-color:#ffd16699;transform:translateY(-4px)}.gift-box{filter:drop-shadow(0 14px 22px #00000073);width:clamp(140px,40vw,180px);height:clamp(120px,34vw,150px);margin-bottom:6px;position:relative}.gb-body{background:linear-gradient(155deg,#ff8fb8 0%,#f2589a 55%,#d63c82 100%);border-radius:8px 8px 10px 10px;height:64%;position:absolute;bottom:0;left:4%;right:4%;overflow:hidden;box-shadow:inset -6px -8px 14px #00000047,inset 6px 6px 12px #ffffff47}.gb-lid{z-index:3;transform-origin:20% 100%;background:linear-gradient(155deg,#ffa9cb 0%,#f76aa8 60%,#e14b8f 100%);border-radius:8px;height:30%;transition:transform .7s cubic-bezier(.34,1.56,.64,1),opacity .7s;position:absolute;top:26%;left:0;right:0;overflow:visible;box-shadow:inset -5px -5px 10px #00000040,inset 5px 5px 10px #ffffff52,0 6px 12px #0000004d}.gb-lid:after{content:"";pointer-events:none;background:linear-gradient(#fff6,#0000);border-radius:8px 8px 4px 4px;height:34%;position:absolute;top:0;left:0;right:0}.gb-ribbon-v{background:linear-gradient(90deg,#ffd166,#ffe9a8 45%,#f7b731);width:clamp(18px,6vw,24px);position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);box-shadow:inset -2px 0 4px #0000002e}.gb-ribbon-h{background:linear-gradient(#ffd166,#ffe9a8 45%,#f7b731);height:clamp(16px,5vw,22px);position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);box-shadow:inset 0 -2px 4px #0000002e}.gb-bow{z-index:4;width:clamp(52px,15vw,66px);height:clamp(40px,12vw,50px);position:absolute;top:-76%;left:50%;transform:translate(-50%)}.gb-bow:before,.gb-bow:after{content:"";background:linear-gradient(140deg,#ffe9a8,#f7b731 70%,#e09b1f);width:46%;height:68%;position:absolute;top:18%;box-shadow:inset -3px -3px 6px #0003}.gb-bow:before{border-radius:70% 30% 55% 45%/60% 65% 35% 40%;left:2%;transform:rotate(-16deg)}.gb-bow:after{border-radius:30% 70% 45% 55%/65% 60% 40% 35%;right:2%;transform:rotate(16deg)}.gb-bow i{aspect-ratio:1;z-index:2;background:radial-gradient(circle at 35% 30%,#ffe9a8,#eba521);border-radius:50%;width:26%;position:absolute;top:34%;left:50%;transform:translate(-50%);box-shadow:0 2px 5px #00000059}.gift-box.open .gb-lid{opacity:.95;transform:translate(-34%,-96%)rotate(-26deg)}.gift-box.open .gb-body{animation:.55s cubic-bezier(.34,1.56,.64,1) gbPop}@keyframes gbPop{0%{transform:scaleY(1)}35%{transform:scaleY(.86)scaleX(1.06)}70%{transform:scaleY(1.06)scaleX(.97)}to{transform:scaleY(1)}}.gb-content{opacity:0;z-index:5;pointer-events:none;filter:drop-shadow(0 8px 16px #0006);font-size:clamp(40px,12vw,56px);line-height:1;position:absolute;bottom:28%;left:50%;transform:translate(-50%)scale(.2)}.gift-box.open .gb-content{animation:.75s cubic-bezier(.34,1.56,.64,1) .18s forwards gbJump}@keyframes gbJump{0%{opacity:0;transform:translate(-50%,10%)scale(.2)}55%{opacity:1;transform:translate(-50%,-108%)scale(1.16)}75%{transform:translate(-50%,-92%)scale(.97)}to{opacity:1;transform:translate(-50%,-100%)scale(1)}}.gb-sparks{z-index:6;pointer-events:none;width:0;height:0;position:absolute;top:44%;left:50%}.gb-sparks i{opacity:0;background:radial-gradient(circle,#fff6c2,#ffd166 60%,#0000);border-radius:50%;width:9px;height:9px;margin:-4.5px;position:absolute;transform:scale(0)}.gift-box.open .gb-sparks i{animation:.7s ease-out .12s forwards gbSpark}.gift-box.open .gb-sparks i:nth-child(2n){animation-delay:.2s}@keyframes gbSpark{0%{opacity:1;transform:translate(0)scale(.4)}70%{opacity:1}to{opacity:0;transform:translate(var(--tx), var(--ty)) scale(1.15)}}.gift.single:not(.opened) .gift-box{animation:2.4s ease-in-out infinite gbBreathe}@keyframes gbBreathe{0%,to{transform:translateY(0)rotate(-1.2deg)}50%{transform:translateY(-7px)rotate(1.2deg)}}.gift .hint{color:var(--text-dim);font-size:13px}.gift .msg{color:var(--text);font-size:clamp(13px,3.4vw,15px);line-height:1.75}.gift .g-title{letter-spacing:.14em;color:var(--accent-2);font-size:13px}.gift.single{gap:14px;width:min(460px,100%);min-height:clamp(230px,56vw,290px);overflow:visible}.gift.single.opened{overflow:visible}.gift-note{flex-direction:column;align-items:center;gap:8px;min-height:46px;display:flex}.gift.single .msg{max-width:34ch;font-size:clamp(15px,4vw,18px)}.gift.single:disabled{cursor:default}.gift.single:disabled:hover{border-color:var(--card-border);transform:none}.gift-corners{z-index:3;pointer-events:none;position:absolute;inset:0}.gift-corner{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff1a;border:1px solid #ffd1668c;border-radius:16px;align-items:center;gap:clamp(6px,1.6vw,10px);max-width:min(42vw,220px);padding:clamp(6px,1.8vw,10px) clamp(9px,2.4vw,14px);animation:.75s cubic-bezier(.22,1,.36,1) both badgeFly;display:flex;position:absolute;box-shadow:0 0 22px #ffd16659,inset 0 0 14px #ffffff24}.gc-0{top:max(68px, calc(env(safe-area-inset-top) + 58px));left:max(10px, env(safe-area-inset-left));animation-name:badgeFlyTL}.gc-1{top:max(68px, calc(env(safe-area-inset-top) + 58px));right:max(10px, env(safe-area-inset-right));animation-name:badgeFlyTR}.gc-2{bottom:max(14px, env(safe-area-inset-bottom));right:max(10px, env(safe-area-inset-right));animation-name:badgeFlyBR}.gc-3{bottom:max(14px, env(safe-area-inset-bottom));left:max(10px, env(safe-area-inset-left));animation-name:badgeFlyBL}.gc-emoji{filter:drop-shadow(0 0 10px #ffd166b3);flex:none;font-size:clamp(22px,6vw,30px);line-height:1;animation:2.6s ease-in-out infinite badgeBob}.gc-text{flex-direction:column;gap:2px;min-width:0;display:flex}.gc-title{letter-spacing:.06em;color:var(--accent-2);white-space:nowrap;font-size:clamp(11px,3vw,13px);font-weight:700}.gc-msg{color:var(--text);opacity:.9;-webkit-line-clamp:3;line-clamp:3;word-break:break-word;-webkit-box-orient:vertical;font-size:clamp(11px,3vw,13px);line-height:1.5;display:-webkit-box;overflow:hidden}@keyframes badgeFlyTL{0%{opacity:0;transform:translate(40vw,30vh)scale(1.7)}35%{opacity:1}to{opacity:1;transform:translate(0)scale(1)}}@keyframes badgeFlyTR{0%{opacity:0;transform:translate(-40vw,30vh)scale(1.7)}35%{opacity:1}to{opacity:1;transform:translate(0)scale(1)}}@keyframes badgeFlyBR{0%{opacity:0;transform:translate(-40vw,-42vh)scale(1.7)}35%{opacity:1}to{opacity:1;transform:translate(0)scale(1)}}@keyframes badgeFlyBL{0%{opacity:0;transform:translate(40vw,-42vh)scale(1.7)}35%{opacity:1}to{opacity:1;transform:translate(0)scale(1)}}@keyframes badgeBob{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-5px)rotate(4deg)}}.gift-reveal{cursor:default;gap:14px;width:min(460px,100%);min-height:clamp(230px,56vw,290px);overflow:visible}.gift-reveal:hover{border-color:var(--card-border);transform:none}.gr-stage{aspect-ratio:1;place-items:center;width:clamp(150px,42vw,200px);display:grid;position:relative}.gr-glow{filter:blur(6px);background:radial-gradient(circle,#ffd16680,#ff7eb347 55%,#0000 72%);border-radius:50%;animation:2.6s ease-in-out infinite grGlow;position:absolute;inset:-8%}.gr-ring{background:conic-gradient(#0000 0deg,#ffd166f2 60deg,#0000 130deg,#ff7eb3d9 220deg,#0000 300deg,#7cbbffb3 340deg,#0000 360deg);border-radius:50%;animation:4s linear infinite spin;position:absolute;inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 68%,#000 70%);mask:radial-gradient(farthest-side,#0000 68%,#000 70%)}.gr-emoji{filter:drop-shadow(0 10px 18px #0006)drop-shadow(0 0 22px #ffd1668c);font-size:clamp(64px,20vw,96px);line-height:1;animation:3s ease-in-out infinite grFloat;position:relative}@keyframes grFloat{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-12px)rotate(2deg)}}@keyframes grGlow{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.09)}}.gr-sparks{pointer-events:none;position:absolute;inset:0}.gr-sparks i{background:radial-gradient(circle,#fff9d6,#ffd166 60%,#0000);border-radius:50%;width:10px;height:10px;animation:1.6s ease-in-out infinite grTwinkle;position:absolute}.gr-sparks i:first-child{top:4%;left:52%}.gr-sparks i:nth-child(2){animation-delay:.4s;top:36%;right:0}.gr-sparks i:nth-child(3){animation-delay:.8s;bottom:6%;left:14%}.gr-sparks i:nth-child(4){animation-delay:1.2s;top:20%;left:4%}@keyframes grTwinkle{0%,to{opacity:.3;transform:scale(.5)}50%{opacity:1;transform:scale(1.3)}}.gift-reveal .msg{max-width:34ch;font-size:clamp(15px,4vw,18px)}.gift-reveal.last .gr-stage:before{content:"";background:repeating-conic-gradient(from 0deg, #ffd1664d 0 5deg, transparent 5deg 16deg);border-radius:50%;animation:14s linear infinite spin;position:absolute;inset:-34%;-webkit-mask:radial-gradient(farthest-side,#0000 42%,#000 56%,#0000 80%);mask:radial-gradient(farthest-side,#0000 42%,#000 56%,#0000 80%)}.gift-reveal.last .gr-glow{background:radial-gradient(circle,#ffd166a6,#ff7eb361 55%,#0000 74%);animation-duration:1.8s}.gift-reveal.last .gr-emoji{animation-duration:2.2s}.wish-card{flex-direction:column;gap:14px;width:min(560px,100%);display:flex}.wish-input{resize:none;width:100%;color:var(--text);border:1px solid var(--card-border);background:#00000047;border-radius:14px;outline:none;padding:12px 14px;font-family:inherit;font-size:clamp(15px,4vw,17px);line-height:1.7;transition:border-color .2s}.wish-input::placeholder{color:#fff7ff6b}.wish-input:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px #ffd1662e}.game-board{border-radius:var(--radius);border:1px solid var(--card-border);width:min(720px,100%);height:clamp(340px,56dvh,520px);box-shadow:var(--shadow);touch-action:none;background:radial-gradient(600px 200px at 50% 120%,#ff7eb359,#0000),linear-gradient(#140c2cb3,#2b1b4db3);position:relative;overflow:hidden}.game-board canvas{width:100%;height:100%;display:block}.game-hud{pointer-events:none;text-shadow:0 2px 8px #0009;justify-content:space-between;align-items:center;padding:10px 16px;font-size:clamp(13px,3.5vw,16px);font-weight:600;display:flex;position:absolute;top:0;left:0;right:0}.hud-time,.hud-target{min-width:64px}.hud-target{text-align:right}.hud-ring{aspect-ratio:1;flex:none;width:clamp(52px,13vw,64px);position:relative}.hud-ring svg{filter:drop-shadow(0 2px 8px #00000080);width:100%;height:100%;display:block}.hud-ring circle{fill:none;stroke-width:6px;stroke-linecap:round}.ring-bg{stroke:#ffffff29}.ring-fg{stroke:var(--accent-2);filter:drop-shadow(0 0 6px #ffd166cc);transition:stroke-dashoffset .45s cubic-bezier(.22,1,.36,1);animation:2s ease-in-out infinite ringGlow}@keyframes ringGlow{0%,to{filter:drop-shadow(0 0 4px #ffd16699)}50%{filter:drop-shadow(0 0 10px #ffd166)}}.ring-num{color:var(--text);text-shadow:0 2px 6px #000000b3;place-items:center;font-size:clamp(15px,4vw,19px);font-weight:700;display:grid;position:absolute;inset:0}.game-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0c081ac7;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:20px;display:flex;position:absolute;inset:0}.game-overlay h3{margin:0;font-size:clamp(20px,5.5vw,30px)}.reward-card{border-radius:var(--radius);max-width:min(420px,88%);box-shadow:0 0 40px #ffd1664d, var(--shadow);background:linear-gradient(160deg,#ffd16638,#ff7eb324);border:1px solid #ffd16699;flex-direction:column;align-items:center;gap:8px;padding:clamp(16px,4vw,24px);display:flex}.reward-card h3{color:var(--accent-2);text-shadow:0 0 18px #ffd16699;margin:0;font-size:clamp(18px,5vw,24px)}.reward-emoji{filter:drop-shadow(0 0 16px #ffd166cc);font-size:clamp(44px,12vw,60px);line-height:1;animation:2.4s ease-in-out infinite rewardSpin}@keyframes rewardSpin{0%,to{transform:translateY(0)rotate(-8deg)scale(1)}50%{transform:translateY(-8px)rotate(8deg)scale(1.08)}}.reward-line{color:var(--text);text-align:center;margin:0;font-size:clamp(14px,3.8vw,16px);line-height:1.8}.backdrop{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.stage.final>:not(.backdrop):not(.confetti-layer){z-index:1;position:relative}.twinkle{background:radial-gradient(circle,#fff,#fff1c21a);border-radius:50%;animation:2.2s ease-in-out infinite twinkle;position:absolute}@keyframes twinkle{0%,to{opacity:.15;transform:scale(.7)}50%{opacity:.95;transform:scale(1.15)}}.balloon{filter:var(--tint) drop-shadow(0 6px 14px #00000059);animation:rise var(--dur,20s) linear var(--delay,0s) infinite;opacity:.85;line-height:1;position:absolute;bottom:-12vh}@keyframes rise{0%{transform:translateY(0)translate(0)rotate(-8deg)}25%{transform:translateY(-35vh)translate(24px)rotate(6deg)}50%{transform:translateY(-70vh)translate(-20px)rotate(-6deg)}75%{transform:translateY(-105vh)translate(18px)rotate(5deg)}to{transform:translateY(-145vh)translate(-8px)rotate(-4deg)}}.final-hero{flex-direction:column;align-items:center;gap:clamp(8px,2vh,14px);display:flex}.hero-emoji-row{gap:clamp(8px,3vw,18px);font-size:clamp(26px,8vw,40px);display:flex}.hero-emoji-row span{animation:1.8s ease-in-out infinite hop;display:inline-block}@keyframes hop{0%,to{transform:translateY(0)rotate(-6deg)}50%{transform:translateY(-14px)rotate(8deg)}}.hero-kicker{letter-spacing:.34em;color:var(--accent);text-indent:.34em;margin:0;font-size:clamp(11px,3vw,14px)}.shimmer{background:linear-gradient(100deg,#ffd166 10%,#fff3c4 30%,#ff7eb3 50%,#fff3c4 70%,#ffd166 90%) 0 0/220% 100%;color:#0000;text-shadow:none;-webkit-background-clip:text;background-clip:text;animation:3.4s linear infinite shimmer}@keyframes shimmer{0%{background-position:180% 0}to{background-position:-40% 0}}.hero-badge{color:var(--accent-2);background:#ffd1661a;border:1px solid #ffd16673;border-radius:999px;align-items:center;gap:10px;padding:8px 20px;font-size:clamp(13px,3.6vw,15px);display:inline-flex;box-shadow:0 0 24px #ffd1662e}.poem-row{flex-direction:column;gap:clamp(16px,3vh,24px);width:min(560px,100%);display:flex}@media (width>=900px){.poem-row.multi{flex-flow:wrap;justify-content:center;align-items:stretch;width:min(1240px,100%)}.poem-row.multi .poem{flex:340px;max-width:none}}.poem{flex-direction:column;gap:clamp(10px,2.4vh,16px);width:100%;max-width:min(560px,100%);margin:0 auto;font-size:clamp(17px,4.6vw,24px);line-height:1.7;display:flex;position:relative;overflow:hidden}.poem:before{content:"";pointer-events:none;background:radial-gradient(120% 80% at 100% 0,#ff7eb32e,#0000 60%);position:absolute;inset:0}.quote-mark{color:#ffd16638;pointer-events:none;font-family:Georgia,serif;font-size:clamp(64px,16vw,90px);line-height:1;position:absolute;top:-14px;right:14px}.quote-btn{pointer-events:auto;appearance:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;background:0 0;border:none;margin:0;padding:0;transition:color .3s,text-shadow .3s,transform .15s;position:absolute}.quote-btn:active{transform:scale(.86)}@property --hold-p{syntax:"<angle>";inherits:false;initial-value:0turn}.quote-btn.pressing{color:#ff7eb3e6;text-shadow:0 0 30px #ff7eb3f2}.quote-btn.pressing:after{content:"";background:conic-gradient(#ff7eb3 var(--hold-p), #ff7eb326 0turn);border-radius:50%;animation:1.5s linear forwards holdRing;position:absolute;inset:-18%;transform:rotate(-90deg);-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 5px),#000 calc(100% - 4px));mask:radial-gradient(farthest-side,#0000 calc(100% - 5px),#000 calc(100% - 4px))}@keyframes holdRing{0%{--hold-p:0turn;transform:rotate(-90deg)scale(.88)}to{--hold-p:1turn;transform:rotate(-90deg)scale(1)}}.quote-btn.active{color:#ff7eb3bf;text-shadow:0 0 26px #ff7eb3cc;animation:1s ease-in-out infinite quotePulse}@keyframes quotePulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.love-ask{left:50%;bottom:max(24px, env(safe-area-inset-bottom));z-index:50;border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1e1036eb;border:1px solid #ff7eb38c;flex-direction:column;align-items:center;gap:10px;width:min(440px,100% - 32px);padding:clamp(18px,5vw,26px);display:flex;position:fixed;box-shadow:0 18px 50px #00000080,0 0 40px #ff7eb340}.love-ask-heart{font-size:30px;animation:1.4s ease-in-out infinite hop}.love-input{appearance:none;border:1px solid var(--card-border);width:100%;color:var(--text);text-align:center;letter-spacing:.1em;background:#0000004d;border-radius:12px;outline:none;padding:12px 16px;font-family:inherit;font-size:clamp(16px,4.4vw,19px);transition:border-color .2s,box-shadow .2s}.love-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #ff7eb340}.love-hint{min-height:1.4em;color:var(--accent);text-align:center;margin:0;font-size:13px;transition:color .3s}.love-hint.miss{color:var(--text-dim);animation:.5s hintIn}@keyframes hintIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.love-ask .actions{gap:10px;margin-top:2px}.poem.love{background:linear-gradient(155deg,#ff7eb329,#ffffff0d);border-color:#ff7eb380}.poem.love:before{background:radial-gradient(120% 80% at 0 0,#ff7eb338,#0000 60%)}.poem.love b{color:var(--accent);text-shadow:0 0 18px #ff7eb3b3}.poem.love.miss{background:linear-gradient(155deg,#c49bff2e,#ffffff0d);border-color:#c49bff8c}.poem.love.miss:before{background:radial-gradient(120% 80% at 0 0,#c49bff3d,#0000 60%)}.poem.love.miss b{color:#c49bff;text-shadow:0 0 18px #c49bffbf}.poem.love.miss .love-tag{color:#c49bff;background:#c49bff24;border-color:#c49bff8c}.poem.love.miss .love-foot{border-top-color:#c49bff66}.love-tag{letter-spacing:.18em;color:var(--accent);background:#ff7eb31f;border:1px solid #ff7eb380;border-radius:999px;padding:3px 10px;font-size:11px;position:absolute;top:12px;right:14px}.love-foot{color:var(--text-dim);border-top:1px dashed #ff7eb359;margin:6px 0 0;padding-top:12px;font-size:clamp(13px,3.4vw,15px);line-height:1.8}.poem b{color:var(--accent-2);text-shadow:0 0 18px #ffd16699;margin-right:4px;font-size:1.25em}.poem-line{transition:transform .25s;position:relative}.poem-line:hover{transform:translate(6px)}.blessing{background:linear-gradient(160deg,#ff7eb324,#ffffff0d);border-color:#ff7eb366;position:relative}.blessing-label{letter-spacing:.2em;color:var(--accent);border:1px solid #ff7eb380;border-radius:999px;align-self:flex-start;margin-bottom:6px;padding:3px 12px;font-size:12px;display:inline-block}.blessing p{color:var(--text);margin:0 0 10px;font-size:clamp(15px,4vw,18px);line-height:1.9}.blessing p:last-child{margin-bottom:0}.blessing .blessing-hint{color:var(--accent-2);letter-spacing:.02em;border-top:1px dashed #ff7eb373;align-items:flex-start;gap:8px;margin-top:14px;padding-top:14px;font-size:clamp(14px,3.6vw,16px);animation:2.8s ease-in-out infinite hintGlow;display:flex}.blessing .blessing-hint span{font-size:1.05em;animation:2s ease-in-out infinite hop}@keyframes hintGlow{0%,to{text-shadow:0 0 #ffd16600}50%{text-shadow:0 0 16px #ffd1668c}}.wish-show{text-align:left;background:linear-gradient(150deg,#ffd16624,#ffffff0d);border-color:#ffd16680;align-items:center;gap:16px;width:min(560px,100%);display:flex}.wish-star{filter:drop-shadow(0 0 14px #ffd16699);font-size:clamp(34px,9vw,46px);animation:2.6s ease-in-out infinite hop}.wish-text{color:var(--text);margin:0;font-size:clamp(15px,4vw,18px);line-height:1.8}.reward-show{text-align:left;width:min(560px,100%);box-shadow:0 0 34px #ffd16647, var(--shadow);background:linear-gradient(150deg,#ffd16633,#ff7eb31f);border-color:#ffd166b3;align-items:center;gap:16px;display:flex}.reward-show-emoji{filter:drop-shadow(0 0 14px #ffd166bf);font-size:clamp(38px,10vw,52px);line-height:1;animation:2.6s ease-in-out infinite rewardSpin}.reward-show-title{color:var(--accent-2);letter-spacing:.08em;margin:0 0 6px;font-size:clamp(15px,4vw,17px);font-weight:700}.reward-show-line{color:var(--text);margin:0 0 4px;font-size:clamp(14px,3.6vw,16px);line-height:1.8}.reward-show-line:last-child{margin-bottom:0}.actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}
