:root{--bg: #f2f3f0;--surface: #e7e8e3;--line: #d4d6cf;--ink: #292a26;--muted: #62655c;--faint: #656960;--amber: #8a5a00;--amber-strong: #6e4700;--teal: #3f6270;--mode-bg: #292a26;--mode-ink: #f2f3f0;--on-amber: #f2f3f0;--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans: "Avenir Next", Avenir, "Helvetica Neue", Helvetica, system-ui, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #1a1c19;--surface: #232620;--line: #32362e;--ink: #e2e4dd;--muted: #9aa093;--faint: #8d9384;--amber: #d9a33c;--amber-strong: #e8b95c;--teal: #7fa8b5;--mode-bg: #131511;--mode-ink: #e2e4dd;--on-amber: #131511}}:root[data-theme=light]{--bg: #f2f3f0;--surface: #e7e8e3;--line: #d4d6cf;--ink: #292a26;--muted: #62655c;--faint: #656960;--amber: #8a5a00;--amber-strong: #6e4700;--teal: #3f6270;--mode-bg: #292a26;--mode-ink: #f2f3f0;--on-amber: #f2f3f0}:root[data-theme=dark]{--bg: #1a1c19;--surface: #232620;--line: #32362e;--ink: #e2e4dd;--muted: #9aa093;--faint: #8d9384;--amber: #d9a33c;--amber-strong: #e8b95c;--teal: #7fa8b5;--mode-bg: #131511;--mode-ink: #e2e4dd;--on-amber: #131511}*{box-sizing:border-box;margin:0}html{background:var(--bg)}body{font-family:var(--sans);font-size:1rem;line-height:1.6;color:var(--ink);background:var(--bg);min-height:100vh;padding-bottom:3.5rem}::selection{background:var(--amber);color:var(--bg)}a{color:var(--amber);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px;color:var(--amber-strong)}a:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:1px}main{max-width:58rem;margin:0 auto;padding:2.75rem clamp(1.25rem,5vw,3rem) 3rem}.label{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}header{display:flex;flex-wrap:wrap;gap:.75rem 2rem;align-items:baseline;justify-content:space-between;margin-bottom:4.5rem}.wordmark{font-family:var(--mono);font-size:.95rem;font-weight:600;color:var(--ink)}.wordmark .tilde{color:var(--teal)}.wordmark:hover{text-decoration:none;color:var(--amber)}nav ul{display:flex;gap:1.75rem;list-style:none;padding:0}header nav a{font-family:var(--mono);font-size:.8rem;color:var(--muted)}header nav a:hover{color:var(--amber);text-decoration:none}header nav a[aria-current=page]{color:var(--ink)}header nav a[aria-current=page]:before{content:"*";color:var(--amber);margin-right:.35em}.annotated{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.35rem 2rem}.margin-note{font-family:var(--mono);font-size:.75rem;color:var(--faint);text-align:right;padding-top:.3rem;font-variant-numeric:tabular-nums;user-select:none}.hero{margin-bottom:4.5rem}.hero h1{font-family:var(--mono);font-size:clamp(1.45rem,3.6vw,2.1rem);font-weight:600;line-height:1.3;letter-spacing:-.01em;text-wrap:balance;margin-bottom:1.1rem}.hero h1 .accent{color:var(--amber)}.cursor{display:inline-block;width:.55em;height:1.1em;background:var(--amber);vertical-align:text-bottom;margin-left:.15em;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}*{scroll-behavior:auto!important;transition:none!important}}.hero p{max-width:62ch;color:var(--muted);font-size:1.05rem}.hero p strong{color:var(--ink);font-weight:600}section{margin-bottom:4.5rem}.section-head{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.75rem;border-bottom:1px solid var(--line);padding-bottom:.6rem}.section-head .marker{font-family:var(--mono);font-size:.78rem;color:var(--teal)}.section-head h2{font-family:var(--mono);font-size:.85rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.section-head .more{margin-left:auto;font-family:var(--mono);font-size:.78rem}.card-click{position:relative}.card-click a.stretch:after{content:"";position:absolute;inset:0;z-index:0}.card-click a:not(.stretch),.card-click button{position:relative;z-index:1}.posts{list-style:none;padding:0;display:grid;gap:.4rem}.post{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.25rem 2rem;padding:.85rem .75rem;margin:0 -.75rem;border-left:2px solid transparent}.post:hover,.post:focus-within{background:var(--surface);border-left-color:var(--amber)}.post time{font-family:var(--mono);font-size:.78rem;color:var(--muted);text-align:right;padding-top:.2rem;font-variant-numeric:tabular-nums}.post h3{font-size:1.08rem;font-weight:600;line-height:1.35;text-wrap:balance}.post h3 a{color:var(--ink)}.post h3 a:hover{color:var(--amber);text-decoration:none}.post h3 code{font-family:var(--mono);font-size:.92em;color:var(--teal)}.post .summary{grid-column:2;color:var(--muted);font-size:.93rem;max-width:60ch}.post .summary code{font-family:var(--mono);font-size:.9em;color:var(--ink)}.post .meta{grid-column:2;display:flex;flex-wrap:wrap;gap:1rem;font-family:var(--mono);font-size:.72rem;color:var(--teal);margin-top:.15rem}.post .meta .rt{color:var(--faint)}.projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1.25rem}.project{background:var(--surface);border:1px solid var(--line);padding:1.25rem 1.4rem 1.4rem;display:grid;gap:.6rem;align-content:start}.project .path{font-family:var(--mono);font-size:.8rem;color:var(--teal)}.project .path a{color:inherit}.project .path a:hover{color:var(--amber)}.project h3{font-size:1.02rem;font-weight:600}.project p{color:var(--muted);font-size:.92rem}.project .stack{font-family:var(--mono);font-size:.7rem;color:var(--faint);letter-spacing:.04em}.now{background:var(--surface);border:1px solid var(--line);border-left:2px solid var(--teal);padding:1.1rem 1.4rem;font-family:var(--mono);font-size:.82rem;line-height:1.9;color:var(--muted);overflow-x:auto}.now .prompt{color:var(--amber)}.now .cmd{color:var(--ink)}.now .out{display:block;white-space:pre}.now .ok{color:var(--teal)}footer{border-top:1px solid var(--line);padding-top:1.5rem;display:flex;flex-wrap:wrap;gap:.75rem 2rem;align-items:baseline;justify-content:space-between;font-family:var(--mono);font-size:.78rem;color:var(--faint)}footer ul{display:flex;gap:1.5rem;list-style:none;padding:0}footer a{color:var(--muted)}footer a:hover{color:var(--amber)}.modeline{position:fixed;inset:auto 0 0;background:var(--mode-bg);color:var(--mode-ink);font-family:var(--mono);font-size:.75rem;line-height:1;display:flex;align-items:center;gap:1.25rem;padding:.65rem clamp(1rem,4vw,2rem);font-variant-numeric:tabular-nums;z-index:10}.modeline .mode{background:var(--amber);color:var(--on-amber);font-weight:700;padding:.35rem .6rem;margin:-.35rem 0;letter-spacing:.08em}.modeline .file{opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modeline .spacer{flex:1}.modeline .pct{opacity:.7;min-width:3.5ch;text-align:right}.modeline button{font:inherit;background:none;border:1px solid color-mix(in srgb,var(--mode-ink) 35%,transparent);color:var(--mode-ink);padding:.3rem .6rem;cursor:pointer;border-radius:1px}.modeline button:hover{border-color:var(--amber);color:var(--amber)}@media(max-width:44rem){.post{grid-template-columns:1fr}.post time{text-align:left;padding-top:0}.post .summary,.post .meta{grid-column:1}.modeline .file{display:none}}.archive-head{margin-bottom:2.5rem}.archive-head h1{font-family:var(--mono);font-size:clamp(1.35rem,3.2vw,1.9rem);font-weight:600;line-height:1.3;letter-spacing:-.01em;text-wrap:balance;margin-bottom:1rem}.archive-head h1 .accent{color:var(--amber)}.archive-head p{max-width:62ch;color:var(--muted);font-size:1.02rem}.archive-head p strong{color:var(--ink);font-weight:600}.filter{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .5rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1rem 0}.filter .filter-label{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-right:.4rem}.chip{font-family:var(--mono);font-size:.75rem;line-height:1;color:var(--teal);background:none;border:1px solid var(--line);padding:.42rem .6rem;cursor:pointer;border-radius:1px}.chip:hover{border-color:var(--amber);color:var(--amber);background:var(--surface)}.chip[aria-pressed=true]{background:var(--amber);border-color:var(--amber);color:var(--on-amber);font-weight:700}.count{font-family:var(--mono);font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums;margin:1rem 0 3.25rem}.count .hit{color:var(--amber);font-weight:600}.count .tag{color:var(--teal)}.empty-state{font-family:var(--mono);font-size:.78rem;color:var(--muted);margin:1rem 0 3.25rem}.empty-state[hidden]{display:none}.empty-state .tag{color:var(--teal)}.empty-state .show-all{font:inherit;background:none;border:none;padding:0;color:var(--amber);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.empty-state .show-all:hover{color:var(--amber-strong)}.year{margin-bottom:3.75rem}.year[hidden]{display:none}.section-head .n{margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--faint);font-variant-numeric:tabular-nums}.posts li[hidden]{display:none}.writing-index header{margin-bottom:4rem}.writing-index .section-head{margin-bottom:1.6rem}.writing-index .section-head h2{text-transform:none;font-variant-numeric:tabular-nums}:root{--rule-soft: color-mix(in srgb, var(--line) 60%, transparent);--code-ink: color-mix(in srgb, var(--ink) 88%, var(--teal))}html:has(.article-page){scroll-behavior:smooth}.article-page header{margin-bottom:3.5rem}.article-page .annotated{grid-template-columns:11rem minmax(0,1fr);gap:0 3rem;align-items:start}.article-page footer{max-width:65ch;margin-top:3.5rem}.toc{position:sticky;top:2rem;font-family:var(--mono);font-size:.75rem;line-height:1.45;border-right:1px solid var(--rule-soft);padding-right:1.25rem;text-align:right}.toc h2{font-size:.67rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding-bottom:.6rem;margin-bottom:.75rem;border-bottom:1px solid var(--rule-soft)}.toc ol{list-style:none;padding:0;display:grid;gap:.75rem;counter-reset:toc}.toc a{color:var(--muted);display:block;font-variant-numeric:tabular-nums}.toc a:before{counter-increment:toc;content:counter(toc,decimal-leading-zero) "  ";color:var(--faint)}.toc a:hover{color:var(--amber);text-decoration:none}.toc a[aria-current=true]{color:var(--amber);font-weight:600}.toc a[aria-current=true]:before{color:var(--amber)}.article{min-width:0}.post-header{margin-bottom:3rem}.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.1rem;font-family:var(--mono);font-size:.75rem;color:var(--teal);font-variant-numeric:tabular-nums;margin-bottom:1.15rem;padding-bottom:.75rem;border-bottom:1px solid var(--line);max-width:65ch}.post-meta time{color:var(--muted)}.post-meta .rt,.post-meta .sep{color:var(--faint)}.post-header h1{font-family:var(--sans);font-size:clamp(1.8rem,4.2vw,2.45rem);font-weight:600;line-height:1.16;letter-spacing:-.022em;text-wrap:balance;max-width:20ch;margin-bottom:1.1rem}.standfirst{font-size:1.1rem;line-height:1.55;color:var(--muted);max-width:56ch;border-left:2px solid var(--teal);padding-left:1.1rem}.standfirst strong{color:var(--ink);font-weight:600}.post-header h1 code,.postnav .title code{font-family:var(--mono);font-size:.92em;color:var(--teal)}.prose{max-width:44rem;min-width:0}.prose>p,.prose>ul,.prose>ol,.prose>h2,.prose>h3,.prose>blockquote{max-width:65ch}.prose>*+*{margin-top:1.35rem}.prose p{line-height:1.72}.prose strong{font-weight:600;color:var(--ink)}.prose h2{display:flex;align-items:baseline;gap:.9rem;font-family:var(--mono);font-size:1rem;font-weight:600;letter-spacing:.085em;text-transform:uppercase;color:var(--ink);text-wrap:balance;border-bottom:1px solid var(--line);padding-bottom:.65rem;margin-top:3.25rem;scroll-margin-top:2rem}.prose h2 .marker{font-weight:400;color:var(--teal)}.prose h2:not(:has(.marker)):before{content:"##";font-weight:400;color:var(--teal)}.prose h3{font-family:var(--mono);font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);margin-top:2.25rem;scroll-margin-top:2rem}.prose li{line-height:1.65}.prose ul{list-style:none;padding-left:1.5rem;display:grid;gap:.7rem}.prose ul>li{position:relative}.prose ul>li:before{content:"—";position:absolute;left:-1.5rem;color:var(--teal);font-family:var(--mono)}.prose ol{list-style:none;counter-reset:step;padding-left:2.4rem;display:grid;gap:.8rem}.prose ol>li{position:relative}.prose ol>li:before{counter-increment:step;content:counter(step,decimal-leading-zero);position:absolute;left:-2.4rem;top:.2em;font-family:var(--mono);font-size:.76rem;color:var(--amber);font-variant-numeric:tabular-nums}.prose code{font-family:var(--mono);font-size:.85em;background:var(--surface);border:1px solid var(--line);color:var(--code-ink);padding:.08em .35em;border-radius:2px;white-space:nowrap}.post-footer{max-width:65ch;margin-top:4rem;border-top:1px solid var(--line);padding-top:1.75rem;display:grid;gap:2.25rem}.author-note{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:start}.author-note .sig{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;color:var(--teal);border:1px solid var(--line);background:var(--surface);padding:.45rem .55rem;line-height:1}.author-note p{font-size:.93rem;color:var(--muted)}.author-note p strong{color:var(--ink);font-weight:600}.postnav{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem}.postnav a,.postnav .disabled{display:grid;gap:.45rem;border:1px solid var(--line);border-left:2px solid var(--teal);background:var(--surface);padding:.9rem 1.1rem;align-content:start}.postnav .disabled{border-left-color:var(--line)}.postnav .dir{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.postnav .title{font-size:.97rem;font-weight:600;color:var(--ink);line-height:1.35;text-wrap:balance}.postnav .disabled .title{color:var(--muted);font-weight:400}.postnav a:hover{text-decoration:none;border-left-color:var(--amber)}.postnav a:hover .title{color:var(--amber)}.modeline .progress{position:absolute;inset:0 0 auto;height:2px;background:color-mix(in srgb,var(--mode-ink) 18%,transparent)}.modeline .progress>span{display:block;height:100%;width:0;background:var(--amber)}@media(max-width:60rem){.article-page .annotated{grid-template-columns:minmax(0,1fr)}.article-page .toc{display:none}}@media(max-width:44rem){.article-page .post-header h1{max-width:none}}.case-study-page .case-header{margin-bottom:3rem}.case-study-page .eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--teal);display:block;margin-bottom:.9rem}.case-study-page .case-header h1{font-family:var(--sans);font-size:clamp(1.9rem,4.6vw,2.6rem);font-weight:600;line-height:1.14;letter-spacing:-.024em;text-wrap:balance;max-width:18ch;margin-bottom:1rem}.case-study-page .positioning{font-size:1.12rem;line-height:1.55;color:var(--muted);max-width:54ch;border-left:2px solid var(--teal);padding-left:1.1rem;text-wrap:balance}.case-study-page .positioning strong{color:var(--ink);font-weight:600}.case-study-page .facts{margin-top:2rem;max-width:65ch;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1rem 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1rem 2rem;font-family:var(--mono);font-size:.78rem}.case-study-page .facts div{display:grid;gap:.3rem;align-content:start}.case-study-page .facts dt,.case-study-page .facts .k{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.case-study-page .facts dd,.case-study-page .facts .v{color:var(--ink);margin:0;line-height:1.5}.case-study-page .facts .v .ok{color:var(--teal)}.case-study-page .prose h3{text-wrap:balance}.case-study-page .case-footer{max-width:65ch;margin-top:4rem;border-top:1px solid var(--line);padding-top:1.75rem;display:grid;gap:2.25rem}.case-study-page .links{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;font-family:var(--mono);font-size:.8rem;align-items:baseline}.case-study-page .links .k{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.case-study-page .projnav{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem}.case-study-page .projnav a,.case-study-page .projnav .disabled{display:grid;gap:.4rem;border:1px solid var(--line);border-left:2px solid var(--teal);background:var(--surface);padding:.9rem 1.1rem;align-content:start}.case-study-page .projnav .disabled{border-left-color:var(--line)}.case-study-page .projnav .dir{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.case-study-page .projnav .title{font-size:.97rem;font-weight:600;color:var(--ink);line-height:1.35}.case-study-page .projnav .disabled .title{color:var(--muted);font-weight:400}.case-study-page .projnav .blurb{font-size:.83rem;color:var(--muted);line-height:1.5}.case-study-page .projnav a:hover{text-decoration:none;border-left-color:var(--amber)}.case-study-page .projnav a:hover .title{color:var(--amber)}@media(max-width:44rem){.case-study-page .case-header h1{max-width:none}.case-study-page .prose h2{flex-wrap:wrap}.case-study-page .prose h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem}}.projects-index header{margin-bottom:4rem}.projects-index .index-head{margin-bottom:2.5rem}.projects-index .index-head h1{font-family:var(--mono);font-size:clamp(1.35rem,3.2vw,1.9rem);font-weight:600;line-height:1.3;letter-spacing:-.01em;text-wrap:balance;margin-bottom:1rem}.projects-index .index-head h1 .accent{color:var(--amber)}.projects-index .index-head p{max-width:62ch;color:var(--muted);font-size:1.02rem}.projects-index .index-head p strong{color:var(--ink);font-weight:600}.projects-index .count{margin:1rem 0 2.75rem}.projects-index .projects{list-style:none;padding:0;display:grid;grid-template-columns:1fr;gap:1rem}.projects-index .projects>li[hidden]{display:none}.projects-index .project{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.5rem 2rem;background:var(--surface);border:1px solid var(--line);border-left:2px solid transparent;padding:1.35rem 1.5rem 1.4rem}.projects-index .project:hover,.projects-index .project:focus-within{border-left-color:var(--amber)}.projects-index .project .rank{grid-row:1 / span 2;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;display:grid;gap:.3rem;align-content:start;user-select:none}.projects-index .project .ord{font-size:1.35rem;font-weight:600;line-height:1;color:var(--faint)}.projects-index .project:hover .ord,.projects-index .project:focus-within .ord{color:var(--amber)}.projects-index .project .years{font-size:.74rem;color:var(--faint);white-space:normal}.projects-index .project .body{display:grid;gap:.5rem;align-content:start}.projects-index .project .path{font-family:var(--mono);font-size:.78rem;color:var(--teal);overflow-wrap:anywhere}.projects-index .project .path a{color:inherit}.projects-index .project .path a:hover{color:var(--amber)}.projects-index .project .title{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem .85rem}.projects-index .project h2{font-size:1.14rem;font-weight:600;line-height:1.3;text-wrap:balance}.projects-index .project h2 a{color:var(--ink)}.projects-index .project h2 a:hover{color:var(--amber);text-decoration:none}.projects-index .status{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;line-height:1;padding:.32rem .5rem;border:1px solid;border-radius:1px;white-space:nowrap}.projects-index .status[data-status=shipped]{color:var(--teal);border-color:color-mix(in srgb,var(--teal) 45%,transparent);background:color-mix(in srgb,var(--teal) 10%,transparent)}.projects-index .status[data-status=active]{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 50%,transparent);background:color-mix(in srgb,var(--amber) 10%,transparent)}.projects-index .status[data-status=archived]{color:var(--faint);border-color:color-mix(in srgb,var(--faint) 40%,transparent);background:color-mix(in srgb,var(--faint) 8%,transparent)}.projects-index .project .what{color:var(--ink);font-size:.98rem;max-width:62ch}.projects-index .project .problem{color:var(--muted);font-size:.93rem;max-width:65ch}.projects-index .project .stack{font-family:var(--mono);font-size:.72rem;color:var(--faint);letter-spacing:.04em;overflow-wrap:anywhere}.projects-index .project .links{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;font-family:var(--mono);font-size:.78rem;margin-top:.25rem;padding-top:.75rem;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.projects-index .project .links .repo{color:var(--muted)}.projects-index .project .links .repo:hover{color:var(--amber)}@media(max-width:44rem){.projects-index .project{grid-template-columns:1fr;padding:1.15rem 1.15rem 1.25rem}.projects-index .project .rank{grid-row:auto;text-align:left;grid-auto-flow:column;justify-content:start;align-items:baseline;gap:.75rem}.projects-index .project .ord{font-size:.95rem}}.about-page .annotated+.annotated{margin-top:2.25rem}.about-page .prose>h3:first-child{margin-top:0}.about-page .about-head{margin-bottom:4rem;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2.75rem;align-items:start}.about-page .about-head .eyebrow{font-family:var(--mono);font-size:.78rem;color:var(--teal);display:block;margin-bottom:.9rem}.about-page .about-head h1{font-family:var(--mono);font-size:clamp(1.35rem,3.2vw,1.9rem);font-weight:600;line-height:1.28;letter-spacing:-.01em;text-wrap:balance;max-width:24ch;margin-bottom:1.1rem}.about-page .about-head .lede{max-width:62ch;color:var(--muted);font-size:1.05rem;line-height:1.62;border-left:2px solid var(--teal);padding-left:1.1rem}.about-page .about-head .lede strong{color:var(--ink);font-weight:600}.about-page .about-portrait{margin:0;width:13rem;border:1px solid var(--line);background:var(--surface)}.about-page .about-portrait img{display:block;width:100%;height:auto;aspect-ratio:1 / 1;object-fit:cover;border-bottom:1px solid var(--line)}.about-page .about-portrait figcaption{font-family:var(--mono);font-size:.68rem;letter-spacing:.04em;color:var(--muted);padding:.5rem .7rem}.about-page .elsewhere{list-style:none;padding:0;display:grid;gap:.15rem;max-width:44rem}.about-page .elsewhere .row{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.25rem 2rem;padding:.6rem .75rem;margin:0 -.75rem;border-left:2px solid transparent}.about-page .elsewhere .row:hover,.about-page .elsewhere .row:focus-within{background:var(--surface);border-left-color:var(--amber)}.about-page .elsewhere .k{font-family:var(--mono);font-size:.75rem;color:var(--muted);text-align:right;padding-top:.15rem;text-transform:uppercase;letter-spacing:.1em}.about-page .elsewhere .v{font-family:var(--mono);font-size:.85rem}.about-page .elsewhere .v span{color:var(--muted)}@media(max-width:44rem){.about-page .annotated,.about-page .elsewhere .row{grid-template-columns:1fr}.about-page .margin-note,.about-page .elsewhere .k{text-align:left;padding-top:0}.about-page .about-head{grid-template-columns:1fr;gap:2rem}.about-page .about-head h1{max-width:none}.about-page .about-portrait{width:10rem}}.resume-page header{margin-bottom:4rem}.resume-page section{margin-bottom:3.75rem}.resume-page .resume-head{margin-bottom:3.5rem}.resume-page .eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--teal);display:block;margin-bottom:.9rem}.resume-page .resume-head h1{font-family:var(--mono);font-size:clamp(1.35rem,3.2vw,1.9rem);font-weight:600;line-height:1.25;letter-spacing:-.01em;margin-bottom:.9rem}.resume-page .resume-head h1 .role{color:var(--amber)}.resume-page .positioning{font-size:1.08rem;line-height:1.55;color:var(--muted);max-width:58ch;border-left:2px solid var(--teal);padding-left:1.1rem;text-wrap:balance}.resume-page .positioning strong{color:var(--ink);font-weight:600}.resume-page .facts{margin-top:2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1rem 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1rem 2rem;font-family:var(--mono);font-size:.78rem}.resume-page .facts div{display:grid;gap:.3rem;align-content:start}.resume-page .facts dt{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.resume-page .facts dd{color:var(--ink);margin:0;line-height:1.5;overflow-wrap:anywhere}.resume-page .facts dd .ok{color:var(--teal)}.resume-page .facts dd a{color:var(--amber)}.resume-page .entries{list-style:none;padding:0;display:grid;gap:.5rem}.resume-page .entry{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.4rem 2rem;padding:1rem .75rem 1.15rem;margin:0 -.75rem;border-left:2px solid transparent}.resume-page .entry:hover,.resume-page .entry:focus-within{background:var(--surface);border-left-color:var(--amber)}.resume-page .entry .when{grid-row:1 / span 4;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;display:grid;gap:.25rem;align-content:start;padding-top:.2rem;user-select:none}.resume-page .entry .range{font-size:.78rem;color:var(--muted);white-space:nowrap}.resume-page .entry .dur{font-size:.72rem;color:var(--faint)}.resume-page .entry h3{font-size:1.06rem;font-weight:600;line-height:1.3;text-wrap:balance}.resume-page .entry h3 .org{color:var(--ink)}.resume-page .entry h3 .at{color:var(--faint);font-weight:400;margin:0 .4em}.resume-page .entry h3 .place{font-family:var(--mono);font-size:.76rem;font-weight:400;color:var(--teal)}.resume-page .entry .context{grid-column:2;color:var(--muted);font-size:.93rem;max-width:64ch}.resume-page .entry .outcomes{grid-column:2;list-style:none;padding:0 0 0 1.5rem;margin-top:.5rem;display:grid;gap:.5rem;max-width:64ch}.resume-page .entry .outcomes li{position:relative;line-height:1.6;font-size:.97rem}.resume-page .entry .outcomes li:before{content:"—";position:absolute;left:-1.5rem;font-family:var(--mono);color:var(--teal)}.resume-page .entry .outcomes b{color:var(--amber-strong);font-weight:600;font-variant-numeric:tabular-nums}.resume-page .entry .stack{grid-column:2;font-family:var(--mono);font-size:.72rem;color:var(--faint);letter-spacing:.04em;margin-top:.55rem}.resume-page .skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.75rem 2.5rem;margin:0}.resume-page .skills .group{display:grid;gap:.65rem;align-content:start}.resume-page .skills dt{font-family:var(--mono);font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.resume-page .skills dd{margin:0;display:flex;flex-wrap:wrap;gap:.4rem}.resume-page .skills .tok{font-family:var(--mono);font-size:.75rem;line-height:1;color:var(--teal);border:1px solid var(--line);border-radius:1px;padding:.42rem .6rem;white-space:nowrap}.resume-page .skills .tok.lead{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}.resume-page .skills .note{grid-column:1 / -1;font-family:var(--mono);font-size:.74rem;color:var(--muted);margin:0}.resume-page .work{list-style:none;padding:0;display:grid;gap:.5rem}.resume-page .work .item{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:.3rem 2rem;padding:.9rem .75rem;margin:0 -.75rem;border-left:2px solid transparent}.resume-page .work .item:hover,.resume-page .work .item:focus-within{background:var(--surface);border-left-color:var(--amber)}.resume-page .work .years{font-family:var(--mono);font-size:.78rem;color:var(--muted);text-align:right;padding-top:.15rem;font-variant-numeric:tabular-nums}.resume-page .work .path{font-family:var(--mono);font-size:.78rem;color:var(--teal)}.resume-page .work .path a{color:inherit}.resume-page .work .path a:hover{color:var(--amber)}.resume-page .work h3{grid-column:2;font-size:1.02rem;font-weight:600;line-height:1.3}.resume-page .work h3 a{color:var(--ink)}.resume-page .work h3 a:hover{color:var(--amber);text-decoration:none}.resume-page .work p{grid-column:2;color:var(--muted);font-size:.93rem;max-width:62ch}.resume-page .work p b{color:var(--amber-strong);font-weight:600;font-variant-numeric:tabular-nums}.resume-page .contact{background:var(--surface);border:1px solid var(--line);border-left:2px solid var(--teal);padding:1.1rem 1.4rem;font-family:var(--mono);font-size:.82rem;line-height:1.9;color:var(--muted);overflow-x:auto}.resume-page .contact .prompt{color:var(--amber)}.resume-page .contact .cmd{color:var(--ink)}.resume-page .contact .out{display:block}.resume-page .contact .k{color:var(--teal)}.resume-page .contact a{color:var(--amber)}@media(max-width:44rem){.resume-page .entry,.resume-page .work .item{grid-template-columns:1fr}.resume-page .entry .when{grid-row:auto;text-align:left;padding-top:0;grid-auto-flow:column;justify-content:start;gap:.75rem}.resume-page .entry .context,.resume-page .entry .outcomes,.resume-page .entry .stack,.resume-page .work h3,.resume-page .work p{grid-column:1}.resume-page .work .years{text-align:left;padding-top:0}}.print-only{display:none}@media print{:root,:root[data-theme=light],:root[data-theme=dark]{--bg: #ffffff;--surface: #ffffff;--line: #d4d6cf;--ink: #292a26;--muted: #62655c;--faint: #656960;--amber: #8a5a00;--amber-strong: #6e4700;--teal: #3f6270;--on-amber: #f2f3f0}html,body{background:#fff}body{padding-bottom:0;font-size:10.5pt;line-height:1.45}main{padding:0}.modeline,header nav,footer ul,.section-head .more,.toc{display:none}.print-only{display:block}.article-page .annotated{grid-template-columns:minmax(0,1fr)}h1,h2,h3,.section-head{break-after:avoid}a{text-decoration:none}header{margin-bottom:1.5rem}.resume-page header{margin-bottom:1.5rem}.resume-page section{margin-bottom:1.5rem}.resume-page .resume-head{margin-bottom:1.5rem}.resume-page .entry,.resume-page .work .item{background:none;border-left:0;margin:0;padding:.6rem 0}.resume-page .entry,.resume-page .work .item,.resume-page .skills .group,.resume-page .contact{break-inside:avoid}.resume-page .facts dd a[href^=http]:after,.resume-page .work .path a[href^=http]:after,.resume-page .contact a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;color:var(--muted)}}.notfound-page .notfound-head{margin-top:2rem}.notfound-page .nf-error{font-family:var(--mono);font-size:clamp(1.2rem,3vw,1.7rem);font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--teal);margin-bottom:1.5rem}.notfound-page .nf-say{max-width:58ch;color:var(--muted);font-size:1.05rem;line-height:1.62;border-left:2px solid var(--teal);padding-left:1.1rem;margin-bottom:2.5rem}.notfound-page .nf-links{list-style:none;padding:0;display:flex;flex-direction:column;gap:.9rem;font-family:var(--mono);font-size:.9rem}.notfound-page .nf-links a{color:var(--ink)}.notfound-page .nf-links a .tilde{color:var(--teal)}.notfound-page .nf-links .note{color:var(--muted);margin-left:.5rem}
