.gift-stage {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    margin: clamp(1rem, 4vw, 3rem) auto;
    padding: clamp(1.25rem, 4vw, 3.5rem);
    border: 1px solid #dbc1a1;
    border-radius: 1rem;
    text-align: center;
    color: #421921;
    background: radial-gradient(ellipse at 50% 55%, #fffdf8, #f3e4ce);
    box-shadow: var(--ec-shadow-card);
}
.gift-stage h1 { font-family: "Fraunces", Georgia, serif; font-size: clamp(2rem, 5vw, 3.8rem); margin: .25em 0; }
.gift-back { display: block; text-align: start; color: #661c29; }
.gift-stage .ec-primary-button { display: inline-flex; }
.gift-scene { height: 245px; position: relative; display: grid; place-items: center; perspective: 500px; }
.gift-box {
    position: relative;
    top: 20px;
    width: 160px;
    height: 111px;
    border-radius: 4px 4px 12px 12px;
    background: linear-gradient(90deg, transparent 40%, #d79c45 40%, #ffe3a4 50%, #b77c32 60%, transparent 60%), linear-gradient(140deg, #a93448, #520f22);
    box-shadow: inset -10px -8px 12px #36091677, 0 18px 25px #64253148;
}
.gift-lid {
    position: absolute;
    left: -6%;
    top: -16px;
    width: 112%;
    height: 34px;
    border-radius: 7px;
    background: linear-gradient(90deg, #8d2238 41%, #e6ad58 41%, #ffe6a7 50%, #bd873d 59%, #7c182d 59%);
    box-shadow: 0 6px 8px #2c040955;
}
.gift-lid::before, .gift-lid::after {
    content: '';
    position: absolute;
    top: -26px;
    left: 50%;
    width: 38px;
    height: 26px;
    border: 6px solid #d9a147;
    border-radius: 55% 65% 0 65%;
    transform-origin: bottom left;
    transform: rotate(-22deg);
}
.gift-lid::after { transform: scaleX(-1) rotate(-22deg); }
.gift-sparkles { position: absolute; color: #a86718; font-size: 2rem; letter-spacing: .28em; opacity: 0; }
.gift-sparkles i, .gift-sparkles b { position: relative; top: -42px; color: #90273c; }
.gift-stage[data-opening] .gift-box { animation: gift-rustle .42s ease-in-out infinite; }
.gift-stage[data-opened] .gift-lid { transform: translate3d(32px,-88px,0) rotate(21deg); animation: gift-lift .75s cubic-bezier(.17,.75,.33,1.16) both; }
.gift-stage[data-opened] .gift-sparkles { animation: gift-burst .9s .12s ease-out both; }
.gift-prize { font: 700 clamp(1.8rem, 6vw, 3rem)/1.12 "Fraunces", Georgia, serif; color: #7e2035; margin: .4rem 0; }
.gift-terms { color: #634b47; font-size: .85rem; margin: 1.25rem auto 0; }
@keyframes gift-rustle { 25% { transform: rotate(-5deg); } 75% { transform: rotate(5deg); } }
@keyframes gift-lift { from { transform: none; } }
@keyframes gift-burst {
    from { transform: translateY(30px) scale(.35); opacity: 0; }
    45% { opacity: 1; }
    to { transform: translateY(-65px) scale(1.1); opacity: .85; }
}
@media (prefers-reduced-motion: reduce) {
    .gift-stage[data-opening] .gift-box, .gift-stage[data-opened] .gift-lid, .gift-stage[data-opened] .gift-sparkles { animation: none; }
}
