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

/*
 ONOS GUI -- Device View -- CSS file
 */

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

#ov-device div.ctrl-btns {
    width: 240px;
}

/* More in generic panel.css */

#device-details-panel.floatpanel {
    -moz-border-radius: 0;
    border-radius: 0;
    z-index: 0;
}

.light #device-details-panel.floatpanel {
    background-color: rgb(229, 234, 237);
}
.dark #device-details-panel.floatpanel {
    background-color: #3A4042;
}

#device-details-panel .container {
    padding: 0 12px;
}

#device-details-panel .close-btn {
    position: absolute;
    right: 10px;
    top: 0;
    cursor: pointer;
}
.light .close-btn svg.embeddedIcon .icon.plus .glyph {
    fill: #aaa;
}
.dark .close-btn svg.embeddedIcon .icon.plus .glyph {
    fill: #ccc;
}

#device-details-panel .dev-icon {
    display: inline-block;
    padding: 0 6px 0 0;
    vertical-align: middle;
}
.light .dev-icon svg.embeddedIcon .glyph {
    fill: rgb(0, 172, 229);
}
.dark .dev-icon svg.embeddedIcon .glyph {
    fill: #486D91;
}

#device-details-panel h2 {
    display: inline-block;
    margin: 8px 0;
}

#device-details-panel .top div.left {
    float: left;
    padding: 0 18px 0 0;
}
#device-details-panel .top div.right {
    display: inline-block;
}

#device-details-panel td.label {
    font-style: italic;
    padding-right: 12px;
    /* works for both light and dark themes ... */
    color: #777;
}

#device-details-panel .actionBtns div {
    padding: 12px 6px;
}

#device-details-panel .top hr {
    width: 95%;
    margin: 0 auto;
}

.light #device-details-panel hr {
    opacity: .5;
    border-color: #FFF;
}
.dark #device-details-panel hr {
    border-color: #666;
}

#device-details-panel .bottom table {
    border-spacing: 0;
}

#device-details-panel .bottom th {
    letter-spacing: 0.02em;
}

.light #device-details-panel .bottom th {
    background-color: #CCC;
    /* default text color */
}
.dark #device-details-panel .bottom th {
    background-color: #131313;
    color: #ccc;
}

#device-details-panel .bottom th,
#device-details-panel .bottom td {
    padding: 6px 12px;
    text-align: center;
}

.light #device-details-panel .bottom tr:nth-child(odd) {
    background-color: #f9f9f9;
}
.light #device-details-panel .bottom tr:nth-child(even) {
    background-color: #EBEDF2;
}
.dark #device-details-panel .bottom tr:nth-child(odd) {
    background-color: #333;
}
.dark #device-details-panel .bottom tr:nth-child(even) {
    background-color: #555;
}
