Your feedback is so detailed that I’ll need to go through my design doc to fully process everything.
And thanks for pointing out the infinite stacking damage issue! Actually, each card object is used as a key, with its value storing the damage and duration. What I should have done is assign a new key to the card after it gets shuffled, instead of keeping its pre-shuffle key. That way, it wouldn’t keep refreshing the duration and stacking infinitely.
By the way, do you feel the long shuffle wait time is unnecessary? Some players have complained about it.