
/* Confluence master stylesheet */
body {
    margin: 0;
    padding: 0;
    background-color: #f0f0f0;
}
body.content-preview {
    background-color: #fff;
    border: none;
}

body, p, td, table, tr, .bodytext, .stepfield {
    font-size: 10pt;
    line-height: 1.3;
    color: #000;
    font-weight: normal;
}

#PageContent {
    text-align: left;
    background-color: #fff;
    padding: 0 0 20px 0;
    margin: 0;
}

.print-only {
    display: none;
}

.monospaceInput {
    font: 10pt monospace;
}

pre {
    padding: 0;
    margin: 10px 0;
    text-align: left;
    overflow: auto;
}

.helpheading {
    font-weight: bold;
    background-color: #d0d9bd;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    padding: 4px;
    margin: 0;
    margin-top: 10px;
}
.helpcontent {
    padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.help-section-div .helpheading {
    margin: 0;
}
.help-section-div {
    margin-bottom: 2em;
}

#print-friendly-help-toggle {
    position: absolute;
    top: 1em;
    right: 1em;
    text-indent: -999em;
    width: 16px;
    height: 16px;
    background-image: url("../../../images/icons/print_16.gif");
    background-repeat: no-repeat;
    outline: none;
}

#commentsHide {
    color: #666;
    font-weight: normal;
}

#showingComments {
    border: none;
    font-size: 10pt;
}

.pageSection {
    margin-top: 10px;
    clear: both;
}


.pageSectionHeader {
    margin-bottom: 5px;
    padding: 2px 0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
}

.pageSectionHeader.summary {
    border-bottom: none;
}

.pageSectionBody {
    margin-top: 4px;
}

a.grey:link { color: #666; }
a.grey:visited { color: #666; }
a.grey:active { color: #666; }
a.grey:hover { color: #666; }

.more-comments {
    font-size: 10pt;
    color: #dde2e6;
}

.commentBox  {
    padding: 0;
    margin: 10px 0;
    overflow: auto;
}

.commentBox table.comment {
    border: 0;
    border-bottom: #f0f0f0 1px solid;
    border-top: #f0f0f0 1px solid;
    margin: 0;
    padding: 0;
    width: 100%;
    border-collapse: collapse;
}

.commentBox .commentinfo {
    background-color: #f0f0f0;
    vertical-align: top;
    padding: 12px;
}

.commentBox .commentinfo .smalltext {
    line-height: 11pt;
}

.commentBox .commentphoto {
    background-color: #f0f0f0;
    text-align: right;
    vertical-align:top;
    padding: 12px;
}

.commentBox .commentphoto img {
    border: none;
}

.commentBox .commentname a:hover {
    text-decoration: underline;
}

.commentdate {
    margin-top: 3px;
}

.commentBox .commentdate, .commentdate a {
    color: #000;
    text-decoration: none;
    font-size: 9pt;
}

.commentdate a:hover {
    text-decoration: underline
}

.commentBox .smalltext {
    line-height: 10pt;
}

.commentBox .smalltext a {
    text-decoration: none;
}

.commentBox .smalltext a:hover {
    text-decoration: underline;
}

.commentBox td.commentdetails {
    vertical-align: top;
    padding: 0 10px;
}

.commentBox td.commentActions {
    padding: 0 10px 10px 10px;
    vertical-align: bottom;
}

.commentThread {
    clear: both; /* clear both in case there are floats or aligned images in the content that sits above the comment thread */
}

#replying .commentdetails {
    padding: 15px 0 15px 25px
}

#replying .commentinfo {
    background-color: #a0a0a0;
    color: #f0f0f0;
}

#replying .commentdate, #replying .commentdate a {
    color: #f0f0f0;
}

#replying .commentname a {
    color: #f0f0f0;
}

#replying .commentphoto {
    background-color: #a0a0a0;
}

#replying table.comment {
    border-bottom-color: #a0a0a0;
    border-top-color: #a0a0a0;
}

#addition .commentdetails {
    padding: 15px 30px 10px 30px;
}

#addition .commentinfo {
    background-color: #a0a0a0;
    color: #f0f0f0;
}

#addition .commentname a {
    color: #f0f0f0;
}

#addition .commentdate, #addition .commentdate a {
    color: #f0f0f0;
}

#addition .commentphoto {
    background-color: #a0a0a0;
}

#addition table.comment {
    border-bottom-color: #a0a0a0;
    border-top-color: #a0a0a0;
}

#focusedComment .commentBox td.commentdetails, #focusedComment td.commentActions {
    background: #ffffd7;
}

.anonymousAlert, .lockAlert {
    background-color: #f0f0f0;
    border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px;
    margin: 4px;
    line-height: 13px;
}

.lockAlert {
    width: 50%;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    padding: 4px 4px 2px 4px;
}

.menuitems {
    padding: 4px 4px 20px 4px;
}

.rightpanel {
    background: #f0f0f0;
    -moz-border-radius: 3px; /* Firefox */
    -webkit-border-radius: 3px; /* Safari */
    border-radius: 3px; /* CSS3 (Opera?) */
    padding: .9em;
}

#helpheading {
    text-align: left;
    color: #333;
    padding: .1em;
    font-size: 13px;
    border-bottom: 1px solid #ccc;
    padding-bottom: .2em;
    margin: -.1em
}

#helpcontent {
    margin-top: .9em;
}

#helpcontent p {
    margin-bottom: 0;
    margin-top: .9em;
}

#helpcontent ul {
    padding-left: 1.3em;
}

#helpcontent dl {
    margin-top: 0;
}

#helpcontent dl dd {
    margin: 0;
    color: #333;
    font-size: 90%;
    margin-bottom: .2em;
}

#helpcontent dl dd code,
#helpcontent dl dd pre {
    color: #666;
    margin: 0;
    padding: 0;
}

#helpcontent dl dd.text-formatting code {
    display: inline-block;
    width: 6em;
}

#helpcontent dl dt {
    margin-top: 1em;
}
#helpcontent dl dt.first {
    margin-top: 0;
}

.helptab-unselected {
    font-weight: bold;
    padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #d0d9bd;
    padding: 5px;
}
.helptabs {
    margin: 0;
    background-color: #f5f7f1;
    padding: 5px;
}

#profileSummary h3 {
    font-weight: bold;
    font-size: 10pt;
    margin: 12px 0 4px;
    padding: 0;
}
#profileSummary ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.pageheader {
    padding: 5px 5px 5px 0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
}

.pagetitle {
    font-size: 18pt;
    line-height: normal;
    font-weight: bold;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
    font-size: 18px;
    font-weight: bold;
    margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-size: 10pt;
    line-height: 13pt;
    font-weight: normal;
    color: #666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
    font-size: 12px;
    font-weight: bold;
}

.sectionbottom {
    border-bottom-width: 1px;
    border-bottom-style: solid;
}

.topRow {
    border-top-width: 2px;
    border-top-style: solid;
}

.tabletitle {
    font-size: 10pt;
    font-weight: bold;
    padding: 3px 0 2px 0;
    margin: 8px 4px 2px 0;
    border-bottom-width: 2px;
    border-bottom-style: solid;
}

.tabletitleops {
    float: right;
}
.tabletitleops, .tabletitleops a, .tabletitleops img {
    vertical-align: middle;
}
.tabletitleops img {
    border: none;
}

.fullWidth {
    width: 100%;
}

.pagesubheading {
    color: #666;
    font-size: 10px;
    padding: 0 0 5px 0;
}

hr {
    color: #3c78b5;
    height: 1px;
}

h1 a:link, h1 a:visited, h1 a:active {
    text-decoration: none;
}

.logocell {
    padding: 10px;
}

input {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 10pt;
    color: #000;
}

textarea, textarea.editor {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 10pt;
    color: #333;
}

.spacenametitle-printable {
    font: 20px Impact, Arial, Helvetica;
    font-weight: 100;
    line-height: 25px;
    margin: 0;
}

.spacenametitle-printable a,
.spacenametitle-printable a:visited {
    text-decoration: none;
}

.blogDate {
    font-weight: bold;
    text-decoration: none;
    color: black;
}

.blogSurtitle {
    background: #f0f0f0;
    border: 1px solid #ddd;
    padding: 3px;
    margin: 1px 1px 10px 1px;
}

a.blogHeading {
    font-size: 20pt;
    line-height: normal;
    font-weight: bold;
    text-decoration: none;
}

.blogHeading a:hover {
   text-decoration: underline;
}

.endsection {
    text-align: right;
    color: #666;
    margin-top: 10px;
}
.endsectionleftnav {
    text-align: right;
    color: #666;
    margin-top: 10px;
}

h1, h2, h3, h4, h5, h6 {
    line-height: normal;
    font-weight: bold;
    padding: 2px;
}

h1 {
    font-size: 24px;
    margin: 36px 0 4px 0;
}

h2 {
    font-size: 18px;
    margin: 27px 0 4px 0;
}

h3 {
    font-size: 14px;
    margin: 21px 0 4px 0;
}

h4 {
    font-size: 12px;
    margin: 18px 0 4px 0;
}

h5 {
    font-size: 10px;
    margin: 14px 0 4px 0;
}

h6 {
    font-size: 8px;
    margin: 14px 0 4px 0;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    color: #666;
    font-size: 10px;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666;
    font-size: 12px;
}
.smalltext a {
    color: #666;
}
.greyText
{
    color: #666;
}
.smalltext-blue {
    font-size: 8pt;
    color: #3c78b5;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver {
    font-size: 10px;
    font-weight: bold;
    voice-family: "\'}\'";
    voice-family: inherit;
    cursor: pointer;
}

.navItem {
    font-size: 10px;
    font-weight: bold;
    color: #fff;
}

