/*******************************************************************************
////////////////////////////////////////////////////////////////////////////////
//
//  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.
//
////////////////////////////////////////////////////////////////////////////////
*/
/* Generated by Apache Flex Cross-Compiler */
.glass {
        border-color: #767473;
        highlight-alphas: .07 .45;
        fill-colors: #888888 #F3F3F3 #9E9E9E #FCFCFC;
        fill-alphas: .60 .60 .60 .60;
}


.glassSlider {
        fill-colors: #F3F3F3 #BBBBBB #FCFCFC #CCCCCC;
        fill-alphas: .80 .80 .80 .80;
}


.listItem {
        border-style: outset;
        background-color: #FFFFFF;
        vertical-align: middle;
        horizontal-gap: 5;
        background-alpha: .5;
        padding-left: 4;
        padding-right: 4;
}


.outer.inner {
        width: 512px;
}


.outer .inner {
        width: 512px;
}


.outer>.innerTitle {
        height: 176px;
        color: #fff;
        background: url('assets/welcome_card.jpg') center / cover;
}


.outer>.innerMenu {
        color: #fff;
}


.outer>.innerMenu>h4 {
        color: #fff;
}


.outerother.inner {
        height: 320px;
        width: 320px;
}


.outerother-square>.innerTitle {
        color: #fff;
        background: url('assets/dog.png') bottom right 15% no-repeat #46B6AC;
}


.usescalc {
        color: #fff;
        width: calc((100% - 50px)/3);
}



