/***************************************************************************************************************************
 * 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%;
}

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;
	border-top: 2px solid #000000;
}

/**********************************************************************************************************************/
/**  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; }
