:root {
	--color-bg: #21252b;
	--color-bg-light: #2c313a;
	
	--color-white: #c5cad3;
	
	--color-gray-light: #acb0b9;
	--color-gray: #828997;
	--color-gray-dark: #5c6370;
	--color-gray-dark-dark: #454b54;
	
	--color-red: #e06c75;
	--color-red-light: #e9969d;
	--color-red-dark: #cb4d58;
	
	--color-orange: #d19a66;
	--color-orange-light: #ddb48d;
	--color-orange-dark: #b9804b;
	
	--color-yellow: #dace71;
	--color-yellow-light: #e5dc9a;
	--color-yellow-dark: #c4b754;
	
	--color-green: #98c379;
	--color-green-light: #b3d39c;
	--color-green-dark: #7fa762;
	
	--color-cyan: #71d6bc;
	--color-cyan-light: #98e1cf;
	--color-cyan-dark: #55bea4;
	
	--color-blue: #61afef;
	--color-blue-light: #90c7f4;
	--color-blue-dark: #3e97e0;
	
	--color-purple: #c678dd;
	--color-purple-light: #d7a1e8;
	--color-purple-dark: #af5bc8;
	
	
	
	--theme: var(--color-green);
	--theme-light: var(--color-green-light);
	--theme-dark: var(--color-green-dark);
}
* {
	box-sizing: border-box;
}



html, body {
	margin: 0;
	padding: 0;
	overflow-x: hidden;
	
	color: var(--color-white);
	background-color: var(--color-bg);
}
html {
	font-size: 16px;
}
@media only screen and (max-width: 1000px) {
	html {
		font-size: 14px;
	}
}
body {
	min-height: 100vh;
	min-height: 100dvh;
	
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	
	font-size: 0;
	font-family: "Ubuntu", sans-serif;
}
span {
	display: block;
	font-size: 1rem;
}
a {
	text-decoration: none;
}
span a {
	color: var(--theme);
}
span a:hover {
	text-decoration: underline;
	cursor: pointer;
}
span.gray a {
	color: var(--color-gray);
	text-decoration: underline;
	text-decoration-style: dotted;
}
span.gray a:hover {
	text-decoration-style: solid;
}
button {
	all: unset;
}
button:focus {
	outline: revert;
}
.link {
	color: var(--theme);
}
.link:hover {
	cursor: pointer;
	text-decoration: underline;
}

span.inline {
	display: inline;
}
span.align-left {
	text-align: left;
}
.colored {
	color: var(--theme);
}
.gray {
	color: var(--color-gray);
}
.white {
	color: var(--color-white);
}

.hidden {
	visibility: hidden !important;
}
.gone {
	display: none !important;
}

.select-none {
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
}





/* PAGE LAYOUT */
.page-container {
	flex-grow: 1;
	
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-start;
}
.page-container.full-page {
	width: 100%;
}
.page {
	max-width: 50vw;
	
	padding: 6rem 2rem;
	
	display: flex;
	flex-direction: column;
	gap: 6rem;
	
	text-align: center;
}
.page-container.full-page .page {
	width: 100%;
}
@media only screen and (max-width: 1600px) {
	.page {
		max-width: 70vw;
	}
}
@media only screen and (max-width: 1300px) {
	.page {
		max-width: 80vw;
	}
}
@media only screen and (max-width: 1000px) {
	.page {
		max-width: 100vw;
		padding: 6rem 1rem;
	}
}





/* PAGE TITLE */
.page > .title {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	
	margin: 2rem 0;
}
@media only screen and (max-width: 1000px) {
	.page > .title {
		margin: 0 0;
	}
}
.page > .title h1, .page > .title h2 {
	align-self: center;
	margin: 0;
}

.page > .title h1 {
	font-size: 3rem;
	
	background-image: linear-gradient(to right, var(--color-red), var(--color-orange), var(--color-yellow), var(--color-green), var(--color-blue), var(--color-purple));
	-webkit-background-clip: text;
	color: transparent;
}
.page > .title h2 {
	font-size: 1.5rem;
}





/* SECTIONS */
.section {
	display: flex;
	flex-direction: column;
	
	width: 100%;
}

.section > .header {
	align-self: flex-start;
	
	position: relative;
	padding-right: 0.5rem;
	
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	justify-content: flex-start;
	gap: 0.5rem;
	
	color: var(--theme);
}
.section > .header .extra {
	color: var(--color-gray);
}

.section > .content {
	display: flex;
	flex-direction: column;
	gap: 2rem;
	
	padding: 1rem 2rem;
}
.section > .content.rows {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: center;
}
.section > .content.full-page {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}





/* BOX */
.box {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1rem;
	
	padding: 2rem;
	
	border-radius: 2rem;
	background-color: var(--color-bg-light);
}
.box.align-left {
	align-items: flex-start;
}
.box.shrink {
	display: inline-flex;
}
.box.important {
	border: 0.5rem solid var(--theme);
}
.box.danger {
	border: 0.5rem solid var(--color-red);
}
.box.danger * {
	--theme: var(--color-red);
	--theme-light: var(--color-red-light);
	--theme-dark: var(--color-red-dark);
}
a.box:hover {
	background-color: var(--color-gray-dark-dark);
}

