body{margin:0;padding:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:linear-gradient(135deg,#ffd1dc,#ffe6ee);text-align:center;color:#333;scroll-behavior:smooth;overflow:hidden;height:100vh;height:100dvh;width:100vw;width:100dvw;position:fixed;animation:fadeIn .8s ease-out forwards;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:pan-y}html{margin:0;padding:0;overflow:hidden;height:100vh;height:100dvh;width:100vw;width:100dvw}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}#root{width:100vw;width:100dvw;height:100vh;height:100dvh;overflow:hidden;margin:0;padding:0}.app{position:fixed;top:0;left:0;width:100vw;width:100dvw;height:100vh;height:100dvh;overflow:hidden;margin:0;padding:0}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{width:0;height:0;background:transparent}.page{height:100vh;height:100dvh;width:100vw;width:100dvw;position:absolute;top:0;left:0;opacity:0;visibility:hidden;transform:translate(100%);transition:all .6s cubic-bezier(.22,1,.36,1);padding:env(safe-area-inset-top,20px) env(safe-area-inset-right,20px) env(safe-area-inset-bottom,20px) env(safe-area-inset-left,20px);display:flex;flex-direction:column;justify-content:center;align-items:center;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box}.page.active{opacity:1;visibility:visible;transform:translate(0);position:relative}.page.exit-left{transform:translate(-100%);opacity:0}.test-btn{position:fixed;left:16px;top:16px;z-index:20;background:#4caf50;color:#fff;border:none;padding:10px 14px;border-radius:999px;cursor:pointer;font-size:12px;box-shadow:0 4px 12px #4caf504d;transition:transform .2s}.test-btn:hover{transform:scale(1.05)}.hero{padding:10px 20px;max-width:800px;margin:0 auto;text-align:center}.hero h1{font-size:2.2rem;margin-bottom:10px;font-weight:700;color:#333;line-height:1.2}.hero p{font-size:1rem;color:#555;font-style:italic;margin:0}.highlight{background:linear-gradient(45deg,#e91e63,#ff6b9d);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:800}.teaser{padding:10px 20px;max-width:700px;margin:0 auto;text-align:center}#teaserHeading{font-size:1.3rem;background:linear-gradient(45deg,#e91e63,#9c27b0,#e91e63);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:gradientShift 4s ease infinite;margin:0 0 8px;line-height:1.3}@keyframes gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.teaser-hint{font-size:.9rem;color:#666;font-style:italic;opacity:.8;margin:0}#surpriseBtn{background:#e91e63;color:#fff;border:none;padding:12px 30px;font-size:1.1rem;border-radius:30px;cursor:pointer;margin:20px;transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s;box-shadow:0 12px 24px #e91e6340}#surpriseBtn:hover{transform:translateY(-2px) scale(1.05)}#surpriseBtn:disabled{opacity:.6;cursor:not-allowed;filter:grayscale(10%)}#surpriseBtn:not(:disabled){animation:pulse 2s ease-in-out infinite}.celebrate-btn{background:linear-gradient(135deg,#e91e63,#ff6b9d);color:#fff;border:none;padding:14px 36px;font-size:1.2rem;font-weight:600;border-radius:50px;cursor:pointer;margin:15px auto;transition:all .3s cubic-bezier(.22,1,.36,1);box-shadow:0 12px 30px #e91e6359;position:relative;overflow:hidden}.celebrate-btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s}.celebrate-btn:hover:before{width:300px;height:300px}.celebrate-btn:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 16px 40px #e91e6373}.celebrate-btn:disabled{opacity:.6;cursor:not-allowed;filter:grayscale(20%);background:linear-gradient(135deg,#999,#aaa)}.celebrate-btn:not(:disabled){animation:pulse-celebrate 2s ease-in-out infinite}@keyframes pulse-celebrate{0%,to{box-shadow:0 12px 30px #e91e6359}50%{box-shadow:0 16px 40px #e91e6380}}@keyframes pulse{0%,to{box-shadow:0 12px 24px #e91e6340}50%{box-shadow:0 16px 32px #e91e6366}}.back-btn{position:fixed;top:80px;left:20px;background:#ffffffe6;color:#e91e63;border:2px solid #e91e63;padding:10px 20px;font-size:1rem;border-radius:25px;cursor:pointer;z-index:15;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 12px #0000001a}.back-btn:hover{background:#e91e63;color:#fff;transform:translate(-5px);box-shadow:0 6px 16px #e91e634d}.page-nav-btn{background:#e91e63;color:#fff;border:none;padding:14px 35px;font-size:1.2rem;border-radius:30px;cursor:pointer;margin-top:30px;transition:all .3s ease;box-shadow:0 8px 20px #e91e634d}.page-nav-btn:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 28px #e91e6366}.final{text-align:center;padding:40px 20px;max-width:700px;margin:40px auto 20px}.final-message{font-size:1.4rem;background:linear-gradient(45deg,#e91e63,#ff6b9d,#e91e63);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:gradientShift 4s ease infinite;margin-bottom:8px;margin-top:15px;font-weight:700}.final-subtitle{font-size:.85rem;color:#666;font-style:italic}@media(max-width:600px){.hero h1{font-size:2.2rem;padding:0 10px}.hero p{font-size:1rem;padding:0 10px}.back-btn{top:70px;left:15px;padding:8px 16px;font-size:.9rem}.page-nav-btn{font-size:1.1rem;padding:12px 30px}#teaserHeading{font-size:1.3rem;padding:0 15px}.teaser-hint{padding:0 15px}#surpriseBtn{font-size:1rem;padding:10px 25px}.test-btn{left:10px;top:10px;padding:8px 12px;font-size:11px}.final{padding:30px 15px}.final-message{font-size:1.6rem}.final-subtitle{font-size:1rem}}@media(min-width:601px)and (max-width:1024px){.hero h1{font-size:2.5rem}.page{padding:15px}}@media(min-width:1400px){.hero h1{font-size:3.2rem}.hero p{font-size:1.25rem}}@media(hover:none)and (pointer:coarse){button{min-height:44px;min-width:44px}.back-btn,.page-nav-btn,#surpriseBtn{padding:14px 30px}}@supports (-webkit-touch-callout: none){.app,.page,body{height:-webkit-fill-available}}@media(max-width:932px)and (orientation:landscape){.page{padding:20px 10px 10px;justify-content:flex-start}.hero{padding:10px}.hero h1{font-size:2rem;margin-bottom:10px}.hero p{font-size:1rem}}@media only screen and (max-width:428px){.page{padding:12px;padding-top:max(env(safe-area-inset-top,15px),15px);padding-bottom:max(env(safe-area-inset-bottom,15px),15px)}.hero{padding:8px 15px}.hero h1{font-size:1.8rem;line-height:1.2;margin-bottom:8px}.hero p{font-size:.95rem}.teaser{padding:8px 15px}#teaserHeading{font-size:1.1rem;margin-bottom:6px}.teaser-hint{font-size:.85rem}.celebrate-btn,.page-nav-btn{padding:12px 28px;font-size:1.1rem;margin:12px auto}.back-btn{top:max(env(safe-area-inset-top,12px),70px);left:12px;padding:8px 16px;font-size:.9rem}}@media only screen and (max-width:375px){.page{padding:10px;padding-top:max(env(safe-area-inset-top,12px),12px);padding-bottom:max(env(safe-area-inset-bottom,12px),12px)}.hero{padding:6px 12px}.hero h1{font-size:1.6rem;margin-bottom:6px}.hero p{font-size:.9rem}.teaser{padding:6px 12px}#teaserHeading{font-size:1rem;margin-bottom:5px}.teaser-hint{font-size:.8rem}.celebrate-btn,.page-nav-btn{padding:11px 24px;font-size:1rem;margin:10px auto}}@keyframes pinkPulse{0%{transform:scale(1);box-shadow:0 10px 25px #ee528273,0 0 #ff6b9d99}50%{transform:scale(1.06);box-shadow:0 20px 45px #ee528299,0 0 25px 14px #ff85b373}to{transform:scale(1);box-shadow:0 10px 25px #ee528273,0 0 #ff6b9d99}}.celebration-page{position:fixed;top:0;left:0;width:100vw;width:100dvw;height:100vh;height:100dvh;background:linear-gradient(135deg,#ffeef8,#ffe5f3,#ffd6ed);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:20px;overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;margin:0;box-sizing:border-box}.floating-hearts-bg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.heart-float{position:absolute;font-size:1.5rem;opacity:.3;animation:floatHeart linear infinite}@keyframes floatHeart{0%{bottom:-10%;transform:translate(0) rotate(0);opacity:.3}50%{transform:translate(20px) rotate(180deg);opacity:.5}to{bottom:110%;transform:translate(-20px) rotate(360deg);opacity:0}}.slides-container{position:relative;z-index:1;max-width:600px;width:100%;padding:40px;background:#fffffff2;border-radius:30px;box-shadow:0 20px 60px #e91e6333;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.slide-content{text-align:center;min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center}.slide-icon{font-size:4rem;margin-bottom:20px;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.slide-text{font-size:2rem;color:#333;margin-bottom:30px;line-height:1.4;font-weight:600}.question-options{display:flex;gap:20px;margin-top:20px}.option-button{padding:15px 40px;font-size:1.2rem;font-weight:600;border:none;border-radius:50px;cursor:pointer;transition:all .3s ease;box-shadow:0 5px 15px #0000001a}.yes-button{background:linear-gradient(135deg,#e91e63,#d81b60);color:#fff}.yes-button:hover{background:linear-gradient(135deg,#d81b60,#c2185b);transform:translateY(-2px);box-shadow:0 8px 20px #e91e6366}.no-button{background:linear-gradient(135deg,#9c27b0,#8e24aa);color:#fff}.no-button:hover{background:linear-gradient(135deg,#8e24aa,#7b1fa2);transform:translateY(-2px);box-shadow:0 8px 20px #9c27b066}.next-button{padding:15px 50px;font-size:1.3rem;font-weight:600;background:linear-gradient(135deg,#e91e63,#f06292);color:#fff;border:none;border-radius:50px;cursor:pointer;box-shadow:0 8px 25px #e91e634d;transition:all .3s ease;margin-top:20px}.next-button:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 30px #e91e6366}.slide-progress{display:flex;justify-content:center;gap:10px;margin-top:30px}.progress-dot{width:12px;height:12px;border-radius:50%;background:#ddd;transition:all .3s ease}.progress-dot.active{background:#e91e63;transform:scale(1.3);box-shadow:0 0 10px #e91e6380}.progress-dot.completed{background:#f06292}.celebration-buttons{position:relative;z-index:10;max-width:800px;width:100%;padding:10px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;margin-bottom:10px}.celebration-title{font-size:2rem;color:#e91e63;margin-bottom:5px;margin-top:0;text-shadow:2px 2px 4px rgba(0,0,0,.1)}.celebration-subtitle{font-size:1rem;color:#666;margin-bottom:15px}.buttons-grid{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:15px;width:100%;max-width:400px}.action-button{padding:12px 25px;font-size:1rem;font-weight:600;border:none;border-radius:60px;cursor:pointer;transition:all .4s cubic-bezier(.68,-.55,.265,1.55);box-shadow:0 8px 25px #00000026;color:#fff;position:relative;overflow:hidden;width:100%;min-width:280px;max-width:350px}.action-button:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s}.action-button:hover:before{width:300px;height:300px}.action-button:hover:not(:disabled){transform:translateY(-5px) scale(1.05);box-shadow:0 15px 40px #00000040}.action-button:disabled{cursor:not-allowed;opacity:.6}.music-button{background:linear-gradient(135deg,#e91e63,#d81b60)}.lights-button{background:linear-gradient(135deg,gold,#ffed4e);color:#333;font-weight:700;box-shadow:0 0 20px #ffd70080}.lights-button:hover:not(:disabled){box-shadow:0 0 30px #ffd700cc}.decorate-button{background:linear-gradient(135deg,#ff6b9d,#f06292)}.balloons-button{background:linear-gradient(135deg,#9c27b0,#8e24aa)}.message-button{background:linear-gradient(135deg,#ff5722,#ff6f00);font-size:.95rem;animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 8px 25px #ff572266}50%{box-shadow:0 8px 35px #ff572299}}.string-lights{position:absolute;top:0;left:0;width:100%;height:40px;z-index:10}.light{position:absolute;top:10px;width:15px;height:15px;border-radius:50%;animation:twinkle 1.5s ease-in-out infinite;box-shadow:0 0 15px currentColor}.light-0{background-color:#ff4757;color:#ff4757}.light-1{background-color:gold;color:gold}.light-2{background-color:#00d2ff;color:#00d2ff}.light-3{background-color:#7bed9f;color:#7bed9f}@keyframes twinkle{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 15px currentColor}50%{opacity:.3;transform:scale(.8);box-shadow:0 0 5px currentColor}}.decorations-container{position:relative;width:100%;max-width:1200px;flex:1;display:flex;flex-direction:column;align-items:center;z-index:5;pointer-events:none;padding-bottom:20px}.bunting{position:absolute;top:45px;left:0;width:100%;padding:5px 10px;z-index:6;display:flex;justify-content:center;align-items:center}.bunting-string{display:flex;justify-content:center;align-items:flex-start;gap:5px;flex-wrap:nowrap}.bunting-flag{width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;position:relative;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.05rem;color:#fff;padding-top:30px;animation:sway 3s ease-in-out infinite;text-shadow:2px 2px 4px rgba(0,0,0,.5);filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}.flag-0{border-top:35px solid #00bcd4}.flag-1{border-top:35px solid #8bc34a;animation-delay:.2s}.flag-2{border-top:35px solid #ffeb3b;animation-delay:.4s}@keyframes sway{0%,to{transform:rotate(0)}50%{transform:rotate(5deg)}}.decoration-balloons{position:absolute;bottom:220px;left:0;width:100%;height:200px;z-index:3;display:flex;align-items:flex-end;justify-content:center}.balloon{position:absolute;bottom:0;animation:floatUp 4s ease-in-out infinite;transform-origin:center bottom}.balloon-body{width:60px;height:80px;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.5),transparent 60%);border-radius:50%/60% 60% 40% 40%;position:relative;box-shadow:inset -10px -10px 20px #0000001a,0 5px 15px #0000004d;transition:transform .3s ease}.balloon:hover .balloon-body{transform:scale(1.1)}.balloon-0 .balloon-body{background-color:#ff4081;background-image:radial-gradient(circle at 35% 30%,rgba(255,255,255,.5),transparent 60%)}.balloon-1 .balloon-body{background-color:#00bcd4;background-image:radial-gradient(circle at 35% 30%,rgba(255,255,255,.5),transparent 60%)}.balloon-2 .balloon-body{background-color:#ffeb3b;background-image:radial-gradient(circle at 35% 30%,rgba(255,255,255,.5),transparent 60%)}.balloon-string{width:2px;height:80px;background:linear-gradient(to bottom,#0000004d,#0000001a);margin:0 auto;position:relative}.balloon-string:after{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:6px;height:6px;background:#0003;border-radius:50%}@keyframes floatUp{0%,to{transform:translateY(0) translate(0) rotate(0)}25%{transform:translateY(-30px) translate(15px) rotate(3deg)}50%{transform:translateY(-50px) translate(-10px) rotate(-2deg)}75%{transform:translateY(-30px) translate(10px) rotate(2deg)}}.cake-container{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:4;opacity:0}.cake{position:relative;display:flex;flex-direction:column-reverse;align-items:center}.cake-layer{border-radius:10px;position:relative;box-shadow:0 4px 10px #0003}.layer-1{width:220px;height:50px;background:linear-gradient(135deg,#d4a574,#c49563);z-index:5}.layer-2{width:200px;height:50px;background:linear-gradient(135deg,wheat,#e5cfa3);z-index:4}.layer-3{width:180px;height:50px;background:linear-gradient(135deg,#faebd7,#f0e1c7);z-index:3}.layer-4{width:160px;height:50px;background:linear-gradient(135deg,wheat,#e5cfa3);z-index:2}.layer-5{width:140px;height:50px;background:linear-gradient(135deg,#faebd7,#f0e1c7);z-index:1}.cake-candles{display:flex;gap:15px;position:absolute;top:-45px;z-index:6}.candle{display:flex;flex-direction:column;align-items:center}.flame{width:12px;height:18px;background:linear-gradient(to top,#ff6b35,#fa0,#fe0);border-radius:50%/60% 60% 40% 40%;animation:flicker .3s ease-in-out infinite alternate;box-shadow:0 0 12px #fa0c}@keyframes flicker{0%{transform:scaleY(1) scaleX(1)}to{transform:scaleY(1.1) scaleX(.9)}}.wick{width:3px;height:25px;background:#8b4513;margin-top:-2px}.cake-decoration{position:absolute;top:-15px;left:50%;transform:translate(-50%);font-size:2.2rem}.flower-decoration:before{content:"🌸"}@media(max-width:768px){.celebration-title{font-size:2rem}.celebration-subtitle{font-size:1rem}.slide-text{font-size:1.5rem}.action-button{padding:18px 25px;font-size:1.1rem}.buttons-grid{grid-template-columns:1fr;gap:15px}.message-button{grid-column:span 1;font-size:1rem}.bunting-flag{border-left:20px solid transparent;border-right:20px solid transparent;font-size:.9rem}.flag-0,.flag-1,.flag-2{border-top-width:35px}.balloon-body{width:50px;height:70px}.balloon-string{height:70px}.decoration-balloons{height:180px}.cake{transform:scale(.9)}}@media(max-width:480px){.celebration-page{padding:15px;padding-top:max(env(safe-area-inset-top),15px);padding-bottom:max(env(safe-area-inset-bottom),15px)}.slides-container{padding:20px 15px;max-width:100%}.celebration-buttons{padding:15px;max-width:100%}.slide-text{font-size:1.2rem;line-height:1.4;padding:0 10px}.slide-icon{font-size:3rem;margin-bottom:15px}.option-button{padding:14px 28px;font-size:1rem;min-width:120px}.next-button{padding:14px 36px;font-size:1.05rem}.action-button{padding:16px 24px;font-size:1rem;width:100%;max-width:340px}.celebration-title{font-size:1.8rem;margin-bottom:10px}.celebration-subtitle{font-size:.95rem;margin-bottom:20px}.bunting-flag{border-left:15px solid transparent;border-right:15px solid transparent;font-size:.75rem;padding:8px 5px}.flag-0,.flag-1,.flag-2{border-top-width:28px}.decorations-container{max-height:60vh}.cake{transform:scale(.75)}}@supports (-webkit-touch-callout: none){.celebration-page{height:-webkit-fill-available}}@media(max-width:375px){.celebration-title{font-size:1.5rem}.slide-text{font-size:1.1rem}.action-button{padding:14px 20px;font-size:.95rem}.option-button{padding:12px 24px;font-size:.95rem}}.confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;background:transparent}.countdown{padding:15px 20px;max-width:650px;margin:0 auto}.flip-timer{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;perspective:1000px}.digit{display:flex;flex-direction:column;align-items:center;gap:8px}.card{width:75px;height:85px;position:relative;transform-style:preserve-3d;perspective:600px}.card .text{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.8rem;font-weight:800;color:#e91e63;background:linear-gradient(180deg,#fff,#f5f5f5,#e8e8e8);border-radius:12px;box-shadow:0 8px 20px #00000026,inset 0 2px 4px #fff9,inset 0 -2px 4px #0000001a;position:relative;font-variant-numeric:tabular-nums;border:2px solid rgba(233,30,99,.2)}.card .text:before{content:"";position:absolute;top:50%;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(0,0,0,.1) 20%,rgba(0,0,0,.1) 80%,transparent);z-index:1}.card.flip .text{animation:flipCard .6s cubic-bezier(.4,0,.2,1)}@keyframes flipCard{0%{transform:rotateX(0)}50%{transform:rotateX(-90deg);box-shadow:0 4px 10px #0003,inset 0 2px 4px #fff6}to{transform:rotateX(0)}}.label{font-size:.75rem;text-transform:uppercase;color:#666;font-weight:700;letter-spacing:1.3px;text-shadow:0 1px 2px rgba(0,0,0,.1)}.birthday-celebration{font-size:2.2rem;font-weight:800;background:linear-gradient(90deg,#ff0080,#ff8c00,#40e0d0,#ff0080,#ff8c00);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:rainbowFlow 3s linear infinite,bounce 1s ease-in-out infinite;text-shadow:0 0 30px rgba(255,0,128,.5);display:inline-block;padding:15px;text-align:center;line-height:1.3}@keyframes rainbowFlow{0%{background-position:0% 50%}to{background-position:200% 50%}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}.test-button{margin-top:30px;padding:15px 35px;font-size:1.1rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#e91e63,#ff4081,#f50057);border:none;border-radius:50px;cursor:pointer;box-shadow:0 6px 20px #e91e6366;transition:all .3s ease;text-transform:uppercase;letter-spacing:1px;display:block;margin-left:auto;margin-right:auto}.test-button:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 10px 30px #e91e6399;background:linear-gradient(135deg,#f50057,#ff4081,#e91e63)}.test-button:active{transform:translateY(-1px) scale(1.02);box-shadow:0 5px 15px #e91e6380}@media(max-width:600px){.countdown{padding:12px 15px}.flip-timer{gap:15px}.card{width:65px;height:75px}.card .text{font-size:2.3rem;border-radius:10px}.label{font-size:.7rem;letter-spacing:1.1px}.birthday-celebration{font-size:1.8rem;padding:12px}.test-button{padding:12px 28px;font-size:1rem;border-radius:40px}}@media(max-width:375px){.countdown{padding:10px 12px}.card{width:58px;height:68px}.card .text{font-size:2rem}.label{font-size:.65rem;letter-spacing:1px}.birthday-celebration{font-size:1.5rem;padding:10px}.test-button{padding:10px 24px;font-size:.9rem;border-radius:35px}}.balloon{position:fixed;bottom:-150px;font-size:3rem;z-index:999;pointer-events:none;animation:floatUp 8s ease-out forwards}@keyframes floatUp{0%{transform:translateY(0) translate(0) rotate(0);opacity:1}to{transform:translateY(-120vh) translate(var(--drift)) rotate(var(--rotate));opacity:0}}.balloon:after{content:"";position:absolute;bottom:-20px;left:50%;width:2px;height:30px;background:#666;transform:translate(-50%)}.firework{position:fixed;width:4px;height:4px;border-radius:50%;z-index:999;pointer-events:none}.firework-particle{position:absolute;width:100%;height:100%;border-radius:50%;animation:explode 1.5s ease-out forwards}@keyframes explode{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}.cracker{position:fixed;font-size:2.5rem;z-index:999;pointer-events:none;animation:popCracker 1s ease-out forwards}@keyframes popCracker{0%{transform:scale(0) rotate(0);opacity:1}50%{transform:scale(1.5) rotate(180deg);opacity:1}to{transform:scale(.5) rotate(360deg);opacity:0}}.gallery{padding:0;max-width:100%;margin:0;display:flex;flex-direction:column;height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;background:linear-gradient(180deg,#ffeef8,#ffe5f1,#ffd6eb);position:relative}.gallery::-webkit-scrollbar{width:6px}.gallery::-webkit-scrollbar-track{background:transparent}.gallery::-webkit-scrollbar-thumb{background:#e91e634d;border-radius:10px}.gallery::-webkit-scrollbar-thumb:hover{background:#e91e6380}.gallery h2{font-size:2.5rem;margin:0;color:#e91e63;font-weight:800;text-align:center;letter-spacing:-.5px;position:sticky;top:0;z-index:100;background:linear-gradient(180deg,#fffffffa,#ffeef8f2);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);padding:20px 20px 18px;box-shadow:0 1px #e91e631a;display:flex;align-items:center;justify-content:center;gap:12px}.gallery h2:before,.gallery h2:after{content:"📸";font-size:1.6rem}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;max-width:1200px;width:100%;padding:0;margin:0 auto;flex:1}.photos img{width:100%;aspect-ratio:1;object-fit:cover;border:none;cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);opacity:0;transform:scale(.9);display:block;background:#f0f0f0}.photos img.reveal{animation:photoFadeIn .5s cubic-bezier(.4,0,.2,1) forwards}@keyframes photoFadeIn{to{opacity:1;transform:scale(1)}}.photos img:hover{opacity:.85;transform:scale(.98)}.lightbox{position:fixed;inset:0;background:#000000f5;display:flex;align-items:center;justify-content:center;z-index:9999;animation:lightboxFadeIn .25s ease;padding:60px 20px 20px}@keyframes lightboxFadeIn{0%{opacity:0}to{opacity:1}}.lightbox img{max-width:100%;max-height:100%;object-fit:contain;animation:imageZoomIn .3s cubic-bezier(.4,0,.2,1)}@keyframes imageZoomIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.lightbox-close{position:fixed;top:20px;right:20px;background:#ffffff1a;color:#fff;border:none;font-size:2rem;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-weight:200;z-index:10000;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lightbox-close:hover{background:#e91e63;transform:scale(1.1)}.lightbox-close:active{transform:scale(.95)}.nav-btn{position:fixed;top:50%;transform:translateY(-50%);background:#ffffff1a;color:#fff;border:none;font-size:2.5rem;width:60px;height:60px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:50%;font-weight:200;line-height:1;z-index:10000}.nav-btn:hover{background:#e91e63;transform:translateY(-50%) scale(1.1)}.nav-btn:active{transform:translateY(-50%) scale(.95)}.nav-prev{left:20px}.nav-next{right:20px}@media(max-width:768px){.gallery h2{font-size:2rem;padding:18px 15px 16px}.gallery h2:before,.gallery h2:after{font-size:1.4rem}.photos{grid-template-columns:repeat(3,1fr);gap:3px}.nav-btn{width:50px;height:50px;font-size:2rem}.nav-prev{left:15px}.nav-next{right:15px}.lightbox-close{width:45px;height:45px;font-size:1.6rem;top:15px;right:15px}.lightbox{padding:50px 15px 15px}}@media(max-width:600px){.gallery h2{font-size:1.8rem;padding:16px 12px 14px}.gallery h2:before,.gallery h2:after{font-size:1.2rem}.photos{grid-template-columns:repeat(3,1fr);gap:2px}.nav-btn{width:45px;height:45px;font-size:1.8rem}.nav-prev{left:10px}.nav-next{right:10px}.lightbox-close{width:42px;height:42px;font-size:1.5rem;top:12px;right:12px}}@media(max-width:375px){.gallery h2{font-size:1.6rem;padding:14px 10px 12px}.gallery h2:before,.gallery h2:after{font-size:1.1rem}.photos{grid-template-columns:repeat(3,1fr);gap:2px}.nav-btn{width:40px;height:40px;font-size:1.6rem}.lightbox-close{width:38px;height:38px;font-size:1.4rem}}@media(max-width:932px)and (orientation:landscape){.gallery h2{font-size:1.6rem;padding:12px 15px 10px}.photos{grid-template-columns:repeat(4,1fr);gap:3px}}.hearts{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:hidden}.heart{position:absolute;bottom:100%;color:#ff6b9db3;pointer-events:none;will-change:transform,opacity}.message{padding:15px 20px 20px;width:100%;height:100%;margin:0 auto;opacity:1;transform:translateY(0);position:relative;display:flex;flex-direction:column;align-items:center;max-height:100vh;max-height:100dvh;overflow:hidden;justify-content:center}.message h2{text-align:center;font-size:1.6rem;margin:10px 0 20px;padding-top:max(env(safe-area-inset-top),10px);color:#e91e63;flex-shrink:0}.curtain-container{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;perspective:1000px;flex-shrink:0;z-index:20}.curtain-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;z-index:10;cursor:pointer;transition:opacity .5s ease}.curtain-wrapper.opening{pointer-events:none}.curtain{flex:1;height:100%;position:relative;transition:transform 1.5s cubic-bezier(.68,-.55,.265,1.55);transform-origin:top}.curtain-left{background:linear-gradient(to right,#8b0000,#b22222,#dc143c);transform-origin:left center;box-shadow:5px 0 20px #0000004d;border-right:3px solid rgba(255,215,0,.3)}.curtain-right{background:linear-gradient(to left,#8b0000,#b22222,#dc143c);transform-origin:right center;box-shadow:-5px 0 20px #0000004d;border-left:3px solid rgba(255,215,0,.3)}.curtain:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(90deg,transparent,transparent 10px,rgba(0,0,0,.1) 10px,rgba(0,0,0,.1) 11px);pointer-events:none}.curtain-rod{position:absolute;top:-20px;left:0;width:100%;height:20px;background:linear-gradient(to bottom,#8b7355,#654321);border-radius:10px;box-shadow:0 3px 8px #0000004d;z-index:11}.curtain-rod:before,.curtain-rod:after{content:"";position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;background:radial-gradient(circle,gold,orange);border-radius:50%;box-shadow:0 2px 5px #0000004d}.curtain-rod:before{left:-15px}.curtain-rod:after{right:-15px}.curtain-wrapper.opened .curtain-left{transform:translate(-100%) rotateY(-15deg)}.curtain-wrapper.opened .curtain-right{transform:translate(100%) rotateY(15deg)}.curtain-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:12;background:#fffffff2;color:#e91e63;padding:15px 35px;border-radius:50px;font-size:1.2rem;font-weight:600;box-shadow:0 10px 30px #0000004d;pointer-events:none;animation:hintPulse 2s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@keyframes hintPulse{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.05)}}.curtain-wrapper.opening .curtain-hint,.curtain-wrapper.opened .curtain-hint{opacity:0;transition:opacity .5s ease}.message-content{opacity:0;transform:scale(.9);transition:opacity 1s ease .8s,transform 1s ease .8s;position:relative;z-index:1;width:100%;display:flex;justify-content:center;align-items:center;padding:20px}.message-content.revealed{opacity:1;transform:scale(1)}.message-content .typed-text{background:#fffffff2;padding:25px 30px;border-radius:20px;box-shadow:0 15px 40px #00000026;font-size:1rem;line-height:1.6;color:#333;text-align:left;border:2px solid rgba(233,30,99,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);white-space:pre-line;max-height:50vh;overflow-y:auto;-webkit-overflow-scrolling:touch;width:100%;max-width:650px;scrollbar-width:thin;scrollbar-color:rgba(233,30,99,.5) rgba(0,0,0,.1)}.message-content .typed-text::-webkit-scrollbar{width:6px}.message-content .typed-text::-webkit-scrollbar-track{background:#0000000d;border-radius:10px}.message-content .typed-text::-webkit-scrollbar-thumb{background:#e91e6380;border-radius:10px}.message-content .typed-text::-webkit-scrollbar-thumb:hover{background:#e91e63b3}@media(max-width:1024px){.message{padding:15px 15px 20px}.message h2{font-size:1.5rem;margin:0 0 12px}.message-content .typed-text{padding:22px 28px;font-size:.98rem;line-height:1.6;max-height:42vh}.curtain-hint{font-size:1.15rem;padding:14px 30px}}@media(max-width:768px){.message{padding:10px 15px 15px}.message h2{font-size:1.4rem;margin:0 0 10px}.message-content .typed-text{padding:20px 25px;font-size:.95rem;line-height:1.55;max-height:40vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.curtain-hint{font-size:1.1rem;padding:12px 28px}}@media(max-width:600px){.message{padding:15px 10px;margin:0 auto;overflow:hidden;justify-content:center}.message h2{font-size:1.3rem;margin:5px 0 15px;padding:0 10px}.message-content{padding:12px}.message-content .typed-text{padding:18px 20px;font-size:.9rem;line-height:1.5;max-height:38vh;border-radius:15px;overflow-y:auto;-webkit-overflow-scrolling:touch}.curtain-hint{font-size:1rem;padding:12px 25px;border-radius:40px}.curtain-rod{height:16px;top:-16px;border-radius:8px}.curtain-rod:before,.curtain-rod:after{width:22px;height:22px}.curtain-rod:before{left:-12px}.curtain-rod:after{right:-12px}.curtain{transition:transform 1.2s cubic-bezier(.68,-.55,.265,1.55)}.curtain-container{perspective:800px}}@media(max-width:480px){.message{padding:12px 8px;overflow:hidden}.message h2{font-size:1.25rem;margin-bottom:10px}.message-content .typed-text{padding:18px 16px;font-size:.9rem;line-height:1.5;max-height:42vh;border-radius:12px;overflow-y:auto;-webkit-overflow-scrolling:touch}.curtain-hint{font-size:1rem;padding:12px 24px;border-radius:35px}.curtain-rod{height:14px;top:-14px}.curtain-rod:before,.curtain-rod:after{width:20px;height:20px}.curtain-wrapper.opened .curtain-left{transform:translate(-100%) rotateY(-10deg)}.curtain-wrapper.opened .curtain-right{transform:translate(100%) rotateY(10deg)}}@media(max-width:360px){.message{padding:10px 5px}.message h2{font-size:1.2rem}.message-content .typed-text{padding:18px 15px;font-size:.9rem;line-height:1.45}.curtain-hint{font-size:.95rem;padding:10px 20px}}@media(max-height:500px)and (orientation:landscape){.message-content .typed-text{max-height:60vh;padding:18px 25px;font-size:.9rem}.message h2{font-size:1.3rem;margin-bottom:8px}.curtain-hint{font-size:.95rem;padding:10px 22px}}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.curtain:before{background:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(0,0,0,.08) 8px,rgba(0,0,0,.08) 9px)}}@media(hover:none)and (pointer:coarse){.curtain-wrapper{cursor:default}.curtain-hint{animation:hintPulseMobile 2.5s ease-in-out infinite}@keyframes hintPulseMobile{0%,to{transform:translate(-50%,-50%) scale(1);box-shadow:0 10px 30px #0000004d}50%{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 15px 40px #0006}}.curtain-wrapper:active .curtain-hint{transform:translate(-50%,-50%) scale(.95)}}.music-toggle{position:fixed;right:25px;top:25px;top:max(env(safe-area-inset-top,25px),25px);z-index:100;background:#fffffffa;color:#e91e63;border:2px solid #e91e63;padding:12px 20px;border-radius:30px;cursor:pointer;font-size:.95rem;font-weight:600;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 12px #00000026;pointer-events:all}.music-toggle:hover{background:#e91e63;color:#fff;transform:scale(1.05);box-shadow:0 6px 16px #e91e6366}.music-toggle:active{transform:scale(.98)}@media(max-width:600px){.music-toggle{right:15px;top:15px;top:max(env(safe-area-inset-top,15px),15px);padding:10px 16px;font-size:.9rem}}@media(max-width:375px){.music-toggle{right:12px;top:12px;top:max(env(safe-area-inset-top,12px),12px);padding:8px 14px;font-size:.85rem}}