.navItemOver a,
.navItemOver a:visited,
.navItemOver a:hover,
.navItem a,
.navItem a:hover,
.navItem a:visited {
    text-decoration: none;
}

div.padded {
    padding: 4px;
}

div.thickPadded {
    padding: 10px;
}

h3.macrolibrariestitle {
    margin: 0;
}

div.centered {
    text-align: center;
    margin: 10px;
}

div.centered table {
    margin: 0 auto;
    text-align: left;
}

.tableview table {
    margin: 0;
}

.tableview tr.alternateRow {
    background: #f0f0f0;
}

.tableview th {
    text-align: left;
    font-size: 12px;
    padding: 5px 0 0 5px;
    border-bottom-width: 2px;
    border-bottom-style: solid;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0 0 1px 0;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0 5px 0;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
    background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}

.label,
label {
    font-weight: bold;
}
a.label {
    font-weight: normal;
}

.error {
    background-color: #fcc;
}

.errorBox {
    background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
    color: #c00;
}

.success {
    background-color: #dfd;
}

.successBox {
    background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
    font-style: italic;
    font-size: 10pt;
    border-left-width: 1px;
    border-left-style: solid;
    padding: 0 20px;
    margin: 10px 20px;
}

blockquote p {
    font-size: 10pt;
}

blockquote em {
    font-style: normal;
}

table.admin
{
    margin: 5px;
    border-collapse: collapse;
    width: 100%;
}
table.admin td, table.admin th
{
    width: 50%;
    border: 1px solid #ccc;
    padding: 5px;
    vertical-align: top;
}
table.admin th
{
    background-color: #f0f0f0;
    text-align: right;
    font-weight: bold;
}
table.admin td.controls
{
    text-align: center;
}

div.small {
    font-size: 9px;
}

h1.pagename {
    margin-top: 0;
}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote {
    text-align: center;
    font-size: 11px;
    color: red;
}

/* How the preview content should be shown */
.previewcontent {
    background: #e0e0e0;
}

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent {
    background: #e0e0e0;
}

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink,
a.createlink,
a.createlink:link,
a.createlink:visited,
a.createlink:active,
a.createlink:hover {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: #00008b;
}

.diffadded {
    background: #dfd;
    padding: 1px 1px 1px 4px;
    border-left: 4px solid #006400;
}
.diffdeleted {
    color: #999;
    background: #fdd;
    padding: 1px 1px 1px 4px;
    border-left: 4px solid #8B0000;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
    border-left: 4px solid #D3D3D3;
}
.differror {
    background: #A52A2A;
}
.diff {
    font-family: "lucida console", "courier new", monospace;
    font-size: 12px;
    line-height: 14px;
}
.diffaddedchars {
    background-color:#9f9;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#f99;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
    border: 1px solid #ddd;
    padding: 3px;
    margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #ccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
    border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
    margin: 1px 1px 10px 1px;
}

.lightGreyBox {
    background: #fafafa;
}

.navBackgroundBox {
    padding: 5px;
    font-size: 22px;
    font-weight: bold;
    color: white;
    text-decoration: none;
}

.previewBoxTop {
    background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
    border-width: 0px 1px 0px 1px;
    border-style: solid;
    padding: 10px;
    margin: 0px;
}
.previewBoxBottom {
    background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
    border: 1px solid;
    padding: 3px;
    margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
    border: 1px solid #ddd;
    padding: 3px;
    margin: 1px 1px 10px 1px;
}

.rowNormal {
    background-color: #fff;
 }

.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomColor td,
.rowAlternateNoBottomNoColor td {
    border-bottom: 0;
}

.rowHighlight {
    background-color: #f0f0f0;
}

td.greenBar,
td.greenbar,
td.graybar,
td.redbar,
td.darkredbar {
    font-size: 1em;
    border: 1px solid #9c9c9c;
    padding: 0;
}

td.greenBar,
td.greenbar {
    background: #00df00;
}
td.graybar {
    background: #808080;
}
td.redbar {
    background: #df0000;
}
td.darkredbar {
    background: #af0000;
}

tr.testpassed {
    font-size: 2px;
    background: #dfd;
    padding: 0;
}
tr.testfailed {
    font-size: 2px;
    background: #fdd;
    padding: 0;
}

.toolbar  {
    margin: 0;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0;
    border-style: none;
    text-align: center;
    padding: 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license {
    border-top: 1px solid #bbb;
    text-align: center;
    font-size: 10pt;
    background-color: #ffffe0;
}

.license-eval, .license-none {
    background-color: #fcc;
}

.license-eval b, .license-none b {
    color: #900;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("../../../images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

.bold {
    font-weight: bold;
}


/* space action links */
.tabnav .spaceActionLinks {
    float: right;
    margin: 0;
    display: block;
}

.tabnav .spaceActionLinks a span {
    text-decoration: underline;
}
.tabnav .spaceActionLinks a.current {
    color: black;
}
.tabnav .spaceActionLinks a.current span {
    text-decoration: none;
}

.tabnav .spaceActionLinks a.current:link {
    color: black;
}

.tabnav .spaceActionLinks a.current:visited {
    color: black;
}

/* non tabs */
.tabnav .nontabs {
    padding: 0;
    margin: 5px 0 0 3px;
    display: block;
    float: left;
}

/* editor tab customizations of the tabnav */
#markupTab, #wysiwygTab, #previewTab {
    font-size: 9pt;
    padding: 3px 5px 2px; /* tab padding */
    margin: 8px 0 0 3px; /* margin-top is used to 'push' the tab down to fill in any gaps */
    font-weight: normal;
}

/* alphabet list */
#squaretab {
    margin-left: 0;
    padding-left: 0;
    white-space: nowrap;
    font-family: Verdana, Helvetica, Arial, sans-serif;
    font-size: 8pt;
    line-height: 11pt
}

#squaretab li {
    display: inline;
    list-style-type: none;
}

#squaretab a {
    padding: 5px 7px 3px 7px;
    border-width: 1px;
    border-style: solid;
}

#squaretab a:link,
#squaretab a:visited {
    color: #fff;
    text-decoration: none;
}

#squaretab a:hover {
    text-decoration: none;
}

#current {
    background: #fff;
    color: #000;
}

.blogcalendar th,
.blogcalendar td  {
    font-size: x-small;
    font-weight: normal;
    line-height: 140%;
    padding: 2px;
}

table.blogcalendar {
    border-width: 1px;
    border-style: solid;
}

.blogcalendar th.calendarhead,
a.calendarhead {
    font-size: x-small;
    font-weight: bold;
    padding: 2px;
    letter-spacing: 0.3em;
    text-transform: uppercase;
}

.blogcalendar th.calendarhead,
.calendarhead,
.calendarhead:link,
.calendarhead:visited,
.calendarhead:active,
.calendarhead:hover {
    color: #fff;
}

.blogcalendar th {
    font-size: x-small;
    font-weight: bold;
    padding: 2px;
    background-color: #f0f0f0;
}

.blogcalendar td {
    font-size: x-small;
    font-weight: normal;
}

.searchGroup {
    padding: 0 0 10px 0;
    background: #f0f0f0;
}

.searchGroupHeading {
    font-size: 10px;
    font-weight: bold;
    color: #fff;
    padding: 2px 4px 1px 4px;
}

.searchItem {
    padding: 1px 4px;
}

.searchItemSelected {
    padding: 1px 4px;
    font-weight: bold;
    background: #ddd;
}

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb;
    border-width: 0 0 1px 0;
    border-style: solid;
    font-size: 16px;
    text-align: left;
}

.permissionTab,
.permissionSuperTab,
.permissionCell {
    border-width: 0 0 0 1px;
    border-style: solid;
}

.permissionTab {
    font-size: 10px;
}

.permissionCell {
    border-left: #bbb;
    white-space: nowrap;
}

/* side menu highlighting (e.g. space content screen) */
.optionPadded {
    padding: 2px;
}

.optionSelected, .optionPadded.selected {
    background-color: #ffc;
    padding: 2px;
    border: 1px solid #ddd;
    margin: -1px;
}

.optionSelected a, .optionPadded.selected a {
    font-weight: bold;
    text-decoration: none;
    color: black;
}

/* styles for extended operations */
.greyLinks a:link,
.greyLinks a:visited,
.greyLinks a:active,
.greyLinks a:hover {
    color: #666;
    text-decoration: underline;
}

.greyLinks {
    color: #666;
    padding: 10px;
}

.operation-links {
    color: #666;
    margin-bottom: 10px;
}
.operation-links a:link,
.operation-links a:visited,
.operation-links a:active,
.operation-links a:hover {
    color: #666;
    text-decoration: underline;
}

.separatorLinks a:link,
.separatorLinks a:visited,
.separatorLinks a:active {
    color: white;
}

.greynavbar {
    background-color: #f0f0f0;
    border-top-width: 1px;
    border-top-style: solid;
}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

.greyFormBox {
    border: 1px solid #ccc;
    padding: 5px;
}

.openPageHighlight {
    background-color: #ffc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a {
    color: #666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #036;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #036;
}
.top50 a {
    font-size: 1.4em;
    color: #036;
}
.top100 a {
    font-size: 1.2em;
    color: #036;
}

.heatmap {
    list-style: none;
    width: 95%;
    margin: 0 auto;
}

.heatmap a {
    text-decoration: none;
}

.heatmap a:hover {
    text-decoration: underline;
}

.heatmap li {
    display: inline;
}

.minitab {
    padding: 5px;
    margin: 1px 0 0 0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    text-decoration: none;
    float: none;
}

.minitab a {
    padding: 5px 5px;
    margin-left: 3px;
    margin-top: 1px;
    border-top: 1px solid;
    border-right: 1px solid;
    border-left: 1px solid;
}

