/***************************************************************************************************************************
 * 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.                                              *
 ***************************************************************************************************************************/

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

body {
	color: rgb(180, 179, 179)!important;
	margin:0px;
	background-image: url(cat35.jpg);
	
}

body {
	font-size: 14px;
}

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

header  {
	background-color: #26343F;
}

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

header h1 {
	padding: 10px 20px;
	font-size: 16px;
	border-bottom: 2px solid rgb(22, 18, 44);
	color: white;
}

header h2 {
	padding: 10px 20px;
	font-size: 14px;
	border-bottom: 2px solid rgb(22, 18, 44);
}

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

nav {
	
	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: #26343F;
}

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

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

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

article a {
	color: #116998;
	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;
	text-align: justify 
}

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

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

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

.popup-content {
	display: none;
	position: absolute;
	background-color: #f4f6f9;
	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: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; }

.logo {
  position:absolute;
  top:5px;
  right:15px;
  background-color:transparent;
  height:30px;
}

.apachelogo {
  float:right;
  padding-right:20px;
  height:32px;
}
/**********************************************************************************************************************/
/**  Bootstrap nav                                                                                                             **/
/**********************************************************************************************************************/
.navbar {
	background-color: rgb(202, 202, 206)!important;	
} 

section {
	background-color: rgb(9, 21, 27)!important; 	
}

Table { 
	background-color: rgb(197, 204, 207)!important; 
	overflow: scroll;
	
}

th { 
	background-color: rgb(151, 171, 180)!important; 
}
 