@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@500;600&family=Roboto:wght@400;500&display=swap);
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--color-page-background:#fffbf3;--color-page-overlay:rgba(255,251,243,0.88);--color-divider:rgba(32,0,40,0.08);--color-border-heavy:rgba(32,0,40,0.32);--color-border-light:rgba(32,0,40,0.16);--color-mark:#fae3bd;--color-highlight-heavy:rgba(32,0,40,0.12);--color-highlight-light:rgba(32,0,40,0.04);--color-negative:#e00000;--color-negative-wash:#fee6e6;--color-content-0:rgba(32,0,40,0.96);--color-content-1:rgba(32,0,40,0.92);--color-content-2:rgba(32,0,40,0.64);--color-content-3:rgba(32,0,40,0.48);--color-content-4:rgba(32,0,40,0.32);--color-content-5:rgba(32,0,40,0.16);--color-content-6:rgba(32,0,40,0.08);--color-content-7:rgba(32,0,40,0.05);--opacity-media:1;--max-width-content:828px}*{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline:none}*,body,html{color:var(--color-content-1)}body,html{font-family:Roboto,Arial,sans-serif;background-color:var(--color-page-background);font-size:16px;font-weight:400;height:100%;overflow-x:hidden}@media(max-width:736px){body,html{font-size:15px}}#__next{height:100%}h1,h2,h3,h4,h5{font-family:Poppins,Roboto,Arial,sans-serif;font-weight:600;letter-spacing:-.015em;-webkit-transform:scaleX(.96);transform:scaleX(.96);-webkit-transform-origin:left center;transform-origin:left center;color:var(--color-content-0)}a{text-decoration:none;-webkit-transition:color .1s ease;transition:color .1s ease}a,a:active,a:focus,a:hover{color:var(--color-content-1)}.has-url-links a{word-break:break-all}p a:active,p a:focus,p a:hover{text-decoration:underline}p a:focus-visible{background-color:var(--color-highlight-heavy)}.youtube-container{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;margin-bottom:50px}.youtube-container iframe{width:100%;height:100%;position:absolute;top:0;left:0}.secondary{opacity:.68}.tertiary{opacity:.4}label{font-family:Poppins,Roboto,Arial,sans-serif;font-size:.92rem;font-weight:600;letter-spacing:-.015em;font-weight:500;color:var(--color-content-1)}input,label,textarea{display:block;width:100%}input,textarea{margin:.5rem 0 0;padding:8px 12px;border-radius:6px;border:none;outline:none;background:transparent;-webkit-box-shadow:0 0 0 1px var(--color-border-light);box-shadow:0 0 0 1px var(--color-border-light);-webkit-highlight:none;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none;font-family:Roboto,Arial,sans-serif;font-size:1.1rem;line-height:1.5em;font-weight:400}input:focus,textarea:focus{-webkit-box-shadow:0 0 0 2px var(--color-border-heavy);box-shadow:0 0 0 2px var(--color-border-heavy)}textarea{min-height:6rem}.button,button{display:inline-block;width:auto;padding:12px 16px 11px;border-radius:8px;border:none;font-family:Roboto,Arial,sans-serif;font-size:1rem;font-weight:500;background:var(--color-content-1);color:var(--color-page-background);cursor:pointer;text-decoration:none}.button:active,.button:focus,.button:hover,button:active,button:focus,button:hover{-webkit-box-shadow:0 0 0 0 var(--color-page-background),0 0 0 3px var(--color-highlight-heavy);box-shadow:0 0 0 0 var(--color-page-background),0 0 0 3px var(--color-highlight-heavy)}.button:focus-visible,button:focus-visible{-webkit-box-shadow:0 0 0 2px var(--color-page-background),0 0 0 4px var(--color-content-2);box-shadow:0 0 0 2px var(--color-page-background),0 0 0 4px var(--color-content-2)}.button.secondary,button.secondary{font-weight:400;background:var(--color-content-6);color:var(--color-content-1);opacity:1}.button.tertiary,button.tertiary{font-weight:400;background:transparent;color:var(--color-content-1);opacity:1}.button.tertiary:hover,button.tertiary:hover{background:var(--color-content-6);-webkit-box-shadow:none;box-shadow:none}mark{position:relative;background:transparent;overflow:visible;white-space:nowrap}mark:after{content:"";display:block;position:absolute;top:auto;left:-2px;right:-2px;bottom:.12em;height:.5em;border-radius:.5em;background-color:rgba(255,177,38,.24);mix-blend-mode:multiply}mark+mark:after{left:-6px}body:not(.did-load) mark.mark-animated:after{opacity:0;-webkit-animation-name:mark-animation;animation-name:mark-animation;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-delay:1.5s;animation-delay:1.5s}@-webkit-keyframes mark-animation{0%{width:0;opacity:0}5%{opacity:1}to{width:calc(100% + 4px);opacity:1}}@keyframes mark-animation{0%{width:0;opacity:0}5%{opacity:1}to{width:calc(100% + 4px);opacity:1}}body:not(.did-load) .draw-path{stroke-dasharray:1;stroke-dashoffset:1;-webkit-animation-name:dash-path;animation-name:dash-path;-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.645,.045,.355,1);animation-timing-function:cubic-bezier(.645,.045,.355,1);-webkit-animation-delay:2s;animation-delay:2s;opacity:0}@-webkit-keyframes dash-path{0%{stroke-dashoffset:1;opacity:0}5%{opacity:1}to{stroke-dashoffset:0;opacity:1}}@keyframes dash-path{0%{stroke-dashoffset:1;opacity:0}5%{opacity:1}to{stroke-dashoffset:0;opacity:1}}.column-container{width:calc(100% + 28px)}.column-3{width:calc((100% - (28px * 3)) / 3)}.column-2,.column-3{display:inline-block;margin-right:28px;vertical-align:top}.column-2{width:calc((100% - (28px * 2)) / 2)}@media(max-width:736px){.column-container{width:100%}.column-2,.column-3{width:100%;margin-right:0}}.gte-736{display:flex}.lt-736{display:none}@media(max-width:735px){.gte-736{display:none}.lt-736{display:flex}}.card{position:relative;margin:2em 0 0}.card .container{position:relative;margin:0;padding:0;border-radius:1em;background-color:hsla(0,0%,100%,.96);-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.02),0 1px 6px rgba(0,0,0,.04),0 1px 12px rgba(0,0,0,.02);box-shadow:0 0 1px 1px rgba(0,0,0,.02),0 1px 6px rgba(0,0,0,.04),0 1px 12px rgba(0,0,0,.02);height:auto;min-height:0}.card:first-of-type .gradient{top:80px!important}.card .gradient{display:none;position:absolute;top:-80px;left:-50vw;right:-50vw;bottom:-80px;-webkit-filter:blur(20vw);filter:blur(20vw);background-color:transparent;z-index:0;opacity:.2;pointer-events:none;mix-blend-mode:multiply;-webkit-animation:hueRotate 5s linear infinite forwards,moveUpDown 7s ease-in-out infinite forwards;animation:hueRotate 5s linear infinite forwards,moveUpDown 7s ease-in-out infinite forwards}@-webkit-keyframes hueRotate{0%{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1);filter:hue-rotate(0deg) blur(20vw) saturate(1)}25%{-webkit-filter:hue-rotate(20deg) blur(20vw) saturate(.9);filter:hue-rotate(20deg) blur(20vw) saturate(.9)}50%{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1.1);filter:hue-rotate(0deg) blur(20vw) saturate(1.1)}75%{-webkit-filter:hue-rotate(-20deg) blur(20vw) saturate(.9);filter:hue-rotate(-20deg) blur(20vw) saturate(.9)}to{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1);filter:hue-rotate(0deg) blur(20vw) saturate(1)}}@keyframes hueRotate{0%{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1);filter:hue-rotate(0deg) blur(20vw) saturate(1)}25%{-webkit-filter:hue-rotate(20deg) blur(20vw) saturate(.9);filter:hue-rotate(20deg) blur(20vw) saturate(.9)}50%{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1.1);filter:hue-rotate(0deg) blur(20vw) saturate(1.1)}75%{-webkit-filter:hue-rotate(-20deg) blur(20vw) saturate(.9);filter:hue-rotate(-20deg) blur(20vw) saturate(.9)}to{-webkit-filter:hue-rotate(0deg) blur(20vw) saturate(1);filter:hue-rotate(0deg) blur(20vw) saturate(1)}}@-webkit-keyframes moveUpDown{0%{top:-10vh}50%{top:10vh}to{top:-10vh}}@keyframes moveUpDown{0%{top:-10vh}50%{top:10vh}to{top:-10vh}}.card .card-header{position:relative;width:100%;border-radius:0}.card .card-header img{border-radius:1em;border-bottom-left-radius:0;border-bottom-right-radius:0}.card .card-header .img-with-preview.img-open img{border-radius:1em;border-bottom-left-radius:1em;border-bottom-right-radius:1em}.card .card-header .img-with-preview:not(.img-open) img{-webkit-box-shadow:0 1px 0 rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.08)}.card .card-content{position:relative;margin-top:-.25em;padding:1.85em 2em 2.25em;background-color:hsla(0,0%,100%,.92);border-bottom-right-radius:1em;border-bottom-left-radius:1em}.card .card-content>h2,.card>h2{margin:0!important;padding:0!important}.card small+p{margin-top:1.5em}@media(max-width:736px){.card .card-content{padding:1.5em 1.5em 1.75em}}.portfolio-section{margin:4.5em 0 0}.portfolio-section-header{display:flex;align-items:flex-end;justify-content:space-between;grid-gap:1.5em;gap:1.5em}.portfolio-section-header h2{margin:0!important;padding:0!important;font-size:1.6rem}.portfolio-section p.portfolio-section-role{display:flex;flex-wrap:wrap;grid-gap:0 .5em;gap:0 .5em;margin:.4em 0 0;font-size:1rem;line-height:1.4;color:var(--color-content-2);font-weight:500}.portfolio-section p.portfolio-section-role span+span:before{content:"·";margin-right:.5em;color:var(--color-content-4)}.portfolio-section p.portfolio-section-summary{max-width:40em;margin:.8em 0 0;font-size:1rem;line-height:1.55;color:var(--color-content-2)}.portfolio-section-arrows{display:flex;flex-shrink:0;grid-gap:.5em;gap:.5em}.portfolio-section-arrows button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:40px;color:var(--color-content-3);background-color:var(--color-content-6);cursor:pointer}svg.icon,svg.icon *{color:inherit}.portfolio-section-arrows button:hover:not(:disabled){background-color:var(--color-content-5)}.portfolio-section-arrows button:active,.portfolio-section-arrows button:focus,.portfolio-section-arrows button:hover{-webkit-box-shadow:none;box-shadow:none}.portfolio-section-arrows button:focus-visible{-webkit-box-shadow:0 0 0 2px var(--color-page-background),0 0 0 4px var(--color-content-2);box-shadow:0 0 0 2px var(--color-page-background),0 0 0 4px var(--color-content-2)}.portfolio-section-arrows button:disabled{opacity:.35;cursor:default}.project-row{--row-inset:max(1.75rem,calc((100vw - 52rem) / 2 + 1.75rem));display:flex;align-items:stretch;grid-gap:1.25em;gap:1.25em;margin:1.25em calc(50% - 50vw) 0;padding:.75em var(--row-inset) 1.75em var(--row-inset);overflow-x:auto;overscroll-behavior-x:contain;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scroll-padding:0 var(--row-inset)}.project-row::-webkit-scrollbar{height:6px}.project-row::-webkit-scrollbar-track{margin:0 var(--row-inset);border-radius:6px;background-color:transparent}.project-row::-webkit-scrollbar-thumb{border-radius:6px;background-color:var(--color-content-5)}@supports (-moz-appearance:none){.project-row{scrollbar-width:thin;scrollbar-color:var(--color-content-5) transparent}}.project-row>.project-card{display:flex;flex:0 0 min(42rem,86vw);margin:0;scroll-snap-align:start}.project-row>.project-card:only-child{flex-basis:100%}.project-card .card-header .img-with-preview:not(.img-open) img,.project-card .card-header video,.project-card .container{-webkit-box-shadow:none;box-shadow:none}.project-card .card-header video,body>span video{border-radius:0}.project-row>.project-card .container{display:flex;flex-direction:column;width:100%}.project-row>.project-card .card-content{margin-top:0}.project-title-row{display:flex;align-items:center;grid-gap:.5em .6em;gap:.5em .6em}.project-heading{flex:1 1;min-width:0}.project-heading>h3{margin:0!important;padding:0!important;font-size:1.35rem}.project-stat{display:flex;flex:none;flex-direction:column;justify-content:center;align-self:stretch;padding:.75em 1.1em;border-radius:1em;background-color:var(--color-content-7);color:var(--color-content-2);font-size:.75rem;line-height:1.3}.project-stat-value{color:var(--color-content-0);font-size:1.35rem;font-weight:400;line-height:1.15}.project-year{font-size:.8rem}.project-card .card-content>p{margin-top:1em}.project-card .card-content strong{font-weight:500;color:var(--color-content-0)}.project-cta{margin-top:1.5em}@media(max-width:736px){.portfolio-section-header h2{font-size:1.4rem}.portfolio-section-arrows{display:none}.project-row{--row-inset:1.75rem;grid-gap:1em;gap:1em}.project-title-row{flex-wrap:wrap}.project-heading{flex-basis:100%}}@media (prefers-reduced-motion:reduce){.project-row{scroll-behavior:auto}}.project-card .inline-preview{display:inline-block;margin:0 .1em 0 .2em;vertical-align:-.32em}.project-card .inline-preview .img-with-preview>img{display:inline-block;width:2.5em;height:1.4em;margin:0;object-fit:cover;border-radius:.3em;-webkit-box-shadow:0 0 0 1px var(--color-content-5);box-shadow:0 0 0 1px var(--color-content-5)}.project-card .inline-preview .img-with-preview>img:hover{-webkit-box-shadow:0 0 0 2px var(--color-content-3);box-shadow:0 0 0 2px var(--color-content-3)}.project-row>.project-card.is-peeking,.project-row>.project-card.is-peeking *{cursor:pointer!important}.codeContainer pre *,.codeContainer pre code *{color:inherit}.codeContainer code[class*=language-],.codeContainer pre[class*=language-]{color:#9cdcfe;font-size:.9rem;text-shadow:none;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.codeContainer code[class*=language-]::selection,.codeContainer code[class*=language-] ::selection,.codeContainer pre[class*=language-]::selection,.codeContainer pre[class*=language-] ::selection{text-shadow:none;background:#264f78}@media print{.codeContainer code[class*=language-],.codeContainer pre[class*=language-]{text-shadow:none}}.codeContainer pre[class*=language-]{padding:1.25em;margin:1.5em 0 0;overflow:auto;background:#1e1e1e}.codeContainer :not(pre)>code[class*=language-]{padding:.1em .3em;border-radius:.3em;color:#db4c69;background:#1e1e1e}.codeContainer .namespace{opacity:.7}.codeContainer .token.property-access{color:#9cdcfe}.codeContainer .token.doctype .token.doctype-tag{color:#569cd6}.codeContainer .token.doctype .token.name{color:#9cdcfe}.codeContainer .token.comment,.codeContainer .token.prolog{color:#6a9955}.codeContainer .language-html .language-css .token.punctuation,.codeContainer .language-html .language-javascript .token.punctuation,.codeContainer .token.punctuation{color:#d4d4d4}.codeContainer .token.boolean,.codeContainer .token.constant,.codeContainer .token.inserted,.codeContainer .token.number,.codeContainer .token.property,.codeContainer .token.symbol,.codeContainer .token.tag,.codeContainer .token.unit{color:#b5cea8}.codeContainer .token.attr-name,.codeContainer .token.builtin,.codeContainer .token.char,.codeContainer .token.deleted,.codeContainer .token.selector,.codeContainer .token.string{color:#ce9178}.codeContainer .language-css .token.string.url{text-decoration:underline}.codeContainer .token.entity,.codeContainer .token.operator{color:#d4d4d4}.codeContainer .token.operator.arrow{color:#569cd6}.codeContainer .token.atrule{color:#ce9178}.codeContainer .token.atrule .token.rule{color:#c586c0}.codeContainer .token.atrule .token.url{color:#9cdcfe}.codeContainer .token.atrule .token.url .token.function{color:#dcdcaa}.codeContainer .token.atrule .token.url .token.punctuation{color:#d4d4d4}.codeContainer .token.keyword{color:#569cd6}.codeContainer .token.keyword.control-flow,.codeContainer .token.keyword.module{color:#c586c0}.codeContainer .token.function,.codeContainer .token.function .token.maybe-class-name{color:#dcdcaa}.codeContainer .token.regex{color:#d16969}.codeContainer .token.important{color:#569cd6}.codeContainer .token.italic{font-style:italic}.codeContainer .token.constant{color:#9cdcfe}.codeContainer .token.class-name,.codeContainer .token.maybe-class-name{color:#4ec9b0}.codeContainer .token.console,.codeContainer .token.interpolation,.codeContainer .token.parameter{color:#9cdcfe}.codeContainer .token.boolean,.codeContainer .token.punctuation.interpolation-punctuation{color:#569cd6}.codeContainer .token.exports .token.maybe-class-name,.codeContainer .token.imports .token.maybe-class-name,.codeContainer .token.property,.codeContainer .token.variable{color:#9cdcfe}.codeContainer .token.escape,.codeContainer .token.selector{color:#d7ba7d}.codeContainer .token.tag{color:#569cd6}.codeContainer .token.cdata,.codeContainer .token.tag .token.punctuation{color:grey}.codeContainer .token.attr-name{color:#9cdcfe}.codeContainer .token.attr-value,.codeContainer .token.attr-value .token.punctuation{color:#ce9178}.codeContainer .token.attr-value .token.punctuation.attr-equals{color:#d4d4d4}.codeContainer .token.entity{color:#569cd6}.codeContainer .token.namespace{color:#4ec9b0}.codeContainer code[class*=language-javascript],.codeContainer code[class*=language-jsx],.codeContainer code[class*=language-tsx],.codeContainer code[class*=language-typescript],.codeContainer pre[class*=language-javascript],.codeContainer pre[class*=language-jsx],.codeContainer pre[class*=language-tsx],.codeContainer pre[class*=language-typescript]{color:#9cdcfe}.codeContainer code[class*=language-css],.codeContainer pre[class*=language-css]{color:#ce9178}.codeContainer code[class*=language-html],.codeContainer pre[class*=language-html]{color:#d4d4d4}.codeContainer .language-regex .token.anchor{color:#dcdcaa}.codeContainer .language-html .token.punctuation{color:grey}.codeContainer pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}.codeContainer .line-highlight.line-highlight{background:#f7ebc6;-webkit-box-shadow:inset 5px 0 0 #f7d87c;box-shadow:inset 5px 0 0 #f7d87c;z-index:0}