 Animation Demo | frame=0000 | RUNNING

  update() advances state; mark_dirty() triggers render()

  Spinner:  ⠋ tick() each update

  Progress: ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   0%

  Counter:  0


 space: pause/resume | r: reset | q: quit
