.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@property --brand{syntax:"<color>";inherits:true;initial-value:#c35000}@keyframes brand-cycle{0%{--brand:#c35000}33%{--brand:#c0392b}66%{--brand:#7e22ce}to{--brand:#c35000}}:root{--brand:#c35000;--brand-active:#a84300;--white:#fff;--black:#1f1f1f;--grey:#666;--grey-background:#f5f5f5;--border:#ddd;--border-radius:12px;--focus-ring:goldenrod;animation:9s ease-in-out infinite brand-cycle}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--black);backface-visibility:hidden}.no-wrap{white-space:nowrap}.hidden{display:none!important}html{scroll-behavior:smooth;overflow-y:scroll}hr{border:0;border-top:1px solid var(--border)}strong{font-weight:500}iframe{margin-bottom:0}.invisible{clip:rect(0 0 0 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.invisible a:focus,.invisible input:focus,.invisible button:focus{width:auto;height:auto;position:static}a,a:active{color:var(--brand)}@media only screen and (min-width:1200px){a:hover{color:var(--brand)}}a:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.content-link{color:var(--black);margin-bottom:8px;font-weight:500;text-decoration:none;transition:color .2s;display:inline-block}.content-link:after{content:"";background:var(--brand);width:100%;height:3px;margin-top:-3px;display:block}@media(hover:hover){.content-link:hover{color:var(--brand)}}@media only screen and (min-width:960px){.content-link{font-size:21px}}.content-link--footer,.content-link--footer:visited{color:var(--grey);font-weight:500}.content-link--footer:after{display:none}@media only screen and (min-width:960px){.content-link--footer{font-size:20px}}.content-link--footer:hover,.content-link--footer:visited:hover{color:var(--brand)}@media(hover:none){.content-link--footer:active{color:var(--brand)}}.content-link--meta{color:var(--black);font-size:18px}img,video{vertical-align:top;border-radius:var(--border-radius);width:100%;height:auto}figure{border:1px solid var(--border);margin:0;display:table}figcaption{background:var(--grey-background);border-top:1px solid var(--border);padding:8px}.image-border{border:1px solid var(--border)}table{border-collapse:collapse;text-align:left;width:100%}caption{text-align:left;background:var(--black);color:var(--white)}table,th,td{border:1px solid var(--border);padding:16px;font-size:16px}th{background:var(--grey-background);font-weight:600}@media only screen and (min-width:960px){table,th,td{padding:20px;font-size:20px}}.experience-year{display:none}@media only screen and (min-width:720px){.experience-year{display:table-cell}}html,textarea,button{line-height:1.5;font-family:var(--font-work-sans),"SF Mono","Monaco","Inconsolata","Fira Mono","Droid Sans Mono","Source Code Pro",monospace;font-optical-sizing:auto;font-style:normal}h1,h2,h3,h4,h5,h6{font-family:var(--font-domine),"SF Mono","Monaco","Inconsolata","Fira Mono","Droid Sans Mono","Source Code Pro",monospace;margin:0;font-weight:600;line-height:1.2}.body,label,button,p,a,ul,li{font-size:18px;font-weight:400;line-height:1.5}p{margin-bottom:16px}p:last-child{margin-bottom:0}li{margin-bottom:20px;margin-left:0}@media only screen and (min-width:960px){li,p{max-width:800px;font-size:21px}a{font-size:21px}}h1,h1 a{font-size:28px;font-weight:700}@media only screen and (min-width:960px){h1,h1 a{font-size:32px}}@media only screen and (min-width:1200px){h1,h1 a{font-size:48px}}@media only screen and (min-width:960px){.large-sub-heading{margin-bottom:0;font-size:36px}}.container--copy ul{margin-left:20px}.meta-grid{margin-left:0!important}.projects-grid li,.blog-grid li,.spotify-grid li,.illustration-grid li,.instagram-grid li{margin-bottom:0;max-width:100%!important;margin-left:0!important}.button{background:var(--grey-background);color:var(--black);cursor:pointer;box-sizing:border-box;border:none;border-radius:100px;align-items:center;max-width:fit-content;padding:12px 16px;font-family:inherit;font-size:16px;font-weight:500;text-decoration:none;display:inline-flex}@media only screen and (min-width:960px){.button{padding:16px 24px;font-size:18px}}.button__icon{width:16px;fill:var(--black);margin-left:12px}@media(hover:hover){.button{transition:background-color 80ms,color 80ms}.button__icon{transition:fill .15s}.button:hover{color:var(--white);background:var(--brand)}.button:hover .button__icon{fill:var(--white)}}.button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.button:active{background:var(--brand-active);color:var(--white)}.button:active .button__icon{fill:var(--white)}.button--external:hover svg{transform:rotate(-45deg)}.card{border-radius:var(--border-radius);border:1px solid var(--border);flex-direction:column;min-height:100%;padding:16px;text-decoration:none;transition:transform .3s;display:flex;overflow:hidden}@media only screen and (min-width:960px){.card:hover{transform:translateY(-4px)}}.card__image{border-radius:8px;margin-bottom:12px}.card__content{flex-direction:column;flex:1;display:flex}.card__header{padding-bottom:4px;line-height:1.5}.card .card__header,.card .card__description,.card .card__body,.card .card__date{text-decoration:none}.card .card__header{color:var(--black);flex:1;font-size:20px;font-weight:600}.card__content .card__header{flex:none}.card .card__description{color:var(--grey);font-size:18px}.card .card__body{color:var(--grey);flex:1;margin:8px 0;font-size:16px}.card .card__date{color:var(--grey);font-size:16px}.card__lock{vertical-align:middle;margin-top:-2px;margin-right:5px;display:inline-block}.carousel{width:100%;margin:0;border:none!important;display:block!important}.carousel__viewport{border-radius:var(--border-radius) var(--border-radius) 0 0;width:100%;position:relative;overflow:hidden}.carousel__track{width:100%;transition:transform .4s;display:flex}.carousel__slide{flex-shrink:0;width:100%}.carousel .carousel__slide img{border-radius:0;width:100%;display:block}.carousel__btn{z-index:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;width:40px;height:40px;color:var(--black);-webkit-tap-highlight-color:transparent;background:#ffffffe6;border:none;border-radius:100px;justify-content:center;align-items:center;transition:background-color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.carousel__btn--prev{left:12px}.carousel__btn--next{right:12px}.carousel__btn:hover:not(:disabled){background:#fff}.carousel__btn:disabled{opacity:.3;cursor:default}.carousel__btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.carousel__caption{display:block}.carousel__dots{pointer-events:none;gap:6px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.carousel__dot{background:#ffffff73;border-radius:100px;flex-shrink:0;width:8px;height:8px;transition:background-color .2s}.carousel__dot.is-active{background:#fffffff2}.footer-border{border-top:1px solid var(--border)}.footer-wrapper{background:var(--white);justify-content:space-between;align-items:center;padding:40px 20px}@media only screen and (min-width:960px){.footer-wrapper{padding:40px;display:flex}}@media only screen and (min-width:1600px){.footer-wrapper{padding:80px 40px}}@media only screen and (min-width:960px){.footer-links{order:2;align-items:center;display:flex}}.footer-links__item{padding-bottom:20px;list-style-type:none}@media only screen and (min-width:960px){.footer-links__item{margin:0 0 0 60px;padding:0}}.footer-author p{font-size:18px}.site-header{border-bottom:1px solid var(--border);margin-bottom:40px}@media only screen and (min-width:960px){.site-header{margin-bottom:80px}}.header-wrapper{background:var(--white);flex-wrap:wrap;justify-content:space-between;align-items:center;padding:16px;display:flex}@media only screen and (min-width:375px){.header-wrapper{padding:20px}}.header-wrapper--nav-open{padding-bottom:0}@media only screen and (min-width:960px){.header-wrapper{margin-bottom:40px;padding:40px 40px 0}}.menu-toggle{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:8px;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:8px;transition:background-color .2s;display:flex}.menu-toggle:hover{background-color:var(--grey-background)}.menu-toggle:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.menu-toggle__bar{background:var(--black);transform-origin:50%;border-radius:2px;width:100%;height:2px;transition:transform .25s,opacity .25s;display:block}.menu-toggle--open .menu-toggle__bar:first-child{transform:translateY(7px)rotate(45deg)}.menu-toggle--open .menu-toggle__bar:nth-child(2){opacity:0}.menu-toggle--open .menu-toggle__bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media only screen and (min-width:960px){.menu-toggle{display:none}}.nav-wrapper{margin:0;padding:0;display:none}.nav-wrapper--open{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;width:calc(100% + 32px);margin-top:20px;margin-left:-16px;padding:24px 16px;display:flex}@media only screen and (min-width:375px){.nav-wrapper--open{width:calc(100% + 40px);margin-left:-20px;padding:28px 20px}}.nav-wrapper--open .nav-list{flex-direction:column;gap:2px}.nav-wrapper--open .nav-list__item{margin-left:0;display:block}.nav-wrapper--open .nav-list__item a{border-radius:0;padding:8px 0;font-size:18px;display:block}.nav-wrapper--open .nav-list__item .nav-list__link.active{color:var(--brand);border-left:4px solid var(--brand);padding-left:12px}@media only screen and (min-width:960px){.nav-wrapper,.nav-wrapper[aria-hidden]{display:flex}}.nav-list{margin:0;padding:0;display:flex}.nav-list__item{list-style:none;display:inline}@media only screen and (min-width:960px){.nav-list__item{margin-bottom:0;margin-left:32px}}.nav-list__item:last-child{margin-bottom:0!important}.nav-list__item a,.nav-list__item a:not(.active):visited{color:var(--black);-webkit-tap-highlight-color:transparent;border-radius:100px;padding:8px;font-size:16px;text-decoration:none;transition:background-color .3s}@media only screen and (min-width:960px){.nav-list__item a{padding:8px 16px;font-size:20px}.nav-list__item a:hover,.nav-list__link.active{background-color:var(--grey-background);color:var(--black)}}.nav__lock{vertical-align:middle;margin-top:-2px;margin-right:4px;display:inline-block}.site-author{color:var(--black);-webkit-tap-highlight-color:transparent;align-items:center;text-decoration:none;display:inline-flex}.site-author:visited,.site-author:focus,.site-author:active{color:var(--black)}.site-author__title{letter-spacing:-.1px;padding:4px 0;font-size:16px;font-weight:500}@media only screen and (min-width:960px){.site-author__title{font-size:20px}}.hero__image-container{cursor:pointer;margin-bottom:20px;display:inline-flex;position:relative}@media only screen and (min-width:960px){.hero__image-container{margin-bottom:40px}}.hero__image-container img{border-radius:50%;display:inline-flex}.hero__portrait,.hero__portrait--hover{width:120px}.hero__portrait{object-fit:cover;border-radius:var(--border-radius);filter:grayscale();height:auto}.hero__portrait--hover{opacity:0;border-radius:var(--border-radius);transition:opacity .2s ease-in-out;position:absolute;top:0;left:0}.hero__image-container:hover{cursor:url("data:image/svg+xml;charset=UTF-8,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'><text y='34' x='0' font-size='24'>🐶</text></svg>") 14 14,auto}.hero__image-container:hover .hero__portrait--hover{opacity:1}.hero__header{margin-bottom:16px;font-size:28px;font-weight:500;line-height:1.5}.hero__header a{font-weight:600;text-decoration:none}@media only screen and (min-width:960px){.hero__header,.hero__header a{font-size:32px}}@media only screen and (min-width:1400px){.hero__header,.hero__header a{font-size:36px}}@media only screen and (min-width:1440px){.hero__header,.hero__header a{font-size:42px}}@media only screen and (min-width:1600px){.hero__header,.hero__header a{font-size:48px}}.hero__header{margin-bottom:20px}.hero__description{color:var(--grey);font-size:18px;font-weight:500;text-decoration:none;margin-bottom:16px!important}.hero__description--highlight{color:var(--black);font-weight:600}.container{margin-bottom:40px;padding-left:20px;padding-right:20px}@media only screen and (min-width:960px){.container{margin-bottom:80px;padding-left:40px;padding-right:40px}}.container--content{gap:20px;display:grid}@media only screen and (min-width:960px){.container--content{gap:40px}}.container--copy{gap:4px;display:grid}@media only screen and (min-width:960px){.container--copy{gap:8px}}.container--content>h2+p,.container--content>h2+ul{margin-top:-12px}@media only screen and (min-width:960px){.container--content>h2+p,.container--content>h2+ul{margin-top:-24px}}.container--content>h2+.projects-grid--featured{margin-top:0}.container,.header-wrapper,.footer-wrapper{max-width:1600px;margin-left:auto;margin-right:auto}.page-header{margin-bottom:32px}@media only screen and (min-width:960px){.page-header{margin-bottom:48px}}.blog-grid{gap:20px;padding:0;list-style-type:none;display:grid}@media only screen and (min-width:960px){.blog-grid{grid-template-columns:1fr 1fr 1fr;gap:40px}.blog-grid--2col{grid-template-columns:1fr 1fr}.blog-grid li.blog-grid__featured{grid-column:1/-1}.blog-grid__featured .card{flex-direction:row;align-items:stretch;padding:16px}.blog-grid__featured .card__image{object-fit:cover;border-radius:8px;flex-shrink:0;width:50%;height:auto;margin-bottom:0}.blog-grid__featured .card__content{justify-content:space-between;padding:32px}.blog-grid__featured .card__header{font-size:28px}.blog-grid__featured .card__body{flex:1;margin:16px 0;font-size:18px}.blog-grid__featured .card__date{font-size:16px}}.projects-grid{gap:20px;padding:0;list-style-type:none;display:grid}@media only screen and (min-width:960px){.projects-grid{grid-template-columns:repeat(6,1fr);gap:40px}.projects-grid li{grid-column:span 3}.projects-grid li:nth-child(n+5){grid-column:span 2}}.projects-grid--featured li:last-child{margin-bottom:0}@media only screen and (min-width:960px){.projects-grid--featured li{margin-bottom:0}}.project-image-grid{gap:20px;display:grid}@media only screen and (min-width:960px){.project-image-grid{grid-template-columns:1fr 1fr;gap:40px!important}}.project-image-grid--vertical{grid-template-columns:1fr 1fr}@media only screen and (min-width:960px){.project-image-grid--vertical{grid-template-columns:1fr 1fr 1fr 1fr;gap:40px!important}}.illustration-grid{grid-template-columns:1fr 1fr;gap:20px;list-style-type:none;display:grid}@media only screen and (min-width:960px){.illustration-grid{grid-template-columns:1fr 1fr 1fr 1fr;gap:40px!important}}.spotify-grid{gap:20px;list-style-type:none;display:grid;margin-bottom:2px!important}@media only screen and (min-width:960px){.spotify-grid{grid-template-columns:1fr 1fr;gap:36px!important;margin-bottom:40px!important}}.instagram-grid{grid-template-columns:1fr 1fr;gap:20px;list-style-type:none;display:grid}@media only screen and (min-width:1200px){.instagram-grid{grid-template-columns:1fr 1fr 1fr 1fr;gap:40px!important}}figure,figcaption{border:none}figcaption{background:var(--white);border:2px solid var(--grey-background);border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);border-top:none;padding:16px}figure img{border-bottom-right-radius:0;border-bottom-left-radius:0}.meta-grid{margin-bottom:0;padding:0}@media only screen and (min-width:960px){.meta-grid{display:flex}}.meta-grid p{font-size:18px}.meta-grid--counter p{font-size:64px!important;font-weight:300!important}.meta-grid h2{color:var(--grey);font-size:18px}.meta-grid li:last-child,.meta-grid--project,.meta-grid--blog{margin-bottom:0}@media only screen and (min-width:960px){.meta-grid--project h2{font-size:20px}}.meta-grid li{margin-bottom:20px;padding:0;list-style-type:none}@media only screen and (min-width:960px){.meta-grid li{margin-bottom:0;margin-right:80px}}.page-heading{margin-bottom:8px}.pan-image{width:100%;margin:0;border:none!important;display:block!important}.pan-image__viewport{aspect-ratio:8/5;border-radius:var(--border-radius) var(--border-radius) 0 0;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:pan-y;width:100%;height:auto;position:relative;overflow:hidden}.pan-image__viewport.is-dragging{cursor:grabbing}.pan-image .pan-image__img{will-change:transform;pointer-events:none;-webkit-user-drag:none;border-radius:0;width:auto;max-width:none;height:100%;display:block;position:absolute;top:0;left:0}.pan-image__btn{z-index:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;width:40px;height:40px;color:var(--black);background:#ffffffe6;border:none;border-radius:100px;justify-content:center;align-items:center;transition:background-color .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.pan-image__btn:hover{background:#fff}.pan-image__btn:disabled{opacity:.35;cursor:default}.pan-image__btn--prev{left:12px}.pan-image__btn--next{right:12px}.pan-image__caption{display:block}.meta-grid--blog[data-astro-cid-4sn4zg3r] time[data-astro-cid-4sn4zg3r]{color:var(--black);font-size:18px}.post-body[data-astro-cid-4sn4zg3r]{display:block}[data-astro-cid-4sn4zg3r]:is(:global(.post-body h2),:global(.post-body h3),:global(.post-body p),:global(.post-body ul),:global(.post-body ol),:global(.post-body pre)){max-width:800px}[data-astro-cid-4sn4zg3r]:is(:global(.post-body ul),:global(.post-body ol)){margin-left:24px}.post-body li{margin-bottom:8px}.post-body p:has(>img){margin-top:24px;margin-bottom:24px}.post-body p:has(>img) img{width:100%;display:block}.post-body code{background:var(--grey-background);color:var(--black);border-radius:4px;padding:2px 6px;font-family:Courier New,Courier,monospace;font-size:1em}.post-body pre{border:1px solid var(--black);border-radius:var(--border-radius);max-width:800px;margin-bottom:24px;padding:20px;overflow-x:auto;background:var(--black)!important}.post-body pre code{color:var(--white);background:0 0;border-radius:0;padding:0}.post-body h2{margin-top:40px;margin-bottom:6px}.post-body h3{margin-top:28px;margin-bottom:4px}[data-astro-cid-4sn4zg3r]:is(:global(.post-body h2:first-child),:global(.post-body h3:first-child)){margin-top:0}@media only screen and (min-width:960px){.post-body h2{margin-top:48px;margin-bottom:8px}.post-body h3{margin-top:36px;margin-bottom:6px}}.post-body a{color:var(--black);font-weight:500;text-decoration:none;transition:color .2s;display:inline-block}.post-body a:after{content:"";background:var(--brand);width:100%;height:3px;margin-top:-3px;display:block}@media(hover:hover){.post-body a:hover{color:var(--brand)}}.back-button-wrap[data-astro-cid-4sn4zg3r]{margin-bottom:48px}@media only screen and (min-width:960px){.back-button-wrap[data-astro-cid-4sn4zg3r]{margin-bottom:80px}}
