<ol reversed class="paces" lang="en">
	<li class="pace js">JS+<blockquote class="quote js">JS+: The JavaScript ecosystem (not the language!): Anyone else feels overwhelmed by the rate of rapid changes here?</blockquote>
	</li>
	<li class="pace css">CSS<blockquote class="quote css">CSS: This is moving in a nice click lately, with lots of useful new stuff enabled in the browsers</blockquote></li>
	<li class="pace html">HTML<blockquote class="quote html">HTML: Started with 20 something "tags", now we have over 100 "elements", but I feel that I've been able to keep up with the pace of change here</blockquote></li>
	<li class="pace url">URLs<blockquote class="quote url">URLs: Sadly they are frequently changing; links die. We should work hard to keep URLs unchanged, but that's not how it is</blockquote></li>
	<li class="pace http">HTTP<blockquote class="quote http">HTTP: Gradually changed (http/2), but it kind of feels good that it doesn't constantly change underneath us</blockquote></li>
	<li class="pace tcpip">TCP/IP<blockquote class="quote tcpip">TCP/IP: Deliberately dumb, simple, all it does is move packets around</blockquote></li>	
</ol>
<footer><blockquote><p>Fast gets all the attention,<br>
	but Slow has all the power</p><cite>Stewart Brand "Pacelayers"</cite>
</blockquote><a href="https://vimeo.com/373128517">The Layers of the Web - Jeremy Keith</a></footer>
body {
	font-family: sans-serif;
	font-size: calc(0.5em + 1vmin);
	color: #eee;
	background-color: #111;
	width: 90%;
	max-width: 35em;
	margin-left: auto;
	margin-right: auto;
	padding: 2em;
}
.paces {
	margin: 0;
	padding: 0;
	list-style-type: none;
	position: relative;
	padding-top: 100%;
}
.pace {
	font-size: 90%;
	position: absolute;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
	padding: 0.5em;
	text-align: center;
	border: 1px solid #fff;
	border-radius: 60%;
	background-color: rgba(255, 255, 255, 0.1);
	transition: all ease-in-out 0.2s;
	.quote {
		opacity: 0;
		margin: 0;
		padding: 0;
	}
	&:hover,
	&:focus,
	&:active {
		cursor: grabbing;
		background-color: #111;
		color: #111;
		animation: none !important;
		.quote {
			color: #fff;
			hyphens: auto;
			z-index: 100;
			opacity: 1;
			position: absolute;
			top: 50%;
			left: 50%;
			transform: translate(-50%, -50%);
		}
	}
}
.pace {
	&.js {
		margin: 5%;
		animation: 2.5s infinite linear rotate;
		box-shadow: 0 0 5em #fff;
	}
	&.css {
		margin: 10%;
		animation: 5s infinite linear rotate;
	}
	&.html {
		margin: 15%;
		animation: 10s infinite linear rotate;
	}
	&.url {
		margin: 20%;
		animation: 15s infinite linear rotate;
	}
	&.http {
		margin: 25%;
		animation: 25s infinite linear rotate;
	}
	&.tcpip {
		margin: 30%;
		animation: 35s infinite linear rotate;
	}
}
.quote {
	&.js {
		padding: 10%;
	}
	&.css {
		padding: 5%;
	}
	&.html {
		padding: 4%;
	}
}
footer {
	text-align: center;
	background-color: #111;
	transform: translateY(-80%);
	padding-top: 2em;
	padding-bottom: 2.5em;
	padding-left: 2em;
	padding-right: 2em;
	margin-left: -2em;
	margin-right: -2em;
	box-shadow: 0 -1em 1em #111;
	a {
		color: #666;
		text-decoration: none;
		&:hover,
		&:focus,
		&:active {
			color: #fff;
		}
	}
}
.quotes .quote {
	opacity: 0;
	&:target {
		position: absolute;
		top: 0;
		opacity: 1;
	}
}

@keyframes rotate {
	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.