html{box-sizing:border-box;height:100%;scroll-behavior:smooth}body{background-color:#fffffe;background-color:var(--background);margin:auto;max-width:66rem;padding:0 .5rem}body::-webkit-scrollbar{width:6px}body{height:100%;scrollbar-color:rgba(57,74,89,.9) #fffffe;scrollbar-color:rgba(57,74,89,.9) var(--background);scrollbar-width:thin}body::-webkit-scrollbar-track{background:#fffffe;background:var(--background)}body::-webkit-scrollbar-thumb{background-color:rgba(57,74,89,.9)}main{display:flex;flex-direction:column;margin:0 auto;max-width:43rem;max-width:var(--page_width);min-width:0;padding-bottom:4rem}.layout-wrapper{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:100%}*,:after,:before{border:0 solid;box-sizing:inherit;margin:0;padding:0}audio,canvas,embed,iframe,img,object,video{display:block}img,video{height:auto}img,video{max-width:100%}img{display:block}hr{background:rgba(57,74,89,.1);border:none;height:1px;margin-top:2rem;width:100%}a{border-bottom:1px dotted #0085c8;border-bottom:1px dotted var( --raceway );color:#006395;color:var( --safety-blue );-webkit-text-decoration:none;text-decoration:none}a:hover{border-bottom:1px solid #004c73;border-bottom:1px solid var( --harbor );color:#004c73;color:var( --harbor )}ol ol{list-style-type:lower-alpha}ul{list-style-type:square}li{margin-bottom:1rem;margin-left:1.2rem}b,strong{font-weight:500}table{border:1px solid rgba(57,74,89,.3);border-collapse:collapse;caption-side:bottom;min-width:100%;overflow-x:auto}table,table caption{margin-top:1rem}td,th{border:1px solid rgba(57,74,89,.3);padding:.5rem;text-align:left}th{font-weight:500}td:only-child{text-align:center}audio,iframe,img,video{margin-top:1rem;max-width:100%}blockquote{border-left:3px solid #003651;border-left:3px solid var(--atlantic);font-style:italic;margin-bottom:1rem;margin-top:1rem;padding-left:1rem}pre{border:1px solid rgba(57,74,89,.1);font-size:.95rem;margin:0 auto 1rem;max-width:90vw;overflow:auto;padding:1rem;scrollbar-color:rgba(57,74,89,.8);scrollbar-width:thin;-moz-tab-size:2;-o-tab-size:2;tab-size:2;white-space:pre-wrap}code,kbd{font-feature-settings:normal;background:rgba(174,194,203,.2);background:#fbf7ef;background:var(--sol_base3);color:#003651;color:var(--atlantic);font-size:.9em;margin:0 2px;padding:1px 6px}pre::-webkit-scrollbar{height:8px;width:6px}pre::-webkit-scrollbar-track{background:#fffffe;background:var(--background)}pre::-webkit-scrollbar-thumb{background-color:rgba(57,74,89,.8)}code,pre{font-family:Inconsolata,monospace}pre code{background:transparent;font-size:.9rem;font-size:var(--text-sm);margin:0;padding:0;white-space:pre}mark{background:#0085c8;background:var(--raceway);color:#fffffe;color:var(--background);font-size:.95rem;margin:0 2px;padding:1px 6px}.visually-hidden{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute;width:1px}.nowrap,.visually-hidden{white-space:nowrap}figcaption{display:block;font-style:italic;margin-top:8px;text-align:center}:root{--background:#fffffe;--atlantic:#003651;--charcoal:#394a59;--harbor:#004c73;--safety-blue:#006395;--denim:#0079b6;--raceway:#0085c8;--sheffield:#697682;--heather:#aec2cb;--alice:#f2fbff;--page_width:43rem;--sol_base03:#002d38;--sol_base02:#093946;--sol_base01:#5b7279;--sol_base00:#657377;--sol_base0:#98a8a8;--sol_base1:#8faaab;--sol_base2:#f1e9d2;--sol_base3:#fbf7ef;--sol_yellow:#ac8300;--sol_orange:#d56500;--sol_red:#f23749;--sol_magenta:#dd459d;--sol_violet:#7d80d1;--sol_blue:#2b90d8;--sol_cyan:#259d94;--sol_green:#819500}

/*!
  Theme: Solarized Light
  Author: Ethan Schoonover (modified by aramisgithub)
  License: ~ MIT (or more permissive) [via base16-schemes-source]
  Maintainer: @highlightjs/core-team
  Version: 2021.09.0
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fbf7ef;background:var(--sol_base3);color:#093946;color:var(--sol_base02)}.hljs ::-moz-selection,.hljs::-moz-selection{background-color:#8faaab;background-color:var(--sol_base1);color:#5b7279;color:var(--sol_base01)}.hljs ::selection,.hljs::selection{background-color:#8faaab;background-color:var(--sol_base1);color:#5b7279;color:var(--sol_base01)}.hljs-comment,.hljs-tag{color:#657377;color:var(--sol_base00)}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5b7279;color:var(--sol_base01)}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f23749;color:var(--sol_red)}.hljs-attr,.hljs-class .hljs-title,.hljs-link,.hljs-literal,.hljs-number,.hljs-strong,.hljs-symbol,.hljs-title,.hljs-title.class_,.hljs-variable.constant_{color:#ac8300;color:var(--sol_yellow)}.hljs-strong{font-weight:700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d56500;color:var(--sol_orange)}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#dd459d;color:var(--sol_magenta)}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2b90d8;color:var(--sol_blue)}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#dd459d;color:var(--sol_magenta)}.hljs-emphasis{color:#7d80d1;color:var(--sol_violet);font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#dd459d;color:var(--sol_magenta)}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}:root{--text-xs:calc(var( --text-base )*0.64);--text-sm:calc(var( --text-base )*0.8);--text-base:1.125rem;--text-lg:calc(var( --text-base )*1.25);--text-xl:calc(var( --text-base )*1.563);--text-2xl:calc(var( --text-base )*1.953);--text-3xl:calc(var( --text-base )*2.441);--text-4xl:calc(var( --text-base )*3.052)}body{-webkit-font-smoothing:antialiased;font-feature-settings:"liga","tnum","case","calt","zero","ss01","locl","calt";-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%;color:#394a59;color:var(--charcoal);font-family:IBM Plex Sans,sans-serif;font-size:1.125rem;font-size:var(--text-base);font-variant-ligatures:contextual;line-height:1.6;text-rendering:optimizeLegibility}h1,h2,h3,h4{text-wrap:pretty;color:#003651;color:var(--atlantic);font-weight:600;line-height:1.3}h1{font-size:2.19713rem;font-size:var(--text-2xl);margin-bottom:.5rem}h2{font-size:1.75838rem;font-size:var(--text-xl);margin-top:3rem}h2,h3{margin-bottom:1rem}h3{font-size:1.40625rem;font-size:var(--text-lg);margin-top:1.5rem}h4,p{font-size:1.125rem;font-size:var(--text-base);margin-bottom:1rem}.tags>*{line-height:2rem;margin-right:1.5rem}.tags{margin-bottom:.5rem;margin-top:.5rem}.post-list__tags a,.tags a{border-bottom-color:transparent;display:inline-block}.post-list__tags a:hover,.tags a:hover{border-bottom-color:currentColor}.post-list__tags a:before,.tags a:before{content:"#\2009"}.post-list__heading{font-size:2.74612rem;font-size:var(--text-3xl);margin-bottom:1rem}.post-list{list-style:none;margin:3rem 0 0 -1.2rem}.post-list__item{border-top:1px solid #aec2cb;border-top:1px solid var( --heather );display:flex;flex-direction:column;padding-bottom:4rem;padding-top:1rem}.post-list__item:last-child{border-bottom:1px solid #aec2cb;border-bottom:1px solid var( --heather )}.post-list__title{font-size:1.75838rem;font-size:var( --text-xl );margin:.5rem 0}.post-list__title a{border-bottom-color:transparent;color:inherit}.post-list__title a:hover{border-bottom-color:currentColor}.post-list__details{display:flex;justify-content:space-between;margin-bottom:1rem}.post-list__meta{color:#697682;color:var( --sheffield )}.post-list__meta,.post-list__tags{font-size:.9rem;font-size:var(--text-sm)}.post-list__tags{display:flex;gap:1.25rem}.post-list__excerpt{color:#394a59;color:var(--charcoal);margin-top:1rem}.post-list__read-more{margin-top:1rem;text-transform:capitalize;width:-moz-fit-content;width:fit-content}.all-posts-link{color:currentColor;display:inline-block;font-size:1.75838rem;font-size:var(--text-xl);margin-left:auto;margin-right:auto;margin-top:4rem;width:-moz-fit-content;width:fit-content}.post-list .hero{max-height:300px;-o-object-fit:cover;object-fit:cover;width:100%}li#regex-is-a-programming-superpower img{-o-object-position:0 0;object-position:0 0}.hero{display:flex;flex-direction:column}.hero h1{font-size:var(--text-5xl)}.hero p{font-size:2.19713rem;font-size:var(--text-2xl);margin-top:1rem}.hero__social-links{display:flex;flex-wrap:wrap;list-style-type:none;margin-top:2rem}.hero__social-links>li{margin-right:2rem;margin-top:1rem}.hero__skip-link{align-items:center;align-self:center;border:2px solid rgba(0,0,0,.4);border-radius:50%;bottom:2rem;cursor:pointer;display:flex;height:2.5rem;justify-content:center;position:absolute;transition:opacity .2s ease-in-out;width:2.5rem}.hero__skip-link svg{stroke:rgba(0,0,0,.4);transition:opacity .2s ease-in-out}header{position:relative}.header{margin-bottom:1rem;max-width:none;width:100%}.header__content{align-items:center;border-bottom:1px solid #aec2cb;border-bottom:1px solid var( --heather );display:flex;flex-wrap:wrap;justify-content:space-between;margin:2rem auto 0;padding-bottom:1rem;position:relative}.header nav,.header__content{max-width:43rem;max-width:var(--page_width)}.header nav{margin:0 auto}a.site-title{background:url(139dc2dabe44d25128e6.svg) no-repeat 0 0;background-size:contain;border-bottom:none;padding-left:92px}.site-title h1{font-size:1.40625rem;font-size:var(--text-lg);margin-bottom:0;margin-top:1rem}.site-title h2{color:#697682;color:var( --sheffield );margin-bottom:1rem;margin-top:0;text-transform:none}.nav__list,.site-title h2{font-size:1.125rem;font-size:var(--text-base)}.nav__list{align-items:center;display:flex;justify-content:flex-end;list-style:none}.nav__list a{margin-bottom:1rem;margin-top:1rem;-webkit-text-decoration:none;text-decoration:none}.nav__list li{margin:1rem 2rem 0 0}.nav__list li:last-child{margin-right:0}.nav__list a{border-bottom-color:transparent}.nav__list a:hover{border-bottom-color:#004c73;border-bottom-color:var( --harbor )}.nav-social{align-items:baseline;display:flex;gap:2rem;justify-content:flex-end;margin:0}.nav-social a{border-bottom:none;-webkit-text-decoration:none;text-decoration:none}.nav-social a svg{display:inline-block;height:28px;vertical-align:text-bottom;width:28px}.nav-social a:hover svg{fill:#0085c8;fill:var( --raceway )}.footer{max-width:none;padding-bottom:4rem;padding-left:1rem;padding-right:1rem;width:100%}.footer__content{align-items:center;border-top:1px solid #aec2cb;border-top:1px solid var( --heather );display:flex;flex-direction:column;font-size:1.125rem;font-size:var(--text-base);margin-left:auto;margin-right:auto;max-width:43rem;max-width:var(--page_width);width:100%}.footer__content>*{margin-top:2rem}.footer__attribution{font-size:.9rem;font-size:var(--text-sm)}.footer ul{display:flex;list-style:none}.footer li{margin-right:2rem}.footer li a{position:relative}.rss a:before{content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2736%27 height=%2736%27 fill=%27%23f26522%27 viewBox=%270 0 455.731 455.731%27%3E%3Cpath d=%27M296.208 159.16C234.445 97.397 152.266 63.382 64.81 63.382v64.348c70.268 0 136.288 27.321 185.898 76.931 49.609 49.61 76.931 115.63 76.931 185.898h64.348c-.001-87.456-34.016-169.636-95.779-231.399z%27/%3E%3Cpath d=%27M64.143 172.273v64.348c84.881 0 153.938 69.056 153.938 153.939h64.348c0-120.364-97.922-218.287-218.286-218.287z%27/%3E%3Ccircle cx=%27109.833%27 cy=%27346.26%27 r=%2746.088%27/%3E%3C/svg%3E");height:36px;left:-40px;position:absolute;top:-6px;width:36px}.post{display:flex;flex-direction:column;justify-content:center}.post>*+*{margin-top:2rem}.post__header h1{margin-bottom:.5rem}.post__details{display:flex;justify-content:space-between}.post__meta{color:#697682;color:var( --sheffield )}.post__meta,.post__tags{font-size:.9rem;font-size:var( --text-sm )}.post__tags{display:flex;gap:1.25rem}.post__tags a{border-bottom-color:transparent;border-bottom-color:currentColor;-webkit-text-decoration:none;text-decoration:none}.post__content{word-wrap:break-word;position:relative}.post__aside{margin-top:2rem}.post__pagination{display:flex;flex-direction:column;gap:1rem;justify-content:space-between;margin-top:2rem}.post__pagination>:only-child{margin-left:auto;margin-right:auto}.post__pagination a{border-bottom:none;position:relative}.post__pagination a span{border-bottom:1px dotted #0085c8;border-bottom:1px dotted var(--raceway)}.post__pagination a:hover span{border-bottom:1px solid #004c73;border-bottom:1px solid var(--harbor)}.post__next{margin-left:2rem}.post__next:before{content:"←";font-size:1.5rem;left:-2rem;line-height:1.9rem;position:absolute}.post__prev{margin-right:2rem;text-align:right}.post__prev:after{content:"→";font-size:1.5rem;line-height:1.9rem;position:absolute;right:-2rem;top:0}.video{display:flex;gap:1em;justify-content:space-between}.video a{text-wrap:nowrap;align-self:center;font-size:.9rem;font-size:var(--text-sm)}.about h1{margin-bottom:2rem}.about img{border:4px solid rgba(0,0,0,.7);float:none;margin-left:auto;margin-right:auto;margin-top:0}@media (min-width:35.9375em){.about img{float:right;margin-left:1rem;margin-top:.5rem;width:200px}}@media screen and (max-device-width:480px){html{font-size:87.5%}.header,footer,main{max-width:100%;padding-left:1rem;padding-right:1rem}.nav-social{width:100%}.post-list__details,.post__details{display:block}.post-list__tags,.post__tags{margin-top:1rem}.post__pagination{display:block;margin:2rem .5rem 0}.post__pagination a{text-wrap:balance;display:block;margin-bottom:2rem}.post__prev{text-align:right}}#page_resume{margin-top:3rem}#page_resume a{color:#004c73;color:var( --harbor )}#page_resume a:hover{color:#0085c8;color:var( --raceway )}#page_resume header{display:flex;justify-content:space-between;margin:0 0 0 5.5rem}#page_resume .identity{max-width:43rem;max-width:var(--page_width)}#page_resume .identity h2{font-size:1.75838rem;font-size:var( --text-xl )}#page_resume .identity section{margin-top:2rem}#page_resume .nav-social{align-self:flex-start;display:flex;flex-direction:column;gap:1.3rem;margin:0 0 3rem;position:unset}#page_resume .nav-social li{list-style:none;margin:0}#page_resume .nav-social li a{display:inline-block;line-height:2.25rem;padding-left:2.5rem;position:relative}#page_resume .nav-social a svg{left:0;position:absolute;top:4px}#page_resume .nav-social a[title=LinkedIn] svg{top:2px}#page_resume header h3,#page_resume header p{margin:0}#page_resume main{margin:0 0 0 5.5rem}#page_resume section{margin-bottom:2rem}#page_resume section h2{margin-bottom:1rem}#page_resume .job{margin-bottom:2rem}#page_resume .job h3,#page_resume .job h4{margin:0 0 .25rem}#page_resume .job h4{display:flex;justify-content:space-between;line-height:1.5}#page_resume .job li{margin-bottom:1rem}@media screen and (max-device-width:480px){#page_resume header{flex-direction:column;margin:0;padding:0 1rem}#page_resume main{margin:0}#page_resume .nav-social{flex-direction:row;flex-wrap:wrap;justify-content:flex-start}#page_resume .job h4{flex-direction:column}}