#makeRichTextDefault, #makeMarkupDefault {
    border: 0;
    font-weight: normal;
    text-decoration: none;
}

.minitab .selected {
    background: white;
    border-bottom: 1px solid white;
    color: #000;
    text-decoration: none;
}
.minitab .unselected {
    border-bottom-width: 1px;
    border-bottom-style: solid;
    color: #fff;
    text-decoration: none;
}

.minitab a.unselected:link,
.minitab a.unselected:visited {
    color: white;
}
.minitab a.selected:link,
.minitab a.selected:visited {
    color: black;
}

.minitabFont {
    font-size: 9pt;
    line-height: 9pt;
}

.linkerror {
    background-color: #fcc;
}

a.labelOperationLink:link,
a.labelOperationLink:active,
a.labelOperationLink:visited,
a.labelOperationLink:hover {
    text-decoration: underline;
}

a.newLabel:link,
a.newLabel:active,
a.newLabel:visited,
a.newLabel:hover {
    background-color: #dfd;
}

ul.square {
    list-style-type: square;
}

/* Label auto complete styles needed until we use requireResource properly in labels-include.vm */
div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toggleFormDiv{
    border: 1px solid #a7a6aa;
    background-color: white;
    margin-top: 5px;
}

.toogleInfoDiv{
    border: 1px solid #a7a6aa;
    background-color: white;
    display: none;
    padding: 5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom: 20px;
}

#anonymous-warning {
    padding: 15px 10px;
}

#editBox{
   border: 1px solid #d3d3d3;
   background-color: #f0f0f0;
}

.tab-navigation .current a {
    color: #000;
    background-color: #fff;
    border-bottom-color: #fff;
}

.replaced {
    background-color: #3c6;
}

.topPadding {
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
}

.form-header {
    background: #ffffe0;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}

form.edit-trust-app fieldset {
    border: none;
}
form.edit-trust-app fieldset div {
    border: none;
    border-left: solid 11em #f0f0f0;
    padding: 0;
    float: left;
}
form.edit-trust-app fieldset label {
    float: left;
    width: 10em;
    padding: 0;
    margin: 5px 1em 0 -10.5em;
    text-align: right;
    clear: left;
}
form.edit-trust-app fieldset input,
form.edit-trust-app fieldset textarea {
     margin: 5px 0 0 0;
     float: left;
}
form.edit-trust-app fieldset div.buttons {
     border: none;
     clear: left;
     text-align: center;
     float: none;
}
form.edit-trust-app fieldset div.buttons input {
     float: none;
}

/*START AtlassianUI Forms*/

form.aui {
    border:1px solid #ddd;
    background:#f0f0f0;
    position:relative;
    margin:2em 0 0;
    padding:1em;
}

form.aui fieldset {
    border:0;
    margin:0;
    padding:0;
}

form.aui fieldset legend span,form.single fieldset span.legend {
    font-size:1.1em;
    font-weight:700;
    position:absolute;
    top:-1.3em;
    left:.5em;
}

form.aui fieldset label {
    color:#000;
    background:#f0f0f0;
    display:block;
    margin-bottom:.5em;
}

form.aui fieldset input {
    display:block;
    margin-left:0;
}

form.aui fieldset.submit input {
    display:inline;
    margin-top:.5em;
}

form.aui fieldset.inline label,form.single fieldset label {
    width:auto;
    float:left;
}

form.aui fieldset.inline a.icon,form.single fieldset a.icon {
    float:left;
    outline:0;
    margin:.3em 1em 0 0;
}

form.aui fieldset.inline label.legend {
    width:auto;
    float:left;
    margin:0;
}

form.aui fieldset.inline input,form.single fieldset input {
    margin-right:.5em;
}

form.aui fieldset.inline input.inline {
    display:inline;
    margin-top:1.5em;
}

form.aui fieldset.inline fieldset.submit {
    float:left;
    width:auto;
    padding:.7em 0 0;
}

form.single fieldset.submit input {
    margin-top:.1em;
}

form.single fieldset fieldset.submit {
    float:left;
    width:auto;
    padding:0;
}

form.aui .desc {
    clear:both;
    color:#666;
    font-size:12px;
    margin:-.2em 0 0;
    padding:0 0 .3em;
}

form.aui .error {
    font-weight:700;
    color:#c00;
    background:#f0f0f0;
    display:inline;
    margin:0;
    padding:0;
}


/*END AtlassianUI Forms*/

.status-red {
    color: #800;
    font-weight: bold;
}
.status-green {
    color: #080;
    font-weight: bold;
}

.person {
    background-color: white;
    width: 200px;
    float: left;
}
.person td {
    white-space: nowrap;
}
#viewAttachmentsDiv input.commentTextField {
    width: 300px;
}
#blogcalendar span.fwdArrow {
    float: right;
    display: block;
    width: 16px;
    height: 16px;
    background-repeat: no-repeat;
    background-image: url(/images/icons/forwd_16.gif);
}
#blogcalendar span.fwdArrow span {
    display: none;
}
#blogcalendar span.backArrow {
    float: left;
    display: block;
    width: 16px;
    height: 16px;
    background-repeat: no-repeat;
    background-image: url(/images/icons/back_16.gif);
}
#blogcalendar span.backArrow span {
    display: none;
}
.pageInfoTable {
    padding: 0;
    margin: 0;
    border: 0;
    width: 100%;
    border-collapse: collapse;
}
.pageInfoTable td {
    padding: 3px;
}
.pageInfoTable tr.alternateRow {
    background: #f0f0f0;
}
.pageInfoLayoutTable {
    width: 100%;
    border-collapse: collapse;
}
.pageInfoLayoutTable td {
    padding: 5px;
}

.memoryusagebar {
    width: 100%;
}
.memoryusagebar td {
    border: none !important;
    vertical-align: middle !important;
}

input.alignedCheckbox {
    margin: 0;
}

div.spacer {
    clear: both;
}

span.left {
    float: left;
    text-align: left;
}

span.right {
    float: right;
    text-align: right;
}

#permissionsDiv label {
    font-weight: bold;
    color: black;
}

.pagePermissionsTable {
    border-collapse: collapse;
    padding: 2px;
    border-top: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    width: 100%;
}

.pagePermissionsTable tr td {
    padding: 4px
}

.pagePermissionsErrorDiv {
    margin: 6px 0 6px 0;
    background-color: #fcc;
    border-top: 1px solid #c00;
    border-bottom: 1px solid #c00;
    padding: 3px;
}

.pagePermissionsInput {
    background-color: #ffffce;
    padding: 4px;
    margin-top: 4px;
}

#inheritedPermissionsBox {
    margin: 8px 8px 0 8px;
    padding: 8px;
}

.nobr {
    white-space: nowrap;
}

label.normal {
    font-weight: normal;
    color: black
}

div.leftFloatMargined {
    float: left;
    margin-right: 2px
}

#entitySearchResults {
    border-collapse: collapse;
    background-color: #fafafa;
    text-align: left;
    width: 100%;
}

#entitySearchResults td {
    border-top: 1px solid #ccc;
    padding: 3px;
    background-color: white;
    vertical-align: top;
}

#entitySearchResults th {
    color: #666;
    padding: 3px;
    white-space:nowrap;
}

#entitySearchResults .firstColumn {
    width: 2%;
    text-align: right;
}

#entitySearchResults .secondColumn {
    width: 1px;
    text-align: right;
}

a.paddedGreyDisabled {
    background-color: #f0f0f0;
    padding: 4px;
    text-decoration: none;
    color: #666;
}

a.grey {
    color: #666;
}

div.topBottomMargin {
    margin: 10px 0 10px 0
}

div.bottomMargin {
    margin-bottom: 10px
}

table.spaceList {
    border-collapse: collapse;
}

tr.spaceList td {
    padding: 5px 0 5px 5px;
    border-bottom: 1px solid #ccc;
    vertical-align: top;
}

.spaceList .spaceDescription {
    margin-top: 3px;
    color: #666;
}

tr.spaceList .operations {
    vertical-align: top;
    padding-right: 5px;
}

.fontSizeBigger {
    font-size: 11pt;
    line-height: 14pt;
}

.fontSizeDefault {
    line-height: 1.3em;
}

.fontSizeSmaller {
    font-size: 10pt;
    line-height: 13pt;
}

/* deprecated. TODO - check for use in themes and remove. */
.fontSizeTiny {
    font-family: Verdana, Helvetica, Arial, sans-serif;
    font-size: 8pt;
    line-height: 11pt;
}

table.dashboard td.left {
    padding-right: 16px;
}

.clearBoth {
    clear: both;
}

#labelInputSpan {
    margin-top: 1px;
}

form#quickSearch {
    margin: 2px;
    padding: 0;
}

form#quickSearch input {
    font-size: 10pt;
    vertical-align: middle;
}

table.fullWidthBorderless
{
    width: 100%;
    border: 0;
    border-collapse: collapse;
}

/* Hacks for YUI menustuff */

#pageMenusMenuBar {
   padding: 4px;
}

#notificationFormat {
    padding: 0;
    margin: -9px 15px;
}

#notificationFormat h4 {
    font-weight: normal;
}

#notificationFormat h2 {
    font-weight: normal;
}

#rssFormat {
    padding: 0;
    margin: 6px 15px;
}

.notificationGreySide {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    margin: 0 0 5px 0;
    padding: 3px 17px;
}

.notificationDigest {
    padding: 0 17px;
}

.darkBlue {
    color: #036;
}

.grey {
    color: #666;
}

table.attachments {
    width: 100%;
    border-collapse: collapse;
}

table.attachments th {
    white-space: nowrap;
    width: 1%;
}

table.attachments td {
    white-space: nowrap;
    vertical-align: top;
    width: 1%;
}

