@import "minireset";
@import "fonts";

@mixin top-border($color: $rambotron-blue) { border-top: 5px solid $color }
@mixin shadow { box-shadow: 0px 1px 9px #00000033 }

$width-full: 1200px;
$width-thin: 900px;

$light-blue: #D8DEE9;
$rambotron-blue: #54739a;
$xdark-blue: #2E3440;

a {
	text-decoration: none;
	color: inherit;
}

// hide content for the mobile navigation
body.hidden>*:not(header) { display: none }

body {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	font-family: "roboto", sans-serif;
	font-size: 16px;
	color: #2E3440;
}

header {
	position: relative;
	padding: 3rem 0;
	border-top: 8px solid;
	border-image: linear-gradient(to right, #8FBCBB 25%, #88C0D0 25%,  #88C0D0 50%, #81A1C1 50%,  #81A1C1 75%, #5E81AC 75%, #5E81AC 100%) 1;

	&.compact {
		padding: 1.3rem 0;

		.wrap { height: 4rem }
		nav.primary {
			li>div {
				left: 50%;
				right: auto;
				transform: translate(-50%, -1em);
			}
			li:hover>div {
				transform: translate(-50%, 0);
			}
		}
	}

	.wrap {
		display: flex;
		justify-content: space-between;
		align-items: center;
		height: 5rem;
		max-width: $width-full;
		width: 100%;
		margin: 0 auto;
		padding: 0 1rem;
	}

	a.logo {
		height: 100%;

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

	section {
		height: 100%;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
	}

	nav {

		ul {
			display: flex;

			a {
				display: flex; // rolldown arrow alignment
				align-items: center;
				padding: .9em;
				white-space: nowrap;
			}

			li:hover>a { color: var(--color) }

			// rolldown arrow
			li>a.rolldown::after {
				content: "\ea4e";
				font-family: remixicon;
				font-size: .8em;
				margin-left: .5em;
				color: $rambotron-blue;
			}
			li:hover>a::after { color: inherit }

			// icons
			[class^="ri-"], [class*=" ri-"] {
				color: var(--color);
				margin-right: .5em;
			}
		}
	}

	nav.secondary {
		font-size: .9rem;
		color: #4C566A;

		a:hover { text-decoration: underline }
	}

	nav.primary {
		position: relative;
		font-weight: bold;
		font-size: 1.2em;

		// rolldown
		li:hover>div {
			visibility: visible;
			transform: translate(0);
			opacity: 1;
			transition: all .1s ease-out;
		}
		li>div {
			@include top-border(var(--color));
			@include shadow;
			display: grid;
			grid-template-columns: 1fr 1fr;
			column-gap: 1em;
			position: absolute;
			right: 0;
			top: 100%;
			min-width: 100%;
			padding: 1rem;
			background-color: #FFF;
			font-size: 1rem;
			font-weight: normal;
			color: #2E3440;
			visibility: hidden;
			transform: translate(0, -1em);
			opacity: 0;
			z-index: 1;

			.title {
				margin-bottom: 1em;
				padding: .5em;
				font-weight: bold;
				color: var(--color);
			}

			ul { flex-direction: column }
			ul a { padding: .5em }
		}
	}

	nav.mobile {
		display: none;

		.floating.visible {
			visibility: visible;
			opacity: 1;
			height: auto;
			transition: all .2s ease-out;
		}

		.buttons {
			display: flex;
			justify-content: flex-end;
			font-size: 2rem;

			&>* {
				margin-left: .5em;
				cursor: pointer;
			}
		}

		.floating {
			visibility: hidden;
			position: absolute;
			top: 100%;
			right: 0;
			width: 100%;
			height: 0;
			overflow: hidden;
			padding: 0 1em 1em 1em;
			background-color: #fff;
			z-index: 1;
			opacity: 0;
			transition: none;

			ul {
				display: flex;
				flex-direction: column;
				font-size: 1.2rem;

				li>a {
					display: block;
					padding: 1em 0 .5em 0;
				}

				div.title { display: none }

				ul {
					margin-left: 1em;

					li>a { padding: .5em }
				}
			}
		}
	}
}

main {
	max-width: $width-thin;
	width: 100%;
	margin: 0 auto;
	padding: 1rem;

	&.fullwidth, &.index { max-width: 1200px }
	&.index h1 { margin: 2em 0 1em 0 }

	h1, h2, h3, h4, h5, h6 {
		font-weight: bold;
		margin: 1em 0;
	}
	h1 { font-size: 2em }
	h2 { font-size: 1.6em }
	h3 { font-size: 1.2em }
	ul {
		list-style: disc;
		margin-left: 1em;
	}
	p { margin: 1em 0 }
	p, ul, ol { line-height: 1.5 }
	a {
		font-weight: bold;
		color: $rambotron-blue;
	}
	a:hover { text-decoration: underline }

	a[rel~="noreferrer"]::after {
		content: "\ecaf";
		font-family: remixicon;
		font-size: .8em;
		font-weight: normal;
		margin-left: .2em;
	}

	section {
		margin-bottom: 5rem;
	}

	.blocks {
		display: grid;
		grid-template-columns: repeat(auto-fit, minmax(12em, 1fr));
		grid-column-gap: 1rem;
		grid-row-gap: 2rem;
		align-items: stretch;
		justify-items: center;

		a { font-weight: normal }
		a:hover { text-decoration: none }

		article {
			@include top-border;
			display: flex;
			flex-direction: column;
			width: 100%;
			max-width: 50em;
			height: 100%;
			padding: 1em;
			font-size: .85em;
			color: #2E3440;

			a { font-weight: bold }
			a:hover { text-decoration: underline }

			&:hover { @include shadow }

			.title {
				font-weight: bold;
				font-size: 1.3em;
				margin: .5em 0;

				a { display: block }
			}

			.date {
				display: block;
				width: 100%;
				margin-top: auto;
				text-align: right;
				font-size: 0.8em;
				color: #5c738b;
			}
		}
	}
	.blocks.noshadow article { box-shadow: none }

	.websites {
		grid-template-columns: 1fr 1fr 1fr 1fr;
		text-align: center;

		.title {
			display: flex;
			justify-content: center;
			align-items: center;
			width: 100%;
			height: 3rem;
			margin: .4em 0;

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

	.columns-2 {
		grid-template-columns: 1fr 1fr;
	}

	.people-profile, .people-list {
		display: flex;
		flex-direction: column;

		.role { color: #5c738b}

		.other {
			display: flex;
		}

		.info {
			a {
				font-weight: normal;
				color: inherit;
			}
			a:hover { text-decoration: underline }
		}

		.mail, .tel, .cal, .homepage {
			display: flex;
			align-items: center;

			&::before {
				font-family: remixicon;
				font-size: 1.2em;
				margin-right: .4em;
			}
		}
		.mail::before { content: "\eef6" }
		.tel::before { content: "\efec" }
		.cal::before { content: "\eb24" }
		.homepage::before { content: "\ecaf" }
	}

	.people-profile .info {

		text-align: center;

		img {
			border-radius: 50%;
			width: 8em;
			margin-top: 2em;
		}

		h1 {
			margin: 1em 0 .5em 0;
			font-size: 1.6rem;
		}

		.role {
			font-weight: bold;
		}

		.other {
			justify-content: center;
			margin: 2rem 0 1rem 0;

			div { margin: 0 1rem 1rem 1rem }
		}
	}

	.people-list {

		h1 { margin-bottom: -1em }
		h2 {
			margin: 5rem 0 4rem 0;
			font-size: 1.4rem;
			text-align: center;
			color: #4C566A;
		}

		.group {
			display: grid;
			grid-template-columns: 1fr 1fr;
			row-gap: 4rem;
			column-gap: 2rem;
		}

		article {
			@include top-border(var(--color));
			display: flex;
			align-items: flex-start;
			text-align: left;
			padding-top: 2em;

			img {
				width: 8rem;
				margin-right: 2.5em;
				border-radius: 50%;
			}

			.info {
				display: flex;
				flex-direction: column;

				.name a {
					display: block;
					font-weight: bold;
					font-size: 1.3em;
					margin-bottom: .3em;
				}
				.role { color: var(--color) }
				.other {
					flex-direction: column;
					margin-top: 1em;

					div { margin-bottom: .5rem }
				}
			}
		}
	}

	.gallery {
		display: grid;
		grid-template-columns: repeat(4, 1fr);
		column-gap: 1em;
		row-gap: 1em;

		img {
			display: block;
			width: 100%;
		}
	}
	.gallery:not(.index) a:hover img { box-shadow: 0px 1px 9px #00000088 }
	.gallery.index {
		a {
			position: relative;
			color: #fff;
		}
		.info {
			position: absolute;
			left: 0;
			bottom: 0;
			width: 100%;
			height: 100%;
			max-height: 40%;
			display: flex;
			flex-direction: column;
			padding: .7em;
			background-color: rgba(46, 52, 64, 0.85);
			text-align: left;
			font-weight: normal;
			font-size: .85rem;
			transition: all .1s ease-out;

			.description {
				height: 0;
				margin-top: 0.85em;
				overflow: hidden;
				opacity: 0;
				transition: all .1s linear .1s;
			}

			.date {
				align-self: flex-end;
				margin-top: auto;
				font-size: .9em;
				color: #ccc;
			}
		}
		a:hover {
			.info {
				max-height: 100%;
				padding-top: 1.5em;
			}
			.info .description {
				height: auto;
				opacity: 1;
			}
		}
	}

	.map {
		width: 100%;
		height: 30em;
	}

	.button {
		border: 0;
		@include top-border($light-blue);
		display: inline-flex;
		align-items: center;
		padding: 1rem 2rem;
		margin-top: 2rem;
		outline: none;
		background: none;
		text-transform: uppercase;
		font-size: .9rem;
		font-weight: bold;
		color: inherit;

		&:hover {
			@include shadow;
			text-decoration: none;
		}

		&>i {
			font-size: 1.3em;
			font-weight: normal;
			margin-right: .3em;
		}
	}

	.centering {
		text-align: center;
	}
}

footer {
	margin-top: auto;
	padding: 3em 1em 2em 1em;
	text-align: center;
	color: #FFF;
	background-color: #2E3440;
	border-top: 5px solid;
	border-image: linear-gradient(to right, #BF616A 20%, #D08770 20%, #D08770 40%, #EBCB8B 40%, #EBCB8B 60%, #A3BE8C 60%, #A3BE8C 80%, #B48EAD 80%) 5;

	p {
		font-size: .9em;
		color: $light-blue;
	}
	p:last-child { margin-top: .5em }

	nav {
		margin-bottom: 2em;
		font-size: 1rem;

		ul {
			display: flex;
			justify-content: center;
			flex-wrap: wrap;

			a {
				padding: .5em 1em;
				display: inline-block;
			}
			a:hover{ text-decoration: underline }
			li::after {
				content: "\007C";
				color: #4C566A;
			}
			li:last-child::after { display: none }
		}
	}
}

.rambotron {
	width: 100%;
	text-align: center;
	color: #ECEFF4;
	background: linear-gradient(rgba($rambotron-blue, 0.95), rgba($rambotron-blue, 0.95)), url("rambotron.jpg") center center no-repeat;
	background-size: cover;

	h1 {
		font-size: 2em;
		font-weight: bold;
		margin: 1em 0 .8em 0;
	}

	p {
		max-width: 40em;
		margin: 0 auto;
		padding: 0 1em;
		line-height: 1.5;
		font-size: .9rem;
	}

	.links {
		background-color: #3B4252;
		margin-top: 2.5rem;

		ul {
			display: flex;
			justify-content: center;
			flex-wrap: wrap;

			a {
				display: block;
				padding: 1.1rem;
				margin: 0 1rem;

				&:hover {
					background-color: #2E3440;
				}
			}
		}
	}
}

.breadcrumbs {
	border-top: 1px solid $light-blue;
	font-size: .9em;

	.wrap {
		margin: 0 auto;
		display: flex;
		max-width: $width-full;
		width: 100%;
	}

	a {
		display: inline-block;
		padding: 1rem;

		&.home {
			display: flex; // vertical center
			font-size: 1.5em;
			color: #88c0d0;

			&:hover { color: #000 }
		}
	}

	ul {
		display: flex;

		li {
			display: flex;
			align-items: center;

			&::before {
				content: "\203A";
				margin: 0 1em;
				font-weight: bold;
				color: $light-blue;
			}

			&:last-child { font-weight: bold }
			a:hover { text-decoration: underline }
		}
	}
}

table {
	th {
		padding: 1em;
		text-align: left;
		background-color: $light-blue;
	}
	td {
		padding: .25em 1em;
		border-bottom: 1px solid $light-blue;
	}
		border: 1px solid $light-blue;
		border-collapse: collapse;
		border-spacing: 0;
}


@media screen and (max-width: 950px){
	header { padding: 1rem 0 }
	header .wrap {
		align-items: center;
		height: auto;

		.logo { height: 3.5rem }

		section {
			height: auto;
			width: 100%;
			padding: 0;
		}

		nav.secondary, nav.primary { display: none }
		nav.mobile { display: initial }
	}

	main .blocks { grid-template-columns: 1fr }
	main .websites { grid-template-columns: 1fr 1fr 1fr }
	main .columns-2 { grid-template-columns: 1fr }
	main .people-list .group { grid-template-columns: 1fr }
	main .gallery { grid-template-columns: 1fr 1fr }
}

@media screen and (max-width: 640px){
	main .websites { grid-template-columns: 1fr 1fr }
	main .people-profile .info .other { flex-direction: column }
	main .people-list article {
		flex-direction: column;
		align-items: center;

		img { margin: 0 }
		.name { margin-top: 2rem }
		.role { text-align: center }
	}
	.rambotron {
		.links ul {
			flex-direction: column;
			a { margin: 0 }
		}
	}
	.breadcrumbs { display: none }
}
