@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;src:url(/static/fonts/plus-jakarta-sans/vf/PlusJakartaSans%5Bwght%5D.ttf)format("truetype");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;src:url(/static/fonts/plus-jakarta-sans/vf/PlusJakartaSans%5Bwght%5D.ttf)format("truetype");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;src:url(/static/fonts/plus-jakarta-sans/vf/PlusJakartaSans%5Bwght%5D.ttf)format("truetype");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:bold;font-weight:800;src:url(/static/fonts/plus-jakarta-sans/vf/PlusJakartaSans%5Bwght%5D.ttf)format("truetype");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--base-font-size:16px;--h1:3.812rem;--h2:2.438rem;--h3:1.938rem;--h4:1.562rem;--h5:1.25rem;--paragraph:1rem;--paragraph-lg:1.5rem;--paragraph-line-height:1.75em;--system-font:-apple-system-body, "inter", "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--primary-font:"Plus Jakarta Sans";--hero-text-gradient:linear-gradient(90deg, #38bdf8 14%, #8d34fe 52.12%, #e234fe 88.82%);--rainbow-gradient:linear-gradient(87.98deg, #38bdf8 -7%, #8d34fe 96.8%, #e234fe 223.22%);--color-electric-blue:#38bdf8;--color-text-normal:#cbd5e1;--color-text-strong:#fff;--color-link:#fff;--color-error:#dd4b4b;--body-background:#171e2c;--content-background:#050911;--nav-link:#94a3b8;--nav-link-selected:#fff;--color-text:var(--color-text-normal);--color-text-resume:#94a3b8;--badge-background:#161a25;--badge-text-color:#94a3b8;--hero-background-color:#030a1680;--hero-border-color:#334155;--hero-box-shadow:0px 0px 100px #4083f726;--divider-color:#1f222a;--thumbnail-border-color:#424751;--thumbnail-background-color:#1b222f;--thumbnail-title-background-color:var(--thumbnail-border-color);--thumbnail-text-color:#fff;--image-headshot:url(/static/img/headshot.png);--max-content-width:50rem;--wavy-header:url(/static/img/wavy-header--dark.svg);--image-wave:url(/static/img/wavy-section--dark.svg);--logo:url(/static/img/logo.svg);--icon-resume:url(/static/img/icons/resume.svg);--icon-login:url(/static/img/icons/arrow-right.svg);--icon-case-studies:url(/static/img/icons/archive.svg);--icon-download:url(/static/img/icons/download.svg);--icon-close:url(/static/img/icons/close.svg);--icon-open-lock:url(/static/img/icons/open-lock.svg);--icon-diamond:url(/static/img/icons/diamond.svg);--icon-chart:url(/static/img/icons/chart.svg);--transition:.5s ease-out;--wavy-footer:url(/static/img/wavy-footer--dark.svg);--footer-background:#0b111c;--footer-text-color:#64748b;--footer-height:14em;--nav-trigger-color:#fff;--elevation-0:0;--elevation-1:1}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}hr{box-sizing:content-box;height:0;overflow:visible}img{border-style:none;max-width:100%}*{box-sizing:border-box}html{height:100%;font-size:var(--base-font-size)}body{overflow-scrolling:touch;background-color:var(--body-background);justify-content:center;align-items:center;margin:0;padding:0;display:flex}#root{display:contents}.content{background-image:var(--wavy-header);width:100%;max-width:90em;height:100%;min-height:100vh;z-index:var(--elevation-0);padding-bottom:var(--footer-height);z-index:1;background-position:50% 0;background-repeat:no-repeat;background-size:100%;background-color:var(--content-background);font-size:1rem;position:relative;overflow:hidden}.layout-container{width:90%;max-width:90em;margin:0 auto}.layout-container.section{max-width:var(--max-content-width);padding-top:2.5em}section.content-area{padding:var(--content-area-padding) 0}section .content-container{flex-wrap:wrap;justify-content:center;align-items:center;margin:0 auto;display:flex}.center{text-align:center}.timeframe{opacity:.5;font-weight:300}@media only screen and (width>=1440px){body{padding:2em}.content{border:1px solid var(--hero-border-color);border-radius:1.25em;min-height:calc(100vh - 4rem)}}@media only screen and (width<=767px){.content{background-position:0 0;background-size:200%}}body{font-family:var(--system-font);font-size:var(--base-font-size);-webkit-text-size-adjust:100%;color:var(--color-text);text-rendering:optimizelegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:1.75em;font-family:var(--primary-font);font-weight:500}b,strong{font-weight:bolder}h1,h2,h3,h4,h5,h6,p,li,ol{margin:0 0 1rem;padding:0;line-height:1.5em}h1,h2,h3,h4,h5,h6{font-weight:900;line-height:1.2em;font-family:var(--primary-font)}h1{font-size:var(--h1)}h2{font-size:var(--h2)}h3{font-size:var(--h3)}h4{font-size:var(--h4)}h5{font-size:var(--h5)}p,li,ol{font-size:var(--paragraph);line-height:var(--paragraph-line-height)}p.large{font-size:var(--paragraph-lg)}.text-blue{color:var(--color-electric-blue)}footer{height:var(--footer-height);background-image:var(--wavy-footer);background-color:var(--footer-background);text-align:center;vertical-align:middle;background-position:50% 0;background-repeat:no-repeat;align-items:center;width:100%;display:flex;position:absolute;bottom:-.25em}footer .copyright{color:var(--footer-text-color);margin-top:1.5em;font-size:.75em;font-weight:700}footer .social{margin-top:1em;display:inline-block}footer .social a{opacity:1;transition:opacity .3s ease-out}footer .social a:hover{opacity:.6}body.mobile-nav-active{overflow:hidden}nav{border-bottom:1px solid #0000;flex-direction:row;justify-content:center;align-items:center;width:90%;max-width:90em;height:3.75em;margin:2em auto;padding:2em 0;font-size:1rem;display:flex;top:1.875em}nav .links{flex-grow:1;justify-content:center;align-items:center;display:flex}nav .links a{color:var(--nav-link);margin:0 .75rem;font-size:1.25em;text-decoration:none}nav .links a.active{color:var(--nav-link-selected);font-weight:600}nav .links a.inactive{color:var(--nav-link);transition:color var(--transition), border-color var(--transition);border-bottom:2px solid #0000}nav .links a.inactive:hover{color:var(--nav-link-selected);border-color:var(--nav-link-selected)}nav .logo{background:var(--logo);background-position:50%;background-repeat:no-repeat;background-size:2.75em;border-radius:100%;flex-grow:0;flex-shrink:0;order:0;width:2.75em;height:2.75em;margin-right:4em;font-size:1rem}nav .menu-icon{display:none}nav .menu-icon .trigger{cursor:pointer;width:20px;display:block}nav .menu-icon .trigger .bar{background-color:var(--nav-trigger-color);transform-origin:50%;width:1.25em;height:1px;margin-bottom:6px;transition:opacity .2s,top .25s .35s,transform .25s;display:block;position:relative;top:0}nav .menu-icon .bar:last-child{margin-bottom:0}body.mobile-nav-active nav .menu-icon .trigger .bar{transition:opacity .2s,top .25s .1s,transform .25s .45s}body.mobile-nav-active nav .menu-icon .trigger .bar.top{top:7px;transform:rotate(45deg)}body.mobile-nav-active nav .menu-icon .trigger .bar.middle{opacity:0}body.mobile-nav-active nav .menu-icon .trigger .bar.bottom{top:-7px;transform:rotate(-45deg)}.mobile-nav{z-index:2;opacity:0;will-change:opacity, top;background-color:#000000f2;width:100vw;height:100vh;transition:opacity .75s .5s,top .55s .5s;display:none;position:absolute;top:-100vh;left:0}body.mobile-nav-active .mobile-nav{opacity:1;transition:opacity .25s ease-out .1s,top .35s ease-out .1s;top:0}.mobile-nav .links{flex-direction:column;flex-grow:1;justify-content:center;align-items:center;margin-top:6em;display:flex}.mobile-nav .links a{color:var(--nav-link);opacity:0;will-change:opacity;margin:1em;font-size:1.5em;text-decoration:none;transition:all 1s ease-out}.mobile-nav .links a.active{color:var(--nav-link-selected);border-bottom:2px solid #0000}.mobile-nav .links a.inactive,.mobile-nav .links a.inactive:visited{color:var(--nav-link);border-bottom:2px solid #0000}.mobile-nav .links a.inactive:hover{color:var(--nav-link-selected);border-bottom:2px solid #0000;border-color:var(--nav-link-selected)}body.mobile-nav-active .mobile-nav .links a.visible{opacity:1;transition:all .5s ease-out}@media only screen and (width<=1023px){body nav{z-index:3;border-bottom:1px solid #0000;width:100%;margin:0;padding:2.5em 5%;transition:background-color .5s .5s,border-color .5s .5s;position:relative;top:0}body.mobile-nav-active nav{background-color:var(--hero-background-color);border-bottom-color:var(--hero-border-color)}nav .button,nav .links{display:none}nav .menu-icon{flex-grow:1;display:block}nav .logo{margin:auto;position:absolute;left:0;right:0}.mobile-nav{display:block}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}section.hero{background-color:var(--hero-background-color);border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:32px;padding:6em 4em;display:flex}section.hero *{max-width:var(--max-content-width);margin:0 auto}section.hero .headshot{background:var(--image-headshot);background-size:100%;width:114px;height:114px;display:block}section.hero h1{background:var(--hero-text-gradient);-webkit-text-fill-color:transparent;text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;padding-bottom:.25em;font-size:4em;font-weight:1000}section.hero .badge-container{flex-wrap:wrap;justify-content:center;align-items:center;padding:0;display:flex}section.hero .badge-container .badge{margin:5px}section.hero p{color:var(--color-text-normal);font-size:1.25rem}@media only screen and (width<=767px){section.hero{gap:24px;padding:1.5em}section.hero .headshot{width:96px;height:96px}section.hero h1{background:var(--rainbow-gradient);-webkit-text-fill-color:transparent;text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:3em}section.hero p{font-size:1em}}.button-container{width:100%;margin-top:2.5em;display:block}a.button{color:var(--color-link);background:var(--rainbow-gradient);border-radius:12px;padding:.75em 1rem;font-weight:700;text-decoration:none;transition:transform .2s ease-out}a.button:hover{transform:scale(1.1)}a.button.secondary{padding:1px;display:inline-block}a.button.secondary div{background-color:var(--body-background);border-radius:11px;align-items:center;padding:.625em .875rem;transition:background-color .3s ease-out;display:flex}a.button.secondary div:hover{background:0 0}a.button div span.icon{background-position:50%;background-repeat:no-repeat;background-size:20px 20px;width:20px;height:20px;margin-right:.5em;display:inline-block}a.button.secondary.icon-only span.icon{margin-right:0}a.button div span.icon-resume{background-image:var(--icon-resume)}a.button div span.icon-case-studies{background-image:var(--icon-case-studies)}a.button div span.icon-download{background-image:var(--icon-download)}a.button div span.icon-login{background-image:var(--icon-login)}.badge{background:var(--badge-background);color:var(--badge-text-color);border-radius:.5rem;padding:.25rem .75rem;font-size:1rem}.badge.small{font-size:.75rem}section.modal{z-index:4;width:100%;height:100%;transition:opacity var(--transition);opacity:0;pointer-events:none;background-color:#000000b3;justify-content:center;align-items:center;display:none;position:fixed;top:0;left:0;overflow:hidden}section.modal.in{display:flex}section.modal.active{opacity:1;pointer-events:all}section.modal .modal-body{background-color:var(--body-background);border:1px solid var(--hero-border-color);width:100%;max-width:300px;height:100%;max-height:200px;box-shadow:var(--hero-box-shadow);text-align:center;vertical-align:middle;border-radius:1em;align-items:center;padding:1.5em;display:flex;position:relative}section.modal .modal-body .modal-close{background-image:var(--icon-close);cursor:pointer;opacity:.75;background-position:50%;background-repeat:no-repeat;background-size:16px 16px;width:48px;height:48px;display:block;position:absolute;top:.5em;right:.5em}section.modal .modal-body a{color:var(--color-link)}body.modal-active{overflow:hidden}.case-study-thumbnails{flex-wrap:wrap;justify-content:center;align-items:center;gap:2rem;margin:3rem 0 0;display:flex;overflow:visible}.case-study-thumbnails>*{flex:160px}.case-study-thumbnails a{background:var(--thumbnail-border-color);width:100%;height:18.5rem;min-height:18.5rem;box-shadow:var(--hero-box-shadow);border-radius:12px;flex-basis:calc(49% - .75rem);min-width:340px;max-width:400px;padding:1px;text-decoration:none;transition:transform .5s ease-out;display:flex;position:relative;overflow:hidden}.case-study-thumbnails a:before{content:"";background-color:var(--thumbnail-border-color);z-index:0;width:100%;height:100%;transition:background-color .5s;position:absolute;top:0;left:0}.case-study-thumbnails a:hover:before{background-color:#0000;transition:background-color .5s}.case-study-thumbnails a:hover{background:var(--rainbow-gradient);transform:scale(1.02)}.case-study-thumbnails .thumbnail-wrapper{background-color:var(--thumbnail-background-color);z-index:1;border-radius:11px;width:100%;height:100%;display:flex}.case-study-thumbnails .thumbnail-image{background-repeat:no-repeat;background-size:100%;border-radius:4px 4px 0 0;width:100%;height:100%;margin:1.25rem;transition:transform .5s ease-out}.case-study-thumbnails a:hover .thumbnail-image{transform:scale(.98)}.case-study-thumbnails .thumbnail-title{background-color:var(--thumbnail-title-background-color);gap:.75rem;width:100%;min-height:5.4rem;padding:1rem 1.25rem;display:flex;position:absolute;bottom:0}.case-study-thumbnails a:hover .thumbnail-title{background:var(--rainbow-gradient)}.case-study-thumbnails a .thumbnail-title:before{content:"";background-color:var(--thumbnail-border-color);z-index:0;width:100%;height:100%;transition:background-color .5s ease-out;position:absolute;top:0;left:0}.case-study-thumbnails a:hover .thumbnail-title:before{background-color:#0000;transition:background-color .5s ease-out}.case-study-thumbnails .thumbnail-title .thumbnail-title-text{z-index:1;width:100%;color:var(--thumbnail-text-color);font-weight:700;line-height:1.6rem}.case-study-thumbnails .thumbnail-title .badge{white-space:nowrap;z-index:1;background-color:#00000080;max-height:1.5rem;line-height:120%;display:inline}@media only screen and (width<=567px){.case-study-thumbnails a{flex-basis:100%;min-width:300px}}.case-study-notice-container{width:100%;max-width:none}.case-study-notice{text-align:center;background-color:var(--hero-background-color);border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);border-radius:12px;margin-top:3em;margin-left:auto;margin-right:auto;padding:2.5em}.layout-container.case-study-notice-container .case-study-notice h4{color:var(--color-text-strong);margin:0 0 1em;font-size:1.375rem;font-weight:700}.case-study-notice p{max-width:var(--max-content-width);color:var(--color-text-normal);font-size:1rem;line-height:var(--paragraph-line-height);margin:.5em auto 0}@media only screen and (width<=767px){.case-study-notice{padding:1.5em}}section.hero.case-study-detail{gap:.25em;padding:2.5em}section.hero.case-study-detail *{max-width:100%;margin:0 auto}section.hero.case-study-detail h1{text-align:left;width:100%;font-size:2.5em}section.hero.case-study-detail h4{text-align:left;width:100%;font-size:1em;font-weight:700}section.hero.case-study-detail h4 a{color:var(--color-text);border-bottom:2px solid #0000;text-decoration:none;transition:border-color .5s ease-out}section.hero.case-study-detail h4 a:hover{color:var(--color-link);border-color:var(--color-link)}.case-study-embedded{margin-top:3em}.case-study-embedded .auth{border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);border-radius:12px;flex-direction:column;place-content:center;align-items:center;gap:1em;width:100%;height:50em;padding:0 2em;display:flex}.case-study-embedded .auth.hidden{display:none}.case-study-embedded .auth h4{background:var(--rainbow-gradient);-webkit-text-fill-color:transparent;text-fill-color:transparent;text-align:center;-webkit-background-clip:text;background-clip:text;font-size:1.5em}.case-study-embedded .auth .login-form{gap:.5em;display:flex}.case-study-embedded .auth .login-form .button-container{margin-top:0}.case-study-embedded .auth .error{opacity:0;color:var(--color-error);transition:opacity .35s ease-out}.case-study-embedded .auth .error.visible{opacity:1}.case-study-embedded .auth .login-form .input-wrapper{background-color:var(--color-link);border-radius:.75em;max-width:15em;height:2.5em;padding:0 12px}.case-study-embedded .auth .login-form .input-wrapper input{background:0 0;border:none;outline:none;height:100%;font-size:1em;display:block}.case-study-embedded .case-study-figma{border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);border-radius:12px;width:100%;height:50em}.case-study-embedded .case-study-figma.hidden{display:none}.case-study-embedded .case-studies-more-cta{text-align:center;width:100%;margin-top:1.5em}@media only screen and (width<=568px){.case-study-embedded .auth,.case-study-embedded .case-study-figma{height:20em}}section.resume-intro{border-bottom:1px solid var(--divider-color);margin:0 0 1.75em;padding:0 0 2.5em}section.resume p{color:var(--color-text-resume)}.resume-header{display:flex}.resume-header h3{width:100%;margin-bottom:0;padding-top:.25em}.resume-header .button{min-width:162px;display:flex}.resume-header .button div{white-space:nowrap}.resume .section-title{border-bottom:1px solid var(--divider-color);margin:1em 0;padding-top:1.5em}.resume article{grid-template-columns:repeat(5,1fr);display:grid}.resume article .date,.resume article .degree{grid-column:1;min-width:12em;padding-right:1.75em}.resume article .title{color:var(--color-text-strong);grid-column:2/5;font-size:1.125em;font-weight:600}.resume article .location{text-align:right;grid-column:5}.resume article .description{grid-column:2/6;padding:.5em 0 1.75em}.resume article .more{grid-column:2/6;margin-top:-.5em}.resume article .more a{color:var(--color-text);text-decoration:none}.resume article .more a:hover{text-decoration:underline}.resume article .item a,.resume article .item a:visited{color:#fff;text-decoration:none}@media only screen and (width<=767px){.resume article .item{min-width:none;grid-column:1/6;margin-bottom:.5em}.resume article .item.title{margin:.25em 0}.resume article .item.location{display:none}}@media only screen and (width<=568px){.resume-header{flex-wrap:wrap}.resume-header h3{margin-bottom:.5em}.resume-header .button{width:100%}.resume-header .button .button-text{text-align:center;width:calc(100% - 2.5em)}}.content{opacity:0;transition:opacity 1.5s}.content.loaded{opacity:1}.fade-1,.fade-2,.fade-3,.fade-4,.fade-5{opacity:0}.content.loaded .fade-1,.content.loaded .fade-2,.content.loaded .fade-3,.content.loaded .fade-4,.content.loaded .fade-5{opacity:1;transition:opacity 1s}.content.loaded .fade-1{transition-delay:.25s}.content.loaded .fade-2{transition-delay:.5s}.content.loaded .fade-3{transition-delay:.75s}.content.loaded .fade-4{transition-delay:1s}.content.loaded .fade-5{transition-delay:1.25s}.wave{background-image:var(--image-wave);background-position:50% 100%;background-repeat:no-repeat;width:100%;height:100px;padding-top:10em;display:block}.blurb h4{margin-top:1em;margin-bottom:1.25em}.blurb p{font-size:1rem}hr{background-color:var(--hero-border-color);border:0;width:90%;max-width:90em;height:1px;margin:4em auto 1em}.layout-container.overview h4{margin-bottom:2.5em}section.philosophies{background-color:var(--hero-background-color);border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2em;margin-top:4em;padding:4em;display:flex;position:relative}section.philosophies .philosophies-items{flex:1;gap:4em;padding:0;display:flex;position:relative}section.philosophies .philosophies-items .philosophies-item{flex:1}section.philosophies .philosophies-items .vr{background-color:var(--hero-border-color);width:1px}section.philosophies .philosophies-items .philosophies-item .icon{background-position:50%;background-repeat:no-repeat;background-size:100%;width:40px;height:40px;margin-bottom:1.25rem;display:inline-block}section.philosophies .philosophies-items .philosophies-item .icon.open-lock{background-image:var(--icon-open-lock)}section.philosophies .philosophies-items .philosophies-item .icon.diamond{background-image:var(--icon-diamond)}section.philosophies .philosophies-items .philosophies-item .icon.chart{background-image:var(--icon-chart)}@media only screen and (width<=1023px){section.philosophies .philosophies-items{flex-wrap:wrap}section.philosophies .philosophies-items .philosophies-item{flex-basis:100%}section.philosophies .philosophies-items .vr{flex:1;height:1px}}@media only screen and (width<=567px){section.philosophies{padding:2em}section.philosophies .philosophies-items{gap:2em}}section.about{justify-content:center;align-items:top;background-color:var(--hero-background-color);border:1px solid var(--hero-border-color);box-shadow:var(--hero-box-shadow);text-align:center;border-radius:12px;flex-direction:row;gap:2em;margin-top:4em;padding:4em;display:flex;position:relative}section.about figure{flex:33%;margin:0}section.about figure img{border-radius:8px}section.about figure figcaption{opacity:.75;margin-top:.75rem;padding:0 1em;font-size:.85em;line-height:1.25rem}section.about .about-content{text-align:left;flex:66%}section.about .about-content p:last-child{margin-bottom:0}section.about .about-content p a:link,section.about .about-content p a:visited,section.about .about-content p a:active{color:var(--color-link);border-bottom:2px solid #0000;font-weight:700;text-decoration:none;transition:border-color .5s ease-out}section.about .about-content p a:hover{border-bottom:2px solid var(--color-link)}@media only screen and (width<=767px){section.about{flex-wrap:wrap;gap:1em;padding:2em}section.about figure,section.about .about-content{flex-basis:100%}section.about figure{margin-bottom:1.5em}}
