
/******** Generic ********/

.flexbox { display: flex; }
.horizontal { flex-direction: row; }
.horizontal-reverse { flex-direction: row-reverse; }
.vertical { flex-direction: column; }
.vertical-reverse { flex-direction: column-reverse; }
.wrap { flex-wrap: wrap; }
.flex-center { justify-content: center; }
.space-between { justify-content: space-between; }
.space-around { justify-content: space-around; }
.align-center { align-items: center; }
.align-start { align-items: flex-start; }
.align-end { align-items: flex-end; }
.wrap-start { align-content: flex-start; }
.flexbox:before, .flexbox:after { content: none!important; }

.flexbox > * { flex-shrink: 0; }
.shrink { flex-shrink: 1; }
.grow1 { flex-grow: 1; }

.grow-scroll {
	flex: 1 1 0;
	overflow: hidden;
}

.flex110 { flex: 1 1 0; }

.lspace { margin-left: 1em!important; }
.rspace { margin-right: 1em!important; }
.tspace { margin-top: 1em!important; }
.bspace { margin-bottom: 1em!important; }
.hlspace { margin-left: 0.5em!important; }
.hrspace { margin-right: 0.5em!important; }
.htspace { margin-top: 0.5em!important; }
.hbspace { margin-bottom: 0.5em!important; }
.lspace, .rspace, .hlspace, .hrspace { min-width: 1px; }
.tspace, .htspace, .bspace, .hbspace { min-height: 1px; }

.center { text-align: center; }
.big { font-size: 120%; }
.med { font-size: 110%; }
.small { font-size: 90%; }
.tiny { font-size: 80%; }
.hint { color: #999; }
.italic { font-style: italic; }
.bold { font-weight: bold; }

label { margin: 0; }

.shadow {
    box-shadow: 0 0 6px -1px black;
    border-radius: 2px;
}

.key-val { width: 100%; line-height: 1.2; }
.key-val > tbody > tr > td { padding: 0.4em 0; }
.key-val > tbody > tr > td:first-child { padding-right: 1.5em; }

.truncate {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/******** Body ********/

body {
    background-color: #789;
	font-size: 10pt;
	display: flex;
	flex-direction: column;
	height: 100vh;
	max-height: 100vh;
}

/******** Navbar ********/

#navbar {
    flex-shrink: 0;
	box-shadow: 0 0 6px -1px black;
	z-index: 1;
	border-radius: 0;
	margin: 0;
	font-size: 12pt;
	background-color: #404040;
	border: none;
}
.navbar-brand {
    font-size: 120%;
}
.navbar-sep {
	float: left;
	height: 50px;
	border-left: 2px solid rgba(255,255,255,0.1);
}
#navbar a { transition: 300ms; }
.navbar-nav li {
    min-width: 5em;
    text-align: center;
}
#navbar .active > a {
    background-color: rgba(0,0,0,0.4);
}

.discord img {
    margin: -1.5em 0;
    height: 1.5em;
    width: auto;
    opacity: 0.5;
    transition: opacity 300ms;
}
.discord:hover img, .discord:focus img {
    opacity: 1;
}

.navbar-collapse { padding: 0; }
.navbar-toggle { margin: 0; }
.navbar-nav.dropdown-menu {
    background-color: #404040;
    margin-right: 0.5em;
}
.navbar-nav.dropdown-menu li { text-align: left; }

/******** SPF ********/

#pageContainer {
    flex-grow: 1;
    overflow-y: auto;
	z-index: 0;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	background-image: url("/img/background.jpg");
	background-size: cover;
	background-position: center top;
}

.page {
	position: relative;
	display: none;
	flex-direction: column;
	flex-grow: 1;
	flex-shrink: 0;
	transition: transform 300ms, opacity 300ms;
}
@media screen and (max-width: 999px) {
	.page { padding: 1.5em 0; }
}
@media screen and (min-width: 1000px) {
	.page { padding: 3em 0; }
}

.page > * { flex-shrink: 0; }

#pageContainer > .page {
	display: flex;
}

