The last frame and first frame of an animation will depend on the animation-direction property. CSS considers this based on the play order i.e. what frames are played first or last. So if you run the animation normally the first frame will be 0% and the last frame 100%. If you run the same animation in reverse, the first frame would be 100% and the last frame 0%. If you alternate it, wherever the animation starts is the first frame and wherever it finishes is the last (thus, in the case of alternate, it will also depend on the animation-iteration-count).