/*******************************************************************************
Site Design by @kentonv and @sailorhg.

Originally based on Slate Theme for GitHub Pages
by Jason Costello, @jsncostello
*******************************************************************************/

@import url(pygment_trac.css);

/*******************************************************************************
MeyerWeb Reset
*******************************************************************************/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font: inherit;
  vertical-align: baseline;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

ol, ul {
  list-style: none;
}

blockquote, q {
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

a:focus {
  outline: none;
}

/*******************************************************************************
Theme Styles
*******************************************************************************/

body {
  box-sizing: border-box;
  color:#373737;
  background: #212121;
  font-size: 16px;
  font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  margin: 10px 0;
  font-weight: 700;
  color:#222222;
  font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
  letter-spacing: -1px;
}

.hmargin {
  margin: 10px 0 0 0;
}

h1 {
  font-size: 36px;
  font-weight: 700;
}

h2 {
  padding-bottom: 10px;
  font-size: 28px;
  background: url('../images/bg_hr.png') repeat-x bottom;
}

h3 {
  font-size: 24px;
}

h4 {
  font-size: 21px;
}

h5 {
  font-size: 18px;
}

h6 {
  font-size: 16px;
}

p {
  margin: 10px 0 15px 0;
}

footer p {
  color: #f2f2f2;
}

a {
  text-decoration: none;
  color: #007edf;
  text-shadow: none;

  transition: color 0.5s ease;
  transition: text-shadow 0.5s ease;
  -webkit-transition: color 0.5s ease;
  -webkit-transition: text-shadow 0.5s ease;
  -moz-transition: color 0.5s ease;
  -moz-transition: text-shadow 0.5s ease;
  -o-transition: color 0.5s ease;
  -o-transition: text-shadow 0.5s ease;
  -ms-transition: color 0.5s ease;
  -ms-transition: text-shadow 0.5s ease;
}

#main_content a:hover {
  color: #0069ba;
}

footer a:hover {
  color: #43adff;
  text-shadow: #0090ff 0px 0px 2px;
}

em {
  font-style: italic;
}

strong {
  font-weight: bold;
}

img {
  position: relative;
  margin: 0 auto;
  max-width: 739px;
}

img.gittip {
	width: 51px;
	height: 10px;
}

img.gittip15 {
  width: 77px;
  height: 15px;
}

pre, code {
  width: 100%;
  color: #222;
  background-color: #fff;

  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
  font-size: 14px;

  border-radius: 2px;
  -moz-border-radius: 2px;
  -webkit-border-radius: 2px;
}

h1>code {
	font-size: 30px;
}

pre {
  width: -moz-calc(100% - 20px);
  width: -webkit-calc(100% - 20px);
  width: calc(100% - 20px);
  padding: 10px;
  box-shadow: 0 0 10px rgba(0,0,0,.1);
  overflow: auto;
}

code {
  padding: 3px;
  margin: 0 3px;
  box-shadow: 0 0 10px rgba(0,0,0,.1);
}

pre code {
  display: block;
  box-shadow: none;
}

blockquote {
  color: #666;
  margin-bottom: 20px;
  padding: 0 0 0 20px;
  border-left: 3px solid #bbb;
}

ul, ol, dl {
  margin-bottom: 15px;
  padding-left: 30px;
}

ul li {
  list-style: outside;
}

ol li {
  list-style: decimal outside;
}

dl dt {
  font-weight: bold;
}

dl dd {
  padding-left: 20px;
  font-style: italic;
}

dl p {
  padding-left: 20px;
  font-style: italic;
}

hr {
  height: 1px;
  margin-bottom: 5px;
  border: none;
  background: url('../images/bg_hr.png') repeat-x center;
}

table {
  border: 1px solid #373737;
  margin-bottom: 20px;
  text-align: left;
 }

th {
  font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  padding: 10px;
  background: #373737;
  color: #fff;
 }

td {
  padding: 10px;
  border: 1px solid #373737;
 }

form {
  background: #f2f2f2;
  padding: 20px;
}

img {
  width: 100%;
  max-width: 100%;
}

p.author {
	margin: -1em 0 0 0;
	padding: 0;
	font-size: 80%;
	color: #888;
}

h1>a, h2>a {
	color: black;
}

/*******************************************************************************
Full-Width Styles
*******************************************************************************/

.outer {
  width: 100%;
}

.inner {
  position: relative;
  max-width: 640px;
  padding: 20px 10px;
  margin: 0 auto;
}

body.normal #main_content.inner {
  margin: 0 auto 0 340px;
}

#discuss_banner {
  display: block;
  position: absolute;
  top:0;
  right: 10px;
  width: 147px;
  z-index: 10;
  padding: 10px 50px 10px 10px;
  color: #fff;
  background: url('../images/groups-logo.png') #333 no-repeat 95% 50%;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(0,0,0,.5);
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

