@font-face{font-family:__Fraunces_3a6cb3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/fb526027db1fc1ae-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:__Fraunces_3a6cb3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/4da3161b738b07dd-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Fraunces_3a6cb3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/af4bf8399d1aacdf-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:__Fraunces_3a6cb3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/fb526027db1fc1ae-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:__Fraunces_3a6cb3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/4da3161b738b07dd-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Fraunces_3a6cb3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/af4bf8399d1aacdf-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:__Fraunces_3a6cb3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/fb526027db1fc1ae-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:__Fraunces_3a6cb3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/4da3161b738b07dd-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Fraunces_3a6cb3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/af4bf8399d1aacdf-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:__Fraunces_Fallback_3a6cb3;src:local("Times New Roman");ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.00%;size-adjust:115.45%}.__className_3a6cb3{font-family:__Fraunces_3a6cb3,__Fraunces_Fallback_3a6cb3;font-style:normal}.__variable_3a6cb3{--font-serif:"__Fraunces_3a6cb3","__Fraunces_Fallback_3a6cb3"}@font-face{font-family:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-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:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-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:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-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:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-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:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-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:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__IBM_Plex_Mono_46fe82;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-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:__IBM_Plex_Mono_Fallback_46fe82;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_46fe82{font-family:__IBM_Plex_Mono_46fe82,__IBM_Plex_Mono_Fallback_46fe82;font-style:normal}.__variable_46fe82{--font-mono:"__IBM_Plex_Mono_46fe82","__IBM_Plex_Mono_Fallback_46fe82"}:root{--bg:#0f1210;--surface:#161c19;--ink:#ece7dc;--muted:#8d9389;--accent:#c9a227;--line:hsla(41,30%,89%,.12);--max:640px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-mono),ui-monospace,monospace;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit}::selection{background:var(--accent);color:#0f1210}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.serif{font-family:var(--font-serif),serif}.wrap{max-width:880px;margin:0 auto;padding:0 1.75rem}.nav{justify-content:space-between;padding:1.75rem 0}.nav,.nav .mark{display:flex;align-items:center}.nav .mark{font-family:var(--font-serif),serif;font-size:1.5rem;font-weight:600;text-decoration:none;border:1px solid var(--line);width:2.5rem;height:2.5rem;justify-content:center;border-radius:50%}.nav ul{list-style:none;display:flex;gap:1.75rem;margin:0;padding:0;font-size:.9rem}.nav a{text-decoration:none;color:var(--muted);transition:color .2s ease}.nav a:hover{color:var(--ink)}.hero{position:relative;padding:5rem 0 6rem;overflow:hidden}.hero-mark{position:absolute;right:-3rem;top:-6rem;font-size:34rem;line-height:1;color:var(--accent);opacity:.05;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hero h1,.hero-mark{font-family:var(--font-serif),serif}.hero h1{font-weight:600;font-size:clamp(2.75rem,7vw,5rem);margin:0 0 .5rem;letter-spacing:-.01em}.hero .role{color:var(--accent);font-size:1.05rem;margin:0 0 1.75rem}.hero p.lede{max-width:46ch;color:var(--muted);font-size:1.05rem}.hero,.hero *{animation:rise .7s ease both}.hero h1{animation-delay:.05s}.hero .role{animation-delay:.15s}.hero p.lede{animation-delay:.25s}.hero .hero-mark{animation:fadeIn 1.2s ease both;animation-delay:.1s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:.05}}@media (prefers-reduced-motion:reduce){.hero,.hero *{animation:none!important}}section{padding:3.5rem 0;border-top:1px solid var(--line)}section h2{font-family:var(--font-serif),serif;font-weight:500;font-size:1.6rem;margin:0 0 1.5rem}.about-row{display:grid;grid-template-columns:140px 1fr;grid-gap:1rem 2rem;gap:1rem 2rem;padding:.9rem 0;border-top:1px solid var(--line);font-size:.95rem}.about-row:first-of-type{border-top:none}.about-row .label{color:var(--muted)}.about p.bio{max-width:60ch;color:var(--ink);margin:0 0 2rem}.project{display:grid;grid-template-columns:70px 1fr auto;grid-gap:1.5rem;gap:1.5rem;align-items:baseline;padding:1.4rem 0;border-top:1px solid var(--line)}.project:first-of-type{border-top:none}.project .year{color:var(--muted);font-size:.9rem}.project .title{font-family:var(--font-serif),serif;font-size:1.25rem;margin:0 0 .35rem}.project .desc{color:var(--muted);font-size:.92rem;max-width:52ch;margin:0}.project .view{font-size:.9rem;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:4px;white-space:nowrap}.project .view:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);color:var(--accent)}@media (max-width:640px){.project{gap:.35rem}.about-row,.project{grid-template-columns:1fr}.about-row{gap:.25rem}}.contact-teaser p{max-width:50ch;color:var(--muted)}.linklist{display:flex;flex-direction:column;gap:.6rem;margin-top:1.25rem;font-size:.95rem}.linklist a{text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:.15rem;width:-moz-fit-content;width:fit-content}.linklist a:hover{border-color:var(--accent);color:var(--accent)}footer{border-top:1px solid var(--line);padding:2.5rem 0 3rem;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.85rem}footer .mark{font-family:var(--font-serif),serif;color:var(--ink)}footer .links{display:flex;gap:1.25rem}footer a{text-decoration:none;color:var(--muted)}footer a:hover{color:var(--accent)}@media (max-width:560px){footer{flex-direction:column;gap:1rem;text-align:center}}.contact-page{padding:5rem 0 6rem}.contact-page h1{font-family:var(--font-serif),serif;font-size:clamp(2.25rem,5vw,3.25rem);margin:0 0 .75rem}.contact-page p.intro{color:var(--muted);max-width:50ch;margin:0 0 2.5rem}form{gap:1.5rem;max-width:480px}.field,form{display:flex;flex-direction:column}.field{gap:.5rem}.field label{font-size:.85rem;color:var(--muted)}.field input,.field textarea{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:.75rem .9rem;font-family:var(--font-mono),monospace;font-size:.95rem;border-radius:2px}.field input:focus,.field textarea:focus{border-color:var(--accent)}.field textarea{resize:vertical;min-height:120px}button.submit{align-self:flex-start;background:var(--accent);color:#14150f;border:none;padding:.85rem 1.6rem;font-family:var(--font-mono),monospace;font-size:.95rem;font-weight:500;border-radius:2px;cursor:pointer;transition:opacity .2s ease}button.submit:hover{opacity:.85}button.submit:disabled{opacity:.5;cursor:default}.status{font-size:.9rem;color:var(--muted)}.status.ok{color:var(--accent)}