/*
 * Copyright 2019-present Open Networking Foundation
 *
 * 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.
 */


/* Base */
#pipeconf-info h2 {
    display: inline-block;
    margin: 10px 0 10px 0;
}

#pipeconf-info h3 {
    display: inline-block;
    margin-bottom: 10px;
}

#pipeconf-info {
    height: 80vh;
    max-width: 100%;
    overflow-y: scroll;
    overflow-x: scroll;
    padding-left: 16px;
    padding-right: 20px;
}

#pipeconf-info::-webkit-scrollbar {
    display: none;
}

/* Table */
.pipeconf-table {
    width: 100%;
}

.pipeconf-table tr {
    transition: background-color 500ms;
    text-align: left;
    padding: 8px 4px;
}

.pipeconf-table .selected {
    background-color: #dbeffc !important;
}

.pipeconf-table tr:nth-child(even) {
    background-color: #f4f4f4;
}

.pipeconf-table tr:nth-child(odd) {
    background-color: #fbfbfb;
}

.pipeconf-table thead th {
    background-color: #e5e5e6;
    color: #3c3a3a;
    font-weight: bold;
    font-variant: small-caps;
    text-transform: uppercase;
    font-size: 10pt;
    letter-spacing: 0.02em;
}

.pipeconf-table tr td {
    padding: 4px;
    text-align: left;
    word-wrap: break-word;
    font-size: 10pt;
}

.pipeconf-table tr td p {
    margin: 5px 0;
}

/* Detail panel */
.container {
    padding: 10px;
    overflow: hidden;
}

.container .top, .bottom {
    padding: 15px;
}
.container .bottom {
    overflow-y: scroll;
}

.container .bottom h2 {
    margin: 0;
}

.container .top .detail-panel-header {
    display: inline-block;
    margin: 0 0 10px;
}


.detail-panel-table {
    width: 100%;
    overflow-y: hidden;
}

.detail-panel-table td, th {
    text-align: left;
    padding: 6px 12px;
}

.top-info {
    font-size: 12pt;
}

.top-info .label {
    font-weight: bold;
    text-align: right;
    display: inline-block;
    margin: 0;
    padding-right:6px;
}

.top-info .value {
    margin: 0;
    text-align: left;
    display: inline-block;
}

/* Widgets */
#ov-pipeconf h2 {
    display: inline-block;
}

.collapse-btn {
    cursor: pointer;
    display: inline-block;
    max-height: 30px;
    overflow-y: hidden;
    position: relative;
    top: 8px;
}

.close-btn {
    display: inline-block;
    float: right;
    margin: 0.1em;
    cursor: pointer;
}

.text-center {
    text-align: center !important;
}

.no-data {
    text-align: center !important;
    font-style: italic;
}
