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

/******************************** 
 Global Reset
********************************/
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; 
    background:transparent; 
    vertical-align: baseline;
}

blockquote, q {
    quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
    content:''; 
    content: none;
}

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

a img {
    border: none;
}

ol, ul {
    list-style: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/******************************** 
 General Layout
********************************/ 
* {margin:0;padding:0;}

html, body, #wrap {height: 100%;}

body > #wrap {height: auto; min-height: 100%;}

body {
    font: 11px/ 165% "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #666666;
    margin: 0;
    padding: 0;
    background: url(/ofbiz/images/bg.png) top left repeat-x #b5b5b5;
    text-align: center;
}

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}

.clearfix {
    display: block;
}

.clearLeft {
    clear:left;
}

/******************************** 
 Typography
********************************/
a,a:active,a:link {
    text-decoration: none;
    color: #0066CC;
}

a:visited {
    text-decoration: none;
}

a:hover {
    color: #030d1c;
}

h1,h2,h3 {
    font-family: "Trebuchet MS", Tahoma, Arial, Sans-serif;
    color: #555;
}

h1 {
    font-family: "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    font-size: 350%;
    font-weight: normal;
    letter-spacing: -2px;
    padding: 15px 10px 5px 10px;
    margin: 0;
}

h2 {
    font-size: 200%;
    color: #895F30;
    padding: 20px 10px 5px 10px;
    margin: 0;
}

h3 {
    font-size: 170%;
    font-weight: normal;
    padding: 20px 10px 5px 10px;
    margin: 0;
}

h4 {
    font-size: 100%;
    font-weight: bolder;
    color: #000000;
    padding: 20px 10px 5px 10px;
    margin: 0;
}

strong {
    font-size: 100%;
    font-weight: bolder;
    color: #000000;
    padding: 20px 10px 5px 10px;
    margin: 0;
}

p{
    text-indent:20px;
}

p,dl {
    padding: 10px;
    margin: 0;
}

ul{
    margin: 10px 10px;
    padding: 0 0 0 10px;
}

ul {
    list-style: none;
}

ol {
    margin: 10px 30px;
    padding: 0;
}

dt {
    font-weight: bold;
    color: #b13f1a;
}

dd {
    padding-left: 25px;
}

/******************************** 
 Images
********************************/
img {
    border: none;
}

p img {
    background: #fafafa;
       border: 1px solid #dcdcdc;
    padding: 5px;
    margin:0 10px 0 0;
}

img.float-right {
    margin: 5px 0px 10px 10px;
}

img.float-left {
    margin: 5px 10px 10px 0px;
}

/******************************** 
 Code Snippets and Quotes
********************************/
code {
    margin: 5px 0;
    padding: 15px;
    text-align: left;
    display: block;
    overflow: auto;
    font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;
    /* white-space: pre; */
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
}

acronym {
    cursor: help;
    border-bottom: 1px dotted #895F30;
}

blockquote {
    margin: 15px 10px;
    padding: 10px 10px 10px 35px;
    border: 1px solid #ECF8FE;
    background: #ECF8FE url(/ofbiz/images/quote.jpg) no-repeat 10px 10px;
    font-weight: normal;
    font-size: 1.5em;
    line-height: 1.5em;
    font-style: italic;
    font-family: "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #976957;
}

/******************************** 
 Tables
********************************/
table {
    border-collapse: collapse;
    margin: 15px 10px;
}

th {
    background: #d14b1f url(/ofbiz/images/header-bg.jpg) repeat-x 0 -100px;
    height: 38px;
    padding-left: 12px;
    padding-right: 12px;
    color: #fff;
    text-align: left;
    border-left: 1px solid #d14b1f;
    border-bottom: solid 2px #fff;
}

tr {
    height: 34px;
}

td {
    padding-left: 11px;
    padding-right: 11px;
}

/******************************** 
 Forms
********************************/
input,select {
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    color: #666666;
    background: #fff;
}

textarea {
    width: 400px;
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    height: 100px;
    display: block;
    color: #666666;
}

input,textarea,select {
    background: #fff;
    border-width: 1px;
    border-style: solid;
    border-color: #D4D4D4 #ebebeb #ebebeb #d4d4d4;
}

