:root{--blush: #f8e8ee;--rose: #e8a4b8;--rose-deep: #d27a96;--plum: #5a2a4a;--cream: #fff6f0;--gold: #c9a26b}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Quicksand,system-ui,sans-serif;color:var(--plum);background:linear-gradient(160deg,var(--cream) 0%,var(--blush) 55%,#f3d6e0 100%);background-attachment:fixed;overflow-x:hidden}.section{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 1.5rem;text-align:center}.hero h1{font-family:Cormorant Garamond,serif;font-weight:600;font-size:clamp(3rem,12vw,8rem);line-height:1;color:var(--plum);letter-spacing:.02em}.hero .script{font-style:italic;color:var(--rose-deep)}.hero p{margin-top:1.5rem;font-size:clamp(1rem,2.5vw,1.4rem);font-weight:500;color:var(--rose-deep);max-width:32rem}.scroll-cue{margin-top:3rem;font-size:.8rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);animation:bob 2s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(8px);opacity:1}}.gift h2,.memories h2,.message h2{font-family:Cormorant Garamond,serif;font-size:clamp(2rem,6vw,3.5rem);font-weight:600;margin-bottom:2rem;color:var(--plum)}.memory-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.1rem;width:100%;max-width:920px}.memory-card{aspect-ratio:3 / 4;border-radius:20px;background:linear-gradient(160deg,#fff6f0,#f8e8ee 60%,#f3d6e0);box-shadow:0 12px 28px #5a2a4a24;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}.memory-card:hover{transform:translateY(-4px);box-shadow:0 18px 36px #5a2a4a38}.memory-card img{width:100%;height:100%;object-fit:contain;object-position:bottom center;filter:drop-shadow(0 6px 10px rgba(90,42,74,.18))}.canvas-wrap{width:100%;max-width:1500px;height:70vh;min-height:480px}.canvas-wrap.tall{height:104vh;min-height:820px}.hint{margin-top:1.2rem;font-size:clamp(.8rem,2vw,1rem);letter-spacing:.15em;text-transform:lowercase;color:var(--rose-deep)}.open-card{font-family:Cormorant Garamond,serif;font-style:italic;font-size:clamp(1.4rem,3vw,2.2rem);color:var(--plum);background:#fff6f0d9;padding:.6rem 1.4rem;border:1px solid var(--gold);border-radius:999px;white-space:nowrap;box-shadow:0 10px 30px #5a2a4a2e;pointer-events:none}.basket-name{font-family:Great Vibes,cursive;font-size:46px;line-height:1;color:#fff7fb;white-space:nowrap;display:flex;align-items:center;gap:.12em;pointer-events:none;text-shadow:0 2px 8px rgba(20,40,25,.5)}.basket-name .heart{color:#e31b3d;text-shadow:0 0 10px rgba(227,27,61,.6)}.celebration{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:50}.cel-flower,.cel-confetti,.cel-photo{position:absolute;top:-12vh;will-change:transform;animation-name:cel-fall;animation-timing-function:linear;animation-iteration-count:infinite}.cel-confetti{border-radius:2px}.cel-photo{height:auto;border-radius:12px}@keyframes cel-fall{0%{transform:translateZ(0) rotate(0);opacity:0}8%{opacity:1}90%{opacity:1}to{transform:translate3d(var(--drift),115vh,0) rotate(var(--rot));opacity:0}}.message p{font-family:Cormorant Garamond,serif;font-size:clamp(1.3rem,3.5vw,2rem);line-height:1.7;max-width:40rem;color:var(--plum)}.message .line{display:block}.signature{margin-top:3rem;font-style:italic;font-size:1.1rem;color:var(--rose-deep)}.loader{display:flex;align-items:center;justify-content:center;height:100%;font-family:Cormorant Garamond,serif;font-style:italic;color:var(--rose-deep)}.music-btn{position:fixed;bottom:1.4rem;right:1.4rem;z-index:10;font-family:Quicksand,sans-serif;font-size:.8rem;font-weight:600;letter-spacing:.08em;color:var(--plum);background:#fff6f0cc;border:1px solid var(--gold);border-radius:999px;padding:.55rem 1.1rem;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 6px 20px #5a2a4a26;transition:background .2s,transform .2s}.music-btn:hover{background:var(--blush);transform:translateY(-1px)}@media (max-width: 640px){.section{padding:3rem 1rem}.canvas-wrap,.canvas-wrap.tall{height:72vh;min-height:460px}.memory-grid{grid-template-columns:repeat(2,1fr);gap:.7rem}.basket-name{font-size:34px}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.scroll-cue{animation:none}.celebration{display:none}}
