/*=============================================================================
    Copyright (c) 2004 Joel de Guzman
    http://spirit.sourceforge.net/

    Use, modification and distribution is subject to the Boost Software
    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
    http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/

/*=============================================================================
    Body defaults
=============================================================================*/

    body 
    {
        margin: 1em;
        font-family: sans-serif;
    }

/*=============================================================================
    Paragraphs
=============================================================================*/

    p 
    {
        text-align: left;
        font-size: 10pt; 
        line-height: 1.15;
    }

/*=============================================================================
    Program listings
=============================================================================*/

    /* Code on paragraphs */
    p tt.computeroutput
    {
        font-size: 10pt;
    }

    pre.synopsis
    {
        font-size: 10pt;
        margin: 1pc 4% 0pc 4%;
        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
    }

    .programlisting, 
    .screen
    {
        font-size: 10pt;
        display: block;
        margin: 1pc 4% 0pc 4%;
        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
    }

    /* Program listings in tables don't get borders */
    td .programlisting,
    td .screen
    {
        margin: 0pc 0pc 0pc 0pc;
        padding:  0pc 0pc 0pc 0pc;
    }

/*=============================================================================
    Headings
=============================================================================*/

    h1, h2, h3, h4, h5, h6 
    { 
        text-align: left;
        margin: 1em 0em 0.5em 0em;
        font-weight: bold;
    }

    h1 { font: 140% }
    h2 { font: bold 140% }
    h3 { font: bold 130% }
    h4 { font: bold 120% }
    h5 { font: italic 110% }
    h6 { font: italic 100% }

    /* Top page titles */
    title, 
    h1.title, 
    h2.title
    h3.title, 
    h4.title, 
    h5.title, 
    h6.title, 
    .refentrytitle
    {
        font-weight: bold;
        margin-bottom: 1pc;
    }

    h1.title { font-size: 140% }
    h2.title { font-size: 140% }
    h3.title { font-size: 130% }
    h4.title { font-size: 120% }
    h5.title { font-size: 110% }
    h6.title { font-size: 100% }

    .section h1 
    {
        margin: 0em 0em 0.5em 0em;
        font-size: 140%;
    }

    .section h2 { font-size: 140% }
    .section h3 { font-size: 130% }
    .section h4 { font-size: 120% }
    .section h5 { font-size: 110% }
    .section h6 { font-size: 100% }

    /* Code on titles */
    h1 tt.computeroutput { font-size: 140% }
    h2 tt.computeroutput { font-size: 140% }
    h3 tt.computeroutput { font-size: 130% }
    h4 tt.computeroutput { font-size: 120% }
    h5 tt.computeroutput { font-size: 110% }
    h6 tt.computeroutput { font-size: 100% }

/*=============================================================================
    Author
=============================================================================*/

    h3.author 
    { 
        font-size: 100% 
    }

/*=============================================================================
    Lists
=============================================================================*/

    li
    {
        font-size: 10pt;
        line-height: 1.3;
    }

    /* Unordered lists */
    ul 
    {
        text-align: left;
    }

    /* Ordered lists */
    ol 
    {
        text-align: left;
    }

/*=============================================================================
    Links
=============================================================================*/

    a
    {
        text-decoration: none; /* no underline */
    }

    a:hover
    {
        text-decoration: underline;
    }

/*=============================================================================
    Spirit style navigation
=============================================================================*/

    .spirit-nav
    {
        text-align: right;
    }

    .spirit-nav a
    {
        color: white;
        padding-left: 0.5em;
    }

    .spirit-nav img
    {
        border-width: 0px;
    }

/*=============================================================================
    Table of contents
=============================================================================*/

    .toc
    {
       margin: 1pc 4% 0pc 4%;
       padding: 0.1pc 1pc 0.1pc 1pc;
       font-size: 10pt;
       line-height: 1.15;
    }

    .toc-main
    {
       text-align: center;
       margin: 3pc 16% 3pc 16%;
       padding: 3pc 1pc 3pc 1pc;
       line-height: 0.1;
    }

    .boost-toc
    {
       float: right;
       padding: 0.5pc;
    }

/*=============================================================================
    Tables
=============================================================================*/

    .table-title, 
    div.table p.title
    {
        margin-left: 4%;
        padding-right: 0.5em; 
        padding-left: 0.5em;
    }

    .informaltable table, 
    .table table
    {
        width: 92%;
        margin-left: 4%;
        margin-right: 4%;
    }

    div.informaltable table, 
    div.table table
    {
        padding: 4px;
    }

    /* Table Cells */
    div.informaltable table tr td, 
    div.table table tr td
    {
        padding: 0.5em;
        text-align: left;
    }

    div.informaltable table tr th, 
    div.table table tr th
    {
        padding: 0.5em 0.5em 0.5em 0.5em;
        border: 1pt solid white;
        font-size: 120%;
    }

