@font-face{font-family:Archivo;font-style:normal;font-weight:400 900;font-display:swap;src:url("../fonts/archivo-latin-variable.woff2") format("woff2")}:root{color-scheme:light;--color-canvas: #fafafa;--color-surface: #ffffff;--color-soft: #f0f0f0;--color-ink: #202020;--color-muted: #5e5e5e;--color-accent: #1d5fd0;--color-accent-strong: #164ba8;--color-on-accent: #ffffff;--color-line: #d4d4d4;--color-shadow: rgb(0 0 0 / 8%);--site-width: 70rem;font-size:16px}:root[data-theme=dark]{color-scheme:dark;--color-canvas: #171717;--color-surface: #202020;--color-soft: #2b2b2b;--color-ink: #f2f2f2;--color-muted: #b3b3b3;--color-accent: #8cbcff;--color-accent-strong: #bdd8ff;--color-on-accent: #171717;--color-line: #454545;--color-shadow: rgb(0 0 0 / 20%)}@media(prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark;--color-canvas: #171717;--color-surface: #202020;--color-soft: #2b2b2b;--color-ink: #f2f2f2;--color-muted: #b3b3b3;--color-accent: #8cbcff;--color-accent-strong: #bdd8ff;--color-on-accent: #171717;--color-line: #454545;--color-shadow: rgb(0 0 0 / 20%)}}*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--color-canvas);color:var(--color-ink);font-family:Archivo,system-ui,sans-serif;font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}img,svg{max-width:100%}img{display:block;height:auto}a{color:var(--color-accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--color-accent-strong)}:is(a,button,input,select,summary):focus-visible{outline:3px solid var(--color-accent-strong);outline-offset:4px}button,input,select{font:inherit}button,select,summary{cursor:pointer}button,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:1rem;min-height:2.75rem;padding:.65rem 1.15rem;border:1px solid var(--color-accent);border-radius:.4rem;background:var(--color-accent);color:var(--color-on-accent);font-size:.9375rem;font-weight:600;text-decoration:none}button:hover,.button-link:hover{background:var(--color-accent-strong);border-color:var(--color-accent-strong);color:var(--color-on-accent)}input,select{max-width:100%;min-height:2.75rem;padding:.5rem .7rem;border:1px solid var(--color-muted);border-radius:.35rem;background:var(--color-surface);color:var(--color-ink)}input::placeholder{color:var(--color-muted);opacity:1}::selection{background:var(--color-accent);color:var(--color-on-accent)}h1,h2,h3,h4{margin:0 0 1rem;color:var(--color-ink);font-weight:700;line-height:1.15;letter-spacing:-0.025em;overflow-wrap:break-word;scroll-margin-top:8rem}h1{font-size:clamp(2.5rem,5vw,4rem)}h2{font-size:clamp(1.5rem,3vw,2rem)}h3{font-size:1.3rem}p{margin:0 0 1.2rem}[hidden]{display:none !important}.small{font-size:.8125rem}.text-muted,.empty-note{color:var(--color-muted)}.skip-link{position:fixed;z-index:100;inset:.5rem auto auto .5rem;padding:.5rem 1rem;transform:translateY(-200%);background:var(--color-surface);color:var(--color-accent-strong)}.skip-link:focus{transform:none}.site-header{position:sticky;z-index:10;top:0;border-bottom:1px solid var(--color-line);background:var(--color-canvas)}.header-inner,.site-main,.footer-inner{width:min(var(--site-width),100% - 4rem);margin-inline:auto}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:5.5rem}.wordmark{display:inline-flex;align-items:center;gap:.65rem;color:var(--color-ink);font-size:.9375rem;font-weight:650;text-decoration:none;white-space:nowrap}.site-nav{display:flex;align-items:center;gap:1.75rem}.site-nav a{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding-block:.7rem;color:var(--color-muted);font-size:.875rem;font-weight:550;text-decoration:none}.site-nav a:hover,.site-nav a.is-active{color:var(--color-accent-strong)}.site-nav a.is-active::after{content:"";position:absolute;inset:auto 0 .25rem;height:2px;border-radius:1px;background:var(--color-accent)}.theme-control{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-muted)}.theme-control select{min-width:2.75rem;min-height:2.75rem;padding:.3rem .45rem;font-size:.8125rem}.theme-status{width:min(var(--site-width),100% - 4rem);margin:0 auto;font-size:.8125rem}.theme-status:not(:empty){padding-bottom:.75rem}.site-main{min-height:calc(100vh - 14rem);scroll-margin-top:8rem}.hero{display:grid;grid-template-columns:minmax(0, 1fr) 13.5rem;align-items:center;gap:clamp(3rem,9vw,7rem);padding-block:clamp(3rem,6vw,5rem)}.hero h1{max-inline-size:9.5ch;margin-bottom:1.5rem;font-size:clamp(3.75rem,8.5vw,6rem);font-weight:800;line-height:1.02;letter-spacing:-0.04em}.hero-summary{max-width:34rem;font-size:clamp(1.05rem,1.8vw,1.25rem);line-height:1.55}.hero-summary p:last-child{color:var(--color-muted);font-size:.9375rem}.social-links{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.social-links a{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;color:var(--color-muted);font-size:1.3rem;text-decoration:none}.social-links a:hover{color:var(--color-accent-strong)}.hero-portrait{width:100%;aspect-ratio:1;object-fit:cover;border:2px solid var(--color-accent);border-radius:50%;margin:0}.writing-section{padding-top:2.5rem;border-top:1px solid var(--color-line)}.section-heading,.activity-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem;margin-bottom:1.5rem}.section-heading h2,.activity-heading h2{margin:0}.section-heading>a,.activity-heading>a{font-size:.875rem}.empty-note{padding-block:.4rem 1rem;font-size:.9375rem}.post-summary{padding-block:1.5rem;border-bottom:1px solid var(--color-line)}.post-summary:first-child{padding-top:0}.post-summary>p{max-width:68ch;margin-top:.65rem;color:var(--color-muted);font-size:.9375rem}.post-summary-meta,.post-byline{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 1.25rem;margin-bottom:.65rem;color:var(--color-muted);font-size:.8125rem}.post-preview{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;color:var(--color-ink);text-decoration:none}.post-preview h2,.post-preview h3{margin:0;color:inherit;font-size:1.4rem;font-weight:650}.post-arrow{flex-shrink:0;color:var(--color-accent)}.post-topics,.browse-links{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 1rem;margin:0;padding:0;list-style:none;font-size:.8125rem}.inner-page{padding-top:3.5rem}.page-heading{max-width:48rem;margin-bottom:3rem}.page-heading>p{color:var(--color-muted);font-size:1.0625rem}.blog-heading>p{max-width:65ch}.back-link{display:inline-block;margin-bottom:1.5rem;font-size:.875rem}.page-article{max-width:48rem}.prose{max-width:68ch;overflow-wrap:break-word;line-height:1.75}.prose h2,.prose h3,.prose h4{margin-top:2.25rem}.prose ul,.prose ol{padding-inline-start:1.5rem;margin-block:0 1.5rem}.prose li+li{margin-top:.3rem}.prose img{margin-block:1.5rem}.prose blockquote{margin:1.75rem 0;padding:1rem 1.25rem;background:var(--color-soft);color:var(--color-muted)}.prose blockquote p:last-child{margin-bottom:0}.prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:.875rem}.prose :is(th,td){padding:.5rem .75rem;border-bottom:1px solid var(--color-line);text-align:start}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.875em}:not(pre)>code{padding:.12rem .3rem;border-radius:.2rem;background:var(--color-soft)}pre{max-width:100%;margin:1.5rem 0;padding:1.1rem 1.25rem;overflow-x:auto;border:1px solid var(--color-line);background:var(--color-soft);color:var(--color-ink);line-height:1.6}pre code{font-size:inherit}.highlight .c,.highlight .c1,.highlight .cm,.highlight .cp,.highlight .cs{color:var(--color-muted)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kt,.highlight .s,.highlight .s1,.highlight .s2,.highlight .nt{color:var(--color-accent-strong)}.highlight .lineno{color:var(--color-muted);padding-right:1rem}.highlight .rouge-table{border:0;margin:0}.highlight .rouge-table td{border:0;padding:0}.highlight .rouge-table pre{margin:0;padding:0;border:0}.article-layout{display:grid;grid-template-columns:minmax(0, 68ch) minmax(10rem, 1fr);gap:3rem}.article-aside{min-width:0}#post-toc{position:sticky;top:7rem;font-size:.8125rem}#post-toc ul,#post-toc ol{padding-inline-start:1rem}#post-toc a{color:var(--color-muted)}#post-toc a:hover{color:var(--color-accent)}.post-end-topics{margin-top:2rem}.draft-label,.post-pin{color:var(--color-accent-strong)}.post-neighbors{display:flex;justify-content:space-between;gap:2rem;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--color-line)}.post-neighbors a{max-width:45%}.post-neighbors span{display:block;color:var(--color-muted);font-size:.75rem}.taxonomy-list,.search-results{margin:0;padding:0;list-style:none}.taxonomy-list{max-width:48rem}.taxonomy-list a{display:flex;justify-content:space-between;gap:1rem;padding-block:1rem;border-bottom:1px solid var(--color-line);text-decoration:none}.taxonomy-count{color:var(--color-muted);font-variant-numeric:tabular-nums}.search-form label{display:block;margin-bottom:.5rem;font-size:.875rem;font-weight:600}.search-fields{display:flex;gap:.75rem}.search-fields input{min-width:0;flex:1}.search-status{margin-top:1rem;color:var(--color-muted);font-size:.875rem}.search-results>li{padding-block:1.5rem;border-bottom:1px solid var(--color-line)}.search-results>li p{margin:.5rem 0 0;color:var(--color-muted)}.pagination{display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem;margin:2.5rem 0;padding:0;list-style:none}.pagination .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:2.5rem;min-height:2.5rem;border:1px solid var(--color-line);border-radius:.3rem;color:var(--color-ink);text-decoration:none;font-size:.875rem}.pagination .active .page-link{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-on-accent)}.pagination .page-link:hover{border-color:var(--color-accent-strong)}.pagination .disabled .page-link{color:var(--color-muted);pointer-events:none;opacity:.65}.pagination .page-index{display:none}.site-footer{margin-top:5rem;border-top:1px solid var(--color-line)}.footer-inner{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.75rem 2rem;padding-block:1.75rem;color:var(--color-muted);font-size:.75rem}.footer-inner p{margin:0}.footer-inner nav{display:flex;flex-wrap:wrap;gap:.75rem 2rem}.footer-inner .footer-link-group{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}.footer-inner a{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding-inline:.25rem;color:var(--color-muted)}.footer-inner a:hover{color:var(--color-accent)}@media(max-width: 52rem){.header-inner,.site-main,.footer-inner,.theme-status{width:calc(100% - 2.5rem)}.header-inner{display:grid;grid-template-columns:minmax(0, 1fr) auto;gap:.3rem 1rem;padding-block:.75rem}.site-nav{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:1rem}.theme-control{grid-column:2;grid-row:1}.article-layout{grid-template-columns:minmax(0, 1fr);gap:1.5rem}.article-aside{grid-row:1}#post-toc{position:static}.inner-page{padding-top:2.5rem}}@media(max-width: 40rem){body{font-size:1rem}.wordmark{font-size:.8125rem;gap:.45rem}.site-nav a{font-size:.8125rem}.hero{grid-template-columns:minmax(0, 1fr);gap:2rem;padding-block:2.75rem}.hero h1{font-size:clamp(3.4rem,14vw,5rem);max-width:100%}.hero-summary{max-width:36ch}.hero-portrait{width:7rem}.writing-section{padding-top:2rem}.page-heading{margin-bottom:2rem}.post-preview h2,.post-preview h3{font-size:1.2rem}.post-neighbors{flex-direction:column;gap:1.25rem}.post-neighbors a{max-width:100%}.pagination{gap:.25rem}}#github-activity{margin-top:3.5rem;padding-top:2.5rem;scroll-margin-top:8rem;border-top:1px solid var(--color-line)}#github-activity .activity-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:1rem}#github-activity .activity-heading h2{margin:0}#github-activity .activity-heading h2 i{margin-inline-end:.35rem}#github-activity .activity-view-all{display:inline-flex;align-items:center;min-width:2.75rem;min-height:2.75rem;font-size:.875rem}#github-activity .activity-view-all i{font-size:.75em;margin-inline-start:.25rem}#github-activity [data-activity-list]{margin:0;padding:0;list-style:none}#github-activity[aria-busy=true] [data-activity-list]{min-block-size:12rem}#github-activity[data-activity-state=success]:not([data-activity-partial=true]) [data-activity-status]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}#github-activity .activity-group{display:grid;grid-template-columns:1.5rem minmax(0, 1fr);gap:.875rem;padding-block:1rem}#github-activity .activity-group:not(:last-child){border-bottom:1px solid var(--color-line)}#github-activity .activity-icon{padding-top:.125rem;color:var(--color-accent);font-size:1.125rem;text-align:center}#github-activity .activity-body{min-width:0}#github-activity .activity-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}#github-activity a.activity-repo{display:inline-flex;align-items:center;min-width:2.75rem;min-height:2.75rem;padding-block:.375rem;overflow-wrap:anywhere;font-weight:600;border-bottom:0;text-decoration:none}#github-activity a.activity-repo:hover{text-decoration:underline;text-underline-offset:.15em}#github-activity .activity-date{flex-shrink:0;white-space:nowrap}#github-activity .activity-detail,#github-activity .activity-refs{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}#github-activity .activity-action{padding:.25rem .4rem;border-radius:.25rem;background-color:var(--color-soft);color:var(--color-ink);font-size:.75rem;font-weight:600;line-height:1.25}#github-activity a.activity-ref{display:inline-flex;align-items:center;min-width:2.75rem;min-height:2.75rem;max-width:100%;padding:.125rem .5rem;border:1px solid var(--color-line);border-radius:.3rem;background-color:var(--color-soft);color:var(--color-accent-strong);font-size:.875rem;line-height:1.25;overflow-wrap:anywhere;text-decoration:none}#github-activity a.activity-ref:hover{background-color:var(--color-surface);border-color:var(--color-accent-strong)}#github-activity .activity-note{margin-top:.75rem;margin-bottom:0}