.box .title, .box .extra {
	display: inline-flex;
	flex-direction: row;
	justify-content: center;
	align-items: baseline;
	gap: 0.5rem;
}
.box .title {
	position: relative;
	left: -0.5rem;
	padding-left: 0.5rem;
	
	color: var(--theme);
	font-size: 1.5rem;
}
.box .extra {
	color: var(--color-gray);
}





/* TIMELINE */
.timeline {
	display: flex;
	flex-direction: column;
}

.timeline > .item {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 1rem;
}

.timeline > .item > .connector {
	align-self: stretch;
	
	position: relative;
	
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.timeline > .item:not(:first-child) > .connector::before, .timeline > .item:not(:last-child) > .connector::after {
	content: "";
	position: absolute;
	left: calc(50% - 0.25rem);
	width: 0.5rem;
	height: calc(50% + 0.5rem);
	
	border-radius: 0.5rem;
	background-color: var(--color-bg-light);
	z-index: 0;
}
.timeline > .item > .connector::before {
	top: 0;
}
.timeline > .item.done > .connector::before {
	background-color: var(--theme);
}
.timeline > .item.next > .connector::before {
	background-color: var(--theme);
}
.timeline > .item > .connector::after {
	top: 50%;
	z-index: 1 !important;
}
.timeline > .item.done > .connector::after {
	background-color: var(--theme);
}

.timeline > .item > .connector > .waypoint {
	padding: 1rem;
	
	font-size: 1.5rem;
	border-radius: 50%;
	background-color: var(--color-bg-light);
	z-index: 2;
}
.timeline > .item.done > .connector > .waypoint {
	color: var(--color-bg);
	background-color: var(--theme);
}
.timeline > .item.next > .connector > .waypoint {
	background-color: var(--color-gray-dark);
}

.timeline > .item > .box {
	flex-grow: 1;
	align-items: flex-start;
	
	margin: 1rem 0;
	z-index: 2;
	
	text-align: left;
}
.timeline > .item:first-child > .box {
	margin: 0 0 1rem 0;
}
.timeline > .item:last-child > .box {
	margin: 1rem 0 0 0;
}

@media only screen and (max-width: 1000px) {
	.timeline > .item {
		position: relative;
		flex-direction: column;
		gap: 0;
	}
	.timeline > .item > .connector {
		align-self: center;
	}
	
	.timeline > .item:not(:last-child)::after {
		content: "";
		position: absolute;
		left: calc(50% - 0.25rem);
		top: 1rem;
		width: 0.5rem;
		height: 100%;
		
		background-color: var(--color-bg-light);
		z-index: 0;
	}
	.timeline > .item.done::after {
		background-color: var(--theme);
	}
	.timeline > .item.done-stop::after {
		background-color: var(--theme);
	}
	
	.timeline > .item:not(:last-child) > .box {
		margin: 0 0 4rem 0;
	}
	.timeline > .item:last-child > .box {
		margin: 0;
	}
	
	.timeline > .item > .connector > .waypoint {
		border-radius: 50% 50% 0 0;
	}
	
	.timeline > .item > .box {
		align-items: center;
		text-align: center;
	}
	.timeline > .item > .box {
		outline: 0.125rem solid var(--color-bg-light);
	}
	.timeline > .item.done > .box {
		outline: 0.125rem solid var(--theme);
	}
	.timeline > .item.next > .box {
		outline: 0.125rem solid var(--color-gray-dark);
	}
}





/* BUTTONS */
.button-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1rem;
}
.button-list.align-left {
	justify-content: flex-start;
}

.button, .button.disabled:hover {
	align-items: center;
	
	display: inline-flex;
	gap: 0.5rem;
	width: fit-content;
	padding: 1rem 1.5rem;
	
	color: var(--color-white);
	border-radius: 1rem;
	background-color: var(--color-gray-dark-dark);
	
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
}
.button.on-bg {
	background-color: var(--color-bg-light);
}
.button:hover {
	cursor: pointer;
	background-color: var(--color-gray-dark);
}
.button.on-bg:hover {
	background-color: var(--color-gray-dark-dark);
}
.button.disabled {
	opacity: 0.3;
}
.button.disabled:hover {
	cursor: not-allowed;
}

.button.primary, .button.primary.disabled:hover {
	color: var(--color-bg);
	background-color: var(--theme);
}
.button.primary:hover {
	background-color: var(--theme-dark);
}

.button .icon.big {
	font-size: 2rem;
}
.button .text {
	display: inline-flex;
	flex-flow: column;
	align-items: flex-start;
}





