@keyframes spin {
	to { transform: translateY(-50%) rotate(360deg); }
}


:root {
	--s: 1s;    /*speed*/
	--d: 10;      /*delay*/
	--c: #ff2525; /*color*/
}

* {
	transform-style: preserve-3d;
	box-sizing: border-box;
}

body {
	margin: 0;
	padding: 0;
	width: 100vw;
	height: 100vh;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	perspective: 1000vmin;
	background: radial-gradient(circle at 50% 100%, #101010, #000);
}

.sphere {
	width: 50vmin;
	height: 50vmin;
	background: #ffF0;
	position: relative;
	animation: spin 5s linear 0s infinite;
	animation-play-state: running;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: none;
	position: absolute;
	z-index: 2;
}

.sphere:hover {
	animation-play-state: paused;
}

@keyframes spin {
	0% { transform: rotateX(-210deg) rotateY(0deg) rotatez(185deg); }
	100% { transform: rotateX(-210deg) rotateY(360deg) rotatez(185deg); }
}

.sphere div {
	--sz: 23%;
	--dv: calc(var(--s) / var(--d));
	--dl: calc(var(--dv) * -1);
	width: var(--sz);
	height: var(--sz);
	position: absolute;
	border: 0.25vmin solid var(--c);
	border-radius: 100%;
	transform: rotateX(90deg) translateZ(23.75vmin);
	box-shadow: 
		0 0 0.2vmin 0.2vmin var(--c), 
		0 0 0.2vmin 0.2vmin var(--c) inset;
	animation: shine var(--s) linear var(--dl) infinite alternate;
	background: #fff0;
}

@keyframes shine {
	0%, 50%, 100% {
		border-color: var(--c);
		box-shadow: 0 0 0.2vmin 0.2vmin var(--c), 0 0 0.2vmin 0.2vmin var(--c) inset;
	}
	25%, 75% {
		border-color: #fff0;
		box-shadow: 0 0 0.2vmin 0.2vmin #fff0, 0 0 0.2vmin 0.2vmin #fff0 inset;
	}
}

.sphere div:nth-child(2) {
	transform: rotateX(90deg) translateZ(22.5vmin);
	--sz: 43%;
	--dl: calc(var(--dv) * -2);
}

.sphere div:nth-child(3) {
	transform: rotateX(90deg) translateZ(20vmin);
	--sz: 60%;
	--dl: calc(var(--dv) * -3);
}

.sphere div:nth-child(4) {
	transform: rotateX(90deg) translateZ(17.5vmin);
	--sz: 71%;
	--dl: calc(var(--dv) * -4);
}

.sphere div:nth-child(5) {
	transform: rotateX(90deg) translateZ(15vmin);
	--sz: 80%;
	--dl: calc(var(--dv) * -5);
}

.sphere div:nth-child(6) {
	transform: rotateX(90deg) translateZ(12.5vmin);
	--sz: 86%;
	--dl: calc(var(--dv) * -6);
}
.sphere div:nth-child(7) {
	transform: rotateX(90deg) translateZ(10vmin);
	--sz: 91%;
	--dl: calc(var(--dv) * -7);
}
.sphere div:nth-child(8) {
	transform: rotateX(90deg) translateZ(7.5vmin);
	--sz: 95%;
	--dl: calc(var(--dv) * -8);
}

.sphere div:nth-child(9) {
	transform: rotateX(90deg) translateZ(5vmin);
	--sz: 97%;
	--dl: calc(var(--dv) * -9);
}

.sphere div:nth-child(10) {
	transform: rotateX(90deg) translateZ(2.5vmin);
	--sz: 99%;
	--dl: calc(var(--dv) * -10);
}

.sphere div:nth-child(11) {
	transform: rotateX(90deg);
	--sz: 100%;
	--dl: calc(var(--dv) * -11);
}
.sphere div:nth-child(12) {
	transform: rotateX(90deg) translateZ(-2.5vmin);
	--sz: 99%;
	--dl: calc(var(--dv) * -12);
}
.sphere div:nth-child(13) {
	transform: rotateX(90deg) translateZ(-5vmin);
	--sz: 97%;
	--dl: calc(var(--dv) * -13);
}

.sphere div:nth-child(14) {
	transform: rotateX(90deg) translateZ(-7.5vmin);
	--sz: 95%;
	--dl: calc(var(--dv) * -14);
}

.sphere div:nth-child(15) {
	transform: rotateX(90deg) translateZ(-10vmin);
	--sz: 91%;
	--dl: calc(var(--dv) * -15);
}
.sphere div:nth-child(16) {
	transform: rotateX(90deg) translateZ(-12.5vmin);
	--sz: 86%;
	--dl: calc(var(--dv) * -16);
}

.sphere div:nth-child(17) {
	transform: rotateX(90deg) translateZ(-15vmin);
	--sz: 80%;
	--dl: calc(var(--dv) * -17);
}

.sphere div:nth-child(18) {
	transform: rotateX(90deg) translateZ(-17.5vmin);
	--sz: 71%;
	--dl: calc(var(--dv) * -18);
}

.sphere div:nth-child(19) {
	transform: rotateX(90deg) translateZ(-20vmin);
	--sz: 60%;
	--dl: calc(var(--dv) * -19);
}

.sphere div:nth-child(20) {
	transform: rotateX(90deg) translateZ(-22.5vmin);
	--sz: 43%;
	--dl: calc(var(--dv) * -20);
}

.sphere div:nth-child(21) {
	transform: rotateX(90deg) translateZ(-23.75vmin);
	--sz: 23%;
	--dl: calc(var(--dv) * -21);

