* {
	border: 0;
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}
:root {
	--hue: 50; /* Yellow tone for animations */
	--bg: hsl(0, 0%, 0%); /* Black background */
	--fg: hsl(var(--hue), 90%, 50%); /* Yellow tone for foreground text */
	/* font-size: calc(16px + (24 - 16) * (100vw - 320px) / (1280 - 320)); */
}
#preloader{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    width: 100vw;
}
main {
	padding: 1.5em 0;
}
.sp {
	display: block;
	width: 8em;
	height: 8em;
}
.sp__ring {
	stroke: hsla(var(--hue), 90%, 50%, 0.1); /* Yellow tone for the ring */
	transition: stroke 0.3s;
}
.sp__worm1,
.sp__worm2,
.sp__worm2-1 {
	stroke: hsl(var(--hue), 90%, 50%); /* Yellow tone for animated elements */
	animation: worm1 5s ease-in infinite;
}
.sp__worm1 {
	transform-origin: 64px 64px;
}
.sp__worm2,
.sp__worm2-1 {
	transform-origin: 22px 22px;
}
.sp__worm2 {
	animation-name: worm2;
	animation-timing-function: linear;
}
.sp__worm2-1 {
	animation-name: worm2-1;
	stroke-dashoffset: 175.92;
}

/* Dark theme */
@media (prefers-color-scheme: dark) {
	:root {
		--bg: hsl(0, 0%, 0%); /* Black background */
		--fg: hsl(var(--hue), 90%, 50%);
	}
	.sp__ring {
		stroke: hsla(var(--hue), 90%, 50%, 0.1);
	}
}

/* Animations */
@keyframes worm1 {
	from,
	to {
		stroke-dashoffset: 0
	}
	12.5% {
		animation-timing-function: ease-out;
		stroke-dashoffset: -175.91;
	}
	25% {
		animation-timing-function: cubic-bezier(0,0,0.43,1);
		stroke-dashoffset: -307.88;
	}
	50% {
		animation-timing-function: ease-in;
		stroke-dashoffset: -483.8;
	}
	62.5% {
		animation-timing-function: ease-out;
		stroke-dashoffset: -307.88;
	}
	75% {
		animation-timing-function: cubic-bezier(0,0,0.43,1);
		stroke-dashoffset: -175.91;
	}
}
@keyframes worm2 {
	from,
	12.5%,
	75%,
	to {
		transform: rotate(0) translate(-42px,0);
	}
	25%,
	62.5% {
		transform: rotate(0.5turn) translate(-42px,0);
	}
}
@keyframes worm2-1 {
	from {
		stroke-dashoffset: 175.91;
		transform: rotate(0);
	}
	12.5% {
		animation-timing-function: cubic-bezier(0,0,0.42,1);
		stroke-dashoffset: 0;
		transform: rotate(0);
	}
	25% {
		animation-timing-function: linear;
		stroke-dashoffset: 0;
		transform: rotate(1.5turn);
	}
	37.5%,
	50% {
		stroke-dashoffset: -175.91;
		transform: rotate(1.5turn);
	}
	62.5% {
		animation-timing-function: cubic-bezier(0,0,0.42,1);
		stroke-dashoffset: 0;
		transform: rotate(1.5turn);
	}
	75% {
		animation-timing-function: linear;
		stroke-dashoffset: 0;
		transform: rotate(0);
	}
	87.5%,
	to {
		stroke-dashoffset: 175.92;
		transform: rotate(0);
	}
}