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

/*
 ONOS GUI -- Masthead -- CSS file

 @author Simon Hunt
 */

#mast {
    height: 36px;
    padding: 4px;
    background-color: #bbb;
    vertical-align: baseline;
    box-shadow: 0px 2px 8px #777;
}

#mast img#logo {
    height: 38px;
    padding-left: 8px;
    padding-right: 8px;
}

#mast span.title {
    color: #369;
    font-size: 14pt;
    font-style: italic;
    vertical-align: 12px;
}

#mast span.right {
    padding-top: 8px;
    padding-right: 16px;
    float: right;
}

#mast span.radio {
    color: darkslateblue;
    font-size: 10pt;
}

#mast span.radio {
    margin: 4px 0;
    border: 1px dotted #222;
    padding: 1px 6px;
    color: #eee;
    cursor: pointer;
}

#mast span.radio.active {
    background-color: #bbb;
    border: 1px solid #eee;
    padding: 1px 6px;
    color: #666;
    font-weight: bold;
}
