/*
* 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 {
  color: white;
  font-family: Arial,Helvetica,sans-serif;
  font-size: 11pt;
  margin: 0;
}

a {
  color: #339;
  text-decoration: none;
}

a:visited {
 color: #369;
}

a:hover {
 color: #ddf;
 background-color: #6badff;
}

.title {
  float:right;
}

h1,h2,h3,h4,h5,h6 {
  color: #6f3f00;
}

#content {
 margin-top: 15px;
 margin-left: 200px;
 margin-right: 200px;
 padding: 0 8px 40px;
 color: black;
 background: white;
}

#content h1,h2,h3,h4,h5,h6 {
  color: #955500;
  border-bottom: 1px solid #ffdaae;
  font-weight: normal;
  margin: 10px 0 15px;
  padding: 5px 0;
}

#content h1 {
  font-size: 18pt;
  border: 1px solid #ffdaae;
  -moz-border-radius: 10px;
  border-radius: 10px;
  padding: 15px;
}

#content h2 {
  font-size: 16pt;
}

#content h3,h4,h5,h6 {
  border-bottom: none;
  color: #688a6f;
  font-size: 14pt;
  margin-bottom: 0;
}

#navigation {
  border: 1px solid #ffdaae;
  -moz-border-radius: 10px;
  border-radius: 10px;
  font-size: 85%;
  color: #003;
  float: left;
  padding: 8px;
  width: 160px;
  background: white;
  margin-left: 10px;
  margin-right: 10px;
}

#navigation img {
  padding-bottom: 15px;
  margin-left: auto;
  margin-right: auto;
  display: block;
  max-width: 80px;
}

#navigation h1 {
  color: #000;
  font-size: 1.1em;
  padding: 0;
  margin-top: 0.8em;
  margin-bottom: 0.5em;
  border-bottom: 1px dotted #3487ef;
}

#navigation ul {
  margin: 0 0;
  padding: 0;
  list-style: none;
}

#navigation li {
  margin: 0;
  padding: 0;
}

#navigation li a {
  margin: 0;
  color: #003;
  text-decoration:none;
}

#navigation li a:visited {
  color: #226;
}

#navigation li a:hover {
  background-color: #6badff;
  color: #000;
}

#footer {
 clear:both;
 margin-top: 15px;
 margin-left: 200px;
 margin-right: 200px;
 border: 1px solid #ffdaae;
 -moz-border-radius: 10px;
 border-radius: 10px;
 background-color:#b0b0b0;
  color:#336;
  font-size: 80%;
  padding: 0 8px;
}

/* definition lists */
dd {}
dl {}
dt {
  display: inline;
  float: left;
}