/* A gift, a living lily garden, a heart of light, and a blooming birthday tree. */
.gift-reveal{padding:25px 0 35px}.gift-button{width:170px;height:190px;display:block;margin:0 auto 20px;border:0;background:transparent;position:relative;animation:gift-float 3s ease-in-out infinite;filter:drop-shadow(0 16px 15px #9d667e25)}.gift-box{position:absolute;left:20px;right:20px;top:76px;height:105px;background:linear-gradient(120deg,#d295b2,#ae6d8e);border-radius:3px 3px 9px 9px}.gift-box:after{content:'';position:absolute;left:54px;top:0;width:23px;height:100%;background:#f6dce7}.gift-lid{position:absolute;z-index:2;left:12px;right:12px;top:57px;height:31px;background:#cd8fae;border-radius:5px;box-shadow:0 5px 8px #6941581f;transform-origin:0 50%}.gift-lid:after{content:'';position:absolute;left:62px;top:0;width:23px;height:100%;background:#fbe3ee}.gift-bow{position:absolute;top:-53px;left:33px;font:75px Georgia;color:#b67594;line-height:1}.gift-heart{position:absolute;z-index:3;top:113px;left:72px;color:white;font:28px Georgia}.gift-invitation{font:italic 25px 'Bodoni Moda',Georgia,serif;color:var(--red)}.gift-reveal.is-opening .gift-button{animation:none}.gift-reveal.is-opening .gift-lid{animation:gift-open .85s ease forwards}.gift-reveal.is-opening .gift-heart{animation:gift-heart 1s ease forwards}.gift-gallery{animation:arrive .9s ease both;overflow:hidden;padding:10px 0}.gallery-dedication{font:italic 23px 'Bodoni Moda',Georgia,serif;color:var(--red)}.gift-gallery .memory-grid{position:relative;display:block;height:440px;max-width:780px;margin:35px auto 0;perspective:1200px;transform-style:preserve-3d}.gift-gallery .memory-card{position:absolute;left:50%;top:0;width:280px;min-height:405px;margin-left:-140px;transform:translateX(calc(var(--card-offset)*78%)) scale(var(--card-scale)) rotateY(calc(var(--card-offset)*-22deg));transition:transform .7s cubic-bezier(.2,.7,.2,1),opacity .7s;opacity:var(--card-opacity);z-index:var(--card-z)}.gift-gallery .memory-inner{min-height:405px}.gift-gallery .memory-photo{height:315px}.gift-gallery .memory-front .memory-photo img{height:100%}.gallery-controls{display:flex;justify-content:center;align-items:center;gap:25px}.gallery-controls button{background:#f7edf2;border:1px solid #d7bccb;border-radius:50%;width:43px;height:43px;color:var(--red);font-size:19px}.gallery-controls button:hover{background:#e9d4df}.gallery-controls span{font-size:11px;letter-spacing:3px;color:var(--muted)}.gallery-tip{font-size:10px;line-height:1.8;color:var(--muted);margin:18px 0}.birthday-tree{width:220px;position:absolute;right:1%;bottom:35px;pointer-events:none}.birthday-tree svg{width:100%;display:block}.birthday-tree p{font:italic 16px/1.5 'Bodoni Moda',Georgia,serif;color:var(--red);margin:-10px 0 0}.birthday-hero .hero-lily{display:none}.tree-branches path{stroke-dasharray:550;stroke-dashoffset:550;animation:tree-grow 2.7s .5s ease forwards}.tree-leaf{fill:var(--leaf-color);opacity:0;transform-box:fill-box;transform-origin:center;animation:leaf-bloom .7s var(--leaf-delay) ease forwards}.flower-garden{background:linear-gradient(#faf6f3,#eee7ef)}.garden-stage{height:380px!important;max-width:900px;cursor:crosshair;overflow:hidden;border:1px solid #e1d2e0;border-radius:180px 180px 12px 12px;background:radial-gradient(ellipse at 50% 100%,#273e3b,#172934 55%,#14202e);isolation:isolate}.garden-stage:after{content:'';position:absolute;bottom:0;left:0;right:0;height:75px;background:linear-gradient(transparent,#7ea08322);pointer-events:none;z-index:15}.garden-touch-hint{position:absolute;left:15px;right:15px;top:40px;font:italic 21px 'Bodoni Moda',Georgia,serif;color:#e4d2e3;pointer-events:none;z-index:20}.garden-stars{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,#e6dbe7aa 1px,transparent 1.5px),radial-gradient(circle,#f6e7f577 1px,transparent 1.5px);background-size:81px 97px,117px 131px;background-position:20px 15px,45px 50px}.garden-flower{pointer-events:none;filter:drop-shadow(0 0 9px #ebc7ea44);animation:lily-bloom 1.8s cubic-bezier(.16,1,.3,1) both}.garden-flower svg{animation:lily-sway 5s 1.8s ease-in-out infinite alternate;transform-origin:50% 100%}.cosmic-love{position:relative;overflow:hidden;text-align:center;padding:70px 20px 50px;background:radial-gradient(ellipse at 50% 55%,#092c43,#070e1b 67%);color:#e7f3ff}.cosmic-love .eyebrow{color:#8bcae6}.cosmic-love h2{font-size:clamp(38px,6vw,59px);margin:16px 0;color:#e2f2ff}.cosmic-love>p{font-size:12px;color:#96b8cf;line-height:1.8}.particle-stage{height:440px;position:relative;width:min(100%,700px);margin:0 auto}.particle-stage canvas{width:100%;height:100%;display:block;touch-action:pan-y}.particle-name{position:absolute;left:0;right:0;top:42%;font:italic 48px 'Bodoni Moda',Georgia,serif;color:#d8f3ff;text-shadow:0 0 22px #45ccff;pointer-events:none}.particle-pool{position:absolute;width:220px;height:15px;left:50%;bottom:36px;transform:translateX(-50%);border-radius:50%;background:#32bfff6b;box-shadow:0 0 25px #2bc9ff88,0 0 60px #1476d955;filter:blur(6px);pointer-events:none}.cosmic-button{background:#17384b88;border:1px solid #4383a4;border-radius:30px;padding:14px 28px;color:#c6e7f9;font-size:12px}.cosmic-button:hover{background:#25546d}.cosmic-love .cosmic-note{min-height:24px;font:italic 19px 'Bodoni Moda',Georgia,serif;margin:20px 0 0}@keyframes gift-float{50%{transform:translateY(-9px) rotate(2deg)}}@keyframes gift-open{to{transform:translate(-25px,-95px) rotate(-25deg);opacity:0}}@keyframes gift-heart{to{transform:translateY(-120px) scale(2.5);opacity:0}}@keyframes tree-grow{to{stroke-dashoffset:0}}@keyframes leaf-bloom{from{opacity:0;transform:scale(.1)}to{opacity:.9;transform:scale(1)}}@keyframes lily-sway{to{transform:rotate(4deg)}}@media(max-width:1000px){.birthday-tree{position:relative;right:auto;bottom:auto;width:210px;margin:0 auto 20px;order:0}.birthday-hero{padding-top:65px}.birthday-hero .birthday-name{font-size:clamp(100px,23vw,160px)}.birthday-tree p{font-size:15px}}@media(max-width:600px){.gift-gallery .memory-card{width:245px;margin-left:-122.5px;transform:translateX(calc(var(--card-offset)*84%)) scale(var(--card-scale)) rotateY(calc(var(--card-offset)*-25deg))}.gift-gallery .memory-grid{height:420px}.gift-gallery .memory-photo{height:290px}.gift-gallery .memory-inner,.gift-gallery .memory-card{min-height:380px}.particle-stage{height:360px}.particle-pool{width:155px;bottom:30px}.particle-name{font-size:38px}.garden-stage{height:340px!important;border-radius:130px 130px 10px 10px}.garden-touch-hint{font-size:18px;top:30px}}@media(prefers-reduced-motion:reduce){.tree-branches path{stroke-dashoffset:0}.tree-leaf{opacity:.9}.gift-button,.garden-flower svg{animation:none}}
