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

/*
 ONOS GUI -- Settings Details Panel (layout) -- CSS file
 */

#settings-details-panel.floatpanel {
    z-index: 100;
    font-size: 10pt;
    top: 143px;
    overflow-y: scroll;
}

#settings-details-panel .container {
    padding: 0 30px;
    height: 300px;
}

#settings-details-panel .container .top-content {
    padding: 15px;
}

#settings-details-panel .close-btn {
    position: absolute;
    right: 12px;
    top: 12px;
    cursor: pointer;
}

#settings-details-panel .settings-title-1 {
    width: 90%;
    height: 25px;
    font-size: 14pt;
    font-weight: lighter;
    overflow: hidden;
    white-space: nowrap;
    padding: 0 12px 0 2px;
    margin-top: 19px;
    margin-bottom: 5px;
}

#settings-details-panel .settings-title-2 {
    width: 90%;
    height: 52px;
    font-size: 18pt;
    font-weight: lighter;
    overflow: hidden;
    white-space: nowrap;
    padding: 0 6px 0 2px;
    margin-top: 5px;
    margin-bottom: 5px;
}

#settings-details-panel td.label {
    font-weight: bold;
    text-align: right;
    padding-right: 6px;
    font-size: 10pt;
    vertical-align: top;
    width: 120px;
}
