/* Pontano+Sans */

@import url(//fonts.googleapis.com/css?family=Jura:400);
@import url(//fonts.googleapis.com/css?family=Pontano+Sans);

body {
	background: #fff;
	margin:0;
	padding:0;
	font-family: 'Pontano Sans', Arial, Helvetica, sans-serif;
	font-size: 16px;
	color: #242A75;
}

* {
	margin:0;
	padding:0;
}

/** element defaults **/
table {
	width: 95%;
	text-align: left;
}

table a {
	color: #FF6633;
	font-style: italic;
}

table a:hover {
	color: #242A75;
	font-style: italic;
}

article table {
	width: 100%;
	text-align: left;
	/**border:1px solid black;**/
	font-style: normal;
	font-size: 14px;
}

th, td {
	padding: 10px 10px;
}

th {
	color: #242A75;
	background: #F8F8F8 none repeat-x scroll left top;
}

/**
td {
	border-bottom: 1px solid #ccc;
}
**/

code, blockquote {
	display: block;
	border-left: 5px solid #222;
	padding: 10px;
	margin-bottom: 20px;
}
code {
	background-color: #222;
	color:#ccc;
	border: none;
}
blockquote {
	border-left: 5px solid #222;
}

blockquote p {
	font-style: italic;
	font-family: Pontano Sans, "Times New Roman", Times, serif;
	margin: 0;
	color: #333;
	height: 1%;
}

p {
	/*line-height: 1.9em;*/
	margin-bottom: 20px;
}

a {
	text-decoration: none;
	color: #242A75;
}

a:hover {
	color: #FFCC00;
}

a:focus {
	outline: none;
}

.box {
	color: #fff;
    /*background: #1791AB; substituted with FFCC00*/
	background: #FF6633;
	padding: 10px 25px;
    border-radius: 6px
    transition-property: background, border-radius;
    transition-duration: 0.5s;
    transition-timing-function: linear;
	text-transform:none;
	margin-left: 200px;
  }
.box:hover {
	box-shadow: 0 200px 100px -100px white inset;
  }

a.button { 
	margin-right: 190px;
    background-color: #FFCC00;
    border-radius: 8px 8px 8px 8px;
    color: #fff;
    display: inline-block;
    font-size: 13px;
    font-weight: bold;
    padding: 10px 25px;
    text-decoration: none;
}

.curl-top-right {
  display: inline-block;
  position: relative;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
}
.curl-top-right:before {
  pointer-events: none;
  position: absolute;
  content: '';
  height: 0;
  width: 0;
  top: 0;
  right: 0;
  background: white;
  /* IE9 */
  background: linear-gradient(225deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
  box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.4);
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: width, height;
  transition-property: width, height;
}
.curl-top-right:hover:before, .curl-top-right:focus:before, .curl-top-right:active:before {
  width: 25px;
  height: 25px;
}


fieldset {
	display: block;
	border: none;
	border-top: 1px solid #ccc;
}

fieldset legend {
	font-weight: bold;
	font-size: 13px;
	padding-right: 10px;
	color: #333;
}

fieldset form {
	padding-top: 15px;
}

fieldset p label {
	float: left;
	width: 150px;
}

form input, form select, form textarea {
	padding: 5px;
	color: #333333;
	border: 1px solid #ddd;
	border-right:1px solid #ccc;
	border-bottom:1px solid #ccc;
	background-color:#fff;
	font-family: Pontano Sans, Helvetica, sans-serif;
	font-size: 13px;
}

form input.formbutton {
	border: none;
	background: #FF6633;
	color: #ffffff;
	font-weight: bold;
	padding: 6px 10px;
	font-size: 12px;
	letter-spacing: 1px;
	width: auto;
	overflow: visible;
}

form.searchform input {
  font-size: 15px;
    padding: 6px;
}

form.searchform p {
	margin: 5px 0;
}


span.required {
	color: #ff0000;
}

h1 {
	color: #FF6633;
	font-size: 35px;
	font-family: 'Jura',Arial,sans-serif;
}

h2 {
	color: #FF6633;
	font-size: 24px;
	letter-spacing: 0px;
	font-weight: normal;
	padding: 0 0 5px;
	margin: 0;
	font-family: 'Jura',Arial,sans-serif;
}

h3 {/*
	color: #FF6633;
	font-size: 20px;
	font-weight: normal;
	margin-bottom: 10px;
	letter-spacing: -1px;
	font-family: 'Jura',Arial,sans-serif;
	*/
	
    display: block;
    font-family: 'Jura',Arial,sans-serif;
    font-size: 15px;
    letter-spacing: 0;
	margin: 0;
    padding: 15px 0px;
    text-decoration: none;
    text-transform: uppercase;
	color: #FF6633; 
	font-weight:bold;
}

h4 {
    font-family: 'Pontano Sans', Arial, sans-serif;
    color: #FF3300;
    font-size: 14px;
    font-weight: normal;
    padding-bottom: 10px;
    text-transform: uppercase;
}

h5 {
	padding-bottom: 10px;
	font-size: 16px;
	color: #999;
}

ul, ol {
	margin: 0 0 35px 35px;
}

li {
	padding-bottom: 5px;
}

li ol, li ul {
	font-size: 1.0em;
	margin-bottom: 0;
	padding-top: 5px;
}

.width {
	width: 1100px;
	margin: 0 auto;
}

.width-started {
	width: 1100px;
	margin-left: 150px;
}

.logo {
	padding-top: 5px;
	padding-right: 5px;
}

.logo-left {
padding-top: 5px;
	text-align: left;
	padding-right: 5px;
}

.logo-right {
padding-top: 5px;
	text-align: right;
	padding-left: 5px;
}

#container {
	background-color: #fff; /* C5D6E8 */
	position:absolute;
	left:0;
	right:0;
}

.caption {
	/*padding: 2px 2px;*/
	text-align:center;
	font-size: small;
	font-style: normal;
	font-weight: bold;	
}

header {
	padding: 2px 2px;
	/*background: #fff; /*  C5D6E8*/
	/*background-image:linear-gradient(to left, #C5D6E8, white 90%);*/
	background-image:linear-gradient(to left, #FFCC00, white 90%);
	/* margin: 0 auto; */
	text-align:right;
}

header table td {
	border: none;
}

header h1 a, header h1 a:hover {
 color: #000;
    font-size: 55px;
    font-weight: normal;
    letter-spacing: -2px;
    line-height:45px;
    text-decoration: none;
    text-transform: lowercase;
}
header h1 a span { 
	color: #FF6633;
}

header h2 {
	color: #c0c0c0;
	font-size: 13px;
	position: relative;
	top: -5px;
	letter-spacing: 0;
}

/* background-color: #222 */
nav {
	/*background-image:linear-gradient(to left, #C5D6E8, white 90%);*/
	background-image:linear-gradient(to left, #FFCC00, white 90%);
	/* background-color: #C5D6E8; /* fff */
	border-bottom: 5px solid #FF6633;
	height: 45px;
}

nav ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

nav ul li {
	float: left;
	display: block;
	padding: 0;
}


nav ul li a {
    color: #707070;
    display: block;
    font-family: 'Jura',Arial,sans-serif;
    font-size: 15px;
    letter-spacing: 0;
	margin: 0;
    padding: 15px 17px;
    text-decoration: none;
    text-transform: uppercase;
}
nav ul li.selected a,
nav ul li.selected a:hover { 
	/*background-color: #FF6633;*/
	color: #FF6633; 
	background: url("images/arrow.png") no-repeat center bottom;
	background-position: 50% 93%;
	-webkit-transform: scale(1);
        -moz-transform: scale(1);
			-o-transform: scale(1);
				transform: scale(1);	
}


nav ul li a:hover {
	color: #FF6633;
	
	/*transition*/
	-webkit-transition:all 1s ease;
		-moz-transition:all 1s ease;
			-o-transition:all 1s ease;
				transition:all 1s ease;
	
}

.right-nav {
	text-align: right;
}

.divider-vertical-second-menu{
	height: 12px;
	width: 1px;
	padding-bottom: 4px;
	margin-top: 16px;
	overflow: hidden;
	background-color: #DDD;
	border-right: 2px solid #FFF;
	position: bottom;
}

#hrdiv {
	border-top: 2px solid #AE9071;
	background-image:url("images/bg_breadcrumb.jpg");
	background-repeat:repeat-x;
}


img.header-image { padding-top: 10px;
			margin-bottom: -3px; }

#body {
	background: none;
	margin: 5px auto 0;
 	padding: 0;
	clear: both;
}

#content {
    float: left;
    width: 71%;
}

