/* ============================================================
   wastlund.net — main.css
   Based on: Highlights by HTML5 UP (CCA 3.0)
   ============================================================ */

/* --- Custom Properties --- */

:root {
	--color-primary: #007296;
	--color-primary-hover: #008fbb;
	--color-primary-active: #00abe1;
	--color-bg-dark: #313a3d;
	--color-text: #6f7577;
	--color-heading: #555;
	--color-heading-light: #454d50;
	--color-muted: #a8b0b3;
	--color-border: #ddd;
	--color-overlay: rgba(255, 255, 255, 0.95);
	--color-overlay-header: rgba(255, 255, 255, 0.85);
	--color-white: #fff;
	--font-sans: "Merriweather Sans", Helvetica, sans-serif;
	--font-mono: "Courier New", monospace;
	--font-size-base: 1.25rem;
	--font-weight-normal: 300;
	--font-weight-bold: 700;
	--font-weight-heading: 800;
	--line-height-base: 1.75em;
	--transition-speed: 0.2s;
}

@media (prefers-color-scheme: dark) {
	:root {
		--color-text: #b8bec0;
		--color-heading: #d0d4d6;
		--color-heading-light: #c0c6c8;
		--color-muted: #7a8284;
		--color-overlay: rgba(30, 36, 40, 0.94);
		--color-overlay-header: rgba(30, 36, 40, 0.88);
		--color-border: #444;
		--color-bg-dark: #1a1f22;
	}
}

/* --- @font-face (Merriweather Sans) --- */

@font-face {
	font-family: "Merriweather Sans";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url(../fonts/2-cM9IRs1JiJN1FRAMjTN5zd9vgsFHXwWDvLBsPDdpWMaq3NzdsIxxV1mLuqtx7e6A.woff2)
		format("woff2");
	unicode-range:
		U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url(../fonts/2-cM9IRs1JiJN1FRAMjTN5zd9vgsFHXwWDvLBsPDdpWMaq3NzdsKxxV1mLuqtx7e6A.woff2)
		format("woff2");
	unicode-range:
		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
		U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
		U+1EA0-1EF9, U+20AB;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url(../fonts/2-cM9IRs1JiJN1FRAMjTN5zd9vgsFHXwWDvLBsPDdpWMaq3NzdsLxxV1mLuqtx7e6A.woff2)
		format("woff2");
	unicode-range:
		U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
		U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url(../fonts/2-cM9IRs1JiJN1FRAMjTN5zd9vgsFHXwWDvLBsPDdpWMaq3NzdsFxxV1mLuqtx4.woff2)
		format("woff2");
	unicode-range:
		U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
		U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 300;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX4QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 300;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX6QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
		U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
		U+1EA0-1EF9, U+20AB;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 300;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX7QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
		U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 300;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX1QjXp8Bte.woff2)
		format("woff2");
	unicode-range:
		U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
		U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX4QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX6QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
		U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
		U+1EA0-1EF9, U+20AB;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX7QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
		U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX1QjXp8Bte.woff2)
		format("woff2");
	unicode-range:
		U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
		U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX4QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX6QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
		U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
		U+1EA0-1EF9, U+20AB;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX7QjXp8Bte9ZM.woff2)
		format("woff2");
	unicode-range:
		U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
		U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Merriweather Sans";
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(../fonts/2-c99IRs1JiJN1FRAMjTN5zd9vgsFHX1QjXp8Bte.woff2)
		format("woff2");
	unicode-range:
		U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
		U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --- Reset --- */

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

