---
---

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

}

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