@charset "UTF-8";
/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/
@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600,600italic|Montserrat:400,700);
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a,
.blog.article .gallery a,
.blog.article .gallery .cv .bullet-image-link,
.cv .blog.article .gallery .bullet-image-link,
.projects.article .gallery a,
.projects.article .gallery .cv .bullet-image-link,
.cv .projects.article .gallery .bullet-image-link,
.cv .bullet-image-link, 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-size: 100%;
  font: inherit;
  vertical-align: baseline; }

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block; }

body {
  line-height: 1; }

ol, ul {
  list-style: none; }

blockquote, q {
  quotes: none; }

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none; }

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

sup {
  vertical-align: super;
  font-size: smaller; }

html {
  height: 100%; }

body {
  min-height: 100%;
  font-family: 'Source Sans Pro', sans-serif;
  font-size: 125%;
  line-height: 1.25;
  background-color: #FFF;
  box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.5); }
  @media screen and (max-width: 640px) {
    body {
      font-size: 100%; } }
a, .blog.article .gallery a, .blog.article .gallery .cv .bullet-image-link, .cv .blog.article .gallery .bullet-image-link,
.projects.article .gallery a,
.projects.article .gallery .cv .bullet-image-link,
.cv .projects.article .gallery .bullet-image-link, .cv .bullet-image-link {
  display: inline-block;
  border-bottom: 4px solid #00F;
  margin: 0 -4px -4px -4px;
  padding: 0 4px;
  color: black;
  text-decoration: none;
  font-weight: 600;
  transition: all linear 0.1s; }
  a.no-underline, .blog.article .gallery a,
  .projects.article .gallery a, .blog.article .gallery .cv .bullet-image-link, .cv .blog.article .gallery .bullet-image-link,
  .projects.article .gallery .cv .bullet-image-link,
  .cv .projects.article .gallery .bullet-image-link, .cv .bullet-image-link {
    border-bottom: none;
    margin-bottom: 0; }

