
/*
 * Copyright 2017-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.
 */


@import '../../../../style/sass/lib/_variables.scss';

#xosMcord-slicing,
#xosMcord-slicing > [ui-view],
slicing-topo {
  width: 100%;
  height: 100%;
}

slicing-topo {
  display: block;
}

#xosMcord-slicing {
  .node {
    stroke: $brand-primary;
    fill: white;
  }

  .node,
  .node + text {
    cursor: pointer;
  }

  text {
    pointer-events: none;
    -webkit-user-select: none;  /* Chrome all / Safari all */
    -moz-user-select: none;     /* Firefox all */
    -ms-user-select: none;      /* IE 10+ */
    user-select: none;
  }

  .node.control {
    stroke-dasharray: 5;
    stroke: $brand-danger;
  }

  .node.button {
    stroke-dasharray: 5;
    stroke: $brand-info;
    fill: lighten($brand-info, 30)
  }

  .node.selected{
    stroke-width: 5px;
    stroke-dasharray: 5;
  }

  /* Icons */
  .node ~ .icon {
    stroke: $brand-primary;
    fill: $brand-primary;
  }

  .node.control ~ .icon {
    stroke: $brand-danger;
    fill: $brand-danger;
  }

  .link {
    stroke: darken($brand-primary, 10);
    stroke-width: 2px;
    cursor: pointer;
  }

  .link.control {
    stroke-dasharray: 5;
    stroke: $brand-danger;
  }

  .link.selected {
    stroke-width: 5px;
    stroke-dasharray: 5;
  }

  /*drag line*/
  .dragline {
    stroke-dasharray: 5;
    stroke: darken($brand-primary, 10);
    stroke-width: 2px;
  }

  .dragline.hidden {
    stroke-width: 0;
  }

  /*form styling*/
  div.element-form {
    position: absolute;
    border: 1px solid $brand-info;
    padding: 10px;
    background: #fff;
  }

  .form-line {
    stroke: darken($brand-info, 10);
    stroke-width: 1px;
  }
}