/*
 * Copyright 2016-present 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 -- 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;
}

/* -- TEMPORARY CSS (to be deleted) -- */
#topo2tmp div {
    padding: 8px 24px;
    margin: 8px;
    background-color: #ddddff;
}
#topo2tmp div div {
    padding: 4px 10px;
}

#topo2tmp h4 {
    margin: 0
}
#topo2tmp p {
    margin: 0
}
#topo2tmp .nav-me:hover {
    background-color: #bbbbdd;
}
#topo2tmp .nav-me {
    font-weight: bold;
    text-decoration: underline;
    cursor: pointer;
}

#breadcrumbs {
    font-size: 13px;
    background: #f5f5f5;
    border-bottom: 1px solid #c7c7c0;
    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;
    color: #353535;
    line-height: 20px;
    margin-left: 5px;
}

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

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

