.post_post__kn_Et{display:flex;flex-direction:column;align-items:flex-start;max-width:760px;margin:0 auto;padding:56px 0 88px}.post_header__idm83{width:100%;margin-bottom:28px;padding-bottom:14px;border-bottom:var(--line-width) solid var(--line)}.post_title__UtzhL{color:var(--strong);font-size:clamp(30px,5.4vw,56px);line-height:.95}.post_content__UdOmx{width:100%;margin-bottom:40px;line-height:1.7}.post_content__UdOmx h1,.post_content__UdOmx h2,.post_content__UdOmx h3,.post_content__UdOmx h4,.post_content__UdOmx h5,.post_content__UdOmx h6{margin:2.5rem 0 .75rem;color:var(--strong);font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);line-height:1.05}.post_content__UdOmx h3{font-size:clamp(24px,3vw,32px)}.post_content__UdOmx h4{font-size:clamp(20px,2.4vw,26px)}.post_content__UdOmx p{margin:0 0 1.25rem}.post_content__UdOmx a{color:var(--strong);text-decoration:underline;text-underline-offset:4px}.post_content__UdOmx a:hover{color:var(--hover-ink)}.post_content__UdOmx ol,.post_content__UdOmx ul{margin:0 0 1.25rem 1.25rem}.post_content__UdOmx ul{list-style:square}.post_content__UdOmx li{margin-bottom:.5rem}.post_content__UdOmx figure{margin:2rem 0}.post_content__UdOmx img{display:block;width:100%;height:auto;border:var(--line-width) solid var(--line);border-radius:var(--radius)}.post_content__UdOmx figcaption{margin-top:.5rem;color:var(--muted);font-family:var(--font-code);font-size:12px;text-align:center}.post_content__UdOmx blockquote{margin:2rem 0;padding-left:1rem;border-left:4px solid var(--accent);color:var(--strong);font-size:1.2em;font-style:italic}.post_content__UdOmx code{font-family:var(--font-code);font-size:.9em}.post_content__UdOmx pre{width:100%;margin:2rem 0;padding:1.5rem;overflow-x:auto;border:var(--line-width) solid var(--line);border-radius:var(--radius);background:var(--surface);font-family:var(--font-code);font-size:13px;white-space:pre}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/_next/static/media/8a053b136321ec99-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/_next/static/media/2a8fe189f1a8dd0c-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/_next/static/media/c214ffb7f5362987-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Archivo Fallback;src:local("Arial");ascent-override:88.96%;descent-override:21.28%;line-gap-override:0.00%;size-adjust:98.70%}.__className_7347c0{font-family:Archivo,Archivo Fallback;font-style:normal}.__variable_7347c0{--font-archivo:"Archivo","Archivo Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_a74ce6{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_a74ce6{--font-jetbrains:"JetBrains Mono","JetBrains Mono Fallback"}.halftonepatterns_hidden__A5smG{position:absolute;width:0;height:0}.halftonepatterns_markDot__iWMpL{fill:var(--strong)}.halftonepatterns_backgroundDot__Oocra{fill:var(--halftone);opacity:.75}.typography_display__Q_9I_{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);text-transform:var(--display-case)}.typography_mono__HnFoD{font-family:var(--font-code)}.markthumbnail_thumbnail__a58dW{position:absolute;inset:0;display:block;width:100%;height:100%}.markthumbnail_dots__bh7Bc{transition:transform .8s var(--ease)}.markthumbnail_mark__n5lZV{transform-box:fill-box;transform-origin:center;transition:transform .5s var(--ease)}.glitch-trigger:hover .markthumbnail_dots__bh7Bc{transform:translate(6px,-4px)}.glitch-trigger:hover .markthumbnail_mark__n5lZV{transform:scale(1.08) rotate(-4deg)}.projectcard_card__jPEbW{display:flex;flex-direction:column;overflow:hidden;border:var(--line-width) solid var(--line);border-radius:var(--radius);background:var(--control-bg);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease),border-color .2s}.projectcard_card__jPEbW:hover{transform:var(--hover-shift);box-shadow:var(--shadow);border-color:var(--hover-line)}.projectcard_thumbnail__eiHVH{position:relative;display:block;aspect-ratio:16/10;border-bottom:var(--line-width) solid var(--line);background:var(--bg)}.projectcard_number___jxWa{position:absolute;top:8px;left:10px;color:var(--muted);font-family:var(--font-code);font-size:11px;letter-spacing:.08em}.projectcard_body__Te2dQ{display:flex;flex:1 1;flex-direction:column;gap:6px;padding:16px 16px 10px}.projectcard_kicker__aP44_{color:var(--muted);font-family:var(--font-code);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.projectcard_title__waG_9{color:var(--strong);font-size:clamp(24px,2.6vw,30px);line-height:1}.projectcard_summary__MYsyO{font-size:.94em}.projectcard_footer__3lTXC{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 14px;color:var(--muted);font-family:var(--font-code);font-size:12px}.projectcard_plus__dQ9vD{display:grid;place-items:center;width:28px;height:28px;border:var(--line-width) solid var(--line);border-radius:var(--dot-radius);color:var(--strong);font-size:16px;transition:transform .3s var(--ease),background-color .2s}.projectdetail_detail__2445O{display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden;background:var(--detail-surface);animation:projectdetail_open__klXnB .45s var(--ease)}.projectdetail_thumbnail__3jGVO{position:relative;min-height:220px;border-bottom:var(--line-width) solid var(--line);background:var(--bg)}.projectdetail_body__xR_bq{padding:20px}.projectdetail_top__BYdoz{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.projectdetail_title__pE05Z{margin:0 0 12px;color:var(--strong);font-size:clamp(28px,4vw,44px);line-height:.95}.projectdetail_description__M8L0A{max-width:60ch;margin:0 0 18px}.projectdetail_facts__zLqNI{margin-bottom:18px}@media (min-width:900px){.projectdetail_detail__2445O{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.projectdetail_thumbnail__3jGVO{border-right:var(--line-width) solid var(--line);border-bottom:0}.projectdetail_body__xR_bq{padding:28px 32px}}@keyframes projectdetail_open__klXnB{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.section_section__e2bbU{padding:56px 0;border-top:var(--section-divider)}.section_header__NTHx7{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:28px;padding-bottom:14px;border-bottom:var(--line-width) solid var(--line)}.section_title__2lzZj{color:var(--strong);font-size:var(--h2-size);line-height:.9}@media (min-width:960px){.section_section__e2bbU{padding:88px 0}}@supports (animation-timeline:view()){.section_reveal___mzkj{animation:section_rise__1ggbD linear both;animation-timeline:view();animation-range:entry 0 entry 30%}}@keyframes section_rise__1ggbD{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.projects_filters__dsEME{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.projects_filter__eLKCK{min-height:44px;padding:0 16px;border:var(--line-width) solid var(--line);border-radius:var(--pill-radius);background:transparent;color:var(--chip-ink);font-family:var(--font-code);font-size:12px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}.projects_filter__eLKCK:hover{border-color:var(--strong);color:var(--strong)}.projects_active__sC5GT,.projects_active__sC5GT:hover{border-color:var(--toggle-on-line);background:var(--toggle-on-bg);color:var(--toggle-on-ink)}.projects_hint__jFPIo{margin:0 0 20px;color:var(--muted);font-family:var(--font-code);font-size:12px}.projects_grid__Vdatl{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-flow:row dense;gap:16px}.projects_expanded__xpU0l{grid-column:1/-1;scroll-margin:24px 0 72px}.projects_expanded__xpU0l:focus{outline:none}@media (min-width:620px){.projects_grid__Vdatl{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1040px){.projects_grid__Vdatl{grid-template-columns:repeat(3,minmax(0,1fr))}}.hero_hero__rzips{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;padding:8px 0 56px}.hero_art__Lh8bE{position:relative;aspect-ratio:1/.86;overflow:hidden}.hero_kicker__fcxpY{position:absolute;top:12px;left:14px;z-index:2;color:var(--muted);font-size:11px;letter-spacing:.08em}.hero_column__TYmJQ{display:flex;flex-direction:column;gap:16px;min-width:0}.hero_headline__VXhu3{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px 12px 18px}.hero_title__7Frnb{min-width:0;color:var(--strong);font-size:var(--h1-size);line-height:.94}.hero_hand___Mz_u{display:grid;flex:none;place-items:center;width:clamp(56px,11vw,84px);aspect-ratio:1;border:var(--line-width) solid var(--hand-line);border-radius:calc(var(--radius) * 2);background:var(--hand-bg)}.hero_hand___Mz_u svg{width:60%;height:60%}.hero_hand___Mz_u:hover svg{animation:hero_tap__aQpTl .5s var(--ease)}.hero_pill__hOdLO{display:flex;align-items:stretch;overflow:hidden;border:var(--line-width) solid var(--line);border-radius:var(--radius)}.hero_name__2XpXT{display:flex;align-items:center;padding:12px 16px;background:var(--inverse-bg);color:var(--inverse-ink);font-size:clamp(19px,4.4vw,32px);line-height:1}.hero_stars__9e68I{display:flex;flex:1 1;align-items:center;justify-content:center;gap:2px;padding:8px 10px;color:var(--strong)}.hero_stars__9e68I svg{width:clamp(20px,3.6vw,32px);height:clamp(20px,3.6vw,32px);transition:transform .6s var(--ease)}.hero_pill__hOdLO:hover .hero_stars__9e68I svg{transform:rotate(90deg)}.hero_pill__hOdLO:hover .hero_stars__9e68I svg:nth-child(2){transition-delay:.06s}.hero_pill__hOdLO:hover .hero_stars__9e68I svg:nth-child(3){transition-delay:.12s}.hero_pill__hOdLO:hover .hero_stars__9e68I svg:nth-child(4){transition-delay:.18s}.hero_description__TRao_{padding:14px 18px 16px;font-size:var(--lead-size);line-height:var(--lead-height)}.hero_scribble__r_5te{display:inline-block;width:150px;height:14px;margin-left:10px;vertical-align:middle;color:var(--strong)}.hero_typing__f5Q0o{display:inline-block;max-width:0;overflow:hidden;color:var(--muted);font-size:13px;white-space:nowrap;animation:hero_type__0pP5T 2.4s steps(40) .5s forwards}.hero_actions__N6b61{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.hero_signature__REAdU{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:end;gap:16px;margin-top:4px}.hero_monogram__HBJWi{justify-self:end;width:100%;max-width:170px}@media (min-width:960px){.hero_hero__rzips{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:24px}}@media (prefers-reduced-motion:reduce){.hero_typing__f5Q0o{max-width:none}}@keyframes hero_tap__aQpTl{40%{transform:translateY(-4px)}70%{transform:translateY(2px)}}@keyframes hero_type__0pP5T{to{max-width:40ch}}.resume_grid__5lgGD{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.resume_card__VXbdV{display:flex;flex-direction:column;gap:12px;padding:20px}.resume_title__bVfTj{color:var(--strong);font-size:22px}.resume_education__8GSmz{display:flex;flex-direction:column;gap:10px}.resume_education__8GSmz li{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;border-bottom:1px dashed var(--muted)}.resume_education__8GSmz b{color:var(--strong);font-weight:600}.resume_education__8GSmz span{color:var(--muted);font-family:var(--font-code);font-size:12px}.resume_download__JWXDG{border-color:var(--inverse-bg);background:var(--inverse-bg)}.resume_download__JWXDG,.resume_download__JWXDG .resume_title__bVfTj{color:var(--inverse-ink)}.resume_downloadLabel__drkJi{color:inherit;opacity:.8}.resume_file__cHLVw{font-family:var(--font-code);font-size:13px}.resume_barcode__x9Ym5{height:56px;color:var(--inverse-ink)}.resume_downloadButton__VlSK3,.resume_downloadButton__VlSK3:hover{border-color:var(--inverse-ink);background:var(--inverse-ink);color:var(--inverse-bg)}.resume_downloadButton__VlSK3:hover{border-color:var(--inverse-hover-bg);background:var(--inverse-hover-bg);color:var(--inverse-hover-ink)}.resume_otherVersion__mcHzd{font-family:var(--font-code);font-size:12px;text-decoration:underline;text-underline-offset:4px;opacity:.8}.resume_otherVersion__mcHzd:hover{opacity:1}@media (min-width:900px){.resume_grid__5lgGD{grid-template-columns:repeat(3,minmax(0,1fr))}}.footer_footer__5HJBY{padding:24px 0 28px;border-top:var(--line-width) solid var(--line)}.footer_content__2xIJc{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;color:var(--muted);font-family:var(--font-code);font-size:12px}.bloglist_subtitle__TBBOS{max-width:62ch;margin-bottom:20px;color:var(--muted)}