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

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

.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;
    
    /* IE7 */
    *padding-top: 0.2em;
    *padding-bottom: 0;
}

.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;
}

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

	/* IE7 */
	*padding-top: 0.2em;
	*padding-bottom: 0;
}

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

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;

	/* IE7 */
	*padding-top: 0.2em;
	*padding-bottom: 0.1em;
	*height: auto;
}

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