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

/*
* Based on CSS from the Apache Wookie Project's Web site.
*/

body {
  background-color: #FCFDFD;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 11pt;
  margin: 0;
}

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

a:visited {
 color: #369;
}

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

p {
    line-height: 140%
}

code,pre {
    padding: 2px 2px;
    color: #00003D;
    background-color: #F1FFFF;
    border: 1px solid #E1E1E8;
    line-height: 140%
}

h1,h2,h3,h4,h5,h6 {
  color: #8a8a8a;
}

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

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

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

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

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

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

#navigation img {
  padding-bottom: 15px;
  padding-top: 15px;
  padding-right: 10px;
  padding-left: 10px;
  margin-left: auto;
  margin-right: auto;
  display: block;
}

#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 {
 margin-top: 15px;
 margin-left: 235px;
 margin-right: 150px;
 border: 1px solid #000000;
 -moz-border-radius: 10px;
 border-radius: 10px;
 background-color:#c6dcf3;
  color:#336;
  font-size: 80%;
  padding: 0 8px;
}

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