Follow Up - Google Doodle in Pure CSS Animation

Yesterday I posted a CSS version of Google's recent Doodle. Today I did a bit more work on it to make it animate more like the original version. I'll mention the process that I followed for more accuracy. First of all it was important to change the radio input to a checkbox input so that when the player button is re-clicked (clicked again, after playing), the animation stops/pauses. Also the player image is a <img> element now, instead of being a background to the <label> element. This helped in getting rid of the player-slide keyframes by using simple transitions to slide the <img>. Next, a new parent div has been introduced for the grids and the horse image has been set as a background image to the new div instead of the small divs. Then I applied a 5 second transition to the background-position of the new container to imitate the rewind effect. The rewind effect is then followed by the normal animation which has an animation-delay set to 5 seconds to let the rewind effect occur entirely.

by Palma Hutabarat92

HTML

<div class="doodle">
	
	<input type="checkbox" id="play" name="play"/>
	<label for="play">
		<img src="http://www.google.com/logos/2012/muybridge12-hp-p.jpg" alt="Play" />
	</label>
	
	<div class="animate">
		
		<div class="g"></div>
		<div class="g"></div>
		<div></div>
		<div></div>
		<div></div>
		<div class="l"></div>
		<div></div>
		
		<div class="g"></div>
		<div class="g"></div>
		<div class="o"></div>
		<div class="o play"></div>
		<div class="g"></div>
		<div class="l"></div>
		<div class="e"></div>
		
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<div class="g"></div>
		<div></div>
		<div></div>
		
	</div>
	
</div>

CSS

body {
	font-family: 'Lucida Grande', 'Helvetica Neue', sans-serif;
	font-size: 13px;
}

.doodle {
	width: 469px; height: 162px;
	margin: 40px auto;
	
	position: relative;
}

.animate div {
	width: 67px; height: 54px;
	float: left;
	position: relative;
}

.doodle .animate {
	position: relative;
	width: 100%; height: 100%;
	background: url(http://www.google.com/logos/2012/muybridge12-hp-f.jpg);
}

.doodle input:checked ~ .animate {
	/* We will set a delay so that the rewind effect can occur */
	-webkit-animation: horse-ride .5s steps(12, end) infinite 5s;
	-moz-animation: horse-ride .5s steps(12, end) infinite 5s;
	animation: horse-ride .5s steps(12, end) infinite 5s;
	
	/* Imitating the Rewind effect before real animation starts */
	background-position: -2412px 0;
	-webkit-transition: all 5s cubic-bezier(0.550, 0.055, 0.675, 0.190);
	-moz-transition: all 5s cubic-bezier(0.550, 0.055, 0.675, 0.190);
	transition: all 5s cubic-bezier(0.550, 0.055, 0.675, 0.190);
}
.animate div:after {
	content: '';
	
	position: absolute;
	top: 0px; bottom: 0px; left: 0px; right: 0px;
	z-index: 2;
	
	border-right: 2px solid #fff;
	border-bottom: 2px solid #fff;
	
	background: rgba(255, 255, 255, 0.6);
	
	-webkit-box-shadow: inset 2px 2px 2px rgba(0,0,0,0.2);
	-moz-box-shadow: inset 2px 2px 2px rgba(0,0,0,0.2);
	box-shadow: inset 2px 2px 2px rgba(0,0,0,0.2);
}
.doodle div.g:after {
	background: rgba(53, 97, 182, 0.5);
}
.doodle div.o:after,
.doodle div.e:after {
	background: rgba(230, 43, 36, 0.5);
}
/* :nth-last-of-type(1) or :last-of-type not working with ::after */
.doodle div.o.play:after {
	background: rgba(227, 230, 36, 0.6);
	pointer-events: none;
}
.doodle div.l:after {
	background: rgba(85, 151, 78, 0.6);
}

/* player */
.doodle label {
	cursor: pointer;
	display: inline-block;
	width: 68px; height: 55px;
	z-index: 2;
	position: absolute;
	
	top: 55px;
	left: 200px;
}
.doodle label:after {
	content: '';
	
	position: absolute;
	top: 0px; bottom: 0px; left: 0px; right:...