/*
  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 {
  margin: 0px;
  padding: 0px;
}
img {
  border:none;
}
table {
  padding:0px;
  width: 100%;
  margin-left: -2px;
  margin-right: -2px;
}
acronym {
  cursor: help;
  border-bottom: 1px dotted #feb;
}
table.bodyTable th, table.bodyTable td {
  padding: 2px 4px 2px 4px;
  vertical-align: top;
}
div.clear{
  clear:both;
  visibility: hidden;
}
div.clear hr{
  display: none;
}
#bannerLeft, #bannerRight {
  font-size: xx-large;
  font-weight: bold;
}
#bannerLeft img, #bannerRight img {
  margin: 0px;
}
.xleft, #bannerLeft img {
  float:left;
  text-shadow: #7CFC00;
}
.xright, #bannerRight img {
  float:right;
  text-shadow: #7CFC00;
}
#banner {
  padding: 0px;
}
#banner img {
  border: none;
}
#breadcrumbs {
  padding: 3px 10px 3px 10px;
}
#leftColumn {
 width: 170px;
 float:left;
 overflow: auto;
}
#bodyColumn {
  margin-right: 1.5em;
  margin-left: 197px;
}
#legend {
  padding: 8px 0 8px 0;
}
#navcolumn {
  padding: 8px 4px 0 8px;
}
#navcolumn h5 {
  margin: 0;
  padding: 0;
  font-size: small;
}
#navcolumn ul {
  margin: 0;
  padding: 0;
  font-size: small;
}
#navcolumn li {
  list-style-type: none;
  background-image: none;
  background-repeat: no-repeat;
  background-position: 0 0.4em;
  padding-left: 16px;
  list-style-position: outside;
  line-height: 1.2em;
  font-size: smaller;
}
#navcolumn li.expanded {
  background-image: url(../images/expanded.gif);
}
#navcolumn li.collapsed {
  background-image: url(../images/collapsed.gif);
}
#poweredBy {
  text-align: center;
}
#navcolumn img {
  margin-top: 10px;
  margin-bottom: 3px;
}
#poweredBy img {
  display:block;
  margin: 20px 0 20px 17px;
  border: 1px solid black;
  width: 90px;
  height: 30px;
}
#search img {
    margin: 0px;
    display: block;
}
#search #q, #search #btnG {
    border: 1px solid #999;
    margin-bottom:10px;
}
#search form {
    margin: 0px;
}
#lastPublished {
  font-size: x-small;
}
.navSection {
  margin-bottom: 2px;
  padding: 8px;
}
.navSectionHead {
  font-weight: bold;
  font-size: x-small;
}
.section {
  padding: 4px;
}
#footer {
  padding: 3px 10px 3px 10px;
  font-size: x-small;
}
#breadcrumbs {
  font-size: x-small;
  margin: 0pt;
}
.source {
  padding: 12px;
  margin: 1em 7px 1em 7px;
}
.source pre {
  margin: 0px;
  padding: 0px;
}