#forkme_banner {
  display: ;
  position: absolute;
  top:0;
  right: 230px;
  z-index: 10;
  padding: 10px 50px 10px 10px;
  color: #fff;
  background: url('../images/blacktocat.png') #333 no-repeat 95% 50%;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(0,0,0,.5);
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

.groups_link {
  display: inline-block;
  z-index: 10;
  padding: 10px 50px 10px 10px;
  margin: 5px;
  color: #fff;
  background: url('../images/groups-logo.png') #0090ff no-repeat 95% 50%;
  background-color: #0090ff;
  font-weight: 700;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

.github_link {
  display: inline-block;
  z-index: 10;
  padding: 10px 50px 10px 10px;
  margin: 5px;
  color: #fff;
  background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
  background-color: #0090ff;
  font-weight: 700;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

.twitter_link {
  display: inline-block;
  z-index: 10;
  padding: 10px 50px 10px 10px;
  margin: 5px;
  color: #fff;
  background: url('../images/twitter.svg') #0090ff no-repeat 95% 50%;
  background-color: #0090ff;
  font-weight: 700;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

.block_link {
  display: inline-block;
  z-index: 10;
  padding: 10px;
  margin: 5px;
  color: #fff;
  background-color: #0090ff;
  font-weight: 700;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  border-bottom-left-radius: 2px;
  border-bottom-right-radius: 2px;
}

#header_wrap {
  background: #C42727;
}

#header_wrap .inner {
  padding: 50px 10px 30px 10px;
}

#next_banner {
  position: absolute;
  left: 100px;
  right: 100px;
  top: 100px;
  z-index: 100;
  border: 2px solid black;
  background-color: rgba(196, 196, 196, 0.9);
  text-align: center;
  color: black;
  padding: 30px;
}

#next_banner h1 {
  color: black;
	font-size: 750%;
}

#next_banner p {
	margin: 1em 100px;
}

#project_title {
  margin: 0;
  color: #fff;
  font-size: 42px;
  font-weight: 700;
  text-shadow: #111 0px 0px 10px;
}

#project_tagline {
  color: #fff;
  font-size: 24px;
  font-weight: 300;
  background: none;
  text-shadow: #111 0px 0px 10px;
}

#downloads {
  position: absolute;
  width: 210px;
  z-index: 10;
  top: 50px;
  right: 0px;
  background: url('../images/icon_download.png') no-repeat 0% 90%;
}

.zip_download_link {
  display: block;
  float: right;
  width: 90px;
  height:70px;
  text-indent: -5000px;
  overflow: hidden;
  background: url(../images/sprite_download.png) no-repeat bottom left;
}

.tar_download_link {
  display: block;
  float: right;
  width: 90px;
  height:70px;
  text-indent: -5000px;
  overflow: hidden;
  background: url(../images/sprite_download.png) no-repeat bottom right;
  margin-left: 10px;
}

.zip_download_link:hover {
  background: url(../images/sprite_download.png) no-repeat top left;
}

.tar_download_link:hover {
  background: url(../images/sprite_download.png) no-repeat top right;
}

#main_content_wrap {
  background: #f2f2f2;
  border-top: 1px solid #111;
  border-bottom: 1px solid #111;
}

#main_content {
  padding-top: 40px;
}

#footer_wrap {
  background: #212121;
}



/*******************************************************************************
Small Device Styles
*******************************************************************************/

@media screen and (max-width: 480px) {
  body {
    font-size:14px;
  }

  #downloads {
    display: none;
  }

  .inner {
    min-width: 320px;
    max-width: 480px;
  }

  #project_title {
  font-size: 32px;
  }

  h1 {
    font-size: 28px;
  }

  h2 {
    font-size: 24px;
  }

  h3 {
    font-size: 21px;
  }

  h4 {
    font-size: 18px;
  }

  h5 {
    font-size: 14px;
  }

  h6 {
    font-size: 12px;
  }

  code, pre {
    font-size: 11px;
  }

  #forkme_banner {
    right: 215px;
  }

  #discuss_banner {
    width: 132px;
  }
}

#infinitely_faster img{
  position: absolute;
  left: 600px;
  top: 266px;
  z-index: 10;
  max-width:222px;
}

body.narrow #infinitely_faster{
  display:none;
}

body.wide #corner_hack, body.normal #corner_hack {
  position: absolute;
  left: 0px;
  top: 209px;
  right: 0px;
  height: 10px;
  background: #212121;
}

body.wide #corner_hack>div, body.normal #corner_hack>div {
  margin-left: 249px;
  height: 10px;
  border-radius: 10px 0px 0px 0px;
  background: #f2f2f2;
  border-top: 1px solid #111;
  border-left: 1px solid #111;
}

body.wide #menu, body.normal #menu {
  position: absolute;
  left: 50px;
  top: 494px;
  width: 250px;
  z-index: 10;
}

body.wide #menu.floating, body.normal #menu.floating {
  position: fixed;
  top: 50px;
}

