@charset "utf-8";

/*
---------------------------------------------------------------------------------------------------- 
	Fonts
----------------------------------------------------------------------------------------------------
*/

@import url('https://fonts.googleapis.com/css?family=Droid+Serif:400,400i,700,700i|Fira+Sans:300,600,800');

/*
---------------------------------------------------------------------------------------------------- 
	App defaults
----------------------------------------------------------------------------------------------------
*/

.app {
	left: 0;
	color: #404040;
	position: relative;
	transition: left 0.2s;
	font: 400 14px/1.6 "Droid Serif", serif;
}

.app.toggle {
	left: -280px;	
}

.app h1 { font-size: calc((1em - 8px) * 6.4); line-height: 1.1; }
.app h2 { font-size: calc((1em - 8px) * 3.6); line-height: 1.2; }
.app h3 { font-size: calc((1em - 8px) * 2.8); line-height: 1.3; }
.app h4 { font-size: 1em; }

.app h1, .app h2, .app h3, .app h4 {
}

.app b, 
.app strong {
	font-weight: 700;
}

.app p {
	margin-top: 1em;
	margin-bottom: 1em;
}

.app label {
	display: block;
	line-height: 2em;
	font-weight: 700;
}

.app input, .app textarea {
	width: 100%;
	height: auto;
	border-radius: 0;	
	padding: 0.725em 15px;
	border: none;
}

