---
---

@import "mixins";
@import "normalize";
@import "gridism";
@import "pygments";

/* Base */

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}


@include font-face(Lato, /assets/fonts/Lato/Lato-Light, 300, normal, eot wof2 woff);
@include font-face(Lato, /assets/fonts/Lato/Lato-Regular, 400, normal, eot wof2 woff);
@include font-face(Lato, /assets/fonts/Lato/Lato-Bold, 700, normal, eot wof2 woff);
@include font-face(Lato, /assets/fonts/Lato/Lato-Black, 900, normal, eot wof2 woff);

body {
  font: 300 21px Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;
  color: #333;
  background-color: #fff;
  /*border-top: 5px solid {{ site.highlight_color }};*/
  @include box-shadow(inset 0 3px 30px rgba(0,0,0,.3));
  text-shadow: 0 1px 1px rgba(0,0,0,.5);
  -webkit-font-feature-settings: "kern" 1;
  -moz-font-feature-settings: "kern" 1;
  -o-font-feature-settings: "kern" 1;
  font-feature-settings: "kern" 1;
  font-kerning: normal;
}

.clear {
  display: block;
}

.clear:after {
  content: "";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

.logo {
  padding-top: 8px;
}

/* Sections */

header,
section,
footer {
  float: left;
  width: 100%;
  clear: both;
}

/* Header */

header {

  h1,
  nav { display: inline-block; }

}

nav {

  ul {
    padding: 0;
    margin: 0;
  }

  li { display: inline-block; }
}

.main-nav {
  margin-top: 52px;

  ul {
    float: right;
  }

  li {
    margin-right: 10px;
    line-height: 140%;

    a {
      @include border-radius(10px);
      font-weight: 900;
      font-size: 14px;
      padding: 0.5em 1em;
      text-shadow: none;
      text-transform: uppercase;
      @include transition(all .25s);

      &:hover {
        background-color: #252525;
        color: white;
        // @include box-shadow(inset 0 1px 3px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.1));
        // text-shadow: 0 1px 3px rgba(0,0,0,.5);
      }
    }

    &.current {

      a {
        background-color: {{ site.highlight_color }};
        color: #FFF;
        // @include box-shadow(inset 0 1px 0 rgba(255,255,255,.5), 0 1px 5px rgba(0,0,0,.5));
        // text-shadow: 0 1px 0 rgba(255,255,255,.3);
      }
    }
  }
}

.pitch-add {
  font-size: 0.4em; 
  float: right;
}

.mobile-nav {

  ul {
    overflow: hidden;
    width: 100%;
    display: table;
  }

  a {
    float: left;
    width: 100%;
    background-color: #333;
    color: {{ site.highlight_color }};
    text-align: center;
    text-transform: uppercase;
    font-size: 14px;
    font-weight: 900;
    padding: 5px;
    @include border-radius(5px);
  }

  li {
    display: table-cell;
    width: 20%;
    padding: 8px 2px;
  }

  .current {

    a {
      background-color: {{ site.highlight_color }};
      color: #222;
      @include box-shadow(inset 0 1px 0 rgba(255,255,255,.5), 0 1px 5px rgba(0,0,0,.5));
      text-shadow: 0 1px 0 rgba(255,255,255,.3);
    }
  }
}

/*
 * This code is courtesy Ben Balter, modified by Parker Moore.
 * http://ben.balter.com/2014/03/13/pages-anchor-links/
 */
.header-link {
  position: relative;
  left: 0.5em;
  opacity: 0;
  font-size: 0.8em;
  @include transition(opacity 0.2s ease-in-out 0.1s);
}
h2:hover .header-link,
h3:hover .header-link,
h4:hover .header-link,
h5:hover .header-link,
h6:hover .header-link {
  opacity: 1;
}

@media (max-width: 768px) {
  .main-nav ul {
    text-align: right;
  }
}
@media (max-width: 830px) {
  .main-nav {
    .show-on-mobiles { display: inline; }
    .hide-on-mobiles { display: none; }
  }
}

/* Footer */

footer {
  background-color: #212121;
  font-size: 16px;
  padding-bottom: 5px;
  color: #c0c0c0;
  margin-top: 0px;

  a {
    color: #fff;

    &:hover {

      img { opacity: 1; }
    }
  }

  p {
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
  }

  .align-right {

    p { display: inline-block; }
  }

  img {
    display: inline-block;
    position: relative;
    top: 8px;
    margin-left: 5px;
    opacity: .8;
    padding: 1px;
    @include transition(opacity .2s);
  }
}

@media (max-width: 568px) {
  footer {
    .one-third p { margin-bottom: 0; }
    .two-thirds p { margin-top: -20px; }
  }
}


@include keyframes(secfadein) {
  from {
    opacity:0;
  }
  to {
    opacity:1;
  }
}

/* Intro */

.intro {
  background-color: #558C89;
  font-weight: 900;
  @include animation(secfadein 2s);

  color: white;

  a {
    color: white;
    &:hover {
        color: white;
    }
  }

  .unit {
    display: block;
    padding: 10px 0 0px;
    &:hover {
        background-color: lighten(#558C89, 5%);
    }
    .titlehead {
    // background: #fff;
      padding: 40px 20px 50px;
      text-align: left;
      text-transform: none;
      font-size: 50px;
      .codesym {
        color: #e1e1e1;
        font-size: 60px;
        padding: 0 2px;
        position: relative;
        top: 2px;
      }
      .ifbody {
        font-size: 31px;
        padding-left: 72px;
      }
    }
  }

  p {
    font-size: 1.75em;
    line-height: 1em;
    margin: 0;
  }

}

@media (min-width: 569px) {
  .intro p { font-size: 1.75em; }
}

/* Ingredients */

.ingredients {
  background-color: steelblue;
  font-weight: 900;
  text-align: center;
  border: 5px solid white;
  @include animation(secfadein 2s);

  color: white;

  .grid {
    display: table;
    width: 100%;
    .row {
      display: table-row;
      a {
        color: white;
        &:hover {
            color: white;
        }
      }
      .tblunit1 {
        font-size: 1.30em;
        display: table-cell;
        padding: 10px 0 0px;
        border-style: solid;
        border-color: white;
        border-width: 0px 2px;
        &:hover {
            background-color: lighten(steelblue, 5%);
        }
      }
      .tblunit2 {
        display: table-cell;
        padding: 10px 0 0px;
        border-style: solid;
        border-color: white;
        border-width: 0px 2px;
      }
    }
  }

  h2 {
    margin: 1em;
  }

  p {
    font-size: 1.2em;
    margin: 1em;
  }

}

.example {
  position: relative;
  border: 1px solid;
  margin: 10px;
  .title {
    $bg_color: #616D71;
    position: absolute;
    top: 0px;
    right: 0px;
    opacity: 0.8;
    border-radius: 5px;
    margin: 5px;
    padding: 0.3em;
    background-color: $bg_color;
    &:hover {
        background-color: lighten($bg_color, 5%);
    }
    font-weight: bold;
    font-size: 1.0em;
    color: white;

  }
  .code {
    display: block;
    top: 0px;
    div pre {
      width: 100%; // workaround
    }
    .tooltip {
      position: relative;
      text-decoration: underline;
      cursor: pointer;
      //Tooltip text container
      &::before {
        position: absolute;
        top: -1.8em;
        left: -0em;
        background-color: DarkSlateGrey;
        border-radius: 5px;
        color: #fff;
        font-family: Menlo, Consolas, Monaco, monospace;
        font-style: normal;
        content: attr(data-tooltip); //This pulls in the text from the element with the tooltip
        padding: 0.2em;
        text-transform: none;
        transition: all 0.5s ease;
      }

      //Tooltip arrow
      &::after {
        position: absolute;
        top: -0.2em;
        left: 9px;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-top: 5px solid DarkSlateGrey;
        content: " ";
        font-size: 0;
        line-height: 0;
        margin-left: -5px;
        width: 0;
      }

      //Setting up the transition
      &::before,
      &::after {
        color: #efefef;
        font-family: monospace;
        font-size: 16px;
        opacity: 0;
        pointer-events: none;
        text-align: center;
      }

      //Triggering the transition
      &:focus::before,
      &:focus::after,
      &:hover::before,
      &:hover::after {
        opacity: 1;
        transition: all 0.75s ease;
      }
    }
  }
}

@media (min-width: 569px) {
  .ingredients p { font-size: 1.2em; }
}
/* Quickstart */

.quickstart {
  background-color: #3F1F1F;
  color: #fff;
  margin: 60px 0;
  @include box-shadow(inset 0 3px 10px rgba(0,0,0,.4));

  .content { padding: 0; }

  h3 {
    font-size: 24px;
    line-height: 24px;
    margin-top: 20px;
    text-shadow: 0 1px 3px rgba(0,0,0,.8);
  }

  .code {
    font-size: 12px;
    display: block;
    margin: 0 0 -30px;
  }
}

@media (min-width: 768px) {
  .quickstart {

    .code {
      font-size: 18px;
      margin: -30px 0;
      float: right;
    }

    h3 {
      margin: 50px 0 0;
      text-align: center;
    }
  }
}

/* Code */

.quickstart {

  .code {
    display: block;
    padding: 0;
    font-family: Menlo, Consolas, "Courier New", Courier, "Liberation Mono", monospace;
    line-height: 1.3em;

    .title {
      display: block;
      text-align: center;
      margin: 0 20px;
      padding: 5px 0;
      @include border-radius(5px 5px 0 0);
      @include box-shadow(0 3px 10px rgba(0,0,0,.5));
      font: 400 16px/24px 'Helvetica Neue', Helvetica, Arial, sans-serif;
      color: #444;
      text-shadow: 0 1px 0 rgba(255,255,255,.5);
      background-color: #f7f7f7;
      background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y3ZjdmNyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjclIiBzdG9wLWNvbG9yPSIjY2ZjZmNmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
      background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), color-stop(7%, #cfcfcf), to(#aaaaaa));
      background-image: -webkit-linear-gradient(top, #f7f7f7 0%, #cfcfcf 7%, #aaaaaa 100%);
      background-image: -moz-linear-gradient(top, #f7f7f7 0%, #cfcfcf 7%, #aaaaaa 100%);
      background-image: -o-linear-gradient(top, #f7f7f7 0%, #cfcfcf 7%, #aaaaaa 100%);
      background-image: linear-gradient(top, #f7f7f7 0%,#cfcfcf 7%,#aaaaaa 100%);
      filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f7f7', endColorstr='#aaaaaa',GradientType=0 );
      border-bottom: 1px solid #111;
    }

    .shell {
      padding: 20px;
      text-shadow: none;
      margin: 0 20px;
      background-color: #171717;
      @include border-radius(0 0 5px 5px);
      @include box-shadow(0 5px 30px rgba(0,0,0,.3));
    }

    .line {
      display: block;
      margin: 0;
      padding: 0;

      span { display: inline-block; }
    }

    .path {
      color: #87ceeb;
      @include user-select(none);
    }

    .prompt {
      color: #cd5c5c;
      -webkit-user-select: none;  /* Chrome all / Safari all */
      -moz-user-select: none;     /* Firefox all */
      -ms-user-select: none;      /* IE 10+ */
      -o-user-select: none;
      user-select: none;
    }

    .command { color: #f0e68c; }

    .output { color: #888; }
  }
}

@media (min-width: 768px) {
  .free-hosting {

    img {
      float: left;
      margin: -20px -30px -30px -50px;
      width: 300px;
      height: 251px;
    }

    .pane-content {
      margin-top: 35px;
      padding-right: 30px;
    }

    p,
    a { font-size: 18px; }

    .pane:after {
      content: " ";
      float: right;
      background: url(../img/footer-arrow.png) top left no-repeat;
      width: 73px;
      height: 186px;
      position: absolute;
      right: 0;
      bottom: -30px;
    }
  }
}

/* Article - Used for both docs and news */


article {
  background-color: #fff;
//  @include border-radius(10px);
  padding: 20px;
  margin: 0 10px;
//  @include box-shadow(0 3px 10px rgba(0,0,0,.1));
//  border-right: thick solid #199acf;
  font-size: 16px;
}

@media (max-width: 480px) {
  article ul { padding-left: 20px; }
}

@media (max-width: 568px) {
  article { margin: 0; }
}

@media (min-width: 768px) {
  article {
    padding: 40px 40px 30px;
    font-size: 21px;
  }
}

/* Right-side nav - used by both docs and news */

aside {
  padding-top: 30px;
  border-left: thick solid #199acf;

  h4 {
    text-transform: uppercase;
    font-size: 14px;
    font-weight: 700;
    padding: 0 10px 10px 10px;
    display: inline-block;
    border-bottom: 1px solid #199ACF;
  }

  ul {
    padding-left: 0;

    &:first-child { margin-top: 0; }
  }

  li {
    padding-left: 10px;
    list-style-type: none;

    a {
      font-size: 16px;
      position: relative
    }

    &.current a:before {
      content: "";
      border-color: transparent transparent transparent #444;
      border-style: solid;
      border-width: 10px;
      width: 0;
      height: 0;
      position: absolute;
      top: 0;
      left: -30px;
    }
  }
}

/* Documentation */

.docs {

  article { min-height: 800px; }

  .content { padding: 0; }
}

.section-nav {
  text-align: center;
  padding-top: 40px;
  position: relative;
//  background: url(../img/article-footer.png) top center no-repeat;
  margin: 40px -20px 10px;

  > div { width: 49.5%; }

  a,
  span {
    color: #fff;
    font-size: 16px;
    text-transform: uppercase;
    font-weight: 700;
    padding: 8px 12px 10px;
    @include border-radius(5px);
    /*border: 1px solid #333;*/
    @include box-shadow(0 1px 3px rgba(0,0,0,.3), inset 0 1px 1px rgba(255,255,255,.5));
    background-color: #767676;
  }

  a:hover {
    color: #fff;
    background-color: #888;
  }

  .next,
  .prev { position: relative; }

  .next:after,
  .prev:before {
    font-size: 36px;
    color: #222;
    font-weight: 900;
    text-shadow: 0 1px 0 rgba(255,255,255,.4);
    position: absolute;
    top: -7px;
  }

  .next:after {
    content: '\203A';
    right: 10px;
  }

  .prev:before {
    content: '\2039';
    left: 10px;
  }

  .prev,
  .prev:hover { padding-left: 30px; }

  .next,
  .next:hover { padding-right: 30px; }

  .disabled {
    opacity: .5;
    cursor: default;
  }
}

.improve {
  padding-top: 25px;
  font-size: 16px;
  a {
    color: #999;
  }
}

.docs-nav-mobile select {
  color: #000;
  width: 100%;
}

/* News */

article h2:first-child { margin-top: 0; }

.post-category,
.post-meta {
  display: inline-block;
  vertical-align: middle;
  font-size: .8em;
}

.post-category {
  display: inline-block;
  margin-left: -30px;
  padding: 6px 10px 8px;
  padding-left: 50px;
  @include border-radius(0 5px 5px 0);
  position: relative;
  @include box-shadow(0 1px 5px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255,255,255,.2), inset 0 -1px 0 rgba(0,0,0,.3));
  background-color: #1B3850;
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzllMjgxMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM2ZjBkMGQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#1B3850), to(#204c69));
  background-image: -webkit-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: -moz-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: -o-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: linear-gradient(to bottom, #1B3850 0%,#204c69 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1B3850', endColorstr='#204c69',GradientType=0 );

  &:before {
    content: "";
    position: absolute;
    top: -10px;
    left: 0;
    border-color: transparent #204c69 #204c69 transparent;
    border-style: solid;
    border-width: 5px;
    width: 0;
    height: 0;
  }
}

.post-content img { max-width: 100% }

.label {
  float: left;
  text-transform: uppercase;
  font-weight: 700;
  text-shadow: 0 -1px 0 rgba(0,0,0,.5);
}

@media (max-width: 568px) {
  .post-category { padding-left: 30px; }
}

@media (min-width: 768px) {
  .post-category { margin-left: -50px; }
}

.avatar {
  @include border-radius(3px);
  display: inline-block;
  vertical-align: middle;
}

.post-meta {
  padding: 5px 0;
  color: #c0c0c0;
  font-weight: 600;
  text-shadow: 0 -1px 0 #000;
}

.post-date,
.post-author { margin-left: 10px; }

.news article + article {
  margin-top: -10px;
  @include border-radius(0 0 10px 10px);
  border-top: 1px solid #555;
  @include box-shadow(0 -1px 0 #2f2f2f);
}

/* Code Highlighting */


pre,
code {
  white-space: pre;
  display: inline-block;
  margin: 0;
  font: 14px/1.8em Menlo, Consolas, "Courier New", Courier, "Liberation Mono", monospace;
  padding: 0 0.5em;
}

@media (min-width: 768px) {
  pre, code { font-size: 16px; }
}

.highlight,
p > pre,
p > code,
p > nobr > code,
li > code,
h5 > code,
.note > code {
  background-color: #2b2b2b;
  color: #fff;
  @include border-radius(5px);
  @include box-shadow(inset 0 1px 10px rgba(0,0,0,.3),
    0 1px 0 rgba(255,255,255,.1),
    0 -1px 0 rgba(0,0,0,.5));
}

.note code {
  background-color: #333;
  background-color: rgba(0,0,0,0.2);
  margin-left: 2.5px;
  margin-right: 2.5px;
  font-size: 0.8em;
}

.highlight {
  margin: 1em 0;
  padding: 10px 0;
  width: 100%;
  overflow: auto;
}

/* HTML Elements */

h1, h2, h3, h4, h5, h6 { margin: 0; }

a {
  color: {{ site.highlight_color }};
  text-decoration: none;
  @include transition(all .25s);

  &:hover { color: {{ site.highlight_color_hover}}; }
}

strong { font-weight: 700; }

p { line-height: 1.5em; }

.left { float: left; }
.right { float: right; }
.align-right { text-align: right; }
.align-left { text-align: left; }
.align-center { text-align: center; }

/* Article HTML */

article {

  h2, h3, h4, h5, h6 { margin: 1em 0; }

  h4 { color: #000; }

  ul li {

    p { margin: 0; }

    blockquote { margin: 10px 0; }
  }

  ul li,
  ol li {
    line-height: 1.5em;
    margin-bottom: 0.5em;
  }

}

h5, h6 {
  font-size: 1em;
  font-style: italic;
}

blockquote {
  border-left: 2px solid #777;
  padding-left: 20px;
  font-style: italic;
  font-size: 18px;
  font-weight: 500;
}


/* Tables */

table {
  width: 100%;
  background-color: #555;
  margin: .5em 0;
  @include border-radius(5px);
  @include box-shadow(0 1px 3px rgba(0,0,0,.3));
}

thead {
  @include border-top-left-radius(5px);
  @include border-top-right-radius(5px);
  color: #fff;
  background-color: #ddd;
/*  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzNhM2EzYSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxZTFlMWUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#3a3a3a), to(#1e1e1e));
  background-image: -webkit-linear-gradient(top, #3a3a3a 0%, #1e1e1e 100%);
  background-image: -moz-linear-gradient(top, #3a3a3a 0%, #1e1e1e 100%);
  background-image: -o-linear-gradient(top, #3a3a3a 0%, #1e1e1e 100%);
  background-image: linear-gradient(to bottom, #3a3a3a 0%,#1e1e1e 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3a3a3a', endColorstr='#1e1e1e',GradientType=0 );
*/
  th {
    position: relative;
    @include box-shadow(inset 0 1px 0 rgba(255,255,255,.1));

    &:first-child {
      @include border-top-left-radius(5px);
    }

    &:last-child {
      @include border-top-right-radius(5px);
    }
  }
}

td { padding: .5em .75em; }

td p { margin: 0; }

th {
  text-transform: uppercase;
  font-size: 16px;
  padding: .5em .75em;
  text-shadow: 0 -1px 0 rgba(0,0,0,.9);
  color: #888;
}

tbody td {
  border-top: 1px solid #747474;
  border-top: 1px solid rgba(0,0,0,.1);
  @include box-shadow(inset 0 1px 0 rgba(255,255,255,.1));
  background-color: #eee;
/*  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.1)), to(rgba(255,255,255,0)));
  background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 100%);
  background-image: -moz-linear-gradient(top, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 100%);
  background-image: -o-linear-gradient(top, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 100%);
  background-image: linear-gradient(to bottom, rgba(255,255,255,0.1) 0%,rgba(255,255,255,0) 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1affffff', endColorstr='#00ffffff',GradientType=0 );
*/

  p {
    font-size: 16px;

    code { font-size: 14px; }
  }
}

code.option,
th .option,
code.filter,
th .filter {
  color: #50B600;
}

code.flag,
th .flag,
code.output,
th .output {
  color: #049DCE;
}

code.option,
code.flag,
code.filter,
code.output {
  margin-bottom: 2px;
}

/* Note types */

.note {
  margin: 30px 0;
  margin-left: -30px;
  padding: 20px 20px 24px;
  padding-left: 50px;
  @include border-radius(0 5px 5px 0);
  position: relative;
  @include box-shadow(0 1px 5px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255,255,255,.2), inset 0 -1px 0 rgba(0,0,0,.3));
  background-color: #7e6d42;
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzdlNmQ0MiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM1YzRlMzUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#7e6d42), to(#5c4e35));
  background-image: -webkit-linear-gradient(top, #7e6d42 0%, #5c4e35 100%);
  background-image: -moz-linear-gradient(top, #7e6d42 0%, #5c4e35 100%);
  background-image: -o-linear-gradient(top, #7e6d42 0%, #5c4e35 100%);
  background-image: linear-gradient(to bottom, #7e6d42 0%,#5c4e35 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7e6d42', endColorstr='#5c4e35',GradientType=0 );
}

@media (max-width: 568px) {
  .note { margin-right: -30px; }
}

@media (min-width: 768px) {
  .note { margin-left: -50px; }
}

.configtable {
    font-size: 14px;
}

.note {
  &:before {
    content: "";
    position: absolute;
    top: -10px;
    left: 0;
    border-color: transparent #222 #222 transparent;
    border-style: solid;
    border-width: 5px;
    width: 0;
    height: 0;
  }

  h5,
  p {
    margin: 0;
    color: #fff;
  }

  h5 {
    line-height: 1.5em;
    font-weight: 900;
    font-style: normal;
  }

  p {
    font-weight: 400;
    font-size: .75em;
  }

  &:after {
    content: '\2605';
    color: {{ site.highlight_color }};
    position: absolute;
    top: 14px;
    left: 14px;
    font-size: 28px;
    font-weight: 700;
    text-shadow: 0 -1px 0 rgba(0,0,0,.5);
  }
}

.info {
  background-color: #0389aa;
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAzODlhYSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDYxN2YiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#0389aa), to(#00617f));
  background-image: -webkit-linear-gradient(top, #0389aa 0%, #00617f 100%);
  background-image: -moz-linear-gradient(top, #0389aa 0%, #00617f 100%);
  background-image: -o-linear-gradient(top, #0389aa 0%, #00617f 100%);
  background-image: linear-gradient(to bottom, #0389aa 0%,#00617f 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0389aa', endColorstr='#00617f',GradientType=0 );
}

.warning {
  background-color: #1B3850;
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzllMjgxMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM2ZjBkMGQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#1B3850), to(#204c69));
  background-image: -webkit-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: -moz-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: -o-linear-gradient(top, #1B3850 0%, #204c69 100%);
  background-image: linear-gradient(to bottom, #1B3850 0%,#204c69 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1B3850', endColorstr='#204c69',GradientType=0 );
}

.unreleased {
  background-color: #cd9239;
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2NkOTIzOSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhMjc1MjgiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(205,146,57,1)), to(rgba(162,117,40,1)));
  background-image: -webkit-linear-gradient(top, rgba(205,146,57,1) 0%, rgba(162,117,40,1) 100%);
  background-image: -moz-linear-gradient(top, rgba(205,146,57,1) 0%, rgba(162,117,40,1) 100%);
  background-image: -o-linear-gradient(top, rgba(205,146,57,1) 0%, rgba(162,117,40,1) 100%);
  background-image: linear-gradient(to bottom, rgba(205,146,57,1) 0%,rgba(162,117,40,1) 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cd9239', endColorstr='#a27528',GradientType=0 );
}

.info:before { border-color: transparent #00617f #00617f transparent; }

.warning:before { border-color: transparent #204c69 #204c69 transparent; }

.unreleased:before { border-color: transparent #664719 #664719 transparent; }

.info:after {
  content: '\24D8';
  color: #fff;
  position: absolute;
  top: 15px;
  left: 15px;
  font-size: 28px;
  font-weight: 700;
  text-shadow: 0 -1px 0 rgba(0,0,0,.5);
}

.warning:after {
  content: '\203C';
  color: {{ site.highlight_color }};
  position: absolute;
  top: 15px;
  left: 15px;
  font-size: 32px;
  font-weight: 700;
  text-shadow: 0 -1px 0 rgba(0,0,0,.5);
}

.unreleased:after {
  content: '\2692';
  color: #2b2a12;
  position: absolute;
  top: 8px;
  left: 15px;
  font-size: 38px;
  font-weight: 700;
  text-shadow: 0 1px 0 rgba(255,255,255,.25);
}

/* Responsive tables */

@media (max-width: 768px) {
  .mobile-side-scroller {
    overflow-x: scroll;
    margin: 0 -40px;
    padding: 0 10px;
  }
}


.show-on-mobiles {
  display: none;
}

@media screen and (max-width: 568px) {
  .show-on-mobiles {
    display: block !important;
  }
  a .show-on-mobiles {
    display: inline !important;
  }
}


/* Helper class taken from Bootstrap.
   Hides an element to all devices except screen readers.
*/
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.inner-center {
  display: table;
  margin: 0 auto;
}

#return-to-top {
    position: fixed;
    bottom: 20px;
    right: 20px;
    background: rgb(0, 0, 0);
    background: rgba(0, 0, 0, 0.7);
    width: 50px;
    height: 50px;
    display: block;
    text-decoration: none;
    -webkit-border-radius: 35px;
    -moz-border-radius: 35px;
    border-radius: 35px;
    display: none;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}
#return-to-top i {
    color: #fff;
    margin: 0;
    position: relative;
    left: 16px;
    top: 13px;
    font-size: 19px;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}
#return-to-top:hover {
    background: rgba(0, 0, 0, 0.9);
}
#return-to-top:hover i {
    color: #fff;
    top: 5px;
}


.secbtn {
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin: 10px;
	border: 1px solid rgba(0,0,0,0.4) ;
	box-shadow: inset 0 1px 0 0 rgba(255,255,255,0.5),
				0 0 1px 1px rgba(255,255,255,0.8),
				0 0 0 6px rgba(0,0,0,0.06),
				0 0 0 3px rgba(0,0,0,0.1);
	cursor: pointer;
    .title {
        padding: 10px;
        float: left;
        color: #fff;
        font-weight: 800;
        font-size: 20px;
        text-shadow: 1px 1px rgba(0,0,0,0.2);
        text-align: center;
        border-right: 1px solid rgba(255,255,255,0.3);
    }
    .tag {
        padding: 10px;
        float: left;
        color: rgba(0,0,0,0.4);
        font-weight: 800;
        font-size: 20px;
        text-shadow: 1px 1px rgba(255,255,255,0.3);
        text-align: left;
        border-left: 1px solid rgba(0,0,0,0.2);
    }
}

/* colors */
.btnyellow {
	background: rgb(255,214,94);
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZDY1ZSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZWJmMDQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top,  rgba(255,214,94,1) 0%, rgba(254,191,4,1) 100%);
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,214,94,1)), color-stop(100%,rgba(254,191,4,1)));
	background: -webkit-linear-gradient(top,  rgba(255,214,94,1) 0%,rgba(254,191,4,1) 100%);
	background: -o-linear-gradient(top,  rgba(255,214,94,1) 0%,rgba(254,191,4,1) 100%);
	background: -ms-linear-gradient(top,  rgba(255,214,94,1) 0%,rgba(254,191,4,1) 100%);
	background: linear-gradient(top,  rgba(255,214,94,1) 0%,rgba(254,191,4,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffd65e', endColorstr='#febf04',GradientType=0 );
}

.btnyellow:hover {
	background: rgb(254,191,4);
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZlYmYwNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmQ2NWUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top,  rgba(254,191,4,1) 0%, rgba(255,214,94,1) 100%);
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(254,191,4,1)), color-stop(100%,rgba(255,214,94,1)));
	background: -webkit-linear-gradient(top,  rgba(254,191,4,1) 0%,rgba(255,214,94,1) 100%);
	background: -o-linear-gradient(top,  rgba(254,191,4,1) 0%,rgba(255,214,94,1) 100%);
	background: -ms-linear-gradient(top,  rgba(254,191,4,1) 0%,rgba(255,214,94,1) 100%);
	background: linear-gradient(top,  rgba(254,191,4,1) 0%,rgba(255,214,94,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#febf04', endColorstr='#ffd65e',GradientType=0 );
}

.btngreen {
	background: rgb(143,200,0);
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhmYzgwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM2NjhlMDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top,  rgba(143,200,0,1) 0%, rgba(102,142,0,1) 100%);
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(143,200,0,1)), color-stop(100%,rgba(102,142,0,1)));
	background: -webkit-linear-gradient(top,  rgba(143,200,0,1) 0%,rgba(102,142,0,1) 100%);
	background: -o-linear-gradient(top,  rgba(143,200,0,1) 0%,rgba(102,142,0,1) 100%);
	background: -ms-linear-gradient(top,  rgba(143,200,0,1) 0%,rgba(102,142,0,1) 100%);
	background: linear-gradient(top,  rgba(143,200,0,1) 0%,rgba(102,142,0,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8fc800', endColorstr='#668e00',GradientType=0 );
}
.btngreen:hover {
	background: rgb(102,142,0);
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzY2OGUwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM4ZmM4MDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top,  rgba(102,142,0,1) 0%, rgba(143,200,0,1) 100%);
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(102,142,0,1)), color-stop(100%,rgba(143,200,0,1)));
	background: -webkit-linear-gradient(top,  rgba(102,142,0,1) 0%,rgba(143,200,0,1) 100%);
	background: -o-linear-gradient(top,  rgba(102,142,0,1) 0%,rgba(143,200,0,1) 100%);
	background: -ms-linear-gradient(top,  rgba(102,142,0,1) 0%,rgba(143,200,0,1) 100%);
	background: linear-gradient(top,  rgba(102,142,0,1) 0%,rgba(143,200,0,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#668e00', endColorstr='#8fc800',GradientType=0 );
}


.highlight .lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; }
.highlight pre code { display: block; white-space: pre; overflow-x: auto; word-wrap: normal; font-size: 10px; }
