@import "https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Noto+Sans+SC:wght@400;600;800&display=swap";:root{color:#fff;background:#071b59;font-family:Noto Sans SC,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#061442;min-width:320px;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}.theme-blue{--bg:#1748c7;--bg2:#071d75;--panel:#eaf0ff;--ink:#173a9c;--light:#91b7ff;--accent:#ffd566;--hot:#ff8ac3}.theme-pink{--bg:#cd4c8e;--bg2:#5d1857;--panel:#fff0f7;--ink:#8a285e;--light:#ffaad0;--accent:#ffe27a;--hot:#94d5ff}.theme-green{--bg:#25866d;--bg2:#073f45;--panel:#e9fff6;--ink:#146153;--light:#8fe1c2;--accent:#ffe177;--hot:#ff9fa8}.intro,.letter,.creator,.status{background:radial-gradient(circle at 50% 36%,color-mix(in srgb,var(--bg) 86%,white),var(--bg2));color:#fff;min-height:100dvh;position:relative;overflow:hidden}.pixel-sky{pointer-events:none;background-image:linear-gradient(#ffffff06 1px,#0000 1px);background-size:100% 4px;position:absolute;inset:0;overflow:hidden}.pixel-sky>i{background:#fff;width:4px;height:4px;animation:2s steps(2,end) infinite blink;position:absolute;box-shadow:0 0 10px #fff}.pixel-sky>i:first-child{top:12%;left:8%}.pixel-sky>i:nth-child(2){animation-delay:.5s;top:31%;left:24%}.pixel-sky>i:nth-child(3){animation-delay:1s;top:18%;right:14%}.pixel-sky>i:nth-child(4){top:45%;right:27%}.pixel-sky>i:nth-child(5){animation-delay:.7s;top:68%;left:14%}.pixel-sky>i:nth-child(6){top:78%;right:8%}.moon{color:#dcd8ff;text-shadow:0 0 18px #c6c1ff;font:48px "Press Start 2P";position:absolute;top:9%;right:10%}.cloud{background:var(--light);opacity:.24;clip-path:polygon(10% 65%,20% 35%,34% 35%,42% 0,58% 0,68% 40%,83% 40%,95% 70%,100% 100%,0 100%);width:120px;height:25px;position:absolute}.cloud-a{top:31%;left:-15px}.cloud-b{top:61%;right:-25px;transform:scale(1.3)}.city{opacity:.3;background:repeating-linear-gradient(90deg,transparent 0 18px,var(--light) 19px 33px,transparent 34px 47px);clip-path:polygon(0 45%,4% 45%,4% 18%,8% 18%,8% 55%,14% 55%,14% 30%,18% 30%,18% 64%,24% 64%,24% 38%,29% 38%,29% 70%,100% 70%,100% 100%,0 100%);height:60px;position:absolute;bottom:0;left:0;right:0}.sound{z-index:10;right:22px;top:calc(20px + env(safe-area-inset-top));color:#fff;background:#ffffff12;border:1px solid #fff7;place-items:center;width:44px;height:44px;display:grid;position:fixed}.sound svg{width:19px}.intro{text-align:center;place-items:center;display:grid}.intro-copy{z-index:2;flex-direction:column;align-items:center;width:min(92vw,480px);display:flex;position:relative}.intro h1,.particle-word{text-shadow:0 0 14px #cbd8ff;margin:0;font:clamp(22px,6vw,36px)/1.6 "Press Start 2P",Courier New,monospace}.intro .phase-0 h1,.intro .phase-1 h1,.intro .phase-2 h1{animation:.7s steps(6,end) typeIn}.particle-word{animation:1.4s steps(8,end) forwards dissolve}.tiny{color:#cbd8ff;margin-bottom:17px;font:12px "Press Start 2P"}.intro-copy>p:not(.tiny){margin:22px 0 15px;font:11px "Press Start 2P"}.pixel-cake{filter:drop-shadow(0 14px 12px #00104d88);width:190px;margin:35px auto 0}.candles{justify-content:center;align-items:flex-end;gap:22px;height:55px;display:flex}.candles i{background:repeating-linear-gradient(135deg,#fff 0 6px,var(--hot) 7px 12px);border:2px solid #09256e;width:10px;height:40px;position:relative}.candles i:before{content:"";clip-path:polygon(50% 0,100% 65%,70% 100%,20% 100%,0 65%);opacity:0;background:#2d3683;width:8px;height:12px;position:absolute;top:-15px;left:-1px}.candles i.lit:before{opacity:1;background:#ffd35a;box-shadow:0 0 15px #ffdf70}.cake-top{height:28px;color:var(--hot);background:#fff3fa;border:4px solid #123991;line-height:20px}.cake-body{height:75px;color:var(--hot);background:repeating-linear-gradient(90deg,#e8ae6c 0 28px,#fff0cc 29px 48px);border:4px solid #123991;place-items:center;margin:0 8px;display:grid}.cake-plate{background:#a9c3ff;border:4px solid #123991;height:14px}.hold-button{--hold:0%;background:conic-gradient(var(--accent) var(--hold),#122d8b 0);border:4px solid #8e96f4;border-radius:50%;width:145px;height:145px;padding:9px;box-shadow:0 0 30px #a8a6ff88}.hold-button:before{content:"";position:absolute}.hold-button span{color:#fff;background:#102b88;border-radius:50%;place-items:center;width:100%;height:100%;font:13px "Press Start 2P";display:grid}.enter-letter{color:var(--ink);background:#fff;border:2px solid #fff;margin-top:18px;padding:14px 18px;font:11px "Press Start 2P";animation:1s steps(2,end) infinite bob}.letter{background:linear-gradient(var(--bg),var(--bg2));padding-bottom:30px;overflow:visible}.letter>.pixel-sky{position:fixed}.letter nav{z-index:2;justify-content:space-between;align-items:center;max-width:760px;margin:auto;padding:20px 22px;font:10px "Press Start 2P";display:flex;position:relative}.letter nav button{color:#fff;background:0 0;border:2px solid #fff;padding:9px 11px;font-size:9px}.letter section,.letter footer{z-index:2;width:min(90%,720px);margin:0 auto;position:relative}.letter-hero{background:var(--panel);color:var(--ink);border:6px solid #9cb9ff;padding:34px 28px;box-shadow:0 0 0 4px #fff,12px 12px #092c95;margin-top:50px!important}.letter-hero span{color:#5974bd;font:9px "Press Start 2P"}.letter-hero h1{text-align:center;font:clamp(24px,7vw,42px) "Press Start 2P"}.pixel-rule{border-top:3px dashed var(--ink);margin:22px 0}.letter-hero p{white-space:pre-line;font-size:14px;line-height:2}.signature{text-align:right;font-weight:800}.pixel-path{z-index:2;text-align:center;color:#fff;text-shadow:0 0 12px #fff;padding:35px 0;font:15px "Press Start 2P";position:relative}.section-title{text-align:center;margin:0 0 25px;font:clamp(13px,4vw,20px)/1.7 "Press Start 2P"}.section-title i{background:var(--accent);width:8px;height:8px;box-shadow:0 0 10px var(--accent);display:inline-block;transform:rotate(45deg)}.memory-frame{min-height:330px;box-shadow:0 0 0 4px var(--light);background:#0c318f;border:6px solid #fff;padding:13px;position:relative}.memory-frame img{object-fit:cover;image-rendering:auto;width:100%;height:390px;display:block}.memory-fallback{text-align:center;background:linear-gradient(#1748c7,#0e287c);place-items:center;height:320px;font:13px/2 "Press Start 2P";display:grid}.pixel-people{color:var(--hot);font-size:56px}.pixel-cat{color:#fff;font:16px monospace;position:absolute;bottom:12px;left:15px}.photo-strip{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px;display:grid}.photo-strip img{aspect-ratio:1;object-fit:cover;border:4px solid #fff;width:100%}.fortune-deck{justify-content:center;gap:8px;display:flex}.fortune-deck button{color:#fff;background:linear-gradient(#3164df,#17348e);border:4px solid #b7ceff;width:64px;height:96px;font:22px "Press Start 2P";transition:all .2s;box-shadow:4px 4px #051c68}.fortune-deck button:hover{background:var(--accent);color:var(--ink);transform:translateY(-12px)}.fortune-result{background:var(--panel);color:var(--ink);text-align:center;border:4px solid #fff;margin:25px auto 0;padding:22px;font-weight:800}.section-tip{text-align:center;color:#c7d7ff;font:9px "Press Start 2P"}.voice-player{background:#082a85;border:6px solid #a9c4ff;align-items:center;gap:18px;padding:24px;display:flex;box-shadow:6px 6px #031754}.voice-player>button{color:#fff;background:#6c92fa;border:5px solid #fff;border-radius:50%;flex:0 0 72px;place-items:center;height:72px;display:grid}.voice-player>button:disabled{opacity:.45}.voice-player>button svg{width:28px}.voice-player>div{min-width:0}.wave{color:#70c8ff;white-space:nowrap;font:clamp(11px,3.3vw,22px) "Press Start 2P";overflow:hidden}.voice-player span{margin-top:14px;font:10px "Press Start 2P";display:block}.pixel-gift{--gift:0%;color:#fff;background:linear-gradient(#214dc3,#0f2c8d);border:5px solid #a8c3ff;flex-direction:column;align-items:center;gap:15px;width:230px;min-height:170px;margin:auto;padding:20px;display:flex;position:relative;box-shadow:7px 7px #051a62}.pixel-gift:after{content:"";background:linear-gradient(90deg,var(--accent) var(--gift),transparent 0);height:5px;position:absolute;bottom:0;left:0;right:0}.pixel-gift svg{stroke-width:1.8px;width:65px;height:65px}.pixel-gift.open{background:var(--panel);color:var(--ink);width:min(100%,440px)}.letter footer{text-align:center;padding:60px 15px 40px;margin-top:60px!important}.letter footer .pixel-cake{margin:0 auto -15px;transform:scale(.7)}.letter footer h2{text-shadow:4px 4px #12327d;font:clamp(25px,8vw,50px) "Press Start 2P"}.letter footer p{line-height:2}.letter footer>div:last-child{justify-content:center;gap:10px;display:flex}.letter footer button{color:#fff;background:#3161d6;border:4px solid #bed1ff;align-items:center;gap:7px;padding:13px;font-weight:800;display:flex;box-shadow:4px 4px #061b64}.letter footer button:last-child{color:var(--ink);background:#fff}.letter footer svg{width:17px}.creator{min-height:100dvh;padding:40px 15px;overflow:visible}.creator>.pixel-sky{position:fixed}.creator-panel{z-index:2;background:var(--panel);width:min(94%,650px);color:var(--ink);border:6px solid #a9c3ff;margin:auto;padding:30px;position:relative;box-shadow:0 0 0 4px #fff,12px 12px #061d6d}.creator-panel .step{color:#6480c8;font:9px "Press Start 2P"}.creator-panel h1{font:clamp(24px,6vw,38px)/1.5 "Press Start 2P"}.creator-panel>p{color:#6574a0}.creator-panel label{margin-top:20px;font-size:13px;font-weight:800;display:block;position:relative}.creator-panel input,.creator-panel textarea{border:3px solid var(--ink);color:#12316f;background:#fff;width:100%;margin-top:7px;padding:12px;display:block}.creator-panel textarea{resize:vertical;height:160px;line-height:1.7}.creator-panel label small{color:#8790aa;position:absolute;bottom:7px;right:8px}.theme-picker{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:7px;display:grid}.theme-picker button{border:3px solid var(--ink);color:var(--ink);background:#fff;padding:11px 5px;font-size:11px}.theme-picker button.active{background:var(--ink);color:#fff}.photo-uploader{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;display:grid}.photo-uploader>div,.photo-uploader>button{aspect-ratio:3/4;border:3px dashed var(--ink);color:var(--ink);background:#fff;position:relative;overflow:hidden}.photo-uploader img{object-fit:cover;width:100%;height:100%}.photo-uploader>div button{color:#bb2457;background:#fffd;border:0;width:30px;height:30px;position:absolute;top:3px;right:3px}.photo-uploader>button{flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex}.photo-uploader svg{width:18px}.recorder{border:3px solid var(--ink);background:#fff;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;padding:14px;display:flex}.recorder button{background:var(--ink);color:#fff;border:0;align-items:center;gap:6px;padding:10px;display:flex}.recorder button.recording{background:#c51f49}.recorder audio{width:100%}.switch{align-items:center;gap:8px;display:flex!important}.switch input{width:18px!important;margin:0!important;display:inline!important}.publish,.preview,.success button{border:4px solid var(--ink);background:var(--ink);color:#fff;width:100%;margin-top:18px;padding:14px;font-weight:800;box-shadow:5px 5px #7894d8}.preview,.success button.ghost{color:var(--ink);background:#fff}.publish:disabled{opacity:.5}.success{place-items:center;display:grid}.success code{word-break:break-all;background:#dce7ff;padding:15px;display:block}.status{place-items:center;padding:20px;display:grid}.status .pixel-window{z-index:2;color:#163b9d;text-align:center;background:#fff;border:6px solid #a8c3ff;padding:30px;position:relative}.status h1{font:20px/1.6 "Press Start 2P"}.status button{color:#fff;background:#214fc5;border:0;padding:12px}.status p{font:10px "Press Start 2P"}@keyframes blink{50%{opacity:.2}}@keyframes typeIn{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes dissolve{0%{opacity:1;filter:none}70%{letter-spacing:12px;filter:blur(3px)}to{opacity:0;letter-spacing:22px;filter:blur(8px)}}@keyframes bob{50%{transform:translateY(5px)}}@media (max-width:520px){.letter-hero{border-width:4px;padding:28px 20px;margin-top:25px!important}.letter-hero p{font-size:13px}.section-title{font-size:12px}.fortune-deck{gap:5px}.fortune-deck button{width:54px;height:82px}.voice-player{padding:18px 14px}.voice-player>button{flex-basis:58px;height:58px}.photo-uploader{grid-template-columns:repeat(3,1fr)}.creator-panel{padding:22px 17px}.theme-picker{grid-template-columns:1fr}.letter footer>div:last-child{flex-direction:column}.letter footer button{justify-content:center}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}[hidden]{display:none!important}.intro-entering .intro-copy{animation:.65s steps(6,end) both introOpen}.hold-button:disabled{cursor:wait;filter:brightness(1.2)}.no-select,.hold-button,.gacha-machine,.fortune-capsule,.gift-unlock,.gift-chest,.blow-button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}.no-select *,.hold-button *,.gacha-machine *,.fortune-capsule *,.gift-unlock *,.gift-chest *,.blow-button *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea,.creator-panel textarea,.wish-card textarea,.gift-items-input{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;touch-action:auto}.gacha-machine{grid-template-columns:minmax(220px,300px) 1fr;align-items:center;gap:22px;display:grid}.gacha-stage{min-height:360px;box-shadow:0 0 0 4px var(--light),10px 10px 0 #04185b;background:linear-gradient(#2e65e8,#102e98);border:6px solid #fff;padding:18px;position:relative;overflow:hidden}.gacha-stage:before{content:"";pointer-events:none;background:linear-gradient(#ffffff18 1px,#0000 1px) 0 0/100% 6px;position:absolute;inset:0}.gacha-top{background:var(--accent);height:62px;color:var(--ink);border:4px solid #09256e;justify-content:space-between;align-items:center;padding:0 12px;font:10px "Press Start 2P";display:flex;box-shadow:0 5px #071f70}.gacha-top b{font-size:15px}.gacha-window{background:radial-gradient(circle at 50% 30%,#fff5,#0b2a88 70%);border:5px solid #b9cdff;grid-template-columns:repeat(3,1fr);gap:10px;width:190px;height:132px;margin:22px auto 14px;padding:14px;display:grid}.gacha-window i,.fortune-capsule span{background:linear-gradient(90deg,var(--hot) 0 48%,white 49% 51%,var(--accent) 52%);border:3px solid #fff;border-radius:999px;box-shadow:0 0 13px #fff7}.is-spinning .gacha-stage{animation:.28s steps(2,end) infinite machineBump}.is-spinning .gacha-window i{animation:.32s steps(2,end) infinite capsuleShake}.gacha-face{color:#fff;text-shadow:0 0 10px #fff;justify-content:center;gap:12px;font:22px "Press Start 2P";display:flex}.gacha-knob{background:conic-gradient(var(--hot),var(--accent),var(--light),var(--hot));color:#071d75;border:6px solid #fff;border-radius:50%;width:96px;height:96px;font:10px "Press Start 2P";position:absolute;bottom:18px;right:18px;box-shadow:0 7px #061c67}.gacha-knob:disabled{filter:saturate(.7)}.gacha-output{align-items:center;min-height:260px;display:grid}.gacha-output>p{text-align:center;color:#d9e6ff;background:#082a85;border:4px dashed #bdd2ff;padding:25px;font:12px/2 "Press Start 2P"}.loading-pixels:after{content:"...";animation:.8s steps(3,end) infinite typeIn}.fortune-capsule{color:#fff;background:0 0;border:0;place-items:center;gap:9px;width:190px;height:115px;margin:auto;font:10px "Press Start 2P";animation:.7s steps(5,end) both dropCapsule;display:grid}.fortune-capsule span{width:138px;height:62px;display:block}.fortune-capsule b{text-shadow:0 0 12px #fff}.fortune-ticket{background:var(--panel);color:var(--ink);box-shadow:0 0 0 4px var(--accent),9px 9px 0 #04185b;border:5px solid #fff;padding:22px;animation:.45s steps(5,end) both ticketFlip;position:relative}.fortune-ticket:before,.fortune-ticket:after{content:"";background:var(--bg2);border:4px solid #fff;width:18px;height:28px;position:absolute;top:50%;transform:translateY(-50%)}.fortune-ticket:before{left:-13px}.fortune-ticket:after{right:-13px}.fortune-ticket>div{align-items:center;gap:11px;margin-bottom:13px;display:flex}.fortune-ticket span{background:var(--hot);color:#fff;border:3px solid var(--ink);padding:7px;font:10px "Press Start 2P"}.fortune-ticket b{font:16px "Press Start 2P"}.fortune-ticket p{margin:0 0 12px;font-size:15px;line-height:1.9}.fortune-ticket small{color:#5974bd;font:9px/1.7 "Press Start 2P";display:block}.fortune-ticket button,.gift-reward button{border:4px solid var(--ink);background:var(--ink);color:#fff;margin-top:18px;padding:12px 14px;font-weight:800;box-shadow:4px 4px #9ab4ff}.gift-unlock{place-items:center;display:grid;position:relative}.gift-chest{--gift:0%;color:#fff;touch-action:none;background:linear-gradient(#285ede,#0d2b8e);border:6px solid #bed1ff;flex-direction:column;justify-content:center;align-items:center;gap:12px;width:min(100%,360px);min-height:240px;padding:24px 18px;display:flex;position:relative;box-shadow:8px 8px #04185b}.gift-chest:before{content:"";border:3px dashed #fff6;position:absolute;inset:12px}.gift-chest:after{content:"";background:linear-gradient(90deg,var(--accent) var(--gift),#071f70 0);height:12px;box-shadow:0 0 16px var(--accent);position:absolute;bottom:18px;left:18px;right:18px}.gift-lid{background:var(--hot);transform-origin:bottom;border:5px solid #fff;place-items:center;width:120px;height:66px;animation:1.1s steps(2,end) infinite giftIdle;display:grid;box-shadow:0 6px #061d6d}.gift-lid svg{width:44px;height:44px}.gift-box{background:linear-gradient(90deg,#214fc5 0 38%,var(--accent) 39% 60%,#214fc5 61%);border:5px solid #fff;place-items:center;width:154px;height:70px;font:12px "Press Start 2P";display:grid}.gift-chest i{background:var(--accent);width:16px;height:16px;box-shadow:-92px 32px 0 var(--hot),94px 42px 0 white,-50px -8px 0 #fff,57px -14px 0 var(--accent);animation:1s steps(2,end) infinite blink;position:absolute;top:35px}.gift-chest b{z-index:1;font:11px/1.8 "Press Start 2P"}.gift-chest em{color:#dce7ff;z-index:1;font:10px "Press Start 2P"}.gift-reward{background:var(--panel);width:min(100%,520px);color:var(--ink);box-shadow:0 0 0 4px var(--accent),10px 10px 0 #04185b;text-align:center;border:6px solid #fff;padding:28px;animation:.55s steps(5,end) both giftPop;position:relative;overflow:hidden}.gift-reward>svg{width:60px;height:60px;color:var(--hot);filter:drop-shadow(0 0 10px var(--hot))}.reward-label{background:var(--ink);color:#fff;margin:8px 0 10px;padding:7px 9px;font:9px "Press Start 2P";display:inline-block}.gift-reward h3{margin:10px 0;font:clamp(18px,4.8vw,27px)/1.5 "Press Start 2P"}.gift-reward p{max-width:390px;margin:0 auto 16px;line-height:1.9}.wish-coupon{border:4px dashed var(--ink);text-align:left;background:#fff;padding:16px;box-shadow:5px 5px #b8cbff}.wish-coupon b{margin-bottom:10px;font:14px "Press Start 2P";display:block}.wish-coupon span,.wish-coupon small{line-height:1.8;display:block}.wish-coupon small{color:#5974bd}.burst{pointer-events:none;position:absolute;inset:0}.burst i{background:var(--accent);width:10px;height:10px;box-shadow:0 0 10px var(--accent);animation:.8s steps(6,end) both burstOut;position:absolute;top:34%;left:50%}.burst i:first-child{--x:-170px;--y:-90px}.burst i:nth-child(2){--x:-120px;--y:92px;background:var(--hot)}.burst i:nth-child(3){--x:-35px;--y:-125px;background:#fff}.burst i:nth-child(4){--x:70px;--y:-105px}.burst i:nth-child(5){--x:155px;--y:75px;background:var(--hot)}.burst i:nth-child(6){--x:115px;--y:-10px;background:#fff}.burst i:nth-child(7){--x:-185px;--y:10px}.burst i:nth-child(8){--x:15px;--y:115px;background:var(--hot)}.wish-ritual{place-items:center;display:grid}.wish-card{background:var(--panel);width:min(100%,520px);color:var(--ink);box-shadow:0 0 0 4px var(--light),10px 10px 0 #04185b;text-align:center;border:6px solid #fff;padding:26px;position:relative;overflow:hidden}.wish-card .pixel-cake{margin:0 auto -8px;transform:scale(.72)}.wish-card p{max-width:380px;margin:14px auto;line-height:1.9}.wish-card textarea{resize:vertical;border:4px solid var(--ink);width:100%;min-height:112px;color:var(--ink);background:#fff;padding:14px;line-height:1.7}.gift-items-input{min-height:86px!important}.wish-card button{border:4px solid var(--ink);background:var(--ink);color:#fff;margin-top:14px;padding:13px 16px;font-weight:800;box-shadow:4px 4px #9ab4ff}.blow-card{animation:.32s steps(4,end) both ticketFlip}.blow-button{--blow:0%;place-items:center;width:165px;height:165px;display:grid;background:conic-gradient(var(--accent) var(--blow),#17348e 0)!important;color:#fff!important;border:6px solid #fff!important;border-radius:50%!important;margin:18px auto 0!important;box-shadow:0 0 26px #fff5,5px 5px #04185b!important}.blow-button span{background:#102b88;border-radius:50%;place-items:center;width:118px;height:118px;font:13px "Press Start 2P";display:grid}.blow-button em{color:#dbe7ff;margin-top:-28px;font:10px "Press Start 2P"}.wish-done{animation:.5s steps(5,end) both giftPop}.wish-done .candles i:before{opacity:0!important}.wish-done h3{margin:10px 0;font:clamp(18px,5vw,28px)/1.5 "Press Start 2P"}.wish-done p{border:4px dashed var(--ink);background:#fff;padding:15px;box-shadow:5px 5px #b8cbff}.wish-done small{color:#5974bd;font:9px/1.8 "Press Start 2P";display:block}.wish-stars{pointer-events:none;position:absolute;inset:0}.wish-stars i{background:var(--accent);width:9px;height:9px;box-shadow:0 0 12px var(--accent);animation:1.5s steps(8,end) infinite wishFloat;animation-delay:var(--d);position:absolute;bottom:28%;left:50%}.wish-stars i:first-child{--x:-180px;--d:0s}.wish-stars i:nth-child(2){--x:-135px;--d:.2s;background:var(--hot)}.wish-stars i:nth-child(3){--x:-88px;--d:.4s;background:#fff}.wish-stars i:nth-child(4){--x:-35px;--d:.1s}.wish-stars i:nth-child(5){--x:20px;--d:.35s;background:var(--hot)}.wish-stars i:nth-child(6){--x:75px;--d:.18s;background:#fff}.wish-stars i:nth-child(7){--x:122px;--d:.5s}.wish-stars i:nth-child(8){--x:165px;--d:.28s;background:var(--hot)}.wish-stars i:nth-child(9){--x:0px;--d:.65s;background:#fff}@keyframes machineBump{50%{transform:translate(3px,-2px)}}@keyframes capsuleShake{50%{transform:translateY(-10px)rotate(12deg)}}@keyframes dropCapsule{0%{opacity:0;transform:translateY(-70px)scale(.6)}70%{transform:translateY(8px)scale(1.08)}to{opacity:1;transform:none}}@keyframes ticketFlip{0%{opacity:0;transform:rotateX(90deg)scale(.85)}to{opacity:1;transform:none}}@keyframes giftIdle{50%{transform:translateY(-4px)rotate(-2deg)}}@keyframes giftPop{0%{filter:brightness(2);opacity:0;transform:scale(.65)}70%{transform:scale(1.05)}to{opacity:1;transform:none}}@keyframes burstOut{0%{opacity:1;transform:translate(0)scale(.2)}to{transform:translate(var(--x),var(--y)) scale(1.4);opacity:0}}@keyframes introOpen{0%{filter:brightness();transform:scale(1)}55%{filter:brightness(1.8);transform:scale(1.06)}to{opacity:0;filter:blur(4px)brightness(2);transform:scale(.94)}}@keyframes wishFloat{0%{opacity:0;transform:translate(0)scale(.5)}20%{opacity:1}to{transform:translate(var(--x),-230px) scale(1.3);opacity:0}}@media (max-width:620px){.gacha-machine{grid-template-columns:1fr;gap:18px}.gacha-stage{min-height:320px}.gacha-output{min-height:190px}.fortune-ticket{padding:18px}.fortune-ticket>div{flex-direction:column;align-items:flex-start}.gift-reward{padding:24px 18px}.wish-card{padding:22px 16px}.blow-button{width:145px;height:145px}}.birthday-gacha{grid-template-columns:minmax(275px,380px) minmax(220px,1fr);align-items:center;gap:28px}.birthday-machine{min-height:430px;box-shadow:none;filter:drop-shadow(10px 14px #04154f);background:0 0;border:0;padding:0 18px 20px;overflow:visible}.birthday-machine:before{display:none}.party-props{z-index:4;height:74px;position:relative}.top-star{color:#ffe15d;text-shadow:3px 0 #9c5b00,-3px 0 #9c5b00,0 3px #9c5b00,0 0 20px #ffe15d;font:44px/1 "Press Start 2P";position:absolute;top:2px;left:50%;transform:translate(-50%)}.mini-cake{background:#fff6ed;border:4px solid #071d75;width:76px;height:34px;position:absolute;top:34px;left:8px;box-shadow:0 6px #265fc7}.mini-cake:before{content:"";background:#fff;border:4px solid #071d75;border-bottom:0;height:14px;position:absolute;top:-12px;left:-4px;right:-4px}.mini-cake i{background:#1f5fce;border:2px solid #071d75;width:8px;height:22px;position:absolute;top:-28px}.mini-cake i:first-child{left:10px}.mini-cake i:nth-child(2){left:30px}.mini-cake i:nth-child(3){left:51px}.mini-cake i:before{content:"";clip-path:polygon(50% 0,100% 65%,70% 100%,20% 100%,0 65%);background:#ff9b25;width:8px;height:12px;position:absolute;top:-10px;left:0}.mini-cake b{background:#d35b25;height:8px;position:absolute;bottom:5px;left:9px;right:9px}.mini-gift{background:#e92925;border:4px solid #071d75;width:64px;height:42px;position:absolute;top:30px;right:10px;box-shadow:0 6px #265fc7}.mini-gift:before{content:"";background:#ffd35a;border-left:3px solid #071d75;border-right:3px solid #071d75;width:12px;position:absolute;top:-4px;bottom:-4px;left:25px}.mini-gift:after{content:"";background:#ffd35a;border:4px solid #071d75;border-bottom:0;border-radius:18px 18px 0 0;height:19px;position:absolute;top:-18px;left:10px;right:10px}.birthday-sign{z-index:5;background:linear-gradient(#1871df,#06388f);border:5px solid #071d75;border-radius:18px 18px 8px 8px;place-items:center;width:88%;height:62px;margin:-13px auto -4px;display:grid;position:relative;transform:perspective(420px)rotateX(8deg);box-shadow:0 7px #06296b}.birthday-sign:before,.birthday-sign:after{content:"";z-index:-1;background:#0d55bd;border:4px solid #071d75;width:33px;height:26px;position:absolute;top:19px}.birthday-sign:before{left:-30px;transform:skewY(-16deg)}.birthday-sign:after{right:-30px;transform:skewY(16deg)}.birthday-sign span{color:#ffef60;text-shadow:2px 2px #0b2a7a;letter-spacing:1px;font:clamp(12px,3vw,18px)/1.2 "Press Start 2P"}.gacha-glass{z-index:3;background:radial-gradient(circle at 24% 17%,#ffffffb5 0 8%,#0000 19%),linear-gradient(135deg,#d9f2ffb8,#6fa7e466 46%,#d9f2ff99);border:8px solid #0a2a78;border-bottom-width:10px;border-radius:34px 34px 22px 22px;width:94%;height:224px;margin:0 auto;position:relative;overflow:hidden;box-shadow:inset 0 0 0 7px #bce7ff88,inset -20px -16px #2f6eb555,0 8px #edf8ff}.glass-shine{clip-path:polygon(0 0,100% 0,45% 100%,0 78%);background:#ffffff75;width:42px;height:125px;position:absolute;top:18px;left:28px}.orb{background:radial-gradient(circle at 27% 20%,#fff 0 10%,#fff9 11% 20%,transparent 21%),linear-gradient(160deg,#fff8 0 42%,transparent 43%),var(--orb,#2b8cff);border:4px solid #08266e;border-radius:999px;width:60px;height:48px;display:block;position:absolute;box-shadow:inset -8px -9px #0003,0 5px #071d7580}.orb:before{content:"✦";color:#ffe15d;text-shadow:1px 1px #7c4f00;font:16px "Press Start 2P";position:absolute;top:9px;right:9px}.orb.blue{--orb:#2589ff}.orb.gold{--orb:#ffd12e}.orb.pink{--orb:#ff6a91}.orb.green{--orb:#44d437}.gacha-glass .orb:nth-child(2){bottom:25px;left:8px;transform:rotate(-9deg)}.gacha-glass .orb:nth-child(3){width:82px;height:62px;bottom:42px;left:58px;transform:rotate(8deg)}.gacha-glass .orb:nth-child(4){bottom:25px;left:118px;transform:rotate(-3deg)}.gacha-glass .orb:nth-child(5){width:78px;height:60px;bottom:44px;right:37px;transform:rotate(10deg)}.gacha-glass .orb:nth-child(6){bottom:88px;right:16px;transform:rotate(-13deg)}.gacha-glass .orb:nth-child(7){width:62px;height:48px;bottom:78px;left:35px}.gacha-glass .orb:nth-child(8){width:50px;height:40px;bottom:9px;right:95px}.gacha-glass .orb:nth-child(9){width:52px;height:42px;bottom:16px;right:6px}.gacha-glass .orb:nth-child(10){bottom:95px;left:112px}.is-spinning .gacha-glass .orb{animation:.3s steps(2,end) infinite capsuleShake}.machine-console{z-index:2;background:linear-gradient(90deg,#a70f20,#ff3026 12%,#f03a2e 88%,#9d1121);border:7px solid #071d75;grid-template-columns:92px 1fr 92px;align-items:center;gap:10px;width:100%;height:112px;margin:-2px auto 0;padding:18px;display:grid;position:relative;box-shadow:inset 0 0 0 6px #ff6a51,0 8px #e9f5ff}.coin-slot{color:#edf8ff;background:#182846;border:5px solid #071d75;place-items:center;height:48px;font:20px "Press Start 2P";display:grid;box-shadow:inset 0 0 0 4px #344c76}.birthday-machine .gacha-knob{color:#0000;background:radial-gradient(circle at 35% 25%,#fff,#d5e3f6 30%,#7386a7 72%,#24365a);border:6px solid #071d75;justify-self:center;width:74px;height:74px;position:relative;bottom:auto;right:auto;box-shadow:0 7px #061c67}.birthday-machine .gacha-knob span{background:#edf8ff;border:4px solid #071d75;border-radius:50%;width:38px;height:20px;display:block;transform:rotate(-12deg)}.get-button{color:#151b33;background:#ffd53b;border:5px solid #071d75;height:52px;font:15px "Press Start 2P";box-shadow:inset 0 0 0 4px #fff59b,0 5px #813d00}.get-button:disabled{filter:saturate(.9);animation:.28s steps(2,end) infinite machineBump}.prize-door{z-index:2;background:#17243e;border:7px solid #071d75;width:76%;height:58px;margin:-2px auto 0;position:relative;box-shadow:inset 0 0 0 5px #d7ebff}.prize-door i{background:#f3eee0;border:3px solid #071d75;border-radius:50%;width:40px;height:21px;position:absolute;bottom:8px;box-shadow:inset -5px -3px #a7a39d}.prize-door i:first-child{left:36%;transform:rotate(-15deg)}.prize-door i:nth-child(2){width:48px;left:49%}.prize-door i:nth-child(3){left:62%;transform:rotate(17deg)}.prize-door span{background:#ffd53b;width:7px;height:7px;position:absolute;top:13px;left:24px;box-shadow:18px 9px #ff3f68,40px 3px #2391ff,64px 13px #ffd53b}.birthday-output{min-height:340px;position:relative;overflow:hidden}.confetti-field{pointer-events:none;position:absolute;inset:0}.confetti-field i{background:#ffd12e;width:10px;height:10px;animation:1.6s steps(2,end) infinite blink;position:absolute;box-shadow:0 0 10px}.confetti-field i:first-child{background:#2391ff;top:12%;left:8%}.confetti-field i:nth-child(2){background:#ff3f68;top:24%;left:30%}.confetti-field i:nth-child(3){top:12%;right:15%}.confetti-field i:nth-child(4){background:#40d768;top:35%;right:28%}.confetti-field i:nth-child(5){background:#ff3f68;bottom:18%;left:12%}.confetti-field i:nth-child(6){background:#2391ff;bottom:22%;right:8%}.confetti-field i:nth-child(7){top:6%;left:47%}.confetti-field i:nth-child(8){background:#40d768;bottom:6%;right:42%}.confetti-field i:nth-child(9){background:#ff3f68;top:48%;left:62%}.confetti-field i:nth-child(10){top:58%;left:22%}.confetti-field i:nth-child(11){background:#2391ff;bottom:42%;right:22%}.confetti-field i:nth-child(12){background:#ff3f68;top:70%;right:48%}.prize-preview{text-align:center;place-items:center;min-height:300px;display:grid;position:relative}.golden-egg{z-index:2;background:radial-gradient(circle at 32% 18%,#fff 0 10%,#fff5aa 11% 22%,#0000 23%),linear-gradient(145deg,#fff071,#ffc118 48%,#c16c00);border:6px solid #6b3b00;border-radius:54% 54% 48% 48%;width:112px;height:142px;box-shadow:inset -13px -12px #8c520030,0 0 24px #ffd53b99}.blue-bowl{background:linear-gradient(#4fa4ff,#0e4fb5);border:6px solid #071d75;border-radius:0 0 80px 80px;width:170px;height:54px;margin-top:-22px;box-shadow:inset -13px -8px #052d7a,0 9px #06296b}.prize-preview p{z-index:3;text-align:center;color:#d9e6ff;background:#082a85;border:4px dashed #bdd2ff;margin-top:18px;padding:18px;font:11px/2 "Press Start 2P";position:relative}.spinning-preview{flex-wrap:wrap;place-content:center;gap:16px;display:flex}.spinning-preview .orb{width:70px;height:56px;animation:.24s steps(2,end) infinite capsuleShake;position:relative}.birthday-capsule{width:210px;height:190px}.birthday-capsule span{background:radial-gradient(circle at 32% 18%,#fff 0 10%,#fff5aa 11% 22%,#0000 23%),linear-gradient(145deg,#fff071,#ffc118 48%,#c16c00);border-color:#6b3b00;border-radius:54% 54% 48% 48%;width:122px;height:152px;box-shadow:inset -13px -12px #8c520030,0 0 24px #ffd53b99}.birthday-capsule b{color:#fff;text-shadow:0 0 12px #fff}.birthday-ticket .opened-prize{width:86px;height:62px;position:absolute;top:10px;right:12px}.opened-prize .shell{background:#d9f2ff;border:4px solid #071d75;border-radius:50% 50% 6px 6px;width:44px;height:36px;position:absolute;top:0;right:30px;transform:rotate(-18deg)}.opened-prize .tiny-present{background:#e92925;border:4px solid #071d75;width:54px;height:44px;position:absolute;bottom:0;right:0}.opened-prize .tiny-present:before{content:"";background:#ffd53b;width:10px;position:absolute;top:-4px;bottom:-4px;left:21px}@media (max-width:620px){.birthday-gacha{grid-template-columns:1fr;gap:22px}.birthday-machine{filter:drop-shadow(6px 9px #04154f);min-height:400px;padding-inline:8px}.party-props{height:64px}.birthday-sign{width:90%;height:56px}.birthday-sign span{font-size:11px}.gacha-glass{width:96%;height:204px}.machine-console{grid-template-columns:72px 1fr 76px;gap:8px;height:104px;padding:15px 10px}.coin-slot{font-size:15px}.birthday-machine .gacha-knob{width:66px;height:66px}.get-button{font-size:12px}.prize-door{width:86%}.birthday-output{min-height:285px}.mini-gift{transform-origin:100% 0;right:0;transform:scale(.86)}.mini-cake{transform-origin:0 0;left:0;transform:scale(.82)}.top-star{font-size:35px}}
