:root {

	/* Base coloor definitions, do not use directly*/
	--ff-yellow: #ffb400;
	--ff-magenta: #dc0067;
	--ff-blue: #009ee0;

	--ff-very-bright: #fff;
	--ff-brighter: #f2f2f2;
	--ff-bright: #e2e2e2;
	--ff-dim-bright: #aaa;
	--ff-mid: #444;
	--ff-dark: #333;
	--ff-slightly-darker: #272727;
	--ff-darker: #222;
	--ff-very-dark: #000;

}

:root {
	--page-bg: var(--ff-bright);
	--page-fg: var(--ff-very-dark);
	--page-link: var(--ff-magenta);
	--page-max-width: 120ch;

	--nav-bg: var(--ff-brighter);
	--nav-down: var(--ff-blue);
	--main-bg: var(--ff-brighter);

	--aside-bg: var(--ff-very-bright);
	--aside-width: 35ch;

	--metadata-fg: var(--ff-mid);
	--heading-fg: var(--ff-magenta);

	--code-bg: var(--ff-very-bright);
	--code-fg: var(--ff-very-dark);

	--font: Helvetica, Arial, sans-serif;
	--heading-font: 2rem var(--font);
	--monospace-font: Noto Sabs Mono, monospace, mono;

	--block-shadow: 0 0 2em #0008;
}

@media (prefers-color-scheme: dark) {
	:root {
		--page-bg: var(--ff-darker);
		--page-fg: var(--ff-bright);
		--page-link: var(--ff-yellow);
		
		--nav-bg: var(--ff-dark);
		--nav-down: var(--ff-mid);
		--main-bg: var(--ff-dark);
		
		--aside-bg: var(--ff-slightly-darker);
		
		--metadata-fg: var(--ff-dim-bright);
		--heading-fg: var(--ff-blue);
		
		--code-bg: var(--ff-slightly-darker);
		--code-fg: var(--ff-bright);
	}
}

@media print {
	:root {
		--page-bg: #fff;
		--page-fg: #000;

		--block-shadow: unset;
		--heading-fg: #000;
		--nav-bg: unset;
		--main-bg: unset;
		--aside-bg: unset;
	}

	nav > .nav-links {
		display: none;
	}

	nav > a.sitename {
		font-size: 1rem;
	}
}


/* Responiveness rules */

/* Matches when below --page-width */
@media (max-width: 120ch) {
	a.sitename.freifunk-branding {
		margin-left: 1.5ch;
	}
	footer {
		padding: 0 1ch;
	}
}

@media (max-width: 50ch) {
	a.sitename.freifunk-branding {
		flex-direction: column;
		margin-left: 0;
	}
	
	.freifunk-branding > .branding-text {
		margin-top: 0.5em;
		text-align: center;
	}

	a.freifunk-branding > img {
		height: 2em;
	}

	.nav-links {
		font-size: 1.3em;
	}

}

/* Element styling */

html {
	margin: 0;
	background: var(--page-bg);
	color: var(--page-fg);
	font-family: var(--font);
}

body {
	max-width: var(--page-max-width);
	margin: auto;
}

body > main {
	background: var(--main-bg);
	padding: 1em 2ch;
	box-shadow: var(--block-shadow);
	position: relative;
}

body > header {
	padding-top: 2em;
}

h1, a.sitename {
	margin: 0;
	background: var(--heading-bg);
	color: var(--heading-fg);
	border-bottom: var(--heading-underline);
	font: var(--heading-font)

}

h1 > a, h2 > a, h3 > a, a.sitename {
	text-decoration: none;
}

a {
	color: var(--page-link);
}

code, pre {
	background: var(--code-bg);
	color: var(--code-fg);
	font-family: var(--monospace-font);
	font-size: 1em;
}

code:not(pre > code) {
	border-radius: .2em;
	padding: .1em .3ch;
}

pre {
	padding: .3em 1ch;
	margin: 0 -1ch;
}

p.metadata {
	color: var(--metadata-fg);
}

article:not(:first-of-type)::before {
	content: "~ ~ ~";
	text-align: center;
	display: block;
	margin-bottom: 2em;
	margin-top: 2em;
	color: var(--metadata-fg);
}

/* Navigation */

.nav-links, .pagination > ul {
	display: flex;
	justify-content: start;
	flex-wrap: wrap;
	list-style: none;
	padding: 0;
	background: var(--nav-bg);
	box-shadow: var(--block-shadow);
}

.pagination > ul {
	width: fit-content;
	margin: auto;
}

.nav-links > li {
	padding: 0;
}

.nav-links > li > a, .pagination > ul > li > a, .current-page {
	display: inline-block;
	padding: .5em 2ch;
}

.nav-links > li > a[aria-current="true"],
.nav-links > li > a[aria-current="page"],
.current-page {
	text-decoration: none;
	background: linear-gradient(to top, var(--nav-down) .2em, #0000 .2em);
}

.nav-links > li > a:hover,
.pagination a:hover {
	background: var(--page-link);
	color: var(--nav-bg);
}

/* Aside reponsiveness */

@media (min-width: 100ch) {
	aside {
		width: var(--aside-width);
		height: 100%;
		background: var(--aside-bg);
		position: absolute;
		top: 0;
		right: 0;
		padding-left: 1ch;
	}

	body > main.has-aside {
		padding-right: calc(var(--aside-width) + 2ch);
	}
}
/* Custom Freifunk Branding */

a.sitename {
	color: var(--ff-magenta);
}

.freifunk-branding {
	display: flex;
}

.freifunk-branding > img {
	object-fit: contain;
	height: 3.7em;
	margin-top: -.3em;
}

.freifunk-branding > .branding-text {
	padding-left: 1ch;
}

