<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
:root {
	--unit: 1vmax;
	--border: 2px; /* change border size */
	--light: #79ff54;
	--dark: #27b700;
	--black: #333333;
	--hue: hue-rotate(0deg); /* change color hue */
	--sat: saturate(1.15); /* change saturation */
}

body {
	filter: var(--hue) var(--sat);
	background: var(--black);
	display: flex;
	width: 120vw;
	height: 120vh;
	overflow: hidden;
	margin: 0;
	justify-content: center;
	flex-wrap: wrap;
	flex-direction: row;
	align-content: flex-start;
	margin-left: -10vw;
	margin-top: -10vh;
	/* transform: scale(0.55); */
	border: 2px solid red;
	box-sizing: border-box;
}

div {
	width: calc(var(--unit) * 10);
	height: calc(var(--unit) * 10);
	background: linear-gradient(-50deg, var(--dark), var(--light) 70%);
	position: relative;
	float: left;
	border: var(--border) solid var(--black);
	border-radius: calc(var(--border) * 3);
	cursor: pointer;
}

div:before {
	content: "";
	background: var(--light);
	position: absolute;
	width: calc(var(--unit) * 2);
	height: calc(var(--unit) * 2);
	top: 40%;
	left: calc(var(--unit) * -2);
	z-index: 2;
	border: calc(var(--border) * 2) solid var(--black);
	box-sizing: border-box;
	border-right: 0;
	border-radius: 35% 0 0 75%;
}

div:after {
	content: "";
	background: var(--light);
	position: absolute;
	width: calc(var(--unit) * 3.5);
	height: calc(var(--unit) * 3);
	top: -30%;
	left: calc(var(--unit) * 1.5);
	z-index: 2;
	border: calc(var(--border) * 2) solid var(--black);
	box-sizing: border-box;
	border-bottom: 0;
	border-radius: 35% 65% 0 0;
}

/*** POSITION ***/

div:nth-child(n + 12):nth-child(-n + 22) {
	left: calc(var(--unit) * 2);
}

div:nth-child(n + 23):nth-child(-n + 33) {
	left: calc(var(--unit) * 4);
}

div:nth-child(n + 34):nth-child(-n + 44) {
	left: calc(var(--unit) * 6);
}

div:nth-child(n + 45):nth-child(-n + 55) {
	left: calc(var(--unit) * -2.25);
}

div:nth-child(n + 56):nth-child(-n + 66) {
	left: calc(var(--unit) * -0.25);
}

div:nth-child(n + 67):nth-child(-n + 77) {
	left: calc(var(--unit) * 1.75);
}

div:nth-child(n + 78):nth-child(-n + 88) {
	left: calc(var(--unit) * 3.75);
}

div:nth-child(n + 89):nth-child(-n + 99) {
	left: calc(var(--unit) * 5.75);
}

div:nth-child(n + 100):nth-child(-n + 110) {
	left: calc(var(--unit) * -2.5);
}

div:nth-child(n + 111):nth-child(-n + 121) {
	left: calc(var(--unit) * -0.5);
}

/*** COLOR ***/

div:nth-child(odd) {
	filter: hue-rotate(140deg);
}

div:nth-child(3n + 3) {
	filter: hue-rotate(80deg);
}

div:nth-child(5n + 5) {
	filter: hue-rotate(240deg);
}

div:nth-child(7n + 7) {
	filter: hue-rotate(280deg);
}

div:nth-child(9n + 9) {
	filter: hue-rotate(320deg);
}

div:nth-child(7n + 5) {
	filter: hue-rotate(180deg);
}

/* black piece */

div:nth-child(39) {
	background: linear-gradient(-50deg, #222222, var(--black) 70%) !important;
}

div:nth-child(39):before,
div:nth-child(39):after {
	background: var(--black);
}

/*** PORTRAIT VIEW ***/

@media only screen and (orientation: portrait) {
	:root {
		--unit: 1.5vmin;
	}

	body {
		margin-left: -12vw;
		margin-top: -2vh;
	}

	div:nth-child(n + 8):nth-child(-n + 14) {
		left: calc(var(--unit) * 2);
	}

	div:nth-child(n + 15):nth-child(-n + 21) {
		left: calc(var(--unit) * 4);
	}

	div:nth-child(n + 22):nth-child(-n + 28) {
		left: calc(var(--unit) * 6);
	}

	div:nth-child(n + 29):nth-child(-n + 35) {
		left: calc(var(--unit) * -2.275);
	}

	div:nth-child(n + 36):nth-child(-n + 42) {
		left: calc(var(--unit) * -0.25);
	}

	div:nth-child(n + 43):nth-child(-n + 49) {
		left: calc(var(--unit) * 1.75);
	}

	div:nth-child(n + 50):nth-child(-n + 56) {
		left: calc(var(--unit) * 3.75);
	}

	div:nth-child(n + 57):nth-child(-n + 63) {
		left: calc(var(--unit) * 5.75);
	}

	div:nth-child(n + 64):nth-child(-n + 70) {
		left: calc(var(--unit) * -2.5);
	}

	div:nth-child(n + 71):nth-child(-n + 77) {
		left: calc(var(--unit) * -0.5);
	}

	div:nth-child(n + 78):nth-child(-n + 84) {
		left: calc(var(--unit) * 1.5);
	}

	div:nth-child(n + 85):nth-child(-n + 91) {
		left: calc(var(--unit) * 3.5);
	}

	div:nth-child(n + 92):nth-child(-n + 98) {
		left: calc(var(--unit) * 5.5);
	}

	div:nth-child(n + 99):nth-child(-n + 105) {
		left: calc(var(--unit) * -3.25);
	}

	div:nth-child(n + 106):nth-child(-n + 112) {
		left: calc(var(--unit) * -1.25);
	}

	div:nth-child(n + 113):nth-child(-n + 119) {
		left: calc(var(--unit) * 0.75);
	}

	div:nth-child(n + 120) {
		left: calc(var(--unit) * 2.75) !important;
	}

	div:nth-child(14),
	div:nth-child(35),
	div:nth-child(49) {
		filter: hue-rotate(320deg);
	}

	div:nth-child(19),
	div:nth-child(33),
	div:nth-child(47),
	div:nth-child(61),
	div:nth-child(75) {
		filter: hue-rotate(280deg);
	}
}

/*** HOVER - ACTIVE ***/

div:hover {
	background: linear-gradient(-50deg, #222222, var(--black) 70%) !important;
}

div:hover:before,
div:hover:after {
	background: var(--black) !important;
}

div:active {
	background: linear-gradient(-50deg, #efefef, #ffffff 70%) !important;
}

div:active:before,
div:active:after {
	background: #ffffff !important;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.