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