/*
 * 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
 */

/* --- 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:after {
    display: none;
}

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


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