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

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

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

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

img { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
