/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/* ----------------------------------------------------- */
/* This CSS file is used for the Flat Grey visual theme. */
/* ----------------------------------------------------- */

/* This theme uses a scalable, floating layout - so most
   sizes are expressed in EMs. PX sizes are used only for
   drop shadows and positioning around graphic images. */

/* -------------------------------------- */
/*      Resets/Browser Normalization      */
/* -------------------------------------- */

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    border: 0;
    margin: 0;
    outline: 0;
    padding: 0;
    font-size: 100%;
    background: transparent;
    vertical-align: baseline;
}

blockquote, body, div, dl, dt, dd, fieldset, form, h1, h2, h3, h4, h5, h6,
img, input, li, ol, p, select, span, td, textarea, th, ul {
    border-style: none;
    margin: 0;
    padding: 0;
}

a, address, body, caption, cite, code, dfn, em, strong, th, var {
    font-style: normal;
    font-weight: normal;
    text-decoration: none;
}

body, caption, th {
    text-align: left;
}

ol, ul {
    list-style: none;
}

ol.numbers {
    list-style: decimal;
    padding-left: 20px;
}

ul.dots {
    list-style: circle;
    padding-left: 20px;
}

/* ------------------------------ */
/*      Basic Element Styles      */
/* ------------------------------ */

a, a:visited {
    color: #333;
    font-weight: bold;
}

a:hover, a:active {
    text-decoration: underline;
}

.disabled {
    color: #333366;
    text-decoration: none;
}

body, textarea, input, select {
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

html {
    background-image: url(images/tile.gif);
}

body {
    font-size: 62.5%;
    position: relative;
    color: #000;
    min-width: 780px;
    margin: 0;
    width: expression(document.body.clientWidth < 782? "780px" : "auto");
}

hr {
    background-color: #ccc;
    color: #ccc;
    border-bottom: #fafafa 0.1em solid;
    border-right: #fafafa 0.2em solid;
    border-left: #d9d9d9 0.2em solid;
    border-top: #d9d9d9 0.1em solid;
    margin: 0.5em 0 0.5em 0;
}

h1, .h1 {
    font-size: 1.6em;
    font-weight: bold;
}

h2, .h2 {
    font-size: 1.3em;
    font-weight: bold;
}

h3, .h3 {
    font-size: 1.1em;
    font-weight: bold;
}

/* IE7 fix */
table {
    font-size: 1em;
}

/* IE7 fix */
table input {
    border: #999999 solid 0.1em;
}

textarea {
    background-color: #ffffff;
    border: #999999 solid 0.1em;
    font-size: 1.1em;
}

th, th a {
    color: #000000;
    font-weight: bold;
}

/* -------------------------- */
/*     Float Clear/Reset      */
/* -------------------------- */

.clear {
    clear: both;
    height: 0;
    visibility: hidden;
}

.no-clear .clear {
    /* Used in container elements to override
     the clear class in contained elements. */
    clear: none;
}

/* ------------------------------- */
/*      Single Element Styles      */
/* ------------------------------- */

.alert {
    /* Used for alert text */
    color: #ff0000;
}

.content-messages p {
    margin: 0.5em 0 0.5em 0;
}

.hidden {
    height: 0;
    visibility: hidden;
}

.label {
    /* Used for <input> element labels */
    font-weight: bold;
    height: 1.2em; /* Same as <input> height */
    padding-right: 1.1em;
    text-align: right;
    white-space: nowrap;
    width: 1%;
    vertical-align: middle;
}

.required, input.required {
    /* required style for <input> elements */
    background-color: #ffffdd;
}

.tooltip {
    color: #557996;
    font-style: italic;
    margin: 0.4em;
}

.visible {
    height: auto;
    visibility: visible;
}

.page-container {
    /*background: url("images/big-fade.png") repeat-x 0 90px transparent;*/
}

.align-float {
    float: right;
}

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

.align-top {
    vertical-align: top;
}

.centered {
    text-align: center;
}

.page-title {
    color: #557996;
    margin-bottom: 0.5em;
    font-size: 1.6em;
    font-weight: bold;
}

.contentarea {
}

/* ------------------------ */
/*      Masthead Style      */
/* ------------------------ */

#masthead {
    background: #47637c url(images/masthead.gif) top left repeat-x;
    color: #ccc;
    font-size: 1em;
    font-weight: normal;
    min-height: 26px; /* Setting must be in px */
    height: auto;
    overflow: auto;
}

#masthead ul li {
    float: left;
    padding: 0.5em 0.8em 0.5em 0;
}

#masthead ul li a {
    color: #ccc;
    font-weight: normal;
}

.last-system-msg {
    color: #FFFFFF;
    font-size: 0.9em;
    padding-left: 10px;
}

.preference-area {
    float: right !important;
}

#masthead ul .logo-area {
    padding: 0.1em 0.8em;
}

#masthead ul .org-logo-area {
    padding: 0.1em 0.8em;
}

#masthead ul .org-logo-area img {
    width: auto;
    height: 22px;
}

#masthead ul a:focus {
    text-decoration: underline;
}

/* ---------------------- */
/*      Footer Style      */
/* ---------------------- */

#footer {
    background: #333;
    border-top: 0.1em inset #000;
    padding: 0.5em 0 0.5em 0.5em;
}

#footer a {
    color: #ccc;
    font-weight: normal;
}

#footer ul {
    float: left;
    display: inline
}

#footer ul li {
    border-left: 0.1em solid #444;
    border-right: 0.1em solid #222;
    float: left;
    display: inline;
    color: #ccc;
    font-weight: normal;
    padding: 0.5em;
}

#footer ul .first {
    border-left: none;
}

#footer ul .last {
    border-right: none;
}

