@font-face {
	font-family: "Museo Sans";
	font-weight: 500;
	font-style: normal;
	font-display: swap;
	ascent-override: 94%;
	descent-override: 0%;
	line-gap-override: 0%;
	src: url(/assets/fonts/museo-sans-500.woff2) format("woff2"),
		 url(/assets/fonts/museo-sans-500.woff) format("woff");
}

@font-face {
	font-family: "Museo Sans";
	font-weight: 700;
	font-style: normal;
	font-display: swap;
	ascent-override: 94%;
	descent-override: 0%;
	line-gap-override: 0%;
	src: url(/assets/fonts/museo-sans-700.woff2) format("woff2"),
		 url(/assets/fonts/museo-sans-700.woff) format("woff");
}

* {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

html, body {
	margin: 0;
	padding: 0;
}

body {
	background-color: #fafafa;
	font-family: "Museo Sans", sans-serif;
	line-height: 1.3;
	-webkit-font-smoothing: antialiased;
	-webkit-text-size-adjust: none;
	text-size-adjust: none;
}

a {
	text-decoration: none;
}

p {
	font-weight: 500;
	margin: 0;
	color: #333;
}

img {
	max-width: 100%;
	border: 0;
}

a img {
	border: 0;
	outline: 0;
}

ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

sup {
	font-size: 50%;
}

@-webkit-keyframes header-anim {
	to {
		background-position: 400% 0;
	}
}

@-moz-keyframes header-anim {
	to {
		background-position: 400% 0;
	}
}

@keyframes header-anim {
	to {
		background-position: 400% 0;
	}
}

.neave {
	position: absolute;
	margin-left: 50%;
	top: 25px;
	left: -50px;
	width: 100px;
	height: 100px;
	border-radius: 50%;
	border: 4px solid #fff;
	-webkit-box-shadow: 0 0 30px rgba(255, 255, 255, 0.25), inset 0 0 30px rgba(255, 255, 255, 0.25);
	-moz-box-shadow: 0 0 30px rgba(255, 255, 255, 0.25), inset 0 0 30px rgba(255, 255, 255, 0.25);
	box-shadow: 0 0 30px rgba(255, 255, 255, 0.25), inset 0 0 30px rgba(255, 255, 255, 0.5);
	pointer-events: none;
}

.neave svg {
	width: 100%;
	height: 100%;
}

header.gradient {
	background-color: #7eb;
	background-image: -webkit-linear-gradient(
		right,
		#9cf 0%,
		#f9c 25%,
		#ec8 50%,
		#7eb 75%,
		#9cf 100%
	);
	background-image: -moz-linear-gradient(
		right,
		#9cf 0%,
		#f9c 25%,
		#ec8 50%,
		#7eb 75%,
		#9cf 100%
	);
	background-image: linear-gradient(
		to right,
		#9cf 0%,
		#f9c 25%,
		#ec8 50%,
		#7eb 75%,
		#9cf 100%
	);
	background-size: 400% 100%;
	-webkit-animation: header-anim 30s infinite linear;
	-moz-animation: header-anim 30s infinite linear;
	animation: header-anim 30s infinite linear;
}

h1 {
	display: inline;
	color: #fff;
	font-size: 30px;
	font-weight: 700;
	padding: 0;
	text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
	white-space: nowrap;
	-webkit-tap-highlight-color: transparent;
	tap-highlight-color: transparent;
	-webkit-user-select: none;
	user-select: none;
}

.title {
	text-align: center;
	margin-top: 140px;
}

h2 {
	color: #333;
	font-size: 25px;
	font-weight: 700;
	line-height: 1;
	margin: 2px 0 12px 0;
	padding: 0;
}

header {
	position: absolute;
	display: block;
	left: 0;
	top: 0;
	width: 100%;
	height: 400px;
	margin: 0;
}

header p {
	display: none;
}

.surface {
	position: absolute;
	top: 0;
	-webkit-tap-highlight-color: transparent;
	tap-highlight-color: transparent;
	-webkit-user-select: none;
	user-select: none;
}

.surface.disabled {
	width: 100%;
	height: 200px;
	top: 200px;
	background-color: #fafafa;
}

main {
	position: relative;
	display: block;
	margin: 200px 20px 40px 20px;
	margin-left: calc(20px + env(safe-area-inset-left));
	margin-right: calc(20px + env(safe-area-inset-right));
}

main ul {
	max-width: 1080px;
	margin: 0 auto;
}

main li {
	width: 25%;
	display: inline-block;
	text-align: center;
	vertical-align: top;
	margin: 15px 0;
}

main li.item-snake {
	margin-left: 12.5%;
}

main a {
	display: block;
	color: #333;
}

main a .icon img {
	-webkit-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.2);
	-moz-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.2);
	box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.2);
}

body:not(.mobile) main a:hover .icon img {
	-webkit-transform: translate3d(0, -4px, 0);
	-moz-transform: translate3d(0, -4px, 0);
	transform: translate3d(0, -4px, 0);
	-webkit-box-shadow: 0 15px 40px 0 rgba(0, 0, 0, 0.25);
	-moz-box-shadow: 0 15px 40px 0 rgba(0, 0, 0, 0.25);
	box-shadow: 0 15px 40px 0 rgba(0, 0, 0, 0.25);
}

body:not(.mobile) main a:active .icon img {
	-webkit-transform: translate3d(0, 0, 0);
	-moz-transform: translate3d(0, 0, 0);
	transform: translate3d(0, 0, 0);
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}

.icon {
	padding: 20px;
}