a,
abbr,
acronym,
address,
article,
aside,
audio,
b,
big,
blockquote,
body,
canvas,
caption,
cite,
code,
dd,
del,
details,
div,
dl,
dt,
em,
fieldset,
figcaption,
figure,
footer,
form,
h1,
h2,
h3,
h4,
h5,
h6,
header,
hgroup,
html,
i,
iframe,
img,
ins,
kbd,
label,
legend,
li,
main,
mark,
menu,
nav,
object,
ol,
p,
pre,
q,
s,
samp,
section,
small,
span,
strike,
strong,
sub,
summary,
sup,
table,
tbody,
td,
tfoot,
th,
thead,
time,
tr,
ul,
var,
video {
	border: 0;
	font: inherit;
	font-size: 100%;
	vertical-align: baseline;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section {
	display: block;
}

body {
	font-size: 1em;
	line-height: 1;
	text-decoration: none;
	letter-spacing: 0.025em;
}
ol,
ul {
	list-style: none;
}
blockquote,
q {
	quotes: none;
}
blockquote::before,
blockquote::after,
q::before,
q::after {
	content: "";
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

/* --- Skip Link --- */

.skip-link {
	position: absolute;
	top: -100%;
	left: 0;
	background: var(--color-primary);
	color: var(--color-white);
	padding: 0.5em 1em;
	z-index: 10000;
	text-decoration: none;
	font-weight: var(--font-weight-bold);
	border-radius: 0 0 0.25em 0;
}
.skip-link:focus {
	top: 0;
	outline: 2px solid var(--color-white);
}

/* --- Base --- */

html {
	background-color: var(--color-bg-dark);
	background-attachment: fixed, fixed;
	background-image: url(../img/overlay.png), url(../img/bg.avif);
	background-position:
		top left,
		center center;
	background-repeat: repeat, no-repeat;
	background-size: auto, cover;
	color: var(--color-white);
	font-size: var(--font-size-base);
	scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
	body,
	html {
		width: 100%;
		height: 100%;
		background-attachment: scroll;
		background-repeat: repeat;
		background-size: cover;
	}
	.main-bg {
		background-size: cover;
		width: 100vw;
	}
}

html.is-loading body *,
html.is-loading body *::before,
html.is-loading body *::after {
	animation: none;
	transition: none;
}

body,
input,
select,
textarea {
	color: var(--color-text);
	font-family: var(--font-sans);
	font-size: 1em;
	font-weight: var(--font-weight-normal);
	line-height: var(--line-height-base);
}

body {
	background: transparent;
}

/* --- Links --- */

a {
	transition:
		color var(--transition-speed) ease-in-out,
		border-bottom-color var(--transition-speed) ease-in-out;
	border-bottom: dotted 1px;
	color: var(--color-primary);
	text-decoration: none;
}
a:hover {
	border-bottom-color: transparent;
	color: var(--color-primary-hover);
}

/* --- Typography --- */

b,
strong,
.bold {
	color: var(--color-heading);
	font-weight: var(--font-weight-bold);
}
em,
i {
	font-style: italic;
}
p {
	margin: 0 0 0.75em;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	color: var(--color-heading);
	font-weight: var(--font-weight-heading);
	line-height: 150%;
	margin: 0 0 1em;
	text-transform: uppercase;
}

h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
	color: inherit;
	text-decoration: none;
}

h1 {
	font-size: 2.4rem;
}
h2 {
	font-size: 2rem;
}
h3 {
	font-size: 1.6rem;
}
h4 {
	font-size: 1.4rem;
}
h5 {
	font-size: 1.2rem;
}
h6 {
	font-size: 1.1rem;
}

sub {
	font-size: 0.8em;
	position: relative;
	top: 0.5em;
}
sup {
	font-size: 0.8em;
	position: relative;
	top: -0.5em;
}

hr {
	border: 0;
	border-bottom: solid 1px var(--color-border);
	margin: 2em 0;
}
hr.major {
	margin: 3em 0;
}

blockquote {
	border-left: solid 1rem var(--color-border);
	font-style: italic;
	margin: 0 0 2em;
	padding: 0.5em 0 0.5em 1.5em;
}

code {
	background: rgba(144, 144, 144, 0.075);
	font-family: var(--font-mono);
	font-size: 0.9em;
	margin: 0 0.25em;
	padding: 0.25em 0.65em;
}
pre {
	font-family: var(--font-mono);
	font-size: 0.9em;
	margin: 0 0 2em;
}
pre code {
	display: block;
	line-height: 1.75em;
	padding: 1em 1.5em;
	overflow-x: auto;
}

/* --- Loading Spinner --- */

@keyframes spinner-show {
	0% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}
@keyframes spinner-hide {
	0% {
		color: var(--color-heading-light);
		z-index: 10001;
		transform: scale(1) rotate(0);
	}
	99% {
		color: var(--color-bg-dark);
		z-index: 10001;
		transform: scale(0.5) rotate(360deg);
	}
	100% {
		color: var(--color-bg-dark);
		z-index: -1;
		transform: scale(0) rotate(360deg);
	}
}
@keyframes spinner-rotate {
	0% {
		transform: scale(1) rotate(0);
	}
	100% {
		transform: scale(1) rotate(360deg);
	}
}
@keyframes overlay-hide {
	0% {
		opacity: 1;
		z-index: 10000;
	}
	15% {
		opacity: 1;
		z-index: 10000;
	}
	99% {
		opacity: 0;
		z-index: 10000;
	}
	100% {
		opacity: 0;
		z-index: -1;
	}
}

body::before {
	-webkit-font-smoothing: antialiased;
	animation:
		spinner-show 1.5s 1 0.25s ease forwards,
		spinner-hide 0.25s ease-in-out forwards;
	transform-origin: 50% 50%;
	color: var(--color-heading-light);
	content: "";
	cursor: default;
	display: block;
	font-size: 2em;
	height: 2em;
	left: 50%;
	opacity: 0;
	line-height: 2em;
	margin: -1em 0 0 -1em;
	position: fixed;
	text-align: center;
	top: 50%;
	width: 2em;
	z-index: -1;
	/* CSS spinner instead of Font Awesome glyph */
	background: conic-gradient(
		from 0deg,
		transparent 0%,
		var(--color-heading-light) 100%
	);
	mask: radial-gradient(
		farthest-side,
		transparent calc(100% - 3px),
		#000 calc(100% - 2px)
	);
	-webkit-mask: radial-gradient(
		farthest-side,
		transparent calc(100% - 3px),
		#000 calc(100% - 2px)
	);
	border-radius: 50%;
}

body::after {
	animation: overlay-hide 1s ease-in forwards;
	background: var(--color-bg-dark);
	content: "";
	display: block;
	height: 100%;
	left: 0;
	opacity: 0;
	position: fixed;
	top: 0;
	width: 100%;
	z-index: -1;
}

html.is-loading body::before {
	animation:
		spinner-show 1.5s 1 0.25s ease forwards,
		spinner-rotate 0.75s infinite linear;
	z-index: 10001;
}
html.is-loading body::after {
	animation: none;
	opacity: 1;
	z-index: 10000;
}

/* --- Section / Article --- */

section.special {
	text-align: center;
}

header p {
	color: var(--color-muted);
	letter-spacing: 0.025em;
}
header h1 + p {
	margin-top: -1em;
}
header h2 + p {
	margin-top: -1em;
}
header h3 + p {
	margin-top: -0.8em;
}
header h4 + p,
header h5 + p,
header h6 + p {
	font-size: 0.8em;
	margin-top: -0.6em;
}

header.major {
	text-align: center;
}
header.major h1,
header.major h2,
header.major h3,
header.major h4,
header.major h5,
header.major h6 {
	position: relative;
}
header.major h1::after,
header.major h2::after,
header.major h3::after,
header.major h4::after,
header.major h5::after,
header.major h6::after {
	background: var(--color-border);
	content: "";
	display: block;
	height: 2px;
	margin: 0.75em auto 0;
	position: relative;
	width: 4em;
	border-radius: 1px;
}
header.major p {
	margin-top: 0;
}

/* --- Container --- */

.container {
	margin-left: auto;
	margin-right: auto;
	width: 35em;
}

/* --- Icon --- */

.icon {
	text-decoration: none;
	border-bottom: none;
	position: relative;
}
.icon > .label {
	display: none;
}
.icon.major {
	display: block;
	margin: 0 0 1em;
}
svg.icon.major {
	display: block;
	height: 2.5em;
	margin: 0 auto 1em;
	width: auto;
}

/* --- Image --- */

.image {
	border: 0;
	display: inline-block;
	position: relative;
}
.image::before {
	background: url(../img/overlay.png);
	content: "";
	display: block;
	height: 100%;
	left: 0;
	position: absolute;
	top: 0;
	width: 100%;
}
.image img {
	display: block;
}
.image.left {
	float: left;
	margin: 0 1.5em 1em 0;
	top: 0.25em;
}
.image.right {
	float: right;
	margin: 0 0 1em 1.5em;
	top: 0.25em;
}
.image.left,
.image.right {
	max-width: 40%;
}
.image.left img,
.image.right img {
	width: 100%;
}
.image.fit {
	display: block;
	margin: 0 0 2em;
	width: 100%;
}
.image.fit img {
	width: 100%;
}

/* --- Lists --- */

ol {
	list-style: decimal;
	margin: 0 0 2em;
	padding-left: 1.25em;
}
ol li {
	padding-left: 0.25em;
}
ul {
	list-style: disc;
	margin: 0 0 2em;
	padding-left: 1em;
}
ul li {
	padding-left: 0.5em;
}
ul.alt {
	list-style: none;
	padding-left: 0;
}
ul.alt li {
	border-top: solid 1px var(--color-border);
	padding: 0.5em 0;
}
ul.alt li:first-child {
	border-top: 0;
	padding-top: 0;
}

ul.icons {
	cursor: default;
	list-style: none;
	padding-left: 0;
}
ul.icons li {
	display: inline-block;
	padding: 0 1.5em 0 0;
}
ul.icons li:last-child {
	padding-right: 0;
}
ul.icons li .icon svg {
	width: 1.5em;
	height: 1.5em;
}

ul.icons-grid {
	text-align: center;
	list-style: none;
	padding: 0;
	position: relative;
}
ul.icons-grid li {
	display: block;
	float: left;
	padding: 3em 0;
	text-align: center;
	width: 50%;
}
ul.icons-grid li a {
	display: inline-block;
	text-align: center;
}
ul.icons-grid li strong {
	color: var(--color-primary);
	margin: 0;
}
ul.icons-grid li:nth-child(2n + 1) {
	box-shadow:
		inset -1px 0 0 0 var(--color-border),
		1px 0 0 0 var(--color-border);
}
ul.icons-grid li:nth-child(2n + 3)::before {
	background: var(--color-border);
	content: "";
	display: block;
	height: 2px;
	margin-top: -3em;
	position: absolute;
	width: 100%;
}
ul.icons-grid::after {
	clear: both;
	content: "";
	display: block;
}

ul.actions {
	cursor: default;
	list-style: none;
	padding-left: 0;
}
ul.actions li {
	display: inline-block;
	padding: 0 1em 0 0;
	vertical-align: middle;
}
ul.actions li:last-child {
	padding-right: 0;
}

/* --- Buttons --- */

button,
input[type="button"],
input[type="reset"],
input[type="submit"],
.button {
	appearance: none;
	transition:
		background-color var(--transition-speed) ease-in-out,
		color var(--transition-speed) ease-in-out;
	background-color: transparent;
	border-radius: 0.5em;
	border: 0;
	color: var(--color-heading-light);
	cursor: pointer;
	display: inline-block;
	font-weight: var(--font-weight-bold);
	height: 3em;
	letter-spacing: 0.05em;
	line-height: 3.15em;
	padding: 0 2em;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
}
button:hover,
input[type="button"]:hover,
input[type="reset"]:hover,
input[type="submit"]:hover,
.button:hover {
	background-color: rgba(144, 144, 144, 0.075);
	color: var(--color-heading);
}
button:active,
input[type="button"]:active,
input[type="reset"]:active,
input[type="submit"]:active,
.button:active {
	background-color: rgba(144, 144, 144, 0.15);
	color: var(--color-heading);
}

button.special,
.button.special,
input[type="submit"].special {
	background-color: var(--color-primary);
	border: 0;
	box-shadow: none;
	color: var(--color-white);
	padding: 1.75em 2em;
	line-height: 0.1em;
}
button.special:hover,
.button.special:hover,
input[type="submit"].special:hover {
	background-color: var(--color-primary-hover);
}
button.special:active,
.button.special:active,
input[type="submit"].special:active {
	background-color: var(--color-primary-active);
}

button:disabled,
.button:disabled {
	background-color: var(--color-text);
	box-shadow: none;
	color: var(--color-white);
	cursor: default;
	opacity: 0.25;
}

.add-arrow-after::after {
	content: " \2193";
}

/* --- Forms --- */

label {
	color: var(--color-text);
	display: block;
	font-size: 0.9em;
	font-weight: var(--font-weight-bold);
	margin: 1em 0 0;
}

.form-label {
	color: var(--color-text);
	display: block;
	font-size: 0.9em;
	font-weight: var(--font-weight-bold);
	margin: 1em 0 0;
}

.form-control {
	appearance: none;
	background: rgba(144, 144, 144, 0.075);
	border: 0;
	border-radius: 0.35em;
	color: var(--color-text);
	display: block;
	font-size: 1em;
	line-height: var(--line-height-base);
	padding: 0 0.75em;
	width: 100%;
}
.form-control:focus {
	outline: 2px solid var(--color-primary);
	outline-offset: -2px;
}

.form-row {
	display: flex;
	flex-wrap: wrap;
	gap: 1em;
}
.form-col {
	flex: 1 1 0%;
	min-width: 0;
}
.form-group {
	margin-top: 1em;
}

.valid-feedback {
	display: none;
	margin-top: 0.25rem;
	font-size: 0.875em;
	color: #28a745;
}
.invalid-feedback {
	display: none;
	margin-top: 0.25rem;
	font-size: 0.875em;
	color: #dc3545;
}

.needs-validation .form-control:valid ~ .valid-feedback {
	display: block;
}
.needs-validation .form-control:invalid ~ .invalid-feedback {
	display: block;
}
.needs-validation .form-control:valid {
	border-color: #28a745;
}
.needs-validation .form-control:invalid {
	border-color: #dc3545;
}

/* --- Main Background (section crossfade) --- */

.main-bg {
	transition: opacity 0.5s ease-out;
	background-attachment: fixed, fixed;
	background-position:
		top left,
		center center;
	background-repeat: repeat, none;
	background-size: auto, cover;
	height: 100%;
	left: 0;
	opacity: 0;
	position: fixed;
	top: 0;
	width: 100%;
	z-index: -1;
}
.main-bg.active {
	opacity: 1;
	background-attachment: scroll;
}

/* --- Main Sections --- */

.main {
	position: relative;
}
.main .image.primary {
	display: none;
}
.main .container {
	padding: 5em 1.5em 8em;
	background: var(--color-overlay);
	box-shadow: inset 0 1px 0 0 var(--color-border);
}
.main .container::before {
	content: "";
	display: inline-block;
	vertical-align: middle;
	width: 1px;
}
.main .container .content {
	display: inline-block;
	text-align: left;
	margin-right: 1px;
	vertical-align: middle;
	width: calc(100% - 2rem);
}

.main .goto-next {
	transition: background-color var(--transition-speed) ease-in-out;
	background-color: rgba(144, 144, 144, 0.075);
	background-image: url(../img/arrow.svg);
	background-position: center center;
	background-repeat: no-repeat;
	border-radius: 100%;
	border: 0;
	bottom: 3em;
	display: block;
	height: 4em;
	left: 50%;
	line-height: 4em;
	margin-left: -2em;
	overflow: hidden;
	position: absolute;
	text-indent: 4em;
	white-space: nowrap;
	width: 4em;
}
.main .goto-next:hover {
	background-color: rgba(144, 144, 144, 0.15);
}

/* --- Hero (Header) --- */

#header {
	margin: 20vh 0 -1.75em;
	position: relative;
	text-align: center;
	height: 100%;
	width: 100%;
}
#header::after {
	content: "";
	display: inline-block;
	vertical-align: middle;
}