table.attachments td.comment, table.attachments th.comment, table.attachments td.attachedto, table.attachments th.attachedto {
    white-space: normal;
    width: auto;
}

table.attachments tr.historicalAttachmentRow {
    background-color: #f7f7f7;
}

table.attachments tr.historicalAttachmentRow td,
table.attachments tr.historicalAttachmentRow td a {
    color: #666;
}

#contentOptions {
    list-style: none;
    margin: 0;
    padding: 0;
}

#exportContentTree {
    list-style-type: none;
    margin: 5px 0;
}

#contentOptionAllNote {
    color: #666;
    font-weight: normal;
}

.hidden,
li.hidden {
    display: none;
    visibility: hidden;
}
#main {
    text-align: left;
    background-color: #fff;
}
#header {
    min-height: 1.8em;
    line-height: 1.8;
    margin: 0;
    padding: 0;
}
#quick-search {
    margin: 0;
    padding: 0;
}
#quick-search fieldset {
    float: right;
    border: none;
    margin: 0;
    padding: 0;
}
#quick-search legend {
    display: none;
}
#quick-search .placeholded {
    color: #666;
}
#quick-search-query {
    width: 13em;
}
/* default user navigation styles for themes using the old markup */
#user-control-panel, #page-view-panel, #page-prefs-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
#user-control-panel li,
#page-view-panel li,
#page-prefs-list li,
.userNavBar li { /* deprecated styles provided for themes written prior to 2.8 */
    list-style: none;
    display: inline;
    color: #666;
    font-size: 0.95em;
    padding: 0 0 0 0.3em;
}
#user-control-panel a {
    color: #666;
}
#user-control-panel li.first {
    border:medium none;
}
#user-control-panel li {
    border-left: 1px solid #666;
    padding-left: 0.5em;
}
#page-view-panel li {
    float: right;
}

#breadcrumbs {
    list-style: none;
    padding: 0;
    margin: 0;
    overflow: auto;
}

#breadcrumbs li {
    white-space: nowrap;
    display: inline;
    float: left;
    margin: 0 .2em 0 0;
    line-height: 1.8em;
    padding-left: 15px;
    background: url(../../../images/decoration/white_breadcrumbs_indicator.png);
    background-repeat: no-repeat;
    background-position: 3px center;
}

#breadcrumbs li.first {
    padding-left: 0;
    background-image: none;
}

#breadcrumbs li a {
    text-decoration: none;
}

#breadcrumbs li a:hover {
    text-decoration: underline;
}

#breadcrumbs li span {
    display: block;
}

#ellipsis strong {
    cursor: pointer;
    font-weight: normal;
}

#breadcrumbs li.hidden-crumb {
    display: none;
}

/** Links */
a.icon {
    display: block;
    min-height: 16px;
    text-align: left;
    text-indent: -9999em;
    width: 16px;
}

a.print {
    background: url(../../../images/icons/print_16.gif) no-repeat 50% 50%;
}
a.feed {
    background: url(../../../images/icons/feed-icon-16x16.png) no-repeat 50% 50%;
}
a.pdf {
    background: url(../../../images/icons/attachments/pdf.gif) no-repeat 50% 50%;
}
a.help {
    background: url(../../../images/icons/help_16.gif) no-repeat 50% 50%;
}
a.add-user {
    background: url(../../../images/icons/classic/16/125.png) no-repeat 50% 50%;
}

a.remove-user {
    background: url(../../../images/icons/classic/16/123.png) no-repeat 50% 50%;
}

a.groups {
    background: url(../../../images/icons/classic/16/127.png) no-repeat 50% 50%;
}

a.cancel {
    background: url(../../../images/icons/emoticons/error.gif) no-repeat 50% 50%;
}

a.search-icon {
    background: url(../../../images/icons/srch_16.gif) no-repeat 50% 50%;
}

a img {
    border: none;
}

a.texticon {
    min-height: 16px;
    text-align: left;
    padding:0 10px 0 20px;
    background-position: 0 50%;
    outline:0 none;
}


/* // Links **/
#com-atlassian-confluence h1 {
    line-height: 2;
    margin: 0 0 10px 0;
    padding: 0;
    width: 100%;
}
#com-atlassian-confluence h1 img {
    float: left;
    margin: 0 .3em 0 0;
}
br.clear {
    clear: both;
    height: 1px;
    overflow: hidden;
}
#footer, #footer-warning {
    background: #f0f0f0;
    text-align: center;
}
#footer p.license, #footer p.license a {
    background: #036;
    color: #fff;
    margin: 0;
}
#footer #poweredby {
    background: #f0f0f0 url("../../../images/border/border_bottom.gif") repeat-x;
    color: #666;
    margin: 0;
    padding: .5em;
    list-style: none;
}
#footer #poweredby a, #footer-warning {
    color: #666;
}
#footer #poweredby li {
    display: inline;
}
#footer #poweredby li.print-only {
    display: none;
}
#footer p.warning {
    margin: 0 40px 10px 40px;
    text-align: center;
}
#menu-bar, #navigation .space-browse-links {
    float: right;
}
#navigation .space-browse-links ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
#menu-bar {
    margin: 0 .5em;
}
table {
    clear: left;
}
.space-browse-links a:link,
.space-browse-links a:active,
.space-browse-links a:visited {
    border: 1px solid #3c78b5;
    color: #000;
    display: block;
    font-weight: bold;
    line-height: 2;
    margin: 0.35em 0 -1px 0.5em;
    padding: 0 0.5em 0 24px;
    position: relative;
    text-decoration: none;
}
.space-browse-links a:hover {
    background-color: #036;
    border: 1px solid #036;
    color: #fff;
}
.space-browse-links a img {
    float: left;
    left: 4px;
    margin: -8px 0 0;
    position: absolute;
    top: 50%;
}
#tree-div {
    min-height:300px;
}
.mailLabel {
    color: #666;
    font-weight: bold;
}

.unparented {
    list-style: none;
    margin: 0;
    padding: 0;
}

.parented {
    list-style-image: url(../../../images/icons/link_out_bot.gif);
}

.mailthread ul {
    list-style-image: url(../../../images/icons/link_out_bot.gif);
}
.selectedMail {
  background-color: #ffc;
  padding: 2px;
  border: 1px solid #ddd;
}

.excerpt {
  margin-top: 0;
  margin-bottom: 0;
}

.captcha {
    padding: 10px;
}
.captcha-image {
    border: 1px solid #000;
}

.version-info {
    margin-bottom: 10px;
}

/* Fix menu focus when selecting with mouse in Firefox */
li:active, a:active {
  outline: none;
}

/* Confluence global/space message styles */
#messageContainer {
    background: #fff;
    list-style: none;
    margin: 0 -10px;
    padding: 0;
}

#messageContainer li {
    padding: 5px;
    display: none;
}

.message-close-button {
    height: 16px;
    width: 16px;
    border: none;
    float: right;
    cursor: pointer;
}

.page-metadata-icons {
    display: inline;
    margin: 0;
    padding: 0;
    float: left;
}

.page-metadata-icons li {
    list-style: none;
    float: left;
    padding: 0 5px 0 0;
    margin: 0;
}

.page-metadata-icons a {
	text-decoration: none;
    vertical-align: middle;
}

.page-metadata-icons a.page-restrictions span,
.page-metadata-icons a.action-view-attachments span.page-metadata-attachments-text {
    float: left;
	height: 16px;
	width: 16px;
    text-indent: -9999em;
}

.page-metadata-icons a.page-restrictions span {
    background: url(../../../images/icons/lock_16_grey.gif) no-repeat;
}

.page-metadata-icons a.action-view-attachments span.page-metadata-attachments-text {
	background: url(../../../images/icons/attach_16.png) no-repeat;
}

.on-label, yes-label {
    color: #009900;
    font-weight: bold;
}

.off-label, no-label {
    color: #990000;
    font-weight: bold;
}

.margin-top-zero {
    margin-top: 0;
}

.progress-fill-color {
    background: #00df00;
}

.progress-background-color {
    background: #fff;
}

.vertical-center-aligning-container {
    display: table;
    height: 400px;
    /* position : relative; */
    overflow: hidden;
}

.vertical-center-div-outer {
    /* position : absolute;
    top : 50%; */
    display: table-cell;
    vertical-align: middle;
}

.vertical-center-div-inner {
    /* position : relative;
    top : -50%; */
    text-align: center;
}

.dark-grey-background {
    background-color: #cccccc; 
}


/* End Confluence master stylesheet */



.wiki-content,
.wiki-content p,
.wiki-content table,
.wiki-content tr,
.wiki-content td,
.wiki-content th,
.wiki-content ol,
.wiki-content ul,
.wiki-content li {
    font-size: 10pt;
    line-height: 13pt;
}

.wiki-content p {
    margin: 10px 0;
    padding: 0;
}

.wiki-content li,
.wiki-content ul p,
.wiki-content ol p {
    margin: 0;
    padding: 0;
}

.wiki-content ul {
    list-style-type: disc;
}

.wiki-content ol,
.wiki-content ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol ol ol ol {
    list-style-type: decimal;
}

.wiki-content ol ol,
.wiki-content ol ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol ol ol ol ol {
    list-style-type: lower-alpha;
}

.wiki-content ol ol ol,
.wiki-content ol ol ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol ol ol,
.wiki-content ol ol ol ol ol ol ol ol ol ol ol ol {
    list-style-type: lower-roman;
}

/*Needs the id selector because of the
'#com-atlassian-confluence h1' entry in master.css*/
#com-atlassian-confluence .wiki-content h1,
.wiki-content h2,
.wiki-content h3,
.wiki-content h4,
.wiki-content h5,
.wiki-content h6 {
    font-weight: bold;
    line-height: normal;
    padding: 0;
}

