:root {
	font-family: "GeistPixel", "PolterPixel", monospace;
	font-size: 18px;

	--main-flow-size: 800px;

	--color-main: #b79f1b;
	--color-main-background: light-dark(#dbdaf3, #0d0c25);
	--color-secondary: light-dark(#009e97, #1bb7a8);
	--color-secondary-background: light-dark(#cdebf2, #5f4012);

	background-color: var(--color-main-background);
	color: var(--color-main);

	color-scheme: light dark;

	&:has(input[type="radio"][name="theme"]#theme-force-dark:checked) {
		color-scheme: dark;
	}

	&:has(input[type="radio"][name="theme"]#theme-force-light:checked) {
		color-scheme: light;
	}
}

body {
	margin: 0;
	min-height: 200vh;
	overflow-x: hidden;
}

.text-repeater {
	display: flex;
	max-width: 100%;
	white-space: nowrap;

	animation: slide-right 20s linear infinite;

	* {
		display: inline-block;
	}

	@media (prefers-reduced-motion: reduce) {
		display: inline-block;
		animation: none;

		& > * {
			display: none;

			&:nth-child(1) {
				display: inline-block;
			}
		}
	}

	&.text-repeater-inverted {
		animation-direction: reverse;

		& > * {
			translate: -100%;

			@media (prefers-reduced-motion: reduce) {
				translate: none;
			}
		}
	}
}

main {
	margin-inline: auto;
	max-inline-size: var(--main-flow-size);
	display: grid;
	grid-template-columns: auto 1fr;
}

.term-frame {
	padding: 1lh 2ch;
	background: var(--color-main-background);

	position: relative;

	&:is(fieldset) {
		border: none;
		margin: 0;
		display: flex;
	}

	&::before {
		pointer-events: none;

		content: "";
		position: absolute;
		inset: 0.25lh 0.75ch;
		border: solid var(--color-main);
		border-width: 0.5lh 0.5ch;
		box-sizing: border-box;
	}

	&::after {
		content: "";
		position: absolute;
		inset: 0;
		background: radial-gradient(
			circle at center top,
			var(--color-secondary),
			transparent 75%
		);
		opacity: 0.25;
		mix-blend-mode: screen;
		filter: blur(50px);

		pointer-events: none;
	}

	& > *:first-child {
		position: absolute;
		inset-block-start: 0;
		background: var(--color-main-background);
		margin-block-start: 0;
		padding-inline: 1ch;
		white-space: nowrap;
	}
}

.settings {
	writing-mode: sideways-lr;

	& > .term-frame legend {
		block-size: 2ch;
		padding-inline: 0.5lh;
	}

	input[type="radio"] {
		display: none;

		&:checked + label {
			background-color: var(--color-secondary-background);
			color: var(--color-secondary);
		}
	}

	label {
		display: inline-block;
		text-align: center;
		font-size: 200%;
		writing-mode: initial;

		cursor: pointer;
	}
}

a {
	background-color: var(--color-secondary-background);
	color: var(--color-secondary);

	&:active,
	&:focus {
		background-color: var(--color-secondary);
		color: var(--color-secondary-background);
	}
}

p,
dl,
ul,
ol {
	margin-block: 1lh;
}

ul,
menu,
dir {
	padding-inline-start: 2ch;
}

@keyframes slide-right {
	from {
		translate: calc(var(--moving-distance) * -1);
	}

	to {
		translate: calc(var(--moving-distance) * -2);
	}
}

@keyframes spotlight-rotation {
	from {
		box-shadow: inset 0 calc(var(--circle-diameter) / 2)
			calc(var(--circle-diameter) / 1.5) var(--color-main-background);
		rotate: 0turn;
	}

	25%,
	75% {
		box-shadow: inset 0 calc(var(--circle-diameter) / -2)
			calc(var(--circle-diameter) / 1.5) var(--color-main-background);
	}

	50% {
		box-shadow: inset 0 calc(var(--circle-diameter) / 2)
			calc(var(--circle-diameter) / 1.5) var(--color-main-background);
	}

	to {
		box-shadow: inset 0 calc(var(--circle-diameter) / 2)
			calc(var(--circle-diameter) / 1.5) var(--color-main-background);
		rotate: 1turn;
	}
}
