/* Copyright 2002-2004 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.
 */

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * mainframe ;-)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
html {
    font-size: 14px;
}

body {
    background-color: #fff;
    color: #036;
    padding: 0 1em 0 0;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: normal;
}

pre, code {
    font-family: "Courier New", Courier, monospace;
}

strong {
    font-weight: bold;
}

q, em, var {
    font-style: italic;
}

span.transnote {
    background-color: inherit;
    color: #888;
}

/* fixup IE & Opera
 * otherwise they forget to inherit
 * the computed font-size value
 */
table, code {
    font-size: 1em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Links
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* normal links           */
/* ====================== */
a:link {
    color: #0073c7;
    background-color: inherit;
}

a:visited {
    color: #5A88B5;
    background-color: inherit;
}

a:link:hover,
a:link:active,
a:visited:hover,
a:visited:active {
    color: #0073c7;
    background-color: #f0f0f0;
}

/* hover on non-white backgrounds */
tr.odd a:hover,
tr.odd a:active,
tr.header a:hover,
tr.header a:active,

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Headings
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* h1                     */
/* ====================== */

h1 {
    padding: 0.2em;
    margin: 0;
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-size: 22px;
    font-weight: bold;
    text-align:center;
}

/* h2                     */
/* ====================== */
h2 {
    padding: 0.2em 0 0.2em 0.7em;
    margin: 0 0 0.5em 0;
    text-decoration: none;
    font-size: 18px;
    font-weight: bold;
    text-align:left;
}

/* take care of <a name>s inside */
h2 a,
h2 a:hover,
h2 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* h3, h4                 */
/* ====================== */
h3 {
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
    margin: 1.3em 0 0.4em 0;
    padding: 0;
}

h4 {
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-weight: bold;
    font-size: 14px;
    margin: 1.3em 0 0.2em 0;
    padding: 0;
}

/* margin adjustment */
h3 + *, h4 + * {
    margin-top: 0;
}

/* IE confuses the + * :-(
 * so reset some things
 */
ul, .section table, .directive-section table {
    margin-bottom: 1em;
}

/* take care of <a name>s inside */
h3 a,
h3 a:hover,
h3 a:active,
h4 a,
h4 a:hover,
h4 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Tables
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* general                */
/* ====================== */
/*
table {
    border: 1px solid #aaa;
    border-collapse: collapse;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
}

td, th {
    empty-cells: show; /* show border around empty cells */
    padding: 0.1em 0.2em;
    vertical-align: top;
    text-align: left;
    line-height: 1.3em;
}
*/
th {
    font-weight: bold;
}

td.centered {
    text-align: center;
}

tr.odd { /* for large tables alternating colors */
    background-color: #f2f2f2;
}

tr.header, tr.header th {
    background-color: #e2e2e2;
    border-top: 1px solid #aaa;
    border-bottom: 1px solid #aaa;
}

/* bordered table cells   */
/* ====================== */

/* turn off borders in tables nested in
 * bordered tables per default
 */
table.bordered table td,
table.bordered table th {
    border-style: none;
}

table.bordered td,
table.bordered th,
table table.bordered td,
table table.bordered th {
    border: 1px solid #aaa;
}

/* index page layout table */
/* ======================= */
body#index-page div#page-content {
    width: 100%; /* IE fun */
}

body[id]#index-page div#page-content {
    width: auto; /* reasonable browsers. */
}

table#indextable {
    width: 100%;
    border-collapse: collapse;
    border: 0 none;
}

table#indextable td {
    width: 33.3%;
    border-left: 1px solid #aaa;
    padding-top: 0;
    padding-bottom: 0;
}

table#indextable td.col1 {
    border-left: 0 none;
    padding-left: 0;
}

table#indextable td.col3 {
    padding-right: 0;
}

/* mod/dir. overview table and quick reference  */
/* ============================================ */
table.module th,
table.directive th {
    white-space: nowrap;
}

table.qref {
    border-collapse: collapse;
    width: 100%;
}

table.qref td {
    border-style: none solid;
    border-color: #aaa;
    border-width: 1px;
}

table.qref td.descr {
    padding-left: 1em;
    font-size: 13px;
}

table#legend {
    width: 100%;
    border-style: none;
    border-width: 0;
    vertical-align: bottom;
    padding: 0;
    margin: 0;
}

table#legend td {
    vertical-align: bottom;
    margin: 0;
    padding: 0;
}

table#legend td.letters {
    width: 100%;
    padding-bottom: 0.5em;
}

table#legend table {
    vertical-align: bottom;
    margin: 0 0 0 0.4em;
    padding: 0;
    height: 7.5em;
}

table#legend table td,
table#legend table th {
    vertical-align: middle;
    padding: 0.1ex 0.2em;
    line-height: 1em;
    white-space: nowrap;
}

/* related modules & dir. */
/* ====================== */

/* assuming, all links are enclosed by
 * <code class="directive"> or
 * <code class="module">
 */

table.related {
    border-collapse: separate;
}

table.related th {
    padding: 0.2ex 0.3em;
    background-color: #e5ecf3;
    color: #405871;
    vertical-align: middle;
}

table.related td {
    padding: 0.2ex 0.3em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Lists
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* list default values    */
/* ====================== */
ul {
    list-style-type: disc;
}

ul ul {
    list-style-type: square;
}

ul ul ul {
    list-style-type: circle;
}

li, dt, dd {
    line-height: 1.3em;
}

dt {
    margin-top: 0.5em;
    font-weight: bold;
}

ol li {
    margin-top: 0.5em;
}


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * main page sections
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

div#page-header img {
    padding: 0;
    display: block;
    margin: -70px 0 1px 2em;
    width: 248px;
    height: 70px;
}

