/***************************************************************************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
 * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
 * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
 * with the License.  You may obtain a copy of the License at                                                              *
 *                                                                                                                         *
 *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
 *                                                                                                                         *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 * specific language governing permissions and limitations under the License.                                              *
 ***************************************************************************************************************************/
 
/** Dark look-and-feel */ 
 
/**********************************************************************************************************************/
/**  Body                                                                                                            **/
/**********************************************************************************************************************/

body {
	background-color: #212121 ;
	margin: 0px;
	font-family: HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;
	color: #EEE;
	height: 100%;
}

body {
	font-size: 14px;
}

body textarea, body pre {
	-moz-tab-size: 3; 
	-o-tab-size: 3; 
	-webkit-tab-size: 3; 
	tab-size: 3; 
}

/**********************************************************************************************************************/
/**  Header                                                                                                        **/
/**********************************************************************************************************************/

header {
	background-color: #373a3c;
}

header * {
    font-size: 14px;
	color: #B3B3B3;
	margin: 0px;
	text-decoration: none;
	font-weight: normal;
}

header h1 {
	padding: 10px 20px;
	font-size: 16px;
	border-bottom: 2px solid #000000;
	color: white;
}

header h2 {
	padding: 10px 20px;
	font-size: 14px;
	border-bottom: 2px solid #000000;
}

/**********************************************************************************************************************/
/**  Nav                                                                                                             **/
/**********************************************************************************************************************/

nav {
	margin: 10px 20px 10px 20px;
	color: #94A3AB;
}

nav>ol {
	list-style-type: none;
	margin: 0px 10px;
	padding: 0px;
}

nav>ol>li {
	display: inline;
}

nav li:not(:first-child):before {
	content: " - ";
}

nav a {
	font-size: 10pt;
	color: #94A3AB;
	text-decoration: none;
	margin: 0px 15px;
	text-transform: uppercase;
	cursor: pointer;
}

nav a:active, nav a:hover {
	color: white;
	text-decoration: underline;
}

/**********************************************************************************************************************/
/**  Content                                                                                                        **/
/**********************************************************************************************************************/

section {
	display: table;
	width: 100%;
	margin-bottom: 50px;
}

article {
	display: table-cell;
}

article * {
	font-size: 9pt;
	color: #EEE;
}

article textarea, article input, article button {
	color: #111;
}

article textarea, article input {
	background-color: #EEE;
}

article div.data {
	padding: 10px;
	background-color: #373a3c;
	border-radius: 4px;
	margin: 20px;
	display: inline-block;
	box-shadow: 2px 3px 3px 0px rgba(0, 0, 0, 0.5);
	font-family: sans-serif;
}

article table {
	border: none;
	width: 100%;
}

article th {
	padding: 4px 8px;
	font-weight: normal;
	text-align: center;
	background-color: #0275d8;
}

article td {
	vertical-align: top;
	border-bottom: 1px solid #000000;
	border-right: 1px solid #000000;
	padding: 2px 5px;
}

article td:last-child {
    width: 100%;
}

article ul {
	margin: 0px;
	padding-left: 20px;
}

article a {
	color: #3d8bb5;
	text-decoration: none;
}

article a:hover {
	text-decoration: underline;
}

article iframe {
	background-color: #F6F7F9;
	border: 1px solid gray;
	padding: 0px;
	overflow: hidden;
	width: 100%;
	min-height: 400px;
}

aside {
	display: table-cell;
	vertical-align: top;
	padding: 20px 20px;
}

/**********************************************************************************************************************/
/**  Footer                                                                                                          **/
/**********************************************************************************************************************/

footer { 
	padding: 10px;
	width: 100%;
	bottom: 0;
	position: fixed;
	background-color: #373a3c;
}

/**********************************************************************************************************************/
/**  Popup windows                                                                                                   **/
/**********************************************************************************************************************/

.popup-content {
	display: none;
	position: absolute;
	background-color: #DDD;
	white-space: nowrap;
	padding: 5px;
	box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
	z-index: 1;
	margin-top: 10px;
	border-radius: 4px;
}

.popup-content * {
	color: black;
	font-size: 11px;
}

.popup-content a:hover {
	color: #94A3AB;
}

.popup-show {
	display:block;
}

/**********************************************************************************************************************/
/**  Tooltips                                                                                                        **/
/**********************************************************************************************************************/

.tooltip {
	position: relative;
	display: inline-block;	    
}

.tooltip .tooltiptext {
	visibility: hidden;
	background-color: #FEF9E7;
	color: black;
	padding: 5px;
	border-radius: 6px;
	position: absolute;
	z-index: 1;
	top: 0;
	left: 0;
	margin-left: 30px;
	box-shadow: 2px 3px 3px 0px rgba(0, 0, 0, 0.5);
	opacity: 0;
	transition: opacity 0.5s;
	font-weight: normal;
}

.tooltip .tooltiptext * {
	color: black;
}

.tooltip:hover .tooltiptext {
	visibility: visible;
	opacity: 1;
}	

.tooltiptext {
	white-space: nowrap;
	float: left;
	border: 1px solid black;
}

/**********************************************************************************************************************/
/**  Other classes                                                                                                   **/
/**********************************************************************************************************************/

.table {display:table;}
.row {display:table-row;}
.cell {display:table-cell;}
.monospace {font-family:monospace;}
.link { color: #94A3AB; text-decoration: none; cursor: pointer;}
.link:hover { text-decoration: underline; }