.icon img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	border-radius: 20%;
	-ms-interpolation-mode: bicubic;
	-webkit-user-select: none;
	user-select: none;
	-webkit-transition: -webkit-transform 100ms ease-out, box-shadow 100ms ease-out;
	-moz-transition: -moz-transform 100ms ease-out, box-shadow 100ms ease-out;
	transition: transform 100ms ease-out, box-shadow 100ms ease-out;
	will-change: transform, box-shadow;
}

.text {
	color: #333;
	width: 100%;
	padding: 8px 10px 5px 10px;
}

.text p {
	font-size: 16px;
	color: #777;
}

.alt {
	color: #333;
	position: absolute;
	left: 0;
	padding: 60px 20px;
	width: 100%;
	text-align: center;
	font-size: 17px;
}

.alt a {
	color: #07f;
}

footer {
	background-color: #333;
	color: #ccc;
	width: 100%;
	font-weight: 500;
	padding: 20px 20px 120px 20px;
	padding-left: calc(20px + env(safe-area-inset-left));
	padding-bottom: calc(120px + env(safe-area-inset-bottom));
	padding-right: calc(20px + env(safe-area-inset-right));
}

footer > div {
	max-width: 1080px;
	margin: 0 auto;
	padding: 15px;
}

footer .twitter img {
	vertical-align: top;
	margin-top: 1px;
}

footer .twitter span {
	margin-left: 2px;
}

footer p,
footer label {
	color: #ccc;
	font-size: 16px;
}

footer p {
	display: inline;
	float: left;
}


footer ul {
	float: right;
	font-size: 16px;
}

footer li {
	display: inline;
	margin-left: 15px;
}

footer a {
	color: #ccc;
}

body:not(.mobile) footer a:hover {
	color: #fff;
	text-decoration: underline;
	text-decoration-skip: ink;
}

.mobile p,
.mobile footer,
.mobile footer input {
	font-weight: 400;
}

@media (min-width: 1401px) {
	.surface {
		top: 40px;
	}

	.surface.disabled {
		height: 160px;
		top: 240px;
	}

	.neave {
		top: 42px;
	}

	.title {
		margin-top: 158px;
	}

	main {
		margin-top: 272px;
		margin-bottom: 60px;
	}

	main ul {
		max-width: 1264px; /* (256 + 30 * 2) * 4 */
	}

	h1 {
		font-size: 34px;
	}

	h2 {
		font-size: 28px;
	}

	.text p {
		font-size: 17px;
	}

	footer {
		padding: 25px 25px 140px 25px;
		padding-left: calc(25px + env(safe-area-inset-left));
		padding-bottom: calc(140px + env(safe-area-inset-bottom));
		padding-right: calc(25px + env(safe-area-inset-right));
	}

	footer div {
		max-width: 1264px;
		padding: 25px;
	}

	.icon {
		padding: 15px 30px;
	}

	.text {
		padding: 16px 20px 16px 20px;
	}
}

@media (max-width: 1080px) {
	h2 {
		font-size: 24px;
	}

	.text p {
		font-size: 16px;
	}
}

@media (max-width: 812px) {
	header {
		height: 370px;
	}

	.surface {
		top: -30px;
	}

	.surface.disabled {
		height: 200px;
		top: 170px;
	}

	.neave {
		width: 80px;
		height: 80px;
		left: -40px;
		border-width: 3px;
	}

	h1 {
		font-size: 24px;
	}

	h2 {
		margin: 0 0 8px 0;
	}

	.title {
		margin-top: 120px;
	}

	main {
		margin: 170px 15px 35px 15px;
	}

	main ul {
		max-width: 600px;
	}

	main li {
		width: 33.33333333%;
	}

	main li.item-snake {
		margin-left: 0;
	}

	main li.item-bouncy-balls {
		margin-left: 33.33333333%;
	}

	main a .icon img {
		-webkit-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.2);
		-moz-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.2);
		box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.2);
	}

	footer p,
	footer ul {
		font-size: 15px;
	}

	footer .twitter img {
		margin-top: 0;
	}

	footer .links span {
		display: none;
	}

	.icon {
		padding: 15px;
	}

	.text {
		padding-top: 6px;
	}
}

@media (max-width: 640px) {
	footer {
		text-align: center;
		padding: 15px 15px 25px 15px;
		padding-left: calc(15px + env(safe-area-inset-left));
		padding-bottom: calc(25px + env(safe-area-inset-bottom));
		padding-right: calc(15px + env(safe-area-inset-right));
	}

	footer ul {
		clear: both;
		float: none;
		padding-top: 20px;
	}

	footer li {
		margin: 0 10px 0 0;
	}

	footer p {
		width: 100%;
	}
}

@media (max-width: 550px) {
	header {
		height: 170px;
	}

	h2 {
		font-size: 22px;
	}

	.surface {
		display: none;
	}

	main {
		margin: 175px 15px 30px 15px;
	}

	main ul {
		max-width: 380px;
	}

	main li {
		width: 50%;
		margin-bottom: 10px;
	}

	main li.item-bouncy-balls {
		margin-left: 25%;
	}

	.text {
		padding: 3px 5px 0 5px;
	}

	footer {
		padding-bottom: 50px;
		padding-bottom: calc(50px + env(safe-area-inset-bottom));
	}

	footer div {
		padding: 10px 5px;
	}

	footer p,
	footer label,
	footer ul,
	.text p {
		font-size: 14px;
	}

	footer .twitter img {
		margin-top: -1px;
	}

	.text p {
		color: #777;
	}
}

@media (max-width: 320px) {
	h2 {
		font-size: 18px;
	}
}

/* Dark mode */
@media (prefers-color-scheme: dark) {
	body,
	.surface.disabled {
        background-color: #2e2e2e;
	}

	footer {
		background-color: #1e1e1e;
	}

	p,
	h2,
	.text {
		color: #fafafa;
	}

	.text p {
		color: #999;
	}
}
