/* General */
/*////////////////////////////////////////////////////////////////////////////////////////////*/

body {
	/* background: #ccc;
	font: normal 12px Verdana, sans-serif;
	color: #777;
	line-height:18px; */
	border-top: 4px solid #fd7800;
}
	
a {
	/* color: #000;
	outline: 0; */
}
	
a:link {
	text-decoration: none;
}
a:visited {
	text-decoration: none;
}
a:active,
a:hover {
	/* color: #ccc; */
	text-decoration: none;
}

h1,h2,h3,h4,h5,h6 {
	color: #000;
	margin-bottom: 18px;
}

h1 { font-weight: normal; font-size: 24px; line-height: 24px;  }
h2 { font-weight: normal; font-size: 18px; line-height: 18px;  }
h3 { font-weight: normal; font-size: 14px; line-height: 14px; }
h4 { font-weight: normal; font-size: 12px; line-height: 12px; }

hr {
	background-color: #c6c6c6;
	border:0;
	height: 1px;
	margin-bottom: 18px;
	clear:both;
}

div.hr {
  height: 1px;
  background: #c6c6c6;
}

div.hr2 {
  height: 1px;
  background: #c6c6c6;
}

div.hr hr, div.hr2 hr {
  display: none;
}

p {
	padding: 0 0 0.5em;
	line-height:1.6em;
}
ul {
	list-style: square;
	margin: 0 0 18px 0;
}
ol {
	list-style: decimal;
	margin: 0 0 18px 1.5em;
}
ol ol {
	list-style:upper-alpha;
}
ol ol ol {
	list-style:lower-roman;
}
ol ol ol ol {
	list-style:lower-alpha;
}
ul ul,
ol ol,
ul ol,
ol ul {
	margin-bottom:0;
}
dl {
	margin:0 0 24px 0;
}
dt {
	font-weight: bold;
}
dd {
	margin-bottom: 18px;
}
strong {
	font-weight: bold;
	color: #000;
}
cite,
em,
i {
	font-style: italic;
	border: none;
}
big {
	font-size: 131.25%;
}
ins {
	background: #FFFFCC;
	border: none;
	color: #333;
}
del {
	text-decoration: line-through;
	color: #555;
}
blockquote {
	font-style: italic;
	padding: 0 3em;
}
blockquote cite,
blockquote em,
blockquote i {
	font-style: normal;
}
pre {
	background: #f7f7f7;
	color: #222;
	line-height: 18px;
	margin-bottom: 18px;
	padding: 1.5em;
}
abbr,
acronym {
	border-bottom: 1px solid #666;
	cursor: help;
}
ins {
	text-decoration: none;
}
sup,
sub {
	height: 0;
	line-height: 1;
	vertical-align: baseline;
	position: relative;
	font-size: 10px;
}
sup {
	bottom: 1ex;
}
sub {
	top: .5ex;
}

p,
ul,
ol,
dd,
pre,
hr {
	margin-bottom:10px;
}
ul ul,
ol ol,
ul ol,
ol ul {
	margin-bottom:0;
}
pre,
kbd,
tt,
var {
	font-size: 15px;
	line-height: 21px;
}
code {
	font-size: 13px;
}
strong,
b,
dt,
th {
	color: #000;
}


/* main_container */
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#wrapper {
	padding: 0px 0px;
	margin-top: 20px;
}

/* header*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#search-header{
	margin-top:15px;
	padding-bottom:13px;
}

#search-header #search{
	background: #222;

}

#search-header #search #s{
	background: #222;
	font-size:12px;
	color: #aaa;
}

#header_container{
	padding-bottom: 25px;
	padding-top: 0px;
	background: #fff;
}

#header {

}

#header2 {

}

#content_container{
	padding-top: 15px;
}

#left-col {
	padding: 10px 20px;
	padding-left: 0px;
	background: #fff;

}


/*footer*/	
/*////////////////////////////////////////////////////////////////////////////////////////////*/