#header > header {
	color: rgba(0, 0, 0, 0.5);
	display: inline-block;
	vertical-align: middle;
	height: 60vh;
}
#header > header b,
#header > header h1,
#header > header h2,
#header > header h3,
#header > header h4,
#header > header h5,
#header > header h6,
#header > header strong {
	color: var(--color-bg-dark);
}
#header > header a {
	color: inherit;
}
#header > header a:hover {
	color: var(--color-bg-dark);
}
#header > header h1 {
	font-size: 3em;
	line-height: 1.25em;
	margin: 0;
}
#header > header h1::after {
	background: var(--color-bg-dark);
	margin-top: 0.5em;
}
#header > header p {
	color: var(--color-heading);
	font-weight: var(--font-weight-bold);
	margin: 1.5em 0 0;
}

#header > .container {
	align-items: center;
	justify-content: center;
	background: var(--color-overlay-header);
	border-radius: 1rem 1rem 0 0;
	display: flex;
	height: 20vh;
	position: relative;
}
#header > .container > :last-child {
	margin-bottom: 0;
}

/* Hero animation */
.flipX {
	animation: anim-flipX 4s ease;
}
@keyframes anim-flipX {
	0%,
	25% {
		opacity: 0;
		rotate: 15deg;
		transform: rotateX(45deg);
	}
	100% {
		opacity: 1;
		transform: rotateX(0deg);
	}
}