#com-atlassian-confluence .wiki-content h1
{
    font-size: 18pt;
    margin-top: 32px;
}

.wiki-content h2 {
    font-size: 16pt;
    margin-top: 24px;
}

.wiki-content h3 {
    font-size: 14pt;
    margin-top: 20px;
}

.wiki-content h4 {
    font-size: 12pt;
    margin-top: 14px;
}

.wiki-content h5 {
    font-size: 11pt;
    margin-top: 12px;
}

.wiki-content h6 {
    font-size: 10pt;
    color: black;
    margin-top: 8px;
}

.wiki-content .confluenceTable, .grid {
    margin-left: 0px;
    margin-right: 0;
    margin-top: 10px;
    margin-bottom: 10px;
    padding: 0;
}

.wiki-content td.confluenceTd {
    padding-right: 10px;
}
.wiki-content td.confluenceTd,
.wiki-content th.confluenceTh {
    margin: 0;
    padding: 0;
}
.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid;
    border-right: 1px solid;
}

/* Styles for TinyMCE editor content */

.mceContentBody {
    border: none;
    padding: 10px;
    text-align: left;
    background-color: #fff;
}

/* IE makes paragraphs in tables, so remove the default margin */
.mceContentBody .confluenceTable p {
    margin: 0;
}
#tab-navigation {
    border-bottom: 1px solid;
    margin: 0 -10px;
    margin-bottom: 10px;
    padding: 0 10px;
}

.tab-navigation {
    list-style: none;
    display: block;
    margin: 0 0 -1px;
    padding: 0;
    overflow: hidden;
}
.tab-navigation .tab {
    float: left;
    display: inline;
    font-weight: bold;
    margin: 0 5px -1px 0;
}
.tab-navigation .tab a {
    padding: .3em .4em;
    text-decoration: none;
    display: block;
    -moz-border-radius-topleft: 3px;
    -moz-border-radius-topright: 3px;
    -webkit-border-top-left-radius: 3px;
    -webkit-border-top-right-radius: 3px;
}
.tab-navigation .notab {
    margin: 1px 1px 0 1px;
    padding: .3em;
    float: left;
}

/* Make the following more specific, so they aren't overriden by themes. */
ul.tab-navigation .current a {
    color: #000;
    background-color: #fff;
    border-bottom-color: #fff; /* IE */
}
ul.tab-navigation .current a:hover {
    color: #000;
    background-color: #fff;
    border-bottom-color: #fff; /* IE */
}

/*
 * Drop down menu stylesheet
 */

/* Menu bar layout */
.ajs-menu-bar {
    float: right;
    line-height: 1.5;
}
.ajs-menu-bar,
.ajs-menu-bar .ajs-button,
.ajs-menu-bar .ajs-button a,
.ajs-menu-bar .ajs-button span,
.ajs-menu-bar .ajs-menu-item .ajs-menu-title,
.ajs-menu-bar .ajs-menu-item .ajs-menu-title span,
.ajs-menu-bar .ajs-menu-item .ajs-menu-title span span,
.ajs-menu-bar .ajs-drop-down a,
.ajs-menu-bar .ajs-drop-down a span,
.ajs-menu-bar .ajs-drop-down a span span {
     /* all containers are block-level with no margin or padding by default */
    display: block;
    margin: 0;
    padding: 0;
}
.ajs-menu-bar .ajs-button span,
.ajs-menu-bar .ajs-menu-item .trigger span span {
    padding-right: 1em; /* gap after menu label, must be wider than indicator image */
}
.ajs-menu-bar li.ajs-menu-item,
.ajs-menu-bar li.ajs-button {
    float: left;
    list-style: none;
}
.ajs-menu-bar li.ajs-menu-item a,
.ajs-menu-bar li.ajs-button a {
    line-height: 1.5;
    text-decoration: none;
    white-space: nowrap;
}
.ajs-menu-bar .ajs-button {
    float: left;
    line-height: 2;
    list-style: none;
    position: static;
}
#header .ajs-menu-bar li.ajs-menu-item {
    position: relative;
}

/* Drop-down indicator icon and on-hover colour changing */
.ajs-menu-bar .ajs-menu-item .trigger span {
    background-image: url(../../../images/decoration/menu_indicator.gif);
}
.ajs-menu-bar .ajs-menu-item.opened .trigger span {
    background-image: url(../../../images/decoration/white_menu_indicator.gif);
}
.ajs-menu-bar .ajs-menu-item .trigger span span {
    background: none;
}
.ajs-menu-bar .ajs-button a:hover,
.ajs-menu-bar .ajs-menu-item.opened .trigger span {
    color: #fff; /* system colour - not derived from colour scheme */
}

/* Menu bar icons */
.ajs-menu-bar .ajs-menu-item .trigger span {
    background-position: 100% 50%;
    background-repeat: no-repeat;
}
.ajs-menu-bar .ajs-button span,
.ajs-menu-bar .ajs-menu-item .trigger span span {
    background-position: 0 50%;
    background-repeat: no-repeat;
}

/* Drop-down menu layout */
.ajs-menu-bar li .ajs-drop-down a {
    background: #fff no-repeat 4px 50%;
    border: none;
    display: block;
    line-height: 1.6;
    margin: 0;
    padding: 0 0.5em 0 24px;
    text-decoration: none;
}
.ajs-menu-bar .ajs-drop-down {
    -moz-border-radius-bottomleft: 3px;
    -moz-border-radius-bottomright: 3px;
    -webkit-border-bottom-left-radius: 3px;
    -webkit-border-bottom-right-radius: 3px;
    background: #fff; /* system colour - not derived from colour scheme */
    border: solid 1px #c1c1c1;
    font-weight: normal;
    min-width: 10em;
    padding: 0;
    position: absolute;
    white-space: nowrap;
    z-index: 1000;
}
.ajs-menu-bar .ajs-drop-down ul,
.ajs-menu-bar ul.ajs-drop-down {
    border-top: solid 1px #e1e1e1;
    margin: 0;
    padding: 5px 0;
    list-style: none;
}
.ajs-menu-bar .ajs-drop-down ul.first,
.ajs-menu-bar ul.ajs-drop-down.first {
    border-top: none;
}
.ajs-menu-bar .ajs-drop-down li {
    margin: 0;
    padding: 0;
}
.ajs-menu-bar div.ajs-drop-down a {
    background-position: .5em 50%;
    background-repeat: no-repeat;
    border: none;
    display: block;
    line-height: 2;
    margin: 0;
    padding: 0 1em 0 28px;
    position: relative;
    text-decoration: none;
    white-space: nowrap;
}
.ajs-menu-bar .ajs-drop-down a img {
    float: left;
    height: 16px;
    margin: .3em 0 0 -20px;
    width: 16px;
}

/* Drop-down menu icons */
.ajs-menu-bar .ajs-drop-down a.add-comment {
    background-image: url(../../../images/icons/comment_16.png);
}
.ajs-menu-bar .ajs-drop-down a.add-attachment {
    background-image: url(../../../images/icons/attach_16.png);
}
.ajs-menu-bar .ajs-drop-down a.add-page {
    background-image: url(../../../images/icons/docs_16.gif);
}
.ajs-menu-bar .ajs-drop-down a.add-news {
    background-image: url(../../../images/icons/blogentry_16.gif);
}
.ajs-menu-bar .ajs-drop-down a.action-view-history {
    background-image: url(../../../images/icons/clock_16.png);
}
.ajs-menu-bar .ajs-drop-down a.action-view-attachments {
    background-image: url(../../../images/icons/attach_16.png);
}
.ajs-menu-bar .ajs-drop-down a.action-page-favourite {
    background-image: url(../../../images/icons/fav_off_16.png);
}
.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected { /* using IE style here to make IE7 not duplicate bg */
    background-image: url(../../../images/icons/fav_on_16.png);
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching-space {
    background-image: url(../../../images/icons/watching_space_16.png);
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching {
    background-image: url(../../../images/icons/watch_off_16.png);
}
.ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { /* using IE style here to make IE7 not duplicate bg */
    background-image: url(../../../images/icons/watch_on_16.png);
}
.ajs-menu-bar .ajs-drop-down a.waiting {
    background-image: url(../../../images/icons/wait.gif);
}

.ajs-menu-bar .section-secondary li a,
.ajs-menu-bar .section-modify li a {
    padding-left: 8px;
    font-size: .9em;
}

/* Customisations for header menu bar */
#header-menu-bar {
    margin-top: 0;
    margin-right: 5px;
}
#header .ajs-menu-item a {
    float: left;
    line-height: 1.5;
    margin: 0;
    text-decoration: underline;
}
#header .ajs-menu-bar li.ajs-menu-item,
#header .ajs-menu-bar li.ajs-button {
    margin: 1px 0 0 0;
    padding: 1px 0;
}
#header .ajs-menu-bar li.ajs-menu-item a {
    padding-left: 0.5em;
}
#header .ajs-menu-item .trigger span {
    background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */
}
#header .ajs-menu-item .trigger span span {
    background: none;
}
#header .ajs-menu-bar li.ajs-menu-item a.trigger:focus {
    outline: none;
}
#header .ajs-menu-bar li.ajs-menu-item a.trigger {
    float: left;
    text-decoration: none;
    padding: 0 0.5em;
}
#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li,
#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a {
    background-color: #fff; /* system colour - not derived from colour scheme */
    background-image: none;
}
.ajs-menu-bar .ajs-menu-item.opened,
.ajs-menu-bar .ajs-button a {
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
}
.ajs-menu-bar li.ajs-menu-item.opened {
    -moz-border-radius-bottomleft: 0;
    -moz-border-radius-bottomright: 0;
    -webkit-border-bottom-left-radius: 0;
    -webkit-border-bottom-right-radius: 0;
}
#header .ajs-menu-bar .ajs-menu-item.opened {
    border: solid 1px;
    border-bottom: 0;
    margin: 1px -1px 0 -1px;
    padding-top: 0;
    padding-bottom: 0.1em;
}

