/* Lists */

ol li, ul li {
    padding-left:.2em;
    padding-bottom:.5em;
    margin:0em;
}

ul {
    padding-left:1.6em;
    list-style-image:url(../images/community/dot.png);
    list-style-type:circle;
}

ul ul {
    list-style-image:url(../images/community/dot2.png);
    list-style-type:circle;
}

dt {
    font-weight:bold;
    margin-bottom:0em;
    padding-bottom:0em;
}

dd {
    margin:0em;
    margin-left:2em;
    padding-top:0em;
}

li p:first-child, dd p:first-child {
    padding:0em;
    margin-top:.3em;
}

.variablelist, .itemizedlist {margin-top:.6em;}

ul li p:first-child {margin:0em;}

/* Images */

img {
    display:block;
    margin:2em 0;
}

.inlinemediaobject, .inlinemediaobject img {
    display:inline !important;
    margin:0em;
}

.programlisting a img, pre a img, td a img, td img {
    display:inline;
    margin:0 0;
}

/* Needed for Safari */

pre a span img, pre span img {
    display:inline;
    margin:0 0;
}

span.co {
    position:absolute;
    left:900px
}

/* Document modes */

.confidential {
    background-color:#900;
    color:white;
    padding:.5em .5em;
    font-family:serif;
    text-transform:uppercase;
    text-align:center
}

dt a {font-weight:normal;}

.longdesc-link {display:none;}

.prompt {
    background-color:#ede7c8;
    padding:0em .3em;
}

/* User interface styles */

