/* Pastel sticker bursts live in the top layer and never intercept game input. */
.stepper>div>.stepper-firework{display:inline-flex;align-items:center;justify-content:center;width:32px;height:36px;flex:none;line-height:1}
.stepper-firework>svg{display:block;width:100%;height:100%;filter:drop-shadow(0 2px 1px #a34f7430)}
.fx-burst{position:fixed;inset:auto;margin:0;padding:0;width:0;height:0;border:0;overflow:visible;background:transparent;pointer-events:none!important;z-index:2147483000;color:#e8b85c;font-family:"Microsoft YaHei",sans-serif}
.fx-burst *,.fx-burst::backdrop{pointer-events:none!important}
.fx-burst::backdrop{background:transparent}
.fx-ring{position:absolute;left:-16px;top:-16px;width:32px;height:32px;border:2px solid #f2cf83;border-radius:50%;box-shadow:0 0 0 4px #fff9e896;animation:fx-ring .45s ease-out both}
.fx-gem .fx-ring{border-color:#8ed6b6}.fx-firework .fx-ring{border-color:#edb2ca;border-style:dashed}
.fx-particle{position:absolute;left:-8px;top:-10px;line-height:1;font-weight:900;text-shadow:1px 1px 0 #fff,-1px -1px 0 #fff,0 2px 3px #a2897133;animation:fx-scatter .7s cubic-bezier(.12,.65,.25,1) var(--delay) both;will-change:transform,opacity}
.fx-petal{width:8px;height:13px;margin:5px;border-radius:80% 0 80% 60%;background:currentColor;box-shadow:inset 1px 1px 0 #ffffff8c,0 0 0 1px #ffffffe0}
.fx-badge{position:absolute;left:0;top:-20px;transform:translate(-50%,-100%);white-space:nowrap;padding:7px 12px;border:2px solid #fffdf0;border-radius:15px 15px 15px 4px;background:#e8f8e8;color:#529779;font-size:14px;font-weight:800;letter-spacing:.5px;box-shadow:0 3px 0 #7eae8a40,0 5px 13px #788b6830;animation:fx-sticker 1.1s ease-out both}
.fx-badge:before{content:'✦';margin-right:5px;color:#d1ac51}.fx-firework .fx-badge{background:#ffe5ee;color:#b77699;transform:translate(-50%,-100%) rotate(-5deg)}.fx-cash .fx-badge{background:#fff5ce;color:#ad883c}
.fx-coin{position:absolute;left:-10px;top:-10px;width:21px;height:21px;border:2px solid #fff2ba;border-radius:50%;background:linear-gradient(135deg,#ffeaa1,#eac15e);box-shadow:0 2px 0 #ba914a;color:#b98d34;text-align:center;font-size:14px;line-height:17px;font-weight:900;animation:fx-collect .72s cubic-bezier(.4,0,.6,1) var(--delay) both;will-change:transform,opacity}
@keyframes fx-ring{from{transform:scale(.4);opacity:.9}to{transform:scale(2.6);opacity:0}}
@keyframes fx-scatter{0%{transform:translate(0,0) scale(.2);opacity:0}15%{opacity:1}65%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.4);opacity:0}}
@keyframes fx-sticker{0%{opacity:0;translate:0 12px;scale:.65}18%{opacity:1;translate:0 -5px;scale:1.08}30%,65%{opacity:1;translate:0 0;scale:1}100%{opacity:0;translate:0 -22px;scale:.95}}
@keyframes fx-collect{0%{transform:translate(0,0) scale(.5);opacity:0}12%{opacity:1}35%{transform:translate(var(--sway),-36px) scale(1);opacity:1}90%{opacity:1}100%{transform:translate(var(--coin-x),var(--coin-y)) scale(.45);opacity:0}}
@media(prefers-reduced-motion:reduce){.fx-badge{animation:fx-soft-fade .4s linear both}.fx-particle,.fx-ring,.fx-coin{display:none}@keyframes fx-soft-fade{0%,65%{opacity:1}100%{opacity:0}}}
.firework-scene{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;margin:0;padding:0;overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#665c9055,#243d6059);pointer-events:auto;color:#fff;z-index:2147483600}
.firework-scene::backdrop{background:transparent}.firework-glow{position:absolute;left:50%;top:42%;width:300px;height:300px;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff5ab66,transparent 65%);animation:firework-halo 1.8s ease-out both}
.firework-rocket{position:absolute;left:50%;top:42%;width:100px;height:100px;margin:-50px;animation:firework-launch .65s cubic-bezier(.2,.7,.3,1) both}.firework-rocket svg{width:100%;height:100%;filter:drop-shadow(0 0 15px #ffe9a4)}.firework-rocket>span{position:absolute;width:13px;height:65px;background:linear-gradient(#fff6a4,#ff93b000);border-radius:60%;left:40%;top:80%;transform:rotate(18deg);filter:blur(3px)}
.firework-flower{position:absolute;left:50%;top:42%;width:0;height:0}.firework-flower>span{position:absolute;left:-10px;top:-10px;width:20px;text-align:center;font-size:26px;font-weight:900;color:var(--petal-color);text-shadow:0 0 8px currentColor;animation:firework-petal 1.15s .5s cubic-bezier(.12,.7,.3,1) both}
.firework-flower.flower-1{left:28%;top:27%}.firework-flower.flower-2{left:73%;top:31%}.flower-1>span{animation-delay:.72s}.flower-2>span{animation-delay:.83s}
.firework-caption{position:absolute;top:66%;left:12px;right:12px;text-align:center;font-size:clamp(23px,4vw,38px);font-weight:900;letter-spacing:2px;color:#fff7dc;text-shadow:0 3px 0 #93517b,0 0 20px #de81ae;animation:firework-caption-in .4s .4s both}.firework-caption small{display:block;font-size:13px;letter-spacing:2px;margin-top:15px;color:#fff4b3}
@keyframes firework-launch{0%{transform:translate(var(--launch-x),var(--launch-y)) scale(.45);opacity:0}20%{opacity:1}80%{opacity:1}100%{transform:translate(0,-20px) scale(.85);opacity:0}}
@keyframes firework-petal{0%{transform:translate(0,0) scale(.1);opacity:0}8%{opacity:1}65%{opacity:1}100%{transform:translate(var(--px),calc(var(--py) + 35px)) rotate(var(--twist)) scale(.35);opacity:0}}
@keyframes firework-halo{0%,20%{opacity:0;scale:.2}45%{opacity:1}100%{opacity:0;scale:1.7}}
@keyframes firework-caption-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.firework-rocket{display:none}.firework-glow{opacity:1}.firework-flower>span{transform:translate(var(--px),var(--py));opacity:1;text-shadow:none}.firework-caption{opacity:1}.firework-scene{background:#405575d9}}
.firework-flower:before{content:'';position:absolute;inset:-18px;border:3px solid #fff1ab;border-radius:50%;box-shadow:0 0 20px #ffd466;animation:firework-ring .9s .5s ease-out both}.flower-1:before{animation-delay:.72s}.flower-2:before{animation-delay:.83s}.firework-flower>span{font-size:32px;text-shadow:0 0 5px currentColor,0 0 15px currentColor}
@keyframes firework-ring{0%{transform:scale(.1);opacity:0}15%{opacity:1}100%{transform:scale(7);opacity:0}}
@media(prefers-reduced-motion:reduce){.firework-flower:before{display:none}.firework-flower>span{text-shadow:none}}
