/*=============================================================================
    Copyright (c) 2002 2004 Joel de Guzman, Eric Niebler, Rene Rivera
    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)
=============================================================================*/

/* CSS based on w3c documentation which I like a lot, and the classic Spirit
documentation. */

/* Body defaults */
body 
{
    padding: 2em 1em 2em 1em;
    margin: 1em 1em 1em 1em;
    font-family: sans-serif;
}

/* Paragraphs */
p 
{
    text-align: justify;
}

pre.synopsis
{
    margin: 1pc 4% 0pc 4%;
    padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}

/* Headings */
h1, h2, h3, h4, h5, h6 { text-align: left; margin-top: 2pc; }
h1 { font: 170% sans-serif }
h2 { font: bold 140% sans-serif }
h3 { font: 120% sans-serif }
h4 { font: bold 100% sans-serif }
h5 { font: italic 100% sans-serif }
h6 { font: italic 100% sans-serif }

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

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

a:hover
{
    text-decoration: underline;
}

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

/* Spirit style navigation */
.spirit-nav
{
    text-align: right;
}

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

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

/* Program listing box */
.programlisting, .screen
{
    display: block;
    margin-left:  4%;
    margin-right: 4%;
    padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}

/* Table of contents */
.toc
{
   margin: 1pc 4% 0pc 4%;
   padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}

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

/* screen & programlisting, when used in a table cell, do not
   need the extra padding and margin normally used */

td .screen, td .programlisting
{
    display: block;
    margin-left: 0%;
    margin-right: 0%;
    padding: 0.5pc 0.5pc 0.5pc 0.5pc;
}

/* inlined images */
.inlinemediaobject
{
    padding: 0.5em 0.5em 0.5em 0.5em;
}

/* tone down the title of Parameter lists */
div.variablelist p.title
{
    font-weight: bold;
    font-size: 100%;
    text-align: left;
}

/* tabularize parameter lists */
div.variablelist dl dt
{
    float: left;
    clear: left;
    display: block;
    font-style: italic;
}

div.variablelist dl dd
{
    display: block;
    clear:   right;
    padding-left: 8pc;
}

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

/* tips, notes and warnings done in Spirit style */
div.tip, div.note, div.warning
{
    position: relative;
    padding: 0.5em;
    border: 0.5pt solid white;
}

div.tip .title, div.note .title, div.warning .title
{
    display: block;
    font: bold xx-small sans-serif;
    margin: 0;
    padding: 0;
    position: absolute;
    left: -4em;
    top: 0em;
    height: 25px;
    width: 24px;
    text-indent: 32px;
    overflow: hidden;
    z-index: 2;
}

div.tip .title
{
    background: url(images/tip.png);
}

div.note .title
{
    background: url(images/note.png);
}

div.warning .title
{
    background: url(images/caution.png);
}

@media screen
{
    a
    {
        color: #005a9c;
    }

    a:visited
    {
        color: #9c5a9c;
    }

    /* Syntax Highlighting */
    .keyword        { color: #0000AA; font-weight: bold; }
    .identifier     {}
    .special        { color: #707070; }
    .preprocessor   { color: #402080; font-weight: bold; }
    .char           { color: teal; }
    .comment        { color: #800000; }
    .string         { color: teal; }
    .number         { color: teal; }
    .copyright      { color: #666666; font-size: small; }
    .white_bkd      { background-color: #FFFFFF; }
    .dk_grey_bkd    { background-color: #999999; }

    pre.synopsis
    {
        background-color: #f3f3f3;
    }

    .programlisting, .screen
    {
        background-color: #f3f3f3;
    }

    /* Table of contents */
    .toc
    {
        background-color: #f3f3f3;
    }

    div.tip, div.note, div.warning
    {
        background-color: #F3F3F3;
    }

    span.highlight
    {
        color: #00A000;
    }
}