#header > .major {
	color: var(--color-bg-dark);
	text-shadow:
		1px 1px 0 rgba(255, 255, 255, 0.8),
		-1px 1px 0 rgba(255, 255, 255, 0.8),
		-1px -1px 0 rgba(255, 255, 255, 0.8),
		1px -1px 0 rgba(255, 255, 255, 0.8);
}

.actions a {
	font-size: var(--font-size-base);
}

/* --- Footer --- */

#footer {
	min-height: 100vh;
	padding: 0 0 12em;
	position: relative;
	text-align: center;
}
#footer .container {
	padding: 5em 2.5em 3em;
	background: var(--color-overlay);
	box-shadow: inset 0 1px 0 0 var(--color-border);
	border-radius: 0 0 1rem 1rem;
}
#footer > footer {
	bottom: 2em;
	color: rgba(255, 255, 255, 0.5);
	left: 0;
	position: absolute;
	text-align: center;
	width: 100%;
}
#footer > footer b,
#footer > footer h1,
#footer > footer h2,
#footer > footer h3,
#footer > footer h4,
#footer > footer h5,
#footer > footer h6,
#footer > footer strong {
	color: var(--color-white);
}
#footer > footer a {
	color: inherit;
}
#footer > footer a:hover {
	color: var(--color-white);
}