/* Customisations for header menus */
#header .ajs-drop-down {
    -moz-border-radius-bottomleft: 3px;
    -moz-border-radius-bottomright: 3px;
    -webkit-border-bottom-left-radius: 3px;
    -webkit-border-bottom-right-radius: 3px;
    border-top: none;
    left: 0;
    margin-top: 0;
    margin-left: -1px;
    top: 1.67em;
    z-index: 9;
}
#header .ajs-drop-down a {
    float: none;
    text-decoration: none;
    padding: 2px 2em;
}
#header .ajs-menu-item .ajs-drop-down ul,
#header .ajs-menu-item ul.ajs-drop-down {
    border-top: 1px solid #cce;
}
#header .ajs-menu-bar .ajs-drop-down ul.first,
#header .ajs-menu-bar ul.ajs-drop-down.first {
    border: none;
}

/* Customisations for navigation menu bar */
#navigation .ajs-menu-bar {
    margin: 10px 0 0 1em;
}
#navigation .ajs-menu-bar .ajs-button span,
#navigation .ajs-menu-bar .ajs-menu-item .ajs-menu-title span span {
    padding-left: 25px; /* width of icon + gap before menu label */
}
/*#navigation .ajs-menu-bar li.ajs-menu-item,
#navigation .ajs-menu-bar li.ajs-button {
    margin-top: -10px;
}
*/
#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title,
#navigation .ajs-menu-bar li.ajs-button a {
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    color: #535353; /* system colour - not derived from colour scheme */
    padding: .35em .5em;
    font-size: 1.1em;
    line-height: 20px;
}
#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title {
    -moz-border-radius-bottomleft: 0;
    -moz-border-radius-bottomright: 0;
    -webkit-border-bottom-left-radius: 0;
    -webkit-border-bottom-right-radius: 0;
}
#navigation .ajs-menu-bar .ajs-button a.edit span {
    background-image: url(../../../images/icons/edit_20.png);
}
#navigation .ajs-menu-bar .ajs-button a.view span {
    background-image: url(../../../images/icons/view_20.png);
}
#navigation .ajs-menu-bar li.ajs-menu-item a.add span span {
    background-image: url(../../../images/icons/add_20.png);
}
#navigation .ajs-menu-bar li.ajs-menu-item a.action span span {
    background-image: url(../../../images/icons/tools_20.png);
}
#header .ajs-menu-item a.ajs-menu-title span { /* Not sure why these styles need to be duplicated for IE, but it works. */
    background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */
    background-repeat: no-repeat;
    background-position: 100% 60%; /* 60% lines up with middle of lowercase letters in IE */
}
#header .ajs-menu-bar .ajs-menu-item.opened {
    border: none;
    margin: 1px 0 0 0;
    padding: 0;
    padding-top: 1px;
}
.ajs-drop-down {
    clear: both;
    z-index: 500;
}
#header .ajs-drop-down {
    top: 1.75em;
}
.ajs-menu-bar .ajs-drop-down li {
    display: block;
    margin: 0;
    padding: 0;
}
#navigation .ajs-menu-bar .ajs-drop-down a {
    display: block;
    padding: 0.33em 0.67em;
    cursor: pointer;    
}
#navigation .ajs-menu-bar div.ajs-drop-down a span {
    padding: 0 0 0 21px;
    height: 16px;
    line-height: 16px;
    zoom: 1;
}
#navigation .ajs-menu-bar .section-secondary li a,
#navigation .ajs-menu-bar .section-modify li a {
    padding: 0;
}
#navigation .ajs-menu-bar .section-secondary li a span,
#navigation .ajs-menu-bar .section-modify li a span {
    padding-left: 8px;
}
.ajs-menu-bar .ajs-drop-down a img {
    clear: left;
    float: none;
    margin: .3em 0 .3em -20px;
    vertical-align: middle;
}

#navigation .ajs-menu-bar .ajs-button a,
#navigation .ajs-menu-bar .ajs-button a span {
    background: none;
    display: inline-block; /* makes the edit button have layout, but doesn't give it enormous width*/
}

.ajs-menu-bar .ajs-drop-down a.add-page,
.ajs-menu-bar .ajs-drop-down a.add-news {
    background: none;
}
.ajs-menu-bar .ajs-drop-down a.add-page span {
    background: url(../../../images/icons/docs_16.gif) no-repeat 0 50%;
}
.ajs-menu-bar .ajs-drop-down a.add-news span {
    background: url(../../../images/icons/blogentry_16.gif) no-repeat 0 50%;
}

.ajs-menu-bar .ajs-drop-down a.add-comment {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.add-comment span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/comment_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.add-attachment,
.ajs-menu-bar .ajs-drop-down a.action-view-attachments,
.page-metadata-icons a.action-view-attachments span.page-metadata-attachments-text {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.add-attachment span,
.ajs-menu-bar .ajs-drop-down a.action-view-attachments span,
.page-metadata-icons a.action-view-attachments span.page-metadata-attachments-text {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/attach_16.png', sizingMethod='crop')");
    zoom: 1;
}
* html .page-metadata-icons a.action-view-attachments span.page-metadata-attachments-count {
    display: inline-block;  /* IE6 */
    text-indent: 9999em;
}
.ajs-menu-bar .ajs-drop-down a.action-view-history {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.action-view-history span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/clock_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.action-page-favourite {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.action-page-favourite span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/fav_off_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/fav_on_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching-space {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching-space span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/watching_space_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.action-page-watching span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/watch_off_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar div.ajs-drop-down a.ie-page-watching-selected {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected span {
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/watch_on_16.png', sizingMethod='crop')");
    zoom: 1;
}
.ajs-menu-bar .ajs-drop-down a.waiting {
    background-image: none;
}
.ajs-menu-bar .ajs-drop-down a.waiting span {
    background-image: url(../../../images/icons/wait.gif);
    background-repeat: no-repeat;
    filter: inherit;
}
#navigation .ajs-menu-bar .ajs-button a.edit span {
    background-image: none;
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/edit_20.png', sizingMethod='crop')");
    width: 1%;
}

#navigation .ajs-menu-bar li.ajs-menu-item a.add span span {
    background-image: none;
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/add_20.png', sizingMethod='crop')");
    width: 1%;
}

#navigation .ajs-menu-bar li.ajs-menu-item a.action span span {
    background-image: none;
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/tools_20.png', sizingMethod='crop')");
    width: 1%;
}

#navigation .ajs-menu-bar .ajs-button a.view span {
    background-image: none;
    filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
        document.getElementById('confluence-context-path').content +
        "/images/icons/view_20.png', sizingMethod='crop')");
    width: 1%;
}

table.confluenceTable {
    margin: 5px;
    border-collapse: collapse;
}

td.confluenceTd, table.confluenceTable td.confluenceTd {
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 5px;
    vertical-align: top;
}

th.confluenceTh, table.confluenceTable th.confluenceTh {
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 5px;
    background-color: #f0f0f0;
    text-align: left;
    vertical-align: top;
}

.panel {
    color: black;
    padding: 0;
    margin: 10px 20px;
    background: #f0f0f0;
    border-width: 1px;
    border-style: solid;
    overflow: hidden;
}

.alertPanel {
    border-color: #c00;
}

.infoPanel {
    border-color: #3c78b5;
}

.alertPanel, .infoPanel {
    border-style: solid;
    border-width: 1px;
    padding: 8px;
    margin: 10px;
}

.infopanel-heading {
    font-weight: bold;
	padding: 4px 0 2px 0;
}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {
    border-width: 1px;
    border-style: solid;
    margin-top: 2px;
    margin-bottom: 8px;
    width: 100%;
}

.basicPanelTitle {
    padding: 5px;
    margin: 0;
    background-color: #f0f0f0;
    color: black;
    font-weight: bold;
}

.basicPanelBody {
    padding: 5px;
    margin: 0;
}

.panelHeader {
    padding: 0 12px;
    line-height: 2; /* vertical alignment for title */
    text-align: center;
    border-bottom-width: 1px;
    border-bottom-style: solid;
}

.codeHeader, .panelHeader, .panelContent {
    background: #f0f0f0;
}

.preformattedHeader, .codeContent, .preformattedContent {
    background: #fff;
}

.panelContent {
    color: #000;
    margin: 0;
    padding: 0 12px;
    text-align: left;
    font-size: .95em;
}

.panelContent,
.panelContent p, .panelContent th,
.panelContent td, .panelContent li {
    text-align: left;
}


#header {
    width: 100%;
}
/*body>#header .ajs-menu-bar li .ajs-drop-down a {
    width: expression(this.parentNode.offsetWidth - 34 + "px");
}
*/
#breadcrumbs {
    height: 1%;
}
#breadcrumbs li {
    white-space: nowrap;
}
* html #breadcrumbs li {
    background-image: url(../../../images/decoration/white_breadcrumbs_indicator.gif); /* IE6 */
}
#breadcrumbs li {
    background-position: 3px 8px;
}
#wiki-editor .tab-navigation .tab a {
    float: left;
}
#wiki-editor .submit-buttons {
    display: block;
    float: none;
    line-height: 2;
    text-align: right;
}

