/***********************************************
APACHE OFBIZ
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.
***********************************************/
body {
    background: transparent url(/images/ofbiz_logo.gif) no-repeat scroll left top;
    color: #000;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: .75em;
    line-height: 1.5em;
    padding: 50px 0 0;
    bgcolor: #ffffcc;

}

a:hover {
    color: #111111;
    text-decoration: underline;
}

a:visited {
    color: #000;
    text-decoration: underline;
}

a {
    color: #555;
    text-decoration: underline;
}

div.abstract {
    border: solid 2px;
    padding-left: 10pt;
    padding-right: 10pt;
    background-color: #ffffcc;
}

pre.screen {
    font-family: monospace;
    white-space: pre;
    width: 100%;
    background-color: #ffffcc;
    border: solid;
    color: #000000;
    border-color: #009999;
    border-left: solid #009999 2px;
    border-right: solid #009999 2px;
    border-top: solid #009999 2px;
    border-bottom: solid #009999 2px;

    padding-left: 15pt;
}

pre.programlisting {
    font-family: monospace;
    white-space: pre;
    width: 100%;
    background-color: #ffffcc;
    border: solid;
    color: #000000;
    border-color: #009999;
    border-left: solid #009999 2px;
    border-right: solid #009999 2px;
    border-top: solid #009999 2px;
    border-bottom: solid #009999 2px;

    padding-left: 15pt;
}

h1 {
    color: #ffffff;
    border: solid 3px #a0a0d0;
    background-color: #606090;
    font-variant: small-caps;
    width: 100%;
}

h1.title {
    color: #ffffff;
    border: solid 3px #a0a0d0;
    background-color: #606090;
    font-variant: small-caps;
    width: 100%;
}

.title a {
    color: #fffffc;
    text-decoration: none;
}

.title a:active {
    color: #ffffff;
    text-decoration: none;
}

.title a:visited {
    color: #ffffff;
    text-decoration: none;
}

h2 {
    color: #ffffff;
    font-style: italic;
    background-color: #a0a0d0;
    border: solid 3px #606090;
    padding: 1px
}

table.important {
    font-style: italic;
    border: solid 2px #ff0000;
    width: 70%;
    margin-left: 15%;
}

table.caution {
    font-style: italic;
    border: ridge 2px #ffff00;
    width: 70%;
    margin-left: 15%;
}

table.note {
    font-style: italic;
    border: solid 1px #000000;
    width: 70%;
    margin-left: 15%;
}

table.tip {
    font-style: italic;
    border: solid 1px #000000;
    width: 70%;
    margin-left: 15%;
}

table.warning {
    font-style: italic;
    font-weight: bold;
    border: ridge 4px #ff0000;

    width: 70%;
    margin-left: 15%;
}

div.variablelist {
    font-family: sans-serif;
    font-style: normal;
    font-weight: normal;
    padding-left: 20px;
}

.varlistentry {
    font-weight: bold;
    margin-top: 10px;
    color: #ffffff;
    background-color: #a0a0d0;
    border: solid 1px #606090;
    padding: 1px
}

/*
 * see http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
 * for an explanation of the following few commands.
 * they are really too complicated to explain here in all depth. ;-)
*/

p {
    font-size: 12px;
}

/*a{}
body p {
        font-size: x-small;
        voice-family: "\"}\"";
        voice-family: inherit;
        font-size: small;
}

html>body p {
        font-size: small;
}
*/

/* add an external-link icon to absolute links */
a[href^="http:"] {
    background: url(images/remote.gif) right center no-repeat;
    padding-right: 12px;
}

a[href^="http:"]:hover {
    background: url(images/remote_a.gif) right center no-repeat;
}

/* add a note icon to footnote links */
a[href^="#ftn"] {
    background: url(images/qbullet-note.gif) right center no-repeat;
    padding-right: 12px;
}

a[href^="#ftn"]:hover {
    background: url(images/qbullet-note_a.gif) right center no-repeat;
}

/* ...and a back icon to the backlinks in the footnotes themselves */
a[name^="ftn"] {
    background: url(images/scrollup.gif) right center no-repeat;
    padding-right: 12px;
}

a[name^="ftn"]:hover {
    background: url(images/scrollup_a.gif) right center no-repeat;
}

/* add a download icon to .gz links */
a[href$=".gz"], a[href$=".tar"], a[href$=".zip"] {
    background: url(images/disk.gif) right center no-repeat;
    padding-right: 12px;
}

/* add an acrobat reader icon to pdf links */
a[href$=".pdf"] {
    background: url(images/acrobat.gif) right center no-repeat;
    padding-right: 12px;
}

a[href$=".pdf"]:hover {
    background: url(images/acrobat_a.gif) right center no-repeat;
}

/* add a word icon to rtf links */
a[href$=".rtf"] {
    background: url(images/word.gif) right center no-repeat;
    padding-right: 12px;
}

/* ...but not to absolute links in this domain... */
a[href^="http://www.karakas-online.de"] {
    background: transparent;
    padding-right: 0px;
}

a[href^="http://www.karakas-online.de"]:hover {
    background: transparent;
}

/* ...or to the translation links on each page */
div.translatelink > a[href^="http:"] {
    background: transparent;
    padding-right: 0px;
}

div.translatelink > a[href^="http:"]:hover {
    background: transparent;
}

/* ...or to any images  */
div.imagelink a[href^="http:"] {
    background: transparent;
    padding-right: 0px;
}

div.imagelink a[href^="http:"]:hover {
    background: transparent;
}

p.c2 {
    color: #ffffff;
    background-color: #a0a0d0;
    border: solid 1px #606090;
    padding: 1px
}

div.navfooter {
    color: #000000;
    background-color: #efeff8;
    padding: 5px;
    margin-top: 10px;
    width: 100%;
    border: thin solid #a0a0d0;
}

div.nukefooter {
    color: #000000;
    background-color: #b0e0e6;
    padding: 5px;
    margin-top: 10px;
    width: 100%;
    border: thin solid #a0a0d0;
}

div.navheader {
    color: #000000;
    background-color: #efeff8;
    padding: 5px;
    margin-bottom: 10px;
    width: 100%;
    border: thin solid #a0a0d0;
}

div.sect1, div.sect2, div.sect3 {
    margin-left: 20px;
}

div.example, div.toc {
    border: thin dotted #70aae5;
    padding-left: 10px;
    padding-right: 10px;
    color: #000000;
    background-color: #eff8f8;
}

div.toc {
    margin-left: 20px;
    margin-right: 20px;
    width: 95%;
}

ul {
    list-style: url("images/tux-bullet.png") disc;
}

div.example, div.toc {
    border: thin dotted #70aae5;
    padding-left: 10px;
    padding-right: 10px;
    color: #000000;
    background-color: #eff8f8;
}

div.toc {
    margin-left: 20px;
    margin-right: 20px;
    width: 95%;
}

