body {
 background: #fff;
 color: #000;
 }

.contentBox h2 {
 color: #fff;
 background-color: #036;
 }

.contentBox h3 {
 color: #fff;
 background-color: #888;
 }

.a td { 
 background: #ddd;
 color: #000;
 }

.b td { 
 background: #efefef;
 color: #000;
 }

.contentBox th {
 background-color: #bbb;
 color: #fff;
 }

div#banner {
 border-top: 1px solid #369;
 border-bottom: 1px solid #003;
 }

#banner, #banner td { 
 background: #036;
 color: #fff;
 }

#leftColumn {
 background: #eee;
 color: #000;
 border-right: 1px solid #aaa;
 border-bottom: 1px solid #aaa;
 border-top: 1px solid #fff;
}

#navcolumn {
/* bad for IE
 background: #eee;
*/
 color: #000;
 border-right: none;
 border-bottom: none;
 border-top: none;
 }

#breadcrumbs {
 background-color: #ddd;
 color: #000;
 border-top: 1px solid #fff;
 border-bottom: 1px solid #aaa;
 }

.source {
 background-color: #fff;
 color: #000;
 border-right: 1px solid #888; 
 border-left: 1px solid #888; 
 border-top: 1px solid #888; 
 border-bottom: 1px solid #888; 
 margin-right: 7px;
 margin-left: 7px;
 margin-top: 1em;
 }

.source pre {
 margin-right: 7px;
 margin-left: 7px;
 }

a[name]:hover, #leftColumn a[name]:hover {
 color: inherit !important;
 }

a:link, #breadcrumbs a:visited, #navcolumn a:visited, .contentBox a:visited, .tasknav a:visited {
 color: blue;
 }

a:active, a:hover, #leftColumn a:active, #leftColumn a:hover {
 color: #f30 !important;
 }

a:link.selfref, a:visited.selfref {
 color: #555 !important;
 }

a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
  background: url(../images/external-classic.png) right center no-repeat;
  padding-right: 15px;
}

a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
  background: url(../images/newwindow-classic.png) right center no-repeat;
  padding-right: 18px;
}

h2, h3 {
 margin-top: 1em;
 margin-bottom: 0;
 }

img.handle {
 border: 0;
 padding-right: 2px;
}

#navcolumn div div  {
 background-image: none;
 background-repeat: no-repeat;
}

#navcolumn div div {
  padding-left: 10px;
}
/* $Id: maven-classic.css,v 1.3 2004/05/18 09:23:28 aheritier Exp $
	
	This file defines basic default formatting for HTML conforming to Tigris application style. To extend or override these rules for your instance, edit inst.css instead of this file. */

/* colors, backgrounds, borders, link indication */
.contentBox h2, .contentBox h3, .tabs td, .tabs th, .functnbar {
	background-image: url(../images/nw_maj_rond.gif);
	background-repeat: no-repeat;
}

.functnbar, .functnbar2 {
	background-color: #aaa;
}

.functnbar2, .functnbar3 {
	background-color: #aaa;
	background-image: url(../images/sw_maj_rond.gif);
	background-repeat: no-repeat;
	background-position: bottom left;
}

.functnbar3 {
	background-color: #ddd;
	background-image: url(../images/sw_med_rond.gif);
}

.functnbar, .functnbar2, .functnbar3 {
	color: #000;
}

.functnbar a, .functnbar2 a, .functnbar3 a {
	color: #000;
	text-decoration: underline;
}

#navcolumn .body div, body.docs #toc li li {
	background-image: url(../images/strich.gif);
	background-repeat: no-repeat;
	background-position: .5em .5em;
}

#searchbox .body div, #navcolumn .body .heading {
	background-image: none;
}

a:link.selfref, a:visited.selfref {
	text-decoration: none;
}

#leftColumn a, #breadcrumbs a {
	text-decoration: none;
}

/* Unsure of this. TODO */
.contentBox h2 a:link, .contentBox h2 a:visited, .contentBox h3 a:link, .contentBox h3 a:visited {
	color: #fff !important;
	text-decoration: underline;
}