form {
    margin: 0;
    padding: 0;
}
#linkinserters,
#preview,
#wysiwyg {
    margin-top: -10px;
}
#markup {
    padding: 0;
}
#markup textarea {
    float: right;
    border: none;
    width: 99.9%;
    margin: 0;
}
.tab-navigation .tab {
    float: left;
    display: inline;
    font-weight: bold;
    margin: 0 5px -1px 0;
    position: relative;
}
.tab-navigation .tab a {
    display: inline-block; /* anchors were making tabs very wide in Clickr theme in IE */
}
#wiki-editor .tab-navigation .current a {
    background-color: #fff;
    border-bottom: none;
    color: #000;
    padding-bottom: 0.4em;
}
a.icon {
    height: 16px;
}
#tree-div {
    min-height: 300px;
    height: auto !important;
    height: 300px;
}
h1 #content-title {
    margin: 0;
    display: block;
    width: 95%;
}
h1 span.title-text {
    height: 1%;
}
#com-atlassian-confluence h1 {
    width: auto;
}
div.editable-title {
    height: 1%;
    margin: 0;
}
#tab-navigation {
    zoom: 1;
}
ul#editor-tabs {
    margin-bottom: 10px;
}
/*
    Styles for macros bundled in Renderer.
*/

.panelMacro {
    margin: 10px 20px;
    overflow: hidden; /* fix width next to floated content */
}

.panelMacro table {
    text-align: left;
    padding: 0 20px;
    width: 100%;
}

.panelMacro td, .panelMacro p {
    font-size: 1em;
    padding: 14px 0;
}

.searchMacro {
    font-size: 10pt;
    margin: 10px 0;
}

.searchMacro .result {
    margin-top: 3px;
    padding: 0 5px 5px 5px;
    border-bottom: 1px solid #ddd;
}

.searchMacro .resultSummary {
    margin-bottom: 7px;
}

.rssMacro {
    font-size: 10pt;
}

.rssMacro table {
    margin: 10px 0;
    width: 100%;
    border-collapse: collapse;
}

.rssMacro table th,
.rssMacro table td {
    border: 1px solid #ccc;
    padding: 4px;
}

.rssMacro table th {
    background: #f0f0f0;
}

/* Code styles */
.code {
    border-width: 1px;
    border-style: dashed;
    overflow: auto;
}

.code, .preformatted {
    background-color: #fff;
}

.code pre, .preformatted pre { /* needs 'pre' to override TinyMCE style */
    font-family:"Courier New", Courier, monospace;
    line-height: 1.3;
}

.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}

.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

/* Recently Updated Styles */
.recentlyUpdatedItem {
	border-bottom: #f0f0f0 1px solid;
	border-top: #f0f0f0 1px solid;
	margin: 10px 0 0 0;
	padding: 0;
	border-spacing: 0;
	width: 100%;
    text-decoration: none;
    border-collapse: collapse;
}

.recentlyUpdatedItem td {
    padding: 10px;
    border-bottom: #f0f0f0 1px solid;
    vertical-align: top;
}

.recentlyUpdatedItem .authorAndDate {
	background-color: #f0f0f0;
	width: 25%;
}

.recentlyUpdatedItem .date {
    margin-top: 4px;
    font-size: 90%;
    color: #666;
}

.recentlyUpdatedItem .profilePic {
    float: right;
    background-color: #f0f0f0;
    margin: 0 2px;
}

.recentlyUpdatedItem .twixie {
    padding: 10px 0 0 4px;
}

.recentlyUpdatedItem .icon {
    padding: 8px 0 0 1px;
}

.recentlyUpdatedItem .details {
    padding-left: 7px;
}

.recentlyUpdatedItem .summary, .recentlyUpdatedItem .thumbnail {
    margin-top: 3px;
    color: #666;
}

.moreRecentlyUpdatedItems {
    text-align: right;
    margin-top: 10px;
    font-size: 10pt;
}

a.content-type-page span {
    background-image: url(../../../images/icons/docs_16.gif);
}

a.content-type-blogpost span {
    background-image: url(../../../images/icons/blogentry_16.gif);
}

a.content-type-comment span {
    background-image: url(../../../images/icons/comment_16.gif);
}

a.content-type-spacedesc span {
    background-image: url(../../../images/icons/web_16.gif);
}

a.content-type-personalspacedesc span {
    background-image: url(../../../images/icons/personal_space_16.gif);
}

a.content-type-mail span {
    background-image: url(../../../images/icons/mail_content_16.gif);
}

a.content-type-attachment span {
    background-image: url(../../../images/icons/attachments/file.gif);
}

a.content-type-file span {
    background-image: url(../../../images/icons/attachments/file.gif);
}

a.content-type-attachment-application-pdf span {
    background-image: url(../../../images/icons/attachments/pdf.gif);
}

a.content-type-attachment-image span {
    background-image: url(../../../images/icons/attachments/image.gif);
}

a.content-type-attachment-text-xml span {
    background-image: url(../../../images/icons/attachments/xml.gif);
}

a.content-type-attachment-text-html span {
    background-image: url(../../../images/icons/attachments/html.gif);
}

a.content-type-attachment-text span {
    background-image: url(../../../images/icons/attachments/text.gif);
}

a.content-type-attachment-application-zip span {
    background-image: url(../../../images/icons/attachments/zip.gif);
}

a.content-type-attachment-application-excel span {
    background-image: url(../../../images/icons/attachments/excel.gif);
}

a.content-type-attachment-application-powerpoint span {
    background-image: url(../../../images/icons/attachments/powerpoint.gif);
}

a.content-type-attachment-application-word span {
    background-image: url(../../../images/icons/attachments/word.gif);
}

a.content-type-attachment-java span {
    background-image: url(../../../images/icons/attachments/java.gif);
}

a.content-type-attachment-file span {
    background-image: url(../../../images/icons/attachments/file.gif);
}
/* Information plugin styles */

.noteMessage, .warningMessage, .infoMessage, .tipMessage {
    border-style: solid;
    border-width: 1px;
    text-align: center;
    padding: 5px;
    overflow: hidden; /* fix width next to floated content */
}

.noteMessage {
    border-color: #f0c000;
    background: #ffffce;
}

.warningMessage {
    border-color: #c00;
    background: #fcc;
}

.infoMessage {
    border-color: #3c78b5;
    background: #d8e4f1;
}

.tipMessage {
    border-color: #090;
    background-color: #dfd;
}

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td {
    border: none;
}

.informationMacroPadding {
    padding: 5px 0 0 5px;
}

.noteMacro, .warningPanel {
    background-color: #ffffce;
}
#addition .noteMacro {
    border-style: solid;
    border-width: 1px;
    border-color: #f0c000;
    background-color: #ffffce;
    text-align:left;
    padding: 10px;
    width: 100%;
    margin: 5px 20px;
}

#addition .noteMacro td {
    font-size: 10pt;
    padding: 2px;
    padding-right: 15px;
}

#addition .noteMacro p {
    font-size: 10pt;
}

#addition .noteMacro b {
    font-size: 10pt;
}

#addition table.noteMacro td {
    border: none;
}

#replying .noteMacro {
    border-style: solid;
    border-width: 1px;
    border-color: #f0c000;
    background-color: #ffffce;
    text-align:left;
    padding: 10px;
    width: 100%;
    margin: 5px 20px;
}

#replying .noteMacro td {
    font-size: 10pt;
    padding: 2px;
    padding-right: 15px;
}

#replying .noteMacro p {
    font-size: 10pt;
}

#replying .noteMacro b {
    font-size: 10pt;
}

#replying table.noteMacro td {
    border: none;
}

.tipMacro {
    background-color: #dfd;
}

.warningMacro {
    background-color: #fcc;
}

.infoMacro {
    background-color: #d8e4f1;
}

.warningPanel {
    border-style: solid;
    border-width: 1px;
    padding: 8px;
    margin: 10px;
}

.warningPanel {
    border-color: #f0c000;
}




/* Layout plugin styles */

.sectionMacro,
.sectionMacro p,
.sectionMacro ul,
.sectionMacro ol {
    font-size: 10pt;
}

table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro {
    border-style: dashed;
    border-width: 1px;
    border-color: #ccc;
}


/*
    Colors for Confluence (included for all themes by default).
*/


h1, h2, h3, h4, h5, h6,
.wiki-content h1,
.wiki-content h2,
.wiki-content h3,
.wiki-content h4,
.wiki-content h5,
.wiki-content h6,
.pagetitle,
.steptitle,
.substeptitle,
.formtitle,
a.blogHeading,
.more-comments a,
.label,
label,
th.confluenceTh,
table.confluenceTable th.confluenceTh,
table.admin th,
.form-element-large,
.form-element-small,
#com-atlassian-confluence .mce_h1 span.mceText,
#com-atlassian-confluence .mce_h2 span.mceText,
#com-atlassian-confluence .mce_h3 span.mceText,
#com-atlassian-confluence .mce_h4 span.mceText,
#com-atlassian-confluence .mce_h5 span.mceText,
#com-atlassian-confluence .mce_h6 span.mceText {
    color: #003366;
}

.wiki-content h1,
.wiki-content h2 {
 	border-bottom-color: #3c78b5;
}

.wiki-content-preview {
    border-left-color: #3c78b5;
    border-right-color: #3c78b5;
}

.pageSectionHeader {
    border-bottom-color: #3c78b5;
}

.panel {
    border-color: #3c78b5;
}

.panelHeader,
.menuheading,
.pageheader,
.sectionbottom {
    border-bottom-color: #3c78b5;
}

.topRow {
    border-top-color: #3c78b5;
}

.tabletitle, .pageSectionHeader, .section-header h2 {
    color: #003366;
}
.tabletitle, .pageSectionHeader {
	border-bottom-color: #3c78b5;
}

a:link,
a:visited,
a:active,
a:hover,
#default-labels-header a.add {
	color: #003366;
}

h1 a:hover {
    border-bottom-color: #003366;
}

/* use logoSpaceLink instead.
.spacenametitle,
.spacenametitle a,
.spacenametitle a:visited {
    color: #999999;
}
*/
.spacenametitle-printable,
.spacenametitle-printable a,
.spacenametitle-printable a:visited {
    color: #999999;
}

