@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.a82ecf4e.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.afa48be3.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.764b43eb.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.cb53f04b.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.64b9304e.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f53f4557ddd9f7a6-s.cc1c4de3.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5256dd17dd2ccf14-s.dad649ff.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/fe48c93add1d142c-s.5dae4d58.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5689d89b20a4bd5b-s.4a78f533.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a7e15459c1805da0-s.p.ec654d65.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_9926faad-module__ct3lkG__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}
body.alt-body{color:#000;background:#fff;margin:0}.alt-body a:visited{color:#00f}.alt-shell{min-height:100vh}.alt-logo-row{padding:1rem 1rem 0}.alt-page{padding:1rem}.alt-name{margin:0;font-size:1rem;font-weight:700;line-height:1.2}.alt-body a.alt-logo,.alt-body a.alt-logo:visited,.alt-body a.alt-logo:hover,.alt-body a.alt-logo:focus-visible{color:#000;text-decoration:none;display:inline-flex}.alt-logo-text{align-items:baseline;display:inline-flex}.alt-logo-text:after{content:"_";margin-left:.02rem;animation:1.15s step-end infinite alt-logo-caret}.alt-logo-char{color:#000;transform-origin:50% 80%;will-change:transform;animation:3.2s ease-in-out infinite alt-logo-char-sway;animation-delay:calc(var(--char-index)*90ms);display:inline-block;position:relative}.alt-logo-char.is-space{width:.62ch}.alt-body a.alt-logo:after{content:none}@keyframes alt-logo-char-sway{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-.08rem)rotate(1.35deg)}50%{transform:translateY(.01rem)rotate(0)}75%{transform:translateY(.08rem)rotate(-1.35deg)}}@keyframes alt-logo-caret{0%,46%{opacity:1}47%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.alt-logo-text:after,.alt-logo-char{animation:none}.alt-logo-char{transform:none}.alt-logo-text:after{opacity:1}}.alt-description{margin-top:1rem}.alt-description p{margin:0}.alt-description p+p{margin-top:1rem}.alt-about-page,.alt-contact-page{flex-direction:column;min-height:calc(100vh - 2rem);display:flex}.alt-page-footer{flex-direction:column;align-items:center;gap:.85rem;margin-top:auto;padding-top:1.5rem;padding-bottom:12rem;display:flex}.alt-art-slideshow{flex-direction:column;width:min(100%,42rem);margin:2rem auto 0;display:flex}.alt-art-frame{aspect-ratio:4/3;touch-action:pan-y;width:100%;position:relative;overflow:hidden}.alt-art-image{object-fit:contain;opacity:0;width:100%;height:100%;transition:opacity .7s ease-in-out;display:block;position:absolute;inset:0}.alt-art-image.is-active{opacity:1}.alt-art-caption{text-align:center;color:#666;min-height:3.25rem;margin:.75rem 0 0;font-size:.8rem;line-height:1.35}.alt-nav{justify-content:center;gap:2rem;margin:0;display:flex}.alt-page-footer .alt-nav{flex-wrap:wrap}.alt-about-cylinder-preview{width:min(100%,30rem);height:18rem;margin:0}.alt-about-cylinder-preview canvas{width:100%;height:100%;display:block}.alt-about-intro{color:#777}@media (max-width:768px){.alt-page-footer{gap:.65rem;padding-bottom:8rem}.alt-about-cylinder-preview{height:13rem}}.alt-projects-page,.alt-past-projects-page{flex-direction:column;min-height:calc(100vh - 2rem);display:flex}.alt-nav a,.alt-nav a:visited{color:#00f;text-decoration:underline}.alt-projects-intro{margin-bottom:1rem}.alt-projects-page>.alt-projects-intro:first-child{margin-top:1rem}.alt-projects-intro p{margin:0}.alt-projects-intro p+p,.alt-projects-followup{margin-top:1rem}.alt-projects-grid{flex-wrap:wrap;align-items:flex-start;gap:1rem;display:flex}.alt-projects-grid-single{justify-content:center}.alt-projects-grid-insight{flex-direction:column}.alt-projects-grid-supporting{width:100%}.alt-project-media-frame{background:#f5f5f5;width:calc(50% - .5rem);overflow:hidden}.alt-project-media-frame-featured{width:100%}.alt-project-media{object-fit:cover;width:100%;height:100%;display:block}.alt-past-projects-link{text-align:center;margin:2.5rem 0 0}.alt-past-projects-list{margin-top:1.5rem}.alt-past-project-card+.alt-past-project-card{margin-top:2rem}.alt-past-project-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.alt-past-project-subtitle{color:#666;margin:.35rem 0 0}.alt-past-project-description,.alt-past-project-tech,.alt-past-project-link{margin:.75rem 0 0}.alt-past-project-tech{color:#666;font-size:.9rem}.alt-past-project-media-frame{aspect-ratio:16/9;background:#f5f5f5;width:min(100%,32rem);margin-top:.75rem}.alt-past-project-media{object-fit:contain;width:100%;height:100%;display:block}
