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

/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                          STAROFFICE 6.0 HELP                      +
+                    HIGH CONTRAST BLACK STYLESHEET                 +
+                           WESTERN LANGUAGES                       +
+-------------------------------------------------------------------+
+ This stylesheet defines the appearance of the online help files.  +
+ It is language dependent and located in {installdir}/help/{lang}  +
+-------------------------------------------------------------------+
+ (c) 2001 Sun Microsystems, Inc. All Rights Reserved               +
+-------------------------------------------------------------------+
+ Last changes: 11-JUL-02 FPE                                       +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/


/* Main Styles */
body                       { background: #000000; }
p                          { 
                             font-family: Albany,Helvetica,Verdana,Tahoma,Andale Sans,Arial,lucidux sans;
                             font-size: 9pt; 
                             color: #FFFFFF;
                           }
td                         { 
                             color: #FFFFFF;
                             margin-left: 0pt; 
                           }
th                         { color:#FFFFFF; 
                             align: left; 
                             margin-left: 0pt; 
                             font-weight:bold;
                           }

/* Link styles */

.ContentLink               { 
                             color:#FFFFFF; 
                             font-weight: bold; 
                             font-decoration: none; 
                           }
.ContentLink:hover         { font-decoration: underline; }

/* Style classes simple paragraphs */

.Paragraph                 { 
                             margin-left: 0pt;  
                             margin-top: 7pt; 
                             margin-bottom: 7pt;
                           }
.ParaList                  { 
                             margin-left: 20pt; 
                             margin-top: 2pt; 
                             margin-bottom: 2pt; 
                           }
.PropText                  { 
                             font-family: Cumberland,Courier New,Courier; 
                             margin-top: 2pt; 
                             margin-bottom: 2pt; 
                           }

/* Style classes headings */


h1, .Head1                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:18pt; 
                             font-weight: bold; 
                             margin-top: 5pt; 
                           }
h2, .Head2                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:14pt; 
                             font-weight: bold; 
                             margin-top: 20pt; 
                             margin-bottom: 2pt;
                           }
h3, .Head3                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:12pt; 
                             font-weight:bold; 
                             margin-top: 25pt; 
                             margin-bottom: 2pt;
                           } 
h4, .Head4                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:10pt; 
                             font-weight:bold; 
                             margin-top: 20pt; 
                             margin-bottom: 2pt;
                           }
h5, .Head5                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:10pt; 
                             margin-top: 15pt; 
                             margin-bottom: 2pt;
                           }
h6, .Head6                 { 
                             font-family: Arial,Helvetica,Albany,lucidux sans; 
                             color:#FFFFFF; 
                             font-size:10pt; 
                             margin-top: 15pt; 
                             margin-bottom: 2pt;
                           }

/* Style classes tables */

.TextInTable               { 
                             color:#FFFFFF; 
                             align: left; 
                             margin-left: 0pt; 
                           }
.TableHead                 { 
                             color:#FFFFFF; 
                             align: left; 
                             font-weight:bold; 
                           }

/* Style classes spans */
.emph                      { font-weight: bold; }

/* Style classes special context */

.tablebg                   { background: #000000; }
.tableheadbg               { background: #000000; }
.tabledatabg               { background: #000000; }

.doctitlebg                { background: #000000; }
.doctablebg                { background: #000000; }

.howtogetheader            { 
                             font-weight: bold; 
                             color: #FFFFFF; 
                             background: #000000; 
                           }
.howtogetbody              { 
                             font-size: 9pt; 
                             color: #FFFFFF; 
                             background: #000000; 
                           }
.howtogetpara              { 
                             font-size: 9pt; 
                             color: #FFFFFF; 
                             margin-top: 2pt; 
                             margin-bottom: 2pt;
                           }
.reltop                    { 
                             background: #000000; 
                             color:#FFFFFF; 
                             font-size:10pt; 
                             font-weight:bold; 
                             margin-top: 20pt; 
                             margin-bottom: 2pt;
                           }

/* Style classes Webtop context */

.ContentCell               { background: #000000; }