.navItemOver,
.navItemOver a,
.navItemOver a:visited,
.navItemOver a:hover {
    color: #ffffff;
    background-color: #003366;
}

.navItem {
    background-color: #3c78b5;
}

.navItem a,
.navItem a:hover,
.navItem a:visited {
    color: #ffffff;
}

.tableview th {
    color: #003366;
    border-bottom-color: #3c78b5;
}

blockquote {
    border-left-color: #3c78b5;
}

.navBackgroundBox {
    background: #3c78b5;
}

.previewBoxTop,
.previewContent,
.previewBoxBottom,
.functionbox {
    border-color: #3c78b5;
}

.smalltext-blue {
    color: #3c78b5;
}

.tabnav,
.comment .tabnav,
ul.tabnav {
    border-bottom-color: #3c78b5;
}

.tabnav .tabs a {
    border-color: #3c78b5;
    background: #3c78b5;
}

.tabnav .tabs a:link, .tabnav .tabs a:visited {
    color: #ffffff;
}
.tabnav .tabs a:hover {
    color: #ffffff;
    background: #003366;
    border-color: #003366;
}

.tabnav .spaceActionLinks a:link,
.tabnav .spaceActionLinks a:visited {
    color: #003366;
}

.foldertab-box {
	border-left-color: #3c78b5;
	border-right-color: #3c78b5;
	border-bottom-color: #3c78b5;
}

#squaretab a {
    border-color: #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
    background-color: #3c78b5;
}

#squaretab a:hover {
    color: #ffffff;
    background-color: #003366;
    border-color: #003366;
}

table.blogcalendar {
    border-color: #3c78b5;
}

.blogcalendar th.calendarhead,
a.calendarhead,
a.calendarhead:link,
a.calendarhead:visited,
a.calendarhead:hover {
    background-color: #3c78b5;
    color: #ffffff;
}

.searchGroupHeading {
    background-color: #3c78b5;
    color: #ffffff;
}

.permissionTab {
    background: #3c78b5;
    color: #ffffff;
}

.permissionSuperTab {
    background: #003366;
    color: #ffffff;
}

/* styles for links in the top bar */
.topBarDiv a:link,
.topBarDiv a:visited,
.topBarDiv a:active,
.topBarDiv a:hover,
.topBarDiv {
    color: #ffffff;
}

.topBar {
    background-color: #003366;
}

.basicPanelContainer {
    border-color: #3c78b5;
}

.greynavbar {
    border-top-color: #3c78b5
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.minitab {
    border-bottom-color: #3c78b5;
}

.minitab a {
    border-top-color: #3c78b5;
    border-right-color: #3c78b5;
    border-left-color: #3c78b5;
}

.minitab .unselected {
    border-bottom-color: #3c78b5;
    background: #3c78b5;
}

#header {
    background-color: #003366;
}
#header a,
#breadcrumbs,
#header .ajs-menu-bar li.ajs-menu-item a.trigger {
    color: #ffffff;
}
.breadcrumbs {
 	border-color: #3c78b5;
}

#navigation, #tab-navigation {
    border-bottom-color: #3c78b5;
}

.ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a {
    color: #535353;
}
#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a {
    color: #003366;
}

#navigation .ajs-menu-bar .ajs-button a:hover,
/* .ajs-menu-bar li.ajs-menu-item.opened, */
.ajs-menu-bar .ajs-menu-item li.active a,
.ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li.active a,
#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li.active a {
    color: #ffffff;
    background-color: #6699cc;
}
#header .ajs-menu-bar li.ajs-menu-item.opened,
#header .ajs-menu-bar li.ajs-menu-item.opened a.trigger {
    background-color: #336699;
    border-color: #336699;
}
.ajs-menu-bar li.ajs-menu-item.opened a.trigger {
    background-color: #6699cc;
}

#header .ajs-drop-down {
    border-color: #003366;
}
#header .ajs-menu-bar .ajs-drop-down li.separator {
    border-top-color: #003366;
}

.tab-navigation .tab a {
    background-color: #3c78b5;
    border: 1px solid #3c78b5;
    color: #ffffff;
}
.tab-navigation .tab a:hover {
    color: #ffffff;
    background-color: #003366;
    border-bottom-color: #003366;
}



/***** Pre 2.8 markup styles for backwards compatability ******/
#foldertab {
    border-bottom-color: #3c78b5;
}

#foldertab li a {
    border-color: #3c78b5;
    background: #3c78b5;
}

#foldertab li a:link,
#foldertab li a:visited {
    color: #ffffff;
}
#foldertab li a:hover {
    color: #ffffff;
    background: #003366;
    border-color: #003366;
}

.logoSpaceLink,
.logoSpaceLink a:link,
.logoSpaceLink a:visited,
.logoSpaceLink a:active {
    color: #999999;
}

.logoSpaceLink a:hover {
    color: #003366;
}

.selectedminitab {
    border-color: #3c78b5
}

.unselectedminitab {
	border-color: #3c78b5;
	background: #3c78b5;
}

.tabletitle, .heading-text-color {
    color: #003366;
}

a.unselectedminitab:hover {
	color: #ffffff;
	background: #003366;
	border-color: #003366;
}

ol.autocompleter li.focused {
	background: #6699cc;
	color: #ffffff;
}

/* End colour styles for Confluence */

/*
    This stylesheet defines styles that only apply to the Default theme. Styles common to all themes should go in
    master.css
*/

body {
    /* Page-level left and right padding. Internal content that needs to be full-width should use 'margin: 0 -10px'. */
    margin: 0;
    border-left: solid #fff 10px;
    border-right: solid #fff 10px;
    font-family: Helvetica, Arial, sans-serif;
    position: relative;
}

#header {
    margin: 0 -10px;
    padding: 0 10px;
    /*overflow: auto;*/
}

.email{
    /* offset the negative margin set by the header for emails only */
    margin: 10px;
}

#user-control-panel, #page-view-panel {
    float: right;
}

#com-atlassian-confluence h1 img {
    max-height: 2.5em; /* scale logo image with font size */
}
#com-atlassian-confluence h1 img.custom {
    height: auto;
}

h1 span.title-text {
    display: table; /* page title wrapping drops straight down */
}
h1 a:hover {
    color: #369;
}
.editable-title {
    margin: 0 10px 0 58px;
}

#main {
    border-top: solid #fff 10px;
    border-bottom: solid #fff 10px;
}

#content {
    clear: left;
}
#content.space {
    margin-top: 10px;
}

#quick-search-submit {
    display: none;
}

#user-control-panel {
    display: none;   
}

#user-control-panel li {
    border-left: solid 1px;
}

#user-control-panel li.first {
    border: none;
}

#user-control-panel li, #page-view-panel li, #page-prefs-list li {
    color: #666;
    float: left;
    font-size: .9em;
    margin: 0 0 0 .3em;
    padding: 0 0 0 .3em;
}

#user-control-panel a {
    color: #666;
}

#navigation {
    display: inline;
}

.page-actions {
    float: right;
    border: solid 1px #ccc;
    padding: 5px;
    margin-left: 10px;
}

.remove-control {
    display: none;
}

.page-metadata {
    color: #666;
    font-size: 0.9em;
    margin: 10px 0;
}
.page-metadata a:link,
.page-metadata a:active,
.page-metadata a:hover,
.page-metadata a:visited {
    color: #666;
    font-style: normal;
}

.section-header {
    margin-bottom: 5px;
    padding: 2px 0;    
}

/* All links are set to action.linkColor but section header links are grey */
.section-header a:link,
.section-header a:active,
.section-header a:hover,
.section-header a:visited {
    color: #666;
}

h2.section-title,
.pageSectionTitle {
    font-size: 12pt;
    font-weight: bold;
    color: black;
    margin-top: 20px;
    padding: 0;
    display: inline;
}

.section-title a:link,
.section-title a:active,
.section-title a:hover,
.section-title a:visited,
a.pageSectionTitle:link,
a.pageSectionTitle:active,
a.pageSectionTitle:hover,
a.pageSectionTitle:visited {
    color: black;
}

#sidebar {
    clear: right;
    float: right;
    width: 16em;
    margin-left: 10px;
}

#content.space,
#content.edit form.markup {
    margin-right: 17em;
}
.sidebar-content {
    margin: 10px 0 0 1em;
}
.blogcalendar {
    width: 15em;
}
.blogcalendar th a.calendarhead,
.blogcalendar th.calendarhead {
    font-size: 1em;
}
.blogcalendar td,
.blogcalendar th {
    font-size: .85em;
}

/* folder tab link styles */
.tabnav .tabs a {
    padding: 5px 5px 4px;
    margin: 5px 3px 0 0;
    border-width: 1px;
    border-style: solid;
    border-bottom: none;
    text-decoration: none;
    display: block;
    float: left;
}

.tabnav .tabs a.current {
    background: white;
    border-bottom: 1px solid white;
    color: black;
}
.tabnav .tabs a.current:link, .tabnav .tabs a.current:visited {
    color: black;
}
.tabnav .tabs a.current:hover {
    background: white;
    border-bottom: 1px solid white;
    color: black;
}

/* list page navigational tabs */
.tabnav, .comment .tabnav {
    padding: 0;
    margin: 0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    float: left;
    display: inline;
    list-style-position: outside;
    width: 100%;
    font-weight: bold;
    font-size: 10pt;
}

.after-tabnav {
    clear: both;
}

.tabnav li.tabs {
    list-style: none;
    margin: 0 0 -1px 10px;
    float: left;
    display: block;
}


/* dashboard customization */
#spacesLabel {
    padding: 4px 6px;
    float: left;
    margin-top: 5px;
}

#footer #poweredby {
    font-size: 0.9em;
    margin: 0 -10px;
}