#footer > footer > .copyright {
	text-shadow: 0.1em 0.1em 0.2em #555;
	font-size: 0.8em;
	line-height: 1em;
	padding: 0;
}
#footer > footer > .copyright li {
	border-left: solid 1px rgba(255, 255, 255, 0.2);
	display: inline-block;
	margin: 0 0 0 1em;
	padding: 0 0 0 1em;
}
#footer > footer > .copyright li:first-child {
	border-left: 0;
	margin-left: 0;
	padding-left: 0;
}

a.scrolly > h1,
a.scrolly > h2,
a.scrolly > h3 {
	color: var(--color-primary);
}

/* --- Language Selector --- */

.language-selector {
	position: absolute;
	top: 0;
	right: 0;
	width: 100%;
	display: flex;
	flex-direction: row-reverse;
	padding: 1rem 1.5rem;
	z-index: 100;
}
.language-selector ul {
	list-style: none;
	padding: 0;
	margin: 0;
}
.language-selector ul li {
	display: inline;
}
.language-selector button {
	background: rgba(255, 255, 255, 0.4);
	border: none;
	border-radius: 0.4rem;
	color: #000;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 0.25rem;
	padding: 0.25rem 0.5rem;
	font-size: inherit;
	font-family: inherit;
	text-decoration: none;
	border-bottom: none;
	line-height: inherit;
	height: auto;
	letter-spacing: normal;
	text-transform: none;
	font-weight: inherit;
}
.language-selector button:hover {
	background: rgba(255, 255, 255, 0.6);
	color: #000;
	border-bottom: none;
}

