¿Por qué este carrusel de reproducción automática Infinite animado css salta cuando se reinician los elementos?

Estoy trabajando para crear un carrusel de reproducción automática infinito basado en el ejemplo aquí: https://codepen.io/jackoliver/pen/qVbQqW

Observe cuán suave es el ejemplo del código de código, nunca salta cuando el carrusel se restablece del último al primer elemento.

El mío es menos suave. El mío está saltando al reiniciarse y no puedo entender por qué …

body { align-items: center; background: #E3E3E3; display: flex; height: 100vh; justify-content: center; } @keyframes scroll { 0% { transform: translateX(0); } 100% { transform: translateX(calc(-456px * 2)); } } .quotes-famous { background: white; box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.125); height: 500px; margin: auto; overflow: hidden; position: relative; width: 960px; } .quotes-famous::before, .quotes-famous::after { background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); content: ""; height: 500px; position: absolute; width: 200px; z-index: 2; } .quotes-famous::after { right: 0; top: 0; transform: rotateZ(180deg); } .quotes-famous::before { left: 0; top: 0; } .quotes-famous__track { animation: scroll 1s linear infinite; display: flex; width: calc(456px * 4); } .quotes-famous__quote { background: #efefef; height: 500px; width: 456px; } 
 

Quisque at lorem sollicitudin, elementum justo a, dictum tortor. Donec dapibus elementum augue, in imperdiet lorem posuere nec. Sed scelerisque scelerisque imperdiet.

Phasellus dictum leo enim, a dignissim erat vestibulum at. Sed vitae libero id mauris ullamcorper elementum. Praesent at accumsan ipsum. Quisque sit amet posuere mauris. Proin ac vulputate odio, quis faucibus sem. Cras nec consectetur neque.

Sed sagittis ligula ut est faucibus egestas.

Fusce convallis, risus et luctus tempus, urna orci accumsan tortor, accumsan euismod arcu lectus vitae neque. Nulla tincidunt, augue non efficitur euismod, nunc diam feugiat turpis, convallis lacinia velit enim et nisl. Sed at suscipit augue. Curabitur sed dolor metus. Nunc augue eros, aliquet sed mi ac, pulvinar fermentum mauris. Cras condimentum sapien tellus, nec efficitur odio imperdiet vitae.

El ejemplo de codepen se duplica en todas las imágenes (o citas en su caso).

 body { align-items: center; background: #E3E3E3; display: flex; height: 100vh; justify-content: center; } @keyframes scroll { 0% { transform: translateX(0); } 100% { transform: translateX(calc(-456px * 2)); } } .quotes-famous { background: white; box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.125); height: 500px; margin: auto; overflow: hidden; position: relative; width: 960px; } .quotes-famous::before, .quotes-famous::after { background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); content: ""; height: 500px; position: absolute; width: 200px; z-index: 2; } .quotes-famous::after { right: 0; top: 0; transform: rotateZ(180deg); } .quotes-famous::before { left: 0; top: 0; } .quotes-famous__track { animation: scroll 4s linear infinite; display: flex; width: calc(456px * 4); } .quotes-famous__quote { background: #efefef; height: 500px; width: 456px; } 
 

Quisque at lorem sollicitudin, elementum justo a, dictum tortor. Donec dapibus elementum augue, in imperdiet lorem posuere nec. Sed scelerisque scelerisque imperdiet.

Phasellus dictum leo enim, a dignissim erat vestibulum at. Sed vitae libero id mauris ullamcorper elementum. Praesent at accumsan ipsum. Quisque sit amet posuere mauris. Proin ac vulputate odio, quis faucibus sem. Cras nec consectetur neque.

Sed sagittis ligula ut est faucibus egestas.

Fusce convallis, risus et luctus tempus, urna orci accumsan tortor, accumsan euismod arcu lectus vitae neque. Nulla tincidunt, augue non efficitur euismod, nunc diam feugiat turpis, convallis lacinia velit enim et nisl. Sed at suscipit augue. Curabitur sed dolor metus. Nunc augue eros, aliquet sed mi ac, pulvinar fermentum mauris. Cras condimentum sapien tellus, nec efficitur odio imperdiet vitae.

Quisque at lorem sollicitudin, elementum justo a, dictum tortor. Donec dapibus elementum augue, in imperdiet lorem posuere nec. Sed scelerisque scelerisque imperdiet.

Phasellus dictum leo enim, a dignissim erat vestibulum at. Sed vitae libero id mauris ullamcorper elementum. Praesent at accumsan ipsum. Quisque sit amet posuere mauris. Proin ac vulputate odio, quis faucibus sem. Cras nec consectetur neque.

Sed sagittis ligula ut est faucibus egestas.

Fusce convallis, risus et luctus tempus, urna orci accumsan tortor, accumsan euismod arcu lectus vitae neque. Nulla tincidunt, augue non efficitur euismod, nunc diam feugiat turpis, convallis lacinia velit enim et nisl. Sed at suscipit augue. Curabitur sed dolor metus. Nunc augue eros, aliquet sed mi ac, pulvinar fermentum mauris. Cras condimentum sapien tellus, nec efficitur odio imperdiet vitae.