@import url("base.css");

@import url("foundation.css");

table {
      border: 0;
}

pre {
    padding: 10px;
    background-color: #fafafa;
    color: #222;
    /* line-height: 1.0em; */
    border: 2px solid #C6C9CB;
    font-size: 0.9em;
    /* margin: 1.5em 0 1.5em 0; */
    margin: 0;
    border-right-style: none;
    border-left-style: none;
}

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

a:link {
    text-decoration: none;
}
a:visited {
    text-decoration: none;
}
a:active,
a:hover {
    text-decoration: none;
}

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

h1 { font-weight: bold; font-size: 24px; }
h2 { font-weight: bold; font-size: 18px; }
h3 { font-weight: bold; font-size: 16px; }
h4 { font-weight: bold; font-size: 14px; }

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;
    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 {
    padding: 0 3em;
}
blockquote cite,
blockquote em,
blockquote i {
    font-style: normal;
}
pre {
    background: #f7f7f7;
    color: #222;
    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,
hr {
    margin-bottom:10px;
}
ul ul,
ol ol,
ul ol,
ol ul {
    margin-bottom:0;
}
pre,
kbd,
tt,
var {
}
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-widget{
    padding: 8px 0px 8px 0px;
    color:#6f6f6f;
}

#footer-widget #search {
    width:120px;
    height:28px;
    background: #222;
    margin-left: 0px;
    position: relative;
    border: 1px solid #666;
}

#footer-widget #search #s {
    width:110px;
    height:23px;
    border:0px;
    margin-left:7px;
    margin-right:10px;
    margin-top:3px;
    color:#fff;
    display: inline;
    background: #222;
    float: left;
}

#footer-widget #calendar_wrap {
    padding: 8px 0px;
}

#footer-widget #wp-calendar td{
    padding:2px;
}


#footer-widget .textwidget {
    padding: 5px 0px;
    line-height: 23px;
}


#footer-widget .widget_tag_cloud a{
    text-decoration: none;
    margin: 5px;
    line-height: 24px;
    margin-left: 0px;
    color: #6f6f6f;
}

#footer-widget .widget_tag_cloud a:hover{
    color: #fff;
}

#footer-widget .widget-container ul li a    {
    color:#fd7800;
}

#footer-widget .widget-container ul li a:hover    {
    color: #ccc;
}

#footer-widget .widget-container h3 {
    color: #a5a5a5;
    text-transform: uppercase;
    margin-bottom: 0px;
    padding-top: 10px;
    padding-left: 0px;
    font-size: 25px;
    padding-bottom: 8px;
    font-weight: bold;
}

#footer-widget .widget-container ul li {
    padding: 5px 0px;
    background: none;
    }

#footer-widget ul {
    margin-left: 0px;
    }

#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; }
}


/*welcome*/
/*////////////////////////////////////////////////////////////////////////////////////////////*/
#welcome_container h1{
    margin-top: 0px;
}

/*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;
}


table {
    border-collapse:collapse;
}
table, th, td {
    border: 1px solid black;
    padding: 5px;
}