:root {
	--accent-color: greenyellow;
	--accent-background-color: black;

	--border-radius: 0.5rem;

	accent-color: var(--accent-color);
}
html, body {
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	background-color: black;
	font-family: 'Open Sans', sans-serif;
}
body {
	display: flex;
	&:has(dialog[open]) {
		filter: blur(0.1rem);
	}
}
h2 {
	font-size: 1.2rem;
	margin: 0 0 0.5rem 0;
	border-bottom: 0.1rem solid black;

	&:not(:first-child) {
		margin-top: 1.5rem;
	}
}
h3 {
	font-size: 1rem;
	margin: 1rem 0 0.5rem 0;

	h2 + & {
		margin-top: 0.5rem;
	}
}
canvas {
	margin: auto;
	/*
	do not try to control the size of the canvas with CSS
	it's not possible to maintain the aspect ratio of the canvas while expanding it to fill the container
	object-fit: contain;
	aspect-ratio: 1;
	*/
}
dialog {
	padding: 1rem;
	outline: none;
	border-radius: var(--border-radius);
	border: 0.2rem solid var(--accent-color);
	&::backdrop {
		background-color: white;
		opacity: 0.8;
	}
}
aside {
	background-color: white;
	flex: 0 0 22rem; /*enforce width in a flex container*/
	padding: 0.8rem;
	overflow-y: auto;
	user-select: none;

	& p {
		margin: 0.5rem 0;
		&.selector {
			display: flex;
		}
		&.hint {
			font-size: 0.8rem;
			color: gray;
		}
	}
	& button {
		cursor: pointer;
		padding: 0.5rem;
		background-color: white;
		border: 0.05rem solid var(--accent-background-color);
		text-transform: uppercase;

		&:hover {
			background-color: var(--accent-background-color);
			color: var(--accent-color);
		}
	}
	& label {
		width: 1.5rem;

		&.long {
			width: 5rem;
		}
	}
	& label:has(input:disabled), & input:disabled {
		opacity: 0.2;
		pointer-events: none;
	}
	& input[type="range"] {
		vertical-align: bottom;
		flex-grow: 1;
	}
	& input[type="checkbox"] {
		display: inline-block;
		width: 1rem;
		height: 1rem;
		vertical-align: middle;
		margin: 0 0.5rem 0 0;
	}
	& output {
		width: 2rem;
		text-align: right;
	}
	& .choices {
		display: flex;
		font-size: 0.8rem;

		& button, & label {
			cursor: pointer;
			padding: 0.5rem;
			background-color: white;
			border: 0.05rem solid var(--accent-background-color);
			width: auto;
			text-transform: uppercase;

			&:hover, &.selected, &:has(input:checked) {
				background-color: var(--accent-background-color);
				color: var(--accent-color);
			}
			&+button, &+label {
				border-left: none;
			}
		}

		& input[type="radio"] {
			display: none;
		}
	}
}
main {
	position: relative;
	flex-grow: 1;
	margin: 1rem;
	background-color: black;
	overflow: auto;
	display: flex;
}

#debug_panel {
	font-size: 0.7rem;
	position: absolute;
	right: 0;
	top: 0;
	color: var(--accent-color);
	border-spacing: 0.5rem 0.2rem;
}

.matrix {
	font-family: monospace;
	border-left: 0.05rem solid var(--accent-color);
	border-right: 0.05rem solid var(--accent-color);
	width: 8rem;

	& td {
		padding: 0.2rem;
		text-align: center;
	}
}