input.button {
    font: bold 12px Arial, Sans-serif;
    height: 30px;
    margin: 0;
    padding: 2px 3px;
    color: #555;
    background: #E6E6E6;
    border-width: 1px;
    border-style: solid;
    border-color: #ebebeb #d4d4d4 #d4d4d4 #ebebeb;
}

/******************************** 
 Generic Classes
********************************/
.float-left {
    float: left;
}

.float-right {
    float: right;
}

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

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

.clearer {
    clear: both;
}

/******************************** 
 Page Layout
********************************/
#wrap{
    background: #fff url(/ofbiz/images/wrapper.jpg) top center no-repeat;
    width: 945px;
    margin: 0 auto;
    text-align:left;
}

#content-wrap  {
    width:945px;
    margin:0 auto;
    padding-bottom: 42px;
}

#content {
    width:500px;
    float:left;
    padding:30px 0 25px 0;
}

/******************************** 
 Footer
********************************/
#footer {
    background: url(/ofbiz/images/footer.jpg) bottom center no-repeat;
    position: relative;
    margin: -42px auto 0px auto;
    height: 42px;
    clear:both;
    font-size:11px;
    font-family:Verdana, Arial, sans-serif;
    width:945px;
}

#foot {
    text-align:left;
    position:relative;
    top:15px;
    left:30px;
}

/******************************** 
 Header
********************************/
#header {
    position: relative;
    width: 945px;
    height: 130px;
    padding: 0;
    margin: 0 auto;
    background: transparent;
}

#header #site-header{
    padding-top:35px;
    height: 42px;
    width: 405px;
    float: right;
    color: #000;
    text-align:right;
}
#header #site-header h2{
    height: 42px;
    width: 405px;
    float: right;
    color: #024164;
}

#header #logo {
    position: absolute;
    top: 15px;
    left: 30px;
    height: 42px;
    width: 405px;
}

#header #logo a,img {
    background: none;
    border: none;
}

#header #controls {
    position: absolute;
    top: 60px;
    right: 32px;
    height: 42px;
    color: #1b78d7;
    font-size: 12px;
    background: url(/ofbiz/images/house.gif) top right no-repeat;
    padding-right: 20px;
    text-align: right;
}

#header #controls a {
    position: relative;
    top: -2px;
}

#header #language {
    position: absolute;
    top: 10px;
    right: 32px;
    height: 42px;
    color: #797c7e;
    text-align: right;
}

/******************************** 
 Search
********************************/
#search {
    position:absolute;
    top:88px;
    right:30px;
    background:url(/ofbiz/images/search.gif) center left no-repeat;
    padding-left:20px;
}

.hintText {
      display: none;
}

.fieldWithHint {
      color: #001f2f;
}

/******************************** 
 Top Navigation
********************************/
#nav {
    position: absolute;
    clear: both;
    margin: 0;
    padding: 0;
    height: 34px;
    left: 30px;
    top: 82px;
    z-index: 99999;
}

#nav ul {
    float: left;
    list-style: none;
    width: 600px;
    height: 34px;
    text-transform: uppercase;
    margin: 0;
    padding: 0;
    display: inline;
}

#nav ul li {
    display: inline;
    margin: 0;
    padding: 0;
}

#nav ul li a {
    float: left;
    margin: 0 5px 0 0;
    padding: 0px 20px 0px 20px;
    font: bold 12px/ 34px "Trebuchet MS", Helvetica, Arial, Geneva, sans-serif;
    text-transform: lowercase;
    text-decoration: none;
    letter-spacing: -0.3px;
    color: #fff;
}

#nav ul li a:hover,#nav ul li a:active {
    color: #111;
    background-image: url(/ofbiz/images/header_hot.jpg);
    border: none;
}

#nav ul li#current a {
    color: #333333;
    background-image: url(/ofbiz/images/header_hot.jpg);
}

/******************************** 
 Content Sections
********************************/
#main {
    float: left;
    width: 560px;
    padding: 0;
    margin: 0 0 0 20px;
    display: inline;
}

