*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--pink-light: #fff0f5;--rose: #d63384;--rose-deep: #a91d5a;--gold: #d4a017;--purple-light: #ede9fe;--cream: #fef9f4;--text: #3d2c2c;--radius: 24px;--radius-sm: 16px}html{scroll-behavior:smooth}body{font-family:Lora,serif;color:var(--text);background:linear-gradient(135deg,var(--cream) 0%,var(--pink-light) 50%,var(--purple-light) 100%);min-height:100vh;overflow-x:hidden}#hedgehogs-layer,#confetti-layer{position:fixed;inset:0;pointer-events:none;z-index:1000;overflow:hidden}#confetti-layer{z-index:1001}.hedgehog{position:absolute;top:-80px;left:var(--left);width:var(--size);height:auto;animation:hedgehogFloat var(--duration) var(--delay) linear forwards;opacity:.85}@keyframes hedgehogFloat{0%{transform:translate(0) rotate(0);top:-80px;opacity:.85}to{transform:translate(var(--drift)) rotate(360deg);top:110vh;opacity:.3}}.confetti{position:absolute;top:50%;left:var(--left);font-size:var(--size);color:var(--color);animation:confettiBurst var(--duration) var(--delay) ease-out forwards;pointer-events:none}@keyframes confettiBurst{0%{transform:translateY(0) translate(0) rotate(0) scale(1);opacity:1}30%{transform:translateY(-200px) translate(calc(var(--drift) * .4)) rotate(180deg) scale(1.2);opacity:1}to{transform:translateY(300px) translate(var(--drift)) rotate(720deg) scale(.4);opacity:0}}#music-btn{position:fixed;top:20px;right:20px;z-index:2000;background:#ffffffd9;backdrop-filter:blur(10px);border:2px solid var(--rose);color:var(--rose);font-family:Lora,serif;font-size:.9rem;padding:8px 18px;border-radius:50px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .3s ease}#music-btn:hover{background:var(--rose);color:#fff}#music-btn.playing{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #d6338466}50%{box-shadow:0 0 0 10px #d6338400}}#landing{position:fixed;inset:0;z-index:900;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--cream) 0%,var(--pink-light) 50%,var(--purple-light) 100%);transition:opacity .7s ease,transform .7s ease}#landing.landing-exit{opacity:0;transform:scale(1.05);pointer-events:none}.landing-card{background:#ffffffd9;backdrop-filter:blur(16px);border-radius:var(--radius);padding:48px 40px;text-align:center;max-width:440px;width:90%;box-shadow:0 20px 60px #a91d5a1f}.cake-emoji{font-size:4rem;animation:bounce 1.5s ease-in-out infinite;margin-bottom:16px}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}.landing-card h1{font-family:Playfair Display,serif;font-size:clamp(1.6rem,5vw,2.2rem);color:var(--rose-deep);margin-bottom:8px}.landing-date{color:var(--gold);font-weight:600;font-size:1rem;margin-bottom:28px}.password-row,.lock-input-row{display:flex;gap:8px;justify-content:center;margin-bottom:8px}.password-input{font-family:Lora,serif;font-size:1rem;padding:10px 20px;border:2px solid var(--rose);border-radius:50px;outline:none;background:#ffffffe6;color:var(--text);width:220px;transition:border-color .3s,box-shadow .3s}.password-input:focus{border-color:var(--rose-deep);box-shadow:0 0 0 3px #d6338426}.password-btn{font-size:1.4rem;padding:8px 16px;border:2px solid var(--rose);border-radius:50px;background:var(--rose);color:#fff;cursor:pointer;transition:background .3s,transform .2s}.password-btn:hover{background:var(--rose-deep);transform:scale(1.05)}.password-hint{font-size:.85rem;color:#888;margin-top:4px;font-style:italic}.password-error{font-size:.85rem;color:#e74c3c;min-height:1.2em;margin-top:4px}.shake{animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}#agenda{display:none;max-width:700px;margin:0 auto;padding:60px 20px 100px}#agenda.visible{display:block;animation:fadeInUp .8s ease forwards}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.agenda-header{text-align:center;margin-bottom:48px}.agenda-header h2{font-family:Playfair Display,serif;font-size:clamp(1.5rem,5vw,2rem);color:var(--rose-deep);margin-bottom:8px}.agenda-header p{color:#888;font-size:1rem}.agenda-card{position:relative;background:#ffffffd9;backdrop-filter:blur(12px);border-radius:20px;padding:0;margin-bottom:28px;box-shadow:0 8px 32px #a91d5a14;overflow:hidden;transition:box-shadow .3s ease}.agenda-card:hover{box-shadow:0 12px 40px #a91d5a24}.agenda-card-inner{padding:32px 28px;transition:filter .8s ease}.agenda-card:not(.unlocked) .agenda-card-inner{filter:blur(8px);user-select:none}.agenda-card.unlocking .agenda-card-inner{filter:blur(0)}.agenda-card.unlocked .agenda-card-inner{filter:none}.card-number{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--rose);color:#fff;font-family:Playfair Display,serif;font-weight:700;font-size:1rem;border-radius:50%;margin-bottom:12px}.card-time{font-size:.9rem;color:var(--gold);font-weight:600;margin-bottom:8px}.card-emoji{font-size:2.8rem;margin-bottom:10px}.card-title{font-family:Playfair Display,serif;font-size:clamp(1.2rem,3.5vw,1.5rem);color:var(--rose-deep);margin-bottom:8px}.card-desc{font-size:1rem;color:#555;line-height:1.6}.card-details{margin-top:12px;padding-left:20px;color:#666;font-size:.95rem;line-height:1.7}.lock-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff9;backdrop-filter:blur(2px);border-radius:20px;z-index:10;transition:opacity .8s ease}.lock-overlay.fade-out{opacity:0;pointer-events:none}.lock-icon{font-size:2.4rem;margin-bottom:12px}.lock-hint{font-size:.85rem;color:#888;font-style:italic;margin-bottom:14px}.letter-content{margin-top:20px;padding-top:16px;border-top:1px solid rgba(214,51,132,.15)}.letter-content .typewriter-line{font-size:1rem;line-height:1.8;color:var(--text);min-height:1.8em;margin-bottom:10px}.letter-sign{font-style:italic;color:var(--rose-deep);margin-top:20px}.letter-signature{display:block;width:160px;margin-top:8px;opacity:0;transition:opacity .8s ease}.letter-signature.visible{opacity:1}.word-fade{opacity:0;display:inline;animation:wordFadeIn .5s ease forwards}@keyframes wordFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.agenda-card.reveal{opacity:0;transform:translateY(25px);transition:opacity .6s ease,transform .6s ease}.agenda-card.reveal.in-view{opacity:1;transform:translateY(0)}@media(max-width:480px){.landing-card{padding:36px 24px}.password-input{width:170px;font-size:.9rem;padding:8px 16px}.agenda-card-inner{padding:24px 20px}.card-emoji{font-size:2.2rem}#agenda{padding:40px 16px 80px}}
