/*
 * 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 h1 {
    font-size: 250%;
}

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

.mast svg {
    position: absolute;
    top: -1px;
    left: 106px;
}
.mast g.icon use.glyph.bird {
    fill: #CE5650;
}

.mast li.logout {
    list-style-type: none;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translate(0, -50%);
}
.mast li.logout:hover {
    border-bottom: 2px solid #CE5650;
    list-style-type: none;
    cursor: pointer;
}
