/*
 * 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(/flatgrey/images/tile.gif);
}

body {
    font-size: 62.5%;
    position: relative;
    color: #000;
    min-width: 780px;
    margin: 0;
    width: expression(document.body.clientWidth < 782px? "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;*/
}

/* ================================== */
/* ===== Used to align elements ===== */
/* ================================== */
.align-bottom {
    vertical-align: bottom;;
}
.align-center {
    text-align: center;
}
.align-justify {
    text-align: justify;
}
.align-left {
    text-align: left;
}
.align-middle {
    vertical-align: bottom;;
}
.align-right {
    text-align: right;
}
.align-text {
    text-align: right;
}
.align-top {
    vertical-align: top;
}
.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 .logo-area img {
    height: 60px;
    width: 129px;
}

#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 */
    cursor: pointer;
}

/* --------------------------- */
/*      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;
    cursor: pointer;
    padding-left: 10px;
}

.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;
    cursor: pointer;
    padding-left: 10px;
}

/* ----------------------------------------- */
/*      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;
}


/*The Custom css for SELECT 2*/
.select2-container--default .select2-selection--multiple{
    -webkit-border-radius: 0px;
    -moz-border-radius: 0px;
    border-radius: 0px;
    border-color: #848484 #c1c1c1 #e1e1e1;
    min-height: unset !important;
}
/* The custom CSS to show mouse pointer on links using featherlight plugin  */
a[data-featherlight] {
    cursor: pointer;
}