/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed 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.
 */

div.mast {
    width: 100%;
    height: 85px;
    background-color: white;
    position: relative;
    box-shadow: 0 10px 5px -7px gray;
    z-index: 100;
}

.mast div {
    position: absolute;
    top: 50%;
    transform: translate(0, -50%);
}

.mast div.left {
    left: 25px;
}

.mast div.right {
    right: 7%;
    width: 37%;
}

.mast img {
    width: 220px;
}

.mast a,
.mast a:visited {
    text-decoration: none;
    color: #3C3C3C;
}

.mast li.logout {
    list-style-type: none;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translate(0, -50%);
    font-size: 90%;
}
.mast li.logout:hover {
    font-weight: bold;
    list-style-type: none;
    cursor: pointer;
}