.flag {
	filter: grayscale(100%);
}
.language-selector button:hover .flag {
	filter: none;
}

#submit-btn {
	margin: 1rem 0;
}

/* --- Responsive: Large (max 1680px) --- */

@media screen and (max-width: 1680px) {
	body,
	input,
	select,
	textarea {
		font-size: 1rem;
	}
	.container {
		width: 35em;
	}
}

/* --- Responsive: Medium (max 980px) --- */

@media screen and (max-width: 980px) {
	.container {
		width: 80%;
	}

	.main-bg {
		display: none;
	}
	.main .image.primary {
		display: block;
		margin: 0 0 4em;
	}
	.main .container {
		padding: 3em 3em 8em;
	}
	.main .container::before {
		display: none;
	}

	#header > header {
		margin: auto 10%;
		width: 80%;
	}

	#footer {
		min-height: 0;
		padding: 0;
		background-image: url(../img/overlay.png), url(../img/bg.jpg);
		background-position: bottom center;
	}
	#footer .container {
		padding: 3em 3em 1em;
	}
	#footer > footer {
		padding: 3em 3em 1em;
		bottom: auto;
		position: relative;
	}
}

/* --- Responsive: Small (max 736px) --- */

@media screen and (max-width: 736px) {
	h2 {
		font-size: 1.35em;
	}

	#header > .container {
		padding: 0;
	}
	#header > .container > :last-child {
		margin-bottom: 10vh;
	}

	.main .container {
		padding: 3em 1.5em 1em;
	}
	.main .container .image.primary:first-child {
		margin: -1.5em 0 2.5em;
	}
	.main .goto-next {
		display: none;
	}

	#header {
		height: 90vh;
	}
	#header::after {
		height: 70vh;
	}
	#header > header {
		padding-bottom: 0;
	}
	#header > header h1 {
		font-size: 2em;
	}
	#header > header p {
		margin-top: 1em;
	}
	#header > .container {
		background: transparent;
		color: var(--color-white);
		margin: auto;
		width: 100vw;
	}
	#header .actions a {
		color: inherit;
	}

	#footer .container {
		padding: 3em 1.5em 1em;
	}
}

