---
---

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

/* Base */

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

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

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

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

    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: bold;
  @include animation(secfadein 2s);

  color: white;
  .unit { padding: 10px 0 0px; }

  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: bold;
  text-align: center;
  border: 5px solid white;
  @include animation(secfadein 2s);

  color: white;

  .grid {
    display: table;
    width: 100%;
    .row {
      display: table-row;
      .tblunit1 {
        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;
  }

  a {
    line-height: 3em;
    color: #eee;
    text-decoration: none;
    @include transition(all .25s);
    &:hover { color: #fff; }
  }

}

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

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