
/* --- Base --- */

body, html {
	font-family: var(--font-family-sans);
	font-size: var(--font-size);
	line-height: var(--line-height);
	background: var(--body-bg);
	height: 100%;
	color: var(--body-fg);
	padding: 0 0;
	margin: 0 0;
	scroll-behavior: smooth;
}

/* --- Icons --- */

[data-icon-before]::before {
	content: attr(data-icon-before);
	display: inline-block;
	text-align: center;
	font-size: var(--icon-size);
	width: var(--icon-size);
	height: var(--icon-size);
	line-height: var(--icon-size);
	margin-right: var(--icon-margin);
}
[data-icon-after]::after {
	content: attr(data-icon-after);
	display: inline-block;
	text-align: center;
	font-size: var(--icon-size);
	width: var(--icon-size);
	height: var(--icon-size);
	line-height: var(--icon-size);
	margin-right: var(--icon-margin);
}

/* --- Top navigation menu --- */

nav {
	padding: 15px 40px;
	background: var(--nav-bg);
	color: var(--nav-fg);
	box-shadow: var(--nav-shadow);
	user-select: none;
}
nav div {
	margin-bottom: 40px;;
}
nav div a {
	display: block;
	padding: 0 0;
	margin: 0 10px;
	color: var(--nav-fg);
	text-shadow: 1px 1px rgba(0,0,0,0.2);
	text-decoration: none;
	white-space: nowrap;
	text-transform: uppercase;
	box-sizing: border-box;
	letter-spacing: 1px;
	border-bottom: 1px solid transparent;
	transition: border-bottom 0.3s;
	font-size: var(--nav-link-font-size);
}
nav div a.active {
	border-bottom: 1px solid var(--nav-fg);
}
nav div a:hover {
	border-bottom: 1px solid var(--nav-fg);
}
nav h1 {
	font-size: var(--nav-title-font-size);
	letter-spacing: 2px;
	text-shadow: 2px 2px rgba(0,0,0,0.2);
}

/* --- Center main page content --- */

main {
	background: var(--main-bg);
	padding: 20px 20px;
}
main a {
	color: var(--link-color);
	text-decoration: underline dotted 1px;
	transition: color 0.3s;
}
main a:hover {
	color: var(--link-active-fg);
}
main h1 {
	font-size: var(--font-size-xxl);
}
main h2 {
	font-size: var(--font-size-xl);
}
main h3 {
	font-size: var(--font-size-lg);
}
main code {
	background-color: var(--main-bg2);
	border-radius: var(--font-size);
	font-family: var(--font-family-mono);
	font-size: var(--font-size);
}
main dl {
	font-size: var(--font-size-sm);
	color: #555;
}
main dl dt {
	font-weight: bold;
}
.codeblock,main pre {
	font-family: var(--font-family-mono);
	font-size: var(--font-size);
	background-color: var(--main-bg);
	border: 1px solid var(--line-color);
	display: block;
	width: 100%;
	outline: none;
	overflow: auto;
	text-wrap: nowrap;
}
main .end-indicator {
	padding: 100px 0;
	font-size: 9pt;
	text-align: center;
}

/* --- Buttons --- */

.btn {
	border: var(--button-border);
	border-radius: 7px;
	outline: none;
	color: var(--button-fg);
	background: var(--button-bg);
	transition: border 0.3s;
	text-decoration: none;
	font-size: var(--font-size-lg);
}
.btn:hover {
	border: var(--button-border-hover);
	background: var(--button-bg-hover);
}
.btn:focus {
	border: var(--button-border-focus);
}
.btn:active {
	border: var(--button-border-active);
}

/* --- Cards --- */

.cards {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
}
.card {
	flex: 100%;
	border: 1px solid var(--line-color);
	display: flex;
	flex-direction: column;
	background: var(--card-bg);
	transition: background-color 0.3s, box-shadow 0.3s;
	box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.card:hover {
	background-color: var(--card-bg-hover);
	box-shadow: 0 0 10px rgba(0,0,0,0.2);
}
.card .card_text {
	flex-grow: 1;
}
.card .card_title_bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	text-decoration: none;
	background-color: var(--card-title-bg);
}
.card .card_title_bar .card_title {
	font-size: var(--card-title-font-size);
	padding-left: 10px;
	transition: color 0.3s;
	color: var(--card-title-fg)
}
.card .card_title_bar:hover .card_title {
	font-size: var(--card-title-font-size);
	padding-left: 10px;
	text-decoration: none;
	color: var(--link-active-fg)
}
.card .card_status {
	font-size: var(--card-status-font-size);
	color: var(--card-status-fg);
	border-top: 1px solid var(--line-color);
	padding: 2px 2px;
	margin: 0 0;
}
.card .youtube_embed img {
	border: 2px solid #000;
	box-sizing: border-box;
	width: 100%;
}

/* --- Table styling --- */