table, th, td {
	border: none;
}

div.colbar {
	background: #eee;
	border-color: #999 #EEE #EEE #999;
	border-width: 1px;
	border-style: solid;
}

.toolgroup {
	background: #efefef;
}

.toolgroup .label {
	border-bottom: 1px solid #666;
	border-right: 1px solid #666;
	background: #ddd;
	color: #555;
}

.toolgroup .body {
	border-right: 1px solid #aaa;
	border-bottom: 1px solid #aaa;
}

#main {
	border-top: 1px solid #999;
}

#rightcol div.www, #rightcol div.help {
	border: 1px solid #ddd;
}

body.docs div.docs {
	background-color: #fff;
	border-left: 1px solid #ddd;
	border-top: 1px solid #ddd;
}

#helptext .label {
	background-image: url(../images/icon_help_sml.gif);
	background-repeat: no-repeat;
	background-position: 97%;
}

body.docs {
	background: #eee url(../images/help_logo.gif) top right no-repeat !important;
}

.docs h2, .docs h3 {
	border-top: solid 1px #000;
}

#apphead h2 em {
	color: #777;
}

.tabs th {
	border-right: 1px solid #333;
	background-color: #ddd;
	color: #fff;
	border-left: 1px solid #fff;
}

.tabs td {
	background-color: #999;
	border-bottom: 1px solid #fff;
	border-right: 1px solid #fff;
	border-left: 1px solid #fff;
}

.tabs {
	border-bottom: 6px #ddd solid;
}

.tabs th, .tabs th a:link, .tabs th a:visited {
	color: #555;
}

.tabs td, .tabs td a:link, .tabs td a:visited {
	color: #fff;
}

.tabs a {
	text-decoration: none;
}

.axial th {
	background-color: #ddd;
	color: black;
}

.alert {
	background-color: #ff9;
}

.expandedwaste {
	background: url(../images/icon_arrowwaste2_sml.gif) no-repeat;
}

.collapsedwaste {
	background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
}

.filebrowse .expanded, .filebrowse-alt .expanded {
	background-image: url(../images/icon_arrowfolderopen2_sml.gif);
	background-repeat: no-repeat;
}

.filebrowse .collapsed, .filebrowse-alt .collapsed {
	background-image: url(../images/icon_arrowfolderclosed1_sml.gif);
	background-repeat: no-repeat;
}

.filebrowse .leafnode, .filebrowse-alt .leafnode {
	background-image: url(../images/icon_folder_sml.gif);
	background-repeat: no-repeat;
}

.filebrowse .leaf, .filebrowse-alt .leaf {
	background-image: url(../images/icon_doc_sml.gif);
	background-repeat: no-repeat;
}

.sortup {
	background: url(../images/icon_sortup.gif) no-repeat;
}

.sortdown {
	background: url(../images/icon_sortdown.gif) no-repeat;
}

.collapsedwaste {
	background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
}

body .grid td {
	border-top: 1px solid #ccc;
	border-left: 1px solid #ccc;
	background-color: transparent;
}

.confirm {
	color: #090;
}

.info {
	color: #069;
}

.errormessage, .warningmessage, .donemessage, .infomessage {
	border-top: 5px solid #900;
	border-left: 1px solid #900;
	background-image: url(../images/icon_error_lrg.gif);
	background-repeat: no-repeat;
	background-position: 5px 1.33em;
}

.warningmessage {
	background-image: url(../images/icon_warning_lrg.gif);
	border-color: #c60;
}

.donemessage {
	background-image: url(../images/icon_success_lrg.gif);
	border-color: #090;
}

.infomessage {
	background-image: url(../images/icon_info_lrg.gif);
	border-color: #069;
}

.docinfo {
	background: url(../images/icon_doc_lrg.gif) no-repeat;
}

.dirinfo {
	background: url(../images/icon_folder_lrg.gif) no-repeat;
}

.memberinfo {
	background: url(../images/icon_members_lrg.gif) no-repeat;
}

.usergroupinfo {
	background: url(../images/icon_usergroups_lrg.gif) no-repeat;
}

