/*
 * 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: 45px;
}

/* More in generic panel.css */

#device-details-panel.floatpanel {
    -moz-border-radius: 0;
    border-radius: 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 0;
}
#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;
}
