@font-face{font-family:tx-02;font-weight:400;font-display:swap;src:url(/fonts/TX-02-Condensed.woff2)format("woff2")}@font-face{font-family:tx-02;font-weight:600;font-display:swap;src:url(/fonts/TX-02-SemiBold-Condensed.woff2)format("woff2")}@font-face{font-family:public sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/public-sans-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:public sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/public-sans-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:public sans;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/public-sans-latin-ext-wght-italic.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:public sans;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/public-sans-latin-wght-italic.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground:#15151d;--ink:#dcdee9;--ink-2:#a2a6b9;--ink-3:#8c90a3;--rule:#3b3c4b;--well:#1b1b25;--signal:#f7646b;--dot:rgb(220 222 233 / 0.08);--code-str:#c3c7d8;--mono:"TX-02", ui-monospace, "SF Mono", Menlo, monospace;--sans:"Public Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;--cw:1ch;--ch:1.625rem;--gap:2ch;--sheet:min(100% - 4ch, 150ch);color-scheme:dark}:root[data-theme=light]{--ground:#eef0f4;--ink:#22232f;--ink-2:#575a6e;--ink-3:#666a7e;--rule:#c5c8d3;--well:#e2e5ec;--signal:#c93f4a;--dot:rgb(34 35 47 / 0.1);--code-str:#3d4052;color-scheme:light}*,*::before,*::after{box-sizing:border-box}html{background:var(--ground);color:var(--ink);font-family:var(--mono);font-size:16px;line-height:var(--ch);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;scrollbar-color:var(--rule)var(--ground)}body{margin:0;font-feature-settings:"zero","ss01";font-variant-numeric:tabular-nums}::selection{background:var(--signal);color:var(--ground)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{color:var(--signal)}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,ul,dl,figure{margin:0}ul{padding:0;list-style:none}.red{color:var(--signal)}.skip{position:absolute;left:-999px;top:0;padding:0 2ch;background:var(--signal);color:var(--ground);z-index:10}.skip:focus{left:0}.sheet{width:var(--sheet);margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background-image:radial-gradient(circle at 0 0,var(--dot) 1px,transparent 1.5px);background-size:calc(var(--cw) * 2)var(--ch)}.main{flex:1}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:4ch;min-height:calc(var(--ch) * 3);border-bottom:1px solid var(--rule)}.prompt{position:relative;display:flex;align-items:center;min-width:0;font-size:1.125rem;font-weight:600}.ps1{white-space:nowrap}.ps1 .home{text-decoration:none}.ps1 .sub{color:var(--signal)}.dollar{margin:0 .5ch;color:var(--ink-2)}.field{display:inline-flex;align-items:center;min-width:0}.prompt input{min-width:.5ch;max-width:28ch;background:0 0;border:0;padding:0;color:var(--ink);caret-color:var(--signal);font:inherit;font-weight:400}.prompt input:focus-visible{outline:none}.prompt:focus-within{box-shadow:0 2px 0 var(--signal)}.cursor{display:inline-block;width:.6em;height:1.1em;background:var(--signal);animation:blink 1.1s steps(1)infinite}.prompt:focus-within .cursor{display:none}@keyframes blink{50%{opacity:0}}.cmd-out{position:absolute;left:0;top:calc(100% + var(--ch)/2);z-index:5;min-width:100%;max-width:min(80ch,90vw);padding:calc(var(--ch)/4)1.5ch;background:var(--well);border:1px solid var(--rule);color:var(--ink-2);font-weight:400;font-size:1rem;white-space:normal}.cmd-out:empty{display:none}.cmd-out.is-error{color:var(--signal)}.paths{display:flex;flex-wrap:wrap;column-gap:3ch}.paths a{color:var(--ink-2);text-decoration:none;padding:calc(var(--ch)/2)0;border-bottom:2px solid transparent}.paths a:hover{color:var(--ink)}.paths a[aria-current=page]{color:var(--ink);border-bottom-color:var(--signal)}.theme-switch{padding:calc(var(--ch)/2)0;background:0 0;border:0;color:var(--ink-2);font:inherit;cursor:pointer}.theme-switch:hover{color:var(--signal)}.theme-switch .tilde{margin-right:.5ch}.plate-light,:root[data-theme=light] .plate-dark{display:none}:root[data-theme=light] .plate-light{display:block}.tilde{color:var(--ink-3)}.intro{margin-top:calc(var(--ch) * 3);row-gap:var(--ch)}.name{grid-column:1/9;grid-row:1;font-size:6.5rem;line-height:calc(var(--ch) * 4);font-weight:600;letter-spacing:-.035em;margin-left:-.06em}.name.is-page{grid-column:1/13}.role{grid-column:1/6;grid-row:2}.role-title{font-size:1.25rem;font-weight:600;margin-bottom:calc(var(--ch)/2)}.role-line{font-family:var(--sans);max-width:52ch;color:var(--ink-2);font-size:1.125rem;text-wrap:pretty}.is-plate .plate{grid-column:1/9;grid-row:1;position:relative;z-index:1;align-self:start;margin:0}.plate img{position:relative;width:100%}.arc{position:absolute;right:calc((var(--gap) + var(--ch) * 1.5) * -1);top:calc(var(--ch) * -1.5);width:calc(var(--ch) * 4);aspect-ratio:1;background:var(--signal);border-top-right-radius:100%}.portrait{grid-column:9/13;grid-row:1/3;height:calc(var(--ch) * 13)}.fragment{width:100%;height:100%;object-fit:cover;object-position:50% 18%}.is-plate .role{grid-column:1/8;grid-row:2;margin-top:var(--ch)}.role-act{display:flex;flex-wrap:wrap;align-items:center;column-gap:3ch;margin-top:calc(var(--ch) * 1.5)}.role-act a{color:var(--ink-2)}.role-act a:hover{color:var(--signal)}.role-act .primary{display:inline-block;padding:calc(var(--ch)/4)2ch;background:var(--signal);color:var(--ground);font-weight:600;text-decoration:none}.role-act .primary:hover{background:var(--ink);color:var(--ground)}@media(prefers-reduced-motion:no-preference){.plate .arc{animation:arc-in 480ms steps(6)200ms both}.cells i{animation:fill 360ms steps(12)600ms both}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}@keyframes fill{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}@keyframes arc-in{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}.block{margin-top:calc(var(--ch) * 4)}.cmd{font-size:1.25rem;line-height:calc(var(--ch) * 2);font-weight:600;border-bottom:2px solid var(--ink)}.ps{color:var(--ink-3);margin-right:1ch}.ls-row{border-bottom:1px solid var(--rule)}.ls-row a{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:center;min-height:calc(var(--ch) * 3);padding:calc(var(--ch)/2)0;text-decoration:none}.ls-row a:hover{color:inherit;background:var(--well)}.ls-row a:hover .ls-name,.ls-row a:hover .ls-title,.ls-row a:hover .ls-go{color:var(--signal)}.ls-icon{grid-column:1}.ls-icon img{width:2.5rem;height:2.5rem}.ls-name{grid-column:2/4;font-size:1.25rem;font-weight:600}.ls-desc{font-family:var(--sans);grid-column:4/9;color:var(--ink-2);text-wrap:pretty}.ls-meta{grid-column:9/11;display:flex;flex-direction:column;color:var(--ink-2)}.ls-go{grid-column:11/13;justify-self:end;text-align:right}.arrow{width:.7em;height:.7em;margin-left:.5ch;fill:none;stroke:currentColor;stroke-width:1.4}.cells{display:flex;gap:2px;height:calc(var(--ch) * .5);margin-bottom:calc(var(--ch) * .25)}.cells i{width:var(--cw);background:var(--ink)}.cells i.e{background:0 0;border:1px solid var(--rule)}.ls-date{grid-column:1/3;color:var(--ink-2)}.ls-title{grid-column:3/11;font-size:1.125rem;text-wrap:pretty}.ls-time{grid-column:11/13;justify-self:end;color:var(--ink-2)}.is-post a{min-height:calc(var(--ch) * 2)}.more{margin-top:var(--ch)}.more a::before{content:"$ ";color:var(--ink-3)}.yearbars{grid-column:9/13;grid-row:1/3;align-self:end;display:grid;row-gap:calc(var(--ch)/2)}.yb{display:grid;grid-template-columns:1fr auto;column-gap:2ch;align-items:center}.yb-cells{display:flex;gap:2px;height:var(--ch)}.yb-cells i{flex:1;background:var(--ink)}.yb-cells i.e{background:0 0;border:1px solid var(--rule)}.yb-label{color:var(--ink-2)}.year{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);border-bottom:1px solid var(--ink)}.year-key{grid-column:1/3;font-size:1.5rem;line-height:calc(var(--ch) * 2);font-weight:600;padding-top:calc(var(--ch)/4)}.year .ls{grid-column:3/13}.year .ls-row:last-child{border-bottom:0}.year .ls-row a{grid-template-columns:repeat(10,minmax(0,1fr))}.year .ls-date{grid-column:1/3}.year .ls-title{grid-column:3/9}.year .ls-time{grid-column:9/11}.is-page-head .name,.is-list .name{font-size:4.5rem;line-height:calc(var(--ch) * 3)}.page-meta{grid-column:1/13;color:var(--ink-2)}.page>.grid:last-child,.post-body{margin-top:calc(var(--ch) * 2)}.prose,.role-line,.ls-desc{font-feature-settings:normal;font-variant-numeric:normal}.prose{grid-column:4/10;font-family:var(--sans);font-size:1.0625rem;line-height:var(--ch);font-variant-numeric:normal}.prose>*+*{margin-top:var(--ch)}.prose p,.prose li{text-wrap:pretty}.prose h2,.prose h3,.prose h4{font-family:var(--mono);font-weight:600;margin-top:calc(var(--ch) * 2)}.prose h2{font-size:1.25rem}.prose h3,.prose h4{font-size:1.0625rem}.prose h2:not(.job-co)::before{content:"## ";color:var(--ink-3)}.prose h3::before{content:"### ";color:var(--ink-3)}.prose ul,.prose ol{padding-left:3ch}.prose ul{list-style:none}.prose ul>li{position:relative}.prose ul>li::before{content:"–";position:absolute;left:-2.5ch;color:var(--ink-3);font-family:var(--mono)}.prose li+li{margin-top:calc(var(--ch)/2)}.prose strong{font-weight:700}.prose a{text-decoration-color:var(--ink-3)}.prose a:hover{text-decoration-color:var(--signal)}.prose code{font-family:var(--mono);font-size:.94em;background:var(--well);border:1px solid var(--rule);padding:0 .4ch}.prose pre{overflow-x:auto;tab-size:4;padding:var(--ch)2ch;background:var(--well);border:1px solid var(--rule);font-size:.9375rem;line-height:var(--ch)}.prose pre code{background:0 0;border:0;padding:0;font-size:inherit}.prose img{border:1px solid var(--rule)}.prose .cover{width:100%;margin-bottom:calc(var(--ch) * 2)}.prose blockquote{margin:var(--ch)0;padding-left:3ch;color:var(--ink-2)}.prose hr{border:0;border-top:1px solid var(--rule)}.prose table{border-collapse:collapse;font-family:var(--mono)}.prose th,.prose td{border-bottom:1px solid var(--rule);padding:0 2ch 0 0;text-align:left}.post-head{margin-top:calc(var(--ch) * 2)}.post-title{grid-column:1/11;margin-top:var(--ch);font-size:3rem;line-height:calc(var(--ch) * 2);font-weight:600;letter-spacing:-.025em;text-wrap:balance}.post-meta{grid-column:1/4;align-self:start;position:sticky;top:var(--ch);border-top:2px solid var(--ink)}.post-meta>div{display:flex;justify-content:space-between;border-bottom:1px solid var(--rule);padding:calc(var(--ch)/4)0}.post-meta dt{color:var(--ink-2)}.post-meta dd{margin:0;text-align:right}.post-nav{margin-top:calc(var(--ch) * 4)}.pn{grid-column:span 6;display:grid;border-top:2px solid var(--ink);padding-top:calc(var(--ch)/2);text-decoration:none}.pn-k{color:var(--ink-2)}.pn-k::before{content:"$ cd ../";color:var(--ink-3)}.pn-t{font-size:1.25rem;font-weight:600}.pn:hover .pn-t{color:var(--signal)}.prose .job{font-family:var(--mono);border-top:2px solid var(--ink);padding-top:calc(var(--ch)/2)}.prose>.job{margin-top:calc(var(--ch) * 2)}.job-dates{color:var(--ink-2)}.prose .job-co{margin-top:0}.job-role{color:var(--ink-2)}.job-body{margin-top:calc(var(--ch)/2);font-family:var(--sans)}.foot{margin-top:calc(var(--ch) * 5);padding:var(--ch)0 calc(var(--ch) * 2);border-top:2px solid var(--ink)}.commands{display:flex;flex-wrap:wrap;column-gap:3ch}.commands a{color:var(--ink-2)}.commands a:hover{color:var(--signal)}.colophon{margin-top:calc(var(--ch) * 2);color:var(--ink-3)}kbd{font-family:var(--mono);border:1px solid var(--rule);padding:0 .5ch}.chroma .c,.chroma .c1,.chroma .ch,.chroma .cm,.chroma .cp,.chroma .cs{color:var(--ink-3);font-style:italic}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .nt{color:var(--ink);font-weight:600}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .sd,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .ss,.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh{color:var(--code-str)}.chroma .nb,.chroma .nv,.chroma .na,.chroma .nf,.chroma .nx{color:var(--ink);font-weight:600}.chroma .p,.chroma .o{color:var(--ink-2)}@media(max-width:1080px){.name{font-size:4.75rem;line-height:calc(var(--ch) * 3)}.is-page-head .name,.is-list .name{font-size:3.5rem;line-height:calc(var(--ch) * 2.5)}.name{grid-column:1/10}.is-plate .plate{grid-column:1/10}.portrait{grid-column:10/13;grid-row:1/3;height:calc(var(--ch) * 9)}.is-plate .role{grid-column:1/10}.ls-name{grid-column:2/5}.ls-desc{grid-column:5/10}.ls-meta{grid-column:10/13;grid-row:1}.ls-go{grid-column:5/13;justify-self:start;text-align:left;color:var(--ink-2)}.prose{grid-column:1/10}.post-meta{grid-column:10/13;grid-row:1}}@media(max-width:720px){:root{--gap:1ch;--sheet:calc(100% - 4ch)}.bar{padding:calc(var(--ch)/2)0}.intro{margin-top:calc(var(--ch) * 2)}.name,.name.is-page,.is-page-head .name{grid-column:1/13;font-size:clamp(2.5rem,12vw,3rem);line-height:calc(var(--ch) * 2)}.is-plate .plate{grid-column:1/13;grid-row:1;margin-right:calc(var(--ch) * .75)}.arc{right:calc(var(--ch) * -.75);top:calc(var(--ch) * -.75);width:calc(var(--ch) * 2)}.portrait{grid-column:1/5;grid-row:2;height:calc(var(--ch) * 5)}.is-plate .role{grid-column:5/13;grid-row:2;margin-top:0}.role-title{font-size:1.0625rem;line-height:var(--ch);margin-bottom:calc(var(--ch)/2)}.role-line{font-size:1rem}.yearbars{grid-column:1/13;grid-row:3}.ls-row a{grid-template-columns:2.5rem 1fr;column-gap:2ch;row-gap:calc(var(--ch)/4)}.ls-icon{grid-column:1;grid-row:1/3;align-self:start}.ls-name,.ls-desc,.ls-meta,.ls-go{grid-column:2;grid-row:auto;justify-self:start;text-align:left}.is-post a,.year .ls-row a{grid-template-columns:1fr auto}.ls-date,.year .ls-date{grid-column:1;grid-row:1}.ls-time,.year .ls-time{grid-column:2;grid-row:1}.ls-title,.year .ls-title{grid-column:1/3;grid-row:2}.year-key,.year .ls{grid-column:1/13}.prose,.post-meta,.post-title,.pn{grid-column:1/13}.post-title{font-size:1.75rem;line-height:calc(var(--ch) * 1.5)}.post-meta{grid-row:2;position:static;margin-bottom:calc(var(--ch) * 2)}.prompt{font-size:1rem}.bar{position:relative}.paths{column-gap:2.5ch}.theme-switch{position:absolute;right:0;top:calc(var(--ch)/2)}.theme-switch{padding:0}}