#footer ul li a {
    color: #ccc;
    font-weight: normal;
}

#footer p {
    clear: left;
    color: #ccc;
    font-weight: normal;
    padding: 0.5em;
}

#footer a:focus {
    text-decoration: underline;
}

.footerTextColour {
    color: #b3b3b3;
}

/* ------------------------------- */
/*      Main Navigation Style      */
/* ------------------------------- */

#main-navigation {
    clear: both;
    background: #436783 url(images/main-nav.gif) top left repeat-x;
    color: #fff;
    font-size: 1em;
    height: 5.2em;
    overflow: auto;
    border-bottom: 0.2em solid #47637c;
    padding: 0.5em 0 0.1em 0;
}

#main-navigation ul li {
    float: left;
    display: inline;
    height: 4.85em;
    padding: 0 1em 0 0.5em;
    border-left: 0.1em solid #5c809c;
    border-right: 0.1em solid #3e5a71;
}

#main-navigation ul .disabled {
    color: #D4D0C8;
}

#main-navigation ul .first {
    border-left: none;
}

#main-navigation ul .last {
    border-right: none;
}

#main-navigation ul a {
    color: #fff;
    display: block;
    padding: 0 0.6em 0 0.6em;
    font-size: 0.9em;
    font-weight: normal;
    text-transform: uppercase;
    /* Uncomment next line for main-nav drop shadows */
    /*text-shadow: 0px 1px 1px #22323f;*/
}

#main-navigation ul a:hover,
#main-navigation ul .selected {
    color: #F9924B;
    text-decoration: none;
}

#main-navigation ul a:focus {
    text-decoration: underline;
}

/* -------------------------------------- */
/*      Application Navigation Style      */
/* -------------------------------------- */

#app-navigation {
    background: url(images/gray-texture.jpg) top left;
    border-top: 0.1em solid #3E5A71;
    border-bottom: 0.1em solid #fff;
    height: 1%; /* IE fix */
    margin: 0;
    padding: 0.5em;
}

#app-navigation h1,
#app-navigation h2,
#app-navigation h3 {
    color: #959595;
    margin: 0.4em 0 0.4em 0;
    text-transform: uppercase;
    text-shadow: 1px 1px 0 #fff; /* Setting must be in px */
}

#app-navigation ul {
    display: inline; /* IE Fix */
}

#app-navigation ul li ul li {
    background-color: #fff;
    border-top: 0.1em solid #ccc;
    border-right: 0.1em solid #ddd;
    border-bottom: 0.1em solid #ddd;
    border-left: 0.1em solid #ccc;
    padding: 0.5em;
    float: left;
    display: inline;
    margin: 0.1em 0.3em 0.1em 0;
}

#app-navigation ul .disabled {
    color: #D4D0C8;
}

#app-navigation ul a {
    color: #444;
    display: block;
    font-weight: normal;
    padding: 0.1em 0.3em 0.1em 0.3em;
}

#app-navigation ul .selected,
#app-navigation ul .selected {
    background-color: #f5f5f5;
    border: 0.1em solid;
    border-color: #aaa #f9f9f9 #f9f9f9 #aaa;
    color: #ffffff;
}

#app-navigation ul .selected a {
    color: #111;
    padding: 0.1em 0.3em 0 0.3em;
}

#app-navigation ul a:hover {
    text-decoration: none;
    color: #111;
}

#app-navigation ul a:focus {
    text-decoration: underline;
}

/* ------------------------- */
/*      Screenlet Style      */
/* ------------------------- */

.screenlet {
    background-color: #FFFFFF;
    border-right: 0.1em solid #ccc;
    border-bottom: 0.2em solid #ccc;
    border-left: 0.1em solid #ccc;
    height: auto !important;
    height: 1%;
    margin-bottom: 1em;
    overflow: auto;
}

.screenlet-body {
    background-color: #FFFFFF;
    height: auto !important;
    height: 1%;
    padding: 0.4em;
}

.screenlet-body div {
    margin: 0.8em 0.1em
}

/* Special Screenlet style for locale and timezone window */
.lists.screenlet {
    margin-left: 25%;
    margin-right: 25%;
    margin-top: 1em;
}

.lists.screenlet .basic-table tr td {
    text-align: center;
}

.lists.screenlet .basic-table tr td a {
    display: block;
}

/* No padding screenlet decorator */
.no-padding {
    padding: 0;
    border: none;
}

.no-padding .h1,
.no-padding .h2,
.no-padding .h3,
.no-paddingr h1,
.no-padding h2,
.no-padding h3 {
    padding: 0.7em;
}

/* ----------------------------------- */
/*      Screenlet Title Bar Style      */
/* ----------------------------------- */

.screenlet-title-bar {
    background: url(images/bhead.gif) top left repeat-x;
    color: #ffffff;
    height: 1%; /* IE fix */
    min-height: 1.5em;
    padding: 0.8em 0.2em;
}

.screenlet-title-bar .h1,
.screenlet-title-bar .h2,
.screenlet-title-bar .h3,
.screenlet-title-bar h1,
.screenlet-title-bar h2,
.screenlet-title-bar h3 {
    background: none;
    color: #333;
    text-shadow: 1px 1px 0 #fff; /* Setting must be in px */
}

.screenlet-title-bar ul {
    display: inline; /* IE Fix */
}

.screenlet-title-bar ul li {
    background: none;
    border-left: 0.1em solid #dedede;
    color: #222;
    float: right;
    font-size: 1em;
    font-weight: bold;
    padding: 0.1em 0.5em 0.2em 0.5em;
}

.screenlet-title-bar ul .h1,
.screenlet-title-bar ul .h2,
.screenlet-title-bar ul .h3 {
    border-left: none;
    float: left;
}

