:root{--primary:#f36;--secondary:#ff5e7e;--bg-dark:#0f0c29;--bg-mid:#302b63;--bg-light:#24243e;--glass-bg:hsla(0,0%,100%,.1);--glass-bd:hsla(0,0%,100%,.2)}*,:after,:before{margin:0;padding:0;box-sizing:border-box}body,html{height:100%;overflow:hidden}body{font-family:Outfit,sans-serif;background:linear-gradient(135deg,var(--bg-dark),var(--bg-mid),var(--bg-light));color:#fff}body,main{min-height:100vh}main{position:relative;overflow:hidden}#stars-container{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.star{position:absolute;background:#fff;border-radius:50%;opacity:.5;animation:twinkle var(--twinkle-duration) infinite ease-in-out}@keyframes twinkle{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}.overlay{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity 1s ease-in-out;z-index:100}.overlay.fade-out{opacity:0;pointer-events:none}.glass-card{background:var(--glass-bg);border:1px solid var(--glass-bd);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);padding:3rem;border-radius:20px;text-align:center;box-shadow:0 10px 40px rgba(0,0,0,.5);max-width:450px;width:90%;animation:floating 3s ease-in-out infinite}@keyframes floating{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}h1{font-family:Playfair Display,serif;font-size:2.5rem;margin-bottom:1rem;background:linear-gradient(to right,#fff,var(--secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.input-group{margin:2rem 0;display:flex;flex-direction:column;gap:1rem}input[type=password]{padding:12px 20px;border-radius:30px;border:1px solid var(--glass-bd);background:hsla(0,0%,100%,.05);color:#fff;font-size:1rem;outline:none;transition:all .3s ease;text-align:center}input[type=password]:focus{border-color:var(--primary);box-shadow:0 0 15px rgba(255,51,102,.3)}button{padding:12px 30px;border-radius:30px;border:none;background:linear-gradient(45deg,var(--primary),var(--secondary));color:#fff;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 5px 15px rgba(255,51,102,.4)}button:hover{transform:scale(1.05);box-shadow:0 8px 25px rgba(255,51,102,.6)}.error-msg{color:#f36;font-size:.9rem;margin-top:10px;visibility:hidden;opacity:0;transition:all .3s ease}.error-msg.error-visible{visibility:visible;opacity:1}.reveal-container{position:absolute;inset:0;flex-direction:column;z-index:10}.heart-scene,.reveal-container{display:flex;justify-content:center;align-items:center}.heart-scene{position:relative;width:300px;height:280px}.heart-container{position:absolute;inset:0;perspective:700px}.heart-door{position:absolute;inset:0;transform-origin:50% 50%;transition:transform 1.4s cubic-bezier(.6,0,.4,1);backface-visibility:hidden;-webkit-backface-visibility:hidden}.heart-door.left-door{-webkit-clip-path:inset(0 50% 0 0);clip-path:inset(0 50% 0 0)}.heart-door.right-door{-webkit-clip-path:inset(0 0 0 50%);clip-path:inset(0 0 0 50%)}.heart-svg{width:100%;height:100%;display:block}.heart-container.open .heart-door.left-door{transform:rotateY(-120deg)}.heart-container.open .heart-door.right-door{transform:rotateY(120deg)}.inner-content{position:absolute;width:320px;text-align:center;opacity:0;transform:scale(.7);transition:opacity .8s ease .8s,transform .8s ease .8s;pointer-events:none;z-index:-1}.inner-content.visible{opacity:1;transform:scale(1)}.inner-content h2{font-family:Playfair Display,serif;font-size:2.2rem;color:#fff;text-shadow:0 0 30px rgba(255,100,150,.7);margin-bottom:.4rem}.inner-content p{font-size:1.1rem;color:hsla(0,0%,100%,.85)}.fade-out-scene{animation:heartFadeOut 1.2s ease-in-out forwards}@keyframes heartFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}.flying-heart{position:fixed;pointer-events:none;z-index:999;transform:translate(-50%,-50%);animation:heartFly var(--hd) ease-out forwards;text-shadow:0 0 8px rgba(255,100,150,.6)}@keyframes heartFly{0%{transform:translate(-50%,-50%) scale(.3);opacity:1}20%{transform:translate(calc(-50% + var(--hx)*.2),calc(-50% + var(--hy)*.2)) scale(1.2);opacity:1}to{transform:translate(calc(-50% + var(--hx)),calc(-50% + var(--hy))) scale(.5);opacity:0}}#butterfly-container{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}.butterfly{width:40px;height:40px;transform-style:preserve-3d;animation:fly var(--fly-duration) linear forwards;opacity:0}.butterfly,.wing{position:absolute}.wing{width:20px;height:35px;background:rgba(255,100,150,.8);border-radius:50% 50% 40% 60%;animation:flap .3s ease-in-out infinite;box-shadow:0 0 10px hsla(0,0%,100%,.3)}.wing.left{left:0;transform-origin:right center}.wing.right{right:0;transform-origin:left center;animation-delay:.15s}@keyframes flap{0%,to{transform:rotateY(0deg)}50%{transform:rotateY(70deg)}}@keyframes fly{0%{transform:translate(var(--startX),var(--startY)) rotate(var(--rotation));opacity:0}5%{opacity:1}90%{opacity:1}to{transform:translate(var(--endX),var(--endY)) rotate(var(--rotation));opacity:0}}.gallery{position:fixed;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;z-index:20;overflow-y:auto;padding:1rem;animation:galleryFadeIn .8s ease forwards}@keyframes galleryFadeIn{0%{opacity:0}to{opacity:1}}.gallery.fading{animation:galleryFadeOut 1.2s ease forwards}@keyframes galleryFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.92);pointer-events:none}}.gallery-title{font-family:Caveat,cursive;font-size:2rem;color:#fff;text-shadow:0 0 20px rgba(255,100,150,.6);letter-spacing:.04em;opacity:0;transform:translateY(-30px);animation:titleDrop .7s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes titleDrop{to{opacity:1;transform:translateY(0)}}.polaroid-grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:1.2rem}.polaroid{background:#fff;padding:10px 10px 38px;border-radius:3px;box-shadow:0 6px 20px rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.2);width:150px;cursor:default;opacity:0;transform:rotate(var(--rot)) translateY(60px) scale(.85);animation:polaroidLand .65s cubic-bezier(.34,1.4,.64,1) calc(var(--delay)) forwards;transition:transform .25s ease,box-shadow .25s ease}@keyframes polaroidLand{0%{opacity:0;transform:rotate(var(--rot)) translateY(80px) scale(.7)}60%{opacity:1}to{opacity:1;transform:rotate(var(--rot)) translateY(0) scale(1)}}.polaroid:hover{transform:rotate(0deg) translateY(-10px) scale(1.08)!important;box-shadow:0 20px 40px rgba(0,0,0,.45),0 0 0 2px rgba(255,80,130,.4);z-index:10}.polaroid-img{width:100%;aspect-ratio:1/1;overflow:hidden;background:#f0e8e8}.polaroid-img img{width:100%;height:100%;object-fit:cover;display:block}.placeholder-img{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;background:linear-gradient(135deg,#ffd6e0,#ffb3c6,#ffc8dd);color:#c0405a}.cam-icon{font-size:2rem}.placeholder-img small{font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.polaroid-caption{margin-top:6px;font-family:Caveat,cursive;font-size:1rem;color:#444;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.corner-widget{position:fixed;top:1.2rem;right:1.2rem;z-index:300;display:flex;flex-direction:column;align-items:center;gap:4px;background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;padding:10px 12px 8px;box-shadow:0 6px 24px rgba(0,0,0,.3);animation:widgetPop .5s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes widgetPop{0%{opacity:0;transform:scale(.7) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.cw-svg{width:64px;height:64px;transform:rotate(-90deg);display:block}.cw-bg{stroke:hsla(0,0%,100%,.12)}.cw-bg,.cw-ring{fill:none;stroke-width:7}.cw-ring{stroke-linecap:round;stroke-dasharray:201.06;stroke-dashoffset:0;transition:stroke-dashoffset .5s cubic-bezier(.34,1.2,.64,1)}.cw-inner{position:absolute;top:10px;width:64px;height:64px;display:flex;align-items:center;justify-content:center}.cw-num{font-family:Playfair Display,serif;font-size:1.6rem;font-weight:700;color:#fff;text-shadow:0 0 12px rgba(255,100,150,.6);transition:transform .2s cubic-bezier(.34,1.8,.64,1);display:inline-block}.cw-num.pop{transform:scale(1.4)}.cw-label{font-family:Caveat,cursive;font-size:.85rem;color:hsla(0,0%,100%,.65);letter-spacing:.04em}.counter-fullscreen{position:fixed;inset:0;z-index:180;pointer-events:none}.counter-widget{pointer-events:all}.toast{bottom:2.5rem}.toast,.toast-2{position:fixed;left:50%;transform:translateX(-50%);background:hsla(0,0%,100%,.12);border:1px solid hsla(0,0%,100%,.25);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:.75rem 1.6rem;border-radius:50px;display:flex;align-items:center;gap:.5rem;font-size:1rem;color:#fff;z-index:200;box-shadow:0 8px 30px rgba(255,51,102,.25);animation:toastSlideUp .6s cubic-bezier(.34,1.56,.64,1) forwards;white-space:nowrap;cursor:pointer}.toast-2{bottom:7rem}@keyframes toastSlideUp{0%{opacity:0;transform:translateX(-50%) translateY(20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes toastSlideDown{0%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(20px)}}.toast-2.hide,.toast.hide{animation:toastSlideDown .6s cubic-bezier(.34,1.56,.64,1) forwards}.toast.error{background:rgba(255,51,102,.15);border-color:rgba(255,51,102,.4);box-shadow:0 8px 30px rgba(255,51,102,.4)}.toast-cursor{font-size:1.1rem;animation:cursorBounce .8s ease-in-out infinite;display:inline-block}@keyframes cursorBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.toast-hearts{animation:heartsPulse 1s ease-in-out infinite;display:inline-block}@keyframes heartsPulse{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}.final-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:190;padding:1rem}.final-card{text-align:center;max-width:500px;position:relative;opacity:0;transform:translateY(30px);animation:finalReveal 1s cubic-bezier(.34,1.3,.64,1) .1s forwards}@keyframes finalReveal{to{opacity:1;transform:translateY(0)}}.final-emoji{font-size:4rem;margin-bottom:1rem;animation:roseWobble 2s ease-in-out infinite;display:inline-block}@keyframes roseWobble{0%,to{transform:rotate(-5deg) scale(1)}50%{transform:rotate(5deg) scale(1.1)}}.final-title{font-family:Playfair Display,serif;font-size:clamp(2rem,6vw,3.2rem);background:linear-gradient(135deg,#fff 30%,#ff80aa);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:1rem;line-height:1.2}.final-body{font-size:clamp(1rem,2.5vw,1.2rem);color:hsla(0,0%,100%,.85);line-height:1.8}.final-sparkles{inset:0}.final-sparkles,.sparkle{position:absolute;pointer-events:none}.sparkle{font-size:1.2rem;animation:sparkleDrift var(--sd) ease-out forwards;opacity:0}@keyframes sparkleDrift{0%{opacity:0;transform:translate(0) scale(.5)}15%{opacity:1}to{opacity:0;transform:translate(var(--sx),var(--sy)) scale(1.4)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-10px)}75%{transform:translateX(10px)}}#click-counter{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;z-index:180;animation:counterFadeIn .7s ease forwards}@keyframes counterFadeIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.counter-ring{position:relative;width:160px;height:160px}.counter-svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:hsla(0,0%,100%,.1);stroke-width:10}.ring-fill{fill:none;stroke:url(#ringGrad);stroke-width:10;stroke-linecap:round;stroke-dasharray:314.16;stroke-dashoffset:314.16;transition:stroke-dashoffset .45s cubic-bezier(.34,1.4,.64,1)}.counter-inner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:row;gap:2px}#counter-num{font-family:Playfair Display,serif;font-size:2rem;font-weight:700;color:#fff;text-shadow:0 0 20px rgba(255,100,150,.7);transition:transform .2s cubic-bezier(.34,1.8,.64,1);display:inline-block}#counter-num.pop{transform:scale(1.45)}.counter-label{font-size:1.1rem;color:hsla(0,0%,100%,.6);align-self:flex-end;padding-bottom:.55rem}.counter-hint{font-family:Caveat,cursive;font-size:1.4rem;color:hsla(0,0%,100%,.75);letter-spacing:.03em;transition:opacity .3s ease}