.screen .replaceable {color:#444;}

.screen {
    background-color:#ede7c8;
    color:#333;
    padding:.5em 1em;
    margin:0em;
}

pre, code, .guibutton, .keycap, .guilabel {
    font-size:0.9em;
    font-family:verdana, helvetica, sans-serif;
}

.guibutton, .keycap, .guilabel {
    font-weight:bold;
    white-space:nowrap;
    color:#444;
    font-family:'Lucida Grande', Geneva, Verdana, Arial, sans-serif;
}

.guibutton, .guilabel {}

.keycap {padding:.1em.4em;}

.example {
    background-color:#c8c5ac;
    padding:5px;
    margin-bottom:10px;
}

/* Terminal/Console text */

.command, .computeroutput, .filename, .citetitle, .replaceable, .option {font-weight:bold;}

.command .replaceable {color:#555;}

pre {
    display:block;
    background-color:#f9f3b0;
    color:#333;
    overflow:auto;
    padding:10px 20px;
}

code {white-space:nowrap;}

/* Admonitions */

/* Set basic colors and spacing */

div.note {
    background:#b5bcbd;
    color:#4c5253;
    border:1px solid #8a9195;
    margin-bottom:1.5em;
    background-repeat:no-repeat;
    background-position:10px 10px;
    padding:1em;
    padding-bottom:20px;
}

div.tip {
    background:#7e917f;
    color:white;
    border:1px solid #8a9195;
    margin-bottom:1.5em;
    background-repeat:no-repeat;
    background-position:10px 10px;
    padding:1em;
    padding-bottom:20px;
}

div.important {
    background:#4a5d75;
    color:white;
    border:1px solid #8a9195;
    margin-bottom:1.5em;
    background-repeat:no-repeat;
    background-position:10px 10px;
    padding:1em;
    padding-bottom:20px;
}

div.caution {
    background:#e3a835;
    color:#533500;
    border:1px solid #ab710a; 
    margin-bottom:1.5em;
    background-repeat:no-repeat;
    background-position:10px 10px;
    padding:1em;
    padding-bottom:20px;
}

div.warning {
    background:#7b1e1e;
    color:white;
    border:1px solid #65504e;
    margin-bottom:1.5em;
    background-repeat:no-repeat;
    background-position:10px 10px;
    padding:1em;
    padding-bottom:20px;
}

/* Pre tag color settings */

div.note pre {
    background-color:#d6dee0;
    color:#334558;
    border:1px solid #e1e9eb;
}

div.tip pre {
    background-color:#d5e1d5;
    color:#334558;
    border:1px solid #e1e9eb;
}

div.important pre {
    background-color:#e1eef4;
    color:#334558;
    border:1px solid #e1e9eb;
}

div.caution pre {
    background-color:#faf8ed;
    color:#334558;
    border:1px solid #e1e9eb;
}

div.warning pre {
    background-color:#faf8ed;
    color:#334558;
    border:1px solid #e1e9eb;
}

/* Background images and margin */

div.note, div.tip, div.important, div.caution, div.warning {margin-top:.5em;}

div.note {background-image:url(../images/community/docbook/note.png);}
div.tip {background-image:url(../images/community/docbook/tip.png);}
div.important {background-image:url(../images/community/docbook/important.png);}
div.caution {background-image:url(../images/community/docbook/caution.png);}
div.warning {background-image:url(../images/community/docbook/warning.png);}

div.note .replaceable, div.tip .replaceable, div.important .replaceable, div.caution .replaceable, div.warning .replaceable {color:#e3dcc0;}

pre .replaceable, tt .replaceable {color:#444 !important;}

div.note h2, div.tip h2, div.important h2, div.caution h2, div.warning h2 {
    height:32px;
    font-size:1.3em;
}

div.note h2 {color:#4c5253;}
div.tip h2 {color:white;}
div.important h2 {color:white;}
div.caution h2 {color:#533500;}
div.warning h2 {color:white;}

div.note .guilabel, div.tip .guilabel, div.important .guilabel, div.caution .guilabel, div.warning .guilabel {color:white !important;}

div.note li, div.tip li, div.caution li, div.warning li, div.important li {
	padding-left:10px;
	margin:0em;
}
	
div.note ul, div.tip ul, div.caution ul, div.warning ul, div.important ul {
	padding-left:40px;
	margin:0em;
}

div.note pre pre a:visited, div.tip pre pre a:visited, div.important pre pre a:visited, div.caution pre pre a:visited, div.warning pre pre a:visited,
div.note pre a:link, div.tip pre a:link, div.important pre a:link, div.caution pre a:link, div.warning pre a:link {color:#0066cc !important;}

div.note a:visited, div.tip a:visited, div.important a:visited, div.warning a:visited,
div.note a:link, div.tip a:link, div.important a:link,  div.warning a:link {color:#f7f2d0;}
	
div.note a:visited, div.note a:link, div.caution a:link, div.caution a:visited {color:#0066cc;}

/* Admonition icons spacing */

div.note h2, div.note p, div.tip h2, div.tip p, div.caution h2, div.caution p, div.warning h2, div.warning p, div.important h2, div.important p {
    padding:0em;
    margin:0em;
    padding-left:56px;
}

/* Page Title */

#title {
    padding:0px;
    margin:0px;
}

#title strong {display:none;}

#title a.site_href {
    display:block;
    height:89px;
    width:310px;
    float:left;
    background:url(../images/community/jbossorglogo.png) top left no-repeat;
}

#title a.doc_href {
    display:block;
    height:89px;
    background:transparent url(../images/community/community_doc.png) top right no-repeat;
}

/* Table */

table {
    border:1px solid #aaa;
    width:100%;
    border-collapse:collapse;
}

table th {
    text-align:left;
    background-color:#4A5D75;
    padding:.3em .5em;
    color:white;
}

table td {padding:.15em .5em;}

table tr.even td {background-color:#f5f5f5;}

table th p:first-child, table td p:first-child, table li p:first-child {
    margin-top:0em;
    padding-top:0em;
    display:inline;
}

th, td {border-style:none;}

table table td {
    border-bottom:1px dotted #aaa !important;
    background-color:white;
    padding:.6em 0em;
}

table table {
    border:1px solid white !important;
    font-size:.9em;
}

td.remarkval {
    font-size:.9em;
    color:#444;
}

.defaultval {font-size:.8em}

td.typeval {font-size:.8em}

td.fieldval {
    font-weight:bold;
    font-size:.9em;
}

th.dbkey {font-size:.9em;}

.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
    color:white;
    font-weight:bold;
    background-color:#999;
    font-size:0.9em;
    width:120px;
}

td.remarkval {width:230px;}

td.tname {
    font-weight:bold;
    font-size:1.1em;
}

h5 {font-size:9pt;}
h6 {font-size:10pt;}

th.dbfield {width:120px;}
th.dbtype {width:70px;}
th.dbdefault {width:70px;}
th.dbnul {width:70px;}
th.dbkey {width:70px;}

span.book {
    margin-top:4em;
    display:block;
}

span.chapter {
    display:block;
    margin-top:0.5em;
}

/* Breadcrumbs */

#breadcrumbs ul li.first:before {content:" ";}

#breadcrumbs {
    color:#900;
    padding:3px;
    margin-bottom:25px;
}

#breadcrumbs ul {
    margin-left:0;
    padding-left:0;
    display:inline;
    border:none;
}

#breadcrumbs ul li {
    margin-left:0;
    padding-left:2px;
    border:none;
    list-style:none;
    display:inline;
}

#breadcrumbs ul li:before {
    content:"\0020 \0020 \0020 \00BB \0020";
    color:#333;
}

/* Status */

.alpha1 {background:white url(../images/community/watermark-alpha1.png) top left repeat;}
.alpha2 {background:white url(../images/community/watermark-alpha2.png) top left repeat;}
.beta1 {background:white url(../images/community/watermark-beta1.png) top left repeat;}
.beta2 {background:white url(../images/community/watermark-beta2.png) top left repeat;}
.pre-release-candidate {background:white url(../images/community/watermark-pre-release-candidate.png) top left repeat;}
.release-candidate {background:white url(../images/community/watermark-release-candidate.png) top left repeat;}

/* Index */

.glossary h3, .index h3 {
    font-size:2em;
    color:#aaa;
    margin:0em;
}

.indexdiv {margin-bottom:1em;}

.glossary dt, .index dt {
    font-size:.9em;
    color:#444;
    padding-top:.5em;
}

.glossary dl dl dt, .index dl dl dt {
    font-size:.85em;
    color:#777;
    line-height:1.2em;
    font-weight:normal;
    padding-top:0em;
}

.index dl dl dt:before {
    content:"- ";
    color:#ccc;
}

/* Changes */

.footnotes {}

.footnote {
    padding:.2em 1em;
    background-color:#c8c5ac;
    font-size:.9em;
    margin:0em;
    margin-bottom:.5em;
    color:#222;
}

table .footnote {margin:1em .5em;}

sup {
    padding:0em .3em;
    padding-left:0em;
}

.footnote {position:relative;}

.footnote sup {
    color:#e3dcc0;
    font-size:1.8em;
    position:absolute;
    left:.4em;
}

.footnote sup a:link, .footnote sup a:visited {
    color:#92917d;
    text-decoration:none;
}

.footnote:hover sup a {
    color:#fff;
    text-decoration:none;
}

.footnote p {padding-left:5em;}

.footnote a:link, .footnote a:visited {color:#00537c;}

.footnote a:hover {color:white;}

li p:first-child {
    margin:0em !important;
    padding:0em !important;
}

div.chapter, div.section {padding-top:2em;}

.revhistory {font-size:}

pre .replaceable, pre .keycap {color:white;}

pre {
  font-family:verdana,helvetica,sans-serif;
  background-color:#F5F5F5;
  border:1px solid #CCCCCC;
  padding:5px 15px 5px 25px;
}

div.note .replaceable, div.tip .replaceable, div.important .replaceable, div.caution .replaceable, div.warning .replaceable,
div.note .keycap, div.tip .keycap, div.important .keycap, div.caution .keycap, div.warning .keycap {color:white;}

div.abstract {font-size:larger;}

.authorgroup {}

.authorgroup h4 {
    padding:0em;
    margin:0em;
    margin-top:1em;
}

.author, .editor, .translator, .othercredit {display:block;}

/* Simpler author style on contents page */

.authorgroup div {
	margin-left:10px;
	margin-right:10px;
	margin-bottom:15px;
}

ul li p:last-child {
    margin-bottom:0em;
    padding-bottom:0em;
}
