/*
 * Copyright 2015-present 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 -- Navigation -- CSS file
 */

#nav {
    position: absolute;
    top: 45px;
    left: 1px;
    padding: 0;
    z-index: 3000;
    visibility: hidden;
}

html[data-platform='iPad'] #nav {
    top: 57px;
}

.light #nav {
    background-color: #bbb;
    box-shadow: 0 2px 8px #777;
}
.dark #nav {
    background-color: #444;
    box-shadow: 0 2px 8px #111;
}

#nav .nav-hdr {
    font-style: italic;
    padding: 6px 8px 6px 8px;
}

.light #nav .nav-hdr {
    color: #ddd;
    border-bottom: solid 1px #999;
    background-color: #aaa;
}
.dark #nav .nav-hdr {
    color: #888;
    border-bottom: solid 1px #444;
    background-color: #555;
}

#nav a {
    text-decoration: none;
    font-size: 14pt;
    display: block;
    padding: 8px 16px 6px 12px;
}

.light #nav a {
    color: #369;
    border-bottom: solid #ccc 1px;
}
.dark #nav a {
    color: #eee;
    border-bottom: solid #333 1px;
}

.light #nav a:hover {
    background-color: #ddd;
}
.dark #nav a:hover {
    background-color: #777;
}

#nav a div {
    display: inline-block;
    vertical-align: middle;
    padding-right: 4px;
}

#nav a div svg.embeddedIcon g.icon .glyph {
    fill: #c66;
}
