.nav__link{text-decoration:none;padding:0 0 5px;font-size:1rem;font-family:Open Sans,Segoe UI,Helvetica Neue,Arial,sans-serif;font-weight:400;border-bottom:1px solid transparent}.nav__link,.nav__link:hover{transition:border-bottom .3s}.nav__link:hover{border-bottom:1px solid #444}@media(max-width:700px){#menuToggle{display:block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:0;left:-50px}#menuToggle input{display:block;width:32px;height:22px;margin:0;position:absolute;cursor:pointer;opacity:0;z-index:2;-webkit-touch-callout:none}#menuToggle span{display:block;width:33px;height:4px;margin-bottom:5px;position:relative;background:#666;border-radius:3px;z-index:1;transform-origin:4px 0;transition:transform .5s cubic-bezier(.77,.2,.05,1),background .5s cubic-bezier(.77,.2,.05,1),opacity .55s ease}#menuToggle span:first-child{transform-origin:0 0}#menuToggle span:nth-last-child(2){transform-origin:0 100%;margin-bottom:0}#menuToggle input:checked~span{opacity:1;transform:rotate(45deg) translate(-2px,-1px)}#menuToggle input:checked~span:nth-last-child(3){opacity:0;transform:rotate(0deg) scale(.2)}#menuToggle input:checked~span:nth-last-child(2){transform:rotate(-45deg) translateY(-1px)}#menu{position:absolute;z-index:-1;width:200px;margin:29px 0 0 -185px;padding:25px;background-color:rgba(50,50,50,0);list-style-type:none;-webkit-font-smoothing:antialiased;overflow:hidden;transform-origin:0 0;transform:translate(120%);transition:transform .5s cubic-bezier(.77,.2,.05,1),background-color .75s ease-out}#menu li{padding:10px 0}#menu li a{display:block;color:hsla(0,0%,98%,0);transition:color .75s ease-out}#menu li a:hover{border-bottom:1px solid #fff}#menuToggle input:checked~#menu{transform:none;background-color:rgba(50,50,50,.9);box-shadow:1px 2px 15px rgba(0,0,0,.5)}#menuToggle input:checked~#menu li a{color:#fafafa}}@media(min-width:701px){.nav{flex:1 1 auto}.nav input[type=checkbox],.nav span{display:none}.nav ul{display:flex;justify-content:center;list-style:none}.nav li{padding:5px}.nav__link{color:#444;margin-left:20px}}footer{z-index:2;padding:15px}.profiles{display:flex;justify-content:space-evenly}.profiles a{color:#444}.profiles a:hover{color:#369}.fade-enter-active{transition:opacity .5s}.fade-enter{opacity:0}body{font-family:Open Sans,Segoe UI,Helvetica Neue,Arial,sans-serif;margin:0;padding:0 env(safe-area-inset-right) 0 env(safe-area-inset-left);line-height:1.5;height:100vh;background:linear-gradient(15deg,#444 25%,#666) no-repeat fixed;text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}.layout{max-width:800px;margin:0 auto;min-height:100%;flex-direction:column;position:relative}.header,.layout{display:flex;background-color:#fff}.header{justify-content:space-between;align-items:center;position:fixed;top:0;margin-bottom:20px;width:760px;height:80px;padding:0 20px;border-bottom:1px solid #666;z-index:5}.site-logo{margin-left:7px;font-size:1.5rem}.site-logo img{height:24px}.site-logo a{text-decoration:none;color:#444}.site-logo a:hover{border-bottom:0}main{flex:1;margin-top:80px;padding:0 50px}form,li,p{font-size:1.1rem;font-weight:400;color:#111}h1,h2,h3,h4,h5,h6{font-family:Open Sans,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:#444}hr{border:0;display:block;text-align:center}hr:before{content:"• • • •";display:inline-block;color:#444;font-size:1rem;font-weight:300}a{color:#369}@media(max-width:700px){.header{position:fixed;top:0;width:100%}.header,main{padding:0 20px}}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:300;src:local("Open Sans Light "),local("Open Sans-Light"),url(/assets/fonts/open-sans-latin-300.60c86674.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-300.521d17bc.woff) format("woff")}@font-face{font-family:Open Sans;font-style:italic;font-display:swap;font-weight:300;src:local("Open Sans Light italic"),local("Open Sans-Lightitalic"),url(/assets/fonts/open-sans-latin-300italic.06bbd318.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-300italic.8a648ff3.woff) format("woff")}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:local("Open Sans Regular "),local("Open Sans-Regular"),url(/assets/fonts/open-sans-latin-400.cffb686d.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-400.bf2d0783.woff) format("woff")}@font-face{font-family:Open Sans;font-style:italic;font-display:swap;font-weight:400;src:local("Open Sans Regular italic"),local("Open Sans-Regularitalic"),url(/assets/fonts/open-sans-latin-400italic.987032ea.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-400italic.db70d0b9.woff) format("woff")}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:600;src:local("Open Sans SemiBold "),local("Open Sans-SemiBold"),url(/assets/fonts/open-sans-latin-600.223a277b.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-600.1cd5320f.woff) format("woff")}@font-face{font-family:Open Sans;font-style:italic;font-display:swap;font-weight:600;src:local("Open Sans SemiBold italic"),local("Open Sans-SemiBolditalic"),url(/assets/fonts/open-sans-latin-600italic.4950a720.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-600italic.318ea1ad.woff) format("woff")}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:700;src:local("Open Sans Bold "),local("Open Sans-Bold"),url(/assets/fonts/open-sans-latin-700.d08c09f2.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-700.623e3205.woff) format("woff")}@font-face{font-family:Open Sans;font-style:italic;font-display:swap;font-weight:700;src:local("Open Sans Bold italic"),local("Open Sans-Bolditalic"),url(/assets/fonts/open-sans-latin-700italic.c02f5da6.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-700italic.72e19cbb.woff) format("woff")}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:800;src:local("Open Sans ExtraBold "),local("Open Sans-ExtraBold"),url(/assets/fonts/open-sans-latin-800.aaeffaf2.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-800.c6aa0c4a.woff) format("woff")}@font-face{font-family:Open Sans;font-style:italic;font-display:swap;font-weight:800;src:local("Open Sans ExtraBold italic"),local("Open Sans-ExtraBolditalic"),url(/assets/fonts/open-sans-latin-800italic.6b3973ff.woff2) format("woff2"),url(/assets/fonts/open-sans-latin-800italic.79b58175.woff) format("woff")}@font-face{font-family:Open Sans Condensed;font-style:normal;font-display:swap;font-weight:300;src:local("Open Sans Condensed Light "),local("Open Sans Condensed-Light"),url(/assets/fonts/open-sans-condensed-latin-300.84c0377f.woff2) format("woff2"),url(/assets/fonts/open-sans-condensed-latin-300.5846bf9b.woff) format("woff")}@font-face{font-family:Open Sans Condensed;font-style:italic;font-display:swap;font-weight:300;src:local("Open Sans Condensed Light italic"),local("Open Sans Condensed-Lightitalic"),url(/assets/fonts/open-sans-condensed-latin-300italic.3daace94.woff2) format("woff2"),url(/assets/fonts/open-sans-condensed-latin-300italic.72896bd3.woff) format("woff")}@font-face{font-family:Open Sans Condensed;font-style:normal;font-display:swap;font-weight:700;src:local("Open Sans Condensed Bold "),local("Open Sans Condensed-Bold"),url(/assets/fonts/open-sans-condensed-latin-700.91a3cb82.woff2) format("woff2"),url(/assets/fonts/open-sans-condensed-latin-700.95cd42f1.woff) format("woff")}.info-card{position:relative;top:50px;border-top:1px solid #444}.info-card h3{font-weight:400}figure{box-sizing:border-box;display:block;width:45px;height:45px;position:absolute;top:-45px;right:0;z-index:2;border:.5px solid #444;border-radius:100%;overflow:hidden;background:#fff;box-shadow:0 0 0 1px #444}figure a{display:block;width:100%;height:100%;background:url(/assets/images/profile_pic_400x400.jpg) 50%;background-size:cover}.profile{position:relative;top:-50px;display:block}.profile p{margin-top:30px}.project-item-cover{max-height:400px}.project-item-stack{font-weight:200}.project-item-date{font-weight:300}.project-item-cover{-o-object-fit:cover;object-fit:cover;-o-object-position:0 0;object-position:0 0;max-height:300px;width:100%}.project-item-title{font-size:1.75rem;font-weight:400;margin-bottom:0}.project-item-date-stack{margin:0;font-weight:200}.project-item-content a{color:#369}.project-item-content pre{max-width:700px;overflow-x:scroll;word-wrap:break-word;padding:10px;box-shadow:3px 3px 3px rgba(0,0,0,.5)}.project-item-content code{font-size:1rem}.project-item-content img{display:block;margin:0 auto;max-width:85%}@media(max-width:700px){.project-item-title{font-size:1.35rem;font-weight:400}.project-item-content img{max-width:95%}}.post-cover{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:100%;max-height:330px;border:1px solid #444}.post-title{font-size:1.75rem;font-weight:400}.post-excerpt{font-weight:200}.post-date{font-weight:300}.post-content a{color:#369;text-decoration:underline}.post-content pre:not(.shiki){background-color:#fff;color:#222}.post-content pre,.post-content pre.shiki{max-width:700px;overflow-x:scroll;word-wrap:break-word;padding:10px;border:.5px solid #ccc}.post-content code{font-size:14px}.post-content code,.post-content code.shiki-inline{font-family:Dank Mono,Fira Code,Inconsolata,Source Code Pro,monospace}.post-content code.shiki-inline{font-size:1rem;padding:.2rem}.post-content img{display:block;margin:0 auto;max-width:85%}.post-content ul{margin-left:-15px}.post-content ul li{margin:10px 0}.post-content ul li>p{margin:0}.post-content .fiddle_container{position:relative;width:100%;height:0;padding-bottom:56.25%}.post-content .fiddle_container iframe{position:absolute;top:0;left:0;border:0;height:100%;width:100%}a+em,img+em{font-style:normal;display:inherit;text-align:center;font-size:80%}blockquote{margin:0 10px;padding-left:20px;border-left:2px solid #999}blockquote p{font-size:1.25rem;font-style:italic}.tweet-container{max-width:500px;margin:0 auto}details{border:.5px solid #ccc;border-radius:15px;padding:.5rem 1rem;box-shadow:2px 2px 3px hsla(0,0%,58.8%,.25)}details>summary{cursor:pointer;border:.5px solid #fff}details>summary:hover{border:.5px dotted #369}.circle-crop{border-radius:50%}@media(min-width:700px){.post-content .article_aside,.post-content .article_nav{float:right;width:250px;margin-left:10px;padding:15px}.post-content .article_aside ul,.post-content .article_nav ul{list-style-type:square}.post-content .article_aside ul li,.post-content .article_nav ul li{margin:5px 0}.post-content .article_aside ul li a,.post-content .article_nav ul li a{text-decoration:none}.post-content .article_photo{float:right}}@media(max-width:700px){.post-title{font-size:1.35rem;font-weight:400}.post-content .article_aside,.post-content .article_nav{padding:15px}.post-content .article_aside ul,.post-content .article_nav ul{list-style-type:square}.post-content .article_aside ul li,.post-content .article_nav ul li{margin:5px 0}.post-content .article_aside ul li a,.post-content .article_nav ul li a{text-decoration:none}.post-content .article_photo{margin:auto}.post-content img{max-width:95%}}.post-list[data-v-2c416e9a]{display:grid;grid-template-columns:1fr 1fr}.post-list a[data-v-2c416e9a]{text-decoration:none}.post-list .post-item[data-v-2c416e9a]{margin:10px;box-shadow:0 0 4px rgba(0,0,0,.5);transition:transform .3s,box-shadow .3s}.post-list .post-item[data-v-2c416e9a]:hover{transform:scale(1.05);box-shadow:0 0 4px rgba(0,0,0,.35)}.post-list .post-item .post-title[data-v-2c416e9a]{padding:0 15px;font-size:1.3rem;font-weight:600;margin:0}.post-list .post-item .post-date[data-v-2c416e9a]{padding:0 15px;font-weight:300}.post-list .post-item .post-excerpt[data-v-2c416e9a]{padding:0 15px;font-size:85%;font-weight:400}.post-list .post-item .post-cover[data-v-2c416e9a]{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;width:100%;height:200px;border:1px solid #ccc}.pager[data-v-2c416e9a]{width:50%;margin:0 auto 2rem;text-align:center}.pager a[data-v-2c416e9a]{color:#369;text-decoration:none;padding-bottom:5px;display:inline-block;width:25px;margin:0 5px;text-align:center;border-bottom:1px solid transparent;transition:border-bottom .3s}.pager a.active[data-v-2c416e9a]{border-bottom:1px dashed rgba(51,102,153,.5)}.pager a[data-v-2c416e9a]:hover{border-bottom:1px solid #369;transition:border-bottom .3s}@media(max-width:700px){.post-list[data-v-2c416e9a]{grid-template-columns:1fr}.pager[data-v-2c416e9a]{width:100%}}.skill-heading{margin-top:0;margin-bottom:50px}.skill-list{position:relative;list-style-type:none;width:100%;margin-left:-40px;margin-bottom:0;display:flex;flex-wrap:wrap}.skill-list>li{position:relative;width:30%;margin:0 10px 40px;background:#dedede;height:6px}.skill-list>li em{font-size:18px;position:relative;top:-30px}.skill-list>li span{height:inherit;background-color:#9cf;background:linear-gradient(90deg,#369,#9cf);position:absolute}.level-1{width:20%;-webkit-animation:level1 .5s ease-out;animation:level1 .5s ease-out}.level-2{width:40%;-webkit-animation:level2 1s ease-out;animation:level2 1s ease-out}.level-3{width:60%;-webkit-animation:level3 1.5s ease-out;animation:level3 1.5s ease-out}.level-4{width:80%;-webkit-animation:level4 2s ease-out;animation:level4 2s ease-out}.level-5{width:100%;-webkit-animation:level5 2.5s ease-out;animation:level5 2.5s ease-out}@-webkit-keyframes level1{0%{width:0}to{width:20%}}@keyframes level1{0%{width:0}to{width:20%}}@-webkit-keyframes level2{0%{width:0}to{width:40%}}@keyframes level2{0%{width:0}to{width:40%}}@-webkit-keyframes level3{0%{width:0}to{width:60%}}@keyframes level3{0%{width:0}to{width:60%}}@-webkit-keyframes level4{0%{width:0}to{width:80%}}@keyframes level4{0%{width:0}to{width:80%}}@-webkit-keyframes level5{0%{width:0}to{width:100%}}@keyframes level5{0%{width:0}to{width:100%}}@media(max-width:700px){.skill-list>li{width:42%}}.education-card{margin-bottom:25px}.education-heading{display:flex;justify-content:space-between}.education-title{margin:0}.education-area{font-weight:400}.education-highlights{margin-left:-15px;list-style-type:none}.education-highlights li:before{content:"‣";margin-left:-20px;margin-right:10px}@media(max-width:700px){.education-heading{display:block}}a{text-decoration:none}.experience-card{margin-bottom:25px}.experience-title{margin:0}.experience-heading{display:flex;justify-content:space-between}.experience-company{font-weight:400}.experience-highlights,.experience-projects-list{margin-left:-15px;list-style-type:none}.experience-highlights li:before,.experience-projects-list li:before{content:"‣";margin-left:-20px;margin-right:10px}.experience-projects{margin-left:10px}@media(max-width:700px){.experience-heading{display:block}}.personal-project-card{margin-bottom:25px}.personal-project-heading{display:flex;justify-content:space-between}.personal-project-title{margin:0}.personal-project-stack{font-size:.85rem}@media(max-width:700px){.personal-project-heading{display:block}}li,p{font-size:1rem}.resume-section{border-bottom:1px solid #369}.summary{display:flex;flex-direction:row;justify-content:space-between}.summary img.profile-pic{flex-shrink:0;box-shadow:0 0 25px #ccc;border-radius:100%;width:150px;height:150px}.code-samples{margin-left:-15px;list-style-type:none}.code-samples li{font-size:1rem}.code-samples li:before{content:"‣";margin-left:-20px;margin-right:10px}.resume_header{display:flex;align-items:center}.resume_header .pdf_download{flex:1;text-align:right}.resume_header .pdf_download a{border:.5px solid #333;background-color:#fff;text-decoration:none;color:initial;padding:5px}.resume_header .pdf_download a:hover{color:#369;border-color:#369}@media(max-width:700px){.summary{flex-direction:column-reverse}.summary img.profile-pic{margin:0 auto}}.project-card{display:flex;flex-direction:row-reverse;border-bottom:.5px solid #ccc;padding:12.5px 0;margin:12.5px 0}.project-card .project-cover{-o-object-fit:contain;object-fit:contain;-o-object-position:50% 0;object-position:50% 0;width:200px;height:200px}.project-card .project-description{padding:0 15px;flex:1}.project-card .project-description h3{margin:.5rem 0}.project-card .project-description p{font-size:1rem}.project-card .project-description a{text-decoration:none;color:#369;border-bottom:1px solid transparent;transition:border-bottom .3s}.project-card .project-description a:hover{border-bottom:1px solid #369;transition:border-bottom .3s}@media(max-width:700px){.project-card{flex-direction:column;padding-bottom:25px;margin-bottom:25px}.project-card .project-cover{-o-object-fit:contain;object-fit:contain;width:80%;max-height:250px;margin:0 auto;border:none}}h3.heading{text-align:center;font-size:1.25rem}.project-list{display:flex;flex-direction:column}input,label,textarea{height:30px;margin:10px 0}button,input,textarea{font-size:1rem;font-weight:300}input{text-indent:5px}input,textarea{border:2px solid #eee}textarea{height:150px;padding:5px}.sender-info>div{display:flex;justify-content:space-between;align-items:stretch}.sender-info>div label{flex:1 1 auto}.sender-info>div input{flex-grow:1}button{padding:10px;border:.5px solid #ccc;font:inherit;color:inherit;background-color:#efefef}button:focus{background-color:#ccc;color:#fff}.message-wrapper{display:flex;flex-direction:column}@media(max-width:380px){.sender-info>div{flex-direction:column}}.about{display:flex;flex-direction:row;justify-content:space-between}.about .intro{padding-right:10px}.about img.profile-pic{flex-shrink:0;box-shadow:0 0 25px #ccc;border-radius:100%;width:200px;height:200px}.skills ul{margin-left:-15px}@media(max-width:700px){.about{flex-direction:column-reverse}.about img.profile-pic{margin:0 auto}}.fourohfour{width:100%}.credit{display:block;text-align:center;font-size:.75rem}.latest-post .latest-post-cover{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:100%;max-height:330px;border:1px solid #444}.latest-post .latest-post-title{font-size:1.2rem;font-weight:400;margin:0}.latest-post a{width:90%;margin:0 auto;padding:15px;border:.5px dotted #fff;text-decoration:none;color:#444;display:block}.latest-post a:hover{border:.5px dotted #444;color:#369}@media(max-width:700px){.latest-post-cover{width:100%}}