.receipt-success{text-align:center;padding:8px 0 12px;color:var(--receipt-accent,#123f2d)}
.receipt-success h2{margin:12px 0;font-size:30px;line-height:1.15;letter-spacing:-.025em}
.receipt-success p{color:var(--receipt-accent,#123f2d);line-height:1.5}
.receipt-success .receipt-business{font-weight:600;margin-top:24px}
.receipt-success .stamps{margin:16px auto;max-width:360px}
.receipt-success .btn{margin-top:20px;background:var(--receipt-accent,#123f2d);color:#fffdf8}
.stamp-scene{position:relative;height:230px;width:min(100%,320px);margin:0 auto;color:var(--receipt-accent,#123f2d)}
.stamp-paper{position:absolute;inset:96px 18px 12px;background:#e7eddc;border-radius:18px;display:grid;place-items:center;transform:rotate(-4deg)}
.stamp-imprint{width:86px;height:86px;border:3px solid currentColor;border-radius:50%;display:grid;place-items:center;transform:rotate(-9deg);animation:receipt-ink 720ms cubic-bezier(.23,1,.32,1) both}
.stamp-imprint svg{width:49px;height:49px}.stamp-imprint img{width:76px;height:76px;object-fit:contain}
.stamp-tool{position:absolute;width:140px;height:150px;left:calc(50% - 70px);top:0;transform-origin:50% 100%;animation:receipt-press 850ms cubic-bezier(.77,0,.175,1) both}
@keyframes receipt-press{0%{transform:translate(18px,-28px) rotate(12deg);opacity:0}18%{opacity:1}45%{transform:translate(0,48px) rotate(-4deg);opacity:1}55%{transform:translate(0,51px) rotate(-4deg);opacity:1}100%{transform:translate(18px,-30px) rotate(10deg);opacity:0}}
@keyframes receipt-ink{0%,49%{opacity:0;transform:rotate(-9deg) scale(1.08)}60%{opacity:1;transform:rotate(-9deg) scale(.97)}100%{opacity:1;transform:rotate(-9deg) scale(1)}}
@media(prefers-reduced-motion:reduce){.stamp-tool{animation:none;opacity:0}.stamp-imprint{animation:none;opacity:1}}
.scan-outcome{text-align:center;padding:16px 0 8px;color:#123f2d}
.scan-outcome h2{font-size:28px;line-height:1.2;margin:16px 0}
.scan-outcome p{line-height:1.5;overflow-wrap:anywhere}
.scan-outcome .outcome-note{font-size:15px;color:#576357}
.scan-outcome .btn{margin-top:12px}.scan-outcome .btn:active{transform:scale(.97)}
.outcome-close{display:block;margin:22px auto 4px;min-height:44px}
.outcome-art{height:170px;display:grid;place-items:center}
.outcome-art svg{width:136px;height:136px;stroke:currentColor;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.outcome-rejected{color:#a93232}.outcome-error{color:#123f2d}
.outcome-ring{opacity:.2}
.outcome-mark{animation:scan-mark-appear 260ms cubic-bezier(.23,1,.32,1) both}
.outcome-rejected .outcome-art{animation:scan-rejected 420ms cubic-bezier(.23,1,.32,1) both}
.outcome-error .outcome-mark{transform-origin:60px 60px;animation:scan-retry-turn 540ms cubic-bezier(.23,1,.32,1) both}
@keyframes scan-rejected{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}55%{transform:translateX(6px)}78%{transform:translateX(-3px)}}
@keyframes scan-retry-turn{from{transform:rotate(-65deg);opacity:.1}to{transform:rotate(0);opacity:1}}
@keyframes scan-mark-appear{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.scan-outcome .outcome-art,.scan-outcome .outcome-mark{animation:none;transform:none;opacity:1}}
.redemption-result{text-align:center;color:var(--receipt-accent,#123f2d);padding:12px 0}.redemption-result h2{font-size:clamp(25px,7vw,32px);line-height:1.2}.redemption-result p{line-height:1.5;overflow-wrap:anywhere}.redemption-result .btn{margin-top:16px}.redemption-seal{width:160px;height:160px;margin:12px auto 24px;animation:seal-settle 360ms cubic-bezier(.23,1,.32,1) both}.redemption-seal svg{width:100%;height:100%;stroke:currentColor;stroke-width:3;stroke-linejoin:round}.redemption-seal .seal-edge{fill:#e7eddc}.redemption-seal .seal-check{stroke-width:7;stroke-linecap:round;transform-origin:80px 80px;animation:check-lock 260ms 100ms cubic-bezier(.23,1,.32,1) both}
.outcome-invalid{color:#a93232}.outcome-invalid .outcome-art{animation:scan-rejected 300ms cubic-bezier(.23,1,.32,1) both}.outcome-info .outcome-mark{transform-origin:60px 60px;animation:check-lock 260ms cubic-bezier(.23,1,.32,1) both}.scan-checking{display:grid;place-items:center;gap:12px;padding:24px;text-align:center}.scan-checking svg{width:88px;height:88px;animation:scan-mark-appear 240ms cubic-bezier(.23,1,.32,1) both}.scan-outcome .btn,.redemption-result .btn{white-space:normal;min-height:48px;height:auto;line-height:1.35;padding:14px 18px}
@keyframes seal-settle{0%{opacity:0;transform:translateY(-18px) rotate(-7deg) scale(1.06)}70%{opacity:1;transform:translateY(2px) rotate(1deg) scale(.98)}100%{opacity:1;transform:none}}@keyframes check-lock{0%{opacity:0;transform:scale(.92)}65%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.redemption-seal,.redemption-seal .seal-check,.outcome-invalid .outcome-art,.outcome-info .outcome-mark,.scan-checking svg{animation:none;transform:none;opacity:1}}

.receipt-check{width:48px;height:48px;margin:-8px auto 8px;color:var(--receipt-accent,#123f2d);animation:check-lock 260ms 760ms cubic-bezier(.23,1,.32,1) both}.receipt-check svg{width:100%;height:100%;stroke:currentColor;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}@media(prefers-reduced-motion:reduce){.receipt-check{animation:none;transform:none;opacity:1}}

.redemption-result.is-still .redemption-seal,.redemption-result.is-still .seal-check{animation:none;transform:none;opacity:1}
