/*
  CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
  Tested with XSL stylesheets 1.61.2, 1.67.2
*/

span.strong {
  font-weight: bold;
}

body blockquote {
  margin-top: .75em;
  line-height: 1.5;
  margin-bottom: .75em;
}

html body {
  margin: 1em 5% 1em 5%;
  line-height: 1.2;
}

body div {
  margin: 0;
}

h1, h2, h3, h4, h5, h6,
div.toc p b,
div.list-of-figures p b,
div.list-of-tables p b,
div.abstract p.title
{
  color: #527bbd;
  font-family: tahoma, verdana, sans-serif;
}

div.toc p:first-child,
div.list-of-figures p:first-child,
div.list-of-tables p:first-child,
div.example p.title
{
  margin-bottom: 0.2em;
}

body h1 {
  margin: .0em 0 0 -4%;
  line-height: 1.3;
  border-bottom: 2px solid silver;
}

body h2 {
  margin: 0.5em 0 0 -4%;
  line-height: 1.3;
  border-bottom: 2px solid silver;
}

body h3 {
  margin: .8em 0 0 -3%;
  line-height: 1.3;
}

body h4 {
  margin: .8em 0 0 -3%;
  line-height: 1.3;
}

body h5 {
  margin: .8em 0 0 -2%;
  line-height: 1.3;
}

body h6 {
  margin: .8em 0 0 -1%;
  line-height: 1.3;
}

body hr {
  border: none; /* Broken on IE6 */
}
div.footnotes hr {
  border: 1px solid silver;
}

div.navheader th, div.navheader td, div.navfooter td {
  font-family: sans-serif;
  font-size: 0.9em;
  font-weight: bold;
  color: #527bbd;
}
div.navheader img, div.navfooter img {
  border-style: none;
}
div.navheader a, div.navfooter a {
  font-weight: normal;
}
div.navfooter hr {
  border: 1px solid silver;
}

body td {
  line-height: 1.2
}

body th {
  line-height: 1.2;
}

ol {
  line-height: 1.2;
}

ul, body dir, body menu {
  line-height: 1.2;
}

html {
  margin: 0; 
  padding: 0;
}

body h1, body h2, body h3, body h4, body h5, body h6 {
  margin-left: 0
} 

body pre {
  margin: 0.5em 10% 0.5em 1em;
  line-height: 1.0;
  color: navy;
}

tt.literal, code.literal {
  color: navy;
}

div.literallayout p {
  padding: 0em;
  margin: 0em;
}

div.literallayout {
  font-family: monospace;
#  margin: 0.5em 10% 0.5em 1em;
  margin: 0em;
  color: navy;
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

.programlisting, .screen {
  border: 1px solid silver;
  background: #f4f4f4;
  margin: 0.5em 10% 0.5em 0;
  padding: 0.5em 1em;
}

div.sidebar {
  background: #ffffee;
  margin: 1.0em 10% 0.5em 0;
  padding: 0.5em 1em;
  border: 1px solid silver;
}
div.sidebar * { padding: 0; }
div.sidebar div { margin: 0; }
div.sidebar p.title {
  font-family: sans-serif;
  margin-top: 0.5em;
  margin-bottom: 0.2em;
}

div.bibliomixed {
  margin: 0.5em 5% 0.5em 1em;
}

div.glossary dt {
  font-weight: bold;
}
div.glossary dd p {
  margin-top: 0.2em;
}

dl {
  margin: .8em 0;
  line-height: 1.2;
}

dt {
  margin-top: 0.5em;
}

dt span.term {
  font-style: italic;
}

div.variablelist dd p {
  margin-top: 0;
}

div.itemizedlist li, div.orderedlist li {
  margin-left: -0.8em;
  margin-top: 0.5em;
}

ul, ol {
    list-style-position: outside;
}

div.sidebar ul, div.sidebar ol {
    margin-left: 2.8em;
}

div.itemizedlist p.title,
div.orderedlist p.title,
div.variablelist p.title
{
  margin-bottom: -0.8em;
}

div.revhistory table {
  border-collapse: collapse;
  border: none;
}
div.revhistory th {
  border: none;
  color: #527bbd;
  font-family: tahoma, verdana, sans-serif;
}
div.revhistory td {
  border: 1px solid silver;
}

/* Keep TOC and index lines close together. */
div.toc dl, div.toc dt,
div.list-of-figures dl, div.list-of-figures dt,
div.list-of-tables dl, div.list-of-tables dt,
div.indexdiv dl, div.indexdiv dt
{
  line-height: normal;
  margin-top: 0;
  margin-bottom: 0;
}

/*
  Table styling does not work because of overriding attributes in
  generated HTML.
*/
div.table table,
div.informaltable table
{
    margin-left: 0;
    margin-right: 5%;
    margin-bottom: 0.8em;
}
div.informaltable table
{
    margin-top: 0.4em
}
div.table thead,
div.table tfoot,
div.table tbody,
div.informaltable thead,
div.informaltable tfoot,
div.informaltable tbody
{
    /* No effect in IE6. */
    border-top: 2px solid #527bbd;
    border-bottom: 2px solid #527bbd;
}
div.table thead, div.table tfoot,
div.informaltable thead, div.informaltable tfoot
{
    font-weight: bold;
}

div.mediaobject img {
    border: 1px solid silver;
    margin-bottom: 0.8em;
}
div.figure p.title,
div.table p.title
{
  margin-top: 1em;
  margin-bottom: 0.4em;
}

@media print {
  div.navheader, div.navfooter { display: none; }
}
