/*
 * 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-topoX svg {
    /* prevents the little cut/copy/paste square that would appear on iPad */
    -webkit-user-select: none;
}

#topoXtmp {
    height: 700px;
    width: 98%;
    overflow-y: scroll;
}

#topoXtmp div {
    padding: 2px 24px;
    margin: 6px;
    background-color: #ddddff;
}
#topoXtmp div div {
    padding: 0 10px;
}
#topoXtmp div div span {
    color: purple;
    font-style: italic;
    font-weight: bold;
}

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

.subRegions div p {
    width: 40px;
}
