/*

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.

*/

#content #stream
{
}

#content #stream #form
{
  float: top;
}

#content #stream #form label
{
  cursor: pointer;
  display: inline;
  margin-top: 5px;
}

#content #stream #form input,
#content #stream #form select,
#content #stream #form textarea
{
  margin-bottom: 2px;
  width: 100%;
}

#content #stream #form textarea
{
  height: 125px;
}

#content #stream #form #start
{
  float: left;
  width: 45%;
}

#content #stream #form #rows
{
  float: right;
  width: 45%;
}

#content #stream #form input[type=checkbox]
{
  margin-bottom: 0;
  margin-left: 5px;
  margin-right: 0px;
  width: 10px;
  height: 10px;
  display: inline;
}

#content #stream #form fieldset
{
  border: 1px solid #fff;
  border-top: 1px solid #c0c0c0;
  margin-bottom: 5px;
}

#content #stream #form fieldset.common
{
  margin-top: 10px;
}

#content #stream #form fieldset legend
{
  display: block;
  margin-left: 10px;
  padding: 0px 5px;
}

#content #stream #form fieldset legend label
{
  margin-top: 0;
}

#content #stream #form button
{
  margin-right: 10px;
}

#content #stream #form fieldset .fieldset
{
  border-bottom: 1px solid #f0f0f0;
  margin-bottom: 5px;
  padding-bottom: 10px;
}

#content #stream #result
{
  float: bottom;
}

#content #stream #result #response
{
}

/************************/

#content #stream #result #explanation
{
  border-top: 1px solid #f0f0f0;
  border-bottom: 1px solid #f0f0f0;
  border-left: 1px solid #f0f0f0;
  border-right: 1px solid #f0f0f0;
}

#content #stream #result #explanation .loader
{
  background-position: 0 50%;
  padding-left: 21px;
}

#content #stream #result #explanation #error
{
  background-color: #f00;
  background-image: url( ../../img/ico/construction.png );
  background-position: 10px 12px;
  color: #fff;
  font-weight: bold;
  margin-bottom: 20px;
  padding: 10px;
  padding-left: 35px;
}

#content #stream #result #explanation #error .msg
{
  font-style: italic;
  font-weight: normal;
  margin-top: 10px;
}

#content #stream #result #explanation .content
{
  padding-left: 0;
  padding-right: 0;
}

#content #stream #result #explanation .content.show
{
  background-image: url( ../../img/div.gif );
  background-repeat: repeat-y;
  background-position: 31% 0;
}

#content #stream #result #explanation #legend
{
  border: 1px solid #f0f0f0;
  padding: 10px;
  /*position: absolute;
  right: 0;
  bottom: 0;*/
}

#content #stream #result #explanation #legend li
{
  padding-left: 15px;
  position: relative;
  -webkit-box-sizing: border-box;
}

#content #stream #result #explanation #legend li svg
{
  position: absolute;
  left: 0;
  top: 2px;
}

#content #stream #result #explanation #explanation-content
{
  min-height: 50px;
  width: 100%
}

#content #stream #result #explanation #explanation-content .node circle
{
  color: #c48f00;
  stroke: #c48f00;
  fill: #c48f00;
}

#content #stream #result #explanation #explanation-content .link
{
  fill: none;
  stroke: #e0e0e0;
  stroke-width: 1.5px;
}

#content #stream #result #explanation #legend .datastore circle,
#content #stream #result #explanation #explanation-content .node.datastore circle
{
  stroke: #3800c4;
  fill: #3800c4;
}

#content #stream #result #explanation #legend .stream-source circle,
#content #stream #result #explanation #explanation-content .node.stream-source circle
{
  stroke: #21a9ec;
  fill: #21a9ec;
}

#content #stream #result #explanation #legend .stream-decorator circle,
#content #stream #result #explanation #explanation-content .node.stream-decorator circle
{
  stroke: #cb21ec;
  fill: #cb21ec;
}

#content #stream #result #explanation #legend .graph-source circle,
#content #stream #result #explanation #explanation-content .node.graph-source circle
{
  stroke: #21eca9;
  fill: #21eca9;
}
