/*! normalize.css 2012-02-07T12:37 UTC - https://github.com/necolas/normalize.css */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:hover,a:active{outline:0}h1{font-size:2em;margin:0.67em 0}h2{font-size:1.5em;margin:0.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:0.83em;margin:1.67em 0}h6{font-size:0.75em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}p,pre{margin:1em 0}pre,code,kbd,samp{font-family:monospace, serif;_font-family:'courier new', monospace;font-size:1em}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:75%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@font-face{font-family:'OpenSansLight';src:url("../fonts/OpenSans-Light-webfont.eot");src:url("../fonts/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-Light-webfont.woff") format("woff"),url("../fonts/OpenSans-Light-webfont.ttf") format("truetype"),url("../fonts/OpenSans-Light-webfont.svg#OpenSansLight") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'OpenSansLightItalic';src:url("../fonts/OpenSans-LightItalic-webfont.eot");src:url("../fonts/OpenSans-LightItalic-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-LightItalic-webfont.woff") format("woff"),url("../fonts/OpenSans-LightItalic-webfont.ttf") format("truetype"),url("../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'OpenSansRegular';src:url("../fonts/OpenSans-Regular-webfont.eot");src:url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-Regular-webfont.woff") format("woff"),url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"),url("../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}@font-face{font-family:'OpenSansItalic';src:url("../fonts/OpenSans-Italic-webfont.eot");src:url("../fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-Italic-webfont.woff") format("woff"),url("../fonts/OpenSans-Italic-webfont.ttf") format("truetype"),url("../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}@font-face{font-family:'OpenSansSemibold';src:url("../fonts/OpenSans-Semibold-webfont.eot");src:url("../fonts/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-Semibold-webfont.woff") format("woff"),url("../fonts/OpenSans-Semibold-webfont.ttf") format("truetype"),url("../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}@font-face{font-family:'OpenSansSemiboldItalic';src:url("../fonts/OpenSans-SemiboldItalic-webfont.eot");src:url("../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-SemiboldItalic-webfont.woff") format("woff"),url("../fonts/OpenSans-SemiboldItalic-webfont.ttf") format("truetype"),url("../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}@font-face{font-family:'OpenSansBold';src:url("../fonts/OpenSans-Bold-webfont.eot");src:url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-Bold-webfont.woff") format("woff"),url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"),url("../fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}@font-face{font-family:'OpenSansBoldItalic';src:url("../fonts/OpenSans-BoldItalic-webfont.eot");src:url("../fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/OpenSans-BoldItalic-webfont.woff") format("woff"),url("../fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"),url("../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic") format("svg");font-weight:normal;font-style:normal;-webkit-font-smoothing:antialiased}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight,.highlight .w{color:#d0d0d0}.highlight .err{color:#151515;background-color:#ac4142}.highlight .c,.highlight .cd,.highlight .cm,.highlight .c1,.highlight .cs{color:#888}.highlight .cp{color:#f4bf75}.highlight .nt{color:#f4bf75}.highlight .o,.highlight .ow{color:#d0d0d0}.highlight .p,.highlight .pi{color:#d0d0d0}.highlight .gi{color:#90a959}.highlight .gd{color:#ac4142}.highlight .gh{color:#6a9fb5;font-weight:bold}.highlight .k,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kv{color:#aa759f}.highlight .kc{color:#d28445}.highlight .kt{color:#d28445}.highlight .kd{color:#d28445}.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .s1{color:#90a959}.highlight .sr{color:#75b5aa}.highlight .si{color:#8f5536}.highlight .se{color:#8f5536}.highlight .nn{color:#f4bf75}.highlight .nc{color:#f4bf75}.highlight .no{color:#f4bf75}.highlight .na{color:#6a9fb5}.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mb,.highlight .mx{color:#90a959}.highlight .ss{color:#90a959}body{padding:0px 0 20px 0px;margin:0px;font:14px/1.5 "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif;color:#f0e7d5;font-weight:normal;background:#252525;background-attachment:fixed !important;background:linear-gradient(#2a2a29, #1c1c1c)}h1,h2,h3,h4,h5,h6{color:#e8e8e8;margin:0 0 10px;font-family:'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif;font-weight:normal}p,ul,ol,table,pre,dl{margin:0 0 20px}h1,h2,h3{line-height:1.1}h1{font-size:28px}h2{font-size:24px}h4,h5,h6{color:#e8e8e8}h3{font-size:18px;line-height:24px;font-family:'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif !important;font-weight:normal;color:#b6b6b6}a{color:#ffcc00;font-weight:400;text-decoration:none}a:hover{color:#ffeb9b}a small{font-size:11px;color:#666;margin-top:-0.6em;display:block}ul{list-style-image:url("../images/bullet.png")}strong{font-family:'OpenSansBold', "Helvetica Neue", Helvetica, Arial, sans-serif !important;font-weight:normal}.wrapper{max-width:650px;margin:0 auto;position:relative;padding:0 20px}section img{max-width:100%}blockquote{border-left:3px solid #ffcc00;margin:0;padding:0 0 0 20px;font-style:italic}code{font-family:Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, monospace;color:#efefef;font-size:13px;margin:0 4px;padding:4px 6px;border-radius:2px}pre{padding:8px 15px;background:#191919;border-radius:2px;border:1px solid #121212;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3);overflow:auto;overflow-y:hidden}pre code{color:#efefef;text-shadow:0px 1px 0px #000;margin:0;padding:0}table{width:100%;border-collapse:collapse}th{text-align:left;padding:5px 10px;border-bottom:1px solid #434343;color:#b6b6b6;font-family:'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important;font-weight:normal}td{text-align:left;padding:5px 10px;border-bottom:1px solid #434343}hr{border:0;outline:none;height:3px;background:transparent url("../images/hr.gif") center center repeat-x;margin:0 0 20px}dt{color:#F0E7D5;font-family:'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important;font-weight:normal}#header{z-index:100;left:0;top:0px;height:60px;width:100%;position:fixed;background:url(../images/nav-bg.gif) #353535;border-bottom:4px solid #434343;box-shadow:0px 1px 3px rgba(0,0,0,0.25)}#header nav{max-width:650px;margin:0 auto;padding:0 10px;background:blue;margin:6px auto}#header nav ul{list-style-type:none;margin:0;padding:0}#header nav ul li{font-family:'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif;font-weight:normal;list-style:none;display:inline;color:white;line-height:50px;text-shadow:0px 1px 0px rgba(0,0,0,0.2);font-size:14px}#header nav ul li a{color:white;border:1px solid #5d910b;background:linear-gradient(#93bd20, #659e10);border-radius:2px;box-shadow:inset 0px 1px 0px rgba(255,255,255,0.3),0px 3px 7px rgba(0,0,0,0.7);background-color:#93bd20;padding:10px 12px;margin-top:6px;line-height:14px;font-size:14px;display:inline-block;text-align:center}#header nav ul li a:hover{background:linear-gradient(#749619, #527f0e);background-color:#659e10;border:1px solid #527f0e;box-shadow:inset 0px 1px 1px rgba(0,0,0,0.2),0px 1px 0px transparent}#header nav ul li.fork{float:left;margin-left:0px}#header nav ul li.downloads{float:right;margin-left:6px}#header nav ul li.title{float:right;margin-right:10px;font-size:11px}section{max-width:650px;padding:30px 0px 50px 0px;margin:20px 0;margin-top:70px}section #title{border:0;outline:none;margin:0 0 50px 0;padding:0 0 5px 0}section #title h1{font-family:'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif;font-weight:normal;font-size:40px;text-align:center;line-height:36px}section #title p{color:#d7cfbe;font-family:'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif;font-weight:normal;font-size:18px;text-align:center}section #title .credits{font-size:11px;font-family:'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif;font-weight:normal;color:#696969;margin-top:-10px}section #title .credits.left{float:left}section #title .credits.right{float:right}@media print, screen and (max-width: 720px){#title .credits{display:block;width:100%;line-height:30px;text-align:center}#title .credits .left{float:none;display:block}#title .credits .right{float:none;display:block}}@media print, screen and (max-width: 480px){#header{margin-top:-20px}section{margin-top:40px}nav{display:none}}html{background-color:#232323}body{padding-bottom:0}section{margin-top:0;margin-bottom:0;padding:30px 0}.has-nav section{margin-top:60px}#header{height:56px}#header nav{display:block;max-width:650px;margin:0 auto;padding:0 10px;background:none}#header nav ul{display:flex;justify-content:flex-end;gap:28px;height:56px}#header nav ul li{float:none;display:block;line-height:56px}#header nav ul li a,#header nav ul li a:hover{display:block;padding:0;margin:0;border:0;border-bottom:2px solid transparent;border-radius:0;background:none;box-shadow:none;color:#b6b6b6;font-size:13px;line-height:54px;letter-spacing:0.12em;text-transform:uppercase;transition:color 0.15s, border-color 0.15s}#header nav ul li a:hover{color:#ffffff}#header nav ul li a.active{color:#ffcc00;border-bottom-color:#ffcc00}.post-grid{display:grid;grid-template-columns:1fr;gap:24px;margin-top:30px}@media (min-width: 560px){.post-grid{grid-template-columns:1fr 1fr}}.post-card{display:flex;flex-direction:column;overflow:hidden;background:#2b2b2b;border:1px solid #3a3a3a;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,0.3);color:inherit;transition:transform 0.15s, border-color 0.15s, box-shadow 0.15s}.post-card:hover{transform:translateY(-3px);border-color:#ffcc00;box-shadow:0 8px 20px rgba(0,0,0,0.45);color:inherit}.post-card .post-card-image{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover}.post-card .post-card-body{padding:16px 18px 20px}.post-card time{color:#8a8a8a;font-size:12px;letter-spacing:0.08em;text-transform:uppercase}.post-card h3{margin:6px 0 8px;color:#ffcc00;font-size:18px;line-height:1.3}.post-card p{margin:0;color:#b6b6b6;font-size:14px;line-height:1.5}.post{margin-top:30px}.post .post-hero{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border:1px solid #3a3a3a;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,0.4)}.post .post-header{margin:28px 0 24px}.post .post-header time{color:#8a8a8a;font-size:12px;letter-spacing:0.08em;text-transform:uppercase}.post .post-header h2{margin:6px 0 0;color:#ffcc00;font-size:32px;line-height:1.2}.post .post-back{margin-top:40px}.resume{--icon-cutout: #262626}.resume h1,.resume h2,.resume h3,.resume h4{color:#e8e8e8}.social-links{display:flex;justify-content:center;gap:16px}.social-links a{display:block;width:30px;height:30px;color:#b6b6b6;transition:color 0.15s}.social-links a:hover{color:#ffcc00}.social-links svg{display:block;width:100%;height:100%}.resume-hero{text-align:center}.resume-hero .resume-photo{display:block;width:168px;height:168px;margin:36px auto 20px;border-radius:50%;object-fit:cover;border:3px solid #ffcc00;box-shadow:0 6px 20px rgba(0,0,0,0.5)}.resume-hero h1{margin-bottom:8px;font-size:38px}.resume-hero .resume-tagline{color:#b6b6b6;font-size:16px}.resume-hero .traits{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:0;list-style:none}.resume-hero .traits li{padding:4px 12px;border:1px solid #444;border-radius:999px;background:#2b2b2b;color:#d7cfbe;font-size:13px}.resume-hero .career-goal{margin:40px auto 0;padding:0;border:0;color:#d7cfbe;font-size:16px;font-style:normal;line-height:1.6}.resume-hero .career-goal cite{display:block;margin-bottom:6px;color:#ffcc00;font-size:12px;font-style:normal;letter-spacing:0.12em;text-transform:uppercase}.resume-section{margin-top:64px}.resume-section>h2{margin-bottom:28px;font-size:28px;text-align:center}.resume-section>h2::after{content:'';display:block;width:40px;height:2px;margin:12px auto 0;background:#ffcc00}.badge{display:inline-block;padding:2px 10px;border:1px solid rgba(255,204,0,0.35);border-radius:4px;background:rgba(255,204,0,0.1);color:#ffcc00;font-size:12px;line-height:1.6}a.badge:hover{background:rgba(255,204,0,0.2);color:#ffeb9b}.highlights{margin-bottom:44px;padding:24px 24px 4px;border:1px solid #3a3a3a;border-radius:8px;background:#2b2b2b}.highlights h3{margin-bottom:18px;font-size:20px;text-align:center}.highlights h4{margin:0 0 8px;color:#ffcc00 !important;font-size:15px}.highlights li{margin-bottom:6px}.job{margin-bottom:44px}.job .job-heading{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}@media (min-width: 721px){.job .job-heading{flex-direction:row;justify-content:space-between;align-items:baseline;gap:16px}}.job h3{margin:0;font-size:19px}.job .job-dates{color:#8a8a8a;font-size:13px;font-style:italic}.job .job-dates time::before{content:attr(data-label)}.job .job-tech{margin:8px 0 12px;color:#8a8a8a;font-size:13px;font-style:italic}.job li{margin-bottom:6px}.carousel{display:flex;gap:12px;overflow-x:auto;padding:4px 0 12px;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#555 transparent;--fade-left: 0px;--fade-right: 64px;-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent)}.carousel.scrolled{--fade-left: 64px}.carousel.at-end{--fade-right: 0px}.carousel a{position:relative;flex:0 0 200px;scroll-snap-align:start}.carousel .media-play{position:absolute;top:50%;left:50%;width:44px;height:30px;margin:-15px 0 0 -22px;border-radius:8px;background:rgba(0,0,0,0.7);transition:background 0.15s}.carousel .media-play::after{content:'';position:absolute;top:8px;left:18px;border-style:solid;border-width:7px 0 7px 12px;border-color:transparent transparent transparent #fff}.carousel a:hover .media-play{background:#ff0000}.carousel img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;border:1px solid #3a3a3a;border-radius:6px;transition:border-color 0.15s, transform 0.15s}.carousel a:hover img{border-color:#ffcc00;transform:translateY(-2px)}.entry{margin-bottom:26px}.entry h4{margin:0 0 6px;font-size:17px}.entry p{margin:8px 0 0;color:#b6b6b6}.publications{display:grid;grid-template-columns:1fr;column-gap:20px}@media (min-width: 400px){.publications{grid-template-columns:1fr 1fr}}@media (min-width: 600px){.publications{grid-template-columns:1fr 1fr 1fr}}.resume-footer{margin-top:64px;text-align:center}.resume-footer p{margin-top:14px;color:#8a8a8a;font-size:13px}@media print, screen and (max-width: 480px){#header{margin-top:0}#header nav{display:block}#header nav ul{justify-content:center}}
