@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Inter:wght@400;500;600;700&display=swap";:root{--gray-0:#f9f9f9;--gray-05:#f6f6f6;--gray-1:#eee;--gray-2:#e6e6e6;--gray-3:#ddd;--gray-4:#bbb;--gray-5:#999;--gray-6:#666;--gray-65:#555;--gray-7:#2c2c2c;--gray-8:#252525;--gray-9:#1f1f1f;--gray-10:#181818;--green:#5eddac;--orange:#ff7e22;--yellow:#fca62a;--light-yellow:#f6cd5d;--pink:#f57ad0;--lavendar:#9b78fa;--violet:#ff67f7;--blue:#59abf7;--purple:#673ece;--indigo:#5a43f1;--indigo-dark:#4509cf;--indigo-light:#969bf6;--indigo-muted:#f1f2fd;--font-family-base:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;--font-family-monospace:Menlo,"IBM Plex Mono",Menlo,monospace;--font-family-heading:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;--font-family-nav:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;--font-color-base:var(--gray-7);--font-color-muted:var(--gray-6);--font-color-heading:var(--gray-9);--font-color-heading3:var(--gray-7);--font-color-bright:var(--gray-9);--font-color-hero-heading:var(--gray-0);--border-color:var(--gray-3);--border-color-hover:var(--gray-4);--border-radius:10px;--background-color:#fff;--card-background-color:var(--gray-0);--button-background-color:var(--gray-05);--marker:var(--border-color-hover);--link:var(--indigo);--link-hover-color:var(--indigo-muted);--navbar:var(--gray-1);--navbar-border:var(--gray-2);--navbar-color:var(--gray-8);--navbar-color-hover:var(--gray-9);--navbar-background-hover:var(--gray-1);--year:var(--green);--star:var(--yellow);--post-time-color:var(--gray-6);--card-time-color:var(--gray-5);--project-time-color:var(--font-color-muted);--highlight-color:var(--green);--blockquote-background:var(--indigo-muted);--file-background:#eee;--inline-code-background-color:var(--gray-0);--category-link:#dd4eb2;--scrollbar-color:var(--gray-3);--scrollbar-track:var(--gray-4);--content-width:780px;--content-width--small:560px;--content-width--medium:700px;--navbar-height-small:60px}*,:after,:before{box-sizing:border-box}[class^=devicon-]{font-size:4rem}.error{color:red;font-weight:700}html{font-family:var(--font-family-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal;font-size:16px;font-weight:400;line-height:1.6}body{background:var(--background-color);margin:0;padding:0}a{color:var(--link);text-decoration:none}blockquote,ol,p,table,ul{color:var(--font-color-base);font-size:1rem}@media screen and (min-width:700px){blockquote,ol,p,table,ul{font-size:1.1rem;letter-spacing:-.01rem;line-height:1.625}}ol,p,ul{-webkit-font-smoothing:auto;line-height:1.625;margin-bottom:1.5rem;margin-top:0}ul{padding-left:1.5rem}ol li ol,ul li ul{margin-bottom:0;margin-top:.5rem}li{line-height:1.5;margin-bottom:.5rem;padding-left:.25rem}li::marker{color:var(--marker);font-size:1.1rem;line-height:1}main{margin-top:var(--navbar-height-small)}blockquote{background:var(--blockquote-background);border-left:1px solid var(--indigo-light);border:1px solid var(--indigo-light);border-left-width:6px;border-radius:var(--border-radius);margin:2rem 0;padding:1.5rem}blockquote p{font-size:1rem;font-weight:400;line-height:1.6}blockquote :last-child{margin:0}blockquote ul{margin-top:1.5rem}blockquote strong{font-weight:700;text-decoration-line:underline;text-decoration-thickness:2px}blockquote.quotation{background:transparent;border:none;border-left:12px solid var(--border-color);border-radius:0;color:var(--font-color-base);font-family:Georgia;font-size:1.1rem;font-style:italic;padding:0 0 0 1.5rem}blockquote.quotation cite{display:block;font-size:.9rem;font-style:normal;margin-top:1rem;text-transform:uppercase}h1,h2,h3,h4,h5{color:var(--font-color-heading);font-weight:600;line-height:1.1;margin-bottom:1.5rem;margin-top:0;scroll-margin-top:3rem}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3.5rem}h2+h3{margin-top:1.5rem!important}h2{border-bottom:1px solid var(--border-color);color:var(--font-color-heading);font-family:var(--font-family-nav);font-size:1.7rem;font-weight:700;letter-spacing:-.05rem;margin:0 0 1rem;padding-bottom:.4rem}h2.year{border-bottom:none;font-size:1.9rem}h2 code{font-size:1.7rem!important}h3{color:var(--font-color-heading3);font-family:var(--font-family-heading);font-size:1.5rem;font-weight:500;margin-bottom:1.25rem}h3 code{font-size:1.4rem!important}@media screen and (min-width:700px){main{margin-top:1rem}h2{font-size:2rem}h2 code{font-size:1.9rem!important}h2.year{border-bottom:none;font-size:2.3rem}h3{font-size:1.6rem;letter-spacing:-.02rem}h3 code{font-size:1.7rem!important}}h4,h4 code{font-size:1.2rem;font-weight:600;margin-bottom:1.5rem;text-transform:uppercase}h4,h4 code,h5{color:var(--font-color-base)}h5{font-family:var(--font-family-heading);font-size:1.1rem;font-weight:700;margin-bottom:1rem}h2.home-heading{align-items:center;border:0;display:flex;justify-content:space-between;margin-bottom:2rem;margin-top:2rem;padding:0}h2.home-heading .title{font-family:var(--font-family-base);font-size:1.7rem;font-weight:700;margin-bottom:0}@media screen and (min-width:700px){h2.home-heading{gap:2rem}h2.home-heading .title{font-size:2rem}}table{border:1px solid var(--border-color);border-collapse:separate;border-radius:var(--border-radius);border-spacing:0;display:table;font-size:1rem;line-height:1.5;margin-bottom:1.5rem;margin-top:0;max-width:100%;overflow-x:auto;width:100%}td,th{border-bottom:1px solid var(--border-color);-webkit-hyphens:auto;hyphens:auto;padding:.25rem;text-align:left;word-break:break-word}th{background:var(--card-background-color);border-bottom:2px solid var(--border-color);border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}img{display:block;max-width:100%}mark{background:#fdd94a;font-weight:600}u{text-decoration-line:underline;text-decoration-thickness:2px}.container{margin-left:auto;margin-right:auto;max-width:var(--content-width);padding:0 1rem}@media screen and (min-width:700px){.container{padding:0 2rem}}.layout{display:flex;flex-direction:column;min-height:100vh}.segment{margin-bottom:2rem;margin-top:2rem}.segment.small{margin-bottom:1rem;margin-top:1rem}.segment.large{margin-bottom:3rem}.segment.first,.segment.large{margin-top:3rem}@media screen and (min-width:700px){.segment{margin-bottom:3rem;margin-top:3rem}.segment.large{margin-bottom:5rem;margin-top:5rem}.segment.small{margin-bottom:1.5rem;margin-top:1.5rem}}a.button,button{align-items:center;background:var(--button-background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--font-color-base);cursor:pointer;display:inline-flex;font-family:var(--font-family-nav);font-size:.9rem;font-weight:500;gap:.25rem;letter-spacing:0;line-height:1;padding:.6rem 1rem;transition:transform .2s ease-in-out;white-space:nowrap}a.button.large,button.large{font-size:1.1rem;font-weight:400;padding:1rem 1.75rem}a.button.small,button.small{font-size:.9rem;padding:.5rem .6rem}a.button img,button img{margin-right:.25rem;max-height:20px;min-height:20px;min-width:20px}a.button:hover,button:hover{border-color:var(--border-color-hover);color:var(--font-color-bright)}a.button:active,button:active{transform:scale(.95)}@media screen and (min-width:700px){a.button,button{font-size:1rem;padding:.75rem 1rem}}.navigation{background:var(--background-color);border-bottom:1px solid var(--border-color);font-family:var(--font-family-nav);height:var(--navbar-height-small);left:0;position:fixed;top:0;width:100%;z-index:3}.navigation .container{display:flex;height:var(--navbar-height-small);justify-content:space-between}.navigation .nav-wrapper{display:flex}.navigation a,.navigation a:hover{background:transparent;text-decoration:none}.navigation .item.brand span,.theme-toggle span{display:none}.logo{height:36px;min-height:36px;min-width:36px;width:36px}.navigation nav{gap:.3rem;justify-content:space-between}.nav-item-outer,.navigation nav{align-items:center;display:flex}.nav-image{height:16px;min-height:16px;min-width:16px;width:16px}.navigation a.item,.navigation button.item{align-items:center;border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--navbar-color);cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:.25rem;justify-content:space-between;padding:.3rem .35rem;transition:transform .2s ease-in-out}.navigation a.item.brand{border:none;color:var(--font-color-bright);display:none;font-size:1.1rem;font-weight:700;gap:.4rem;line-height:1;padding:0}.navigation a.item.brand:hover{background:transparent}.navigation a.item:hover,.navigation button.item:hover{background:var(--button-background-color);border-color:var(--border-color-hover);color:var(--navbar-color-hover)}.navigation a.item.active,.navigation button.item.active{background:var(--button-background-color);border-color:var(--border-color);color:var(--font-color-bright)}.navigation a.item:active,.navigation button.item:active{transform:scale(.95)}.theme-toggle{align-self:center}.theme-toggle button img{margin:0}.theme-toggle button{border-radius:50%;padding:.4rem}.git-hub{gap:.5rem}@media screen and (min-width:700px){.navigation{border-bottom:none;height:auto;padding:2rem 0;position:static}.navigation .nav-wrapper{display:block}.navigation a.item{font-size:1rem;gap:.5rem;padding:.5rem .75rem}.navigation a.item.brand{display:inline-flex;font-size:1.2rem;margin-bottom:1.5rem;padding:0}.navigation a.item.brand span,.theme-toggle span{display:block}.nav-image{height:20px;min-height:20px;min-width:20px;width:20px}.navigation nav{gap:.5rem}.navigation,.navigation .container{height:auto}.theme-toggle{align-self:flex-end}.theme-toggle button{padding:.75rem}}@media screen and (max-width:360px){.navigation a.item{padding:.24rem .28rem}.navigation .container{height:var(--navbar-height-small);justify-content:space-between}.theme-toggle{align-self:center;margin-left:19.4rem;position:absolute}.theme-toggle button{border-radius:50%;padding:.3rem}}.star{align-items:center;color:var(--star);display:flex;font-family:var(--font-family-monospace);font-size:.9rem;gap:.5rem}.star a{color:var(--font-color-muted)}.star a:hover{color:var(--font-color-bright);text-decoration-line:underline;text-decoration-thickness:2px}.stars{position:absolute;right:1rem;top:1rem}.card{background:var(--card-background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:1rem;position:relative}@media screen and (min-width:700px){.card.anchored{padding-bottom:3.5rem}.card.anchored.large{padding-bottom:5rem}}.card a.card-header,.card h2{border:0;color:var(--font-color-heading);display:block;font-family:var(--font-family-base);font-size:1rem;font-weight:500;line-height:1.3;margin:.1rem 0 .5rem;padding:0;text-decoration:none}.card a.card-header:hover,.card h2:hover{color:var(--font-color-bright);text-decoration-line:underline;text-decoration-thickness:2px}.card p{color:var(--font-color-muted);font-family:var(--font-family-base);font-size:.9rem;line-height:1.5;margin:0}.card.single{padding:1.5rem}.card.single p{margin:0 0 1.5rem}.card time{color:var(--card-time-color);display:block;font-family:var(--font-family-monospace);font-size:.9rem;letter-spacing:-.01rem}.card.muted{align-items:center;background:transparent;border:1px solid transparent;padding:0}.card.muted .gatsby-image-wrapper{height:30px;max-height:30px!important;max-width:30px!important;width:30px}.card.muted time{color:var(--font-color-muted);display:none}.card.muted h2{margin:.25rem 0 1rem}@media screen and (min-width:700px){.card{padding:1.5rem}.card.muted time{display:block}.card.muted .gatsby-image-wrapper{height:45px;max-height:45px!important;max-width:45px!important;width:45px}.card a.card-header,.card h2{font-size:1.1rem;font-weight:500}.card.muted{align-items:center;background:transparent;border:1px solid var(--border-color);padding:1rem}.stars{right:1.5rem;top:1.5rem}}main{flex:1}.hero-wrapper{display:grid;padding-top:2rem}.hero{order:2;overflow:hidden;padding:1rem 0 0;position:relative;width:100%}.decoration{align-items:center;display:flex;order:1}.hero h1{color:var(--font-color-heading);font-size:2.2rem;font-weight:700;line-height:1.1;margin:0}p.hero-description{-webkit-font-smoothing:antialiased;color:var(--font-color-base);font-size:1rem;font-weight:500;letter-spacing:-.01rem;line-height:1.6;margin-bottom:1.5rem;margin-top:1.5rem}p.hero-description a{text-decoration-line:underline;text-decoration-thickness:2px}p.hero-description a:hover{text-decoration:none}.hero .sub-title{color:var(--font-color-muted);font-size:1.1rem;font-weight:500;margin-bottom:.5rem}@media screen and (min-width:700px){.hero-wrapper{align-items:center;gap:1.5rem;grid-template-columns:4fr 2fr;padding-top:0}p.hero-description{font-size:1.2rem;margin-bottom:0}.hero{order:1}.decoration{justify-content:flex-end;order:2}.hero h1{font-size:3rem}.hero.index{padding:5rem 0 3rem}}.highlight{color:var(--highlight-color)}.highlight-preview{display:grid;gap:.5rem}@media screen and (min-width:700px){.highlight-preview{gap:1rem;grid-template-columns:repeat(2,1fr)}}.image-preview,.project-preview{display:grid;gap:1rem}.image-preview{grid-template-columns:repeat(2,1fr)}.image-thumbnail{height:150px}@media screen and (min-width:700px){.project-preview{grid-template-columns:repeat(2,1fr)}.image-preview{grid-template-columns:repeat(3,1fr)}.image-thumbnail{height:220px}}.post-preview .card p{margin-bottom:1rem}.project-preview .card time{color:var(--project-time-color)}.post-preview{display:grid;gap:1rem}@media screen and (min-width:700px){.post-preview{gap:1rem;grid-template-columns:repeat(3,1fr)}}.post-preview>div{flex:1}.post-preview a.button{font-size:.9rem;padding:.5rem .6rem}.skill-preview .card p{margin-bottom:.5rem}.skill-preview .card time{color:var(--project-time-color)}.skill-preview{display:grid;gap:.5rem;grid-template-columns:repeat(2,1fr);margin:1rem;padding:1rem}@media screen and (min-width:280px){.skill-preview{display:grid;gap:.5rem;grid-template-columns:repeat(3,1fr);margin:.6rem;padding:.6rem}}@media screen and (min-width:500px){.skill-preview{display:grid;gap:.5rem;grid-template-columns:repeat(4,1fr)}}@media screen and (min-width:700px){.skill-preview{gap:1rem;grid-template-columns:repeat(5,1fr)}}.skill-preview>div{flex:1}.skill-preview a.button{font-size:.9rem;padding:.5rem .6rem}.post-content a{text-decoration-line:underline;text-decoration-thickness:2px}.post-content a:hover{background:var(--link);color:var(--link-hover-color);text-decoration:none}a.anchor,a.anchor:hover{background:transparent!important;color:var(--link)}a.anchor svg{fill:var(--link)}a.post{background:transparent;border-bottom:1px solid var(--border-color);display:flex;gap:1rem;padding:.4rem 0;text-decoration:none}a.post:last-of-type{border:none}a.post:hover,a.post:hover h3{color:var(--font-color-bright)}a.post:hover h3{text-decoration-line:underline;text-decoration-thickness:2px}a.post h3{color:var(--font-color-heading);color:var(--font-color-muted);font-family:var(--font-family-base);font-size:1rem;font-weight:500;line-height:1.3;margin:0}a.post time{color:var(--post-time-color);display:none;font-family:var(--font-family-monospace);font-size:.9rem;font-weight:500;margin-left:auto;white-space:nowrap}@media screen and (min-width:700px){.posts.newspaper{-moz-column-gap:2rem;column-gap:2rem;display:grid}a.post time{display:block}a.post h3{font-size:1.1rem;font-weight:600}}.grid{display:block}.article-content{max-width:100%;min-width:0}.links{margin-top:1rem}@media screen and (min-width:700px){.post-sidebar{display:grid;gap:1.5rem;grid-template-columns:1fr 1fr}}.post-sidebar-card{background:var(--card-background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);margin:1.5rem 0;padding:1rem}.post-sidebar h2{border:none;color:var(--font-color-heading);font-size:1.1rem;font-weight:700;letter-spacing:0;margin:0 0 1rem}.post-sidebar p,.post-sidebar ul{font-size:.9rem}.post-sidebar p:last-of-type{margin-bottom:0}.post-sidebar .tags{gap:.3rem}.post-sidebar a{text-decoration-line:underline;text-decoration-thickness:2px}.post-sidebar a:hover{text-decoration:none}.sidebar-avatar{display:block;margin-bottom:1rem;max-height:100px;max-width:100px}.list a,.sidebar-avatar{border-radius:var(--border-radius)}.list a{background-color:transparent;color:var(--font-color-base);font-size:1rem;font-weight:600;margin:0 -.3rem;padding:.1rem .5rem}.list a:hover{background:#ffffff0d;color:var(--highlight-color);text-decoration:none}@media screen and (min-width:700px){.post-sidebar-card{padding:1.5rem}.post-sidebar h2{font-size:1.3rem}}.links,.tags{display:flex;flex-wrap:wrap;gap:.5rem}a.tag{background:var(--button-background-color)!important;border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--font-color-base);font-size:.8rem;font-weight:400;padding:.2rem .4rem}a.tag,a.tag:hover{text-decoration:none}a.tag:hover{color:var(--font-color-bright)}a.tag.active,a.tag:hover{border-color:var(--highlight-color)}a.tag.active{color:var(--highlight-color);font-weight:600}@media screen and (min-width:700px){.categories.anchored,.links.anchored{bottom:1.5rem;left:1.5rem;position:absolute}}a.category{align-items:center;display:flex;justify-content:space-between;text-decoration:none}a.category.active,a.category.active .count,a.category:hover .count{color:var(--highlight-color)}.category .name{font-size:.9rem}.category .count{color:var(--font-color-muted);font-family:var(--font-family-monospace);font-size:.9rem;font-weight:400}.width.small{max-width:var(--content-width--small)}.width.medium{max-width:var(--content-width--medium)}.flex{display:flex;gap:1rem}.space-between{justify-content:space-between}.align-center{align-items:center}.align-end{align-items:flex-end}.desktop-only{display:none!important}@media screen and (min-width:700px){.desktop-only{display:flex!important}.mobile-only{display:none!important}}.post-image{margin-top:2rem;text-align:center}.header-post-image{margin-bottom:1rem}.header-post-image .gatsby-image-wrapper{max-height:50px;max-width:50px}.post-header{padding:2rem 0 1rem}.post-header h1{font-size:1.9rem;font-weight:700;letter-spacing:-.05rem;line-height:1.2;margin:0}@media screen and (min-width:700px){.post-header{padding-bottom:1rem}.header-post-image .gatsby-image-wrapper{max-height:100px;max-width:100px}.post-header h1{font-size:2.6rem;line-height:1.2}}.post-header time{color:var(--font-color-muted);display:block;font-family:var(--font-family-monospace);font-size:.9rem;font-weight:400;margin-bottom:.25rem}.footer{font-family:var(--post-font-family);padding:3rem 0}.footer section{align-items:center;display:flex;flex-direction:column;gap:1.25rem}.footer img{display:inline-block;max-height:20px;width:auto}.footer nav{display:flex;gap:.25rem;margin:0 1rem}.footer a,.footer span{align-items:center;color:var(--font-color-base);display:flex;font-size:.9rem;padding:0 .5rem}.footer span{color:var(--font-color-muted)}.footer a:hover{text-decoration-line:underline;text-decoration-thickness:2px}.gatsby-resp-image-wrapper{margin-left:0!important}a.gatsby-resp-image-link{background:transparent!important}.circles{display:flex;gap:1rem}.circle{border-radius:50%;height:40px;margin:.5rem 0;min-height:40px;min-width:40px;width:40px}@media screen and (min-width:700px){.circle{height:30px;min-height:30px;min-width:30px;width:30px}}.image{max-width:100%}.hero-image{max-width:100px}@media screen and (min-width:700px){.hero-image{max-width:100%;width:200px}}.image-thumbnail{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--border-radius);width:100%}.text-muted{color:var(--font-color-base)}.text-medium,p.text-medium{font-size:1rem}::-webkit-scrollbar{background:var(--scrollbar-track);height:8px;width:8px}::-webkit-scrollbar-thumb{background:var(--scrollbar-color);border-radius:2px}.hire-me{align-items:center;display:flex;justify-content:center}
