/* =Root variables
-------------------------------------------------------------- */
:root {
	--primary-color-spacer: #eee;
	--wrapper-width: 1000px;
	--mobile-width: 90%;
	--mobile-padding: calc((100% - var(--mobile-width)) / 2);
	--white: #fff;
	--very-light-grey: #f4f4f4;
	--light-grey: #ccc;
	--lightish-grey: #ddd;
	--grey: #999;
	--dark-grey: #333;
	--black: #000;
	--success: #4caf50;

	--primary-color-base: #1483c8;
	--primary-color-highlight: #137fbf;
	--primary-color-shadow: #0e5a8a;
	--primary-color-link: #0e5a8a;
	--primary-color-top: #1275b5;
	--primary-color-spacer-accent: #1278b8;
	--colored-background: radial-gradient(circle at center 150%, var(--primary-color-shadow) 0%, var(--primary-color-base) 110%, rgba(0,0,0,0.2) 100%);
	--icon-glow: drop-shadow(0 0 8px rgba(0,0,0,0.2)) drop-shadow(0 0 16px rgba(0,0,0,0.2)) drop-shadow(0 0 24px rgba(0,0,0,0.2));
	--button-glow: drop-shadow(0 0 8px rgba(0,0,0,0.1)) drop-shadow(0 0 16px rgba(0,0,0,0.1)) drop-shadow(0 0 24px rgba(0,0,0,0.1));
	--image-glow: drop-shadow(0 0 2px rgba(0,0,0,0.1)) drop-shadow(0 0 4px rgba(0,0,0,0.1)) drop-shadow(0 0 6px rgba(0,0,0,0.1));
}

html {
    height: 100%;
}

body {
	background: var(--white);
    position: relative;
    min-height: 100%;
    margin: 0;
    padding: 0;
}

/* =Fonts
-------------------------------------------------------------- */
@font-face {
	font-family: "Open Sans";
	font-weight: 100 800;
	font-style: normal;
	font-display: optional;
	src: url('/fonts/open-sans.woff2') format('woff2');
}

/* =General
-------------------------------------------------------------- */
body {
	margin: 0;
	padding: 0;
	font-family: "Open Sans", sans-serif;
	min-height: 100vh;
	word-wrap: break-word;
}

.wrapper {
	width: calc(100% - 4rem);
	max-width: var(--wrapper-width);
	margin: 0 auto;
	padding: 0 2rem;
}

/* =Accessibility
-------------------------------------------------------------- */
.hidden {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* =Header
-------------------------------------------------------------- */
header {
	display: flex;

	.wrapper {
		position: relative;
		margin-top: 0;
	}

	.header-avatar {
		position: absolute;
		bottom: 0;
		right: 0;
		width: 50%;
		height: auto;
		object-fit: contain;
		object-position: bottom right;
		z-index: 0;
	}

	h1 {
		width: 70%;
		font-size: 6rem;
		line-height: 6rem;
		margin: 3rem 0 4rem;
		position: relative;
		z-index: 1;
	}

	p {
		position: relative;
		margin: 0 0 4rem;
		font-size: 1.6rem;
		line-height: 2.4rem;
		font-weight: 100;
		color: var(--white);
		text-shadow: 0 0.05rem 0.3rem rgba(0,0,0,0.3);
		width: 100%;
	}

	h1 {
		width: 100%;
		display: block;
		position: relative;
		color: var(--white);
		font-size: 4rem;
		line-height: 4rem;
		font-weight: 700;
		margin: 5rem 0 4rem;
		text-shadow: 0 0.1rem 0.6rem rgba(0,0,0,0.3);
	}

	.button {
		margin-bottom: 6rem;
		position: relative;
		z-index: 1;
	}

	fieldset {
		border: none;
		margin: 0;
		padding: 0;
	}
	
	legend {
		border: none;
		padding: 0;
		margin: 0;
	}

	form {
		margin-top: 2rem;
		margin-bottom: 8rem;
		display: block;
		width: 80%;

		p {
			display: inline-block;
			margin: 0.5rem 0;
			width: 60%;

			input {
				width: calc(100% - 2rem);
			}

			label {
				color: var(--white);
			}

			.button[type=submit] {
				font-weight: 800;
				margin-top: 1.5rem;
			}
		}
	}
}

/* =Admin page
-------------------------------------------------------------- */
.success {
	background: var(--success);
	color: var(--white);
	padding: 1rem;
	margin-bottom: 2rem;
	border-radius: 4px;
}

body.admin .button {
	margin: 0;
}

.copy-button {
	padding: 0.5rem 1rem;
	background: var(--primary-color-shadow);
	border: 1px solid var(--light-grey);
	border-radius: 1rem;
	cursor: pointer;
	font-size: 1rem;
	transition: background 0.2s;
	font-size: 1rem;
	font-weight: 400;

	&:hover {
		background: var(--primary-color-highlight);
	}

	&:active {
		background: var(--primary-color-highlight);
	}
}

.inline-error {
	color: red;
	display: block;
	margin-top: 0.5rem;
}



/* =Main Menu
-------------------------------------------------------------- */
@keyframes menuBackgroundTransition {
	0% {
	background: transparent;
	}
	15% {
	background: var(--primary-color-top);
	}
	100% {
	background: var(--primary-color-base);
	}
}

/* =Content sections
-------------------------------------------------------------- */
.primary,
body main {
	.button {
		display: block;
		width: fit-content;
		margin: 0 auto;
	}
}

.primary {
	width: 100%;
	padding: 6rem 0;

	.button {
		display: block;
		width: fit-content;
		margin: 0 auto;
	}
}

main {

	section {
		padding-top: 6rem;
		padding-bottom: 10rem;
	}

	.button {
		display: block;
		width: fit-content;
		margin: 0 auto;
	}
}

/* =General elements
-------------------------------------------------------------- */

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

	&:hover {
		color: var(--primary-color-highlight);
		text-decoration: underline;
	}
}

