/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you 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
*/

/* The following are for matching Patternfly styles */
span.logo {
  letter-spacing: 4px;
}

.navbar-pf .navbar-brand {
  padding: 2px 0 2px;
}
/* using dynatree instead of treeview */
#overtree ul.dynatree-container,
#entityTree ul.dynatree-container,
#schema ul.dynatree-container {
    background-color: transparent;
    border: 0px;
}

span.dynatree-folder a {
    font-weight: normal;
    font-size: 12px;
}

ul.dynatree-container li,
span.dynatree-icon {
  background-image: none;
}

.dynatree-exp-c span.fa-angle, .dynatree-exp-e span.fa-angle,
.dynatree-exp-cl span.fa-angle, .dynatree-exp-el span.fa-angle {
  margin-right: 5px;
}
.dynatree-exp-c span.fa-angle:before, .dynatree-exp-cl span.fa-angle:before {
  font-family: FontAwesome;
  content: "\f105";
}
.dynatree-exp-e span.fa-angle:before, .dynatree-exp-el span.fa-angle:before {
  font-family: FontAwesome;
  content: "\f107";
}

.dynatree-ico-ef span.dynatree-icon, .dynatree-ico-cf span.dynatree-icon {
  background-image: initial;
  font-family: FontAwsome;
}

.dynatree-ico-cf span.dynatree-icon:before {
  font-family: FontAwesome;
  content: "\f07b";
}
.dynatree-ico-ef span.dynatree-icon:before {
  font-family: FontAwesome;
  content: "\f07c";
}

ul.dynatree-container a {
    color: #363636;
}

/* override left and right pane styles */
#overview-controller .col-sm-3,
#list-controller .col-sm-3,
#schema .col-sm-3,
.qdr-topology-form.col-sm-3 {
  padding-left: 0px;
}

.qdr-topology-form.col-sm-3 {
  padding-right: 0px;
}

#overview-controller .ngViewport {
  height: auto !important;
}

.pane-wrapper {
  padding-top: 0.5em;
}

div#list-controller {
  padding-left: 0px;
}

.pane-viewport {
    position: relative;
}

#list-controller .tree-header, #list-controller .tree-header select {
    width: 100%;
}

[class^="icon-"],
[class*=" icon-"] {
  display: inline;
  width: auto;
  height: auto;
  line-height: normal;
  vertical-align: baseline;
  background-image: none;
  background-position: 0% 0%;
  background-repeat: repeat;
  margin-top: 0;
}
[class^="icon-"],
[class*=" icon-"] {
  font-family: FontAwesome;
  font-weight: normal;
  font-style: normal;
  text-decoration: inherit;
  -webkit-font-smoothing: antialiased;
  *margin-right: .3em;
}

[class^="icon-"]:before,
[class*=" icon-"]:before {
  text-decoration: inherit;
  display: inline-block;
  speak: none;
}

.icon-bar-chart:before {
  font-family: FontAwesome;
    content: "\f080";
}

.icon-step-forward:before {
  font-family: FontAwesome;
  content: "\f051";
}
.icon-step-backward:before {
  font-family: FontAwesome;
  content: "\f048";
}

[class^="icon-"]:before, [class*=" icon-"]:before {
    text-decoration: inherit;
    display: inline-block;
    speak: none;
}

#svg_legend {
  top: 10px;
}

#topologyForm > div {
  width: auto;
}

div.chartContainer {
  width: auto;
  margin-top: 1em;
}

#dispatch-login-container {
  width: 90em;
}

#dispatch-login-container .alert {
  padding-right: 47px;
}

.fa-edit:before, .fa-trash-o:before {
  font-family: FontAwesome;
}

div.qdr-topology.pane.left {
  width: 400px;
  top: 0;
}