#footer {
	padding: 5px 20px;
	background: #ddd;
}

#footer-container{
	padding: 5px 20px;
	background: #303030;
	border-top: 8px solid #000;
	font-size:11px;
}

#footer-info {
	color:#ccc;
	text-align:left;
	background: #1b1b1b;
	padding: 20px 0;
}


#footer-info a{
	text-decoration:none;
	color: #fff;
}

#footer-info a:hover{
	color: #ebebeb;
}

#copyright{float: left;}

.scroll-top {
	text-align:right;
}

#footer-bar1 {
	padding-right: 40px;
}
#footer-bar2 {
	padding-right: 40px;
}
#footer-bar3 {
}
#footer-bar4 {
}

span#follow-box{
	position: absolute;
	right: 100px;	
}

span#follow-box img{
	margin: 0 2px;
}

/*logo*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#logo {
	margin: 0px 0px 0px 0px;
}

#logo2 {
	margin: 0px 0px 0px 0px;
}

#logo img{
	border: none;
}

#logo2{
	text-decoration: none;
	font-size: 42px;
	letter-spacing: -1pt;
	font-weight: bold;
	font-family:arial, "Times New Roman", Times, serif;
	text-align: left;
	line-height: 57px;
	padding-left: 0px;
}

#logo2 a, #slogan{
	color: #fd7800;
}

#slogan{
	text-align: left;
	padding-left: 0px;
}

/*search*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#search {
	width:180px;
	height:28px;
	border: 1px solid #ccc;
	margin-left: 10px;
	position: relative;
}

#sidebar #search {
	margin-top: 20px;
}

#search #searchsubmit {
	background:url(images/go-btn.png) no-repeat top right;
	width:28px;
	height:28px;
	border:0px;
	position:absolute;
	right: -35px;
}

#search #s {
	width:170px;
	height:23px;
	border:0px;
	margin-left:7px;
	margin-right:10px;
	margin-top:3px;
	color:#000;
	display: inline;
	float: left;
}

/*menu bar*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#menu_container{
	padding-top: 0px;
}


/*responsive menu*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

/* default style */
.selectnav { display: none; }

/* small screen */
@media screen and (max-width: 600px) {
  .js #nav { display: none; }
   .js #nav2 { display: none; }
  .js .selectnav { display: block; }
}


/*homepage boxes*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#box_container{
	padding-top: 35px;
	padding-bottom: 15px;
}

.box-head {
	float: left;
	padding-bottom: 20px;
}

.box-head img{

}

.title-head{
	padding-top:2px;
}

.title-box{
	color: #333;
	line-height: 15px;
	text-transform: uppercase;
}

.title-box h1 {
	font-size: 18px;
	margin-bottom: 3px;
}

.box-content {
	float: left;
	padding-top: 10px;
	line-height: 20px;
}


/* POST */
/*////////////////////////////////////////////////////////////////////////////////////////////*/


.post {
	overflow: hidden;
	
}

.post-shadow{
	background: url("images/post_shadow.png") no-repeat bottom;
	height: 9px;
	margin-bottom: 25px;
}

.post ol{
	margin-left: 20px;
}

.post ul {
	margin-left: 15px;
}
.post-entry ul { margin: 0 0 10px 10px; }
.post-entry ul li {
	display: block;
	margin: 5px 0;
	padding: 0 0 0 20px;
	/*background: url(images/bullet.png) no-repeat 0 7px;*/
}

.post-entry ol {
	list-style: decimal;
	margin: 0 0 18px 1.6em;
}
.post-entry ol li { 
	list-style: decimal;
 }

.post-entry {
	padding-bottom: 10px;
	padding-top: 10px;
	overflow: hidden;

}

.post-head {
	margin-bottom: 5px;
	padding-top: 15px;
}

