@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@500;600;700&family=DM+Sans:wght@400;600;700&family=Playfair+Display:wght@600;700&display=swap');:root{--bg:#fff7f2;--ink:#2d1d22;--pink:#d83b55;--muted:#765d63;--line:#e8c8c4;--serif:'Playfair Display',serif;--hand:'Caveat',cursive;--sans:'DM Sans',sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 10% 0,#ffe8e5,transparent 28%),radial-gradient(circle at 90% 30%,#f9d7e1,transparent 24%),var(--bg);color:var(--ink);font-family:var(--sans)}a{text-decoration:none;color:inherit}.hearts{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:50}.hearts i{position:absolute;top:-10%;color:#ec5c77;animation:fall 6s linear forwards}.hero{min-height:100vh;padding:8rem 6vw 5rem;display:grid;place-items:center;background:linear-gradient(145deg,#fffaf7,#ffe8e4 55%,#f7ced8);position:relative;overflow:hidden}.webline{position:absolute;top:1rem;width:100%;text-align:center;font-size:4rem;letter-spacing:1rem;opacity:.15;color:var(--pink)}.hero-grid{width:min(1180px,100%);display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}.sticker{display:inline-block;background:#fff;border:2px solid #291c20;padding:.5rem 1rem;border-radius:999px;box-shadow:4px 5px 0 #291c20;font:600 1.1rem var(--hand);transform:rotate(-3deg)}.eyebrow{letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;color:var(--muted);margin:1.5rem 0 1rem}.hero h1,.title{font:700 clamp(4rem,10vw,8rem)/.88 var(--serif);margin:1rem 0}.hero h1 em,.title em{font-family:var(--hand);color:var(--pink);font-style:normal}.copy{font-size:1.2rem;line-height:1.7;color:#664d55}.cta,.next{display:inline-flex;margin-top:1rem;padding:.9rem 1.3rem;border-radius:999px;background:var(--pink);color:#fff;box-shadow:0 7px 0 #982a3f;font-weight:800}.hero-art{display:flex;justify-content:center;min-height:520px;align-items:center}.hero-art svg{width:min(430px,90%);filter:drop-shadow(0 30px 30px #48182333);animation:float 5s ease-in-out infinite}.note{width:min(720px,calc(100% - 32px));margin:4rem auto;padding:4rem 2rem;background:#fffdfb;border:1px solid var(--line);box-shadow:0 24px 60px #582b3426;transform:rotate(-1deg);text-align:center}.note p{font:1.5rem/1.6 var(--hand)}.note .hand{font-size:2rem;color:var(--pink)}.section,.sub{width:min(1100px,100%);margin:auto;padding:6rem 6vw}.section h2{font:700 clamp(2.6rem,6vw,5rem)/.95 var(--serif)}.unlock{max-width:700px;margin:auto;padding:3rem 2rem;text-align:center;background:#ffffffb8;border:1px solid var(--line);border-radius:32px;box-shadow:0 16px 38px #582b3424}.orb{width:100px;height:100px;margin:auto;display:grid;place-items:center;border-radius:50%;background:#fff0f2;font-size:3rem;animation:bob 2.8s ease-in-out infinite}.footer{text-align:center;padding:4rem 2rem;border-top:1px solid var(--line);color:var(--muted)}.footer strong{font:2rem var(--hand);color:var(--pink)}.sub{min-height:100vh;padding-top:8rem;text-align:center}.envelope{width:min(650px,100%);min-height:260px;border:0;border-radius:30px;background:linear-gradient(145deg,#fff,#ffe2df);box-shadow:25px 25px 50px #582b3429;cursor:pointer}.envelope span{display:block;font-size:5rem}.letter{max-width:760px;margin:2rem auto;padding:3rem;text-align:left;background:#fffaf0;border:1px dashed #d9b0ad;border-radius:28px;line-height:1.9}.letter .hand{font:2rem var(--hand);color:var(--pink)}.hidden{display:none}.memory-stage{max-width:650px;margin:auto;padding:1rem;background:#fff;box-shadow:0 24px 60px #582b3429}.memory-stage img{width:100%;max-height:650px;object-fit:contain}.caption{font:1.8rem var(--hand);padding:1rem}.thumbs,.album-dots{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin:1.5rem auto}.thumb,.dot{padding:4px;border-radius:16px;background:#fff;border:1px solid var(--line);cursor:pointer}.thumb img{width:72px;height:72px;object-fit:cover;border-radius:12px}.thumb.active{box-shadow:0 0 0 3px var(--pink)}.progress,.music-intro,.music-note{color:var(--muted)}.album-stage{display:grid;grid-template-columns:120px minmax(280px,400px) 120px;align-items:center;gap:1rem;max-width:780px;margin:2rem auto}.album-side{border:0;background:#ffffffb8;padding:.5rem;border-radius:24px;cursor:pointer}.album-side img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:18px}.album-main{padding:1rem;background:#ffffffc9;border:1px solid var(--line);border-radius:30px;box-shadow:0 28px 70px #582b342e}.album-cover img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:24px}.album-meta{text-align:left;padding:1rem .4rem}.album-meta span{font-size:.65rem;letter-spacing:.16em;color:var(--pink);font-weight:800}.album-meta h2{font:700 1.6rem var(--serif);margin:.3rem 0}.album-meta p{margin:0;color:var(--muted)}.player{margin-top:.7rem;border-radius:20px;overflow:hidden;background:#171115}.player iframe{width:100%;height:220px;border:0;display:block}.yt{display:block;margin-top:.8rem;background:#2d1d22;color:#fff;padding:.9rem;border-radius:999px}.audio-note{display:block;color:var(--muted);font-size:.72rem;margin:.6rem}.dot{display:flex;align-items:center;gap:.45rem;border-radius:999px;padding:.35rem .7rem .35rem .35rem}.dot img{width:34px;height:34px;border-radius:50%;object-fit:cover}.dot.active{border-color:var(--pink);box-shadow:0 0 0 3px #d83b551f;color:var(--pink);font-weight:700}.final{text-align:center}.kitty{font-size:8rem;animation:cat 3.5s ease-in-out infinite}.dog{font-size:6rem;animation:bob 2.5s ease-in-out infinite}.secret{max-width:650px;margin:2rem auto;padding:2rem;background:#fff;border:1px dashed #d9a6ac;border-radius:24px;font:1.6rem/1.5 var(--hand);color:#8f3044}@keyframes fall{0%{transform:translateY(-10vh) rotate(0)}100%{transform:translateY(115vh) rotate(320deg);opacity:0}}@keyframes float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-18px) rotate(3deg)}}@keyframes bob{50%{transform:translateY(-8px)}}@keyframes cat{0%,100%{transform:translateX(0) rotate(-8deg)}50%{transform:translateX(20px) translateY(-25px) rotate(8deg)}}@media(max-width:760px){.hero-grid{grid-template-columns:1fr;text-align:center}.album-stage{grid-template-columns:1fr}.album-side{display:none}.player iframe{height:190px}}