// ------------------------------------------------------------------------------
//   Variables - Colors, Fonts, etc.
// ------------------------------------------------------------------------------
$kss-colors-background    : #fff;

$kss-colors-foreground    : #444;
$kss-colors-heading       : #111;
$kss-colors-quotes        : #666;

$kss-colors-link          : #0645ad;
$kss-colors-link-visited  : #0645ad;
$kss-colors-link-hover    : lighten($kss-colors-link, 20%);
$kss-colors-link-active   : #faa700;

$kss-font-body            : Helvetica, 'Helvetica Neue', Arial, sans-serif;
$kss-font-code            : Menlo, 'Ubuntu Mono', 'Lucida Console', 'Courier New', Courier, monospace;

$kss-font-size            : 16px;
$kss-vertical-rhythm      : $kss-font-size * 1.5;

// ------------------------------------------------------------------------------
// Wrap all of this builder's base HTML styling inside a .kss-style selector.
// ------------------------------------------------------------------------------

.kss-style {
  color: $kss-colors-foreground;
  font-family: $kss-font-body;
  font-size: $kss-font-size;
  line-height: $kss-vertical-rhythm;

  a {
    color: $kss-colors-link;
    text-decoration: none;
    transition-property: color;
    transition-duration: 0.5s;

    &:visited { color: $kss-colors-link-visited; }
    &:hover,
    &:focus   { color: $kss-colors-link-hover;   }
    &:active  { color: $kss-colors-link-active;  }

    &:hover,
    &:active {
      outline: 0;
    }
  }

  p {
    margin: ($kss-vertical-rhythm/2) 0 $kss-vertical-rhythm 0;
  }

  h1, h2, h3, h4, h5, h6 {
    margin: $kss-vertical-rhythm 0 0 0;
    font-family: $kss-font-body;
    color: $kss-colors-heading;
    line-height: 1.15em;
  }

  h4, h5, h6 {
    font-weight: bold;
  }

  h1 { font-size: $kss-font-size * 2.5;   }
  h2 { font-size: $kss-font-size * 2.25;  }
  h3 { font-size: $kss-font-size * 2.125; }
  h4 { font-size: $kss-font-size * 2;     }
  h5 { font-size: $kss-font-size * 1.875; }
  h6 { font-size: $kss-font-size * 1.75;  }

  blockquote {
    color: $kss-colors-quotes;
    margin: 0;
    padding-left: $kss-vertical-rhythm;
    border-left: 0.5em mix($kss-colors-quotes, $kss-colors-background, 25%) solid;
  }

  hr {
    display: block;
    height: 2px;
    border: 0;
    border-top: 1px solid lighten($kss-colors-foreground, 60%);
    border-bottom: 1px solid darken($kss-colors-background, 10%);
    margin: $kss-vertical-rhythm 0;
    padding: 0;
  }

  pre, code, kbd, samp {
    font-family: $kss-font-code;
    color: mix($kss-colors-foreground, $kss-colors-heading, 50%);
    font-size: 1em;
  }

  pre {
    white-space: pre;
    overflow: scroll;
  }

  ins {
    color: $kss-colors-heading;
    background: #ff9;
    text-decoration: none;
  }

  mark {
    color: $kss-colors-heading;
    background: #ff0;
    font-weight: bold;
  }

  sub, sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sup { top: -0.5em;     }
  sub { bottom: -0.25em; }

  ul, ol {
    margin: $kss-vertical-rhythm 0;
    padding: 0 0 0 $kss-vertical-rhythm;
  }
  li p:last-child {
    margin: 0;
  }
  dd {
    margin: 0 0 0 $kss-vertical-rhythm;
  }

  img {
    max-width:100%;
    border: 0;
    -ms-interpolation-mode: bicubic;
    vertical-align: middle;
  }

  table {
    border-collapse: collapse;
    border-spacing: 0;
  }
  td {
    vertical-align: top;
  }

  @media print {
    a, a:visited { text-decoration: underline; }
    hr { height: 1px; border:0; border-bottom:1px solid black; }
    a[href]:after { content: " (" attr(href) ")"; }
    a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
    abbr[title]:after { content: " (" attr(title) ")"; }
    pre, blockquote { border: 1px solid #999; padding-right: 1em; page-break-inside: avoid; }
    tr, img { page-break-inside: avoid; }
    img { max-width: 100% !important; }
    p, h2, h3 { orphans: 3; widows: 3; }
    h2, h3 { page-break-after: avoid; }
  }
}

// ------------------------------------------------------------------------------
// Layout and page background
// ------------------------------------------------------------------------------

#kss-node {
  margin: 0;
  padding: 20px;
  background: #fff;

  @media screen and (min-width: 769px) {
    padding: 0;
    background: #fff;

    .kss-main,
    .kss-sidebar {
      float: left;
      margin-right: -100%;
      box-sizing: border-box;
    }
  }

  .kss-main {
    width: 100%;
    margin: 0 auto;

    @media screen and (min-width: 769px) {
      width: 80%;
      margin-left: 20%;
      padding: 0 20px 0 30px;
    }
  }

  .kss-sidebar {
    border-bottom:1px solid #ddd;

    @media screen and (min-width: 769px) {
      position: fixed;
      width: 20%;
      height: 100%;
      overflow: auto;
      padding: 0 10px 0 20px;
      border-bottom: 0;
      background-image: url(noise-low.png), -ms-radial-gradient(#fff, #eee);
      background-image: url(noise-low.png), -o-radial-gradient(#fff, #eee);
      background-image: url(noise-low.png), -webkit-radial-gradient(#fff, #eee);
      background-image: url(noise-low.png), radial-gradient(#fff, #eee);
      box-shadow: inset -10px 0 10px -10px rgba(0,0,0,0.7);
    }
  }
}

// ------------------------------------------------------------------------------
// Sidebar-area components
// ------------------------------------------------------------------------------

#kss-node {

  .kss-doc-title {
    margin: 0;

    @media screen and (min-width: 769px) {
      font-size: 1.5em;
    }
  }

  .kss-header,
  .kss-nav {
    @media screen and (min-width: 769px) {
      margin-top: 2em;
    }
  }

  .kss-nav__menu {
    margin-top: ($kss-vertical-rhythm/2);
    margin-bottom: ($kss-vertical-rhythm/2);
    padding: 0;
    list-style-type: none;
  }

  .kss-nav__menu-item {
    display: inline-block;
    padding-right: $kss-vertical-rhythm;

    @media screen and (min-width: 769px) {
      display: list-item;
      padding-right: 0;
    }
  }

  .kss-nav__menu-link {
    position: relative;
    display: inline-block;

    &:before {
      @media screen and (min-width: 769px) {
        content: ' ';
        position: absolute;
        left: -20px;
        width: 0;
        height: 100%;
        background-color: rgba(#000, 0);
      }
    }

    &.is-in-viewport:before {
      background-color: #000;
      width: 5px;
      transition: background-color .4s, width .6s;
    }
  }

  .kss-nav__menu-child {
    display: none;

    @media screen and (min-width: 769px) {
      display: block;
      list-style-type: none;
      margin: 0;
      padding: 0;

      // @TODO: The ul is output even when there are no children. Fix this, so
      // we can put these :first-child and :last child styles back on the ul.
      li:first-child {
        margin-top: 10px;
        border-top: 1px solid #ccc;
        padding: 10px 0 0;
      }

      li:last-child {
        margin-bottom: 10px;
        border-bottom: 1px solid #ccc;
        padding: 0 0 10px;
      }
    }
  }

  .kss-nav__ref {
    color: #333;
    font-weight: bold;

    &:after {
      content: ' ';
    }
  }
  .kss-nav__ref-child {
    font-weight: normal;
  }
}

// ------------------------------------------------------------------------------
// Content-area components
// ------------------------------------------------------------------------------

#kss-node {

  .kss-section {
    max-width: 48em;
    margin-bottom: ($kss-vertical-rhythm * 2);
  }

  .kss-title {
    margin-bottom: 0;
  }
  .kss-title__ref {
    display: block;
    font-size: $kss-font-size;
    line-height: $kss-font-size;
    color: #666;

    &:before {
      content: 'Section ';
    }
  }
  .kss-title__permalink {
    display: block;
    color: #000;
    text-decoration: none;

    &:hover,
    &:focus,
    &:active {
      color: $kss-colors-link;

      @media screen and (min-width: 607px) {
        .kss-title__permalink-hash {
          display: inline;
        }
      }
    }
  }
  .kss-title__permalink-hash {
    display: none;
    color: #ccc;
  }

  .kss-parameters {
    display: table;
    list-style-type: none;
    margin-top: 0;
    margin-left: 0;
    padding-left: 0;
  }
  .kss-parameters__title {
    font-weight: bold;
  }
  .kss-parameters__item {
    display: table-row;
  }
  .kss-parameters__name {
    display: table-cell;
    padding-right: 20px;
    white-space: nowrap;
  }
  .kss-parameters__description {
    display: table-cell;
  }
  .kss-parameters__default-value code {
    white-space: nowrap;
  }

  .kss-modifier__wrapper {
    border: 1px solid #ccc;
    padding: 10px;
  }
  .kss-modifier__heading {
    margin: -10px -10px 10px -10px;
    padding: 10px;
    border-bottom: 1px solid #ccc;
    background-color: #eee;
    font-weight: bold;
  }
  .kss-modifier__default-name {
    font-weight: bold;
    margin-bottom: ($kss-vertical-rhythm / 2);
  }
  .kss-modifier__name {
    float: left;
    padding-right: 10px;
    font-weight: bold;
  }
  .kss-modifier__description {
    margin-bottom: ($kss-vertical-rhythm / 2);
  }
  .kss-modifier__example {
    clear: left;
    padding: 1px 0; // Contain the example's margins.
    position: relative; // Contain the example's absolute positioning.
    margin: 0 0 ($kss-vertical-rhythm - 1px) 0;

    &:last-child {
      margin: 0;
    }
  }

  .kss-markup {
    margin: -1px 0 $kss-vertical-rhythm 0;
    border: 1px solid #999;
  }
  .kss-markup pre {
    margin: 0;
  }

  .kss-source {
    font-size: 80%;
  }

  .kss-github {
    display:none;

    @media screen and (min-width: 501px) {
      display: block;
      position: absolute;
      top: 0;
      right: 0;
    }

    img {
      border: 0;
    }
  }

  // ------------------------------------------------------------------------------
  //   group prettyprint.js styling
  // ------------------------------------------------------------------------------
  /* Pretty printing styles. Used with prettify.js. */

  /* SPAN elements with the classes below are added by prettyprint. */
  .pln { color: #000 }  /* plain text */

  .str { color: #080 }  /* string content */
  .kwd { color: #008 }  /* a keyword */
  .com { color: #800 }  /* a comment */
  .typ { color: #606 }  /* a type name */
  .lit { color: #066 }  /* a literal value */
  /* punctuation, lisp open bracket, lisp close bracket */
  .pun, .opn, .clo { color: #660 }
  .tag { color: #008 }  /* a markup tag name */
  .atn { color: #606 }  /* a markup attribute name */
  .atv { color: #080 }  /* a markup attribute value */
  .dec, .var { color: #606 }  /* a declaration; a variable name */
  .fun { color: red }  /* a function name */

  /* Use higher contrast and text-weight for printable form. */
  @media print, projection {
    .str { color: #060 }
    .kwd { color: #006; font-weight: bold }
    .com { color: #600; font-style: italic }
    .typ { color: #404; font-weight: bold }
    .lit { color: #044 }
    .pun, .opn, .clo { color: #440 }
    .tag { color: #006; font-weight: bold }
    .atn { color: #404 }
    .atv { color: #060 }
  }

  /* Specify class=linenums on a pre to get line numbering */
  ol.linenums {
    margin: 0;
    padding: 0 0 3px 0;
    list-style-type: none;

    li {
      min-height: $kss-vertical-rhythm;
      border-bottom: 1px solid #eee;
      padding: 0 10px;
      background: #fff;

      &:first-child {
        padding-top: 3px;
      }
    }
    /* Alternate shading for lines */
    li.L0,
    li.L2,
    li.L4,
    li.L6,
    li.L8 {
      background: #fcfcfc;
    }
  }
}
