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

