@import url("reset.css") layer(reset);
@layer reset, base, components, utility;

:where(html[data-theme="light"]) {
	color-scheme: light;
	/* Page */
	--color-background: hsl(30, 8%, 95%);
	--color-foreground: hsl(30, 5%, 85%);
	--color-border: #ddd;
	--color-border-focus: #444;
	/* Text */
	--color-text: #000;
	--color-text-link: #006;
	--color-text-negative: #f77070;
	--color-text-positive: #70f770;
	/* Button */
	--color-btn-background: #fff;
	--color-btn-border: #333;
	--color-btn-primary: hsl(125, 60%, 60%);
	--color-btn-secondary: hsl(20, 60%, 70%);

	/* Other */
	--color-header-dashboard-link-text: #000;
}
:where(html[data-theme="dark"]) {
	color-scheme: dark;
	/* Page */
	--color-background: hsl(0, 0%, 16%);
	--color-foreground: hsl(0, 0%, 20%);
	--color-border: hsl(0, 0%, 27%);
	--color-border-focus: hsl(0, 0%, 53%);
	/* Text */
	--color-text: hsl(0, 0%, 90%);
	--color-text-link: hsl(240, 100%, 90%);
	--color-text-negative: hsl(0, 70%, 70%);
	--color-text-positive: hsl(125, 70%, 70%);
	/* Button */
	--color-btn-background: hsl(0, 0%, 16%);
	--color-btn-border: hsl(0, 0%, 40%);
	--color-btn-primary: hsl(125, 20%, 35%);
	--color-btn-secondary: hsl(20, 20%, 35%);

	/* Other */
	--color-header-dashboard-link-text: hsl(0, 0%, 100%);
}
:where(html[data-theme="oled"]) {
	color-scheme: dark;
	/* Page */
	--color-background: hsl(0, 0%, 0%);
	--color-foreground: hsl(0, 0%, 10%);
	--color-border: hsl(0, 0%, 13%);
	--color-border-focus: hsl(0, 0%, 40%);
	/* Text */
	--color-text: hsl(0, 0%, 85%);
	--color-text-link: hsl(200, 100%, 75%);
	--color-text-negative: hsl(0, 100%, 75%);
	--color-text-positive: hsl(125, 100%, 75%);
	/* Button */
	--color-btn-background: hsl(0, 0%, 0%);
	--color-btn-border: hsl(0, 0%, 27%);
	--color-btn-primary: hsl(125, 20%, 35%);
	--color-btn-secondary: hsl(20, 20%, 35%);

	/* Other */
	--color-header-dashboard-link-text: hsl(0, 0%, 100%);
}
:where(html[data-theme="colourful"]) {
	color-scheme: dark;
	/* Page */
	--color-background: hsl(43, 8%, 16%);
	--color-foreground: hsl(43, 8%, 20%);
	--color-border: hsl(104, 12%, 31%);
	--color-border-focus: hsl(102, 15%, 45%);
	/* Text */
	--color-text: hsl(40, 40%, 85%);
	--color-text-link: hsl(190, 60%, 75%);
	--color-text-negative: hsl(0, 70%, 70%);
	--color-text-positive: hsl(125, 70%, 70%);
	/* Button */
	--color-btn-background: hsl(30, 10%, 25%);
	--color-btn-border: hsl(0, 15%, 10%);
	--color-btn-primary: hsl(125, 30%, 30%);
	--color-btn-secondary: hsl(20, 20%, 30%);

	/* Other */
	--color-header-dashboard-link-text: hsl(38, 60%, 77%);
}

/*MARK: BASE LAYER - Global resets and fundamental styles */
@layer base {
	* {
		box-sizing: border-box;
		margin: 0;
		padding: 0;
	}

	html {
		/* prevents any CLS due to scrollbar */
		scrollbar-gutter: stable;
		padding-inline-start: calc(100vw - 100%);
	}

	body {
		font-family: "Afacad", sans-serif;
		font-optical-sizing: auto;
		font-weight: 400;
		font-style: normal;
		margin: 0;
		background: var(--color-background);
		color: var(--color-text);
		display: flex;
		flex-direction: column;
		min-height: 100vh;
	}

	main {
		flex: 1;
		max-width: 1200px;
		margin: 0 auto;
		padding: 1rem;
		width: 100%;
	}

	footer {
		text-align: center;
		margin: auto 0 0.5rem 0;
	}

	form {
		margin: 1rem 0;
	}

	label {
		display: block;
		margin-bottom: 0.5rem;
	}

	a {
		text-decoration: none;
		color: var(--color-text-link);
	}

	button {
		border: none;
		background: var(--color-btn-background);
		color: var(--color-text);
		padding: 0.25rem 0.5rem;
	}

	.btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 0.25rem;
		padding: 0.5rem 0.75rem;
		margin: 0;
		font-size: 1rem;
		font-weight: 500;
		cursor: pointer;
		text-decoration: none;
		border: 1px solid var(--color-btn-border);
		background: var(--color-btn-background);
		border-radius: 1.5em;
		corner-shape: squircle;
		line-height: 1.25;
		&.primary {
			background: var(--color-btn-primary);
			border-color: var(--color-btn-primary);
			color: var(--color-text);
		}
		&.secondary {
			background: var(--color-btn-secondary);
			border-color: var(--color-btn-secondary);
		}
		&.square {
			padding: 0.5rem;
		}
	}

	.btn-label {
		padding: 0 0.25rem;
	}

	input[type="text"],
	input[type="password"],
	input[type="file"],
	input[type="url"] {
		width: 100%;
		max-width: 400px;
		display: block;
		padding: 0.5rem 1rem;
		margin: 0;
		font-size: 1rem;
	}

	input[type="text"],
	input[type="password"],
	input[type="url"] {
		border: 2px solid var(--color-border);
		&:focus {
			outline: none;
			border: 2px solid var(--color-border-focus);
		}
	}

	input[type="checkbox"] {
		width: 1rem;
		height: 1rem;
		cursor: pointer;
		outline: 1px solid var(--color-border);
		padding: 1px;
		&:checked {
			background: var(--color-border-focus);
		}
	}
}

/*MARK: COMPONENTS LAYER - Reusable component styles */
@layer components {

	.small-text {
		font-size: 0.8rem;
		opacity: 0.8;
	}
}

/*MARK: UTILITY LAYER - Single-purpose utility classes */
@layer utility {
}
