Calculate actual time since last frame (dt) for tick instead of theoretical time. This keeps animations proceeding in real time even when the frame rate is lagging.
Oops, colors.hls_to_rgb wasn't actually working.