/* Readable sequence: charge a complete row, sweep it away, let fragments fall. */
.row-charge{left:0;right:0;top:calc(var(--row)*12.5%);height:12.5%;border:2px solid #ffe9a0;border-radius:5px;box-shadow:inset 0 0 16px #f9d68744,0 0 9px #f9d68755;background:linear-gradient(90deg,#f8db8220,#fff0ad3b,#f8db8220);animation:row-charge .3s ease-out both}
.block.row-ready .tile{filter:brightness(1.2) saturate(1.08);border-color:#fff0b7;box-shadow:inset 1px 2px 1px #fff8,inset -1px -2px 1px #0002,0 0 12px #ffe39e70}
.block.clearing{animation:cell-dissolve .29s cubic-bezier(.25,.1,.3,1) var(--clear-delay,0ms) both}
.clear-beam{background:linear-gradient(90deg,transparent,#ffe8a966,#fff4d5d9,transparent);box-shadow:none;transform-origin:left center;animation:row-sweep .4s ease-out both}
.clear-spark{width:5px;height:5px;margin:-2.5px;border-radius:2px;background:var(--color);box-shadow:0 0 6px var(--color);animation:clear-spark .48s ease-out both}
.clear-reward{top:24%;left:12%;right:12%;display:flex;flex-direction:column;gap:2px;padding:13px 10px;border:1px solid #e9c36b40;background:radial-gradient(ellipse,#332337f2,#241728df 65%,#24172888);box-shadow:0 6px 24px #100b164d;animation:reward-rise .95s ease-out both}
.reward-label{font-size:clamp(10px,1.4vw,15px);font-weight:bold;letter-spacing:1.8px;color:#e9cb8e}.clear-reward strong{font-size:clamp(24px,4vw,40px);line-height:1.1;letter-spacing:0;color:#fff0bb;text-shadow:0 2px 6px #140a18,0 0 20px #ffd77b55}
.cascade-reward{border-color:#b5e9b885;background:radial-gradient(ellipse,#284239f2,#24312ee8 70%);box-shadow:0 0 24px #8bd9ba2e}.cascade-reward .reward-label{color:#bcebd3}.cascade-reward strong{color:#d9ffe8;text-shadow:0 2px 6px #102418,0 0 20px #9cdbb455}
.board.cascade-active{box-shadow:inset 0 0 0 2px #a6e7c375,inset 0 0 26px #83dcc122,0 0 0 2px #e0a66c27}
.block.settle-impact .tile{transform-origin:center bottom;animation:settle-impact .17s ease-out}
@keyframes row-charge{from{opacity:.25}to{opacity:1}}
@keyframes cell-dissolve{0%{opacity:1;transform:scale(1);filter:brightness(1.3)}35%{opacity:1;transform:scale(1.06);filter:brightness(1.6)}100%{opacity:0;transform:scale(.25);filter:brightness(1)}}
@keyframes row-sweep{0%{opacity:0;transform:translateX(-70%) scaleX(.35)}30%{opacity:.8}100%{opacity:0;transform:translateX(85%) scaleX(.65)}}
@keyframes clear-spark{0%{opacity:0;transform:translate(0,0) scale(.8)}15%{opacity:.9}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.25)}}
@keyframes reward-rise{0%{opacity:0;transform:translateY(12px) scale(.85)}20%{opacity:1;transform:translateY(0) scale(1.03)}30%,72%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-12px) scale(.98)}}
@keyframes settle-impact{0%{transform:scale(1)}35%{transform:scale(1.045,.92)}75%{transform:scale(.99,1.03)}100%{transform:scale(1)}}
@media(max-width:760px){.clear-reward{top:21%;padding:10px 5px;left:10%;right:10%}.reward-label{font-size:10px;letter-spacing:1.2px}.clear-reward strong{font-size:28px}.clear-spark{width:4px;height:4px}}
@media(prefers-reduced-motion:reduce){.block.clearing{animation-duration:1ms;animation-delay:0ms}.block.settle-impact .tile{animation:none}.clear-beam,.clear-spark{display:none}.clear-reward{animation:reduced-reward .2s linear both}.row-charge{animation-duration:1ms}@keyframes reduced-reward{0%,85%{opacity:1}100%{opacity:0}}}