.screenlet-title-bar h1,
.screenlet-title-bar .h1 {
    font-size: 1.6em;
}

.screenlet-title-bar h2,
.screenlet-title-bar .h2 {
    font-size: 1.3em;
}

.screenlet-title-bar h3,
.screenlet-title-bar .h3 {
    font-size: 1.1em;
}

.screenlet-title-bar .h3 a {
    color: #222;
    display: inline;
}

.screenlet-title-bar ul a {
    color: #222;
    display: block;
}

.screenlet-title-bar ul a:visited {
    color: #222;
}

.screenlet-title-bar ul a:hover {
    color: #777777;
    text-decoration: none;
}

.screenlet-title-bar ul .disabled {
    color: #CCCCCC;
}

.screenlet-title-bar ul .collapsed,
.screenlet-title-bar ul .collapsed:hover {
    background: url(/images/expand.gif) no-repeat center center;
    min-height: 1.1em;
    min-width: 1.1em;
}

.screenlet-title-bar ul .expanded,
.screenlet-title-bar ul .expanded:hover {
    background: url(/images/collapse.gif) no-repeat center center;
    min-height: 1.1em;
    min-width: 1.1em;
}

.screenlet-title-bar ul .collapsed a,
.screenlet-title-bar ul .expanded a {
    /* IE fix */
    cursor: default;
}

/* login screenlet decorator */
.login-screenlet {
    min-width: 25em;
    width: 25%;
}

.login-screenlet .screenlet-title-bar {
    text-align: center;
}

/* ------------------------------------------------ */
/*      Basic Navigation (Vertical Menu) Style      */
/* ------------------------------------------------ */

.basic-nav {
    /* indent menu - helpful for widgets */
    padding-left: 1em;
}

.basic-nav ul a {
    color: #333;
    font-size: 1.1em;
}

.basic-nav ul .selected,
.basic-nav ul .selected a {
    color: #0000ff;
}

.basic-nav ul a:hover {
    color: #0000ff;
}

.basic-nav ul .disabled,
.basic-nav ul .disabled a {
    color: #D4D0C8;
}

/* ------------------------------------- */
/*      Button Bar Navigation Style      */
/* ------------------------------------- */

.button-bar {
    margin-bottom: 1.0em;
    width: 100%;
}

.button-bar ul {
    display: inline; /* IE Fix */
}

.button-bar form,
.button-bar ul li ul li {
    float: left;
    font-weight: bold;
    margin-right: 0.5em;
}

.button-bar ul .opposed {
    float: right;
}

.button-bar ul a {
    display: block;
}

.button-bar .opposed,
.button-bar .opposed li,
.button-bar ul .opposed {
    float: right;
}

/* ------------------------------- */
/*      Button Bar Decorators      */
/* ------------------------------- */

.button-style-1 {
    display: table;
}

.button-style-1 ul li ul li {
    margin-right: 0.5em;
    margin-bottom: 0.5em;
}

.button-style-2 {
    display: table;
}

.button-style-2 ul li ul li {
    margin-right: 0.5em;
    margin-bottom: 0.5em;
}

.button-style-2 {
    display: table;
}

/* ===== In line bar ===== */
.in-line-bar ul {
    display: inline; /* IE Fix */
}

.in-line-bar ul li {
    float: left;
    padding: 0 0.5em;
}

.tool-bar {
    padding: 0.2em;
}

.tool-bar ul li {
    padding: 0.1em;
}

.tab-bar {
    display: table;
    margin: 0.5em 0.5em 0 0.5em;
}

.tab-bar ul li ul li {
    margin-right: 0.5em;
    margin-bottom: 0.5em;
    background: #fff;
    border-top: 0.1em solid #ccc;
    border-right: 0.2em solid #ccc;
    border-bottom: 0.2em solid #ccc;
    border-left: 0.1em solid #ccc;
    padding: 0.5em;
    white-space: nowrap;
}

.tab-bar ul a,
.tab-bar ul a:visited {
    color: #666;
}

.tab-bar ul a:hover,
.tab-bar ul .selected,
.tab-bar ul .selected a,
.tab-bar ul .selected a:hover {
    color: #333;
    text-decoration: none;
}

.tab-bar ul a:focus {
    text-decoration: underline;
}

.tab-bar ul .disabled {
    color: #ccc;
}

/* ---------------------- */
/*      Table Styles      */
/* ---------------------- */

.basic-table {
    background-color: #ffffff;
    color: #000000;
    margin-bottom: 1em;
    width: 100%;
}

form table,
form .basic-table,
.screenlet-body .basic-table {
    background: transparent;
    margin-bottom: 0;
}

.basic-table tr td {
    /* Style for all cells */
    padding: 0.8em 0.1em;
    vertical-align: middle;
}

.basic-table tr .align-bottom {
    vertical-align: bottom;
}

.basic-table tr .align-top {
    vertical-align: top;
}

.basic-table tr .label,
.basic-table tr .group-label {
    /* field labels for forms */
    font-weight: bold;
    text-align: right;
    padding-right: 1.5em;
    white-space: nowrap;
    width: 1%;
}

.basic-table tr .group-label {
    /* "header" for field label groups */
    font-size: 1.2em;
    padding: 2em 1.5em 0 0;
}

.basic-table tr th,
.basic-table .header-row {
    font-weight: bold;
    text-align: left;
}

.basic-table .header-row td {
    border-bottom: 0.1em solid #000000;
}

.basic-table .header-row td a {
    color: #000000;
}

.basic-table .alternate-row {
    /* Alternating row style */
    background-color: #eeeeee;
}

.basic-table .selected {
    background: #FFFCCF;
}

.basic-table .alternate-rowSelected {
    background: #FFF55F;
}