.app .error-red 	{ color: #ff2020; }
.app .success-green { color: #20f020; }

/*
---------------------------------------------------------------------------------------------------- 
	Custom defaults
----------------------------------------------------------------------------------------------------
*/

.app p {
	margin-top: 1em;
	margin-bottom: 1em;
}

.app label {
	display: block;
	line-height: 2em;
	font-weight: 700;
}

.app section {
	background-size: cover;	
	background-position: center;
}

.content {
	padding-top: 12vh;
	padding-bottom: 12vh;	
}

.content-w-xs > *, .content-w-sm > *, .content-w-md > *, .content-w-lg > * {
	margin-left: auto;
	margin-right: auto;	
}

.content-w-xs > * { max-width: 414px; }
.content-w-sm > * { max-width: 768px; }
.content-w-md > * { max-width: 992px; }
.content-w-lg > * { max-width: 1200px; }

/* Fonts */

.font-lg { font-size: 1.15em; }
.font-xl { font-size: 1.30em; }

.font-lg .app-button { font-size: 0.87em; }
.font-xl .app-button { font-size: 0.77em; }

.font-sans {
	font-weight: 300;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
}

.font-sans strong, .font-sans b {
	font-weight: 600;
}

.app h1 .font-sans, .app h2 .font-sans, .app h3 .font-sans, .app h4 .font-sans {
	font-weight: 800;
}

/* Lists */

.list-ruled h3, .list-ruled h4 {
	font-weight: 600;
	margin-bottom: 1em;
	text-transform: uppercase;	
}

/* Margins */

.app .mt-0, .app .my-0 { margin-top: 0; }
.app .mb-0, .app .my-0 { margin-bottom: 0; }

/* Padding */

.pt-0,  .py-0  { padding-top: 0; }
.pb-0,  .py-0  { padding-bottom: 0; }
.pt-3,  .py-3  { padding-top: 3vh; }
.pb-3,  .py-3  { padding-bottom: 3vh; }
.pt-6,  .py-6  { padding-top: 6vh; }
.pb-6,  .py-6  { padding-bottom: 6vh; }
.pt-9,  .py-9  { padding-top: 9vh; }
.pb-9,  .py-9  { padding-bottom: 9vh; }
.pt-12, .py-12 { padding-top: 12vh; }
.pb-12, .py-12 { padding-bottom: 12vh; }
.pt-16, .py-16 { padding-top: 16vh; }
.pb-16, .py-16 { padding-bottom: 16vh; }

/* Boxes */

.app-box {
	border-width: 4px;
	border-style: solid;
}

/*
---------------------------------------------------------------------------------------------------- 
	Buttons / Icons / Links
----------------------------------------------------------------------------------------------------
*/

.app-button {
	border-radius: 0;
	border-width: 3px;
	border-style: solid;
	padding: 0.725em 3em;
	display: inline-block;
	transition: color 0.2s, background-color 0.2s, border-color 0.2s;
}

.app-button:hover {
	text-decoration: none;
}

/* Icons */

.app-icon {
	padding: 0;
	border: none;
	color: inherit;
	position: relative;
	display: inline-block;
	transition: color 0.5s;
	background-color: transparent;
}

.app-icon:after {
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	content: " ";
	display: block;
	position: absolute;
}

.app-icon-text {
	line-height: 30px;
	margin-right: 0.5em;	
}

.app-icon svg {
	float: left;	
}

/* Links */

.app-link {
}

.app-link:hover {
	text-decoration: underline;
}

/* Social Icons */

.app-socicon {
	width: 1em;
	height: 1em;
	display: inline-block;
}

/*
---------------------------------------------------------------------------------------------------- 
	Dialog
----------------------------------------------------------------------------------------------------
*/

.app dialog {
	display: none;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	padding: 15px;
	position: fixed;
	align-items: center;
	justify-content: center;
	background-color: rgba(0,0,0,0.0);
	color: #ffffff;
	border: none;
	z-index: 20;
}

.app dialog .dialog-content {
	padding: 1.5em;
	pointer-events: none;
	border-style: solid;
	border-width: 4px;
}

.app dialog .dialog-content:before {
	content: "X";
	float: right;
	cursor: pointer;
	padding-left: 15px;
}

.app dialog.error:not(.hidden) {
	display: flex;
}

.app dialog.error .dialog-content {
	border-color: rgba(240,0,32,1);
	background-color: rgba(240,0,32,0.75);
}

.app dialog.success:not(.hidden) {
	display: flex;
}

.app dialog.success .dialog-content {
	border-color: rgba(0,240,32,1);
	background-color: rgba(0,240,32,0.75);
}

/*
---------------------------------------------------------------------------------------------------- 
	Header
----------------------------------------------------------------------------------------------------
*/

.app.toggle .app-header {
	left: -280px;	
}

.app-header {
	top: 0;
	left: 0;
	z-index: 2;
	width: 100%;
	height: 60px;
	position: fixed;
	background-color: #fff;
	transition: left 0.2s;
}

.app-header:after {
	left: 0;
	width: 100%;
	height: 2px;
	bottom: -2px;
	content: " ";
	display: block;
	position: absolute;
	background: rgba(0,0,0,0.075);
}

.app-header-icons {
	margin-left: auto;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
	font-weight: 600;
}

.app-header-icons button {
}

.app-logo {
	display: block;
}

.app-logo-image {
	height: 30px;
	display: block;	
}

.app-logo-text {
	width: 80%;
	background: url(graphics/logo-text.svg) no-repeat center;
}

.app-nav {
	top: 0;
	right: 0;
	z-index: 0;
	width: 280px;
	height: 100vh;
	position: fixed;
	padding: 0 30px 0;
	background-color: #282828;
	color: #fff;
}

.app-nav ul {
	margin: 0;
	padding: 0;
	list-style-type: none;
}

.app-nav li + li {
	border-top: solid 1px rgba(255,255,255,0.15);
}

.app-nav li a {
	display: block;
	padding: 0.5em 0;	
}

.app-nav li.app-nav-button {
	display: none;
}

.app-nav li.app-nav-button + li {
	border-top: none;
}

.app-nav-emblem {
	display: block;
	max-width: 158px;	
	margin: 6vh auto;
}

.app-nav-footer {
	left: 0;
	right: 0;
	bottom: 1.6em;
	display: block;
	position: absolute;
	text-align: center;
}

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

.app-main {
	z-index: 1;
	padding-top: 60px;
	position: relative;
	background-color: #fff;
}

.app-main .app-button {
	margin-top: 1.5vh;
}

/* Banner */

.app-banner {
	display: flex;
	min-height: 100vh;
	position: relative;
	align-items: stretch;
	flex-direction: column;
	justify-content: center;
	background-position: 65% bottom;
	background-size: cover;	
}

.app-banner-75 { min-height: 75vh; }
.app-banner-65 { min-height: 65vh; }
.app-banner-50 { min-height: 50vh; }
.app-banner-25 { min-height: 25vh; }

/* Overlay */

.app-overlay {
	position: relative;
}

.app-overlay:before {
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	content: " ";
	position: absolute;
	background-color: rgba(0,0,0,0.25);
}

/* Cards */

.app-card {
	margin-bottom: 12vh;
}

.app-card p {
	margin-top: 0;
	margin-bottom: 1.75em;	
}

.app-card a {
	color: inherit;	
}

.app-card a:hover {
	text-decoration: none;	
}

.app-card a:hover .app-card-image {
	 filter: grayscale(100%);
}

.app-card a:hover p {
	text-decoration: underline;	
}

.app-card-image {
	display: block;
	transition: filter 0.25s;
}

.app-card-meta {
	color: #a0a0a0;
	font-weight: 300;
	margin-top: 0.75em;
	margin-bottom: 0.75em;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
	text-transform: uppercase;
}

.app-card-meta b, .app-card-meta strong {
	font-weight: 600;	
}

/* Aside */

.app-aside {
	font-weight: 300;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;	
}

.app-aside .list + .list {
	margin-top: 6vh;	
}

/* Pagination */

.app-pagination {
	display: table;
	font-weight: 300;
	font-size: 1.15em;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
}

.app-pagination div {
	text-align: center;
	display: table-cell;
}

.app-pagination div:nth-child(2) {
	width: 100%;
}

.app-pagination a {
	width: 2.4em;
	height: 2.4em;
	display: inline-block;
}

.app-pagination a.selected {
	color: #fff;
}

.app-pagination a:hover {
	color: #fff;
	text-decoration: none;
}

.app-pagination-nav a {
	border-width: 3px;
	border-style: solid;
	line-height: calc(2.4em - 6px);
}

.app-pagination-nums a {
	line-height: 2.4em;
}

/* Article */

.app-article-meta {
	color: #a0a0a0;
	font-weight: 300;
	margin-top: 0.75em;
	margin-bottom: 0.75em;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
	text-transform: uppercase;
}

.app-article-meta b, .app-article-meta strong {
	font-weight: 600;	
}

.app-article-share-icons {
	width: 100%;
	display: flex;
	margin-top: 6vh;
	margin-bottom: 6vh;
	justify-content: space-between;
}

.app-article-share-icons a {
	width: 24%;
	padding: 1em;
}

.app-article-share-icons img {
	display: block;
	margin-left: auto;
	margin-right: auto;
}

/* Form */

.app-form label {
	display: none;	
}

.app-form .mb {
	margin-bottom: 30px;	
}

.app-form .app-button {
	margin-top: 0;
}	

.app-form input, .app-form textarea, .app-form button {
	font-weight: 300;
	font-family: "Fira Sans", Helvetica, Arial, sans-serif;
}

/* Stacks */

.app-stack {
	min-height: 320px;
	position: relative;	
}

/* Slideshow */

.app-slideshow {
	z-index: 1;
	width: 100%;
	overflow: hidden;
	position: relative;
}

.app-slideshow .app-icon {
	top: 25vh;
	width: 10vh;
	height: 10vh;
	position: absolute;
	background-size: auto 100%;
	background-repeat: no-repeat;
	background-position: center center;
	transition: opacity 0.2s;
	opacity: 0.1;
}

.app-slideshow .app-icon:hover {
	opacity: 0.5;
}

.app-icon-lft { 
	left: 0;
	background-image: url(graphics/arrow-left.svg); 
}

.app-icon-rgt { 
	right: 0;
	background-image: url(graphics/arrow-right.svg); 
}

.app-slideshow .app-slide {
	width: 100vw;
	min-width: 100vw;
	background-size: contain;
	background-repeat: no-repeat;
}

.app-slideshow .app-slides {
	transition: margin-left 1.5s;	
}

.app-slides {
	width: 100%;
	display: flex;
}

.app-slide {
	height: 60vh;
	display: flex;
	align-items: center;
	justify-content: center;
}

.app-slide-placeholder {
	width: 100%;
	height: 50vh;
	background-color: rgba(0,0,0,0.1);
}

/* Gallery */

.app-gallery [class^="col"] {
	padding: 7.5px;	
}

.app-gallery img {
	display: block;
	filter: grayscale(100%);
	transition: filter 0.25s;
}

.app-gallery a:hover img {
	filter: grayscale(0);	
}

/*
---------------------------------------------------------------------------------------------------- 
	Footer
----------------------------------------------------------------------------------------------------
*/

.app-footer {
	z-index: 1;
	position: relative;
}

.app-footer-logo {
	height: 50px;
	display: block;	
}

.app-footer hr {
	margin-left: 15px;
	margin-right: 15px;
}	

/*
---------------------------------------------------------------------------------------------------- 
	App Lightbox
----------------------------------------------------------------------------------------------------
*/

.app-lightbox {
	top: 0; 
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 10;
	display: none;
	position: fixed;
	padding-left: 15px;
	padding-right: 15px;
	background-color: rgba(0,0,0,0.65);	
}

.app-lightbox:after {
	top: 15px;
	right: 15px;
	width: 30px;
	height: 30px;	
	display: block;
	position: absolute;
	background: url(graphics/nav-x.svg) center no-repeat ;
	background-size: 100%;
	cursor: pointer;
	content: " ";
}

.app-lightbox.visible {
	display: flex;
	align-items: center;
	justify-content: center;
}

.app-lightbox .scrolls {
	transition: margin-top 0.3s;	
}

.app-lightbox-container {
	overflow: hidden;
	max-width: calc(100vw - 60px);
	max-height: calc(100vh - 60px);
}

/*
---------------------------------------------------------------------------------------------------- 
	Media queries
----------------------------------------------------------------------------------------------------
*/

@media (min-width: 414px) {
	
}

@media (min-width: 768px) {

	.app {
		font-size: calc(14px + ((100vw - 768px) / 108));
	}
	
	.app-header {
		height: 100px;
	}
		
	.app-header .app-button {
		height: auto;
	}
		
	.app-logo-image {
		height: 40px;
	}
		
	.app-main {
		padding-top: 100px;	
	}

	.pt-sm-0,  .py-sm-0  { padding-top: 0vh;}
	.pb-sm-0,  .py-sm-0  { padding-bottom: 0vh;}
	.pt-sm-6,  .py-sm-6  { padding-top: 6vh;}
	.pb-sm-6,  .py-sm-6  { padding-bottom: 6vh;}
	.pt-sm-9,  .py-sm-9  { padding-top: 9vh;}
	.pb-sm-9,  .py-sm-9  { padding-bottom: 9vh;}	
	.pt-sm-12, .py-sm-12 { padding-top: 12vh; }
	.pb-sm-12, .py-sm-12 { padding-bottom: 12vh; }

	.app-slideshow .app-icon {
		top: 22.5vh;
		width: 15vh;
		height: 15vh;
	}
	
	.app-slideshow .app-slide {
		width: 80vw;
		min-width: 80vw;
		background-clip: padding-box;
		border-left: solid 2.5vw transparent;
		border-right: solid 2.55vw transparent;
	}
}

@media (max-width: 991.999px) {
	
	.app-footer {
		text-align: center;	
	}
	
	.app-footer-logo {
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 1em;	
	}
}

@media (min-width: 1200px) { 

	.app {
		font-size: 18px;	
	}	
	
	.app-header {
		height: 140px;
	}
	
	.app-logo-image {
		height: 50px;
	}	
	
	.app-main {
		padding-top: 140px;	
	}
	
	.app-slideshow .app-icon {
		top: 20vh;
		width: 20vh;
		height: 20vh;
	}

	.app-slideshow .app-slide {
		width: 60vw;
		min-width: 60vw;
		border-left-width: 5vw;
		border-right-width: 5vw;
	}	
}

@media (min-width: 1330px) {

	.font-lg { font-size: 1.2em; }
	.font-xl { font-size: 1.4em; }
	
	.font-lg .app-button { font-size: 0.84em; }
	.font-xl .app-button { font-size: 0.72em; }
}
