/* Ten distinct, bounded arcade scenes. No flashing white frame or page transform. */
.reward-variant-art { position:absolute; inset:0; z-index:2; overflow:hidden; pointer-events:none; isolation:isolate; }
.reward-variant-art i { position:absolute; display:block; font-style:normal; box-sizing:border-box; }
.reward-variant-art > i { will-change:transform,opacity; }
[data-reward-variant] .game-impact-camera,[data-reward-variant] .tfx-camera { animation:reward-power-kick .38s .65s var(--reward-waves) both; }
[data-reward-variant] .game-impact-stage { position:absolute; inset:auto 40px calc(45px + env(safe-area-inset-bottom)); width:auto; z-index:4; gap:3px; }
[data-reward-variant] .game-impact-icon,[data-reward-variant] .tfx-emblem { display:none; }
[data-reward-variant] .game-impact-kicker { font-size:9px; letter-spacing:.07em; }
[data-reward-variant] .game-impact-mission { margin:8px 0 0; font-size:16px; }
[data-reward-variant] .game-hit-label { font-size:min(125px,17vh,calc(110vw / var(--points-digits))); animation-delay:1s; }
[data-reward-variant] .game-xp-label { font-size:clamp(12px,3.3vw,17px); margin:6px 0; animation-delay:1.05s; }
[data-reward-variant] .game-impact-progress-label { margin-top:4px; }
[data-reward-variant] .game-impact-progress { height:10px; margin-top:3px; }
[data-reward-variant] .tfx-content { inset:auto 40px calc(110px + env(safe-area-inset-bottom)); padding:0; gap:5px; z-index:4; }
[data-reward-variant] .tfx-title { font-size:min(140px,18vh,30vw); animation-delay:1s; }
[data-reward-variant] .tfx-subtitle { font-size:clamp(17px,4vw,25px); }
[data-reward-variant] .tfx-detail { font-size:12px; }
[data-reward-variant] .tfx-kicker { font-size:9px; }
[data-reward-variant] .tfx-stamp { font-size:13px; }
[data-reward-variant] .tfx-grid,[data-reward-variant] .tfx-beams,[data-reward-variant] .tfx-speed,[data-reward-variant] .tfx-glow,[data-reward-variant] .tfx-slash { display:none; }
.reward-variant-skip { position:absolute; z-index:9; right:max(16px,env(safe-area-inset-right)); top:calc(12px + env(safe-area-inset-top)); min-height:44px; padding:8px 15px; border:1px solid #fff7; border-radius:30px; background:#102d29df; color:#fff8df; font:inherit; font-size:13px; cursor:pointer; touch-action:manipulation; }
.reward-variant-skip:focus-visible { outline:3px solid #f9d66d; outline-offset:3px; }
.rv-comet,.rv-portal-flare { left:50%; top:34%; width:160px; height:160px; margin:-80px; display:grid!important; place-items:center; font-size:clamp(90px,25vw,145px); line-height:1; filter:drop-shadow(0 9px 0 #092420); }
.rv-glass-bit,.rv-pinball-spark,.rv-orbit-star { left:50%; top:36%; width:12px; height:18px; color:var(--c); }
.rv-comet { color:#f9d66d; font-size:160px; text-shadow:0 0 40px #e9b857; animation:rv-star-strike 1.3s both; }
.rv-crack { left:50%; top:36%; width:65vmax; height:3px; background:#ecfffccc; box-shadow:0 0 9px #79c3ef; transform-origin:left; transform:rotate(var(--a)); animation:rv-fracture 1.2s .62s both; }
.rv-crack::after { content:""; position:absolute; left:30%; top:0; width:30%; height:2px; background:#e4fffeb0; transform:rotate(36deg); transform-origin:left; }
.rv-glass-pane { inset:0; background:linear-gradient(125deg,#a2efff35,#f6ffea04 45%,#fff9); animation:rv-pane-break 1.6s .62s both; }
.rv-glass-bit { background:linear-gradient(35deg,#79c3ef55,#effffc); clip-path:polygon(0 0,100% 35%,25% 100%); animation:rv-radial 1.05s var(--delay) both; }
[data-reward-variant="fireworks"] .game-impact-camera,[data-reward-variant="fireworks"] .tfx-camera { animation-delay:.85s; animation-duration:.34s; }
.rv-firework { left:var(--x); top:var(--y); width:0; height:0; color:var(--c); }
.rv-firework-trail { height:70px; width:4px; border-radius:8px; background:linear-gradient(var(--c),transparent); box-shadow:0 0 10px var(--c); animation:rv-firework-rise .6s var(--delay) both; }
.rv-firework-ring { left:-40px; top:-40px; width:80px; height:80px; border:4px solid var(--c); border-radius:50%; animation:rv-firework-ring .85s calc(var(--delay) + .55s) both; }
.rv-firework-ray { font-size:22px; text-shadow:0 0 8px var(--c); animation:rv-firework-ray 1s calc(var(--delay) + .55s) both; }
.rv-pinball-rail { inset:12% 10% 43%; border:3px dashed #f9d66d55; border-radius:30%; transform:rotate(-8deg); }
.rv-bumper { left:50%; top:32%; width:60px; height:60px; margin:-30px; border:5px solid #fff2c9; border-radius:50%; background:var(--c); color:#24473f; font-size:32px; text-align:center; line-height:50px; box-shadow:0 7px 0 #102d29,0 0 22px var(--c); transform:translate(var(--bx),var(--by)); animation:rv-bumper .5s var(--delay) both; }
.rv-ball { left:50%; top:32%; width:48px; height:48px; margin:-24px; border:3px solid #fff8df; border-radius:50%; background:radial-gradient(circle at 30% 25%,white,#79c3ef 55%,#315a70); font-size:25px; text-align:center; line-height:43px; box-shadow:0 0 25px #f9d66d; animation:rv-pinball 2s linear both; }
.rv-pinball-spark { font-size:22px; animation:rv-radial .9s var(--delay) both; }
.rv-vortex-ring { left:50%; top:34%; width:var(--size); height:var(--size); margin:calc(var(--size) / -2); border:6px solid var(--c); border-left-color:transparent; border-right-color:#fff4; border-radius:50%; animation:rv-vortex 2.3s var(--delay) both; }
.rv-black-hole { left:50%; top:34%; width:100px; height:100px; margin:-50px; border-radius:50%; background:#071210; box-shadow:0 0 30px #79c3ef,0 0 65px #a2efbe55; animation:rv-hole 2s both; }
.rv-orbit-star { font-size:23px; animation:rv-spiral 2.4s both; }
.rv-portal-flare { color:#f9d66d; font-size:200px; animation:rv-portal-flare 1s 1.45s both; }

@keyframes rv-radial { 0% { opacity:0; transform:translate(0,0) scale(.2); } 12% { opacity:1; } 100% { opacity:0; transform:translate(var(--dx),var(--dy)) rotate(var(--turn)) scale(.35); } }
@keyframes rv-star-strike { 0% { opacity:0; transform:translate(90vw,-65vh) rotate(-120deg) scale(.3); } 45% { opacity:1; transform:scale(calc(var(--v-scale) * 1.2)) rotate(15deg); } 60% { opacity:1; transform:scale(.8) rotate(-12deg); } 100% { opacity:0; transform:scale(.1) rotate(70deg); } }
@keyframes rv-fracture { 0% { opacity:0; } 10%,70% { opacity:1; } 100% { opacity:0; } }
@keyframes rv-pane-break { 0% { opacity:0; transform:none; } 8%,34% { opacity:1; transform:none; } 100% { opacity:0; transform:translate(var(--dx),var(--dy)) rotate(calc(var(--turn) / 6)); } }
@keyframes rv-firework-rise { from { opacity:0; transform:translateY(65vh) scaleY(2); } 20% { opacity:1; } to { opacity:0; transform:translateY(0) scaleY(.1); } }
@keyframes rv-firework-ring { from { opacity:.9; transform:scale(.1); } to { opacity:0; transform:scale(calc(var(--v-scale) * 3)); } }
@keyframes rv-firework-ray { 0% { opacity:0; transform:rotate(var(--a)) translateX(0) scale(.1); } 12% { opacity:1; } 100% { opacity:0; transform:rotate(var(--a)) translateX(var(--radius)) scale(.5); } }
@keyframes rv-bumper { 0%,100% { transform:translate(var(--bx),var(--by)) scale(1); } 25% { transform:translate(var(--bx),var(--by)) scale(calc(var(--v-scale) * 1.15)); } }
@keyframes rv-pinball { 0% { opacity:0; transform:translate(0,40vh) scale(.3); } 17% { opacity:1; transform:translate(-28vw,-10vh) scale(var(--v-scale)); } 32% { transform:translate(28vw,8vh) scale(var(--v-scale)); } 47% { transform:translate(-22vw,16vh) scale(var(--v-scale)); } 62% { transform:translate(25vw,-14vh) scale(var(--v-scale)); } 80% { opacity:1; transform:translate(0,0) scale(1.4); } 100% { opacity:0; transform:scale(4); } }
@keyframes rv-vortex { 0% { opacity:0; transform:rotate(var(--turn)) scale(.1); } 20% { opacity:.85; } 63% { opacity:.7; transform:rotate(calc(var(--turn) + 330deg)) scale(var(--v-scale)); } 78% { opacity:1; transform:rotate(calc(var(--turn) + 450deg)) scale(.05); } 100% { opacity:0; transform:rotate(calc(var(--turn) + 500deg)) scale(3); } }
@keyframes rv-hole { 0% { opacity:0; transform:scale(.1); } 30%,60% { opacity:1; transform:scale(var(--v-scale)); } 100% { opacity:0; transform:scale(.05); } }
@keyframes rv-spiral { 0% { opacity:0; transform:translate(var(--dx),var(--dy)) rotate(-150deg) scale(1.3); } 15% { opacity:1; } 65% { opacity:.8; transform:translate(0,0) rotate(220deg) scale(.1); } 76% { opacity:1; transform:translate(0,0) scale(.2); } 100% { opacity:0; transform:translate(calc(var(--dx) * 1.2),calc(var(--dy) * 1.2)) rotate(var(--turn)) scale(1.1); } }
@keyframes rv-portal-flare { from { opacity:0; transform:scale(.01) rotate(-30deg); } 30% { opacity:1; transform:scale(var(--v-scale)) rotate(40deg); } to { opacity:0; transform:scale(2) rotate(80deg); } }
/* Six combat-arcade scenes: anticipation -> hit-stop -> expanding impact -> debris.
   Only this overscanned camera moves. No strobe, audio, page transform or persistent loop. */
.game-impact-camera[data-arcade],.tfx-camera[data-arcade] { animation:rv-arcade-kick .72s var(--rv-hit) both; }
.game-impact-camera[data-arcade] .game-impact-stage,.tfx-camera[data-arcade] .tfx-content { text-shadow:0 3px 0 #061512,0 0 18px #061512; background:radial-gradient(ellipse,#061512c9,transparent 72%); }
.rv-combat-field { inset:0; background:radial-gradient(ellipse at 50% 36%,#173c38 0,#081c1c 48%,#040d10 100%); animation:rv-arena-wake 2.65s both; }
.rv-combat-field::after { content:""; position:absolute; inset:0; opacity:.18; background:repeating-conic-gradient(from 15deg at 50% 36%,transparent 0 18deg,#79c3ef66 19deg 20deg,transparent 21deg 45deg); }
.rv-impact-halo { left:50%; top:36%; width:110vmin; height:110vmin; margin:-55vmin; border-radius:50%; background:radial-gradient(circle,#fff1a8 0 3%,var(--rv-accent) 5% 12%,transparent 40%); animation:rv-impact-halo .95s var(--rv-hit) both; }
.rv-shock-front { left:50%; top:36%; width:100vmin; height:100vmin; margin:-50vmin; border:7px solid var(--rv-accent); border-radius:50%; box-shadow:0 0 0 15px #a2efbe15,inset 0 0 0 4px #fff3; animation:rv-shock-front 1.05s var(--delay) cubic-bezier(.05,.55,.1,1) both; }
.rv-blast-spike { left:50%; top:36%; width:95vmax; height:5vmin; transform-origin:left center; background:linear-gradient(90deg,var(--rv-accent),transparent 80%); clip-path:polygon(0 48%,100% 0,75% 100%); animation:rv-blast-spike .68s var(--delay) both; }
.rv-shrapnel { left:50%; top:36%; width:var(--size); height:calc(var(--size) * 1.8); background:linear-gradient(135deg,#fff6,var(--c) 35%,#102d29 85%); clip-path:polygon(10% 0,85% 8%,100% 63%,50% 100%,0 66%); animation:rv-shrapnel 1.45s var(--delay) cubic-bezier(.08,.55,.18,1) both; }

/* Meteor: diagonal strike, molten crater and angular ground fractures. */
.rv-meteor-flight { left:50%; top:36%; width:140px; height:140px; margin:-70px; z-index:3; animation:rv-meteor-strike .88s cubic-bezier(.65,.02,1,.65) both; }
.rv-meteor-rock { inset:0; clip-path:polygon(29% 0,76% 8%,100% 42%,88% 84%,44% 100%,9% 75%,0 34%); background:radial-gradient(circle at 65% 65%,#fff5ac,#f9d66d 12%,#e97161 35%,#863c29 63%,#102d29 80%); box-shadow:inset 10px 12px 0 #f9d66d; transform:scale(var(--v-scale)); }
.rv-meteor-tail { right:40%; bottom:35%; width:min(110vw,660px); height:130px; transform:rotate(45deg); transform-origin:right center; background:linear-gradient(90deg,transparent,#e9716140 20%,#e97161 65%,#fff5ac); clip-path:polygon(0 25%,72% 0,100% 38%,100% 75%,70% 100%,0 75%,56% 48%); }
.rv-impact-crater { left:50%; top:36%; width:min(85vw,540px); height:125px; border:14px double #f9d66d; border-radius:50%; background:radial-gradient(ellipse,#061512 35%,#e97161 65%,#f9d66d 70%,transparent); box-shadow:0 0 35px #e9716166; animation:rv-crater 1.8s var(--rv-hit) both; }
.rv-ground-fissure { left:50%; top:36%; width:70vmax; height:18px; background:#f6ac55; clip-path:polygon(0 38%,22% 38%,33% 0,57% 63%,76% 42%,100% 50%,75% 69%,58% 90%,33% 33%,22% 64%,0 70%); transform-origin:left center; animation:rv-ground-break 1.6s var(--rv-hit) both; }

/* Hyperspace: angular craft, ignition, accelerating tunnel and a tearing wake. */
.rv-hypercraft { left:50%; top:31%; width:90px; height:165px; margin:-82px -45px; z-index:4; animation:rv-hyper-launch 1.9s both; }
.rv-craft-hull { inset:0; background:linear-gradient(90deg,#183b42 0 20%,#79c3ef 22%,#e1ffe5 50%,#79c3ef 66%,#183b42 69%); clip-path:polygon(50% 0,80% 45%,88% 88%,64% 100%,36% 100%,12% 88%,20% 45%); }
.rv-craft-canopy { left:35%; top:32%; width:30%; height:31%; clip-path:polygon(50% 0,100% 75%,70% 100%,30% 100%,0 75%); background:linear-gradient(#fff5ac,#f9d66d 15%,#102d29 65%); }
.rv-craft-wings { left:-75%; top:42%; width:250%; height:62%; clip-path:polygon(50% 0,100% 82%,100% 100%,57% 77%,50% 94%,43% 77%,0 100%,0 82%); background:linear-gradient(90deg,#e97161,#f9d66d 48%,#e97161 52%,#9d4847); }
.rv-engine-plume { left:20%; top:86%; width:60%; height:45vh; max-height:370px; transform-origin:top; background:linear-gradient(#fff8c1,#79e8e1 15%,#79c3ef80 58%,transparent); clip-path:polygon(10% 0,90% 0,70% 75%,50% 100%,30% 75%); animation:rv-engine-ignite 1.5s both; }
.rv-warp-gate { left:50%; top:32%; width:65vmin; height:65vmin; margin:-32.5vmin; border:5px solid #79e8e1; border-right-color:#79e8e130; border-left-color:#79e8e130; clip-path:polygon(30% 0,70% 0,100% 30%,100% 70%,70% 100%,30% 100%,0 70%,0 30%); background:linear-gradient(45deg,transparent 48%,#79e8e111 50%,transparent 52%); animation:rv-warp-gate 1.3s var(--delay) cubic-bezier(.7,0,.3,1) both; }
.rv-hyper-streak { left:50%; top:32%; width:60vmax; height:3px; background:linear-gradient(90deg,transparent,var(--c)); transform-origin:left center; animation:rv-hyper-streak .75s var(--delay) 2 both; }
.rv-warp-scar { left:50%; top:0; width:18px; height:100%; margin-left:-9px; background:linear-gradient(transparent,#a2efbe 20%,#fff2b8 33%,#79c3ef 65%,transparent); box-shadow:0 0 30px #79e8e1; animation:rv-warp-scar 1.15s .98s both; }

/* Reactor: rotating armor contracts, exposes a core, then ejects in six directions. */
.rv-reactor-device { left:50%; top:36%; width:190px; height:190px; margin:-95px; transform:scale(var(--v-scale)); }
.rv-reactor-core { left:25%; top:25%; width:50%; height:50%; border:5px solid #d8ffe3; border-radius:50%; background:radial-gradient(circle,#fff7bf,#a2efbe 28%,#236556 65%,#071a19); box-shadow:0 0 35px #a2efbe99; animation:rv-core-collapse 1.75s both; }
.rv-reactor-armor { left:50%; top:50%; width:70px; height:45px; margin-top:-22px; background:linear-gradient(#a2efbe 0 12%,#194c43 15% 63%,#79c3ef 66% 72%,#102d29 74%); clip-path:polygon(18% 0,85% 0,100% 50%,85% 100%,18% 100%,0 50%); transform-origin:left center; animation:rv-armor-eject 2.1s both; }
.rv-reactor-ring { inset:-20%; border:4px dashed #a2efbe; border-radius:50%; animation:rv-reactor-spin 1.85s var(--delay) both; }
.rv-reactor-column { left:50%; top:0; width:60vmin; height:100%; margin-left:-30vmin; background:linear-gradient(90deg,transparent,#a2efbe50 30%,#f9d66d 49%,#fff7cf 50%,#a2efbe50 70%,transparent); animation:rv-reactor-column 1.45s var(--rv-hit) both; }

/* Titan lightning: full-height branched channels, no emoji or little cloud. */
.rv-storm-ceiling { left:-10%; top:0; width:120%; height:27%; background:radial-gradient(ellipse at 50% 0,#79c3ef88,#071a19 60%,transparent 73%); animation:rv-storm-charge 2.5s both; }
.rv-titan-bolt { left:var(--x); top:var(--y); width:62%; height:64%; transform-origin:top center; background:linear-gradient(90deg,var(--c) 20%,#fff8c1 47% 57%,var(--c) 65%); animation:rv-titan-strike 1.6s var(--delay) both; }
.rv-ion-scar { left:50%; top:38%; width:min(68vw,400px); height:100px; border:9px double #79c3ef; border-radius:50%; box-shadow:0 0 40px #79c3ef66; animation:rv-crater 1.8s var(--rv-hit) both; }
.rv-ground-arc { left:50%; top:38%; width:60vmax; height:36px; background:linear-gradient(90deg,#f9d66d,#79c3ef 55%,transparent); clip-path:polygon(0 40%,23% 0,30% 45%,60% 15%,55% 60%,100% 50%,60% 85%,66% 47%,29% 85%,22% 40%,0 65%); transform-origin:left center; animation:rv-ground-break 1.2s var(--delay) both; }

/* Plasma: incoming charges collapse, then chain-detonate with angular fragments. */
.rv-plasma-charge { left:var(--x); top:var(--y); width:100px; height:100px; margin:-50px; animation:rv-plasma-arrive .55s var(--delay) cubic-bezier(.1,.7,.2,1) both; }
.rv-plasma-core { inset:8%; border:4px solid #e6ffe8; border-radius:50%; background:radial-gradient(circle,#fff5b5 0 7%,var(--c) 15%,#153e3c 58%,#071a19 73%); box-shadow:0 0 25px var(--c),inset 0 0 15px var(--c); animation:rv-plasma-collapse .9s var(--delay) both; }
.rv-plasma-cage { inset:-6%; border:5px solid var(--c); border-left-color:transparent; border-right-color:transparent; border-radius:50%; animation:rv-plasma-cage .92s var(--delay) both; }
.rv-plasma-wave { inset:-5%; border:7px double var(--c); border-radius:50%; background:radial-gradient(circle,var(--c),transparent 67%); animation:rv-plasma-detonate .95s calc(var(--delay) + .76s) both; }
.rv-plasma-fragment { left:50%; top:50%; width:12px; height:46px; background:linear-gradient(#fff4ba,var(--c) 35%,transparent); clip-path:polygon(50% 0,100% 30%,60% 100%,0 35%); animation:rv-plasma-fragment 1.05s calc(var(--delay) + .76s) cubic-bezier(.1,.6,.15,1) both; }

/* Orbital strike: targeting lock, sustained energy beam and split armor plates. */
.rv-target-lock { left:50%; top:36%; width:64vmin; height:64vmin; margin:-32vmin; border:7px dashed #e97161; border-radius:50%; box-shadow:0 0 0 9px #e9716122; animation:rv-target-lock 1.15s both; }
.rv-target-axis { left:50%; top:36%; width:100vmax; height:2px; margin-left:-50vmax; background:linear-gradient(90deg,transparent,#e97161,transparent); animation:rv-target-axis 1s both; }
.rv-target-axis::after { content:""; position:absolute; left:50%; top:-50vmax; width:2px; height:100vmax; background:inherit; }
.rv-orbital-beam { left:50%; top:0; width:25vmin; height:78%; margin-left:-12.5vmin; transform-origin:top center; background:linear-gradient(90deg,transparent,#e97161 15%,#f9d66d 35%,#fff4b8 46% 54%,#f9d66d 65%,#e97161 85%,transparent); animation:rv-orbital-fire 1.45s var(--rv-hit) both; }
.rv-orbital-cut { left:0; top:36%; width:100%; height:24px; background:linear-gradient(transparent,#e97161,#fff4b8,#e97161,transparent); animation:rv-orbital-cut 1.3s var(--rv-hit) both; }
.rv-blast-door { left:50%; top:36%; width:45vw; height:45vh; margin:-22.5vh -22.5vw; background:linear-gradient(135deg,#79c3ef33,#102d29); border:3px solid #e97161; clip-path:polygon(0 0,100% 5%,78% 27%,96% 42%,65% 63%,84% 84%,50% 100%,0 100%); animation:rv-door-break 1.5s var(--rv-hit) both; }

@keyframes rv-arcade-kick { 0% { transform:scale(1.025); } 8% { transform:translate(calc(var(--reward-shake) * -1),var(--reward-shake)) scale(1.025); } 17% { transform:translate(var(--reward-shake),calc(var(--reward-shake) * -.65)) scale(1.02); } 29% { transform:translate(calc(var(--reward-shake) * -.65),calc(var(--reward-shake) * -.2)); } 43% { transform:translate(calc(var(--reward-shake) * .4),calc(var(--reward-shake) * .25)); } 61% { transform:translate(calc(var(--reward-shake) * -.18),0); } 100% { transform:none; } }
@keyframes rv-arena-wake { 0% { opacity:0; } 12%,78% { opacity:1; } 100% { opacity:0; } }
@keyframes rv-impact-halo { 0% { opacity:0; transform:scale(.05); } 8% { opacity:.9; transform:scale(.7); } 27% { opacity:.65; transform:scale(calc(var(--v-scale) * 1.4)); } 100% { opacity:0; transform:scale(2.6); } }
@keyframes rv-shock-front { 0% { opacity:0; transform:scale(.03); } 8% { opacity:.95; } 100% { opacity:0; transform:scale(calc(var(--v-scale) * 2.6)); } }
@keyframes rv-blast-spike { 0% { opacity:0; transform:rotate(var(--a)) scaleX(.01); } 12% { opacity:.7; transform:rotate(var(--a)) scaleX(1); } 100% { opacity:0; transform:rotate(var(--a)) scaleX(1.3) scaleY(.2); } }
@keyframes rv-shrapnel { 0% { opacity:0; transform:scale(.1); } 7% { opacity:1; } 75% { opacity:1; transform:translate(var(--dx),var(--dy)) rotate(var(--turn)) scale(.8); } 100% { opacity:0; transform:translate(calc(var(--dx) * 1.25),calc(var(--dy) * 1.25 + 70px)) rotate(calc(var(--turn) * 1.5)) scale(.3); } }
@keyframes rv-meteor-strike { 0% { opacity:0; transform:translate(-80vw,-60vh) scale(.3); } 20% { opacity:1; } 77%,84% { opacity:1; transform:translate(0,0) scale(1); } 100% { opacity:0; transform:scale(1.8,.3); } }
@keyframes rv-crater { 0% { opacity:0; transform:translate(-50%,-50%) scale(.1); } 10% { opacity:1; transform:translate(-50%,-50%) scale(1.15); } 35%,65% { opacity:1; transform:translate(-50%,-50%) scale(1); } 100% { opacity:0; transform:translate(-50%,-50%) scale(1.4); } }
@keyframes rv-ground-break { 0% { opacity:0; transform:rotate(var(--a)) scaleX(0); } 12%,55% { opacity:1; transform:rotate(var(--a)) scaleX(1); } 100% { opacity:0; transform:rotate(var(--a)) scaleX(1.2); } }
@keyframes rv-hyper-launch { 0% { opacity:0; transform:translateY(15vh) scale(.3); } 18%,40% { opacity:1; transform:scale(var(--v-scale)); } 47%,50% { opacity:1; transform:translateY(6px) scale(calc(var(--v-scale) * 1.1)); } 68% { opacity:1; transform:translateY(-7vh) scale(.25); } 78%,100% { opacity:0; transform:translateY(-12vh) scale(.02); } }
@keyframes rv-engine-ignite { 0%,22% { opacity:0; transform:scale(.1); } 38% { opacity:.8; transform:scale(.5,.3); } 59%,68% { opacity:1; transform:scale(1.3,1.1); } 100% { opacity:0; transform:scale(.3,1.6); } }
@keyframes rv-warp-gate { 0% { opacity:0; transform:rotate(var(--turn)) scale(.02); } 30% { opacity:.8; } 100% { opacity:0; transform:rotate(var(--turn)) scale(4); } }
@keyframes rv-hyper-streak { 0% { opacity:0; transform:rotate(var(--a)) translateX(6vmin) scaleX(.01); } 22% { opacity:.85; } 100% { opacity:0; transform:rotate(var(--a)) translateX(65vmax) scaleX(1.8); } }
@keyframes rv-warp-scar { 0% { opacity:0; transform:scaleX(.1); } 16% { opacity:.9; transform:scaleX(2); } 100% { opacity:0; transform:scaleX(.1); } }
@keyframes rv-core-collapse { 0% { opacity:0; transform:scale(.1); } 20% { opacity:1; transform:scale(1); } 48% { opacity:1; transform:scale(1.3); } 53%,56% { opacity:1; transform:scale(.15); } 63% { opacity:1; transform:scale(3.8); } 100% { opacity:0; transform:scale(5); } }
@keyframes rv-armor-eject { 0% { opacity:0; transform:rotate(var(--a)) translateX(190px); } 18%,38% { opacity:1; transform:rotate(var(--a)) translateX(55px); } 44% { opacity:1; transform:rotate(var(--a)) translateX(33px); } 49% { opacity:1; transform:rotate(var(--a)) translateX(33px); } 100% { opacity:0; transform:rotate(var(--a)) translateX(85vmax) rotate(100deg); } }
@keyframes rv-reactor-spin { 0% { opacity:0; transform:rotate(var(--turn)) scale(1.6); } 20% { opacity:.7; } 47% { opacity:1; transform:rotate(calc(var(--turn) + 190deg)) scale(.6); } 58%,100% { opacity:0; transform:rotate(calc(var(--turn) + 270deg)) scale(2.5); } }
@keyframes rv-reactor-column { 0% { opacity:0; transform:scaleX(.02); } 10% { opacity:.8; transform:scaleX(1.3); } 37% { opacity:.65; transform:scaleX(.65); } 100% { opacity:0; transform:scaleX(.05); } }
@keyframes rv-storm-charge { 0% { opacity:0; transform:scaleX(.4); } 20%,65% { opacity:1; transform:scaleX(1); } 100% { opacity:0; transform:scaleX(1.3); } }
@keyframes rv-titan-strike { 0% { opacity:0; transform:scaleY(.01); } 4% { opacity:1; transform:scaleY(1); } 9%,15% { opacity:1; transform:scaleY(1); } 42% { opacity:1; transform:scaleX(1.12); } 70% { opacity:.8; transform:scaleX(.8); } 100% { opacity:0; transform:scaleX(.15); } }
@keyframes rv-plasma-arrive { from { transform:translate(var(--bx),var(--by)) scale(.3); } to { transform:translate(0,0) scale(var(--v-scale)); } }
@keyframes rv-plasma-collapse { 0% { opacity:0; transform:scale(.2); } 35%,68% { opacity:1; transform:scale(1); } 80% { opacity:1; transform:scale(.4); } 89% { opacity:1; transform:scale(1.6); } 100% { opacity:0; transform:scale(2); } }
@keyframes rv-plasma-cage { 0% { opacity:0; transform:rotate(-90deg) scale(1.4); } 30%,65% { opacity:1; } 85% { opacity:1; transform:rotate(170deg) scale(.5); } 100% { opacity:0; transform:rotate(210deg) scale(2.5); } }
@keyframes rv-plasma-detonate { 0% { opacity:0; transform:scale(.1); } 12% { opacity:1; transform:scale(1.5); } 100% { opacity:0; transform:scale(calc(var(--v-scale) * 5)); } }
@keyframes rv-plasma-fragment { 0% { opacity:0; transform:rotate(var(--a)) translateY(0) scale(.2); } 8% { opacity:1; } 100% { opacity:0; transform:rotate(var(--a)) translateY(var(--radius)) scale(.35); } }
@keyframes rv-target-lock { 0% { opacity:0; transform:scale(2) rotate(-80deg); } 45% { opacity:1; transform:scale(1.1) rotate(20deg); } 68%,77% { opacity:1; transform:scale(.7) rotate(0); } 100% { opacity:0; transform:scale(.7); } }
@keyframes rv-target-axis { 0% { opacity:0; transform:rotate(-50deg); } 65%,82% { opacity:.7; transform:rotate(0); } 100% { opacity:0; } }
@keyframes rv-orbital-fire { 0% { opacity:0; transform:scale(.1,.01); } 6% { opacity:1; transform:scale(.25,1); } 13%,27% { opacity:1; transform:scale(calc(var(--v-scale) * 1.25),1); } 60% { opacity:.85; transform:scale(.7,1); } 100% { opacity:0; transform:scale(.02,1); } }
@keyframes rv-orbital-cut { 0% { opacity:0; transform:scaleX(.01); } 10%,25% { opacity:1; transform:scaleX(1); } 100% { opacity:0; transform:scaleY(.1); } }
@keyframes rv-door-break { 0% { opacity:0; transform:scaleX(var(--side)); } 6% { opacity:.8; transform:scaleX(var(--side)); } 100% { opacity:0; transform:translate(calc(var(--side) * 70vw),18vh) rotate(calc(var(--side) * 35deg)) scaleX(var(--side)); } }
.effect-preview { margin:16px 0; border:1px solid #79a18b; border-radius:18px; background:#eef5df; color:#173f38; padding:4px 16px 12px; text-align:left; }
.effect-preview summary { min-height:44px; padding:12px 0; cursor:pointer; font-weight:700; }
.effect-preview label { display:grid; gap:8px; font-size:14px; }
.effect-preview select,.effect-preview button { width:100%; min-height:48px; padding:12px; border:2px solid #173f38; border-radius:12px; font:inherit; font-size:16px; color:#173f38; background:#fff8df; }
.effect-preview button { margin-top:12px; background:#f9d66d; font-weight:700; cursor:pointer; touch-action:manipulation; }
.effect-preview p { margin:10px 0 0; font-size:13px; }
@media(max-height:620px) {
  [data-reward-variant] .game-impact-stage { inset:auto 35px 34px; gap:0; }
  [data-reward-variant] .game-impact-kicker,[data-reward-variant] .game-impact-progress,[data-reward-variant] .game-impact-progress-label,[data-reward-variant] .tfx-kicker { display:none; }
  [data-reward-variant] .game-impact-mission { font-size:12px; }
  [data-reward-variant] .game-hit-label { font-size:15vh; }
  [data-reward-variant] .tfx-content { bottom:94px; gap:2px; }
  [data-reward-variant] .tfx-title { font-size:15vh; }
  [data-reward-variant] .tfx-stamp,[data-reward-variant] .tfx-detail { font-size:10px; }
}
@media(prefers-reduced-motion:reduce) { .reward-variant-art { display:none!important; } [data-reward-variant] *,[data-reward-variant]::before { animation:none!important; } }
.parent-simple-mode .reward-variant-art,.calm .reward-variant-art { display:none!important; }
