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

/*      Autodoc css file for C++ documentation      */


body   { color:#333333; background-color:#ffffff; }

#adc-cppref a:link { color: #107EC0; text-decoration: none; }
#adc-cppref a:visited { color: #638093; text-decoration: none; }
#adc-cppref a:hover { color: #107EC0; text-decoration: underline; }

#adc-cppref h1     { font-size:20pt; margin-top:3pt; margin-bottom:7pt; }
#adc-cppref h2     { font-family:Arial; font-size:16pt; margin-top:3pt; margin-bottom:5pt; }
#adc-cppref h3     { font-size:13pt; margin-top:2pt; margin-bottom:3pt; }
#adc-cppref h4     { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }
#adc-cppref dl     { margin-top:1pt; margin-bottom:1pt; }
#adc-cppref dl.member  { margin-top:1pt; margin-bottom:1pt; 
	     background-image:url(../../images/bg_table3.png); }
#adc-cppref dt     { font-size:10pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }
#adc-cppref dt.member  { font-size:13pt; font-weight:bold; margin-top:2pt; margin-bottom:1pt; }
#adc-cppref dt.simple  { font-size:10pt; font-weight:normal; margin-top:2pt; margin-bottom:1pt; }
#adc-cppref dd     { font-size:10pt; margin-top:1pt; margin-bottom:1pt; }
#adc-cppref dd.member  { font-size:10pt; margin-top:1pt; margin-bottom:1pt; background-color:#ffffff; }
#adc-cppref p      { font-size:10pt; margin-top:3pt; margin-bottom:1pt; }
#adc-cppref pre    { font-family:monospace; font-size:10pt; margin-top:1pt; margin-bottom:1pt; }
#adc-cppref tr     { font-size:10pt; }
#adc-cppref td     { font-size:10pt; }

#adc-cppref dt.attention   { color:#ff0000; }

#adc-cppref div.title      { text-align:center;  line-height:26pt; 
		 background-image:url(../../images/bg_table.png); }
#adc-cppref .subtitle      { background-image:url(../../images/bg_table.png); }

#adc-cppref td.flagname    { background-image:url(../../images/bg_table2.png);
	         font-family:Arial; font-size:8pt; font-weight:bold; }
#adc-cppref td.flagyes     { font-family:Arial; font-size:8pt; font-weight:bold; }
#adc-cppref td.flagno      { font-family:Arial; font-size:8pt; }
#adc-cppref td.flagtext    { font-family:Arial; font-size:8pt; font-weight:bold; }

#adc-cppref td.navimain, td.navimain a
               { background-image:url(../../images/bg_table2.png);
                 font-family:Arial; font-size:12pt; font-weight:bold; }

/* background-color:#eeeeff; color:#000000; */

#adc-cppref td.navimainself
               { background-color:#226bb0; color:#ffffff;
                 font-family:Arial; font-size:12pt; font-weight:bold; }
#adc-cppref td.navimainnone
               { background-image:url(../../images/bg_table2.png);
                 font-family:Arial; font-size:12pt; }

#adc-cppref div.define     { font-family:Arial; background-color:#87c2e6; }

#adc-cppref .nqclass       { color:#008800; }

#adc-cppref h3.help        { background-color:#cfe7f5; margin-top:12pt; }

#adc-cppref .btpubl        { color:#87c2e6; }
#adc-cppref .btprot        { color:#226bb0; }
#adc-cppref .btpriv        { color:#06348c; }
#adc-cppref .btvpubl       { color:#87c2e6; font-style:italic; }
#adc-cppref .btvprot       { color:#226bb0; font-style:italic; }
#adc-cppref .btvpriv       { color:#06348c; font-style:italic; }
#adc-cppref .btself        { font-weight:bold; }

#adc-cppref table { empty-cells:show; }

#adc-cppref .childlist td, 
#adc-cppref .commentedlinks td, 
#adc-cppref .memberlist td, 
#adc-cppref .title-table td, 
#adc-cppref .subtitle td, 
#adc-cppref .crosstitle td  { border: .1pt solid grey }

#adc-cppref .flag-table td { border: .1pt solid #cccccc; } 

#adc-cppref .table-in-method td, 
#adc-cppref .table-in-data td, 
#adc-cppref .navimain td, 
#adc-cppref .navisub td, 
#adc-cppref .expl-table td, 
#adc-cppref .param-table td  { border: none; }


/* Explanation of CSS classes:

dl.member       provides coloured frame for function descriptions.
dd.member       makes the content of this frame white

dt.attention    special colour for @attention remarks

div.title       HTML page headline
.subtitle       headline of lists of members and similar

                These are for the flagtables in classes:
td.flagname     Flag name.
td.flagyes      flag value "yes"
td.flagno       flag value "no"
td.flagtext     other flag value


                These are for the main navigationbar:
td.navimain, td.navimain a
                Links in navibar.
td.navimainself Text in navibar which refers to current page.
td.navimainnone Text which links to nothing.


div.define      Subtitles on the #define/macro descriptions page

.nqclass        special color for classes in the qualification
                on top of type pages like in:
                ::nsp1::nsp2::_ClassXY_::

h3.help         Subtitles on the help page

                These are for the base class tree on class pages:
.btpubl         public base class
.btprot         protected
.btpriv         private
.btvpubl        virtual public
.btvprot        virtual protected
.btvpriv        virtual private
.btself         placeholder for currently displayed class

*/