#main h2 {
    padding-bottom: 3px;
    margin-top: 15px;
    font: normal 2.5em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #333;
    letter-spacing: -2px;
    text-transform: none;
    border-bottom: 1px solid #ebebeb;
}

#main h2 a {
    color: #333;
    text-decoration: none;
    background: none;
    border: none;
}

#main ul li {
    list-style-image: url(/ofbiz/images/bullet.gif);
}

#col1 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 20px 0 0 20px;
    display: inline;
}

#col2 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 20px 0 0 20px;
    display: inline;
}

#col1 h2, #col2 h2 {
    padding-bottom: 3px;
    margin-top: 15px;
    font: normal 3.5em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #666;
    letter-spacing: -2px;
    text-transform: none;
    border-bottom: 1px solid #ebebeb;
}

#main #col1 h2, #main #col2 h2 {
    border-bottom: 1px solid #ebebeb;
    color:#304C70;
    padding-bottom: 3px;
    letter-spacing: -3px;
    text-transform: none;
    font-size:30px;
}

.feature {
    margin:0px;
    padding:0px;
    height:435px;
}

.screen {
    margin:10px 0 5px 0;
    padding:0px;
    background:#fff;
    border:1px solid #eee;
    width:255px;
    height:200px;
    overflow:hidden;
}

#main .hero {
    margin:10px 0 5px 0;
    padding:0px;
    background:#fff;
    border:1px solid #eee;
    width:555px;
}

#main .highlights {
    float:right;
    width:240px;
    background:#dfe9ef;
    border:1px solid #eee;
    margin:0px 10px 0px 5px;
    display:inline;
}

#main .form {
    width:240px;
    margin:0px 10px 0px 5px;
    display:inline;
}

#main .highlights ul li {
    list-style-image: url(/ofbiz/images/highlight-bullet.gif);
}

#main .highlights h4 {
    padding:5px 5px 0 5px;
}

#sidebar {
    float: right;
    width: 300px;
    padding: 0;
    margin: 15px 20px 0 0;
    display: inline;
}

#sidebar h3 {
    margin-top: 10px;
    padding: 15px 5px 3px 5px;
    font: normal 2em 'trebuchet MS', Tahoma, Helvetica, Arial, sans-serif;
    color: #666666;
    letter-spacing: -.5px;
}

#sidebar h4 {
    margin-top: 10px;
    padding: 15px 5px 3px 5px;
    font: normal 2em 'trebuchet MS', Tahoma, Helvetica, Arial, sans-serif;
    color: #000000;
    letter-spacing: -.5px;
}

#sidebar ul.sidemenu {
    text-align: left;
    margin: 0px 5px 8px 0px;
    padding: 5px 0 0 0;
    text-decoration: none;
    background: url(/ofbiz/images/dots.gif) repeat-x left top;
}

#sidebar ul.sidemenu li {
    list-style: none;
    background: url(dots.gif) repeat-x left bottom;
    padding: 4px 10px;
    margin: 0;
}

* html body #sidebar ul.sidemenu li {
    height: 1%;
}

#sidebar ul.sidemenu li a {
    text-decoration: none;
    background-image: none;
    background-color: transparent;
    border: none;
    color: #304c70;
    font-weight: bold;
    font-family: "Trebuchet MS", Tahoma, Helvetica, Arial, Sans-serif;
    font-size: 14px;
    /* letter-spacing: .5px;  */
}

#sidebar ul.sidemenu li a span {
    color: #989898;
    font-family: Georgia, "Times New Roman", Times, serif;
    font-style: italic;
    font-weight: normal;
    font-size: .8em;
}

#sidebar ul.sidemenu li a:hover {
    color: #555;
}

#sidebar ul.sidemenu ul {
    margin: 0 0 0 5px;
    padding: 0;
}

#sidebar ul.sidemenu ul li {
    background: none;
}

#sidebar .indentfirst {
    margin-left:0px;
}

#sidebar .indentsecond {
    margin-left:20px;
}

/******************************** 
 Content Styles
********************************/
.postmeta {
    padding: 5px;
    margin: 20px 10px 15px 10px;
    font-size: 1em;
    color: #777;
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
}

.postmeta .date {
    margin: 0 10px 0 5px;
}

