/*
* 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.
*/
/* Apache Javadoc style sheet */

/* Page background color */
body { background-color: #FFFFFF }

/* Table colors */
.TableHeadingColor     { background: #D0D0D0 }
.TableSubHeadingColor  { background: #E0E0E0 }
.TableRowColor         { background: #F9F9F9 }

/* Navigation bar fonts and colors */
.NavBarCell1    { background-color:#D0D0D0;}
.NavBarCell1Rev { background-color:#A0A0A0;}
.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#E0E0E0;}
.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#F0F0F0;}

/* Font used in left-hand frame lists */
.FrameTitleFont   { font-size: normal; font-family: Helvetica, Arial, sans-serif }
.FrameHeadingFont { font-size: normal; font-family: Helvetica, Arial, sans-serif }
.FrameItemFont    { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }

/* Link colors styling */
A:link { color: #0000A0 }          /* unvisited link */
A:visited { color: #A00000 }       /* visited links */
A:active { color: #00A000 }        /* active links */
