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

body {
	display: grid;
	grid-template-rows: min-content minmax(0, 1fr) min-content;
	block-size: 100dvb;
}

button,
input,
input[type="file"]::file-selector-button {
	padding-block: 0.2em;
	padding-inline: 0.6em;
	font-family: inherit;
	font-size: inherit;
	line-height: 1.6;
}

canvas {
	block-size: 100%;
	inline-size: 100%;
	touch-action: none;
}

.loader {
	display: flex;
	padding: 0.2em;
	gap: 0.2em;
	justify-content: center;
}

.palette {
	overflow-x: auto;
	white-space: nowrap;
	user-select: none;
}
.palette input {
	clip-path: circle(0);
	position: absolute;
	inset-inline: 0;
	inset-block-end: 0;
}
.palette span {
	display: inline-block;
	border: 1px solid;
	text-align: center;
	min-inline-size: 3em;
	line-height: 3;
	border-radius: 0.3em;
	margin: 0.2em;
}
.palette input:not(:checked) + span {
	opacity: 0.5;
}

@media (prefers-color-scheme: dark) {
	:root {
		color-scheme: dark;
		background: black;
		color: white;
	}
}