/* SECTION: NEWS */
.section > .content.rows > #newsletter, .section > .content.rows > #social-media {
	align-items: flex-start;
}
.section > .content.rows > #newsletter {
	flex-basis: 22rem;
	flex-grow: 64;
}
.section > .content.rows > #social-media {
	flex-basis: 16rem;
	flex-grow: 1;
	flex-shrink: 1;
}

.form-container {
	position: relative;
	width: 100%;
}

.form {
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	gap: 1rem;
}

#newsletter-signup-form-mail-address {
	min-width: 18rem;
}
@media only screen and (max-width: 1000px) {
	#newsletter-signup-form-mail-address {
		min-width: 14rem;
	}
}

.form-feedback {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	justify-content: center;
}

.form-feedback .centertext {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
}
.form-feedback-wait {
	color: var(--color-blue);
}
.form-feedback-success {
	color: var(--color-green);
}
.form-feedback-failure {
	color: var(--color-red);
}





/* COPYLINKS */
.copylink {
	position: absolute;
	padding: 0.5rem;
	
	font-size: 1rem;
	color: #0000;
}
.title .copylink {
	left: -1.3rem;
	padding-right: 0.2rem;
}
.header .copylink {
	right: -1.3rem;
	padding-left: 0.2rem;
}
*:hover > .copylink {
	color: var(--color-gray);
}
.copylink:hover, .copylink:focus-visible {
	color: var(--color-white);
	cursor: pointer;
}

.copylink.feedback-negative, .copylink.feedback-positive {
	opacity: 0;
	transition: opacity 1s 1.5s linear;
}
.copylink.feedback-negative {
	color: var(--color-red);
}
.copylink.feedback-positive {
	color: var(--color-green);
}





/* FORM ELEMENTS */
.key-value-pair {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: stretch;
}
.key-value-pair .key {
	display: flex;
	align-items: center;
	
	padding: 1rem;
	border-top-left-radius: 1rem;
	border-bottom-left-radius: 1rem;
	
	background-color: var(--theme);
	color: var(--color-bg);
}
.key-value-pair .value-list {
	flex-grow: 1;
	
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 0.5rem;
}
.key-value-pair .value {
	flex-grow: 1;
	
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 0.5rem;
	
	padding: 1rem;
	border-top-right-radius: 1rem;
	border-bottom-right-radius: 1rem;
	
	background-color: var(--color-gray-dark-dark);
}

.inputwrapper {
	position: relative;
	width: 100%;
}
.inputwrapper.valid input, .inputwrapper.invalid input {
	padding-right: 2.5rem;
}
.inputwrapper.valid::after, .inputwrapper.invalid::after {
	position: absolute;
	right: 1rem;
	top: 50%;
	transform: translateY(-50%);
	display: block;
	font-size: 1rem;
	
	font-family: "tabler-icons" !important;
	speak: none;
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: 1;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.inputwrapper.valid::after {
	content: "\ea5e";
	color: var(--color-green);
}
.inputwrapper.invalid::after {
	content: "\eb55";
	color: var(--color-red);
}

input {
	width: 100%;
	
	outline: none;
	border: none;
	margin: 0;
	
	font-family: inherit;
	font-size: 1rem;
	color: var(--color-white);
	background: none;
}
input::placeholder {
	color: var(--color-gray-light);
}

.value.switch {
	flex-direction: row;
	gap: 0;
	padding: 0;
	
	background: none;
	
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
}
.switch .option {
	padding: 1rem;
	background-color: var(--color-gray-dark-dark);
}
.switch .option:last-child {
	border-top-right-radius: 1rem;
	border-bottom-right-radius: 1rem;
}
.switch .option:hover {
	background-color: var(--color-gray-dark);
	cursor: pointer;
}
.switch .option.selected {
	background-color: var(--theme-dark);
	color: var(--color-bg);
}





/* FOOTER */
.footer {
	width: 100%;
	
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 1rem;
	
	padding: 1rem;
	
	background-color: var(--color-bg-light);
}
.footer > div {
	flex-grow: 1;
	flex-shrink: 1;
	flex-basis: 0px;
	
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	
	text-align: center;
}
@media only screen and (max-width: 1000px) {
	.footer > div {
		flex-basis: 100%;
		justify-content: center !important;
	}
}

.footer > div a {
	font-size: 1rem;
	color: var(--theme);
}
.footer > div a:hover {
	text-decoration: underline;
}

.footer .delimiter {
	color: var(--color-gray);
}
.footer .brand {
	justify-content: flex-start;
}
.footer .legal {
	justify-content: flex-end;
}

.footer .brand img {
	height: 2rem;
}
.footer .brand .version {
	color: var(--color-gray);
}

.footer .lang .selected {
	font-weight: bold;
	color: inherit;
}





/* ANIMATION KIT */
.form-feedback .spinning {
	animation-name: spinning;
	animation-duration: 0.5s;
	animation-iteration-count: infinite;
	animation-timing-function: linear;
}
@keyframes spinning {
	from { transform:rotate(0deg); }
	to { transform:rotate(360deg); }
}