body.narrow #menu {
  position: relative;
  max-width: 640px;
  padding: 50px 10px 0px 10px;
  margin: 0 auto 1em;
}

@media screen and (max-width: 480px) {
  body.narrow #menu {
    min-width: 320px;
    max-width: 480px;
  }
}

#menu ul {
  padding: 0;
  margin: 0;
}

#menu li {
  margin: 0;
  list-style-type: none;
  background-color: #212121;
}
#menu>ul>li>a, #menu>ul>li.selected {
  display: block;
  padding: 10px 15px 10px 15px;
}
#menu>ul>li {
  border-right: 1px solid #111;
}

body.wide #menu>ul>li:last-child, body.normal #menu>ul>li:last-child {
  border-radius: 0px 0px 10px 10px;
  border-bottom: 1px solid #111;
}

body.wide #menu>ul>li:first-child, body.normal #menu>ul>li:first-child {
  border-radius: 10px 10px 0px 0px;
  border-top: 1px solid #111;
}

body.narrow #menu>ul>li:first-child {
  border-radius: 10px 10px 0px 0px;
}

body.narrow #menu>ul>li:last-child {
  border-radius: 0px 0px 10px 10px;
}

#menu a {
  color: #aaa;
}

#menu li.selected {
  background-color: #2a2a2a;
  color: #fff;
}

#menu li.selected a {
  color: #fff;
}

#menu>ul>li:hover {
  background-color: #2a2a2a;
  cursor: pointer;
}

#menu>ul>li.selected:hover {
  background-color: #2a2a2a;
  cursor: auto;
}

#menu>ul>li.selected:hover {
  cursor: auto;
}

#menu>ul>li:hover a {
  color: #eee;
}

#menu>ul>li.selected:hover a {
  color: #fff;
}

ul#toc {
  background-color: #2a2a2a;
  margin: 0;
  font-size: 80%;
}

#toc ul {
  margin: 0;
  padding: 0;
}

#toc li {
  padding: 0 0 0 15px;
  background-color: #2a2a2a;
}

#menu p {
  padding: 2px 0 2px 15px;
  margin: 0;
  text-indent: -15px;
}
#menu p:hover {
  background-color: #313131;
  cursor: pointer;
}

table.pass-fail td { text-align: center; vertical-align: middle; }
table.pass-fail td:first-child { text-align: left; }
table.pass-fail td.pass { background-color: #8f8; }
table.pass-fail td.fail { background-color: #f88; }
table.pass-fail td.warn { background-color: #ff8; }

/*******************************************************************************
Slides
*******************************************************************************/

body.slides * {
  box-sizing: border-box;
}

body.slides header {
  background: #C42727;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 20%;
}

body.slides header>img {
  float: right;
  height: 20vh;
  padding: 2vh;
  width: auto;
}
body.slides header>.title {
  color: white;
  font-size: 8vh;
  text-align: left;
  line-height: 20vh;
  padding-left: 5vh;
}

body.slides main {
  font-size: 4vh;
}

body.slides main section {
  border-top: 1px solid #111;
  border-bottom: 1px solid #111;

  position: fixed;
  top: 20%;
  left: 0;
  width: 100%;
  bottom: 10%;

  background-color: #f2f2f2;
  position: absolute;
  z-index: -1;

  padding: 5vh;
}

body.slides main section.current {
  z-index: 1;
}

body.slides main section#slides-cover {
  background: url(/images/logo.png) center/75% no-repeat #C42727;
  top: 0;
  border-top: none;
}

body.slides main section#slides-cover p {
  color: white;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  font-size: 6vh;
  font-weight: bold;
}

body.slides main img.ph3 {
  background-color: white;
  padding: 4vh;
  height: 60vh;
  width: auto;
  box-shadow: 0 0 10px rgba(0,0,0,.1);
  float: left;
  margin-right: 2vh;
}

body.slides pre {
  margin: 0 0 2em;
}

body.slides pre code {
  font-size: 3vh;
}

body.slides footer {
  background: #212121;
  position: fixed;
  width: 100%;
  height: 10%;
  left: 0;
  bottom: 0;

  color: white;
  text-align: right;
  padding: 2vh;
}

body.slides footer h2 {
  font-size: 4vh;
  height: 4vh;
  margin: 0;
  padding: 0;
  background: none;
  color: inherit;
  line-height: 4vh;
}

body.slides footer p {
  font-size: 2vh;
  height: 2vh;
  line-height: 2vh;
  margin: 0;
}

body.slides footer p.url {
  position: absolute;
  left: 5vh;
  top: 0;
  bottom: 0;
  font-size: 4vh;
  line-height: 10vh;
  margin: 0;
}

body.slides footer button {
  width: 5vh;
  height: 5vh;
  font-size: 4vh;
  padding: 0 0 0.5vh 0;
  border: none;
  border-radius: 0.5vh;
  background-color: white;
}

body.slides footer button:last-of-type {
  margin-right: 1vh;
}
