Anything I try causes the mutation observer callback recursion problem. @briankimisms suggests using CSS transitions instead ...