1d5266a811
Every move fired StateChangedEvent -> sync_cards, which rebuilt the full visual for all 52 cards: despawning and respawning every child entity (drop-shadow, border frame, and on Android a Text2d corner label needing a glyph re-layout) even for the ~50 cards that did not move. That ~250 entity despawn/spawns plus 52 text re-layouts in a single frame spiked the StateChangedEvent frame and stuttered the slide animation on high-resolution devices (reported on a Galaxy Fold 7). Add a CardChildrenKey component capturing the only inputs the child entities depend on (face_up, card_size, color_blind, high_contrast). update_card_entity now rebuilds children only when that key changes (a flip, resize/fold, or accessibility toggle); a position-only move just updates the Transform. The Sprite is still refreshed every sync (a cheap handle swap), so theme/card-back image changes need no child rebuild. Adds a regression test asserting an appearance-neutral StateChangedEvent no longer despawns/respawns card label children. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>