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

#mast {
    position: relative;
    z-index: 1000;
}

/* --- Base SVG Layer --- */

#ov-topo2 svg {
    /* prevents the little cut/copy/paste square that would appear on iPad */
    -webkit-user-select: none;
}


/* --- "No Devices" Layer --- */

#ov-topo2 svg #topo2-noDevsLayer {
    visibility: hidden;
}

#ov-topo2 svg #topo2-noDevsLayer text {
    font-size: 60pt;
    font-style: italic;
}

#breadcrumbs {
    font-size: 13px;
    position: absolute;
    padding: 10px 20px;
    left: 0;
    top: 48px;
    width: 100%;
}

#breadcrumbs .breadcrumb {
    display: inline-block;
    margin-right: 5px;
}

#breadcrumbs .breadcrumb a {
    cursor: pointer;
}

#breadcrumbs .breadcrumb:after {
    content: '»';
    pointer-events: none;
    line-height: 20px;
    margin-left: 5px;
}

#breadcrumbs .breadcrumb:last-child a {
    pointer-events: none;
    font-weight: 600;
}

#breadcrumbs .breadcrumb:last-child:after {
    display: none;
}

#topo2-p-instance.floatpanel {
    top: 104px;
}

.breadcrumb--hidden #topo2-p-instance.floatpanel {
    top: 64px;
}

/* -- Base Device Styles -- */
#ov-topo2 svg .node {
    cursor: pointer;
    fill-rule: evenodd;
}

/* --- Topo Summary Panel --- */

#topo2-p-summary {
    padding: 16px;
}


/* --- Topo Detail Panel --- */

#topo2-p-detail {
    padding: 16px;
    top: 370px;
}
html[data-platform='iPad'] #topo2-p-detail {
    top: 386px;
}

#topo2-p-detail .actionBtns .actionBtn {
    display: inline-block;
}
#topo2-p-detail .actionBtns .actionBtn svg {
    width: 28px;
    height: 28px;
}


/* --- general topo2-panel styling --- */

.topo2-p div.header {
    margin-bottom: 10px;
}

.topo2-p div.header div.icon {
    vertical-align: middle;
    display: inline-block;
}
.topo2-p div.body {
    overflow-y: scroll;
}

.topo2-p div.body::-webkit-scrollbar {
    display: none;
}

.topo2-p svg {
    display: inline-block;
    width: 26px;
    height: 26px;
}


.topo2-p h2 {
    padding: 0 0 0 10px;
    margin: 0;
    font-weight: lighter;
    word-wrap: break-word;
    display: inline-block;
    vertical-align: middle;
}

.topo2-p h3 {
    padding: 0 4px;
    margin: 0;
    word-wrap: break-word;
    top: 20px;
    left: 50px;
}

.topo2-p p,
.topo2-p table {
    padding: 0;
    margin: 0;
    width: 100%;
}

.topo2-p td {
    word-wrap: break-word;
}
.topo2-p td.label {
    font-weight: bold;
    padding: 0 10px 0 0;
}
.topo2-p td.value {
    padding: 0;
}

#topo2-p-summary  td.label {
    width: 50%;
}

#topo2-p-detail  div.actionBtns {
    padding-top: 6px;
}

.topo2-p hr {
    height: 1px;
    border: 0;
    margin: 4px -3px;
}

/* --- Toolbar --- */

#toolbar-topo2-toolbar {
    padding: 6px;
}

#toolbar-topo2-toolbar .tbar-row.right {
    width: 100%;
}

#toolbar-topo2-toolbar .tbar-row-text {
    height: 21px;
    text-align: right;
    padding: 8px 60px 0 0;
    font-style: italic;
}