:root{--serif: "EB Garamond", Georgia, "Times New Roman", serif;--display: "Fraunces", "EB Garamond", Georgia, serif;--sans: ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--paper: #faf7f1;--raised: #fffdf8;--ink: #26231e;--muted: #595241;--faint: #7e7563;--rule: #e7dfd2;--accent: #9c5a3c;--heart: #b23a48;--selection: #efe4d2;--measure: 36rem;--wide: 46rem}@media(prefers-color-scheme:dark){:root{--paper: #1b1916;--raised: #232019;--ink: #ece4d6;--muted: #b3a994;--faint: #9a8f7b;--rule: #34302a;--accent: #cf8a6a;--heart: #e08c8c;--selection: #3a332a}}*{box-sizing:border-box}html{font-size:22px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-weight:400;line-height:1.7;font-feature-settings:"kern","liga","onum";text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--selection)}.wrap{width:100%;max-width:var(--measure);margin:0 auto;padding:0 1.5rem}.wrap--wide{max-width:var(--wide)}main{padding:2.5rem 0 4rem}header.site{border-bottom:1px solid var(--rule)}.site-inner{max-width:var(--wide);margin:0 auto;padding:1.4rem 1.5rem;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.wordmark{font-family:var(--display);font-weight:500;font-size:1.15rem;letter-spacing:-.005em;color:var(--ink);text-decoration:none}.wordmark:hover{color:var(--accent)}nav.site-nav{font-family:var(--sans);font-size:.84rem;letter-spacing:.04em;display:flex;gap:1.4rem;flex-wrap:wrap}nav.site-nav a{color:var(--muted);text-decoration:none}nav.site-nav a:hover,nav.site-nav a[aria-current=page]{color:var(--accent)}h1{font-family:var(--display);font-weight:400;font-size:2.7rem;line-height:1.08;letter-spacing:-.015em;margin:0 0 .3rem}h2{font-family:var(--sans);font-weight:600;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin:3.4rem 0 1.4rem;clear:both}h3{font-family:var(--serif);font-weight:600;font-size:1.2rem;line-height:1.25;margin:0 0 .1rem}p{margin:0 0 1.2rem}a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-decoration-thickness:1px;text-underline-offset:2.5px;transition:color .15s,text-decoration-color .15s}a:hover{color:var(--accent);text-decoration-color:var(--accent)}.lede{font-size:1.18rem;line-height:1.6}.reach-out{font-size:1rem;color:var(--muted);margin:1.5rem 0 0}.reach-out a{color:var(--accent);text-decoration:none}.reach-out a:hover{text-decoration:underline;text-underline-offset:2px}.portrait{width:190px;height:228px;object-fit:cover;object-position:50% 22%;border-radius:8px;display:block;margin:.2rem 0 1.3rem}@media(min-width:720px){.portrait{float:right;width:200px;height:240px;margin:.5rem 0 1rem 1.8rem}}.muted{color:var(--muted)}small,.small{font-size:.8rem}hr{border:none;border-top:1px solid var(--rule);margin:2.6rem 0}.tagline{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--muted);margin:0 0 1.9rem}.links{font-family:var(--sans);font-size:.82rem;letter-spacing:.01em;display:flex;flex-wrap:wrap;gap:.4rem 1.3rem;margin:1.6rem 0 0;padding:0;list-style:none}.links a{color:var(--muted);text-decoration:none}.links a:hover{color:var(--accent)}.links .arrow{color:var(--faint)}.entry{margin:0 0 1.7rem;padding:0 0 1.7rem;border-bottom:1px solid var(--rule)}.entry:last-of-type{border-bottom:none}.entry .head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.entry .when{font-family:var(--sans);font-size:.74rem;letter-spacing:.02em;color:var(--faint);white-space:nowrap}.entry .role{font-family:var(--serif);font-style:italic;font-size:1.02rem;color:var(--muted);margin:.15rem 0 .55rem}.entry p{margin:.4rem 0 .5rem}.tags{font-family:var(--sans);font-size:.8rem;letter-spacing:.02em;color:var(--faint);display:flex;flex-wrap:wrap;gap:.3rem .7rem;margin:.5rem 0 .2rem}.tags span:before{content:"·";color:var(--rule);margin-right:.5rem}.tags span:first-child:before{content:none}.entry .actions{font-family:var(--sans);font-size:.8rem;margin-top:.6rem;display:flex;gap:1.3rem;flex-wrap:wrap}.entry .actions a{color:var(--accent);text-decoration:none}.entry .actions a:hover{text-decoration:underline;text-underline-offset:2px}.pub{font-size:1rem;padding-left:1.1rem;border-left:2px solid var(--rule);margin-bottom:1.2rem}.pub .venue{font-style:italic;color:var(--muted)}.you{font-weight:600;color:var(--ink)}.give-note{margin:3.6rem 0 0;padding-top:1.2rem;border-top:1px solid var(--rule);max-width:var(--measure);font-size:.9rem;line-height:1.7;color:var(--muted)}.give-note .mark{color:var(--heart)}.give-note a{color:var(--muted);text-decoration-color:var(--rule)}.give-note a:hover{color:var(--accent);text-decoration-color:currentColor}footer.site{border-top:1px solid var(--rule);margin-top:3.5rem}.footer-inner{max-width:var(--wide);margin:0 auto;padding:1.7rem 1.5rem 2.6rem;font-family:var(--sans);font-size:.76rem;letter-spacing:.02em;color:var(--faint);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.footer-inner a{color:var(--muted);text-decoration:none}.footer-inner a:hover{color:var(--accent)}h1.resume-name{font-size:2.4rem;margin:0 0 .25rem}.resume-bar{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.6rem 1.5rem;margin-bottom:1.4rem}.btn{font-family:var(--sans);font-size:.78rem;letter-spacing:.02em;border:1px solid var(--rule);border-radius:999px;padding:.4rem .95rem;color:var(--muted);text-decoration:none;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent)}.resume-embed{width:100%;aspect-ratio:8.5 / 11;min-height:70vh;margin-top:.6rem;border:1px solid var(--rule);border-radius:4px;background:#fff}.skills{font-size:1rem;line-height:1.9}.skills b{font-family:var(--sans);font-size:.82rem;color:var(--faint);font-weight:600;letter-spacing:.02em}ul.tight{margin:.4rem 0 1rem;padding-left:1.2rem}ul.tight li{margin:.3rem 0}.postlist{list-style:none;padding:0;margin:1.6rem 0 0}.postlist li{margin:0 0 1.5rem}.postlist h3{font-weight:600;font-size:1.22rem;line-height:1.25;margin:0 0 .15rem}.postlist h3 a{text-decoration:none;color:var(--ink)}.postlist h3 a:hover{color:var(--accent)}.postmeta{font-family:var(--sans);font-size:.78rem;letter-spacing:.02em;color:var(--faint);margin:0}.series{margin:0 0 2.6rem}.series h2{margin:1.8rem 0 .15rem}.series-note{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:1.02rem;margin:0 0 .3rem}.series .postlist{margin-top:.9rem}.prose{max-width:var(--measure)}.post-date{font-family:var(--sans);font-size:.82rem;color:var(--faint);margin:0 0 2rem}.prose p{margin:0 0 1.25rem}.prose h2{font-family:var(--display);font-weight:600;font-size:1.45rem;letter-spacing:-.01em;text-transform:none;color:var(--ink);margin:2.3rem 0 .8rem}.prose h3{font-size:1.18rem;margin:1.7rem 0 .5rem}.prose blockquote{margin:1.5rem 0;padding-left:1.1rem;border-left:2px solid var(--rule);color:var(--muted);font-style:italic}.prose ul,.prose ol{margin:0 0 1.25rem;padding-left:1.3rem}.prose li{margin:.35rem 0}.prose img{display:block;max-width:100%;height:auto;margin:1.7rem auto .4rem;border-radius:4px;max-height:78vh;object-fit:contain}.prose code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.88em;background:var(--surface);padding:.1em .35em;border-radius:4px}.prose pre{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:1rem;overflow-x:auto;font-size:.82rem}.prose pre code{background:none;padding:0}.post-back{margin-top:2.6rem;font-family:var(--sans);font-size:.84rem}@media(max-width:640px){html{font-size:18.5px}h1{font-size:2.2rem}h1.resume-name{font-size:2rem}.site-inner{gap:.5rem;padding:1.1rem 1.5rem}}@media print{header.site,footer.site,.btn{display:none}body{background:#fff;color:#000;font-size:10.5pt;line-height:1.42}main{padding:0}.wrap,.wrap--wide{max-width:100%;padding:0}h1.resume-name{font-size:20pt;margin:0 0 .2rem}.resume-bar{margin-bottom:.6rem}h2{margin:.9rem 0 .4rem;color:#444}.entry{margin-bottom:.55rem;padding-bottom:.5rem;border-color:#ddd}.entry p,.entry .role{margin:.15rem 0 .25rem}ul.tight{margin:.2rem 0 .4rem}ul.tight li{margin:.1rem 0}p{margin-bottom:.45rem}a{color:#000;text-decoration:none}.pub{border-color:#999}}
