/* BEGIN service preview header styles */

p.service_aka_names {
  margin-top: 5px;
  margin-bottom: 0;
}

span.service_aka_name {
  font-weight: bold;
  margin-right: 0.5em;
}

a.service_status_details {
  text-decoration: none;
}

a.service_status_details:hover {
  color: #ff7400;
  text-decoration: underline;
}

h1.service_title {
  border: 1px solid #D7EFA4;
  background-color: #E9F7CC;
  color: #000033;
  text-align: center;
  font-size: 180%;
  margin: 0.2em 0 0 0;
  padding: 0;
}


h2.soap_operation_name {
  border: 1px solid #D7EFA4;
  background-color: #E9F7CC;
  color: #000033;
  text-align: center;
  font-size: 120%;
  margin: 0.2em 0 0 0;
  padding: 0;
}

h3.soap_operation_inputs_or_outputs_section {
  background-color: #EEEEEE;
  border: 1px solid #CCCCCC;
  padding: 0.1em 0.6em;
  font-size: 110%;
  margin-top: 2em;
}

div.soap_input_or_output {
  border: 1px solid #C6961D;
  margin: 0.5em 1em;
}

div.soap_input_or_output p.name {
  background-color: #FFC526;
  border: 1px solid #C6961D;
  padding: 0.2em 1em;
  margin: 0;
}

div.soap_input_or_output p.body {
  border: 1px solid #C6961D;
  padding: 0.5em 1em;
  margin: 0;
}


.orange_highlight {
 	background-color: #ffbb7f;
	padding: 1px 5px 1px 5px;
  margin: 0 2px;
}

.none_text {
  font-weight: normal;
  font-style: italic;
  color: #777777;
}

.left_indented {
  margin-left: 2em;
}

/* END service preview header styles */


/* BEGIN service preview annotation styles */

div.annotation {
  margin: 1em;
  font-size: 100%;
}

div.annotation p.key {
  margin: 0;
  padding: 0;
  font-weight: bold;
}

div.annotation p.value {
  margin: 0;
  padding: 0 0.7em;
}

div.annotation p.value_with_submitter {
  margin: 0.4em 0;
  padding: 0.3em 0.7em;
  background-color: #AAFFC1;
  border: 1px solid #91D8A4;
}

div.annotation p.value_with_submitter span.submitter{
  float: right;
  font-size: 80%;
  margin: 0 0.2em 0 1em;
  padding: 2px 5px 1px 5px;
  background-color: #D8FFE2;
}

div.annotation img.link_icon {
  padding: 0 3px;
  vertical-align: middle;
}

div.annotation a {
  vertical-align: middle;
  color: #000000;
}

div.annotation a:link, a:visited  {
  /*color: #333333;*/
  text-decoration: underline;
}

div.annotation a:hover {
  color: #ff7400;
  text-decoration: underline;
}

div.annotation a:active {
  color: #ff7400;
  text-decoration: underline;
}

/* END service preview annotation styles */



/* BEGIN service type styles */

p.service_types {
  margin-top: 0.5em;
  margin-bottom: 0px;
}

a.service_type_badge {
	font-size: 85%;
	font-weight: bold;
	background-color: #FFF;
	border: 1px solid #DDD;
	padding: 2px 3px;
	text-decoration: none;
	line-height: 1.0;
}

a.service_type_badge:hover {
	color: #FFF;
	background-color: #999;
}

/* END service type styles */


/* BEGIN categories styles */

.categories_box {
	font-size: 90%;
}

ul.categories {
	float: left;
	overflow: hidden;
	margin: 0;
	padding: 0;
	list-style-type: none;
}

ul.categories li {
	display: inline;
}

ul.categories li span.title {
  line-height: 1.6;
  font-weight: bold;
  margin-right: 0.7em;
  vertical-align: middle;
}

ul.categories li span.main {
	display:-moz-inline-block;
	display:-moz-inline-box;
	display: inline-block;
	background-color: #FFC;
	margin-bottom: 0.4em;
	margin-right: 0.5em;
	padding: 0;
	border-top: 1px solid #DEDEDE;
	border-left: 1px solid #DEDEDE;
	border-right: 1px solid #999;
	border-bottom: 1px solid #999;
}

ul.categories li span.main a.category {
	line-height: 1.6;
	text-decoration: none;
	vertical-align: middle;
  padding: 3px 5px 2px 5px;
}

ul.categories li span.main a.category:hover {
	color: #000;
  background-color: #F0E68C;
}

ul.categories li span.main:hover {
	background-color: #F0E68C;
}

/* END categories styles */



/* BEGIN tag cloud styles */

div.tag_cloud a {
  font-family:Arial,Helvetica,sans-serif;
  color: #000099;        /* font color as on BioCatalogue */
  margin: 0 10px;        /* vertical margin doesn't seem to work, so adding line-height to make sure that selection borders on different lines do not overlap */
  line-height: 1.9em;
  padding: 0 4px 2px 4px;
  text-decoration: none;
  
  vertical-align: middle;
}

div.tag_cloud a:hover {
  color: orange;
}

div.tag_cloud a.unselected {
	/* 
	 * this style is used to make sure that equal space
	 * around anchor tags is taken by the transparent border
	 * even when the tag is not "selected" 
	 */
	border-style: solid;
	border-width: 2px;
	border-color: transparent;
}

div.tag_cloud a.unselected_ontological_term {
	/* 
	 * this style is used to make sure that equal space
	 * around anchor tags is taken by the transparent border
	 * even when the tag is not "selected" 
	 */
	border-style: solid solid double solid;
	border-width: 2px 2px 3px 2px;
	border-color: transparent transparent #000099 transparent;
}

#ontological_term{
    color:#3090C7	; /*Deep Sky Blue3*/
}

div.tag_cloud a.selected {
	border-style: solid;
	border-width: 2px;
	background: #D6E9FF;
}

div.tag_cloud a.selected_ontological_term {
	border-style: double double double double;
	border-width: 3px 3px 3px 3px;
	background: #D6E9FF;
}

/* END tag cloud styles */