/*
 * 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 -- Group View (layout) -- CSS file
 */

#ov-group h2 {
    display: inline-block;
    margin-left: 10px;
}

#ov-group div.ctrl-btns {
}

#ov-group td {
    text-align: center;
}
#ov-group td.right {
    text-align: right;
}
#ov-group td.buckets {
    text-align: left;
    padding-left: 36px;
}

#ov-group .tabular-header {
    text-align: left;
}
#ov-group div.summary-list .table-header td {
    font-weight: bold;
    font-variant: small-caps;
    text-transform: uppercase;
    font-size: 10pt;
    padding-top: 8px;
    padding-bottom: 8px;
    letter-spacing: 0.02em;
    cursor: pointer;
    background-color: #e5e5e6;
    color: #3c3a3a;
}

/* More in generic panel.css */

#group-details-panel.floatpanel {
    z-index: 0;
}


#group-details-panel .container {
    padding: 8px 12px;
}

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

#group-details-panel .dev-icon {
    display: inline-block;
    padding: 0 6px 0 0;
    vertical-align: middle;
}

#group-details-panel h2 {
    display: inline-block;
    margin: 8px 0;
    font-size: 16pt;
    font-weight: lighter;
}

#group-details-panel h3 {
    display: inline-block;
    margin: 8px 0;
    font-size: 11pt;
    font-variant: small-caps;
    text-transform: uppercase;
}

#group-details-panel .top-content table {
    font-size: 10pt;
}

#group-details-panel td.label {
    font-weight: bold;
    text-align: right;
    padding-right: 6px;
}