.errormark, .warningmark, .donemark, .infomark {
	background: url(../images/icon_error_sml.gif) no-repeat;
}

.warningmark {
	background-image: url(../images/icon_warning_sml.gif);
}

.donemark {
	background-image: url(../images/icon_success_sml.gif);
}

.infomark {
	background-image: url(../images/icon_info_sml.gif);
}

.cvsdiff, .cvsblame {
	background-color: #ccc;
}

.cvsdiffadd {
	background-color: #afa;
}

.cvsdiffremove {
	background-color: #faa;
}

.cvsdiffchanges1 {
	background-color: #ff7;
}

.cvsdiffchanges2 {
	background-color: #ff7;
}

li.selection ul a {
	background: #fff;
}

.band1 {
	color: #fff;
	background-color: #663;
}

.band2 {
	color: #fff;
	background-color: #66C;
}

.band3 {
	background-color: #C99;
}

.band4 {
	background-color: #CFF;
}

.band5 {
	color: #fff;
	background-color: #336;
}

.band6 {
	color: #fff;
	background-color: #966;
}

.band7 {
	background-color: #9CC;
}

.band8 {
	background-color: #FFC;
}

.band9 {
	color: #fff;
	background-color: #633;
}

.band10 {
	color: #fff;
	background-color: #699;
}

.band11 {
	background-color: #CC9;
}

.band12 {
	background-color: #CCF;
}

.band13 {
	color: #fff;
	background-color: #366;
}

.band14 {
	color: #fff;
	background-color: #996;
}

.band15 {
	background-color: #99C;
}

.band16 {
	background-color: #FCC;
}

.contentBox .helplink, #helptext .helplink {
	cursor: help;
}

.legend th, .bars th {
	background-color: #fff;
}

/* font and text properties, exclusive of link indication, alignment, text-indent */
body, th, td, input, select {
	font-family: Verdana, Helvetica, Arial, sans-serif;
}

code, pre {
	font-family: 'Andale Mono', Courier, monospace;
}

body, .contentBox h2, .contentBox h3, #rightcol h2, pre, code, #apphead h2 small, h3, th, td {
	font-size: x-small;
	voice-family: "\"}\"";
	voice-family: inherit;
	font-size: small;
}

small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftColumn, .legend, .bars {
	font-size: xx-small;
	voice-family: "\"}\"";
	voice-family: inherit;
	font-size: x-small;
}

.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
	font-weight: bold;
}

li.selection ul {
	font-weight: normal;
}

#apphead h2 em {
	font-style: normal;
}

#banner h1 {
	font-size: 1.25em;
}

/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
#bodyColumn h2 {
	margin-top: .3em;
	margin-bottom: .5em;
}

p, ul, ol, dl, .bars table {
	margin-top: .67em;
	margin-bottom: .67em;
}

form {
	margin: 0;
}

#bodyColumn {
	padding-left: 12px;
	padding-right: 12px;
	width: 100%;
	voice-family: "\"}\"";
	voice-family: inherit;
	width: auto;
}

html>body #bodyColumn {
	width: auto;
}

.docs {
	line-height: 1.4;
}

ol ol {
	list-style-type: lower-alpha;
}

ol ol ol {
	list-style-type: lower-roman;
}

.contentBox h2, .contentBox h3 {
	padding: 5px;
	margin-right: 2px;
}

.contentBox td, .contentBox th {
	padding: 2px 3px;
}

.h2 p, .h3 p, .h2 dt, .h3 dt {
	margin-right: 7px;
	margin-left: 7px;
}

.tasknav {
	margin-bottom: 1.33em;
}

div.colbar {
	padding: 3px;
	margin: 2px 2px 0;
}

.tabs {
	margin-top: .67em;
	margin-right: 2px;
	margin-left: 2px;
	padding-left: 8px;
}

.tabs td, .tabs th {
	padding: 3px 9px;
}

#rightcol div.www, #rightcol div.help {
	padding: 0 .5em;
}