/* --- Responsive: XS (max 480px) --- */

@media screen and (max-width: 480px) {
	body,
	html {
		min-width: 320px;
	}

	ul.actions {
		margin: 0 0 2em;
	}
	ul.actions li {
		display: block;
		padding: 1em 0 0;
		text-align: center;
		width: 100%;
	}
	ul.actions li:first-child {
		padding: 0 2rem;
	}
	ul.actions li > * {
		margin: 0;
		width: 100%;
	}

	ul.icons-grid li {
		box-shadow: inset 0 1px 0 0 var(--color-border);
		float: none;
		margin: 2em 0 0;
		padding: 2em 0 0;
		width: 100%;
	}
	ul.icons-grid li:first-child {
		box-shadow: none;
		margin-top: 0;
		padding: 1em 0 0;
	}
	ul.icons-grid li:nth-child(2n + 1) {
		box-shadow: none;
	}
	ul.icons-grid li:nth-child(2n + 3)::before {
		display: none;
	}

	button,
	input[type="button"],
	input[type="reset"],
	input[type="submit"] {
		padding: 0;
	}

	.main .container {
		padding: 3em 1em 1em;
	}
	.main .container .image.primary:first-child {
		margin: -2em 0 2.5em;
	}

	#footer .container {
		padding: 3em 1em 1em;
	}
	#footer > footer > .copyright {
		line-height: inherit;
	}
	#footer > footer > .copyright li {
		border-left: 0;
		display: block;
		margin: 0;
		padding: 0;
	}
}

/* --- Reduced Motion --- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms;
		animation-iteration-count: 1;
		transition-duration: 0.01ms;
	}
	html {
		scroll-behavior: auto;
	}
	.flipX {
		animation: none;
	}
}

/* --- Focus Visible --- */

:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}
button:focus-visible,
a:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

/* --- Visually hidden (sr-only) --- */

.sr-only,
.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* --- Contact form alerts & spinner --- */

.alert {
	padding: 0.75rem 1rem;
	margin-bottom: 1rem;
	border-radius: 4px;
	font-size: 0.9rem;
}

.alert-success {
	background: #d4edda;
	color: #155724;
	border: 1px solid #c3e6cb;
}

.alert-danger {
	background: #f8d7da;
	color: #721c24;
	border: 1px solid #f5c6cb;
}

.spinner {
	display: inline-block;
	width: 1em;
	height: 1em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: spin 0.6s linear infinite;
	vertical-align: middle;
	margin-left: 0.5rem;
}

.spinner.hidden {
	display: none;
}

@keyframes spin {
	to { transform: rotate(360deg); }
}