/*=============================================================================
    Blurbs
=============================================================================*/

    div.note,
    div.tip,
    div.important,
    div.caution,
    div.warning,
    div.sidebar
    {
        font-size: 10pt;
        line-height: 1.2;
        display: block;
        margin: 1pc 4% 0pc 4%;
        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
    }

    div.sidebar img
    {
        padding: 1pt;
    }



/*=============================================================================
    Callouts
=============================================================================*/
    .line_callout_bug img
    {
        float: left;
        position:relative;
        left: 4px;
        top: -12px;
        clear: left;
        margin-left:-22px;
    }

    .callout_bug img
    {
    }



/*=============================================================================
    Variable Lists
=============================================================================*/

    /* Make the terms in definition lists bold */
    div.variablelist dl dt,
    span.term
    {
        font-weight: bold;
        font-size: 10pt;
    }

    div.variablelist table tbody tr td
    {
        text-align: left;
        vertical-align: top;
        padding: 0em 2em 0em 0em;
        font-size: 10pt;
        margin: 0em 0em 0.5em 0em;
        line-height: 1;
    }

    /* Make the terms in definition lists bold */
    div.variablelist dl dt
    {
        margin-bottom: 0.2em;
    }

    div.variablelist dl dd
    {
        margin: 0em 0em 0.5em 2em;
        font-size: 10pt;
    }

    div.variablelist table tbody tr td p
    div.variablelist dl dd p
    {
        margin: 0em 0em 0.5em 0em;
        line-height: 1;
    }

/*=============================================================================
    Misc
=============================================================================*/

    /* Title of books and articles in bibliographies */
    span.title
    {
        font-style: italic;
    }

    span.underline
    {
        text-decoration: underline;
    }

    span.strikethrough
    {
        text-decoration: line-through;
    }

    /* Copyright, Legal Notice */
    div div.legalnotice p
    {
        text-align: left
    }

/*=============================================================================
    Colors
=============================================================================*/

    @media screen
    {
        /* Links */
        a
        {
            color: #0C7445;
        }

        a:visited
        {
            color: #663974;
        }

        h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
        h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
        h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
        {
            text-decoration: none; /* no underline */
            color: #000000;
        }

        /* Syntax Highlighting */
        .keyword        { color: #0000AA; }
        .identifier     { color: #000000; }
        .special        { color: #707070; }
        .preprocessor   { color: #402080; }
        .char           { color: teal; }
        .comment        { color: #800000; }
        .string         { color: teal; }
        .number         { color: teal; }
        .white_bkd      { background-color: #E8FBE9; }
        .dk_grey_bkd    { background-color: #A0DAAC; }

        /* Copyright, Legal Notice */
        .copyright
        { 
            color: #666666; 
            font-size: small; 
        }

        div div.legalnotice p
        {
            color: #666666;
        }

        /* Program listing */
        pre.synopsis
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        .programlisting, 
        .screen
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        td .programlisting,
        td .screen
        {
            border: 0px solid #DCDCDC;
        }

        /* Blurbs */
        div.note,
        div.tip,
        div.important,
        div.caution,
        div.warning,
        div.sidebar
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        /* Table of contents */
        .toc
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        /* Table of contents */
        .toc-main
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }


        /* Tables */
        div.informaltable table tr td, 
        div.table table tr td
        {
            border: 1px solid #DCDCDC;
            background-color: #FAFFFB;
        }

        div.informaltable table tr th, 
        div.table table tr th
        {
            background-color: #E3F9E4;
            border: 1px solid #DCDCDC;
        }

        /* Misc */
        span.highlight
        {
            color: #00A000;
        }
    }

    @media print
    {
        /* Links */
        a
        {
            color: black;
        }

        a:visited
        {
            color: black;
        }

        .spirit-nav
        {
            display: none;
        }

        /* Program listing */
        pre.synopsis
        {
            border: 1px solid gray;
            background-color: #FAFFFB;
        }

        .programlisting, 
        .screen
        {
            border: 1px solid gray;
            background-color: #FAFFFB;
        }

        td .programlisting,
        td .screen
        {
            border: 0px solid #DCDCDC;
        }

        /* Table of contents */
        .toc
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        /* Table of contents */
        .toc-main
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            background-color: #FAFFFB;
        }

        .informaltable table, 
        .table table
        {
            border: 1px solid #DCDCDC;
            border-bottom: 3px solid #9D9D9D;
            border-right: 3px solid #9D9D9D;
            border-collapse: collapse;
            background-color: #FAFFFB;
        }

        /* Tables */
        div.informaltable table tr td, 
        div.table table tr td
        {
            border: 1px solid #DCDCDC;
            background-color: #FAFFFB;
        }

        div.informaltable table tr th, 
        div.table table tr th
        {
            border: 1px solid #DCDCDC;
            background-color: #FAFFFB;
        }

        /* Misc */
        span.highlight
        {
            font-weight: bold;
        }
    }