.postmeta a.comments {
    margin: 0 10px 0 5px;
}

.postmeta a.readmore {
    margin: 0 10px 0 5px;
}

.post-info {
    font-size: .95em;
    padding-top: 3px;
    margin-left: 5px;
    color: #bababa;
}

.post-info a {
    color: #C5935C;
}

p.thumbs {
    padding: 12px 0 0 10px;
}

.thumbs img {
    position: relative;
    border: 1px solid #ebebeb;
    background: none;
    padding: 4px;
    margin: 5px;
    /* margin: 4px 7px 4px 4px; */
}

.thumbs img:hover {
    border: 1px solid #c5c5c5;
    background: none;
}

.thumbs a:hover {
    background-color: transparent;
    border: none
}

/******************************** 
 Page Specific Styles
********************************/
/*HOME*/
body#home #wrap {
    position: relative;
    background: #fff url(/ofbiz/images/home-wrapper.jpg) top center no-repeat;
    width: 945px;
    margin: 0 auto;
    text-align: left;
}

body#home #header {
    position: relative;
    width: 945px;
    height: 403px;
    padding: 0;
    margin: 0 auto;
    background: transparent;
}

body#home #header #slides {
    position: absolute;
    top: 128px;
    left: 10px;
    overflow: hidden;
    background: url(/ofbiz/images/slideshow-bg.jpg) top center no-repeat;
    width: 923px;
    height: 260px;
}

body#home #header #slides .slideshow {
    width:923px;
    height:260px;
    margin:0px;
    padding:0px;
}

body#home #header #slides .callout {
    position: relative;
    top: 35px;
    left: 30px;
    font-size: 30px;
    line-height: 30px;
    color: #2b1f48;
}

body#home #header #slides .description {
    position: relative;
    top: 110px;
    left: 30px;
    font-size: 14px;
    line-height: 15px;
    color: #e0e0e0;
    width: 350px;
}

body#home #header #slides .controls {
    width: 100px;
    position: absolute;
    top: 15px;
    left: 750px;
    height:30px;
}

body#home #header #slides .controls a {
    border: none;
    position:absolute;
    height:30px;
    line-height:24px;
    padding:5px;
    text-indent:-9999px;
    outline:none;
}

body#home #header #slides .controls a.previous {
    background: url(/ofbiz/images/backward.gif) top center no-repeat;
    left:0px;
    height:30px;
    width:16px;
}

body#home #header #slides .controls a.next {
    background: url(/ofbiz/images/forward.gif) top center no-repeat;
    left:60px;
    height:30px;
    width:16px;
}

body#home #header #slides .controls a.stop {
    background: url(/ofbiz/images/pause.gif) top center no-repeat;
    left:30px;
    height:30px;
    width:16px;
}

body#home #header #slides .controls a.start {
    background: url(/ofbiz/images/start.gif) top center no-repeat;
    left:30px;
    height:30px;
    width:16px;
}

body#home #header #slides .controls a img {
    background: none;
    border: none;
    cursor: pointer;
}

body#home #header #slides .mantle{
    position:relative;
    top:-80px;
    left:385px;
    float:right;
}

#mantleSlides{
    width: 20000em;
    height: 260px;
    position: absolute;
}

#mantleSlides div {
    float:left;
    width: 923px;
}

body#home #col1 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 5px 0 0 0px;
    display: inline;
}

body#home #col2 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 5px 0 0 20px;
    display: inline;
}

.downloadNow {
    margin:30px 0 10px 0;
}

.downloadLinks span.docs {
    float:left;
    margin:0px 0px 0 0;
    display:inline;
}

.downloadLinks span.previousVersions {
    float:right;
    margin:0px 20px 0 0;
    display:inline;
}

/*SUBPAGE - NO SIDEBAR*/
body#full #wrap {
    position: relative;
    background: #ffffff url(/ofbiz/images/full-wrapper.jpg) top center no-repeat;
    width: 945px;
    margin: 0 auto;
    text-align: left;
}

body#semi #wrap {
    position: relative;
    background: #ffffff url(/ofbiz/images/wrapper.jpg) top center no-repeat;
    width: 945px;
    margin: 0 auto;
    text-align: left;
}