a:hover, .blog.article .gallery a:hover, .blog.article .gallery .cv .bullet-image-link:hover, .cv .blog.article .gallery .bullet-image-link:hover,
.projects.article .gallery a:hover,
.projects.article .gallery .cv .bullet-image-link:hover,
.cv .projects.article .gallery .bullet-image-link:hover, .cv .bullet-image-link:hover {
  background-color: #00F;
  color: #FFF; }

b {
  font-weight: 600; }

.splash-outer {
  display: table;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center; }

.splash-inner {
  display: table-cell;
  vertical-align: middle; }

.splash-content {
  display: inline-block;
  max-width: 640px;
  padding: 1em; }

.logo {
  display: block; }

.profile-image {
  border: 0.5em solid white;
  box-shadow: 0 0 0.5em 0 rgba(0, 0, 0, 0.5);
  margin: 0.5em;
  background-color: white;
  border-radius: 1000px;
  /* This auto-crops to give a circle! */
  margin-right: 1em;
  vertical-align: middle; }

.title {
  display: inline-block;
  vertical-align: middle;
  text-align: left; }
  @media screen and (max-width: 640px) {
    .title {
      text-align: center; } }
.title-name {
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  letter-spacing: -0.02em;
  display: inline-block;
  font-size: 150%;
  border-bottom: 7px solid #FF9F00;
  margin-bottom: 0.25em; }

ul.links {
  margin: 1em 0 2em 0;
  font-size: 125%; }

ul.links li {
  margin: 0.5em 0; }

ul.links li a, ul.links li .blog.article .gallery a, .blog.article .gallery ul.links li a,
ul.links li .projects.article .gallery a,
.projects.article .gallery ul.links li a, ul.links li .cv .bullet-image-link, .cv ul.links li .bullet-image-link {
  padding-bottom: 4px; }

.social-list li {
  display: inline-block;
  vertical-align: middle; }

.social-list li a, .social-list li .blog.article .gallery a, .blog.article .gallery .social-list li a,
.social-list li .projects.article .gallery a,
.projects.article .gallery .social-list li a, .social-list li .cv .bullet-image-link, .cv .social-list li .bullet-image-link {
  border-bottom: none; }
  .social-list li a:hover, .social-list li .blog.article .gallery a:hover, .blog.article .gallery .social-list li a:hover,
  .social-list li .projects.article .gallery a:hover,
  .projects.article .gallery .social-list li a:hover, .social-list li .cv .bullet-image-link:hover, .cv .social-list li .bullet-image-link:hover {
    background-color: inherit; }

.social {
  border-radius: 1000px;
  /* This auto-crops to give a circle! */
  box-shadow: none;
  margin-top: 0.25em;
  margin-bottom: -0.25em;
  box-shadow: 0 0 0.25em 0 rgba(0, 0, 0, 0.5);
  transition: all 0.25s linear;
  display: inline-block;
  background-color: white;
  margin: 0 0.5em; }
  .social:hover {
    margin-top: -0.25em;
    margin-bottom: 0.25em;
    box-shadow: 0 0.25em 0.75em 0 rgba(0, 0, 0, 0.5); }

.cv {
  display: block;
  max-width: 1024px;
  margin: auto;
  padding: 2em 2em 8em 2em; }
  @media screen and (max-width: 640px) {
    .cv {
      padding: 0 1em 4em 1em; } }
  .cv .header {
    display: block;
    margin: auto;
    padding: 2em 0;
    text-align: center;
    max-width: 640px; }
    .cv .header h1 {
      font-family: 'Montserrat', sans-serif;
      font-weight: 700;
      letter-spacing: -0.02em;
      display: inline-block;
      font-size: 150%;
      border-bottom: 7px solid #F00;
      margin-bottom: 0.25em;
      margin-top: 0;
      margin-bottom: 1em; }
  .cv .header-image {
    border: 0.5em solid white;
    box-shadow: 0 0 0.5em 0 rgba(0, 0, 0, 0.5);
    margin: 0.5em;
    background-color: white;
    border-radius: 1000px;
    /* This auto-crops to give a circle! */
    display: block;
    margin: 0 auto 2em auto; }
    @media screen and (max-width: 640px) {
      .cv .header-image {
        width: 100px;
        height: 100px; } }
  .cv .social-list {
    margin-top: 2em; }
  .cv h1 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    letter-spacing: -0.02em;
    display: inline-block;
    font-size: 150%;
    border-bottom: 7px solid #000;
    margin-bottom: 0.25em; }
    .cv h1.red {
      border-bottom-color: #F00; }
    .cv h1.orange {
      border-bottom-color: #F90; }
    .cv h1.yellow {
      border-bottom-color: #FD0; }
    .cv h1.green {
      border-bottom-color: #1C0; }
    .cv h1.blue {
      border-bottom-color: #00F; }
    .cv h1.purple {
      border-bottom-color: #60C; }
  .cv p {
    margin-bottom: 0.5em; }
  .cv .footer {
    display: block;
    margin: 0 auto;
    padding-top: 2em;
    text-align: center;
    max-width: 640px; }
    .cv .footer h1 {
      color: #CCC;
      border-bottom: none;
      font-size: 100%;
      font-variant: small-caps; }
  .cv ul.non-programming-skills {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-content: space-between;
    border-top: 1px solid #CCC;
    border-bottom: 1px solid #CCC; }
    .cv ul.non-programming-skills li {
      margin: auto;
      padding: 0.5em 1em;
      font-size: 80%;
      text-align: center;
      min-width: 25%; }
      @media screen and (max-width: 640px) {
        .cv ul.non-programming-skills li {
          min-width: 75%; } }
  .cv ul.projects {
    border-top: 1px solid #CCC;
    margin-bottom: 4em;
    margin-top: 1em; }
    .cv ul.projects > li {
      border-bottom: 1px solid #CCC;
      padding: 0.5em 1em; }
  .cv ul.tech {
    font-size: 80%;
    font-weight: 600;
    text-align: center; }
    .cv ul.tech > li {
      display: inline-block;
      white-space: pre; }
      .cv ul.tech > li:first-child:before, .cv ul.tech > li:after {
        content: '·';
        color: #CCC;
        padding: 0 0.5em; }
  .cv li.js {
    color: #f15501; }
  .cv li.ruby {
    color: #701516; }
  .cv li.php {
    color: #6e03c1; }
  .cv li.net {
    color: #5a25a2; }
  .cv li.matlab {
    color: #bb92ac; }
  .cv li.python {
    color: #3581ba; }
  .cv li.sql {
    color: #5861ce; }
  .cv li.java {
    color: #b07219; }
  .cv li.scala {
    color: #7dd3b0; }
  .cv li.ops {
    color: #cc5555; }
  .cv li.arduino {
    color: #bd79d1; }
  .cv li.go {
    color: #375eab; }
  .cv li.elixir {
    color: #6e4a7e; }
  .cv li.shell {
    color: #89e051; }
  .cv li.misc, .cv ul.tags li {
    color: #AAA !important; }
  .cv .bullet {
    clear: both;
    padding: 1em 0;
    overflow: auto;
    vertical-align: middle; }
  .cv .bullet img {
    padding: 0.25em 0; }
  .cv .left {
    float: left;
    margin: 0 1em 0 0; }
  .cv .right {
    float: right;
    margin: 0 0 0 1em; }
  .cv .bullet p {
    text-align: justify; }
  .cv .bullet-image-link {
    padding: 0;
    line-height: 1;
    border: 1px solid #EEE;
    background-color: white; }
    .cv .bullet-image-link img {
      padding: 0.25em;
      vertical-align: middle; }
  .cv .paragraph-only-bullet {
    margin-bottom: 4em; }
  .cv .education-panel {
    margin: 1em;
    padding: 1em;
    box-shadow: 0 0.5em 1em 0.5em rgba(0, 0, 0, 0.5);
    background-color: rgba(255, 255, 255, 0.8); }
  .cv .education-panel .logo-link {
    float: right; }
  .cv .qualification {
    font-weight: bold; }
  .cv .subject, .cv .results {
    display: block; }
  .cv .results {
    font-style: italic; }

.blog.article,
.projects.article {
  display: block;
  max-width: 1024px;
  margin: auto;
  padding: 2em 2em 8em 2em; }
  @media screen and (max-width: 640px) {
    .blog.article,
    .projects.article {
      padding: 0 1em 4em 1em; } }
  .blog.article h1,
  .projects.article h1 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    letter-spacing: -0.02em;
    display: inline-block;
    font-size: 150%;
    border-bottom: 7px solid #F00;
    margin-bottom: 0.25em; }
  .blog.article h2,
  .projects.article h2 {
    font-size: 110%;
    font-weight: bold;
    margin: 3em 0 1em 0; }
  .blog.article img,
  .projects.article img {
    display: block;
    margin: auto; }
  .blog.article p,
  .projects.article p {
    padding: 0;
    margin: 0;
    margin-bottom: 2em; }
  .blog.article em,
  .projects.article em {
    font-style: italic; }
  .blog.article strong,
  .projects.article strong {
    font-weight: 600; }
  .blog.article code,
  .blog.article pre,
  .projects.article code,
  .projects.article pre {
    font-family: monospace;
    background-color: #DDD;
    padding: 0.25em; }
  .blog.article ol,
  .projects.article ol {
    list-style-type: decimal;
    padding: 0 2em; }
    .blog.article ol li,
    .projects.article ol li {
      margin-bottom: 1em;
      padding-left: 0.5em; }
  .blog.article ul,
  .projects.article ul {
    list-style-type: disc;
    padding: 0 2em; }
    .blog.article ul li,
    .projects.article ul li {
      margin-bottom: 1em;
      padding-left: 0.5em; }
  .blog.article .spoiler,
  .projects.article .spoiler {
    display: none;
    border-left: 2px solid red;
    padding-left: 1em;
    font-size: smaller; }
  .blog.article .gallery,
  .projects.article .gallery {
    display: block;
    text-align: center;
    margin: auto; }
    .blog.article .gallery a, .blog.article .gallery .cv .bullet-image-link, .cv .blog.article .gallery .bullet-image-link,
    .projects.article .gallery a,
    .projects.article .gallery .cv .bullet-image-link,
    .cv .projects.article .gallery .bullet-image-link {
      display: inline-block;
      position: relative;
      margin: 1em auto;
      max-width: 20%;
      padding: 0.25em; }
      @media screen and (max-width: 640px) {
        .blog.article .gallery a, .blog.article .gallery .cv .bullet-image-link, .cv .blog.article .gallery .bullet-image-link,
        .projects.article .gallery a,
        .projects.article .gallery .cv .bullet-image-link,
        .cv .projects.article .gallery .bullet-image-link {
          display: block;
          margin: 1em auto;
          max-width: 80%; } }
    .blog.article .gallery img,
    .projects.article .gallery img {
      max-width: 100%; }
  .blog.article .explanation,
  .projects.article .explanation {
    font-size: small; }

.blog.index,
.projects.index {
  display: block;
  max-width: 1024px;
  margin: auto;
  padding: 2em 2em 8em 2em; }
  @media screen and (max-width: 640px) {
    .blog.index,
    .projects.index {
      padding: 0 1em 4em 1em; } }
  .blog.index h1,
  .projects.index h1 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    letter-spacing: -0.02em;
    display: inline-block;
    font-size: 150%;
    border-bottom: 7px solid #F00;
    margin-bottom: 0.25em; }
  .blog.index .post-index,
  .projects.index .post-index {
    margin-top: 2em; }
  .blog.index .post,
  .projects.index .post {
    padding: 0.25em 0; }
  .blog.index .post-date,
  .projects.index .post-date {
    display: inline-block;
    font-size: 80%;
    width: 5.5em; }
    @media screen and (max-width: 640px) {
      .blog.index .post-date,
      .projects.index .post-date {
        display: block; } }
  .blog.index .divider,
  .projects.index .divider {
    color: #CCC;
    padding: 0 1em 0 0; }
    .blog.index .divider:after,
    .projects.index .divider:after {
      content: '·'; }
    @media screen and (max-width: 640px) {
      .blog.index .divider,
      .projects.index .divider {
        display: none; }
        .blog.index .divider:after,
        .projects.index .divider:after {
          content: none; } }
  .blog.index .post-title,
  .projects.index .post-title {
    border-bottom: none; }
