﻿*:where(:not(iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert}*,*::before,*::after{box-sizing:border-box}a,button{cursor:revert}ol,ul,menu{list-style:none}img{max-width:100%}table{border-collapse:collapse}textarea{white-space:revert}meter{-webkit-appearance:revert;appearance:revert}::placeholder{color:unset}:where([hidden]){display:none}g :where([contenteditable]){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space}:where([draggable=true]){-webkit-user-drag:element}:root{--step--2: clamp(0.56rem, calc(0.52rem + 0.24vw), 0.70rem);--step--1: clamp(0.68rem, calc(0.61rem + 0.34vw), 0.88rem);--step-0: clamp(0.81rem, calc(0.71rem + 0.49vw), 1.09rem);--step-1: clamp(0.98rem, calc(0.84rem + 0.68vw), 1.37rem);--step-2: clamp(1.17rem, calc(0.98rem + 0.94vw), 1.71rem);--step-3: clamp(1.40rem, calc(1.15rem + 1.27vw), 2.14rem);--step-4: clamp(1.69rem, calc(1.34rem + 1.71vw), 2.67rem);--step-5: clamp(2.02rem, calc(1.56rem + 2.29vw), 3.34rem)}:root{--space-3xs: clamp(0.19rem, calc(0.17rem + 0.11vw), 0.25rem);--space-2xs: clamp(0.44rem, calc(0.39rem + 0.22vw), 0.56rem);--space-xs: clamp(0.63rem, calc(0.56rem + 0.33vw), 0.81rem);--space-s: clamp(0.81rem, calc(0.70rem + 0.54vw), 1.13rem);--space-m: clamp(1.25rem, calc(1.12rem + 0.65vw), 1.63rem);--space-l: clamp(1.63rem, calc(1.43rem + 0.98vw), 2.19rem);--space-xl: clamp(2.44rem, calc(2.13rem + 1.52vw), 3.31rem);--space-2xl: clamp(3.25rem, calc(2.86rem + 1.96vw), 4.38rem);--space-3xl: clamp(4.88rem, calc(4.29rem + 2.93vw), 6.56rem);--space-3xs-2xs: clamp(0.19rem, calc(0.06rem + 0.65vw), 0.56rem);--space-2xs-xs: clamp(0.44rem, calc(0.31rem + 0.65vw), 0.81rem);--space-xs-s: clamp(0.63rem, calc(0.45rem + 0.87vw), 1.13rem);--space-s-m: clamp(0.81rem, calc(0.53rem + 1.41vw), 1.63rem);--space-m-l: clamp(1.25rem, calc(0.92rem + 1.63vw), 2.19rem);--space-l-xl: clamp(1.63rem, calc(1.04rem + 2.93vw), 3.31rem);--space-xl-2xl: clamp(2.44rem, calc(1.76rem + 3.37vw), 4.38rem);--space-2xl-3xl: clamp(3.25rem, calc(2.10rem + 5.76vw), 6.56rem);--space-s-l: clamp(0.81rem, calc(0.33rem + 2.39vw), 2.19rem)}h1{font-size:var(--step-4);line-height:1.1;font-weight:700}.h1{font-size:var(--step-4);line-height:1.1;font-weight:700}h2{font-size:var(--step-3);line-height:1.25;font-weight:500}.h2{font-size:var(--step-3);line-height:1.25;font-weight:500}h3{font-size:var(--step-2);line-height:1.1;font-weight:500}.h3{font-size:var(--step-2);line-height:1.1;font-weight:500}h4{font-size:var(--step-1);line-height:1.35;font-weight:700}.h4{font-size:var(--step-1);line-height:1.35;font-weight:700}h5{font-size:var(--step-0);line-height:1.5;font-weight:500}.h5{font-size:var(--step-0);line-height:1.5;font-weight:500}h6{font-size:var(--step--1);line-height:1.4;font-weight:500}.h6{font-size:var(--step--1);line-height:1.4;font-weight:500}pre{font-family:"FiraCode","DejaVu Sans Mono",monospace;white-space:pre-wrap;padding:var(--space-xs) var(--space-s);margin-bottom:var(--space-m);background-color:inherit}code{font-family:"FiraCode","DejaVu Sans Mono",monospace;font-size:var(--step-1)}a{text-decoration:none}a:hover{text-decoration:none}@font-face{font-family:"Adelle";font-style:normal;font-weight:700;src:url("/fonts/Adelle/Adelle_Bold.woff2") format("woff2"),url("/fonts/Adelle/Adelle_Bold.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:700;src:url("/fonts/Adelle/Adelle_BoldItalic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_BoldItalic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:normal;font-weight:800;src:url("/fonts/Adelle/Adelle_ExtraBold.woff2") format("woff2"),url("/fonts/Adelle/Adelle_ExtraBold.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:800;src:url("/fonts/Adelle/Adelle_ExtraBoldItalic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_ExtraBoldItalic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:normal;font-weight:600;src:url("/fonts/Adelle/Adelle_Heavy.woff2") format("woff2"),url("/fonts/Adelle/Adelle_Heavy.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:600;src:url("/fonts/Adelle/Adelle_HeavyItalic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_HeavyItalic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:400;src:url("/fonts/Adelle/Adelle_Italic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_Italic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:300;src:url("/fonts/Adelle/Adelle_LightItalic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_LightItalic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:normal;font-weight:400;src:url("/fonts/Adelle/Adelle_Reg.woff2") format("woff2"),url("/fonts/Adelle/Adelle_Reg.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:italic;font-weight:500;src:url("/fonts/Adelle/Adelle_SemiBoldItalic.woff2") format("woff2"),url("/fonts/Adelle/Adelle_SemiBoldItalic.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:normal;font-weight:500;src:url("/fonts/Adelle/Adelle_Semibold.woff2") format("woff2"),url("/fonts/Adelle/Adelle_Semibold.otf") format("opentype");font-display:swap}@font-face{font-family:"Adelle";font-style:normal;font-weight:300;src:url("/fonts/Adelle/Adelle_light.woff2") format("woff2"),url("/fonts/Adelle/Adelle_light.otf") format("opentype");font-display:swap}@font-face{font-family:"FiraCode";font-style:normal;font-weight:400;src:url("/fonts/FiraCode/FiraCode-Regular.woff2") format("woff2"),url("/fonts/FiraCode/FiraCode-Regular.otf") format("opentype");font-display:swap}@font-face{font-family:"Exo2";src:url("/fonts/Exo2/Exo2-VariableFont_wght.ttf") format("truetype"),url("/fonts/Exo2/Exo2-VariableFont_wght.woff") format("woff2");font-weight:125 950;font-stretch:75% 125%;font-style:oblique 0deg 20deg;font-display:swap}:root{--background-color: #f8f8f8;--text-color: hsl(300deg, 10%, 20%);--lighter-text-color: hsl(300deg, 10%, 40%);--lighter-text-color-quoted: hsl(300deg, 10%, 40%, 15%);--inverted-text-color: #f8f8f8;--primary-flash-color: hsl(48deg, 53%, 20%);--secondary-flash-color: hsl(48deg, 48%, 17%);--skills-color: hsl(41deg, 64%, 45%);--skills-flash-color: hsl(41deg, 59%, 40%);--letter-color: hsl(41deg, 64%, 45%, 0.1);--lighter-border-color: hsl(300deg, 10%, 80%)}html,body{background-color:var(--background-color);color:var(--text-color);margin:0;line-height:1.2;min-height:100vh}p{font-size:var(--step-0)}body{font-family:Adelle,Arial,Helvetica,sans-serif}@media (min-width: 640px){body{display:grid;grid-template-columns:[header] 1fr [main] 3fr;grid-auto-rows:auto;gap:0}}p{margin:0 0 var(--step--1)}em{font-style:italic}strong{font-weight:bold}.header-handle{position:sticky;top:0}header{grid-column:header;background:url("/images/wood-background.jpg");color:var(--inverted-text-color)}header .identity{padding:var(--space-l) var(--space-s) 0 var(--space-s)}header .identity h1{font-size:var(--step-3);padding-bottom:var(--space-s);text-align:center;text-shadow:1px 1px 1px rgba(252,252,252,.1)}header .identity h2{text-align:center;padding-bottom:var(--space-s);font-size:var(--step-2)}header .identity h3{text-align:center;font-size:var(--step-0);padding-bottom:var(--space-s)}header .identity-image{position:absolute;top:0;left:0;display:flex;flex-direction:column;min-height:100vh;justify-content:center;align-items:center}header .identity-image #author_pic{display:none;width:75%;margin:auto 0}@media (min-width: 1024px){header .identity-image #author_pic{display:block}}#main{grid-column:main;position:relative;color:var(--text-color);border-left:var(--space-2xs) solid #eee}nav.site-main-navigation{padding:var(--space-l) var(--space-l);position:relative}nav.site-main-navigation ul{display:inline-block;padding:0;margin:0}nav.site-main-navigation ul li{display:inline-block;position:relative;padding:var(--space-3xs) var(--space-s)}nav.site-main-navigation ul li a:hover::after,nav.site-main-navigation ul li.active a::after{display:block;position:absolute;left:0;right:0;bottom:-3px;content:"";width:var(--space-l);height:3px;margin:0 auto;background-color:var(--inverted-text-color)}nav.site-main-navigation ul li.active a::after{background-color:var(--primary-flash-color)}.page-title{display:flex;flex-direction:row;gap:var(--space-s);align-items:center}.page-title h1{display:inline-block;position:relative;padding:10px 20px 10px 63px;transform:translate(-1px, 0);background-color:var(--primary-flash-color);color:var(--inverted-text-color);line-height:1.1em;font-weight:500;text-shadow:1px 1px 1px rgba(0,0,0,.1)}.page-title h1::after{display:block;width:calc(.99*var(--space-2xs) + 1px);height:100%;position:absolute;bottom:var(--space-2xs);left:calc(-.99*var(--space-2xs));content:"";transform:skew(0deg, 65deg);background:var(--secondary-flash-color)}.page-title h5{color:var(--text-color)}.main-container{position:relative;padding:var(--space-l);max-width:calc(64rem + var(--space-l))}.main-container h3,.main-container h2{margin:0 0 var(--space-m)}.main-container>div{margin-bottom:var(--space-xl)}.main-container .whoami{margin:0 0 var(--space-xl)}@media (min-width: 1024px){.main-container .whoami{display:grid;grid-template-columns:minmax(16rem, 32rem) minmax(16rem, 32rem);gap:var(--space-l)}}@media (max-width: 1023px){.main-container .half-block{margin-bottom:var(--space-xl)}}.main-container q{display:block;position:relative;max-width:32rem;margin:0 auto}.main-container q::before{position:absolute;top:calc(-1*var(--space-s));left:calc(-1*var(--space-l));content:"“";font-size:calc(2*var(--step-5));color:var(--lighter-text-color-quoted)}.main-container dl dt{font-weight:bold}.main-container dl dd{margin-left:var(--space-s);margin-bottom:var(--space-s)}.former-employers{max-width:calc(64rem + var(--space-l));display:flex;flex-direction:row;flex-wrap:wrap}.former-employers .employer{display:flex;flex-direction:column;justify-content:center;align-items:center;flex-basis:calc(var(--space-2xl)*2);padding-bottom:var(--space-m)}.former-employers .employer img{max-height:var(--space-2xl)}.skills h3,.skills h4{margin:0 0 var(--space-2xs)}.skills p{margin:0 0 var(--space-3xs)}.skills .skill-collection{display:grid;grid-template-columns:repeat(auto-fill, 1fr);grid-auto-rows:auto;max-width:calc(64rem + var(--space-l));gap:var(--space-2xl)}.skills .skill-collection .skill-item{font-family:Exo2}.skills .skill-collection .skill-container{position:relative;background-color:rgba(0,0,0,0);border:2px solid var(--skills-color);border-radius:8px;box-sizing:border-box;height:var(--space-2xs);margin-bottom:var(--space-xs);width:100%}.skills .skill-collection .skill-container .skill-percentage{position:absolute;top:0;left:0;background-color:var(--skills-color);border-radius:8px;height:calc(var(--space-2xs) - 2px);padding:0;transition:all 1s ease-in-out}@media (prefers-reduced-motion){.skills .skill-collection .skill-container .skill-percentage{transition:all 0s linear}}@media (min-width: 1024px){.skills .skill-collection{grid-template-columns:1fr 1fr}}@media (min-width: 1440px){.skills .skill-collection{grid-template-columns:1fr 1fr 1fr}}.timeline{position:relative;padding-top:var(--space-3xs);padding-bottom:var(--space-2xs)}.timeline .timeline-event{border-left:1px solid #f5e9c6;position:relative;padding-left:var(--space-l);padding-bottom:var(--space-s)}.timeline .timeline-event h5{font-family:Exo2;font-weight:500;display:inline-block;position:relative;color:var(--inverted-text-color);line-height:1.1em;margin:0 0 3px;background-color:var(--skills-color);padding:var(--space-3xs) var(--space-2xs) var(--space-3xs) var(--space-l);margin-left:calc(-1*var(--space-l))}.timeline .timeline-event h5:after{display:block;width:3px;height:100%;position:absolute;bottom:3px;left:-3px;content:"";transform:skew(0deg, 65deg);background:var(--skills-flash-color)}.timeline .timeline-event h4{font-size:var(--step-0);margin:var(--space-s) 0}.timeline .timeline-event .timeline-accomplishments{margin:0 0 var(--space-3xs);font-size:var(--step--1);font-weight:300;line-height:1.45em}.timeline .timeline-event:last-child{padding-bottom:0}@media (min-width: 1024px){.timeline{display:grid;grid-template-columns:minmax(16rem, 32rem) minmax(16rem, 32rem);gap:var(--space-m)}}@media (min-width: 1440px){.timeline{display:grid;grid-template-columns:minmax(16rem, 32rem) minmax(16rem, 32rem) minmax(16rem, 32rem);gap:var(--space-m)}}.blog-summary-container{display:grid;grid-template-columns:1fr;grid-auto-rows:auto;grid-gap:var(--space-l);max-width:calc(64rem + var(--space-l))}.blog-summary-container .blog-card{position:relative;padding:var(--space-s);border:1px solid var(--lighter-border-color);height:100%}.blog-summary-container .blog-card code{font-size:var(--step-0)}.blog-summary-container .blog-card .category{font-family:Exo2,Arial,Helvetica,sans-serif;font-weight:400;text-align:center;color:var(--lighter-text-color)}.blog-summary-container .blog-card .post-title{max-width:84%;padding-bottom:var(--space-m);padding-right:var(--space-s)}.blog-summary-container .blog-card .postdate{font-family:Exo2,Arial,Helvetica,sans-serif;display:inline-block;position:absolute;top:var(--space-s);right:var(--space-s);color:#fff;background-color:var(--secondary-flash-color);padding:.3em;text-align:center;min-width:2.75rem}.blog-summary-container .blog-card .postdate span{display:block}.blog-summary-container .blog-card>a:last-of-type{text-decoration:underline;font-size:var(--step--1);font-weight:bold;color:#00008b}@media (min-width: 1024px){.blog-summary-container{grid-template-columns:1fr 1fr}}.prev-next{display:flex;width:100%;flex-direction:row;justify-content:center;align-content:center;gap:var(--space-2xl)}.prev-next>div{display:inline-block;text-align:center;width:12rem;margin:0;background:#fff;padding:20px 10px 15px;box-shadow:0 1px 5px rgba(0,0,0,.1)}.post{max-width:74ch}.post code{font-size:var(--step--1);overflow:visible;white-space:pre}.post pre{margin-bottom:var(--space-xs);overflow:visible}.post h3:not(:first-of-type){margin-top:var(--space-m)}.post ul{margin:var(--space-s) 0 var(--space-s) var(--space-m);list-style-type:disc}.post ul li{font-size:var(--step-0)}.post .post-header{margin-bottom:var(--space-m)}.post .post-header p,.post .post-header h2{margin:0 0 var(--space-3xs)}.post p{text-align:start}.post p+p,.post pre+p,.post aside+p,.post #continue-reading+p{margin-top:0;text-indent:2em}.post .post-category,.post .post-meta{font-family:Exo2,Arial,Helvetica,sans-serif;color:var(--lighter-text-color);padding-bottom:var(--space-xs)}.post .post-tags .post-tag{color:var(--lighter-text-color)}.post p a{text-decoration:underline}.post blockquote{margin:0 var(--space-xl)}.post aside,.post .aside{float:right;width:32%;padding:1rem 1rem 1rem 1rem;margin-left:2rem;border-top:2px solid #ef9f00;border-bottom:2px solid #ef9f00}.post p a,.post aside a,.post blockquote a,.post .aside a{text-decoration:underline}.post .pullquote{float:right;max-width:32%;padding:1rem 1rem 1rem 1rem;margin-left:2rem;border-top:2px solid #ef9f00;border-bottom:2px solid #ef9f00}.post .pullquote img{max-width:50%;float:right;padding:0 0 var(--space-3xs) var(--space-3xs)}hr{text-align:center;position:relative;background:none;margin:var(--space-l) var(--space-s);border:0;border-top:dashed 1px #888}sub,sup{font-size:var(--step--1);line-height:0;position:relative;vertical-align:baseline;font-weight:bold}sup{top:-.5em}