/* Hemisu Dark */
/* Original theme - http://noahfrederick.com/vim-color-scheme-hemisu/ */
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
/* plain text */
.pln {
  color: #eeeeee;
}

@media screen {
  /* string content */
  .str {
    color: #b1d631;
  }

  /* a keyword */
  .kwd {
    color: #b1d631;
  }

  /* a comment */
  .com {
    color: #777777;
  }

  /* a type name */
  .typ {
    color: #bbffaa;
  }

  /* a literal value */
  .lit {
    color: #9fd3e6;
  }

  /* punctuation */
  .pun {
    color: #eeeeee;
  }

  /* lisp open bracket */
  .opn {
    color: #eeeeee;
  }

  /* lisp close bracket */
  .clo {
    color: #eeeeee;
  }

  /* a markup tag name */
  .tag {
    color: #eeeeee;
  }

  /* a markup attribute name */
  .atn {
    color: #b1d631;
  }

  /* a markup attribute value */
  .atv {
    color: #bbffaa;
  }

  /* a declaration */
  .dec {
    color: #eeeeee;
  }

  /* a variable name */
  .var {
    color: #eeeeee;
  }

  /* a function name */
  .fun {
    color: #9fd3e6;
  }
}
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
  .str {
    color: #006600;
  }

  .kwd {
    color: #006;
    font-weight: bold;
  }

  .com {
    color: #600;
    font-style: italic;
  }

  .typ {
    color: #404;
    font-weight: bold;
  }

  .lit {
    color: #004444;
  }

  .pun, .opn, .clo {
    color: #444400;
  }

  .tag {
    color: #006;
    font-weight: bold;
  }

  .atn {
    color: #440044;
  }

  .atv {
    color: #006600;
  }
}
/* Style */
pre.prettyprint {
  background: black;
  border: 1px solid #cccccc;
  padding: 10px;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
  margin-top: 0;
  margin-bottom: 0;
}

/* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8,
li.L9 {
  /* */
}

/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 {
  /* */
}
