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

.falcon-docs-nav, .navbar-header .navbar-brand {
  border-radius: 0px;
  background-color: #5fa33e;
  color: #fff;
}

.navbar-nav > li > a.btn-entity-list {
  color: #dcf0d3;
}

.navbar-nav > .active > a {
  color: #dcf0d3;
}

.falcon-brand {
  padding-left: 50px;
  background-image: url('../img/falcon-64.png');
  background-size: 40px 40px;
  background-repeat: no-repeat;
  background-position: left center;
}

#alert-panel {
  margin-top:20px;
  display: none;
}

.btn-entity-list {
  cursor: pointer;
}

.link-icons:before {
  position: relative;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  -webkit-font-smoothing: antialiased;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  padding-right: 0.4em;
  vertical-align: -20%;
  font-size: 120%;
}

.entity-title:before {
  color: #428bca;
  vertical-align: -20%;
}

.entity-link-cluster:before {
  content: "\2601";
}

.entity-link-process:before {
  content: "\e110";
}

.entity-link-feed:before {
  content: "\e181";
}

#entity-paginator {
  text-align: right;
}

.instance-icons:before {
  position: relative;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  -webkit-font-smoothing: antialiased;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  padding-right: 0.3em;
  font-size: 100%;
  vertical-align: top;
}

.instance-link-SUCCEEDED:before {
  color: green;
  content: "\e013";
}

.instance-link-RUNNING:before {
  color: green;
  content: "\e072";
}

.instance-link-WAITING:before {
  color: orange;
  content: "\e023";
}

.instance-link-FAILED:before {
  color: darkred;
  content: "\e107";
}

.instance-link-SUSPENDED:before {
  color: orangered;
  content: "\e165";
}

.instance-link-KILLED:before {
  color: red;
  content: "\e101";
}

.instance-link-ERROR:before {
  color: darkred;
  content: "\e014";
}

.node-name:before {
  font-family: 'Glyphicons Halflings';
  -webkit-font-smoothing: antialiased;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  padding-right: 0.3em;
  vertical-align: -20%;
  font-size: 110%;
  color: #428bca;
}

.node-name-cluster:before {
  content: "\2601";
}

.node-name-process:before {
  content: "\e110";
}

.node-name-feed:before {
  content: "\e181";
}

.node rect {
  stroke-width: 0.5px;
  stroke: #999;
  fill: #ffffff;
  fill-opacity: 80%;
}

.edge path {
  fill: none;
  stroke: #333;
  stroke-width: 1px;
}

.node-name {
  vertical-align: middle;
  margin: 10px;
}

.lineage-link {
  fill: none;
  stroke: #eee;
  stroke-width: 1.5px;
}

.lineage-node, .lineage-href {
  cursor: pointer;
}

.lineage-node-terminal {
  stroke: #000;
  stroke-opacity: 0.3;
  stroke-width: 8px;
}

.lineage-node-active {
  stroke: #45a2b5;
  stroke-opacity: 0.3;
  stroke-width: 8px;
}

.lineage-node-text {
  font-size: 8pt;
  fill: #fff;
}

.lineage-node-feed-instance {
  fill: #6ab545;
}

.lineage-node-process-instance {
  fill: #456ab5;
}

ul.lineage-legend {
  list-style-type: none;
}

.lineage-legend li {
  padding-left: 20px;
  display: inline;
}

ul.lineage-legend li:before {
  content: "\25cf";
  position: relative;
  display: inline-block;
  top: 2px;
  font-style: normal;
  font-size: 16pt;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  padding-right: 5px;
}

.lineage-legend-feed-inst:before {
color: #6ab545;
}

.lineage-legend-process-inst:before {
color: #456ab5;
}


.lineage-legend-terminal:before {
  -webkit-text-stroke-width: 2px;
  -webkit-text-stroke-color: #ccc;
}
