.gift-scene{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 0;gap:1rem}.gift-wrap{position:relative;width:80px;height:80px}.box-lid{left:0;width:80px;background:#D85A30;border-radius:4px;transform-origin:center bottom;animation:lid-bounce 1.6s ease-in-out infinite}.box-lid,.box-lid:after{position:absolute;top:0;height:24px}.box-lid:after{content:"";left:50%;transform:translateX(-50%);width:10px;background:#FAC775}.bow-left{left:16px;border-radius:50% 0 50% 0;transform-origin:right bottom;animation:bow-l 1.6s ease-in-out infinite}.bow-left,.bow-right{position:absolute;top:-10px;width:18px;height:14px;background:#FAC775}.bow-right{right:16px;border-radius:0 50% 0 50%;transform-origin:left bottom;animation:bow-r 1.6s ease-in-out infinite}.box-body{bottom:0;left:0;width:80px;background:#E24B4A;border-radius:0 0 6px 6px}.box-body,.box-body:after{position:absolute;height:56px}.box-body:after{content:"";top:0;left:50%;transform:translateX(-50%);width:10px;background:#F0997B}.sparkle{position:absolute;width:6px;height:6px;border-radius:50%;background:#FAC775;opacity:0}.s1{top:-18px;left:10px;--tx:-8px;animation:spark 1.6s ease-out .4s infinite}.s2{top:-22px;left:38px;--tx:4px;animation:spark 1.6s ease-out .5s infinite}.s3{top:-16px;right:12px;--tx:10px;animation:spark 1.6s ease-out .6s infinite}.s4{top:-12px;left:24px;--tx:-4px;animation:spark 1.6s ease-out .55s infinite}@keyframes lid-bounce{0%,30%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-18px) rotate(-8deg)}65%{transform:translateY(-14px) rotate(5deg)}80%,to{transform:translateY(0) rotate(0deg)}}@keyframes bow-l{0%,30%{transform:rotate(0deg)}50%{transform:rotate(-25deg) translateY(-4px)}80%,to{transform:rotate(0deg)}}@keyframes bow-r{0%,30%{transform:rotate(0deg)}50%{transform:rotate(25deg) translateY(-4px)}80%,to{transform:rotate(0deg)}}@keyframes spark{0%{opacity:0;transform:translate(0) scale(1)}20%{opacity:1}60%{opacity:.6;transform:translate(var(--tx),-16px) scale(.6)}to{opacity:0;transform:translate(var(--tx),-24px) scale(.2)}}.dots{display:flex;gap:6px}.dot{width:6px;height:6px;border-radius:50%;background:#D85A30;animation:dot-pulse 1.6s ease-in-out infinite}.dot:nth-child(2){animation-delay:.2s;background:#E24B4A}.dot:nth-child(3){animation-delay:.4s;background:#FAC775}@keyframes dot-pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.label{font-size:13px;color:#888;letter-spacing:.04em}