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

/* 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 td.label {
    font-style: italic;
    padding-right: 12px;
    /* works for both light and dark themes ... */
    color: #777;
}

#device-details-panel hr {
    margin: 12px 0;
}

.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;
}
