:root{--primary-color:#e91e63;--secondary-color:#f8bbd0;--accent-color:#fff;--gold-color:#ffd700;--text-color:#333;--light-text:#555}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Montserrat,sans-serif;color:var(--text-color);overflow:hidden;position:relative;height:100vh;background:linear-gradient(-45deg,#ffecd2,#fcb69f,#ff9a9e,#fecfef);background-size:400% 400%;animation:gradientShift 20s ease infinite;transition:background 1s ease}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}#bg-canvas,#particles-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none}#particles-container{z-index:2}.particle{position:absolute;top:-10vh;pointer-events:none;opacity:.8;font-size:1.5em;animation:fall linear infinite}@keyframes fall{to{transform:translateY(110vh) rotate(1turn)}}@keyframes fall-sway{0%{transform:translateX(0) translateY(0) rotate(0deg)}25%{transform:translateX(-50px) translateY(25vh) rotate(90deg)}50%{transform:translateX(50px) translateY(50vh) rotate(180deg)}75%{transform:translateX(-30px) translateY(75vh) rotate(270deg)}to{transform:translateX(0) translateY(110vh) rotate(1turn)}}.memory-snow{font-family:Dancing Script,cursive;color:var(--primary-color);font-size:1.8rem;font-weight:600;white-space:nowrap;text-shadow:1px 1px 3px rgba(0,0,0,.2);animation:memory-fall linear;z-index:4}@keyframes memory-fall{0%{transform:translateY(-100px);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(calc(100vh + 100px));opacity:0}}.container{width:90%;max-width:800px;background:rgba(255,255,255,.7);backdrop-filter:blur(15px) saturate(120%);-webkit-backdrop-filter:blur(15px) saturate(120%);border-radius:25px;border:1px solid rgba(255,255,255,.5);box-shadow:0 8px 32px 0 rgba(31,38,135,.15);padding:60px;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10}#step-gallery .container{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);padding:15px 30px;width:auto;max-width:90%;top:10%;left:50%;transform:translateX(-50%);pointer-events:none}#step-gallery h1{color:var(--accent-color);text-shadow:0 0 10px rgba(0,0,0,.3),0 0 20px rgba(255,255,255,.5);font-size:3rem;margin-bottom:5px}#step-gallery p{color:rgba(255,255,255,.9);text-shadow:0 0 5px rgba(0,0,0,.3);font-size:1rem}#step-password h1{font-size:3rem;margin-bottom:20px}#password-form{display:flex;flex-direction:column;align-items:center;gap:20px}#password-input{width:80%;padding:15px;border:2px solid var(--secondary-color);border-radius:50px;font-size:1.2rem;text-align:center;background:rgba(255,255,255,.5);transition:all .3s ease}#password-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 10px var(--primary-color)}.error-message{color:#c62828;font-size:.9rem;opacity:0;transform:scale(.9);transition:all .3s ease;height:0}.error-message.show{opacity:1;transform:scale(1);height:auto}.wiggle{animation:wiggle .5s ease-in-out}@keyframes wiggle{0%,to{transform:translateX(0)}25%{transform:translateX(-3px) rotate(-2deg)}75%{transform:translateX(3px) rotate(2deg)}}.input-error-flash{border-color:#c62828;box-shadow:0 0 8px #ef9a9a}.broken-heart-particle{position:absolute;font-size:1.5rem;color:#c62828;z-index:15;pointer-events:none}h1{font-family:Great Vibes,cursive;font-size:4rem}h1,h2{color:var(--primary-color);margin-bottom:20px}h2{font-family:Dancing Script,cursive;font-size:2.5rem}p{font-size:1.3rem;line-height:2;color:var(--light-text);font-weight:300}.section{display:none;opacity:0;cursor:pointer}.section.active{display:block!important;opacity:1!important}#step-gallery,#step-password{cursor:default}#step-wish .wish-card{background:linear-gradient(135deg,#fff,var(--secondary-color));border-radius:20px;padding:40px;box-shadow:0 5px 15px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.05)}#step-wish .wish-card p{font-size:1.4rem;line-height:2.2;margin-bottom:20px}#step-wish .wish-card .signature{text-align:right;font-family:Dancing Script,cursive;font-size:2rem;color:var(--primary-color)}#step-like .like-list{text-align:left;font-size:1.2rem;color:var(--light-text);font-weight:300;list-style:none;padding:0}#step-like .like-list li{margin-bottom:15px;opacity:1;transform:translateX(0);transition:all .5s ease}#step-like .like-list li i{color:var(--primary-color);margin-right:10px}.action-button{margin-top:40px;background:linear-gradient(45deg,var(--primary-color),var(--secondary-color));color:var(--accent-color);border:none;padding:18px 40px;font-size:1.2rem;font-weight:600;border-radius:50px;cursor:pointer;transition:all .4s ease;display:inline-flex;align-items:center;gap:12px}.action-button:hover{transform:translateY(-5px);box-shadow:0 15px 35px rgba(233,30,99,.4)}footer{position:absolute;bottom:20px;width:100%;text-align:center;font-size:.9rem;color:var(--light-text);z-index:2}body.gallery-active{background:linear-gradient(-45deg,#a8edea,#fed6e3,#d299c2,#fef9d7);background-size:400% 400%;animation:gradientShift 25s ease infinite}@keyframes memoryFall{0%{transform:translateY(0);opacity:0}10%{opacity:1}to{transform:translateY(100vh);opacity:0}}.memory-snow{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}