h1,
h2,
h3 {
	width: 100%;
	max-width: var(--wrapper-width);
	margin: 0 auto;
	padding: 0;
	color: var(--black);
	font-weight: 700;
	font-family: "Open Sans", sans-serif;
}

h1 {
	font-size: 4rem;
	margin-top: 0;
	margin-bottom: 1rem;
}

h2 {
	font-size: 2.5rem;
	margin-top: 4rem;
	margin-bottom: 1rem;
}

h3 {
	font-size: 1.5rem;
	margin-top: 3rem;
	margin-bottom: 1rem;
}

p {
	margin: 0rem 0 2rem;
	font-weight: 400;
	font-size: 1.2rem;
	line-height: 2rem;
	color: var(--black);
	font-family: "Open Sans", sans-serif;
}

ul {
	list-style: disc;
}

ul,
ol {
	display: block;
	margin: 0;

	li {
		margin: 0 0 1rem;
		font-weight: 400;
		font-size: 1.2rem;
		line-height: 1.4rem;
	}
}

address {
	color: var(--dark-grey);
	font-size: 2rem;
	line-height: 3rem;
	font-style: normal;
}

form {
	p {
		position: relative;
	}
}

fieldset {
	width: 100%;
}

fieldset,
legend {
    border: none;
    margin: 0;
    padding: 0;
}

label {
	display: block;
	width: 50%;
	font-size: 0.8rem;
	font-weight: 400;
	color: var(--grey);
	text-transform: uppercase;
	letter-spacing: 0.1rem;
	transition: opacity 0.25s;
}

input {
	padding: 1rem;
	width: 50%;

	& + label {
		width: 50%;
	}
}

textarea {
	width: 90%;
	min-height: 6rem;
	min-height: 6rem;
	color: var(--dark-grey);

	& + label {
		width: 100%;
	}
}

.from-wrapper,
input,
textarea {
	border: 1px solid var(--light-grey);
	padding: 1rem;
	font-family: "Open Sans", sans-serif;
	font-weight: 100;
	font-size: 1.2rem;
	color: var(--dark-grey);
	box-shadow: 0 0 1rem rgba(0,0,0,0.05);
	background: var(--white);
}

.from-wrapper {
	display: inline-block;
	width: auto;

	input {
		box-shadow: none;
		flex: 1;
		border: none;
		padding: 0;
		outline: none;
		border: none;
		width: auto;
	}
}

input[type=submit],
button,
.button {
	display: inline-block;
	background: var(--primary-color-link);
	margin: 0;
	padding: 1rem 4rem;
	color: var(--white);
	border: none;
	border-bottom: var(--primary-color-shadow);
	text-decoration: none;
	transition: 0.25s;
	font-weight: 600;
	font-size: 1.2rem;
	filter: var(--image-glow);
	border-radius: 1rem;
	text-align: center;


	&[type=submit] {
		font-weight: 400;
		width: auto;

		&:hover {
			cursor: pointer;
		}
	}

	&:focus-within,
	&:hover {
		cursor: pointer;
		transform: scale(1.05);
		background: var(--primary-color-highlight);
		color: var(--white);
		text-decoration: none;
		filter: var(--button-glow);
	}
}

img {
	max-width: 100%;
	height: auto;
}

.aligncenter {
	margin-right: auto;
	margin-left: auto;
	text-align: center;

	*,
	* * {
		margin-right: auto;
		margin-left: auto;
	}
}

