@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.518e079e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.ea323500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.853d50a3.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.55554cd0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.ebceb24d.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c36e1862.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.ff4a2084.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.f377b9c4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.d1207556.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.479bea2b.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
.not-a-thing{color:red}.presentation-links{flex-wrap:wrap;justify-content:center;gap:2rem;display:flex}
:root{--teal-100:#e6faf8;--teal-200:#bfefea;--teal-300:#56f2e2;--teal-400:#23ded0;--teal-500:#0bc1b7;--teal-600:#059691;--teal-700:#097c79;--blue-50:#eaf4f8;--blue-100:#d5e9f2;--blue-200:#add3e5;--blue-300:#7fb9d3;--blue-400:#4f9fc0;--blue-500:#2e86ab;--blue-600:#246c89;--blue-700:#1c5369;--blue-800:#153c4d;--blue-900:#0e2632;--orange-50:#fff4e6;--orange-100:#ffe4bf;--orange-200:#ffd08a;--orange-300:#ffb84d;--orange-400:#ffa31f;--orange-500:#f18f01;--orange-600:#c87701;--orange-700:#9f5e01;--orange-800:#754501;--orange-900:#4b2c00;--gray-0:#fff;--gray-50:#fafafa;--gray-100:#eee;--gray-200:#ddd;--gray-300:#ccc;--gray-500:#9e9e9e;--gray-700:#666;--gray-900:#333;--gray-950:#212121;--gray-1000:#000;--space-0:0px;--space-0-5:4px;--space-0-75:6px;--space-1:8px;--space-1-5:12px;--space-2:16px;--space-2-5:20px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-7:56px;--space-8:64px;--font-family-primary:"Open Sans",sans-serif;--font-family-sans-serif:sans-serif;--font-weight-light:300;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-size-10:10px;--font-size-12:12px;--font-size-13:13px;--font-size-14:14px;--font-size-15:15px;--font-size-16:16px;--font-size-18:18px;--font-size-20:20px;--font-size-24:24px;--font-size-34:34px;--font-size-40:40px;--font-size-48:48px;--font-size-60:60px;--font-size-96:96px;--line-height-18:18px;--line-height-21:21px;--line-height-24:24px;--line-height-28:28px;--line-height-base:1.5;--letter-spacing-tight:-1.5px;--letter-spacing-normal:0px;--letter-spacing-wide:.15px;--letter-spacing-wider:.4px;--letter-spacing-widest:1.25px;--radius-sm:.125rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-full:9999px;--transition-fast:.15s;--transition-base:.3s;--transition-slow:.5s;--color-primary:var(--blue-500);--color-primary-hover:var(--blue-600);--color-secondary:var(--orange-500);--color-secondary-hover:var(--orange-600);--color-tertiary:var(--teal-600);--color-text-primary:var(--gray-950);--color-text-secondary:var(--gray-700);--color-text-muted:var(--gray-500);--color-text-inverse:var(--gray-50);--color-text-disabled:var(--gray-500);--color-text-link:var(--blue-500);--color-text-link-hover:var(--blue-600);--color-text-link-visited:var(--blue-500);--color-bg-primary:var(--gray-50);--color-bg-secondary:var(--gray-100);--color-bg-surface:var(--gray-0);--color-transparent:transparent;--spacing-xs:var(--space-0-5);--spacing-sm:var(--space-1);--spacing-md:var(--space-2);--spacing-lg:var(--space-3);--spacing-xl:var(--space-4);--spacing-2xl:var(--space-5);--color-border:var(--gray-200);--color-border-subtle:var(--gray-100);--on-primary-text:var(--gray-50);--on-secondary-text:var(--gray-950);--on-tertiary-text:var(--gray-50)}*{margin:0}.button{font-size:var(--button-font-size-md);font-weight:var(--button-font-weight);letter-spacing:var(--button-letter-spacing);line-height:var(--button-line-height);border-radius:var(--button-border-radius);cursor:pointer;transition:background-color var(--transition-fast)ease-in-out;border:0}.primary-button{color:var(--button-primary-text);background-color:var(--button-primary-bg);border:1px solid var(--button-primary-border)}.case-study-dl{margin-top:var(--space-3)}.case-study-dl dt{font-weight:var(--font-weight-bold);margin-top:var(--space-3);padding-left:var(--space-2);border-left:2px solid var(--color-border-subtle)}.case-study-dl dt:first-of-type{margin-top:0}.case-study-dl dd{margin:var(--space-1)0 0 0;color:var(--color-text-secondary);max-width:65ch}.content{width:100%}:root{--background:var(--color-bg-primary)}html,body{max-width:100vw;overflow-x:hidden}body{color:var(--color-text-primary);font-family:var(--font-family-primary)var(--font-family-sans-serif);background:var(--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.intro-heading{color:var(--color-primary);font-size:var(--font-size-48)}header .blog{height:14vh;max-height:14vh}header:not(.blog){background:var(--color-bg-primary);width:100%;height:7vh;max-height:7vh;margin:0 auto}.inner-header{background-color:var(--color-primary);width:75%;height:14vh;max-height:14vh;margin:0 auto}.inner-header h1{color:var(--gray-0);font-size:var(--font-size-40)}.subheader{font-size:var(--font-size-20);color:var(--gray-0);font-weight:var(--font-weidht-semibold)}.case-study-label{text-transform:capitalize;font-weight:var(--font-weight-light);color:var(--color-text-muted);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wider)}a:not(.nav-link),a:visited:not(.nav-link){color:var(--color-primary)}.resume-link{margin-top:var(--space-6);font-weight:var(--font-weight-medium)}.resume-link a:after{content:" →"}.contact-links{margin:var(--space-4)0;padding:0;list-style:none}.contact-links li{margin-bottom:var(--space-2)}main{max-width:72ch;padding-inline:var(--space-4);padding-bottom:var(--space-6);margin:0 auto}main p:not(.page-intro){color:var(--color-text-seondary)}main article{margin:0 22%}main article h1,h2,main article .time{text-align:center}@media (prefers-color-scheme:dark){:root{--background:var(--color-bg-primary)}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (max-width:640px){main{line-height:1.6}.page-intro{margin:var(--space-4)auto var(--space-5)auto}.case-study-dl dt{margin-top:var(--space-2)}}@media (min-width:992px){.intro-heading{font-size:var(--font-size-60)}}nav{margin:var(--space-1);font-size:var(--font-size-16);font-weight:var(--font-weight-regular);justify-content:flex-end;display:flex}nav ul{gap:20px;display:flex}nav ul li{list-style:none}.nav-link{color:var(--color-text-primary);text-decoration:none}.nav-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.nav-link:hover{color:var(--color-primary)}.nav-link.active{border-bottom:2x solid var(--color-primary);font-weight:var(--font-weight-semibold)}.case-study-nav{margin-bottom:var(--space-4);font-size:var(--font-size-sm);justify-content:flex-start;display:flex}.back-link{font-size:var(--font-size-14)}.page-intro{margin:var(--space-2)auto var(--space-6)auto}.posts{width:100%}.post-item{text-align:center;background-color:var(--gray-500);width:390px;height:100%;margin:var(--space-0)var(--space-8)var(--space-8)var(--space-8);text-overflow:ellipsis;overflow:hidden}.post-item p{text-overflow:ellipsis;width:390px;height:170px;overflow:hidden}#post{max-height:83vh;overflow-y:scroll}.preview-section{padding-bottom:var(--space-2)}.preview-section+.preview-section{margin-top:var(--space-2)}section:last-of-type{margin-bottom:var(--space-6)}.contact-section{margin-top:calc(var(--space-8)*-.25)}.contact-section p{max-width:42ch}.contact-section ul{margin:var(--space-4)0 var(--space-5);padding-left:1.25rem}.contact-section li+li{margin-top:var(--space-2)}.intro{margin:var(--space-6)auto}
