@import "https://fonts.googleapis.com/css2?family=Dancing+Script:wght@600&family=Playfair+Display:ital,wght@0,400;0,600;1,400&family=Lora:wght@400;500&display=swap";:root{--bg-color:#fdfbf7;--primary-red:#8b0000;--secondary-red:brown;--soft-pink:#fff0f5;--dark-pink:#ffd1dc;--text-dark:#2c1818;--text-muted:#5c3a3a;--font-heading:"Playfair Display", serif;--font-body:"Lora", serif;--font-script:"Dancing Script", cursive}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-dark);font-family:var(--font-body);line-height:1.6;overflow-x:hidden}.app-wrapper{position:relative}h1,h2,h3{font-family:var(--font-heading);color:var(--primary-red);font-weight:600}.hearts-container{pointer-events:none;z-index:0;width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}.heart{background-color:var(--heart-color,var(--soft-pink));opacity:.6;width:20px;height:20px;animation:15s linear infinite floatUp;position:absolute;bottom:-100px;transform:rotate(-45deg)}.heart:before,.heart:after{content:"";background-color:var(--heart-color,var(--soft-pink));border-radius:50%;width:100%;height:100%;position:absolute}.heart:before{top:-50%;left:0}.heart:after{top:0;left:50%}@keyframes floatUp{0%{opacity:.8;transform:rotate(-45deg)translateY(0)scale(.8)}to{opacity:0;transform:rotate(-45deg)translateY(-1000px)scale(1.2)}}section{z-index:1;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:4rem 2rem;display:flex;position:relative}.section-title{text-align:center;margin-bottom:2rem;font-size:2.5rem}.hero{text-align:center;width:100%;position:relative}.hero-tilt-img{aspect-ratio:3/4;object-fit:cover;z-index:10;pointer-events:auto;cursor:pointer;border-radius:12px;width:clamp(140px,18vw,250px);position:absolute;box-shadow:0 15px 35px #00000026,0 0 0 6px #ffffffe6}.hero-tilt-left{transform:rotate(-12deg) translate(var(--mx,0), var(--my,0));top:10%;left:8%}.hero-tilt-left:hover{z-index:20}.hero-tilt-right{transform:rotate(10deg) translate(var(--mx,0), var(--my,0));top:20%;right:8%}.hero-tilt-right:hover{z-index:20}.hero-content{z-index:5;position:relative}.hero-title{opacity:0;margin-bottom:1rem;font-size:clamp(3rem,6vw,5rem);line-height:1.2;animation:1.5s ease-out forwards fadeUp}.hero-subtitle{color:var(--text-muted);font-size:1.5rem;font-family:var(--font-heading);opacity:0;font-style:italic;animation:1.5s ease-out .5s forwards fadeUp}.heart-emoji{animation:2s ease-in-out infinite pulse;display:inline-block}@keyframes fadeUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.cake-section{background-color:var(--soft-pink);overflow:hidden}.cake-container{z-index:10;justify-content:center;align-items:flex-end;width:250px;height:200px;margin-top:2rem;margin-bottom:3rem;display:flex;position:relative;transform:scale(1.5)}@media (width<=768px){.cake-container{transform:scale(1.2)}}.cake{width:200px;height:120px;position:relative}.plate{background-color:#e0e0e0;border-radius:50%;width:250px;height:30px;position:absolute;bottom:-15px;left:-25px;box-shadow:0 5px 10px #0000001a}.layer{background-color:#f8e8e8;border-radius:10px;width:200px;position:absolute;box-shadow:inset 0 -10px #0000000d}.layer-bottom{background-color:#fff3e0;height:40px;bottom:0}.layer-middle{background-color:#ffecb3;width:180px;height:40px;bottom:40px;left:10px}.layer-top{background-color:#fff9c4;width:160px;height:40px;bottom:80px;left:20px}.icing{background-color:var(--primary-red);border-radius:10px 10px 0 0;width:100%;height:15px;position:absolute;top:0}.icing:after{content:"";background-image:radial-gradient(circle at 10px 5px, var(--primary-red) 12px, transparent 13px);background-repeat:repeat-x;background-size:20px 20px;width:100%;height:15px;position:absolute;top:10px;left:0}.candles{justify-content:center;gap:20px;width:100%;display:flex;position:absolute;top:-40px;left:0}.candle{background-color:#fff;border-radius:5px;width:12px;height:40px;position:relative;box-shadow:inset -2px 0 #0000001a}.candle:before{content:"";background:repeating-linear-gradient(45deg, transparent, transparent 5px, var(--primary-red) 5px, var(--primary-red) 10px);border-radius:5px;width:100%;height:100%;position:absolute}.flame{background:radial-gradient(#fc0 0%,#f60 70%,#0000 100%);border-radius:50% 50% 20% 20%;width:15px;height:25px;transition:opacity .5s ease-out;animation:1s infinite alternate flicker;position:absolute;top:-20px;left:50%;transform:translate(-50%);box-shadow:0 0 15px #f60}.flame.extinguished{opacity:0}@keyframes flicker{0%{transform:translate(-50%)scale(1)rotate(-1deg)}to{transform:translate(-50%)scale(1.1)rotate(1deg)}}.romantic-btn{font-size:1.2rem;font-family:var(--font-heading);color:#fff;background-color:var(--primary-red);cursor:pointer;border:none;border-radius:50px;padding:1rem 2.5rem;transition:all .3s;box-shadow:0 10px 20px #8b000033}.romantic-btn:hover{background-color:var(--secondary-red);transform:translateY(-3px);box-shadow:0 15px 25px #8b00004d}.romantic-btn:disabled{opacity:.7;cursor:default;background-color:var(--primary-red);transform:none;box-shadow:0 10px 20px #8b000033}.hidden-message{font-size:1.5rem;font-family:var(--font-script);color:var(--primary-red);opacity:0;margin-top:2rem;transition:all 1s .5s;transform:translateY(20px)}.hidden-message.show{opacity:1;transform:translateY(0)}.toys-container{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.walking-toy{opacity:.8;animation:20s linear infinite walkAcross;position:absolute;left:-100px}@keyframes walkAcross{0%{transform:translate(0)rotate(0)translateY(0)}25%{transform:translate(30vw)rotate(15deg)translateY(-20px)}50%{transform:translate(60vw)rotate(-10deg)translateY(0)}75%{transform:translate(90vw)rotate(10deg)translateY(-15px)}to{transform:translate(120vw)rotate(0)translateY(0)}}.balloons-container{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.floating-balloon{opacity:.9;animation:12s ease-in-out infinite floatBalloon;position:absolute;bottom:-100px}@keyframes floatBalloon{0%{transform:translateY(0)rotate(-5deg)}50%{transform:translateY(-60vh)rotate(5deg)}to{transform:translateY(-120vh)rotate(-5deg)}}.gifts-container{pointer-events:none;z-index:5;justify-content:space-between;width:100%;display:flex;position:absolute;bottom:5%}.gift{font-size:clamp(3rem,5vw,5rem);animation:3s ease-in-out infinite alternate gentleBounce;position:absolute}@keyframes gentleBounce{0%{transform:translateY(0)}to{transform:translateY(-15px)}}.love-game-container{text-align:center;z-index:10;width:100%;min-height:150px;margin-top:2rem;position:relative}.love-question{font-family:var(--font-script);color:var(--primary-red);min-height:4rem;margin-bottom:2rem;font-size:2.5rem}.love-buttons{justify-content:center;align-items:center;gap:2rem;display:flex}.yes-btn{background-color:#4caf50;box-shadow:0 10px 20px #4caf504d}.yes-btn:hover{background-color:#45a049;box-shadow:0 15px 25px #4caf5066}.no-btn{background-color:var(--text-muted)}.no-btn:hover{background-color:var(--text-dark)}.reveal-hidden{opacity:0;transition:opacity .8s,transform .8s cubic-bezier(.25,1,.5,1);transform:translateY(50px)scale(.95)}.reveal-visible{opacity:1;transform:translateY(0)scale(1)}.gallery-section{background-color:var(--bg-color)}.gallery-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;width:100%;max-width:1000px;display:grid}.gallery-item{aspect-ratio:1;color:var(--text-muted);font-family:var(--font-heading);cursor:pointer;background-color:#eae3d9;border-radius:12px;justify-content:center;align-items:center;font-size:1.2rem;font-style:italic;transition:all .4s;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 20px #0000000d}.gallery-img{object-fit:cover;width:100%;height:100%;transition:transform .5s}.gallery-item:after{content:"";pointer-events:none;border:1px solid #8b00001a;border-radius:12px;position:absolute;inset:0}.gallery-item:hover{transform:translateY(-10px)scale(1.02);box-shadow:0 15px 30px #8b000026}.gallery-item:hover .gallery-img{transform:scale(1.1)}.letter-section{background-color:var(--soft-pink)}.letter-container{background-color:#fff;border-radius:4px;width:90%;max-width:700px;padding:4rem;position:relative;box-shadow:0 20px 40px #00000014}.letter-container:before{content:"";background-color:var(--primary-red);border-radius:50%;width:50px;height:50px;position:absolute;top:-25px;left:50%;transform:translate(-50%);box-shadow:0 5px 15px #8b00004d}.letter-body{font-family:var(--font-body);font-size:1.1rem;line-height:1.8}.letter-body p{margin-bottom:1.5rem}.letter-body .signature{font-family:var(--font-script);color:var(--primary-red);margin-top:3rem;margin-bottom:.5rem;font-size:1.8rem}.letter-body .signature-name{font-family:var(--font-heading);font-weight:600}@media (width<=768px){.section-title{font-size:2rem}.letter-container{padding:2.5rem 1.5rem}}.landing-page{background-color:var(--bg-color);z-index:1000;text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.typewriter-text{color:var(--primary-red);white-space:pre-wrap;font-family:Comfortaa,cursive;font-size:clamp(4rem,8vw,7rem);line-height:1.4}.typewriter-text:after{content:"|";margin-left:5px;animation:1s step-end infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@property --progress{syntax:"<number>";inherits:true;initial-value:0}@property --lerp{syntax:"<number>";inherits:true;initial-value:0}@property --char-index{syntax:"<number>";inherits:true;initial-value:0}:root{--vh:1vh;--vw:1vw;--c-white:#fff;--c-black:#000;--c-red:#8b0000;--g-gap:.4rem;--g-margin:calc(var(--g-gap) * 2);--h4:1.953rem}@media (width>=1024px){:root{--g-margin:calc(var(--g-gap) * 4)}}.-w{height:calc(var(--vh,1vh) * 400);contain:paint;margin-left:var(--g-margin);margin-right:var(--g-margin);background-color:#0000}.-w div{margin-left:calc(50% + var(--g-gap));top:calc(var(--vh,1vh) * 50);transform-origin:calc(var(--g-gap) * -.5) 50%;rotate:calc(4 * -360deg * var(--progress));display:grid;position:sticky}.-w div>span{text-transform:capitalize;transform-origin:0%;transform:rotate(calc(var(--order) * 360deg / var(--total))) translate(calc(var(--total) * .2em), 0);translate:calc(var(--g-gap) * -.5) 0;font-family:var(--font-heading);color:var(--text-dark);font-weight:600;font-size:var(--h4);grid-area:1/1;display:block}.-w div>span:first-child{color:var(--c-red)}.-s-char{will-change:contents;rotate:calc(pow(var(--char-index),1.75) * var(--lerp) * .1deg);translate:calc(pow(var(--char-index),1.75) * abs(var(--lerp)) * -.00125em) calc(pow(var(--char-index),1.75) * var(--lerp) * .0025em);display:inline-flex}.scroll-indicator{font-family:var(--font-body);color:var(--primary-red);pointer-events:none;z-index:100;font-size:1.2rem;animation:2s ease-in-out infinite pulse;position:fixed;bottom:2rem;left:50%;transform:translate(-50%)}.final-screen{background-color:var(--bg-color);z-index:2000;text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.final-typewriter-text{color:var(--primary-red);white-space:pre-wrap;font-family:Comfortaa,cursive;font-size:clamp(3rem,6vw,6rem);line-height:1.4}.final-typewriter-text:after{content:"|";margin-left:5px;animation:1s step-end infinite blink}.final-screen.fade-out{opacity:0;pointer-events:none;transition:opacity 1.5s}.romantic-divider-section{background-color:var(--soft-pink);justify-content:center;align-items:center;min-height:50vh;display:flex;overflow:hidden}.divider-content{text-align:center;width:100%;max-width:800px;padding:2rem}.divider-text{font-family:var(--font-script);color:var(--primary-red);opacity:0;font-size:clamp(2rem,5vw,4rem);transition:opacity 1s,transform 1s;transform:translateY(20px)}.text-reveal{opacity:1;transform:translateY(0)}.delay-text{transition-delay:2.5s}.svg-container{width:100%;max-width:500px;margin:2rem auto}.heartbeat-path{stroke-dasharray:1000;stroke-dashoffset:1000px}.draw-path{animation:2.5s ease-in-out .5s forwards drawHeartbeat}@keyframes drawHeartbeat{to{stroke-dashoffset:0}}.heartbeat-heart{opacity:0;transform-origin:250px 70px;transform:scale(0)}.draw-path-heart{animation:.6s cubic-bezier(.175,.885,.32,1.275) 2.2s forwards popHeart}@keyframes popHeart{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1.2)}}