article {
    padding: 10px 10px 20px 5px;
}

article h2 { 
	font-weight: bold;
    padding-bottom: 0;
}

article p {
	text-align: justify;
	font-style: normal;
	font-weight: normal;
}

article table li {
	text-align: justify;
	font-style: normal;
	font-weight: normal;
}

#construction ul {
	margin: 0 0 5px 25px;
}


article .article-info {
    color: #999999;
    font-size: 12px;
    font-style: italic;
    padding: 0 0 10px 0;
}

article .article-info a { 
	color: #666;
}


.sidebar {
    float: right;
    width: 28%;
	margin-top: 10px;
}

.sidebar h4 {
	padding-bottom: 0;
	font-size: 16px;
	text-decoration: none;
	text-transform: none;
	font-weight: normal;
	color: #FF6633;
	padding: 3px 3px;
	font-family: 'Jura',Arial,sans-serif;
	/*border-bottom: 6px solid #DFE8F2;*/
}

.sidebar ul {
	margin: 0;
	padding: 0;
	list-style: none;
	text-decoration: none;
}

.sidebar ul li {
	margin-bottom: 0px;
	line-height: 1.5em;
	text-decoration: none;
}

.sidebar li ul {
    list-style: none outside none;
	text-decoration: none;
    margin: 0px;
	border-top:1px solid #DFE8F2;
}

