@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:300;font-display:swap;src:url(../media/6fcea7c134f77b9c-s.3ab2670c.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:italic;font-weight:300;font-display:swap;src:url(../media/fc9ff45e7db276e6-s.1c5ad2b7.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:italic;font-weight:300;font-display:swap;src:url(../media/eb0c5870d77757e2-s.486f28e3.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:italic;font-weight:300;font-display:swap;src:url(../media/b034a21f3b57f1a3-s.6ee3d168.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:italic;font-weight:300;font-display:swap;src:url(../media/53cb5b17add74ab8-s.p.3240bd04.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:italic;font-weight:400;font-display:swap;src:url(../media/3e29d6c8df211d66-s.d1316c3d.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:italic;font-weight:400;font-display:swap;src:url(../media/2956efe007516702-s.079b40af.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:italic;font-weight:400;font-display:swap;src:url(../media/658fb2a9c2a0ea5d-s.c19d6493.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:italic;font-weight:400;font-display:swap;src:url(../media/7c125d9da13f978a-s.1539539e.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:italic;font-weight:400;font-display:swap;src:url(../media/a46a75cfd765634f-s.p.9fc5dbf1.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:italic;font-weight:500;font-display:swap;src:url(../media/c752d4f65d3e00e0-s.a9456403.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:italic;font-weight:500;font-display:swap;src:url(../media/151f074d78c0031d-s.c51552ef.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:italic;font-weight:500;font-display:swap;src:url(../media/3ee1b1187b5e60bc-s.e5410df2.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:italic;font-weight:500;font-display:swap;src:url(../media/ecc49aa4bef31f74-s.f423f94a.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:italic;font-weight:500;font-display:swap;src:url(../media/21c1dee959b18079-s.p.feed877b.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:italic;font-weight:600;font-display:swap;src:url(../media/6a793dba767aa497-s.e4cc29e7.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:italic;font-weight:600;font-display:swap;src:url(../media/cf54ce4ee2f7915c-s.51fdc0c5.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:italic;font-weight:600;font-display:swap;src:url(../media/bb1a7daf057744c1-s.cca88433.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:italic;font-weight:600;font-display:swap;src:url(../media/eb34f5373173429c-s.c3bbbbc4.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:italic;font-weight:600;font-display:swap;src:url(../media/cb74272c1a4b1482-s.p.95214552.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:300;font-display:swap;src:url(../media/43fa41482cbf5ee5-s.7a659e27.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:300;font-display:swap;src:url(../media/51430d34a2dfca2f-s.aee671cc.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:300;font-display:swap;src:url(../media/3b8d31b6d618cd27-s.e6e3ddd0.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:300;font-display:swap;src:url(../media/7a2e4ff4560f5ac3-s.ffa2c9dc.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:300;font-display:swap;src:url(../media/e9d5b069f63ab620-s.p.c6182c6b.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: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:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.6b5ea6af.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:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1dcddae6.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:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.8da66e7f.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:500;font-display:swap;src:url(../media/68757d6cddeff913-s.e6cd1753.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:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.19510058.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:600;font-display:swap;src:url(../media/6ff74e33ebd7bca3-s.140490a3.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:600;font-display:swap;src:url(../media/1a69062cfe6f77f8-s.b36ae37c.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:600;font-display:swap;src:url(../media/9a4838fcda0d1bca-s.bf5f8a12.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:600;font-display:swap;src:url(../media/2e95a7d252b9825a-s.10086973.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:600;font-display:swap;src:url(../media/23b7a97ae3b5c134-s.p.2902b61f.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_4325858-module__Xeyz9q__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback}.ibm_plex_mono_4325858-module__Xeyz9q__variable{--font-ibm-plex-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}
:root{--bg:#fafaf9;--text:#1c1917;--text-secondary:#78716c;--border:#d6d3d1;--nav-hover:#57534e}[data-theme=dark]{--bg:#0c0a09;--text:#e7e5e4;--text-secondary:#a8a29e;--border:#292524;--nav-hover:#d6d3d1}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c0a09;--text:#e7e5e4;--text-secondary:#a8a29e;--border:#292524;--nav-hover:#d6d3d1}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{background-color:var(--bg);color:var(--text);font-family:var(--font-ibm-plex-mono),monospace;min-height:100vh;font-size:14px;font-weight:300;line-height:1.7;transition:background-color .3s,color .3s}.page-container{opacity:0;max-width:640px;margin:0 auto;padding:80px 24px 120px;animation:.6s forwards fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes chatPulse{0%,to{opacity:.6}50%{opacity:1}}.chat-trigger{animation:3s ease-in-out infinite chatPulse}.chat-trigger:hover{opacity:1;animation:none}.chat-messages a{color:#a8d4ff;text-decoration:underline}.header{justify-content:space-between;align-items:center;margin-bottom:48px;display:flex}.site-title{cursor:default;font-weight:400}.theme-toggle{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-family:inherit;font-size:12px;transition:all .2s}.theme-toggle:hover{border-color:var(--text);color:var(--text)}.nav{gap:24px;margin-bottom:80px;display:flex}.nav-link{color:var(--text);text-decoration:none;transition:color .2s;position:relative}.nav-link:hover{color:var(--nav-hover)}.nav-link:after{content:"";background:var(--text);opacity:0;width:100%;height:2px;position:absolute;bottom:-2px;left:0}.nav-link:first-child:after{animation:10s step-end 1s infinite terminalCursor}.nav-link:nth-child(2):after{animation:10s step-end 3s infinite terminalCursor}.nav-link:nth-child(3):after{animation:10s step-end 5s infinite terminalCursor}.nav-link:nth-child(4):after{animation:10s step-end 7s infinite terminalCursor}.nav-link:nth-child(5):after{animation:10s step-end 9s infinite terminalCursor}@keyframes terminalCursor{0%,16%{opacity:1}8%,20%,to{opacity:0}4%,12%{opacity:0}}.section{margin-bottom:48px;scroll-margin-top:40px}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:24px;font-size:12px;display:block}.footer{border-top:1px solid var(--border);color:var(--text-secondary);padding-top:32px;font-size:12px}.work-entry,.project-entry{border-bottom:1px solid var(--border);padding:24px 0}.work-entry:last-child,.project-entry:last-child{border-bottom:none}.work-header,.project-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.company-name,.project-name{font-size:14px;font-weight:500}.work-period{color:var(--text-secondary);font-size:12px}.work-description,.project-description{font-size:13px;font-weight:300;line-height:1.6}.project-description{color:var(--text-secondary);margin-bottom:12px}.project-link{color:var(--text);margin-top:8px;font-size:13px;text-decoration:none;transition:opacity .2s;display:inline-block}.project-link:hover{opacity:.7}.project-media{border:1px solid var(--border);border-radius:8px;max-width:100%;margin-top:16px;overflow:hidden}[data-theme=dark] .project-media{box-shadow:0 4px 20px #0006}.project-media img,.project-media video{width:100%;height:auto;display:block}.project-media-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}.writing-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:12px 0;display:flex}.writing-row:last-child{border-bottom:none}.writing-title{color:var(--text);font-size:14px;text-decoration:none;transition:opacity .2s}.writing-title:hover{opacity:.6}.writing-source{color:var(--text-secondary);font-size:12px}.contact-row{gap:24px;margin-top:24px;display:flex}.contact-link{color:var(--text-secondary);font-size:13px;text-decoration:none;transition:color .2s}.contact-link:hover{color:var(--text)}.bio-intro{align-items:flex-start;gap:24px;display:flex}.bio-text{flex:1}.profile-photo{border:1px solid var(--border);flex-shrink:0;width:180px;height:auto}@media (max-width:480px){.bio-intro{flex-direction:column-reverse}.profile-photo{width:140px}}.about-footer{color:var(--text-secondary);margin-top:32px;font-size:12px}.photo-grid{grid-template-columns:1fr;gap:32px;display:grid}.photo-item{cursor:pointer}.photo-item img{border:1px solid var(--border);border-radius:4px;width:100%;box-shadow:0 2px 8px #00000014}[data-theme=dark] .photo-item img{box-shadow:0 2px 8px #0000004d}.photo-caption{color:var(--text-secondary);text-underline-offset:2px;margin-top:4px;font-size:13px;text-decoration:underline}.lightbox-overlay{z-index:1000;background:#000000e6;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.lightbox-content{flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;display:flex}.lightbox-content img{object-fit:contain;border-radius:4px;max-width:100%;max-height:80vh}.lightbox-caption{color:#fff;text-underline-offset:2px;margin-top:16px;font-size:14px;text-decoration:underline}.text-secondary{color:var(--text-secondary)}::selection{background-color:var(--text);color:var(--bg)}@media (max-width:640px){.page-container{padding-top:40px;padding-bottom:80px}.header{margin-bottom:32px}.nav{gap:16px;margin-bottom:60px}.section{margin-bottom:40px}}@media (max-width:480px){.page-container{padding-left:16px;padding-right:16px}.nav{flex-wrap:wrap;gap:12px 16px}.work-header{flex-direction:column;align-items:flex-start;gap:4px}.project-media-grid{grid-template-columns:1fr}.writing-row{flex-direction:column;align-items:flex-start;gap:4px}}
