*,
*::before,
*::after {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

:root {
	--c-foreground: black;
	--c-background: white;
	--c-background-2: gainsboro;
	--c-primary: blue;
	--c-secondary: purple;
	--c-tertiary: red;
	--font-size: 16px;
}

@media (prefers-color-scheme: dark) {
	:root {
		--c-foreground: white;
		--c-background: black;
		--c-background-2: #464646;
		--c-primary: aqua;
		--c-secondary: magenta;
	}
}

body,
header,
nav,
main,
section,
article,
aside,
footer,
div {
	display: flex;
	flex-direction: column;
	gap: var(--font-size);
}

body {
	padding: var(--font-size);
	margin: auto;
	max-width: 100ch;
	color: var(--c-foreground);
	background-color: var(--c-background);
	font-size: var(--font-size);
	font-family: serif;
	line-height: 1.4;
}

h1 {
	font-size: calc(var(--font-size) * 2);
}

h2 {
	font-size: calc(var(--font-size) * 1.5);
}

h3 {
	font-size: calc(var(--font-size) * 1.25);
}

h4 {
	font-size: var(--font-size);
}

h5 {
	font-size: calc(var(--font-size) * .85);
}

h6 {
	font-size: calc(var(--font-size) * .65);
}

hr {
	border: none;
	outline: none;
	height: 1px;
	background-color: var(--c-foreground);
}

a {
	color: var(--c-primary);
}

a:hover {
	color: var(--c-background);
	background-color: var(--c-primary);
}

a:visited {
	color: var(--c-secondary);
}

a:visited:hover {
	color: var(--c-background);
	background-color: var(--c-secondary);
}

a:active,
a:visited:active {
	color: var(--c-background);
	background-color: var(--c-tertiary);
}

code,
pre {
	background-color: var(--c-background-2);
}

pre {
	overflow-x: scroll;
}

kbd {
	padding-inline: .25em;
	background-color: var(--c-background-2);
	border-radius: .25em;
}

ul,
ol,
dd {
	padding-inline-start: calc(var(--font-size) * 2);
}

img {
	align-self: center;
	display: block;
	width: auto;
	max-width: 100%;
	height: auto;
}

summary {
	cursor: pointer;
}

summary + * {
	margin-top: var(--font-size);
}

/* additional classes */

.center {
	text-align: center;
}

.grid-2,
.grid-3,
.grid-4,
.grid-responsive {
	display: grid;
	gap: var(--font-size);
	place-items: center;
}

.grid-2 {
	grid-template-columns: 1fr 1fr;
}

.grid-3 {
	grid-template-columns: 1fr 1fr 1fr;
}

.grid-4 {
	grid-template-columns: 1fr 1fr 1fr 1fr;
}

.grid-responsive {
	grid-template-columns: repeat(auto-fit, minmax(calc(var(--font-size) * 12), 1fr));
}
