/***********************************************
APACHE OPEN FOR BUSINESS
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%;
}