.basic-table .Validate {
    /*Style use by alt-row-style on list*/
    background: #A0D5F7;
}

.basic-table .alternate-rowValidate {
    /*Style use by alt-row-style on list*/
    background: #72A8F2;
}

.basic-table .Warn {
    /*Style use by alt-row-style on list*/
    background: #f55C5C;
}

.basic-table .alternate-rowWarn {
    /*Style use by alt-row-style on list*/
    background: #FC7455;
}

.basic-table tr .button-col {
    /* button column style - for the small
    collection of buttons used in lists */
    vertical-align: top;
    padding: 0.3em;
}

.basic-table tr .button-col a,
.basic-table tr .button-col button,
.basic-table tr .button-col input[type="reset"],
.basic-table tr .button-col input[type="submit"],
.basic-table tr .button-col input[type="button"] {
    -webkit-appearance: none;
    -moz-border-radius: 1em;
    -webkit-border-radius: 1em;
    border-radius: 1em;
    background: #ddd url(images/button.png) repeat-x;
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(1, #ddd));
    background: -moz-linear-gradient(top center, #fff 0%, #ddd 100%);
    border: 0.1em solid;
    border-color: #ddd #bbb #999;
    cursor: pointer;
    color: #333;
    display: inline-block;
    font-size: 0.9em;
    font-weight: bold;
    outline: 0;
    overflow: visible;
    padding: 0.1em 0.5em 0.2em 0.5em;
    text-decoration: none;
    text-shadow: #fff 0 1px 1px; /* Setting must be in px */
    /*text-transform:uppercase;*/
    width: auto;
}

.basic-table .collapsed {
    visibility: collapse;
}

/*      Alternate table header style      */
.basic-table .header-row-2 th,
.basic-table .header-row-2 td {
    background-color: #999;
    border-bottom: 0;
    border-left: 0.1em solid #aaa;
    border-right: 0.1em solid #888;
    color: #ffffff;
    font-weight: bold;
}

/*      Sort field style      */
.basic-table .header-row-2 th .sort-order-asc,
.basic-table .header-row-2 td .sort-order-asc {
    background: url(/images/arrow-gr-up.png) no-repeat right;
    padding-left: 0.5em;
    padding-right: 20px; /* Setting must be in px */
}

.basic-table .header-row-2 th .sort-order-desc,
.basic-table .header-row-2 td .sort-order-desc {
    background: url(/images/arrow-gr-dw.png) no-repeat right;
    padding-left: 0.5em;
    padding-right: 20px; /* Setting must be in px */
}

.basic-table .header-row-2 th .sort-order,
.basic-table .header-row-2 td .sort-order {
    background: url(/images/arrow-gr.png) no-repeat right;
    padding-left: 0.5em;
    padding-right: 20px; /* Setting must be in px */
    color: #fff
}

/* ------------------------------------- */
/*      Table decorator - Hover bar      */
/* ------------------------------------- */

.hover-bar tr:hover {
    background-color: #cccccc;
    cursor: default;
}

.hover-bar .header-row-1:hover,
.hover-bar tr th:hover {
    background-color: #ffffff;
    color: #000000;
}

/* -------------------------------- */
/*      Table decorator - Grid      */
/* -------------------------------- */

.dark-grid {
    border-right: 0.1em solid #000000;
    border-top: 0.1em solid #000000;
}

.dark-grid td,
.dark-grid .header-row-2 th,
.dark-grid .header-row-2 td {
    border-bottom: 0.1em solid #000000;
    border-left: 0.1em solid #000000;
}

.light-grid {
    border-right: 0.1em solid #cccccc;
    border-top: 0.1em solid #cccccc;
}

.light-grid td,
.light-grid .header-row td {
    border-bottom: 0.1em solid #cccccc;
    border-left: 0.1em solid #cccccc;
}

/* ------------------------------------ */
/*      Table decorator - Calendar      */
/* ------------------------------------ */

.calendar {
    border-right: 0.1em solid #cccccc;
}

.calendar tr td {
    border-bottom: 0.1em solid #cccccc;
    border-left: 0.1em solid #cccccc;
    vertical-align: top;
    padding: 0.5em;
}

.calendar .header-row td {
    background-color: #47637c;
    border-bottom: 0.1em solid #cccccc;
    border-left: 0.1em solid #cccccc;
    color: #ffffff;
    height: auto;
    text-align: center;
}

.calendar tr td .add-new {
    float: right;
}

.calendar tr td .h1 {
    color: #333;
    float: left;
}

.calendar .current-period {
    background-color: #ffffcc;
}

.calendar .active-period {
    background-color: #eeeeee;
}

/*     ================== */
/*      Tree Styles      */
/*     ================== */

.basic-tree {
    /* placeholder */
}

.basic-tree ul {
    padding-left: 1em;
}

.basic-tree li {
    padding-left: 1em;
    white-space: nowrap;
}

.basic-tree li .expanded {
    background: url(/images/collapse.gif) no-repeat left center;
    padding-right: 1em;
}

.basic-tree li .collapsed {
    background: url(/images/expand.gif) no-repeat left center;
    padding-right: 1em;
}

.basic-tree li .leafnode {
    background: url(/images/expand-collapse-placeholder.gif) no-repeat left center;
    padding-right: 1em;
}

.basic-tree li .treeitem {
    /* treeitem is deprecated */
    border-style: none;
    color: #333;
    font-size: 1em;
}

.basic-tree li a:hover {
    color: #0000ff;
}

/* --------------------- */
/*      Form Styles      */
/* --------------------- */

.basic-form {
    margin-bottom: 1em;
}

.basic-form table {
    width: 100%;
}

.basic-form table .header-row:hover {
    /*background-color: #ffffff;*/
    color: #000000;
}

.basic-form table tr td {
    padding: 0.1em;
}

.basic-form table tr .label,
.basic-form table tr .group-label {
    /* field labels for forms */
    font-weight: bold;
    text-align: right;
    padding-right: 1.5em;
    width: 1%;
}

.basic-form table tr .group-label {
    /* "header" for field label groups */
    font-size: 1.2em;
    padding: 2em 1.5em 0 0;
}

.basic-form table tr th,
.basic-form table .header-row {
    font-weight: bold;
    text-align: left;
}

.basic-form table .header-row:hover,
.basic-form table tr th:hover {
    /*background-color: #ffffff;*/
    color: #000000;
}

.basic-form table .header-row td {
    border-bottom: 0.1em solid #999999;
}

.basic-form table .alternate-row {
    /* Alternating row style */
    /*background-color: #eeeeee;*/
}

.basic-form table tr td .disabled {
    /*background-color: #cccccc;*/
    color: #333366;
    text-decoration: none;
}

/*      Form decorator - Form Widget      */

.form-widget table tr .label,
.form-widget-table tr .label {
    /* Added for backward compatibility */
    width: 20%;
}

.form-widget table,
.form-widget-table {
    width: auto;
}

.form-widget-table {
    margin-bottom: 1em;
}

.basic-form table.condensed-table {
    width: 0%;
}

/* ------------------------------- */
/*      List Navigation Style      */
/* ------------------------------- */

.nav-pager {
    background-color: #333;
    color: #ffffff;
    font-weight: bold;
    line-height: 3.5em;
    height: 3.5em;
    margin: 0.5em 0 0.5em 0;
}

.nav-pager ul {
    display: inline; /* IE Fix */
}

.nav-pager ul li {
    border-right: solid #222 0.1em;
    border-left: solid #444 0.1em;
    float: left;
    vertical-align: center;
}

.nav-pager ul li a {
    display: block;
}

.nav-pager ul a {
    color: #ffffff;
    padding: 0 1em 0 1em;
    text-decoration: none;
}

.nav-pager ul a:hover {
    background-color: #999;
}

.nav-pager ul .nav-pagesize,
.nav-pager ul .nav-page-select,
.nav-pager ul .nav-displaying {
    padding: 0 1em 0 1em;
}

.nav-pager ul .nav-first-disabled,
.nav-pager ul .nav-previous-disabled,
.nav-pager ul .nav-next-disabled,
.nav-pager ul .nav-last-disabled {
    color: #D4D0C8;
    padding: 0 1em 0 1em;
}

.nav-pager ul .nav-displaying {
    border-right: none;
}

/* ------------------------------- */
/*      Visual Embellishments      */
/* ------------------------------- */

.field-lookup a {
    background: url(/images/fieldlookup.gif) no-repeat 0 0;
    display: inline-block;
    vertical-align: top;
    margin-top: 0.3em;
    width: 16px; /* Setting must be in px */
    height: 16px; /* Setting must be in px */
}

/* --------------------------- */
/*      FieldGroup Styles      */
/* --------------------------- */

.fieldgroup-title-bar {
    border-top: 0.1em solid #DADADA;
    font-size: 1em;
    font-weight: bold;
    padding: 0.1em 0.5em 0.2em 0.5em;
}

.fieldgroup-title-bar ul .collapsed,
.fieldgroup-title-bar ul .collapsed:hover {
    background: url(/images/expand.gif) no-repeat left center;
    min-height: 1.1em;
    min-width: 1.1em;
}

.fieldgroup-title-bar ul .expanded,
.fieldgroup-title-bar ul .expanded:hover {
    background: url(/images/collapse.gif) no-repeat left center;
    min-height: 1.1em;
    min-width: 1.1em;
}

.fieldgroup-title-bar a {
    cursor: pointer;
    text-decoration: none;
    padding-left: 10px; /* Setting must be in px */
    color: #000000;
}

/* ----------------------------------------- */
/*      Portlet configuration screenlet      */
/* ----------------------------------------- */

.portlet-config {
    background-color: #D4D0C8;
    border: 0.2em solid #D4D0C8;
    margin-bottom: 0.5em;
}

.portlet-config-title-bar .title {
    color: #555555;
    font-size: 1.2em;
    float: left;
}

.portlet-config-title-bar ul {
    display: inline; /* IE Fix */
}

.portlet-config-title-bar ul li {
    float: right;
    font-size: 1em;
    font-weight: bold;
    padding: 0.1em 0.5em 0.2em 0.5em;
}

.portlet-config-title-bar ul li.move-up {
    background: url(/images/arrow-single-up-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.move-down {
    background: url(/images/arrow-single-down-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.move-left {
    background: url(/images/arrow-single-left-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.move-right {
    background: url(/images/arrow-single-right-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.move-top {
    background: url(/images/arrow-end-up-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.move-bottom {
    background: url(/images/arrow-end-down-green.png) no-repeat center center;
}

.portlet-config-title-bar ul li.remove {
    background: url(/images/mini-trash.png) no-repeat center center;
}

.portlet-config-title-bar ul li.edit {
    background: url(/images/mini-edit.png) no-repeat center center;
}

/* == Portal Manager Toolbar == */

#manage-portal-toolbar {
    background-color: #D4D0C8;
    margin-bottom: 0.5em;
}

#manage-portal-toolbar ul li {
    float: left;
    padding: 0.1em 0.5em 0.2em 0.5em;
}

#manage-portal-toolbar #config-on-off,
#manage-portal-toolbar #manage-portal-page,
#manage-portal-toolbar #add-column {
    float: right;
}

#manage-portal-toolbar #portal-page-name {
    font-size: 1.5em;
    font-weight: bold;
}

.manage-portal-column-toolbar #add-portlet,
.manage-portal-column-toolbar #delete-column,
.manage-portal-column-toolbar #column-width {
    float: right;

}

/*=================== For the quickadd page =================================*/

.quickaddall {
    float: right;
    padding-bottom: 1em;
    padding-top: 1em;
}

.quickaddtable {
    display: inline-block;
    clear: both;
}

.quickaddtable span {
    display: inline;
    float: left;
    border-right: 0.1em solid #999999;
    border-top: 0.1em solid #999999;
    margin: 0;
    padding: 0.3em;
}

.quickaddtable p {
    clear: left;
    height: 100% !important;
    height: 1em;
}

.quickaddtable span.pid {
    width: 10%;
}

.quickaddtable span.name {
    width: 50%;
    text-align: left;
}

.quickaddtable span.listPrice {
    width: 10%
}

.quickaddtable span.totalPrice {
    width: 10%
}

.quickaddtable span.qty {
    width: 10%
}

/* `Widths
----------------------------------------------------------------------------------------------------*/

.input_tiny {
    width: 50px;
}

.input_small {
    width: 100px;
}

.input_medium {
    width: 150px;
}

.input_large {
    width: 200px;
}

.input_xlarge {
    width: 250px;
}

.input_xxlarge {
    width: 300px;
}

.input_full {
    width: 100%;
}

/*
	Added via JS to <textarea> and class="input_full".
	Applies to IE6, IE7. Other browsers don't need it.
*/
.input_full_wrap {
    display: block;
    padding-right: 8px;
}

/* `UI Consistency
----------------------------------------------------------------------------------------------------*/

::-moz-focus-inner {
    border: 0;
}

input[type="search"]::-webkit-search-decoration {
    display: none;
}

input,
button,
select,
textarea {
    margin: 0;
    vertical-align: middle;
}

.button-bar li.buttontext a,
a.buttontext,
a.buttontextbig,
.smallSubmit,
.smallSubmit:hover,
.mediumSubmit,
.largeSubmit,
.loginButton,
.button-style-1 a,
.button-style-1 ul a,
.button-style-2 ul a,
.button-style-2 a,
.button,
button,
input[type="reset"],
input[type="submit"],
input[type="button"] {
    -webkit-appearance: none;
    -moz-border-radius: 1.1em;
    -webkit-border-radius: 1.1em;
    border-radius: 1.1em;
    background: #ddd url(images/button.png) repeat-x;
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(1, #ddd));
    background: -moz-linear-gradient(top center, #fff 0%, #ddd 100%);
    border: 0.1em solid;
    border-color: #ddd #bbb #999;
    cursor: pointer;
    color: #333;
    display: inline-block;
    font-size: 1em;
    font-weight: bold;
    outline: 0;
    overflow: visible;
    padding: 0.4em 1em 0.4em;
    text-decoration: none;
    text-shadow: #fff 0 1px 1px; /* Setting must be in px */
    /*text-transform:uppercase;*/
    width: auto;
}

a.disabled,
button[disabled],
input[type="reset"][disabled],
input[type="submit"][disabled],
input[type="button"][disabled] {
    color: #888;
    border-color: #ddd #ddd #ccc;
}

textarea,
select,
input[type="date"],
input[type="datetime"],
input[type="datetime-local"],
input[type="email"],
input[type="month"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="text"],
input[type="time"],
input[type="url"],
input[type="week"] {
    -webkit-appearance: none;
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    border-radius: 0;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    /*background-color: #fff;*/
    border: 0.1em solid;
    border-color: #848484 #c1c1c1 #e1e1e1;
    color: #000;
    outline: 0;
    padding: 0.2em 0.3em;

    height: 1.8em;
}

/*
	Separate rule for Firefox.
	Cannot stack with WebKit's.
*/
input.placeholder_text,
textarea.placeholder_text {
    color: #888;
}

::-webkit-input-placeholder {
    color: #888;
}

textarea[disabled],
select[disabled],
input[type="date"][disabled],
input[type="datetime"][disabled],
input[type="datetime-local"][disabled],
input[type="email"][disabled],
input[type="month"][disabled],
input[type="number"][disabled],
input[type="password"][disabled],
input[type="search"][disabled],
input[type="tel"][disabled],
input[type="text"][disabled],
input[type="time"][disabled],
input[type="url"][disabled],
input[type="week"][disabled] {
    background-color: #eee;
    color: #888;
}

.button-style-1 a:focus,
.button-style-1 ul a:focus,
.button-style-2 ul a:focus,
.button-style-2 a:focus,
.smallSubmit:focus,
button:focus,
button:active,
input:focus,
input:active,
select:focus,
select:active,
textarea:focus,
textarea:active {
    -moz-box-shadow: #5c809c 0 0 5px;
    -webkit-box-shadow: #5c809c 0 0 5px;
    box-shadow: #5c809c 0 0 5px;
    /* for Opera */
    z-index: 1;
}

.is_webkit select {
    /* Tweaks for Safari + Chrome. */
    background-image: url(images/select_arrow.gif);
    background-repeat: no-repeat;
    background-position: right center;
    padding-right: 20px;
}

textarea,
select[multiple] {
    height: auto;
}

select[multiple],
.is_webkit select[multiple] {
    background-image: none;
    padding: 0;
}

textarea {
    overflow: auto;
    resize: vertical;
    width: 100%;
}

optgroup {
    color: #000;
    font-style: normal;
    font-weight: normal;
}

/* `IE6
----------------------------------------------------------------------------------------------------*/

.ie6_button,
* html button {
    background: #ddd url(images/button.png) repeat-x;
    border: 0.1em solid;
    border-color: #ddd #bbb #999;
    cursor: pointer;
    color: #333;
    font: bold 1.2em Arial, sans-serif;
    padding: 0.2em 1em 0;
    overflow: visible;
    width: auto;
}

* html button {
    padding-top: 0.1em;
    padding-bottom: 0.1em;
}

.ie6_input,
* html textarea,
* html select {
    background: #fff;
    border: 0.1em solid;
    border-color: #848484 #c1c1c1 #e1e1e1;
    color: #000;
    padding: 0.2em 0.3em 0.1em;
    font-size: 1.3em;
    font-family: Arial, sans-serif;
    vertical-align: top;
}

* html select {
    margin-top: 0.1em;
}

.placeholder_text,
.ie6_input_disabled,
.ie6_button_disabled {
    color: #888;
}

.ie6_input_disabled {
    background: #eee;
}

/* ------------------------------- */
/*      Browse Category Style      */
/* ------------------------------- */

.browsecategorylist {
    margin-left: 1em;
}

.browsecategorytext {
    color: #333;
    font-weight: bold;
    padding-left: 10px; /* Setting must be in px */
    background: url(/images/bg_bullet_full_2.gif) no-repeat 0px 0.5em;
}

A.browsecategorybutton {
    color: #333;
}

.browsecategorybuttondisabled {
    color: #333333;
    font-weight: bold;
}

/* ----------------------------------- */
/*      Event/Error Message Style      */
/* ----------------------------------- */

.eventMessage, .errorMessage {
    background-color: #FFFFEE;
    border: solid #000000 0.1em;
    font-size: 1.1em;
    font-weight: bold;
    margin: 1em;
    padding: 1em;
}

.eventMessage {
    color: #333;
}

.errorMessage {
    color: #ff0000;
}

/* ------------------------ */
/*      Product Styles      */
/* ------------------------ */

.basePrice {
    color: #000000;
}

.normalPrice {
    color: #008000;
}

.salePrice {
    color: #ff0000;
}

.product-prevnext {
    text-align: right;
}

.productsummary-container {
    border-top: #999 solid 0.1em;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
}

.productsummary {
    border-bottom: #999 solid 0.1em;
    /* using min-height as an alternative to clear: both; because that, in some browsers, will clear the top-level columns and not just in this div (Mozilla based, namely) */
    min-height: 6em;
    overflow: visible;
    padding: 0.5em;
    position: relative;
}

.productsummary .smallimage {
    float: left;
    /* position: absolute; top: 5px; left: 5px; */
    margin: 0 0.5em 0.5em 0;
}

.productsummary .smallimage img {
    border: #CCC solid 0.1em;
    height: 5em;
}

.productsummary .productbuy {
    float: right;
    margin: 0.5em;
    text-align: right;
    width: 13em;
}

.productsummary .productinfo {
    /* margin-left: 60px; */
    text-align: left;
}

#productdetail #long-description {
    border-top: #999 solid 0.1em;
    margin-top: 1em;
    padding-top: 0.5em;
}

#productdetail #reviews {
    border-top: #999 solid 0.1em;
    margin-top: 1em;
    padding-top: 0.5em;
}

#productdetail #associated-products {
    border-top: #999 solid 0.1em;
    margin-top: 1em;
    padding-top: 0.5em;
}

.treeWrapper {
    background-color: #ffffff;
    border-top: 0.1em solid #000000;
    border-left: 0.1em solid #000000;
    color: #000000;
    font-size: 1.6em;
    font-weight: normal;
    margin-left: 1.2em;
    margin-top: 0.2em;
    text-decoration: none;
}

/* ------------------------- */
/*      HTML Log Styles      */
/* ------------------------- */

.DEBUG {
    color: #808080;
}

.WARN {
    color: #0000ff;
    font-weight: bold;
}

.INFO {
    color: #008000;
}

.ERROR {
    border: 0.2em solid #ff0000;
    color: #ff0000;
    font-weight: bold;
}

/* ---------------------------- */
/*     Multi-Column Styles      */
/* ---------------------------- */

#column-container {
    margin: auto;
    padding: 1em;
    position: relative;
}

#column-container h1,
#column-container .h1,
#column-container h2,
#column-container .h2 {
    margin-bottom: 0.5em;
}

#column-container h1,
#column-container .h1 {
    color: #557996;
}

#column-container .left {
    float: left;
    /* alt: position: absolute; top: 0px; left: 0px; */
    width: 22em;
    margin-right: 1em;
}

#column-container .left-larger {
    float: left;
    /* alt: position: absolute; top: 0px; left: 0px; */
    width: 25em;
    margin-right: 1em;
}

.lefthalf {
    float: left;
    height: 1%;
    left: 0;
    margin: 0% 1% 1% 0%;
    width: 49%;
}

.righthalf {
    float: right;
    height: 1%;
    margin: 0 0 1% 1%;
    right: 0;
    width: 49%;
}

#column-container .right {
    float: right;
    margin-left: 1em;
    width: 22em;
}

