@font-face{font-family:__Fraunces_ae2eaa;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/287637279c44650d-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_ae2eaa;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b387097da7407747-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_ae2eaa;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/cb9f64d62d112b41-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_ae2eaa;src:local("Times New Roman");ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.00%;size-adjust:115.45%}.__className_ae2eaa{font-family:__Fraunces_ae2eaa,__Fraunces_Fallback_ae2eaa;font-style:normal}.__variable_ae2eaa{--font-display:"__Fraunces_ae2eaa","__Fraunces_Fallback_ae2eaa"}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-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:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-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:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-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:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-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:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-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:__Inter_Fallback_f367f3;src:local("Arial");ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}.__className_f367f3{font-family:__Inter_f367f3,__Inter_Fallback_f367f3;font-style:normal}.__variable_f367f3{--font-sans:"__Inter_f367f3","__Inter_Fallback_f367f3"}:root{--paper:#f5f1e8;--paper-2:#efe9da;--card:#fbf8f1;--ink:#1c1a17;--ink-soft:#57514a;--line:#ddd5c4;--line-strong:#c9bfa8;--accent:#b5452b;--accent-ink:#8f3520;--highlight:#f4d35e;--maxw:960px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:88px}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans),-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden;background-image:radial-gradient(rgba(0,0,0,.025) 1px,transparent 0);background-size:4px 4px}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 28px}a{color:var(--accent-ink);text-decoration:none}h1,h2,h3,h4{font-family:var(--font-display),Georgia,serif;font-weight:600;letter-spacing:-.01em}mark{background:linear-gradient(180deg,transparent 58%,var(--highlight) 58%,var(--highlight) 92%,transparent 92%);color:inherit;padding:0 2px}.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}.reveal.is-visible{opacity:1;transform:none}.nav{position:fixed;inset:0 0 auto 0;z-index:50;border-bottom:1px solid transparent;transition:background .25s ease,border-color .25s ease}.nav-scrolled{background:hsla(42,39%,94%,.92);border-bottom-color:var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:64px}.nav-brand{font-family:var(--font-display),serif;font-weight:600;font-size:18px;color:var(--ink)}.nav-dot{color:var(--accent)}.nav-links{display:flex;gap:22px}.nav-links a{color:var(--ink-soft);font-size:14px;font-weight:500;position:relative;padding:4px 0}.nav-links a:after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;background:var(--accent);transition:right .22s ease}.nav-links a.active,.nav-links a:hover{color:var(--ink)}.nav-links a.active:after,.nav-links a:hover:after{right:0}.intro{padding:150px 28px 80px}.kicker{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:22px}h1{font-size:clamp(40px,7.5vw,74px);line-height:1.04;font-weight:540;max-width:14ch}.intro-body{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:36px;gap:36px;margin-top:40px;align-items:start}.lede{font-size:21px;line-height:1.55;color:var(--ink)}.blurb{color:var(--ink-soft);font-size:16px}.intro-actions{grid-column:1/-1;display:flex;align-items:center;gap:24px;margin-top:4px;flex-wrap:wrap}.btn{display:inline-block;padding:11px 22px;background:var(--ink);color:var(--paper);border-radius:2px;font-weight:500;font-size:15px;border:1px solid var(--ink);transition:transform .15s ease,background .15s ease}.btn:hover{transform:translateY(-2px);background:var(--accent-ink);border-color:var(--accent-ink)}.link-arrow{font-weight:600;border-bottom:1.5px solid transparent;transition:border-color .18s ease}.link-arrow:hover{border-bottom-color:var(--accent)}.facts{list-style:none;display:flex;flex-wrap:wrap;gap:14px 40px;margin-top:56px;padding-top:28px;border-top:1px solid var(--line)}.facts li{display:flex;flex-direction:column}.fact-value{font-family:var(--font-display),serif;font-size:30px;font-weight:600;color:var(--accent-ink);line-height:1.1}.fact-label{font-size:13.5px;color:var(--ink-soft)}section{padding:70px 0}h2{font-size:13px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-soft);font-family:var(--font-sans),sans-serif;display:flex;align-items:center;gap:12px;margin-bottom:34px}.sec-num,h2{font-weight:600}.sec-num{font-family:var(--font-display),serif;font-size:15px;color:var(--accent)}.projects{display:grid;grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}.project{background:var(--paper);padding:28px;transition:background .2s ease}.project:hover{background:var(--card)}.project-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:10px}.project h3{font-size:23px}.project-tag{font-size:12.5px;color:var(--ink-soft);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.project p{color:var(--ink-soft);max-width:62ch}.project-stack{display:flex;gap:12px;margin-top:18px;align-items:center;filter:saturate(.92)}.timeline{display:flex;flex-direction:column;gap:14px}.job{display:flex;gap:22px;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:26px;transition:border-color .2s ease}.job:hover{border-color:var(--line-strong)}.edu-logo,.job-logo{flex-shrink:0}.company-logo{border-radius:8px;object-fit:contain;background:#fff;border:1px solid var(--line);padding:4px}.logo-fallback{display:grid;place-items:center;border-radius:8px;background:var(--ink);color:var(--paper);font-family:var(--font-display),serif;font-weight:600;font-size:16px}.job-body{flex:1 1;min-width:0}.job-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.job h3{font-size:21px}.job-company{color:var(--accent-ink);font-size:14.5px;margin-top:2px}.period{color:var(--ink-soft);font-size:13px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.job-summary{font-style:italic;color:var(--ink);margin:12px 0 14px}.period-inline{color:var(--ink-soft);font-size:14px;margin-top:4px}.impact{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.impact-chip{font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:999px;color:var(--accent-ink);background:rgba(181,69,43,.08);border:1px solid rgba(181,69,43,.22)}.achievements,.job ul{list-style:none;display:flex;flex-direction:column;gap:8px}.achievements li,.job li{position:relative;padding-left:18px;color:var(--ink-soft);font-size:15.5px}.achievements li:before,.job li:before{content:"—";position:absolute;left:0;color:var(--accent)}.stack-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-bottom:40px}.stack-item{background:var(--paper);display:flex;align-items:center;gap:10px;padding:14px 16px;font-size:14px;color:var(--ink-soft);transition:background .18s ease,color .18s ease}.stack-item:hover{background:var(--card);color:var(--ink)}.tech-logo{object-fit:contain}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:24px 36px;gap:24px 36px}.skill-group h4{font-size:16px;color:var(--ink);margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--line)}.skill-group p{color:var(--ink-soft);font-size:14.5px}.two-col{display:grid;grid-template-columns:1fr 1fr;grid-gap:48px;gap:48px;align-items:start}.edu{display:flex;gap:18px}.edu h3{font-size:18px}footer{padding:80px 28px 110px;border-top:1px solid var(--line);margin-top:30px}.contact-line{font-size:22px;font-family:var(--font-display),serif;max-width:30ch;line-height:1.4;margin-bottom:28px}.contact-links{display:flex;flex-wrap:wrap;gap:14px 28px;font-size:17px}.contact-links a{border-bottom:1.5px solid var(--line-strong);padding-bottom:2px;transition:border-color .18s ease}.contact-links a:hover{border-bottom-color:var(--accent)}.colophon{margin-top:48px;color:var(--ink-soft);font-size:13px}@media (max-width:760px){body{font-size:16px}.intro{padding-top:120px}.intro-body{grid-template-columns:1fr;gap:18px}.job{gap:16px}.job,.job-head{flex-direction:column}.job-head{gap:4px}.two-col{grid-template-columns:1fr;gap:40px}.nav-links{gap:16px}}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}