/*
////////////////////////////////////////////////////////////////////////////////
//
//  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.
//
////////////////////////////////////////////////////////////////////////////////
*/

/*
//----------------------------
//  Global styles
//----------------------------
*/
.global {
    color:                  #170505;
    fillAlphas:             1.00, 1.00; /* last pair are for OVER state */
    fillColors: 		    #FFFFFF, #DDDDDD, #FFFFFF, #EEEEEE;
}

/*
//----------------------------
// Type selectors
//----------------------------
*/

HRule
{
    color:                  #666666;
}

/*
//----------------------------
// Named styles
//----------------------------
*/
.glass {
    borderColor:		    #767473;
    fillAlphas: 		    .60, .60, .60, .60;
    fillColors: 		    #888888, #F3F3F3, #9E9E9E, #FCFCFC;
    highlightAlphas:	    .07, .45;
}

.glassSlider
{
    fillAlphas: 		    .80, .80, .80, .80;
    fillColors: 		    #F3F3F3, #BBBBBB, #FCFCFC, #CCCCCC;
}

.listItem
{
    paddingLeft:            4;
    paddingRight:           4;
    horizontalGap:          5;
    verticalAlign:          "middle";
    backgroundColor:        #FFFFFF;
    backgroundAlpha:        .5;
    borderStyle:            "outset";
}

.sectionHeader
{
    fontWeight:             "bold";
    fontSize:               11;
}

.homeSection
{
    cornerRadius:           4;
    borderStyle:            "solid";
}