#column-container .leftonly {
    margin-left: 23em;
    width: auto;
}

#column-container .leftonly-larger {
    margin-left: 26em;
    width: auto;
}

#column-container .rightonly {
    margin-right: 23em;
    width: auto;
}

#column-container .center {
    margin-left: 23em;
    margin-right: 23em;
    width: auto;
}

#column-container .nocolumns {
    width: auto;
}

/* ------------------------------ */
/* Deprecated styles - DO NOT USE */
/* ------------------------------ */

.apptitle {
    background-color: #333;
    color: #FFFFFF;
    display: block;
    font-size: 1.3em;
    font-weight: bold;
    line-height: 2em;
    width: 100%;
}

.boxhead {
    color: #FFFFFF;
    font-size: 1.1em;
    font-weight: bold;
}

.boxlink {
    float: right;
}

DIV.boxtop {
    background-color: #333;
    border-color: #999999;
    border-style: solid;
    margin: 0 auto 0 auto;
    padding: 0.1em 0.4em 0.1em 0.4em;
    text-align: center;
}

DIV.boxhead-left {
    border: none;
    color: #FFFFFF;
    float: left;
    font-size: 1.1em;
    font-weight: bold;
    width: auto;
}

DIV.boxhead-fill {
    border: none;
    color: #FFFFFF;
    font-size: 1.1em;
    font-weight: bold;
    text-align: center;
    width: 0;
}

