@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: normal; font-size: 24px; }
h2 { font-weight: normal; font-size: 18px; }
h3 { font-weight: bold;   font-size: 18px; }
h4 { font-weight: normal; font-size: 18px; }

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