.sidebar li ul li {
	display: block;
	text-decoration: none;
	border-top: none;
	padding: 4px;
	margin: 0;
	line-height: 1.5em;
	font-size: 12px;
}

.sidebar li ul li.text { 
	border-bottom: none;
	text-decoration: none;
}

.sidebar a {
	font-weight: normal;
	color: #242A75;
	text-decoration: none;
	font-size: 13px;

}

.sidebar a:hover {
	color: #FF6633;
	text-decoration: none;
}

.sidebar li ul li a {
	font-weight: normal;
	color: #242A75;
	text-decoration: none;
}

.sidebar li ul li a:hover {
	color: #FF6633;
	text-decoration: none;
}


.sidebar li ul li a.readmore {
   color: #FF6633;
   font-weight: bold;
   text-decoration: none;
}


.sidebar li ul li a.readmore:hover {
	color: #FF3300;
}




.clear {
	clear: both;
}

footer {
	/*margin:20px auto 0;*/
	/*background: #C5D6E8; /* fff */
	background-image:linear-gradient(to left, #FFCC00, white 90%);
	border-top: 8px solid #FF6633;
}

#footer-features {
	margin: 400em auto 0;
	background-image:linear-gradient(to left, #FFCC00, white 90%);
	border-top: 8px solid #FFCC00;
}

#footer-start {
	/*margin: 165em auto 0;*/
	/*margin: 300em auto 0;*/
	margin: 350em auto 0;
	background-image:linear-gradient(to left, #FFCC00, white 90%);
	border-top: 8px solid #FFCC00;
}

footer p {
	text-align: right;
	color: #FFCC00;
	font-size: 12px;
	margin: 0;
	padding: 0;
}

footer table {
	font-family: 'Jura',Arial,sans-serif;

}

footer p a {
	color: #ccc;
	font-weight: bold;
}

.footer-content {
	padding: 20px 25px 10px;
}

footer .footer-content ul {
	width: 220px;
	list-style: none;
	margin: 0 60px 0 0;
	padding: 0;
	float: left;
}

footer .footer-content li {
	padding: 5px 5px;
}

footer .footer-content li a, footer .footer-content h4 {
}

footer .footer-content li a {
	color: #242A75;
    font-size: 13px;
    text-decoration: none;
	font-family: 'Jura',Arial,sans-serif;
}

footer .footer-content li a:hover { 
	color: #909090;
}

footer .footer-content h4 {
	color: #FF6633;
    font-size: 24px;
	font-family: 'Jura',Arial,sans-serif;
    font-weight: normal;
	text-transform: none;
    padding-bottom: 0;
	border-bottom:2px solid white;
}

footer .footer-content ul.endfooter {
	margin-right: 0;
}
footer .footer-bottom {
	padding: 10px;
	text-align: center;
	background-color: #000;
}

footer .footer-bottom p {
	text-align: right;
}

footer .footer-bottom p, footer .footer-bottom p a {
	color: #666;
}

footer .right-footer {
	text-align: right;
	color: #707070;
	font-size: 15px;
}

footer table td{
	border:none;
}


/* ------------ TABS --------- */
		.tabs {
		  width: 800px;
		  float: none;		  
		  position: relative;
		  margin: 10px 0 0 10px;
		  text-align: left;
		  -moz-box-sizing: border-box;
		  -webkit-box-sizing: border-box;
		  box-sizing: border-box;
		}
		.tabs li {
		  float: left;
		  display: block;		  
		}
		
		.listInTabs li {
			display: list-item;
			float: none;
		}
		
		.tabs input[type="radio"] {
		  position: absolute;
		  top: -9999px;
		  left: -9999px;
		}
		.tabs label {
		  display: block;
		  padding: 16px 28px;
		  border-radius: 3px 3px 0 0;
		  font-size: 14px;
		  font-weight: normal;
		  font-family: 'Jura',Arial,sans-serif;
		  text-transform: uppercase;
		  background: #E0E0E0    ;
		  cursor: pointer;
		  position: relative;
		  top: 4px;
		  -moz-transition: all 0.2s ease-in-out;
		  -o-transition: all 0.2s ease-in-out;
		  -webkit-transition: all 0.2s ease-in-out;
		  transition: all 0.2s ease-in-out;
		}
		.tabs label:hover {
		  background: #F8F8F8;
		}
		.tabs .tab-content {
		  z-index: 2;
		  display: none;
		  overflow: hidden;		  
		  width: 100%;
		  font-size: 16px;
		  line-height: 25px;
		  padding: 25px;
		  position: absolute;
		  top: 53px;
		  left: 0;
		  background: #F8F8F8;
		}
		
		.tabs [id^="tab"]:checked + label {
		  top: 0;
		  padding-top: 17px;
		  background: #F8F8F8;
		}
		.tabs [id^="tab"]:checked ~ [id^="tab-content"] {
		  display: block;
		}

		p.link {
		  clear: both;
		  margin: 380px 0 0 15px;
		}
		p.link a {
		  text-transform: uppercase;
		  text-decoration: none;
		  display: inline-block;
		  color: #fff;
		  padding: 5px 10px;
		  margin: 0 5px;
		  background-color: #612e76;
		  -moz-transition: all 0.2s ease-in;
		  -o-transition: all 0.2s ease-in;
		  -webkit-transition: all 0.2s ease-in;
		  transition: all 0.2s ease-in;
		}
		p.link a:hover {
		  background-color: #522764;
		}

/*----------- END OF TABS -------*/

 

/**** center images *****/
img.center {
    display: block;
    margin-left: auto;
    margin-right: auto;
}


/******Download Page*****/
.features-table
{
  width: 90%;
  margin: 0 auto;
  border-collapse: separate;
  border-spacing: 0;
  text-shadow: 0 1px 0 #fff;
  color: #242A75;
  background: #fafafa;  
  background-image: -moz-linear-gradient(top, #fff, #eaeaea, #fff); /* Firefox 3.6 */
  background-image: -webkit-gradient(linear,center bottom,center top,from(#fff),color-stop(0.5, #eaeaea),to(#fff)); 
}

.features-table td
{
  height: 50px;
  line-height: 50px;
  padding: 0 20px;
  border-bottom: 1px solid #cdcdcd;
  box-shadow: 0 1px 0 white;
  -moz-box-shadow: 0 1px 0 white;
  -webkit-box-shadow: 0 1px 0 white;
  white-space: nowrap;
  text-align: center;
}


.features-table tbody td
{
  text-align: center;
  font: normal 14px 'Pontano Sans', Arial, Helvetica;
  width: 150px;
}

.features-table tbody td:first-child
{
  width: auto;
  text-align: left;
}

.features-table td:nth-child(2)
{
  background: #F8F8F8 ;
  /* background: rgba(144,144,144,0.15); */
  border-right: 1px solid white;
}

.features-table td:nth-child(3)
{
  background: #F8F8F8 ;
  /* background: rgba(144,144,144,0.15); */
  border-right: 1px solid white;
}

.features-table td:nth-child(4)
{
  background: #F8F8F8 ;  
  /* background: rgba(184,243,85,0.3); */
}

/*Header*/
.features-table thead td
{
  font: bold 1.2em 'Pontano Sans', Arial;  
  -moz-border-radius-topright: 10px;
  -moz-border-radius-topleft: 10px; 
  border-top-right-radius: 10px;
  border-top-left-radius: 10px;
  border-top: 1px solid #eaeaea; 
}

.features-table thead td:first-child
{
  border-top: none;
}

/*Footer*/
.features-table tfoot td
{
  font: 14px 'Pontano Sans';  
  -moz-border-radius-bottomright: 10px;
  -moz-border-radius-bottomleft: 10px; 
  border-bottom-right-radius: 10px;
  border-bottom-left-radius: 10px;
  border-bottom: 1px solid #dadada;
}

.features-table tfoot td:first-child
{
  border-bottom: none;
  text-align: left;
}