#pageLoader {
	position: absolute;
	top: calc(50% - 32px);
	left: calc(50% - 32px);
	z-index: 0;
	opacity: 0;
	transition: opacity 300ms;
}
#pageLoader.show {
	opacity: 1;
	z-index: 1;
}

.template {
    display: none;
    visibility: hidden;
    position: absolute;
    left: 0;
    top: 0;
    width: 0;
    height: 0;
}

#spfErrorPage .block {
    padding: 1em;
    background-color: rgb(250,250,250);
}

/******** ListGroups ********/

.list-group-item {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    background-color: rgb(250,250,250);
    padding: 10px;
    border-left: none;
    border-right: none;
    transition: 300ms;
}
.list-group-item:nth-child(even) {
    background-color: rgb(246,246,246);
}
a.list-group-item:hover, a.list-group-item:focus, a.list-group-item:active {
    background-color: #def!important;
    color: inherit;
}
.list-group-item > * { padding: 0 0.5em; }

.list-group-item.sortable {
    font-weight: bold;
    background-color: rgb(212,7,102);
    background-color: rgb(50,128,206);
    color: rgb(250,250,250);
    border-top: none;
    border-left: none;
    border-right: none;
    border-top-left-radius: 2px;
    border-top-right-radius: 2px;
}
.list-group-item.sortable button {
	background: transparent;
	border: none;
	outline: none;
	text-align: inherit;
}
.list-group-item.sortable button:after {
	content: "";
	background-image: url("/img/caret-down_white.png");
	background-size: 10px;
	background-position: center;
	display: inline-block;
	width: 0;
	height: 10px;
	margin-left: 0;
	vertical-align: middle;
	margin-top: -2px;
	opacity: 0;
	transition: 300ms;
}
.list-group-item.sortable button:hover:after, .list-group-item.sortable button:focus:after, .list-group-item.sortable button.sort:after {
	width: 10px;
	margin-left: 10px;
	opacity: 1;
}
.list-group-item.sortable button.sort.inv:after {
	transform: rotate(180deg);
}
.items-group > .list-group-item:first-child { border-radius: 0; }
.items-group > .list-group-item:last-child {
    border-bottom: none;
    border-bottom-left-radius: 2px;
    border-bottom-right-radius: 2px;
}

/******** Global (shared) ********/

.textblocks {
    line-height: 120%;
    text-align: justify;
}
.textblocks h1 {
    font-size: 180%;
    font-weight: normal;
    margin: 0 0 1em 0;
}
.textblocks h2 {
    font-size: 110%;
    font-weight: bold;
    border-bottom: 1px solid #888;
    padding-bottom: 2px;
    margin: 0.5em 0;
    color: #888;
}
.textblocks li+li {
    margin-top: 0.4em;
}

.map-card {
    position: relative;
    margin: 1em;
    display: flex;
    flex-direction: row;
}
.map-card:hover, .map-card:focus { text-decoration: none; outline: none; }

.map-card .veil {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    background: linear-gradient(to top, rgba(212,7,102,0.4) 0, rgba(212,7,102,0.2) 2em, rgba(212,7,102,0) 100%);
    background: linear-gradient(to top, rgba(50,128,206,0.4) 0, rgba(50,128,206,0.2) 2em, rgba(50,128,206,0) 100%);
    opacity: 0;
    transition: 300ms;
}
.map-card:hover .veil, .map-block:focus .veil { opacity: 1; }

.map-img {
    background-image: url("/img/no-image.png");
    background-size: cover;
    background-position: center;
    object-fit: cover;
    border-top-left-radius: 2px;
    border-bottom-left-radius: 2px;
    overflow: hidden;
}
.player-img {
    border-top-left-radius: 2px;
    border-bottom-left-radius: 2px;
    overflow: hidden;
}

.map-title {
    font-size: 120%;
    font-weight: bold;
    padding: 0.3em 0.6em;
    background-color: rgb(212,7,102);
    background-color: rgb(50,128,206);
    color: rgb(250,250,250);
    border-top-right-radius: 2px;
}

/******** Home ********/

/******** Overview ********/

/******** Map ********/

/******** About ********/