.tbl {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--table-font-size);
	font-family: var(--font-family-mono);
}
.tbl thead tr, .tbl tbody tr  {
	border-bottom: 1px solid var(--line-color);
	transition: background-color 0.4s;
}
.tbl tbody tr:nth-child(even) {
	background-color: var(--table-even-bg);
}
.tbl tbody tr:hover {
	background-color: var(--table-hover-bg);
}
.tbl tbody tr:last-child {
	border-bottom: none;
}
.tbl tbody td {
	border-right: 1px solid var(--line-color);
}
.tbl tbody td:last-child {
	border-right: none;
}

/* --- Footer at bottom of page --- */

footer {
	padding: 20px 20px;
	user-select: none;
	border-top: 1px solid var(--line-color);
	display: flex;
	justify-content: space-between;
	font-size: var(--font-size-sm);
}
footer * {
	margin: 0 0;
	padding: 0 0;
	color: var(--footer-fg);
	letter-spacing: 1px;
}

/* --- Blog --- */

.blog-nav a {
	display: block;
}
.blog-post {
	font-family: var(--font-family-serif);
}
.blog-post h3 {
	font-family: var(--font-family-sans);
}
.blog-post .blog-post-details {
	font-family: var(--font-family-sans);
	text-decoration: underline;
	text-decoration-color: var(--line-color);
}

@media screen and (min-width: 950px) {
	.blog-nav {
		float: right;
		border: 1px solid var(--line-color);
		min-width: 150px;
		background-color: var(--main-bg2);
		user-select: none;
	}
}

/* --- Responsive iframes --- */

.iframe_responsive {
	position: relative;
	overflow: hidden;
	width: 100%;
	padding-top: 56.25%;
}
.iframe_responsive_4x3 {
	padding-top: 75%;
}
.iframe_responsive iframe {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
	width: 100%;
	height: 100%;
	background: transparent;
	border: none;
}

/* --- Responsive utils --- */

@media screen and (min-width: 950px) {
	nav,main,footer {
		margin: 0 auto;
		max-width: 950px;
	}
	main {
		border-top-left-radius: 20px;
		border-top-right-radius: 20px;
	}
	nav, nav div {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
	}
	nav {
		justify-content: space-between;
	}
	nav div {
		margin-bottom: 0;
	}
	nav div a {
		display: inline-block;
		padding: 0 5px;
	}
	nav h1 {
		padding: 0 0;
		margin: 0 0;
	}
	main {
		margin-top: 10px;
	}
	.card {
		flex: 0 1 45%;
	}
	.card_placeholder {
		flex: 0 1 45%;
	}
}

@media screen and (min-width: 1350px) {
	nav {
		max-width: 1350px;
	}
	main,footer {
		max-width: 1250px;
	}
	.card {
		flex: 0 1 30%;
	}
	.card_placeholder {
		flex: 0 1 60%;
	}
}

/* --- Utils --- */

.hidden {
	display: none;
}

.font-sm {
	font-size: var(--font-size-sm);
}
.font-md {
	font-size: var(--font-size);
}
.font-lg {
	font-size: var(--font-size-lg);
}
.font-xl {
	font-size: var(--font-size-xl);
}
.font-xxl {
	font-size: var(--font-size-xxl);
}

.left {
	float: left;
}
.right {
	float: right;
}
.clearfix::after {
	content: "";
	clear: both;
	display: table;
}

.border-top {
	border-top: 1px solid var(--line-color);
}
.border-bottom {
	border-bottom: 1px solid var(--line-color);
}

.round-sm {
	border-radius: 5px;
}
.round-md {
	border-radius: 8px;
}
.round-lg {
	border-radius: 14px;
}

.round-top-sm {
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
}
.round-top {
	border-top-left-radius: 8px;
	border-top-right-radius: 8px;
}
.round-top-lg {
	border-top-left-radius: 14px;
	border-top-right-radius: 14px;
}

.round-bottom-sm {
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
}
.round-top {
	border-bottom-left-radius: 8px;
	border-bottom-right-radius: 8px;
}
.round-bottom-lg {
	border-bottom-left-radius: 14px;
	border-bottom-right-radius: 14px;
}

.pad-0 {
	padding: 0 0;
}
.pad-sm {
	padding: 3px 3px;
}
.pad-md {
	padding: 6px 6px;
}
.pad-lg {
	padding: 7px 7px;
}
.pad-xl {
	padding: 15px 15px;
}
.pad-xxl {
	padding: 40px 40px;
}

.mar-0 {
	margin: 0 0;
}
.mar-sm {
	margin: 3px 3px;
}
.mar-md {
	margin: 6px 6px;
}
.mar-lg {
	margin: 7px 7px;
}
.mar-xl {
	margin: 15px 15px;
}
.mar-auto {
	margin: 0 auto;
	display: block;
}

@media screen and (min-width: 950px) {
	.pad-xl {
		padding: 20px 20px;
	}
	.pad-lg {
		padding: 10px 10px;
	}
	.pad-md {
		padding: 7px 7px;
	}
	.pad-sm {
		padding: 4px 4px;
	}
	.mar-xl {
		margin: 20px 20px;
	}
	.mar-lg {
		margin: 10px 10px;
	}
	.mar-md {
		margin: 7px 7px;
	}
	.mar-sm {
		margin: 4px 4px;
	}
}
