/* Override <code> to match <pre> instead of being red. */
code {
    color: #333;
    background-color: #f5f5f5;
}

.row-fluid .col-lg-12 {
    padding-bottom: 20px;
}

footer {
    clear: both;
}

.fork-me-on-github img {
    position: absolute;
    top: 0;
    right: 0;
    width: 149px;
    height: 149px;
    border: 0;
}

@media (max-width: 1400px) {
  .fork-me-on-github {
    display: none;
  }
}

.btn-info {
    background-color: #1f99d5;
    border-color: #0e76bc;
}

.btn-info :hover {
    background-color: #25aae1;
}

#toc.affix {
  top: 20px;
  margin-top: 0;
  width: 262.5px;
}

@media (max-width: 991px) {
  .affix {
    position: inherit;
  }
}

#toc {
    margin-top: 30px;
    padding: 10px;
    border: 1px solid #dddddd;
}

#toc ul {
    padding-left: 3px;
}

.row.header {
    border-bottom: 1px solid #25aae1;
    margin-bottom: 30px
}

.row.overview {
    margin-bottom: 30px;
    padding: 10px 0;
    border-bottom: 1px solid #ccccff;
    font-size: 120%;
}

.row.overview.noborder {
    border-bottom: none;
}

.row.overview h3 {
    margin-top: 0;
}

.row.overview img {
    display: block;
    margin: auto;
}

.contributing h3 {
    padding-top: 20px;
    border-top: 1px solid #bdf;
    margin-top: 20px;
}

.contributing h3:first-of-type {
    padding-top: 15px;
    border-top: none;
    margin-top: 0;
}

.kudu-site .navbar-default {
    background-color: #fff;
    padding-right:20px;
    border: none;
}

.kudu-site .navbar-default .navbar-nav a {
    font-size: 110%;
    background: none;
}

.kudu-site .navbar-default .navbar-nav a:hover {
    color: #fdfdfd;
    background: #1f99d5;
}

.kudu-site .navbar-default .navbar-nav .active a {
    color: #555;
    font-weight: bold;
    background: none;
}

.kudu-site .navbar-default .navbar-nav .active a:hover {
    cursor: default;
    color: #555;
}

.kudu-site .navbar-default:after {
    display: block;
    clear: both;
}

.faq ol {
    margin: 20px 0;
}

.faq h3 {
    color: #333;
    font-size: 18px;
    font-weight: bold;
    padding: 20px 0 0 0;
    margin: 20px 0 0 0;
}

.faq h4 {
    color: #333;
    font-size: 14px;
    font-weight: bold;
    padding: 20px 0 0 0;
    border-top: 1px solid #dddddd;
    margin: 20px 0 0 0;
}

.faq p {
    margin-top: 10px;
}

/* We style the ol like a ul because we are working within the bounds of what
   is possible within markdown, and there are other uls on the page that we
   don't want to affect. */
.community ol {
    list-style-type: disc;
}
.community ol li {
    padding: 0 0 10px 0;
    margin: 0;
}
.community ol li:last-child {
    padding-bottom: 0;
}

@media (min-width: 1200px) { .container-fluid {
  width: 1170px
} }

@media (min-width: 768px) and (max-width:820px) {
  /* The navigation layout breaks in this page width range, hide the FAQ link
     until we can get a replacement for the navigation bar. */
  nav.navbar-default ul.navbar-nav li:last-child {
    display: none;
  }
}
@media (min-width: 768px) and (max-width:870px) {
  .navbar-right { padding-left:0; padding-right:0; }
  .kudu-site .navbar-default .navbar-nav a {
      /* The padding looks better at 15px but doesn't fit on the page due to so many links. */
      padding: 13px;
  }
}

/* ------------------------------------------
   BLOG
   ------------------------------------- */
article header p.meta {
  font-style: italic;
  color: #666;
  margin-bottom: 5px;
}

article header a {
  color: #000;
}

article header {
  border-bottom: 1px solid #ddd;
  margin-bottom: 20px;
}

article .entry-content {
  font-size: 125%;
}

article .entry-content p {
  margin-bottom: 1.5em;
}

article .read-full {
  text-align: right;
}

.recent-posts {
  background: #f6f6f6;
}

.recent-posts h3 {
  font-weight: bold;
  font-size: 140%;
}

.recent-posts ul {
  list-style: none;
  padding: 0.5em 0;
  margin: 0;
  border-bottom: 1px solid #eee;
}

/* ------------------------------------------
   Syntax highlighting for Jekyll
   ------------------------------------- */
.highlight  { background: #ffffff; }
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #d14 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #0086B3 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
.highlight .sc { color: #d14 } /* Literal.String.Char */
.highlight .sd { color: #d14 } /* Literal.String.Doc */
.highlight .s2 { color: #d14 } /* Literal.String.Double */
.highlight .se { color: #d14 } /* Literal.String.Escape */
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
.highlight .si { color: #d14 } /* Literal.String.Interpol */
.highlight .sx { color: #d14 } /* Literal.String.Other */
.highlight .sr { color: #009926 } /* Literal.String.Regex */
.highlight .s1 { color: #d14 } /* Literal.String.Single */
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