.post-head h1 a, .post-head h1 {
	text-decoration:none;
	color:#000;
	margin: 0px;
	font-size: 27px;
}

.post-head h1 a:hover {
	color:#777;
}


.post-head-notfound h1, .post-head-404 h1, .post-head-archive h1, .post-head-search h1 {
	margin-bottom: 10px;
	font-weight:normal;
	text-decoration:none;
	color:#000;
	font-size: 27px;
}

.post-thumb img {
	border: 0px solid #ebebeb;
}

.post-entry img{
	margin-bottom: 10px;
	height:auto;
  	max-width:100% !important;
}

.meta-data{
	line-height: 16px;
	padding: 6px 3px;
	margin-bottom: 3px;
	font-size: 11px;
	border-bottom: 1px solid #e9e9e9;
}

.meta-data a{
	color: #fd7800;
}

.meta-data a:hover{
	color: #777;
}

.read-more {
color: #000;
	background: #fff;
	  padding: 4px 8px;
	  border-radius: 3px;	  
	  display: inline-block;
	  font-size: 11px;
	  font-weight: bold;
	  text-decoration: none;
	  text-transform: capitalize;
	  cursor: pointer;
	  margin-top: 20px;
}

.read-more:hover{
	background: #fff;
	color: #666;	
}

.clear {
	clear:both;
}

.sticky {
  
}

/* content */
/*////////////////////////////////////////////////////////////////////////////////////////////*/
#content_container table {
	border: 1px solid #e7e7e7;
	margin: 0 -1px 24px 0;
	text-align: left;
	width: 100%;
	
}
#content_container tr th,
#content_container thead th {
	color: #888;
	font-size: 12px;
	font-weight: bold;
	line-height: 18px;
	padding: 9px 10px;
}
#content_container tr td {

	padding: 6px 10px;
}
#content_container tr.odd td {
	background: #f2f7fc;
}

/* sidebar*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#sidebar {
	padding:0px 20px 20px 0px;
}

#sidebar ul  {
	list-style: none;
}

#sidebar { word-wrap: break-word;}

/*--navigation--*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

.navigation {
	float: left;
	width: 100%;
	margin: 20px 0;
}


.navigation .alignleft a {
	float: left;
}

.navigation .alignright a {
	float: right;
}

#nav-single {
    overflow:hidden;
    margin-top:20px;
    margin-bottom:10px;
}
.nav-previous {
    float: left;
    width: 50%;
}
.nav-next {
    float: right;
    text-align: right;
    width: 50%;
}

/*--slider--*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#slider_container {
	background: #fff;
}

.flex-caption{
background: #232323;	
color: #fff;
padding: 7px;
}

.flexslider p{
	margin: 0px;
}

/*--sub head and breadcrumbs--*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/

#subhead_container{
	padding: 7px 0px;
}

#subhead h1{
	color: #000;
	padding-top: 10px;
	padding-left: 0px;
	font-size: 30px;
}

#breadcrumbs {
	padding-left: 25px;
	margin-bottom: 15px;
	color: #9e9e9e;
	margin:0 auto;
	width: 964px;
	font-size: 10px;
}

#breadcrumbs a{
	text-decoration: none;
	color: #9e9e9e;
}

/*Alignments */
/*////////////////////////////////////////////////////////////////////////////////////////////*/

.alignleft,
img.alignleft {
	display: inline;
	float: left;
	margin-right: 22px;
	margin-top: 9px;
}

.alignright,
img.alignright {
	display: inline;
	float: right;
	margin-left: 22px;
	margin-top: 8px;
}
.aligncenter,
img.aligncenter {
	clear: both;
	display: block;
	margin-left: auto;
	margin-right: auto;
}

.alignleft,
.alignright,
.aligncenter,
img.alignleft,
img.alignright,
img.aligncenter
{
	margin-bottom: 10px;
}

a img.aligncenter {
	display:block;
	margin-left:auto;
	margin-right:auto;
}
