/* 
 * Copyright 2004, 2005 The Apache Software Foundation
 *
 * Licensed 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.
 */

{
	font-size: 14px;	
}
BODY
{
	background-color: #EEEEDD;
}

HR
{
  clear: both;
}

a
{
	color:#358;
	border-bottom:1px dotted #469;
	text-decoration: none;
}
a:visited
{
  color:#358;
  border-color:#899;
}
a:hover, a:active
{
  color:#933;
  border-color:#b55;
  border-bottom-style:solid;
}
  
DIV.title
{
  font-variant: small-caps;
  text-align: center;
  font-weight: bold;
}

DIV.center-nav
{
  text-align: center;
  font-weight: bold;
}

DIV.left-nav
{
 float: left;
 font-weight: bold; 
}

DIV.right-nav
{
  float: right;
  font-weight: bold;
}

TABLE.top-level-object
{
  border-left: 5px solid black;
  padding-left: 0px;
  margin-left: 0px;
  border-top: 1px solid black;
  border-right: 1px solid black;
  border-bottom: 1px solid black;
}

TABLE.nested-object
{
  border-left: 2px solid black;
  margin-right: 10px;
  margin-left: 0px;
  border-top: 1px solid black;
  border-right: 1px solid black;
}

TABLE.top-level-object TD
{
  border-bottom: 1px solid black;
}

TABLE.top-level-object TH
{
  text-align: right;
  padding-right: 5px;
  border-bottom: 1px solid black;
}

TABLE.top-level-object TR
{
 vertical-align: top;
}

TABLE.top-level-object TH.object-id
{
	color: white;
	background-color: #3A4E6B;
	padding-left: 10px;
	text-align: left;
	font-variant: small-caps;
}

TABLE.nested-object TH.object-id
{
  font-variant: normal;
}

TABLE.nested-object TH.sub-id
{
  color: white;
  background-color: #526D96;
  text-align: left;
  padding-left: 10px;
}

TABLE.top-level-object TD.service-interface
{
  text-align: right;
  font-style: italic;
}

TD.description
{
	padding-left: 10px;
	font-style: italic;
}

TABLE.top-level-object TH.section
{
  padding-left: 10px;
  color: white;
  background-color: #526D96;
  font-weight: bold;
  text-align: left;
}

DIV.xml
{
	margin-top: 5px;
	margin-left: 15px;
	padding-bottom: 10px;
}

DIV.xml UL
{
  margin-bottom: 0px;
  margin-top: 0px;
  margin-left: 15px;
  list-style-type: none;
}

SPAN.attribute
{
  font-weight: bold;
}

SPAN.attribute-value
{
	color: #444455;
}

SPAN.attribute-translator
{
  color: black;
  font-style: italic;
}

TD.container
{
  padding-top: 5px;
  padding-bottom: 10px;
  padding-left: 10px;
}

TABLE.summary
{
	border: 1px solid #CCCCCC;
}

TABLE.layout
{
  margin-right: 20px;
}

TABLE.layout TR
{
 vertical-align: top;
}

TABLE.layout TD
{
  border: none;
}

TABLE.summary TH
{
  text-align: center;
  font-variant: small-caps;
  background-color: #3A4E6B;
  color: white;
}

TABLE.summary TD
{
	background-color: #FFFFFF;
	padding-right: 3px;
	padding-bottom: 3px;
	padding-left: 3px;
}

TH.section A
{
	color: white;
	border-bottom: 1px solid white;
}

TH.section A:hover,A:active
{
	color:#933;
}

TH.object-id A
{
	color: white;
	border-bottom: 1px solid white;
}

TH.object-id A:hover,A:active
{
	color:#933;
}

DIV.info
{
  font-style: italic;
}