.alignright {
	float: right;
	margin-left: 2rem;
}

.alignleft {
	float: left;
	margin-right: 2rem;
}


/* =Testimoials
-------------------------------------------------------------- */
.testimonials {
	.wrapper {
		display: flex;
	    flex-wrap: wrap; 
	    justify-content: space-between; 
	}

	h1 {
        font-size: 2rem;
        width: 100%; 
    }

    blockquote {
        width: calc(33.333% - 5rem); 
        margin: 0; 
        padding: 1rem 1.5rem;
        background: var(--very-light-grey);

        img {
            width: 50%;
            border-radius: 50%;
            display: block;
            margin: 0 auto;
        }

        p {
            margin: 0;
            padding: 2rem 0 0 0;
            color: var(--dark-grey);
            font-size: 1rem;
            line-height: 1.75rem;
            font-style: italic;
        }

        cite {
            display: block;
            margin: 1rem 0;
            color: var(--dark-grey);
            font-size: 1rem;
            line-height: 1.8rem;
            font-style: normal;
            font-weight: 600;
        }
    }
}


/* =Block schemes
-------------------------------------------------------------- */

.neutral {
	background: var(--very-light-grey);
	background: radial-gradient(circle, var(--lightish-grey) 0%, var(--white) 53%, rgba(0,0,0,0.2) 100%);
}

.accent {
	background: var(--colored-background);

	h1,
	h2,
	h3,
	p {
		color: var(--white);

		a {
			color: var(--white);
		}
	}

	.button {
		background: var(--white);
		color: var(--black);

		&:focus-within,
		&:hover {
			background: var(--white);
			color: var(--black);
		}
	}
}

/* =Footer
-------------------------------------------------------------- */
#footer {
	width: 100%;
	text-align: center;
	color: var(--white);
	font-size: 0.9rem;
	padding: 3rem 0;
	background: var(--primary-color-shadow);

	body.home & {
		position: absolute;
		bottom: 0;
		background: none;
		padding: 1rem 0;
		opacity: 0.7;
	}

	ul {
		list-style: none;
		display: inline-block;
	}

	li {
		display: inline-block;

		&:first-child {
			a {
				border-left: none;
				margin-left: 0.5rem;
			}
		}
	}

	a {
		line-height: 1rem;
		display: inline-block;
		border-left: 1px solid var(--white);
		padding: 0 0.5rem;
		color: var(--white);
		font-size: 0.9rem;
	}
}

/* =Mobile support
-------------------------------------------------------------- */

@media (max-width: 768px) {
	.wrapper {
		width: 100%;
		padding: 0;
	}

	header {
		height: auto;

		.wrapper {
			position: relative;
			margin-top: 0;
			background: none;
			width: var(--mobile-width);
			padding-right: var(--mobile-padding);
			padding-bottom: 40%;
			padding-left: var(--mobile-padding);

			.header-avatar {
				width: 80%;
				left: 50%;
				transform: translateX(-50%);
				right: auto;
			}
		}

		h1,
		p {
			width: 100%;

			body.error-404 &,
			body.home & {
				width: 100%;
			}
		}

		h1 {
			margin: 2.5rem 0;
			font-size: 3rem;
			line-height: 3rem;
		}

		p {
			margin: 2.5rem 0 0;
			font-size: 1.5rem;
			line-height: 2.5rem;
		}

		.button {
			margin-top: 0;
			margin-bottom: 0;
		}

		form {
			display: block;

			p {
				.button[type=submit] {
					margin-top: 0;
					padding-right: 1rem;
					padding-left: 1rem;
				}

				&:last-of-type {
					margin-top: 1rem;
					margin-left: 0;
				}
			}
		}
	}

	.primary {
		width: var(--mobile-width);
		padding: 3rem var(--mobile-padding) 3rem;
	}

	.secondary {
		width: var(--mobile-width);
		padding: 3rem var(--mobile-padding) 7rem;
	}

	body.privacy-policy,
	body.legal-notice,
	body.admin {
		header {
			.wrapper {
				padding-bottom: 80%;
			}
		}
	}

	header h1,
	h1 {
		line-height: 3rem;
		font-size: 3rem;
	}

	h2 {
		font-size: 2rem;
	}

	h3 {
		font-size: 1.25rem;
	}

	label {
		width: 100%;
		line-height: 1rem;
	}

	input {
		width: 65%;
	}

	input[type=submit],
	button,
	.button {
		padding-right: 1rem;
		padding-left: 1rem;
	}

	.testimonials {
		blockquote {
			width: calc(100%);
			margin-bottom: 1.5rem;
		}
	}

	#footer {
		padding-top: 1rem;
		padding-bottom: 0;
	}
}