body.docs #toc {
	position: absolute;
	top: 15px;
	left: 0px;
	width: 120px;
	padding: 0 20px 0 0;
}

body.docs #toc ul, #toc ol {
	margin-left: 0;
	padding-left: 0;
}

body.docs #toc li {
	margin-top: 7px;
	padding-left: 10px;
	list-style-type: none;
}

body.docs div.docs {
	margin: 61px 0 0 150px;
	padding: 1em 2em 1em 1em !important;
}

.docs p+p {
	text-indent: 5%;
	margin-top: -.67em;
}

.docs h2, .docs h3 {
	margin-bottom: .1em;
	padding-top: .3em;
}

.functnbar, .functnbar2, .functnbar3 {
	padding: 5px;
	margin: .67em 2px;
}

.functnbar3 {
	margin-top: 0;
}

body {
	padding: 1em;
}

body.composite, body.docs {
	margin: 0;
	padding: 0;
}

th, td {
	text-align: left;
	vertical-align: top;
}

.right {
	text-align: right !important;
}

.center {
	text-align: center !important;
}

.axial th, .axial th .strut {
	text-align: right;
}

.contentBox .axial td th {
	text-align: left;
}

body .stb {
	margin-top: 1em;
	text-indent: 0;
}

body .mtb {
	margin-top: 2em;
	text-indent: 0;
}

.courtesylinks {
	margin-top: 1em;
	padding-top: 1em;
}

dd {
	margin-bottom: .67em;
}

.toolgroup {
	margin-bottom: 6px;
}

.toolgroup .body {
	padding: 4px 4px 4px 0;
}

.toolgroup .label {
	padding: 4px;
}

.toolgroup .body div {
	padding-bottom: .3em;
	padding-left: 1em;
}

.toolgroup .body div div {
	margin-top: .3em;
	padding-bottom: 0;
}

.tier1 {
	margin-left: 0;
}

.tier2 {
	margin-left: 1.5em;
}

.tier3 {
	margin-left: 3em;
}

.tier4 {
	margin-left: 4.5em;
}

.tier5 {
	margin-left: 6em;
}

.tier6 {
	margin-left: 7.5em;
}

.tier7 {
	margin-left: 9em;
}

.tier8 {
	margin-left: 10.5em;
}

.tier9 {
	margin-left: 12em;
}

.tier10 {
	margin-left: 13.5em;
}

.filebrowse .expanded, .filebrowse .collapsed {
	padding-left: 34px;
}

.filebrowse .leafnode, .filebrowse .leaf {
	padding-left: 20px;
}

.messagechild {
	padding-left: 34px;
}

.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
	/* hide from macie5\*/
	float: left;
	/* resume */
	display: inline-block;
	height: 15px;
	width: 34px;
	padding-left: 0 !important;
}

.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
	width: 20px;
}

.filebrowse ul, .filebrowse-alt ul {
	list-style-type: none;
	padding-left: 0;
	margin-left: 0;
}

.filebrowse ul ul, .filebrowse-alt ul ul {
	margin-left: 1.5em;
	margin-top: 0;
	padding-top: .67em;
}

.filebrowse li, .filebrowse-alt li {
	margin-bottom: .67em;
}

td.filebrowse h2 {
	margin-top: 0;
}

.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo {
	margin: .67em 0;
	padding: .33em 0 .67em 42px;
	min-height: 32px;
}

.errormark, .warningmark, .donemark, .infomark {
	padding-left: 20px;
	min-height: 15px;
}

.alt {
	display: none;
}

#banner h1 {
	margin: 0;
}

.axial th, .axial th .strut, #leftColumn .strut {
	width: 12em;
}

#breadcrumbs {
	padding: 2px 8px;
}

/* Bad for IE
.contentBox h2, .contentBox h3, .bars {
	clear: both;
}
*/

.legend {
	float: right;
}

.legend th, .bars th {
	text-align: right;
	padding-left: 1em;
}

.bars table {
	table-layout: fixed;
}

.bars th {
	width: 12em;
}

#projectdocumentlist td.filebrowse-alt {
	padding-right: .75em;
}