DIV.boxhead-right {
    border: none;
    color: #FFFFFF;
    float: right;
    font-size: 1.1em;
    font-weight: bold;
    width: auto;
}

A.boxheadbutton {
    color: #FFFFFF;
    font-size: 1.1em;
}

A.boxheadbutton:hover {
    color: #ff0000;
    text-decoration: none;
}

.boxoutside {
    background-color: #FFFFFF;
    border: 0.1em solid #999999;
}

.boxtop {
    background-color: #333;
    border: 0 solid #999999;
    padding: 0.1em 0.4em 0.1em 0.4em;
}

.boxbottom {
    background-color: #FFFFFF;
    border: 0 solid #999999;
    padding: 0.4em;
}

.webToolList h3 {
    margin: 0.75em 0 0.09em 0;
    text-transform: uppercase;
}

A.linktext {
    color: #333;
}

A.linktext:hover {
    color: #ff0000;
}

.buttontextdisabled {
    color: #333333;
}

.submenutextinfo {
    border-right: 0.1em solid #5886C6;
    color: #ffffff;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.5em;
    padding-right: 0.5em;
}

.submenutext, A.submenutext, A.submenutext:visited {
    border-right: 0.1em solid #5886C6;
    color: #ffff00;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.2em;
    padding-right: 0.5em;
}

