*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;-webkit-overflow-scrolling:touch;position:fixed;overscroll-behavior:none}body{background:linear-gradient(135deg,#ffe5ec,pink,plum);-webkit-backface-visibility:hidden;backface-visibility:hidden}.hint-text{position:absolute;bottom:40px;left:50%;transform:translate(-50%);color:#fff;font-size:1.2rem;text-align:center;text-shadow:0 2px 10px rgba(0,0,0,.5);animation:pulse 2s ease-in-out infinite;cursor:pointer;padding:15px 30px;background:#ffffff1a;border-radius:30px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);transition:all .3s ease}.birthday-text{position:absolute;top:40px;left:50%;transform:translate(-50%);color:#fff;font-size:2.5rem;font-weight:700;text-shadow:0 0 20px rgba(255,182,193,.8),0 0 40px rgba(255,182,193,.5);text-align:center;opacity:0;transition:opacity 1s ease}@media(max-width:768px){.birthday-text{font-size:1.8rem;top:20px}.hint-text{font-size:1rem;bottom:30px;padding:12px 20px}}.scene-container{width:100%;height:100%;position:relative}.scene-container canvas{display:block;width:100%!important;height:100%!important}.scene-transition{position:fixed;top:0;left:0;width:100%;height:100%;background:#0a0a2e;opacity:0;pointer-events:none;z-index:100;transition:opacity .8s ease}.scene-transition.active{opacity:1}.hint-text{position:absolute;bottom:40px;left:50%;transform:translate(-50%);color:#fff;font-size:1.2rem;text-align:center;text-shadow:0 2px 10px rgba(0,0,0,.5);animation:pulse 2s ease-in-out infinite;cursor:pointer;padding:15px 30px;background:#ffffff1a;border-radius:30px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);transition:all .3s ease;-webkit-user-select:none;user-select:none}.hint-text:hover{background:#fff3;transform:translate(-50%) scale(1.05)}@keyframes pulse{0%,to{opacity:.7;transform:translate(-50%) scale(1)}50%{opacity:1;transform:translate(-50%) scale(1.02)}}.birthday-text{position:absolute;top:40px;left:50%;transform:translate(-50%);color:#fff;font-size:2.5rem;font-weight:700;text-shadow:0 0 20px rgba(255,182,193,.8),0 0 40px rgba(255,182,193,.5);text-align:center;opacity:0;transition:opacity 1s ease;pointer-events:none;max-width:90%}.birthday-text.show{opacity:1}@media(max-width:768px){.birthday-text{font-size:1.5rem;top:20px}.hint-text{font-size:1rem;bottom:30px;padding:12px 20px}}.letter-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.letter-paper{position:relative;width:min(90vw,500px);min-height:400px;max-height:80vh;background:linear-gradient(135deg,#fffaf5,#fff5ee,#fffaf5);border-radius:8px;padding:40px 35px;box-shadow:0 20px 60px #0000004d,0 0 0 1px #d4a5744d,inset 0 0 20px #ffffff80;overflow-y:auto;animation:paperSlideIn .8s cubic-bezier(.34,1.56,.64,1)}@keyframes paperSlideIn{0%{opacity:0;transform:translateY(50px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.letter-decoration{position:absolute;width:30px;height:30px;border:2px solid #D4A574;opacity:.6}.letter-decoration.top-left{top:15px;left:15px;border-right:none;border-bottom:none}.letter-decoration.top-right{top:15px;right:15px;border-left:none;border-bottom:none}.letter-decoration.bottom-left{bottom:15px;left:15px;border-right:none;border-top:none}.letter-decoration.bottom-right{bottom:15px;right:15px;border-left:none;border-top:none}.handwriting-container{font-family:Ma Shan Zheng,ZCOOL XiaoWei,"Noto Serif SC",cursive,serif;font-size:1.5rem;line-height:2.2;color:#5d4e37;text-align:left;min-height:200px;padding:10px 0}.handwriting-char{display:inline-block;opacity:0;transform-origin:bottom center;text-shadow:1px 1px 2px rgba(93,78,55,.1)}.handwriting-char.newline{display:block;width:100%;height:0}.cursor{display:inline-block;color:#d4a574;font-weight:700;animation:blink .8s infinite;margin-left:2px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.letter-close-btn{display:block;margin:30px auto 0;padding:12px 30px;font-family:inherit;font-size:1.1rem;color:#fff;background:linear-gradient(135deg,#ffb6c1,#f8c8dc);border:none;border-radius:25px;cursor:pointer;box-shadow:0 4px 15px #ffb6c166;transition:all .3s ease;animation:fadeInUp .5s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.letter-close-btn:hover{transform:scale(1.05);box-shadow:0 6px 20px #ffb6c199}.letter-close-btn:active{transform:scale(.98)}.hint-text.envelope-hint{background:#f5e6d34d;border-color:#d4a57466}@media(max-width:768px){.letter-paper{width:95vw;padding:30px 25px;min-height:350px}.handwriting-container{font-size:1.2rem;line-height:2}.letter-decoration{width:20px;height:20px}}.webgl-fallback{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#ffe5ec,pink,plum);display:flex;align-items:center;justify-content:center;z-index:1000}.fallback-content{text-align:center;color:#333;padding:2rem;max-width:400px}.fallback-content h2{font-size:2.5rem;margin-bottom:1rem;color:#6b46c1}.fallback-content p{font-size:1.2rem;margin-bottom:.5rem;color:#6b46c1}.fallback-animation{margin-top:2rem;position:relative;height:100px}.fallback-animation .cake{font-size:4rem;animation:bounce 2s ease-in-out infinite}.fallback-animation .hearts{font-size:1.5rem;margin-top:1rem;animation:heartFloat 3s ease-in-out infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes heartFloat{0%,to{opacity:.6;transform:translateY(0) scale(1)}50%{opacity:1;transform:translateY(-10px) scale(1.1)}}@media(max-width:768px){.app:before,.app:after{display:none}.spotlight-button{bottom:10px!important;right:10px!important;padding:10px 20px!important;font-size:14px!important}.hint-text{font-size:16px!important;padding:12px 20px!important;bottom:80px!important}.letter-paper{width:95%!important;max-width:350px!important;margin:10px!important}.handwriting-container{font-size:14px!important;line-height:1.6!important}.fallback-content{padding:1rem}.fallback-content h2{font-size:2rem}.fallback-content p{font-size:1rem}.fallback-animation .cake{font-size:3rem}}@supports (-webkit-touch-callout: none){.scene-container{-webkit-transform:translateZ(0);transform:translateZ(0)}}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.app{-webkit-backface-visibility:hidden;backface-visibility:hidden}}.loading-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;transition:opacity .5s ease}.loading-screen.hidden{opacity:0;pointer-events:none}.loader-content{text-align:center;color:#fff}.cake-loader{width:80px;height:80px;margin:0 auto 30px;position:relative}.cake-loader:before,.cake-loader:after{content:"";position:absolute;background:#fff;border-radius:10px}.cake-loader:before{width:60px;height:40px;bottom:0;left:10px;animation:bake 1s ease-in-out infinite}.cake-loader:after{width:30px;height:30px;top:10px;left:25px;border-radius:50% 50% 0 0;animation:flame .5s ease-in-out infinite alternate}@keyframes bake{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.1)}}@keyframes flame{0%{transform:scaleY(1) scaleX(1);opacity:1}to{transform:scaleY(1.2) scaleX(.9);opacity:.8}}.progress-bar-container{width:200px;height:4px;background:#ffffff4d;border-radius:2px;overflow:hidden}.progress-bar{height:100%;background:#fff;width:0%;transition:width .3s ease}.loading-text{margin-top:15px;font-size:1.1rem;letter-spacing:2px}.app{width:100%;height:100%;position:relative;overflow:hidden}.app-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;transition:background 1s ease}.app-background.indoor{background:linear-gradient(135deg,#ffe5ec,pink,plum)}.app-background.outdoor{background:#0a0a2e}.app:before,.app:after{content:"✨";position:absolute;font-size:1.5rem;opacity:0;animation:float 6s ease-in-out infinite;pointer-events:none}.app:before{top:20%;left:10%;animation-delay:0s}.app:after{top:30%;right:15%;animation-delay:2s}@keyframes float{0%,to{opacity:0;transform:translateY(0) rotate(0)}50%{opacity:.6;transform:translateY(-20px) rotate(180deg)}}.app.outdoor:before,.app.outdoor:after{content:"⭐";opacity:.8}@media(max-width:768px){.app:before,.app:after{font-size:1rem}}
