Fixes #3869: empty legacy three-dot thinking spinners no longer pile up as stale rows after the agent finishes thinking. Root cause: the live-to-final redesign (#3401) made the thinking-card-row wrapper class unconditional, which broke finalizeThinkingCard()'s dots-only detection. Narrowed the content check to the actual .thinking-card element so dots-only spinners are removed on finalize while real Worklog Thinking Cards are preserved. Absorbed from contributor PR #3876 (@franksong2702).