div#page-header p.apache {
    background-color: #405871;
    color: #fff;
    padding: 0 0 0 248px;
    margin: 0;
    text-align: center;
    vertical-align: middle;
    font-size: 16px;
    font-weight: bold;
    line-height: 29px;
}

div#page-header p.menu {
    text-align: right;
    font-size: 13px;
    margin: 30px 0 0.5em 0;
    padding: 0;
}

/* breadcrumb navigation */
div.qindex,
div#path {
    text-align:center;
    margin: 0.2em 0 1.2em 30px;
    padding: 0;
    font-size: 13px;
}

p {
    line-height: 1.3em;
}

/* page footer            */
/* ====================== */
div#footer {
/*    margin-left: 30px; */
    font-size: 13px;
    border-top: 1px solid #405871;
    padding-top: 0.2em;
}

div#footer p.apache {
    float: left;
    text-align: left;
    padding: 0 0 1em 0;
    margin-top: 0;
}

div#footer p.menu {
    float: right;
    text-align: right;
    margin-top: 0;
    padding: 0 0 1em 0;
}


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * -> The End (modified doxygen-generated stylesheet below) <-
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

CAPTION { font-weight: bold }

A.qindex {
       font-weight: bold;
}

A.qindexHL {
	font-weight: bold;
        background-color: #405871;
	color: #ffffff;
        padding: 2px 6px;
}
A.qindexHL:hover {
        background-color: #405871;
	color: #ffffff;
}
A.qindexHL:visited { 
        background-color: #405871; 
        color: #ffffff 
}

A.el { font-weight: bold }
A.elRef { font-weight: bold }
DL.el { margin-left: -1cm }
PRE.fragment {
	border: 1px solid #CCCCCC;
	background-color: #f5f5f5;
	margin-top: 4px;
	margin-bottom: 4px;
	margin-left: 2px;
	margin-right: 8px;
	padding-left: 6px;
	padding-right: 6px;
	padding-top: 4px;
	padding-bottom: 4px;
}
DIV.fragment {
	border: 1px solid #CCCCCC;
	background-color: #f5f5f5;
	padding: 6px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #F4F4FB; font-weight: bold; }
TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader {
       margin-left: 16px;
       margin-top: 12px;
       margin-bottom: 6px;
       font-weight: bold;
}
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }

BODY {
	background: white;
	color: black;
	margin-right: 20px;
	margin-left: 30px;
}

TD.indexkey {
	background-color: #eeeeff;
	font-weight: bold;
	padding-right  : 10px;
	padding-top    : 2px;
	padding-left   : 10px;
	padding-bottom : 2px;
	margin-left    : 0px;
	margin-right   : 0px;
	margin-top     : 2px;
	margin-bottom  : 2px;
	border: 1px solid #CCCCCC;
}
TD.indexvalue {
	background-color: #eeeeff;
	font-style: italic;
	padding-right  : 10px;
	padding-top    : 2px;
	padding-left   : 10px;
	padding-bottom : 2px;
	margin-left    : 0px;
	margin-right   : 0px;
	margin-top     : 2px;
	margin-bottom  : 2px;
	border: 1px solid #CCCCCC;
}
TR.memlist {
   background-color: #f0f0f0; 
}
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
SPAN.keyword       { color: #008000 }
SPAN.keywordtype   { color: #604020 }
SPAN.keywordflow   { color: #e08000 }
SPAN.comment       { color: #800000 }
SPAN.preprocessor  { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral   { color: #008080 }
.mdTable {
	border: 1px solid #868686;
	background-color: #F4F4FB;
}
.mdRow {
	padding: 8px 10px;
}
.mdescLeft {
	font-size: smaller;
	font-style: italic;
	background-color: #FAFAFA;
	padding-left: 8px;
	border-top: 1px none #E0E0E0;
	border-right: 1px none #E0E0E0;
	border-bottom: 1px none #E0E0E0;
	border-left: 1px none #E0E0E0;
	margin: 0px;
}
.mdescRight {
	font-size: smaller;
	font-style: italic;
	background-color: #FAFAFA;
	padding-left: 4px;
	border-top: 1px none #E0E0E0;
	border-right: 1px none #E0E0E0;
	border-bottom: 1px none #E0E0E0;
	border-left: 1px none #E0E0E0;
	margin: 0px;
	padding-bottom: 0px;
	padding-right: 8px;
}
.memItemLeft {
	padding: 1px 0px 0px 8px;
	margin: 4px;
	border-top-width: 1px;
	border-right-width: 1px;
	border-bottom-width: 1px;
	border-left-width: 1px;
	border-top-style: solid;
	border-top-color: #E0E0E0;
	border-right-color: #E0E0E0;
	border-bottom-color: #E0E0E0;
	border-left-color: #E0E0E0;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
	background-color: #FAFAFA;
	font-size: 12px;
}
.memItemRight {
	padding: 1px 0px 0px 8px;
	margin: 4px;
	border-top-width: 1px;
	border-right-width: 1px;
	border-bottom-width: 1px;
	border-left-width: 1px;
	border-top-style: solid;
	border-top-color: #E0E0E0;
	border-right-color: #E0E0E0;
	border-bottom-color: #E0E0E0;
	border-left-color: #E0E0E0;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
	background-color: #FAFAFA;
	font-size: 13px;
}

td.tiny { 
        font-size: 75%;
}
/*
a {
	color: #252E78;
}
a:visited {
	color: #3D2185;
}
*/