A.submenutext:hover {
    color: #ffff00;
}

.submenutextdisabled, A.submenutextdisabled {
    border-right: 0.1em solid #5886C6;
    color: #CCCCCC;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.2em;
    padding-right: 0.5em;
}

A.submenutextdisabled:hover {
    color: #ffff00;
}

.submenutextinforight {
    color: #ffffff;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.2em;
}

.submenutextright, A.submenutextright {
    color: #ffff00;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.2em;
}

A.submenutextright:hover {
    color: #ffff00;
}

.submenutextrightdisabled, A.submenutextrightdisabled {
    color: #CCCCCC;
    font-size: 0.9em;
    font-weight: bold;
    padding-left: 0.2em;
}

A.submenutextrightdisabled:hover {
    color: #ffff00;
}

A.lightbuttontext {
    border: none;
    color: #222;
}

A.lightbuttontext:hover {
    color: #ccc;
}

A.lightbuttontextsmall {
    border: none;
    color: #222;
    font-size: 0.8em;
}

A.lightbuttontextsmall:hover {
    color: #ccc;
}

.lightbuttontextdisabled {
    color: #CCCCCC;
    font-weight: bold;
}

DIV.row {
    background-color: #B4B0AA;
    margin: 0 auto 0 auto;
    text-align: center;
}

