/*
 * Copyright 2016 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 -- Meter View -- CSS file
 */

#ov-meter h2 {
    display: inline-block;
}

#ov-meter div.ctrl-btns {
}

.light #ov-meter .current-view use {
    fill: white;
}
.dark #ov-meter .current-view use {
    fill: #304860;
}

.light #ov-meter .current-view rect {
    fill: deepskyblue;
}
.dark #ov-meter .current-view rect {
    fill: #eee;
}

.light #ov-meter tr:nth-child(4n + 1),
.light #ov-meter tr:nth-child(4n + 2) {
    background-color: #eee;
}
.light #ov-meter tr:nth-child(4n + 3),
.light #ov-meter tr:nth-child(4n) {
    background-color: #ddd;
}
.dark #ov-meter tr:nth-child(4n + 1),
.dark #ov-meter tr:nth-child(4n + 2) {
    background-color: #444;
}
.dark #ov-meter tr:nth-child(4n + 3),
.dark #ov-meter tr:nth-child(4n) {
    background-color: #333;
}

/* highlighted color */
.light #ov-meter tr:nth-child(4n + 1).data-change,
.light #ov-meter tr:nth-child(4n + 2).data-change,
.light #ov-meter tr:nth-child(4n + 3).data-change,
.light #ov-meter tr:nth-child(4n).data-change {
    background-color: #FDFFDC;
}
.dark #ov-meter tr:nth-child(4n + 1).data-change,
.dark #ov-meter tr:nth-child(4n + 2).data-change,
.dark #ov-meter tr:nth-child(4n + 3).data-change,
.dark #ov-meter tr:nth-child(4n).data-change {
    background-color: #5A5600;
}

#ov-meter td {
    text-align: center;
}
#ov-meter td.right {
    text-align: right;
}
#ov-meter td.bands {
    text-align: left;
    padding-left: 36px;
    opacity: 0.65;
}