/*!
 * 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.
 */

.draggable
{
	position: absolute;
}

.connector_feedback
{
	background-color: #336699;
        padding: 3px;
}

.connector
{
	background-color: #FF9900;
        padding: 1.5px;
}

.iteration-box
{
	border: 3px dashed #262A37;
	margin: 5px;
	height: 350px;
	overflow: visible;
}

.iteration-name-label
{
	margin-top: -25px;
	margin-left: 10px;
	padding: 3px;
	float: left;

	border: 1px solid #262A37;
	background-color: #FFFFFF;

	font-family: verdana;
	font-weight: normal;
	font-style: italic;
	font-size: 20px;
	color: #000000;
}

.iteration-set-box
{
	background-color: #DDDDDD;
	border: 2px solid #000000;

	position: absolute;
	width: 50px;
	height: 50px;

	font-family: Arial;
	font-weight: bold;
	font-size: 16px;
	color: #333333;
	text-align: center;
	line-height: 50px;
}

.iteration-set-box-left
{
	left: -25px;
}

.iteration-set-box-right
{
	right: -25px;
}

.middle-label {
	background-color: #E0E8FF;
	border: 1px solid #9DA3B3;

	font-family: verdana;
	font-size: 13px;
	text-align: center;

	padding: 5px;
	border-radius: 5px;
	
	margin-left: -50px;
	width: 100px;
	z-index: 2;
}

.source-label
{
	background-color: #E0E8FF;
	border: 1px solid #9DA3B3;

	font-family: verdana;
	font-size: 13px;
	text-align: center;

	padding: 5px;
	border-radius: 5px;

	margin-top: -10px;
	margin-left: 5px;

	z-index: 2;
}

div.canvas
{
	background-color: white;
	background-repeat: no-repeat;
	background-position: top right;
	padding: 0px;
	margin-bottom: 10px;
}

div.propertyCanvas
{
	background-color: white;
	background-repeat: no-repeat;
	background-position: top right;

	border-top: 1px solid #262A37;
	border-right: 1px solid #262A37; 

	margin: 5px; 
	padding: 10px;
	min-height: 250px;
	
	overflow: auto;
}

span.shippingStrategy
{
	font-weight: normal;
	font-style: normal;
}

span.localStrategy
{
	font-weight: normal;
	font-style: italic;
}

span.cacheStrategy
{
	font-weight: bold;
	font-style: normal;
}

.datasource, .datasink, .pact
{
	border: 1px solid #9DA3B3;
	padding: 3px;
	margin: 0px;
}

.datasource, .datasink
{
	background-color: #F7BE81;
	width: 80px;
	height: 60px;
	border-radius: 20px;

}

.sourceSinkContents
{
	font-family: verdana;
	font-size: 14px;
	word-wrap: break-word;
	text-align: center;
	margin-top: 18px;
	margin-bottom: 23px;
	margin-left: 5px;
	margin-right: 5px;
}

.pact
{
	width: 120px;
	height: 90px;
	background-color: #A9F5A9;
	border-radius: 5px;
}

.pactTypeBox
{
	background-color: #E0E8FF;
	border: 1px solid #9DA3B3;
	padding: 2px;
	color: #33333F;
	font-family: verdana;
	font-size: 14px;
	font-weight: bold;
	text-align: center;
}

.pactContents
{
	font-family: verdana;
	font-size: 16px;
	text-align:center;
	vertical-align: middle;
	
	padding: 3px;
	margin-top: 5px;
	margin-bottom: 15px;

	word-wrap: break-word;
}

.propertiesTable
{
	border: none;
	margin: 2px;
	padding: 2px;
	width: 100%;

	background-color: #E0E8FF;
	font-family: verdana;
	font-size: 16px;
	font-weight: normal;
}

.propertiesNameCell
{
	margin: 5px;
	padding: 3px;
	background-color: #FFFFFF;
	font-style: normal;
	text-align: right;
}

.propertiesValueCell
{
	margin: 5px;
	padding: 3px;
	background-color: #FFFFFF;
	font-style: italic;
	text-align: left;
}

p.propItem
{
	font-family: Arial;
	font-size: 16px;
	font-style: normal;
	margin: 3px;
	padding: 3px 10px 3px 5px;
	border: none;
	border-bottom: 1px solid #444444;
}

span.propLabel
{
	font-weight: bold;
	font-style: normal;
}

span.propValue
{
	font-weight: normal;
	font-style: italic;
	word-wrap: break-word;
}

div.propertyCanvasSection
{
	float: left;
	min-width: 280px;
	max-width: 350px;
	min-height: 180px;

	border-left: 1px solid #444444;
	border-top: 1px solid #444444;

	padding: 5px;
	margin: 0px;
}
