:root{--bg:#f2f4ee;--surface:#fbfcf8;--text:#18201a;--muted:#526056;--border:#d9e0d4;--accent:#2f5d3a;--accent-text:#ffffff;--accent-soft:#e1eadc;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Charter, Georgia, serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--radius:14px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1511;--surface:#162019;--text:#e4eae1;--muted:#98a69a;--border:#26332a;--accent:#8cc08e;--accent-text:#0c1a0f;--accent-soft:#1b2d1f;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1511;--surface:#162019;--text:#e4eae1;--muted:#98a69a;--border:#26332a;--accent:#8cc08e;--accent-text:#0c1a0f;--accent-soft:#1b2d1f;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--serif);line-height:1.2;font-weight:600;margin:0 0 .5em}h1{font-size:clamp(2.2rem,5vw,3.4rem);letter-spacing:-.015em}h2{font-size:1.6rem}h3{font-size:1.2rem}p{margin:0 0 1em}a{color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:16px;top:12px;background:var(--surface);padding:8px 12px;z-index:10}.wrap{max-width:68rem;margin:0 auto;padding:0 16px}.wrap--narrow{max-width:46rem}@media(min-width:720px){.wrap{padding:0 32px}}.site-header{border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;gap:24px;min-height:64px}.brand{font-family:var(--serif);font-weight:600;font-size:1.15rem;color:var(--text);text-decoration:none;margin-right:auto}.nav{display:flex;gap:20px;list-style:none;margin:0;padding:0}.nav a{color:var(--muted);text-decoration:none;font-size:.95rem}.nav a:hover,.nav a[aria-current]{color:var(--text)}.nav a[aria-current]{box-shadow:inset 0 -2px var(--accent)}.theme-toggle{display:grid;place-items:center;width:36px;height:36px;background:0 0;border:1px solid var(--border);border-radius:50%;color:var(--muted);cursor:pointer}.theme-toggle:hover{color:var(--text)}.site-footer{border-top:1px solid var(--border);margin-top:96px;color:var(--muted);font-size:.9rem}.site-footer__inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:28px;padding-bottom:28px}.site-footer p{margin:0}.links{display:flex;flex-wrap:wrap;gap:20px;list-style:none;margin:0;padding:0}.links a{color:var(--muted)}.links a:hover{color:var(--text)}.eyebrow,.work__meta,.metric dt,.post-meta,.post-list time,.position__title span,.section__title{font-family:var(--mono);font-size:.8rem;letter-spacing:.04em;color:var(--muted)}.eyebrow,.section__title{text-transform:uppercase}.section{margin-top:88px}.section__title{font-weight:500;margin-bottom:24px;padding-bottom:10px;border-bottom:1px solid var(--border)}.lead{font-size:1.15rem;color:var(--muted)}.lead p:last-child{margin-bottom:0}.grid{display:grid;gap:20px}@media(min-width:820px){.grid--3{grid-template-columns:repeat(3,1fr)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.card p{color:var(--muted);margin:0}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.tags li,.tags a{font-family:var(--mono);font-size:.75rem;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 10px;text-decoration:none}.tags li:has(a){padding:0;background:0 0}.hero{display:grid;gap:32px;padding-top:72px;align-items:center}.hero h1{max-width:16ch}.hero__photo{width:140px;height:140px;border-radius:50%;object-fit:cover;order:-1;border:1px solid var(--border)}@media(min-width:820px){.hero{grid-template-columns:1fr auto;gap:64px;padding-top:104px}.hero__photo{width:280px;height:280px;border-radius:28px;order:0}}.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.button{display:inline-block;padding:11px 20px;border-radius:999px;font-weight:500;font-size:.95rem;background:var(--accent);color:var(--accent-text);text-decoration:none;border:1px solid var(--accent)}.button:hover{filter:brightness(1.08)}.button--ghost{background:0 0;color:var(--text);border-color:var(--border)}.button--ghost:hover{border-color:var(--text);filter:none}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:20px;margin:0}.metric{display:flex;flex-direction:column-reverse;border-left:2px solid var(--accent);padding:4px 0 4px 18px}.metric dd{margin:0 0 4px;font-family:var(--serif);font-size:2.4rem;font-weight:600;line-height:1.1}.metric dt{letter-spacing:0;line-height:1.5}.work{display:grid;gap:0}.work__item{padding:28px 0;border-bottom:1px solid var(--border)}.work__item:first-child{padding-top:4px}.work__item p:not(.work__meta){color:var(--muted);max-width:64ch}.work__meta{margin-bottom:6px}.post-list{list-style:none;margin:0;padding:0}.post-list li{padding:18px 0;border-bottom:1px solid var(--border);display:grid;gap:2px}.post-list a{font-family:var(--serif);font-size:1.25rem;font-weight:600;color:var(--text);text-decoration:none}.post-list a:hover{color:var(--accent)}.post-list p{color:var(--muted);margin:4px 0 0}.empty{color:var(--muted)}.page{padding-top:64px}.page__header{margin-bottom:40px}.page__header .tags{margin-top:12px}.prose{font-family:var(--serif);font-size:1.15rem;line-height:1.7}.prose h2{margin-top:2em}.prose h3{margin-top:1.6em}.prose img{max-width:100%;height:auto;border-radius:8px}.prose blockquote{margin:1.5em 0;padding-left:20px;border-left:3px solid var(--accent);color:var(--muted)}.prose code{font-family:var(--mono);font-size:.85em;background:var(--accent-soft);padding:2px 5px;border-radius:4px}.prose pre{overflow-x:auto;padding:16px 18px;border-radius:10px;border:1px solid var(--border);font-size:.85rem;line-height:1.55}.prose pre code{background:0 0;padding:0;font-size:inherit}.post-nav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:56px;padding-top:24px;border-top:1px solid var(--border)}.resume section{margin-top:56px}.company{margin-bottom:40px}.company__name{font-size:1.4rem}.position{margin:0 0 28px}.position__title{font-weight:600;font-family:var(--sans);font-size:1rem;color:var(--text);letter-spacing:0;display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;margin-bottom:6px}.position p:not(.position__title),.position li{color:var(--muted)}.position ul{margin:0;padding-left:1.2em}.position li{margin-bottom:6px}.skills{display:grid;grid-template-columns:max-content 1fr;gap:10px 24px;margin:0}.skills dt{font-weight:600}.skills dd{margin:0;color:var(--muted)}@media(max-width:520px){.skills{grid-template-columns:1fr;gap:2px}.skills dd{margin-bottom:12px}}@media print{.site-header,.site-footer,.skip-link{display:none}body{background:#fff;color:#000;font-size:11pt}.page{padding-top:0}a{color:inherit;text-decoration:none}}@media(prefers-reduced-motion:no-preference){.button,.theme-toggle,.nav a{transition:color .15s,border-color .15s,filter .15s}}.position__title span{font-weight:400}body{display:flex;flex-direction:column;min-height:100vh}main{flex:1}.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .bg{color:#e6edf3;background-color:#0d1117}:root:not([data-theme=light]) .chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}:root:not([data-theme=light]) .chroma .err{color:#f85149}:root:not([data-theme=light]) .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}:root:not([data-theme=light]) .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}:root:not([data-theme=light]) .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}:root:not([data-theme=light]) .chroma .hl{background-color:#6e7681}:root:not([data-theme=light]) .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}:root:not([data-theme=light]) .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}:root:not([data-theme=light]) .chroma .line{display:flex}:root:not([data-theme=light]) .chroma .k{color:#ff7b72}:root:not([data-theme=light]) .chroma .kc{color:#79c0ff}:root:not([data-theme=light]) .chroma .kd{color:#ff7b72}:root:not([data-theme=light]) .chroma .kn{color:#ff7b72}:root:not([data-theme=light]) .chroma .kp{color:#79c0ff}:root:not([data-theme=light]) .chroma .kr{color:#ff7b72}:root:not([data-theme=light]) .chroma .kt{color:#ff7b72}:root:not([data-theme=light]) .chroma .nc{color:#f0883e;font-weight:700}:root:not([data-theme=light]) .chroma .no{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .nd{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .ni{color:#ffa657}:root:not([data-theme=light]) .chroma .ne{color:#f0883e;font-weight:700}:root:not([data-theme=light]) .chroma .nl{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .nn{color:#ff7b72}:root:not([data-theme=light]) .chroma .nx{color:#e6edf3}:root:not([data-theme=light]) .chroma .py{color:#79c0ff}:root:not([data-theme=light]) .chroma .nt{color:#7ee787}:root:not([data-theme=light]) .chroma .nv{color:#79c0ff}:root:not([data-theme=light]) .chroma .vc{color:#79c0ff}:root:not([data-theme=light]) .chroma .vg{color:#79c0ff}:root:not([data-theme=light]) .chroma .vi{color:#79c0ff}:root:not([data-theme=light]) .chroma .vm{color:#79c0ff}:root:not([data-theme=light]) .chroma .nf{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .fm{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .l{color:#a5d6ff}:root:not([data-theme=light]) .chroma .ld{color:#79c0ff}:root:not([data-theme=light]) .chroma .s{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sa{color:#79c0ff}:root:not([data-theme=light]) .chroma .sb{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sc{color:#a5d6ff}:root:not([data-theme=light]) .chroma .dl{color:#79c0ff}:root:not([data-theme=light]) .chroma .sd{color:#a5d6ff}:root:not([data-theme=light]) .chroma .s2{color:#a5d6ff}:root:not([data-theme=light]) .chroma .se{color:#79c0ff}:root:not([data-theme=light]) .chroma .sh{color:#79c0ff}:root:not([data-theme=light]) .chroma .si{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sx{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sr{color:#79c0ff}:root:not([data-theme=light]) .chroma .s1{color:#a5d6ff}:root:not([data-theme=light]) .chroma .ss{color:#a5d6ff}:root:not([data-theme=light]) .chroma .m{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mb{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mf{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mh{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mi{color:#a5d6ff}:root:not([data-theme=light]) .chroma .il{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mo{color:#a5d6ff}:root:not([data-theme=light]) .chroma .o{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .ow{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .or{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .c{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .ch{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .cm{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .c1{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .gd{color:#ffa198;background-color:#490202}:root:not([data-theme=light]) .chroma .ge{font-style:italic}:root:not([data-theme=light]) .chroma .gr{color:#ffa198}:root:not([data-theme=light]) .chroma .gh{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .gi{color:#56d364;background-color:#0f5323}:root:not([data-theme=light]) .chroma .go{color:#8b949e}:root:not([data-theme=light]) .chroma .gp{color:#8b949e}:root:not([data-theme=light]) .chroma .gs{font-weight:700}:root:not([data-theme=light]) .chroma .gu{color:#79c0ff}:root:not([data-theme=light]) .chroma .gt{color:#ff7b72}:root:not([data-theme=light]) .chroma .gl{text-decoration:underline}:root:not([data-theme=light]) .chroma .w{color:#6e7681}}[data-theme=dark] .bg{color:#e6edf3;background-color:#0d1117}[data-theme=dark] .chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .hl{background-color:#6e7681}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .nx{color:#e6edf3}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:700}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}