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

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

/* ------------------------------- */
/*      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 Title Bar Style      */
/* ----------------------------------- */

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

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

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

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

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

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

/*begin addon modification generic-portelet*/
.screenlet-title-bar-pager {
    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-pager .h1,
.screenlet-title-bar-pager .h2,
.screenlet-title-bar-pager .h3,
.screenlet-title-bar-pager h1,
.screenlet-title-bar-pager h2,
.screenlet-title-bar-pager h3 {
    background: none;
    color: #333;
    text-shadow: 1px 1px 0 #fff; /* Setting must be in px */
}

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

.screenlet-title-bar-pager ul li {
    color: #222;
    float: left;
    font-size: 1em;
    font-weight: bold;
    padding: 0.1em 0.5em 0.2em 0.5em;
}

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

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

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

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

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

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

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

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

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

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

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

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

.screenlet-title-bar-pager ul a:hover {
    background-color: #999;
}

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

.screenlet-title-bar-pager ul .nav-pagesize,
.screenlet-title-bar-pager ul .nav-page-select {
    position: relative;
    top: -5px;
}

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

.screenlet-title-bar-pager ul .nav-displaying {
    border-right: none;
    float: right;
}

/*end addon modification generic-portlet*/
