*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}*{transition:background-color .4s ease,color .4s ease,border-color .4s ease}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}:root{--width: 720px;--radius-img: 12px;--button--padding-v: .6rem;--button--padding-h: 1.1rem;--container--width: 1200px;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.375rem;--spacing-6: clamp(1.75rem, 1.6875rem + .3125vw, 2rem);--spacing-7: clamp(2rem, 1.8125rem + .9375vw, 2.75rem);--spacing-8: clamp(2.75rem, 2.5rem + 1.25vw, 3.75rem);--spacing-9: clamp(3.75rem, 3.4375rem + 1.5625vw, 5rem)}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}html{height:100%}html,body{max-width:100vw;overflow-x:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto}a{text-decoration:underline;text-decoration-thickness:.075em;text-underline-offset:.35em}a:hover{text-decoration:underline!important}.margin{margin-top:var(--spacing-4);margin-bottom:var(--spacing-4)}body{overflow-wrap:break-word}.tx-muted{color:var(--color-secondary)}.code{text-decoration:none;padding:.125rem .575rem;background-color:var(--color-background-200);border-radius:9999px;color:var(--foreground)}a{text-decoration:underline}a:hover{text-decoration:none}.image-wrapper{border:0;border-radius:8px!important}a{text-underline-offset:2.5px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{border-radius:8px!important;border:1px solid var(--core-light-gray)!important}.image-wrapper img{border:1px solid var(--core-light-gray)!important}@font-face{font-family:STIX Two Text;src:url(/fonts/STIXTwoText.woff2) format("woff2"),url(/fonts/STIXTwoText.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}:root{--core-black: #333333;--core-gray: #808080;--core-blue: #2245c0;--core-middle-blue: #d3daf2;--core-light-blue: #dfe6fc;--core-wash: #525769;--core-wash-reference: #526965;--core-light-gray: #e7e7e7;--core-ultralight-gray: #f9f9f9;--background: #ffffff;--foreground: var(--core-black);--color-secondary: var(--core-gray);--color-background-200: var(--core-ultralight-gray);--color-background-300: var(--core-light-gray);--border: 1px solid var(--core-light-gray);--font-family: "STIX Two Text", serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-small: 16px;--font-regular: 20px;--font-large: 30px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--viewport-max: 1280px;--viewport-half: 960px;--viewport-para: 660px;--item-margin: 80px auto}html{font-size:16px;line-height:1.55}body{background:var(--background);color:var(--core-black);font-family:var(--font-family);font-size:var(--font-regular);font-style:normal;font-weight:var(--font-weight-regular);line-height:1.5;font-feature-settings:"liga" 1,"calt" 1;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}h1,h2,h3{max-width:var(--viewport-para);margin-left:auto;margin-right:auto;font-weight:var(--font-weight-regular);line-height:1.3}h1{font-size:60px;margin-top:150px;margin-bottom:60px}h2{font-size:40px;margin-top:80px;margin-bottom:30px}h3{font-size:30px;margin-top:60px;margin-bottom:30px}p,li{max-width:var(--viewport-para);margin-left:auto;margin-right:auto;font-size:var(--font-regular);line-height:1.5}p{margin-top:30px;margin-bottom:30px}.header h1,.header h1 a{max-width:none;margin:0;font-size:44px;line-height:1.3}.main-content,.main-content h3,.main-content p,.main-content li{text-align:left}.main-content h3,.main-content p,.main-content li{margin-left:0;margin-right:0}a{color:var(--core-blue);text-decoration:none;border-bottom:1px solid var(--core-light-blue)}a:hover{color:var(--core-black);border-bottom-color:var(--core-blue)}a.card-link,a.card-link:hover{border-bottom:none}.card-title{font-size:var(--font-large);line-height:1.3;font-weight:var(--font-weight-regular)}.card-description p{margin-top:1rem;margin-bottom:0}.card-website-link,.card-case-study-link{margin-top:1rem}.code{font-family:var(--font-mono)}.card h2{font-size:var(--font-large);font-weight:var(--font-weight-regular)}.list-item{font-size:var(--font-regular);font-weight:var(--font-weight-regular)}.list-item p,.footer p{margin-top:0;margin-bottom:0}.list-date,figcaption,.back-link,.back-link a,.selected-text,.select-options a{font-size:var(--font-small)}.back-link a,.select-trigger,.custom-select,.back-link-bottom{font-weight:var(--font-weight-regular)}.select-options a.selected{font-weight:var(--font-weight-bold)}.footer{font-size:var(--font-small);line-height:1.5;font-weight:var(--font-weight-regular)}.prose h1{font-size:60px}.projects-title{margin-bottom:32px}.education-section{margin-top:64px}@media screen and (max-width:768px){:root{--item-margin: 30px auto}body{font-size:16px}h1{font-size:40px;margin:50px 0 20px}h2{font-size:25px;margin:50px 0 20px}h3{font-size:24px;margin:40px 0 20px}p,li{font-size:var(--font-small)}.header h1,.header h1 a{font-size:44px}}.custom-select[data-astro-cid-oaezlgqd]{margin-top:16px;position:relative;user-select:none;z-index:100}.select-trigger[data-astro-cid-oaezlgqd]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 12px;gap:6px;border:0px solid transparent;height:36px;background:var(--core-ultralight-gray);color:var(--color-secondary);box-shadow:0 1px 2px #3333331f,0 0 0 1px #33333314;border-radius:6px;cursor:pointer}.select-trigger[data-astro-cid-oaezlgqd]:hover{background:var(--core-light-blue)}.arrow[data-astro-cid-oaezlgqd]{transition:transform .2s ease}.select-trigger[data-astro-cid-oaezlgqd][aria-expanded=true] .arrow[data-astro-cid-oaezlgqd]{transform:rotate(180deg)}.selected-text[data-astro-cid-oaezlgqd]{color:var(--foreground)}.select-options[data-astro-cid-oaezlgqd]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:var(--background);box-shadow:0 1px 2px #3333331f,0 0 0 1px #33333314;border-radius:8px;list-style:none;padding:4px 0;margin:0;z-index:110}.select-options[data-astro-cid-oaezlgqd] li[data-astro-cid-oaezlgqd]{padding:0}.select-options[data-astro-cid-oaezlgqd] a[data-astro-cid-oaezlgqd]{display:block;padding:6px 10px;text-decoration:none;color:var(--foreground)}.select-options[data-astro-cid-oaezlgqd] a[data-astro-cid-oaezlgqd]:hover{background:var(--core-light-blue)}.select-options[data-astro-cid-oaezlgqd] a[data-astro-cid-oaezlgqd].selected{background:var(--core-middle-blue)}.footer[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;align-items:center;color:var(--color-secondary);flex-wrap:wrap;gap:16px;margin-top:80px;margin-bottom:120px}.footer-left[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;gap:8px}.footer-links[data-astro-cid-sz7xmlte]{list-style:none;display:flex;flex-direction:row;gap:12px;margin:0;padding:0}.footer-links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:inherit;text-decoration:underline}@media(max-width:560px){.footer[data-astro-cid-sz7xmlte]{flex-direction:column;align-items:flex-start}}.footer-links[data-astro-cid-sz7xmlte] ul[data-astro-cid-sz7xmlte]{margin:0;padding:0}
