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