/* Resets */
html, body {
	padding: 0;
	margin: 0;
	border: 0;
}
* {
	box-sizing: border-box;
}

:root {
  --background-color: #fcfcfc;
  --text-bold-color: #222;
  --text-normal-color: #333;
}

::selection { background: #FFD100; }

/* Overall styles */
body {
	background-color: var(--background-color);
	color: var(--text-normal-color);
	font-size: 16px;
	line-height: 1.75;
	font-family: Arial, sans-serif;
}

h1, h2, h3, h4 {
	font-family: 'Roboto Slab', serif;
	font-weight: 800;
  color: var(--text-bold-color);
}
h1 {
	font-size: 4rem;
}
h2 {
	font-size: 2rem;
}
h3 {
	font-size: 1.25rem;
}

a {
	text-decoration: none;
	color: #0258A1;
}
a:hover {
	text-decoration: underline;
	color: #0b8bc6;
}

section::before { 
  display: block; 
  content: " "; 
  margin-top: -130px; 
  height: 130px; 
  visibility: hidden; 
  pointer-events: none;
}

img {
	max-width: 100%;
	max-height: 100%;
  border-radius: 6px;
}
img.inset {
	width: 30%;
	min-width: 50px;
	float: left;
	margin: 0.75em;
	margin-left: 0;
}
img.inset.right {
	float: right;
	margin: 0.75em;
	margin-right: 0;
}

/* Layout */
.container {
	display: grid;
	padding: 3rem 1rem 0;
	width: 100%;
	grid-template-areas: "logo   header ."
						 ".      main ."
						 "footer footer footer";
	column-gap: 1rem;
	grid-template-columns: minmax(25ch, 1fr) minmax(100ch, 2fr) 1fr;
	grid-template-rows: min-content;
}

/* Navigation content */
.logo {
	grid-area: logo;
	margin: 1em;
	position: sticky;
	top: 2em; /* Only relevant to stickyness */
	justify-self: end;
	align-self: center;
}
.logo img {
	max-height: 125px;
	height: 100%;
}
header {
	grid-area: header;
  position: sticky;
	top: 0; /* Only relevant to stickyness */
  background: var(--background-color);;
  padding: 0 0 4px 0;
	align-self: center;
}
header h1 {
	margin: 0;
}
nav ul {
	list-style: none;
	padding-left: 0;
	font-family: Inter, Helvetica, sans-serif;
	font-size: 1.25rem;
	margin-top: 0;
}
/* Scrolling dependent code */
header.horizontal nav li {
	display: inline-block;
	margin: auto 2rem auto 0;
}
header.horizontal nav li:last-child {
	margin: auto 0;
}
header.vertical h1 {
	display: none;
}
header.vertical nav li {
	display: block;
	text-align: right;
	margin: 1rem auto;
}

/* Main area */
main {
	grid-area: main;
  overflow: auto;
}

main > * {
	width: 100%;
}

#map {
	height: 30rem;
  z-index: -1;
}

/* Footer */
footer {
	grid-area: footer;
	padding: 2rem;
	padding-bottom: 0.5rem;
	text-align: center;
}
footer img {
	height: 2rem;
	margin: 0.5rem;
}

/* Media queries */
/* Small */
@media screen and (max-width: calc(125ch + 4rem)) {
	.container {
		grid-template-areas: "logo"
							 "header"
							 "main"
							 "footer";
		grid-template-columns: 1fr;
		padding: 0 2rem 0;
	}
	.logo {
		position: relative;
		justify-self: center;
	}
	header {
		text-align: center;
    position: inherit;
    background: none;
    padding: 0;
	}
}

/* Leave some space at top on scroll */
[id] {
	scroll-margin-top: 1.5rem;
}

/* Smooth scrolling */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

/* Fade in images */
.fade-in {
  animation: fadeIn ease .7s;
  -webkit-animation: fadeIn ease .7s;
  -moz-animation: fadeIn ease .7s;
  -o-animation: fadeIn ease .7s;
  -ms-animation: fadeIn ease .7s;
}

@keyframes fadeIn {
  0% {opacity: 0;}
  100% {opacity: 1;}
}

@-moz-keyframes fadeIn {
  0% {opacity: 0;}
  100% {opacity: 1;}
}

@-webkit-keyframes fadeIn {
  0% {opacity: 0;}
  100% {opacity: 1;}
}

@-o-keyframes fadeIn {
  0% {opacity: 0;}
  100% {opacity: 1;}
}

@-ms-keyframes fadeIn {
  0% {opacity: 0;}
  100% {opacity: 1;}
}
