*, *::before, *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
	font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
	font-size: 1rem;
}

:root {
	--color-light: #ffffff;
	--color-light-gray: #6b6b6b;
	--color-gray: #3c3c3c;
	--color-dark: #1b1b1b;

	--color-error: #db5461;
	--color-success: #54db68;
	
	--header-height: 4.5rem;
	--nav-width: 4rem;
	--rem-clamp: clamp(.5rem, 2vw, 1rem);
	--default-shadow: 0 1px 2px 0 rgb(0 0 0 / 60%), 0 2px 6px 2px rgb(0 0 0 / 30%);
}

/*  */
/* Default properties */
/*  */
img {
	width: 100%;
}

button,
label {
	border: 0;
	border-radius: 4px;
	background-color: var(--color-dark);
	color: var(--color-light);
}

button:hover,
label:hover {
	cursor: pointer;
}

input:not([type="checkbox"]),
select,
textarea,
.as-button {
	border: 2px solid var(--color-gray);
	border-radius: 4px;
	padding: .6rem;
	outline: 0;
	background-color: var(--color-dark);
	color: var(--color-light);
	
	box-shadow: var(--default-shadow);

	font-size: 1rem;
}

input::placeholder,
textarea::placeholder {
	color: var(--color-gray);
}

input[type="datetime-local"] {
	color-scheme: dark;
}

svg path,
svg rect {
	fill: var(--color-light);
}

::-webkit-scrollbar {
	width: 12px;
	height: 12px;
	background-color: var(--color-dark);
}

::-webkit-scrollbar-thumb {
	-webkit-border-radius: 6px;
	background-color: var(--color-gray);
}

::-webkit-scrollbar-thumb:hover {
	background-color: var(--color-light-gray);
}

/*  */
/* Utility classes */
/*  */
.hidden {
	display: none !important;
}

.error,
.error-container p {
	color: var(--color-error) !important;
	font-size: 1rem !important;
}

.error-container p {
	display: block !important;
}

.error-icon path,
.error-icon rect,
.error-container path,
.error-container rect {
	fill: var(--color-error) !important;
}

.error-input,
.error-container input {
	border: 2px solid var(--color-error) !important;
}

.success {
	color: var(--color-success) !important;
	font-size: 1rem !important;
}

/*  */
/* General styling */
/*  */
body {
	height: 100vh;
	overflow-x: hidden;

	background-color: var(--color-dark);
	color: var(--color-light);
}

noscript {
	display: block;
	max-width: 95%;
	margin-inline: 1rem;
	margin-bottom: 1rem;

	border-radius: 4px;
	padding: 1rem;
	background-color: var(--color-error);
	color: var(--color-light);
}

/*  */
/* Header */
/*  */
header {
	width: 100%;
	height: var(--header-height);
	
	display: flex;
	align-items: center;

	padding: 1rem;
	box-shadow: var(--default-shadow);
	background-color: var(--color-gray);
}

header > div {
	height: 100%;
	transform: translateX(-2.6rem);

	display: flex;
	align-items: center;
	gap: 1rem;
	
	transition: transform .3s ease-in-out;
}

#toggle-nav {
	--height: 1.5rem;
	height: var(--height);
	
	background-color: transparent;
}

#toggle-nav svg {
	height: var(--height);
	width: var(--height);
}

header img {
	height: 3rem;
	width: fit-content;
}

/*  */
/* Nav */
/*  */
.nav-divider {
	position: relative;
	height: calc(100% - var(--header-height));
	
	display: flex;

	padding-block: var(--rem-clamp);
}

body:has(#nav-switch:checked) .nav-divider > nav {
	left: var(--rem-clamp);
}

body:has(#nav-switch:checked) .nav-divider > .window-container {
	margin-left: calc(var(--nav-width) + var(--rem-clamp));
}

nav {
	--padding: .5rem;
	z-index: 1;
	position: absolute;
	left: var(--rem-clamp);
	height: calc(100% - (2 * var(--rem-clamp)));
	width: var(--nav-width);
	
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
	gap: var(--padding);
	overflow-y: auto;

	padding: var(--padding);
	border-radius: 4px;
	background-color: var(--color-gray);
	
	transition: left .3s ease-in-out;
}

nav > div {
	width: 100%;
	
	display: flex;
	flex-direction: column;
	gap: var(--padding);
}

nav > div > button {
	width: 100%;

	display: flex;
	justify-content: center;
	align-items: center;
	
	padding: .5rem;
	border: 0;
	border-radius: 4px;
	background-color: var(--color-dark);
	color: var(--color-light);
	
	transition: background-color .1s ease-in-out;
}

nav > div > button:hover {
	background-color: var(--color-gray);
}

nav > div > button svg {
	height: 1.8rem;
	width: 2rem;
}

/*  */
/* Window management */
/*  */
.window-container {
	margin-left: calc(4rem + var(--rem-clamp));
	width: 100%;

	display: flex;
	overflow: hidden;

	transition: margin-left .3s ease-in-out;
}

.window-container > :where(#home, .extra-window-container) {
	width: 100%;
	flex: 0 0 auto;

	translate: 0 0;
	transition: translate .5s ease-in-out;
}

.window-container.inter-window-ani > :where(#home, .extra-window-container) {
	transition: translate .5s ease-in-out,
				transform .5s ease-in-out;
}

.extra-window-container {
	--y-offset: 0%;
	transform: translateY(var(--y-offset));
}

.extra-window-container > div {
	height: 100%;
	overflow-y: auto;
}

.window-container.show-window > :where(#home, .extra-window-container) {
	translate: -100% 0;
}

.window-container.show-window > .extra-window-container {
	transform: translateY(var(--y-offset));
}

/*  */
/* Styling extra window */
/*  */
.extra-window-container > div {
	padding: var(--rem-clamp);
}

.extra-window-container > div > h2 {
	text-align: center;
	font-size: clamp(1.3rem, 5vw, 2rem);
	margin-bottom: 2rem;
}

.extra-window-container > div > h2:not(:first-of-type) {
	margin-top: 1.5rem;
}

.extra-window-container > div > p {
	text-align: center;
}

@media (max-width: 543px) {
	.window-container {
		margin-left: 0;
	}

	nav {
		left: -100%;
	}
}