DIV.col {
    border: none;
    float: left;
    width: auto;
}

DIV.col-fill {
    background-color: #B4B0AA;
    border: none;
    color: #333;
    font-weight: bold;
    text-align: center;
    width: 0;
}

DIV.col-right {
    border: none;
    float: right;
    width: auto;
}

.leftclear {
    clear: left;
    height: 1%;
}

DIV.endcolumns {
    /* deprecated - use .clear */
    clear: both;
}

DIV.simple-right-small {
    float: right;
    width: 2em;
    text-align: right;
}

DIV.simple-right-half {
    float: right;
    width: 50%;
    text-align: right;
}

.left-border {
    float: left;
    margin-right: 1em;
    width: 22em;
    border-right: 0.5em dotted #ccc;
    background-color: #eee;
    height: 100%;
}

DIV.widget-container {
    margin-bottom: 2em;
}

DIV.column-left-wide {
    background-color: #CCCCCC;
    border: #000000 solid 0.2em;
    float: left;
    overflow: auto;
    width: 30em;
}

img.cssImgXLarge {
    /*border: 1px black solid;*/
    max-width: 200px;
    max-height: 150px;
}

img.cssImgLarge {
    /*border: 1px black solid;*/
    max-width: 100px;
    max-height: 75px;
}

img.cssImgStandard {
    /*border: 1px black solid;*/
    max-width: 70px;
    max-height: 52px;
}

img.cssImgSmall {
    /*border: 1px black solid;*/
    max-width: 50px;
    max-height: 37px;
}

/* From http://jqueryui.com/demos/autocomplete/maxheight.html */
/* When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large */
.ui-autocomplete {
    max-height: 250px;
    overflow-y: auto;
    /* prevent horizontal scrollbar */
    overflow-x: hidden;
    /* add padding to account for vertical scrollbar */
    padding-right: 20px;
}

/* IE 6 doesn't support max-height
 * we use height instead, but this forces the menu to always be this tall
 */
* html .ui-autocomplete {
    height: 250px;
}

/* The custom CSS for adjust the JsTree */
.jstree-default .jstree-leaf > ins {
    background-position: -36px 0;
    vertical-align: top;
}

html > /**/ body .jstree-default a {
    white-space: normal !important;
    height: auto;
}

/* IE6 and below */
* html .jstree-default a {
    white-space: normal;
    height: auto;
}

/* IE7 */
* + html .jstree-default a {
    white-space: normal;
    height: auto;
}
