/*
 * Other colors:
 *  - dark blue: #036
 *  - bluish: #269
 *
 */

/*
 * The Banner section.
 */
.banner, .projectLogo, .groupLogo, .projectLogo a, .groupLogo a,
    .groupLogo a:visited, .projectLogo a:visited,
    .groupLogo a:link, .projectLogo a:link {
}

/*
 * The Status + Footer section.
 */
.status, .breadcrumb, .searcher, .tabs {
}

.selectedTab {
}

/*
 * The Menu section.
 */
.menuColumn {
}
.menubar {
}
.menu {
}
.menuLabel {
}
.menuItem {
}

/*
 * The Content section.
 */
.contentColumn {
}

h1, h2, h3, h4 {
}

h3, h4 {
 }
h3 {
  }
h4 {  
}

.code {
}

.section {
}

.subsection {
}

/*
 * The Footer section.
 */
.footer, .copyright, .host, .credit {
}

/*
 * General Settings
 */
body {
}

a:link, .menuItem a:visited, .status a:visited {
 color: #036;
}

a:active, a:hover {

}

body, th, td {
}

.logoImage {
 border: none;
}
