@import"https://fonts.googleapis.com/css2?family=Great+Vibes&family=Quicksand:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;1,400&display=swap";*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:Quicksand,sans-serif;background:#fff0f3;color:#4a3040;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}::selection{background:#ff4d6d40;color:#4a3040}:root{--pink: #ff4d6d;--pink-light: #ffb3c1;--pink-pale: #fff0f3;--purple: #c77dff;--purple-dark: #7b2d8e;--rose: #ff8fa3;--gold: #ffd700;--white-soft: #fff8fa;--glass: rgba(255, 255, 255, .92);--shadow-romantic: 0 20px 60px rgba(255, 77, 109, .18);--text-main: #4a3040;--text-soft: #7a5a6a}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{scroll-behavior:smooth}body{font-family:Quicksand,sans-serif;overflow-x:hidden;background:var(--pink-pale);color:var(--text-main)}.icon-svg{display:inline-block;vertical-align:middle;flex-shrink:0}.icon-glow{filter:drop-shadow(0 0 6px rgba(255,77,109,.5)) drop-shadow(0 0 12px rgba(199,125,255,.3))}.inline-icon{display:inline-block;vertical-align:middle;margin:0 2px}.global-music-btn{position:fixed;top:16px;right:16px;z-index:9999;display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:50px;background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1.5px solid rgba(255,77,109,.2);box-shadow:0 4px 16px #ff4d6d1f;cursor:pointer;font-family:Quicksand,sans-serif;font-weight:700;font-size:.8rem;color:var(--pink);transition:all .3s ease}.global-music-btn:hover{background:#fffffff2;transform:scale(1.05);box-shadow:0 6px 20px #ff4d6d33}.music-icon{font-size:1.1rem;animation:musicPulse 1.5s ease-in-out infinite}.music-label{font-size:.75rem;letter-spacing:.5px}@keyframes musicPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.app-root{min-height:100vh;width:100vw;position:relative;overflow-x:hidden}.ambient-bg{position:fixed;inset:0;background:radial-gradient(ellipse at 20% 20%,rgba(199,125,255,.12) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(255,77,109,.1) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,rgba(255,215,0,.05) 0%,transparent 60%),linear-gradient(135deg,#fff0f3,#fce4ec,#f3e5f5 60%,#fff0f3);z-index:0;pointer-events:none}.floating-particles{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}.particle{position:absolute;bottom:-60px;animation:particleFloat linear infinite;opacity:0;pointer-events:none;filter:drop-shadow(0 0 4px rgba(255,77,109,.3))}@keyframes particleFloat{0%{transform:translateY(0) translate(0) rotate(0) scale(.3);opacity:0}8%{opacity:.7;transform:translateY(-8vh) translate(var(--drift)) rotate(30deg) scale(.8)}50%{opacity:.9;transform:translateY(-50vh) translate(calc(var(--drift) * -.5)) rotate(180deg) scale(1)}90%{opacity:.3}to{transform:translateY(-110vh) translate(var(--drift)) rotate(360deg) scale(.5);opacity:0}}.sparkle-burst{position:fixed;width:0;height:0;z-index:999;pointer-events:none}.sparkle-bit{position:absolute;width:8px;height:8px;border-radius:50%;animation:sparklePop .7s ease-out forwards}@keyframes sparklePop{0%{transform:rotate(var(--angle)) translateY(0) scale(1);opacity:1}to{transform:rotate(var(--angle)) translateY(var(--dist)) scale(0);opacity:0}}.login-screen{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 20%,rgba(199,125,255,.15) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(255,77,109,.12) 0%,transparent 50%),linear-gradient(135deg,#1a0011,#2d0a1e,#1a0a2e 60%,#0d0015);transition:opacity .8s ease,transform .8s ease}.login-screen.login-unlocked{opacity:0;transform:scale(1.15);pointer-events:none}.login-glow{position:absolute;width:350px;height:350px;border-radius:50%;background:radial-gradient(circle,rgba(255,77,109,.25) 0%,rgba(199,125,255,.1) 40%,transparent 70%);animation:loginGlowPulse 4s ease-in-out infinite;filter:blur(50px);pointer-events:none}@keyframes loginGlowPulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.3);opacity:1}}.login-card{position:relative;z-index:1;background:#ffffff14;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(255,179,193,.2);border-radius:28px;padding:48px 40px;max-width:420px;width:90vw;text-align:center;box-shadow:0 24px 80px #0000004d,0 0 40px #ff4d6d14,inset 0 0 30px #ffb3c10d;animation:loginCardAppear .8s ease-out}@keyframes loginCardAppear{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.login-shake{animation:loginShake .6s ease}@keyframes loginShake{0%,to{transform:translate(0)}10%{transform:translate(-12px) rotate(-1deg)}20%{transform:translate(12px) rotate(1deg)}30%{transform:translate(-10px) rotate(-.5deg)}40%{transform:translate(10px) rotate(.5deg)}50%{transform:translate(-6px)}60%{transform:translate(6px)}70%{transform:translate(-3px)}80%{transform:translate(3px)}}.login-lock-icon{margin-bottom:16px;animation:lockBounce 2s ease-in-out infinite}@keyframes lockBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.login-title{font-family:Great Vibes,cursive;font-size:2.4rem;color:var(--pink-light);margin-bottom:6px;text-shadow:0 0 20px rgba(255,77,109,.3)}.login-subtitle{font-family:Quicksand,sans-serif;font-size:.95rem;color:#ffb3c1b3;margin-bottom:28px;letter-spacing:.5px}.login-form{display:flex;flex-direction:column;gap:16px;align-items:center}.login-input-wrap{position:relative;width:100%;max-width:280px}.input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);opacity:.6;pointer-events:none}.login-input{width:100%;padding:14px 18px 14px 44px;border-radius:16px;border:1.5px solid rgba(255,179,193,.25);background:#ffffff12;color:#fff;font-family:Quicksand,sans-serif;font-size:1rem;letter-spacing:3px;text-align:center;outline:none;transition:all .3s ease}.login-input::placeholder{color:#ffb3c166;letter-spacing:1px}.login-input:focus{border-color:var(--pink);box-shadow:0 0 20px #ff4d6d33;background:#ffffff1a}.login-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 36px;border-radius:50px;border:none;background:linear-gradient(135deg,var(--pink),var(--purple));color:#fff;font-family:Quicksand,sans-serif;font-weight:700;font-size:1rem;cursor:pointer;transition:all .3s ease;box-shadow:0 6px 24px #ff4d6d4d;letter-spacing:.5px}.login-btn:hover{transform:translateY(-2px);box-shadow:0 10px 32px #ff4d6d66}.login-btn:active{transform:translateY(0)}.login-wrong-msg{font-family:Quicksand,sans-serif;font-size:.9rem;color:var(--rose);text-shadow:0 0 8px rgba(255,77,109,.3);animation:msgAppear .4s ease-out;min-height:24px}@keyframes msgAppear{0%{opacity:0;transform:translateY(-8px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.login-hint{font-size:.8rem;color:#c77dffb3;font-style:italic;animation:hintGlow 2s ease-in-out infinite}@keyframes hintGlow{0%,to{opacity:.7}50%{opacity:1;text-shadow:0 0 8px rgba(199,125,255,.4)}}.login-falling{position:fixed;inset:0;pointer-events:none;z-index:201;overflow:hidden}.login-fall-item{position:absolute;top:-40px;animation:loginFall linear forwards;pointer-events:none;filter:drop-shadow(0 0 6px rgba(255,77,109,.4))}@keyframes loginFall{0%{transform:translateY(0) rotate(0) scale(.6);opacity:0}10%{opacity:1;transform:translateY(10vh) rotate(45deg) scale(1)}to{transform:translateY(110vh) rotate(720deg) scale(.4);opacity:0}}.login-success-hearts{position:absolute;inset:0;pointer-events:none;overflow:hidden}.success-heart{position:absolute;animation:successHeartFloat 1.5s ease-out forwards;filter:drop-shadow(0 0 8px rgba(255,77,109,.5))}@keyframes successHeartFloat{0%{transform:translateY(0) scale(0);opacity:0}20%{opacity:1;transform:translateY(-20px) scale(1.2)}to{opacity:0;transform:translateY(-200px) scale(.3)}}.intro-screen{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,rgba(255,179,193,.25) 0%,transparent 70%),linear-gradient(135deg,#1a0011,#2d0a1e,#1a0a2e 60%,#0d0015);opacity:0;transition:opacity 1s ease}.intro-screen.visible{opacity:1}.intro-screen.exiting{animation:introExit 1.2s ease-in-out forwards}@keyframes introExit{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}to{opacity:0;transform:scale(1.15);pointer-events:none}}.intro-glow{position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(255,77,109,.3) 0%,rgba(199,125,255,.15) 40%,transparent 70%);animation:glowPulse 3s ease-in-out infinite;filter:blur(40px)}@keyframes glowPulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.3);opacity:1}}.intro-content{position:relative;z-index:10;text-align:center;padding:2rem}.intro-hearts{display:flex;justify-content:center;gap:12px;margin-bottom:1.5rem}.intro-heart{font-size:2.5rem;animation:heartFloat 2s ease-in-out infinite;filter:drop-shadow(0 0 12px rgba(255,77,109,.6))}.intro-heart-icon{animation:heartFloat 2s ease-in-out infinite;filter:drop-shadow(0 0 12px rgba(255,77,109,.5))}@keyframes heartFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-15px) scale(1.15)}}.intro-title{display:flex;flex-direction:column;gap:8px;margin-bottom:1.5rem}.intro-line1{font-family:Quicksand,sans-serif;font-size:1.2rem;font-weight:600;color:var(--pink-light);letter-spacing:4px;text-transform:uppercase;opacity:0;animation:fadeSlideUp 1s .5s forwards}.intro-line2{font-family:Quicksand,sans-serif;font-size:1rem;font-weight:500;color:#ffb3c1b3;letter-spacing:3px;text-transform:uppercase;opacity:0;animation:fadeSlideUp 1s .9s forwards}.intro-line3{font-family:Great Vibes,cursive;font-size:clamp(2.2rem,6vw,3.5rem);color:#fff;text-shadow:0 0 20px rgba(255,77,109,.6),0 0 40px rgba(199,125,255,.3);opacity:0;animation:fadeSlideUp 1s 1.3s forwards,textGlow 3s 2s ease-in-out infinite}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes textGlow{0%,to{text-shadow:0 0 20px rgba(255,77,109,.6),0 0 40px rgba(199,125,255,.3)}50%{text-shadow:0 0 30px rgba(255,77,109,.8),0 0 60px rgba(199,125,255,.5),0 0 80px rgba(255,215,0,.2)}}.intro-subtitle{font-size:1.1rem;color:#ffb3c1cc;font-style:italic;margin-bottom:2.5rem;opacity:0;animation:fadeSlideUp 1s 1.8s forwards}.intro-btn{display:inline-flex;align-items:center;gap:10px;padding:16px 40px;background:linear-gradient(135deg,var(--pink),var(--purple));color:#fff;border:none;border-radius:50px;font-family:Quicksand,sans-serif;font-weight:700;font-size:1.15rem;cursor:pointer;box-shadow:0 8px 30px #ff4d6d66,0 0 60px #c77dff26;transition:all .3s ease;opacity:0;animation:fadeSlideUp 1s 2.3s forwards;position:relative;overflow:hidden}.intro-btn:before{content:"";position:absolute;inset:-2px;border-radius:50px;background:linear-gradient(135deg,var(--pink),var(--purple),var(--gold),var(--pink));background-size:300% 300%;animation:shimmer 3s linear infinite;z-index:-1;filter:blur(4px);opacity:.6}@keyframes shimmer{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.intro-btn:hover{transform:scale(1.08);box-shadow:0 12px 40px #ff4d6d80,0 0 80px #c77dff40}.intro-btn:active{transform:scale(.95)}.btn-sparkle{animation:twinkle 1.5s ease-in-out infinite}.btn-sparkle-icon{animation:twinkle 1.5s ease-in-out infinite;filter:drop-shadow(0 0 8px rgba(255,215,0,.5))}@keyframes twinkle{0%,to{opacity:.6;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.steps-screen{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;animation:fadeIn .8s ease}.steps-screen.exiting{animation:introExit .8s ease-in-out forwards}.step-card{background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:30px;box-shadow:var(--shadow-romantic);border:1.5px solid rgba(255,179,193,.3);width:90%;max-width:480px;padding:2.5rem 2rem;text-align:center;position:relative;z-index:10}.step-enter{animation:stepEnter .5s ease-out}.step-fade{animation:stepFade .4s ease-in forwards}@keyframes stepEnter{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes stepFade{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95) translateY(-10px)}}.step-progress{display:flex;justify-content:center;gap:8px;margin-bottom:1.5rem}.dot{width:10px;height:10px;border-radius:50%;background:#ff4d6d26;transition:all .4s ease}.dot.active{background:var(--pink);box-shadow:0 0 10px #ff4d6d80;transform:scale(1.2)}.step-title{font-family:Great Vibes,cursive;font-size:clamp(2rem,5vw,3rem);color:var(--pink);margin-bottom:1rem;text-shadow:2px 2px 0 rgba(255,255,255,.6);line-height:1.2}.step-text{font-size:1.1rem;line-height:1.7;color:var(--text-soft);font-weight:500;margin-bottom:2rem;min-height:80px}.step-btn{display:inline-block;padding:14px 36px;background:linear-gradient(135deg,var(--pink),var(--rose));color:#fff;border:none;border-radius:50px;font-family:Quicksand,sans-serif;font-weight:700;font-size:1.1rem;cursor:pointer;box-shadow:0 6px 20px #ff4d6d4d;transition:all .25s cubic-bezier(.34,1.56,.64,1)}.step-btn:hover{transform:scale(1.06);box-shadow:0 8px 28px #ff4d6d66}.step-btn:active{transform:scale(.95)}.step-icon-badge{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 1.2rem;background:linear-gradient(135deg,#ff4d6d14,#c77dff14);border-radius:50%;border:2px solid rgba(255,179,193,.25);box-shadow:0 4px 16px #ff4d6d1a;animation:badgePulse 2.5s ease-in-out infinite}@keyframes badgePulse{0%,to{transform:scale(1);box-shadow:0 4px 16px #ff4d6d1a}50%{transform:scale(1.08);box-shadow:0 6px 24px #ff4d6d33}}.game-screen{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;animation:fadeIn .8s ease;overflow:hidden}.game-screen.game-complete{animation:gameFlash 1.5s ease}@keyframes gameFlash{0%{filter:brightness(1)}30%{filter:brightness(1.4)}to{filter:brightness(1)}}.game-header{position:relative;z-index:20;text-align:center;padding:1.5rem 1rem 1rem;background:linear-gradient(180deg,rgba(255,240,243,.95) 0%,rgba(255,240,243,.4) 80%,transparent 100%)}.game-title{font-family:Great Vibes,cursive;font-size:clamp(1.8rem,5vw,2.5rem);color:var(--pink);margin-bottom:.3rem}.game-hint{font-size:.95rem;color:var(--text-soft);margin-bottom:1rem}.progress-bar{width:80%;max-width:350px;height:28px;background:#ffb3c133;border-radius:50px;margin:0 auto;position:relative;overflow:hidden;border:2px solid rgba(255,77,109,.15)}.progress-fill{height:100%;border-radius:50px;background:linear-gradient(90deg,var(--pink),var(--purple),var(--gold));background-size:200% 100%;animation:progressShimmer 2s linear infinite;transition:width .3s ease;box-shadow:0 0 15px #ff4d6d66}@keyframes progressShimmer{0%{background-position:0% 50%}to{background-position:200% 50%}}.progress-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;color:var(--text-main);text-shadow:0 1px 2px rgba(255,255,255,.8)}.game-area{flex:1;position:relative;overflow:hidden}.game-item{position:absolute;top:-60px;background:none;border:none;cursor:pointer;animation:itemFall linear forwards;transition:transform .1s;filter:drop-shadow(0 4px 8px rgba(0,0,0,.1));z-index:10;padding:8px;-webkit-tap-highlight-color:transparent}.game-item:hover{transform:scale(1.3);filter:drop-shadow(0 0 15px rgba(255,77,109,.6))}.game-item:active{transform:scale(.8)}@keyframes itemFall{0%{transform:translateY(0) rotate(0);opacity:0}5%{opacity:1}to{transform:translateY(calc(100vh + 80px)) rotate(360deg);opacity:.3}}.game-done-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle,#fff0f3f2,#f3e5f5e6);z-index:100;animation:fadeIn .8s ease}.game-done-overlay h2{font-family:Great Vibes,cursive;font-size:clamp(2rem,6vw,3rem);color:var(--pink);margin-bottom:.5rem;animation:heartFloat 1.5s ease-in-out infinite}.game-done-overlay p{font-size:1.1rem;color:var(--text-soft);animation:fadeSlideUp 1s .3s forwards;opacity:0}.flower-bloom-container{position:fixed;inset:0;pointer-events:none;z-index:55}.bloom-flower{position:absolute;opacity:0;transform:scale(0) rotate(-90deg);animation:bloomIn 1.5s ease-out forwards;filter:drop-shadow(0 4px 10px rgba(255,77,109,.3))}@keyframes bloomIn{0%{opacity:0;transform:scale(0) rotate(-90deg)}50%{opacity:1;transform:scale(1.3) rotate(10deg)}70%{transform:scale(.9) rotate(-5deg)}to{opacity:.85;transform:scale(1) rotate(0)}}.letter-screen{min-height:100vh;width:100%;position:relative;z-index:50;display:flex;justify-content:center;padding:3rem 1rem 4rem;animation:fadeIn 1s ease}.letter-card{background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:30px;box-shadow:var(--shadow-romantic),0 0 80px #c77dff14;border:1.5px solid rgba(255,179,193,.25);width:100%;max-width:650px;padding:3rem 2rem;position:relative;z-index:60;opacity:0;transform:translateY(30px);transition:all 1.2s cubic-bezier(.16,1,.3,1)}.letter-card.visible{opacity:1;transform:translateY(0)}.music-toggle{position:absolute;top:16px;right:16px;padding:8px 16px;border-radius:30px;background:#ff4d6d14;border:1px solid rgba(255,77,109,.15);font-family:Quicksand,sans-serif;font-weight:600;font-size:.8rem;color:var(--pink);cursor:pointer;transition:all .3s ease;z-index:10}.music-toggle:hover{background:#ff4d6d26;transform:scale(1.05)}.letter-header{text-align:center;margin-bottom:2rem}.letter-seal{font-size:3.5rem;display:block;margin-bottom:.8rem;animation:heartFloat 2.5s ease-in-out infinite;filter:drop-shadow(0 4px 15px rgba(255,77,109,.4))}.letter-title{font-family:Great Vibes,cursive;font-size:clamp(2rem,5vw,3rem);color:var(--pink);text-shadow:2px 2px 0 rgba(255,255,255,.5);margin-bottom:.3rem}.letter-subtitle{font-family:Great Vibes,cursive;font-size:clamp(1.5rem,4vw,2.2rem);color:var(--purple);font-weight:400;text-shadow:1px 1px 0 rgba(255,255,255,.5)}.letter-body{opacity:0;transform:translateY(15px);transition:all 1s ease .3s}.letter-body.visible{opacity:1;transform:translateY(0)}.letter-greeting{font-family:Playfair Display,serif;font-style:italic;font-size:1.4rem;color:var(--pink);margin-bottom:1.2rem}.letter-body>p{font-size:1.05rem;line-height:1.8;color:var(--text-main);margin-bottom:1.2rem}.letter-highlight{background:linear-gradient(135deg,#ff4d6d0a,#c77dff0a);border-left:3px solid var(--pink-light);border-radius:0 16px 16px 0;padding:1rem 1.2rem 1rem 1.5rem;margin-bottom:1rem!important;position:relative}.highlight-icon{position:absolute;left:-14px;top:50%;transform:translateY(-50%);font-size:1.3rem;background:#fff;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #ff4d6d26}.letter-highlight strong{color:var(--pink)}.letter-divider{text-align:center;font-size:1.5rem;color:var(--pink-light);margin:2rem 0;letter-spacing:8px}.letter-core{font-size:1.08rem;line-height:1.8;margin-bottom:1.2rem}.letter-core em{color:var(--purple);font-family:Playfair Display,serif;font-size:1.12rem}.letter-core strong{color:var(--pink)}.letter-closing{text-align:center;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,179,193,.2)}.letter-closing p{font-size:1.05rem;line-height:1.9;font-style:italic;color:var(--text-soft)}.letter-sign{margin-top:1.5rem!important;font-style:normal!important;font-weight:600;color:var(--text-main)!important}.letter-name{font-family:Great Vibes,cursive;font-size:2.2rem;color:var(--pink);display:inline-block;margin-top:.3rem;text-shadow:1px 1px 0 rgba(255,255,255,.5);animation:textGlow 3s ease-in-out infinite}.letter-footer{margin-top:2rem;padding:1.2rem;background:#ff4d6d08;border-radius:16px;border:1px dashed rgba(255,77,109,.15)}.letter-ps{font-size:.95rem;color:var(--text-soft);font-style:italic;text-align:center}.letter-hearts-bottom{display:flex;justify-content:center;gap:4px;margin-top:2rem}.bottom-heart{font-size:1.5rem;animation:heartFloat 2s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(255,77,109,.3))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.heart-cursor-trail{position:fixed;inset:0;pointer-events:none;z-index:10000;overflow:hidden}.trail-heart{position:fixed;pointer-events:none;animation:trailFloat 1.2s ease-out forwards;z-index:10000;transform:translate(-50%,-50%)}@keyframes trailFloat{0%{opacity:1;transform:translate(-50%,-50%) scale(1) translateY(0)}to{opacity:0;transform:translate(calc(-50% + var(--drift)),-50%) scale(.3) translateY(-60px)}}.starfield{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}.star-dot{position:absolute;border-radius:50%;background:#fff;animation:starTwinkle ease-in-out infinite;box-shadow:0 0 4px #fff9}@keyframes starTwinkle{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.4);box-shadow:0 0 8px #ffffffe6,0 0 16px #c77dff4d}}.confetti-container{position:fixed;inset:0;pointer-events:none;z-index:999;overflow:hidden}.confetti-piece{position:absolute;top:-20px;animation:confettiFall linear forwards}.confetti-circle{border-radius:50%}.confetti-rect{border-radius:2px}.confetti-heart{background:none!important}@keyframes confettiFall{0%{transform:translateY(0) translate(0) rotate(0) scale(.5);opacity:0}10%{opacity:1;transform:translateY(10vh) translate(var(--drift)) rotate(var(--rotation)) scale(1)}to{transform:translateY(110vh) translate(calc(var(--drift) * -1)) rotate(calc(var(--rotation) + 720deg)) scale(.4);opacity:0}}.typewriter-cursor{display:inline-block;animation:cursorBlink .6s step-end infinite;color:var(--pink);font-weight:300;margin-left:2px}@keyframes cursorBlink{0%,50%{opacity:1}51%,to{opacity:0}}.letter-fade-in{opacity:0;transform:translateY(12px);animation:letterContentFade .8s ease-out forwards}@keyframes letterContentFade{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.love-counter{background:linear-gradient(135deg,#ff4d6d0a,#c77dff0f);border-radius:20px;padding:1.5rem;margin:1.5rem 0;border:1px solid rgba(255,179,193,.2)}.love-counter-title{font-family:Great Vibes,cursive;font-size:1.6rem;color:var(--pink);text-align:center;margin-bottom:1rem}.love-counter-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.love-reason{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff9;border-radius:12px;font-size:.9rem;color:var(--text-soft);font-weight:500;transition:all .3s ease}.love-reason:hover{background:#ff4d6d14;transform:translate(4px)}.letter-forever-btn-wrap{text-align:center;margin-top:2rem}.letter-forever-btn{display:inline-flex;align-items:center;gap:10px;padding:16px 40px;background:linear-gradient(135deg,var(--pink),var(--purple),var(--pink));background-size:200% 200%;animation:shimmer 3s linear infinite;color:#fff;border:none;border-radius:50px;font-family:Great Vibes,cursive;font-size:1.3rem;cursor:pointer;box-shadow:0 8px 30px #ff4d6d59,0 0 60px #c77dff26;transition:all .3s ease}.letter-forever-btn:hover{transform:scale(1.08);box-shadow:0 12px 40px #ff4d6d80,0 0 80px #c77dff40}.game-done-hearts{display:flex;justify-content:center;gap:8px;margin-top:1rem}.game-done-float-heart{animation:gameDoneHeartFloat 2s ease-in-out infinite}@keyframes gameDoneHeartFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-15px) scale(1.2)}}.forever-screen{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,rgba(255,77,109,.15) 0%,transparent 60%),radial-gradient(ellipse at 20% 80%,rgba(199,125,255,.1) 0%,transparent 50%),linear-gradient(135deg,#0d0015,#1a0a2e,#2d0a1e 60%,#1a0011);opacity:0;transition:opacity 1.5s ease}.forever-screen.visible{opacity:1}.forever-content{position:relative;z-index:10;text-align:center;padding:2rem}.forever-hearts{position:relative;width:120px;height:120px;margin:0 auto 2rem}.forever-orbit-heart{position:absolute;left:50%;top:50%;animation:foreverOrbit 6s linear infinite;animation-delay:calc(var(--orbit-index) * -1.2s)}@keyframes foreverOrbit{0%{transform:rotate(0) translate(50px) rotate(0) scale(1)}50%{transform:rotate(180deg) translate(50px) rotate(-180deg) scale(1.3)}to{transform:rotate(360deg) translate(50px) rotate(-360deg) scale(1)}}.forever-title{font-family:Great Vibes,cursive;font-size:clamp(2.5rem,7vw,4rem);color:#fff;text-shadow:0 0 30px rgba(255,77,109,.6),0 0 60px rgba(199,125,255,.3),0 0 100px rgba(255,215,0,.15);margin-bottom:2rem;animation:textGlow 3s ease-in-out infinite}.forever-names{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:2.5rem}.forever-name-1,.forever-name-2{font-family:Great Vibes,cursive;font-size:clamp(2rem,5vw,3rem);text-shadow:0 0 20px rgba(255,77,109,.5)}.forever-name-1{color:var(--pink-light);animation:nameFloat1 3s ease-in-out infinite}.forever-name-2{color:var(--purple);animation:nameFloat2 3s ease-in-out infinite .5s}.forever-and{animation:heartFloat 2s ease-in-out infinite;filter:drop-shadow(0 0 15px rgba(255,77,109,.6))}@keyframes nameFloat1{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes nameFloat2{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.forever-quote{font-family:Playfair Display,serif;font-style:italic;font-size:clamp(.95rem,2.5vw,1.15rem);color:#ffb3c1cc;max-width:500px;margin:0 auto 2.5rem;line-height:1.8}.forever-infinity{display:flex;flex-direction:column;align-items:center;gap:6px}.infinity-symbol{font-size:4rem;background:linear-gradient(135deg,var(--pink),var(--purple),var(--gold));background-size:200% 200%;animation:shimmer 3s linear infinite;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 20px rgba(255,77,109,.4))}.forever-label{font-family:Quicksand,sans-serif;font-weight:700;font-size:1rem;color:#ffb3c199;letter-spacing:4px;text-transform:uppercase}@media(max-width:600px){.letter-card{padding:2rem 1.2rem;border-radius:24px}.step-card{padding:2rem 1.5rem;border-radius:24px}.intro-heart{font-size:2rem}.letter-highlight{padding:.8rem 1rem .8rem 1.5rem}.highlight-icon{left:-12px;width:24px;height:24px;font-size:1rem}.game-header{padding:1rem .8rem .8rem}.progress-bar{width:90%}.love-counter-grid{grid-template-columns:1fr}.forever-names{gap:1rem}.login-card{padding:32px 24px}}@media(max-width:380px){.intro-line3{font-size:2rem}.letter-title{font-size:1.8rem}.letter-subtitle{font-size:1.3rem}.forever-title{font-size:2.2rem}}
