@font-face{font-family:"source serif 4";src:url(/fonts/SourceSerif4-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"source serif 4";src:url(/fonts/SourceSerif4-It.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:"source serif 4";src:url(/fonts/SourceSerif4-Semibold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"source serif 4";src:url(/fonts/SourceSerif4-SemiboldIt.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}:root{--serif:"Source Serif 4", Charter, "Bitstream Charter", Cambria, Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
          "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
          "Liberation Mono", monospace;--measure:40rem;--margin-col:16rem;--gap:2rem;--shift:18rem;--page:62rem;--bg:#fffffa;--bg-sunk:#f6f4ee;--ink:#16161a;--ink-muted:#6a665e;--ink-faint:#8e8a80;--rule:#e2ded4;--link:#1c5c8c;--link-visited:#5a4b7c;--accent:#9a3b2e;--c-comment:#8a8578;--c-keyword:#5558a0;--c-string:#64733f;--c-number:#97572f;--c-func:#37656f;--c-type:#74568a;--c-punct:#75716a;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15161a;--bg-sunk:#1c1e23;--ink:#dcd8d0;--ink-muted:#979289;--ink-faint:#75716a;--rule:#2b2d33;--link:#83b4d8;--link-visited:#b0a0cd;--accent:#d98b7c;--c-comment:#6e6961;--c-keyword:#a3a7ea;--c-string:#a9bd7e;--c-number:#d59c74;--c-func:#81bac6;--c-type:#bea2d2;--c-punct:#8b877f;color-scheme:dark}}:root[data-theme=dark]{--bg:#15161a;--bg-sunk:#1c1e23;--ink:#dcd8d0;--ink-muted:#979289;--ink-faint:#75716a;--rule:#2b2d33;--link:#83b4d8;--link-visited:#b0a0cd;--accent:#d98b7c;--c-comment:#6e6961;--c-keyword:#a3a7ea;--c-string:#a9bd7e;--c-number:#d59c74;--c-func:#81bac6;--c-type:#bea2d2;--c-punct:#8b877f;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:1.1875rem;line-height:1.7;font-kerning:normal;font-variant-ligatures:common-ligatures contextual;text-rendering:optimizeLegibility;counter-reset:sidenote-counter;-webkit-font-smoothing:antialiased}::selection{background:color-mix(in srgb,var(--link) 22%,transparent)}a{color:var(--link);text-decoration:underline;text-decoration-thickness:.055em;text-underline-offset:.16em;text-decoration-color:color-mix(in srgb,var(--link) 40%,transparent)}a:hover{text-decoration-color:initial}a:visited{color:var(--link-visited)}:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}hr{border:0;border-top:1px solid var(--rule);margin:3rem 0}main.page{flex:1 0 auto;padding-top:2rem}.page{width:100%;max-width:var(--page);margin:0 auto;padding:0 1.5rem}.prose>*,.masthead>*,.colophon>*{max-width:var(--measure)}.masthead{padding-block:2.5rem 0}.masthead-inner{max-width:var(--measure);display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.site-title{font-size:1rem;font-weight:600;letter-spacing:.01em;margin:0;margin-right:auto}.site-title a{color:var(--ink);text-decoration:none}.site-title a:hover{text-decoration:underline}.nav{display:flex;gap:1.25rem;font-family:var(--sans);font-size:.8125rem;letter-spacing:.02em}.nav a{color:var(--ink-muted);text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--ink);text-decoration:underline}.theme-toggle{background:0 0;border:0;padding:0;cursor:pointer;color:var(--ink-faint);display:inline-flex;align-items:center;line-height:1}.theme-toggle svg{display:block;width:13px;height:13px}.theme-toggle:hover{color:var(--ink)}h1,h2,h3,h4{font-weight:600;line-height:1.25;letter-spacing:-.006em;margin:0 0 .6rem;text-wrap:balance}.title{font-size:2.1rem;line-height:1.18;margin-top:1rem;letter-spacing:-.015em}.subtitle{font-size:1.25rem;font-style:italic;font-weight:400;color:var(--ink-muted);margin:0 0 .75rem;line-height:1.4}.prose h2{font-size:1.45rem;margin-top:2.75rem}.prose h3{font-size:1.15rem;margin-top:2rem}.prose h4{font-size:1rem;margin-top:1.75rem;font-variant-caps:all-small-caps;letter-spacing:.05em;color:var(--ink-muted)}.prose p{margin:0 0 1.15rem}.prose>p:first-of-type{margin-top:0}.newthought{font-variant-caps:small-caps;font-weight:600;letter-spacing:.03em}.prose ul,.prose ol{margin:0 0 1.15rem;padding-left:1.4rem}.prose li{margin-bottom:.3rem}.prose li::marker{color:var(--ink-faint)}blockquote{margin:1.6rem 0;padding-left:1.25rem;border-left:2px solid var(--rule);color:var(--ink-muted);font-style:italic}blockquote p:last-child{margin-bottom:0}blockquote cite{display:block;margin-top:.5rem;font-style:normal;font-size:.85em;font-family:var(--sans)}abbr{text-decoration:none;font-variant-caps:all-small-caps;letter-spacing:.04em}input.margin-toggle{display:none}.sidenote-number{counter-increment:sidenote-counter;cursor:pointer}.sidenote-number::after{content:counter(sidenote-counter);font-family:var(--sans);font-size:.62rem;font-weight:500;top:-.55em;left:.06em;position:relative;color:var(--accent);vertical-align:baseline}.sidenote,.marginnote{float:right;clear:right;width:var(--margin-col);margin-right:calc(-1 * var(--shift));margin-top:.35rem;margin-bottom:1.2rem;font-size:.875rem;line-height:1.5;color:var(--ink-muted);position:relative;vertical-align:baseline}.sidenote::before{content:counter(sidenote-counter)" ";font-family:var(--sans);font-size:.62rem;font-weight:500;color:var(--accent);position:relative;top:-.5em}.sidenote p,.marginnote p{margin:0 0 .5rem}.sidenote p:last-child,.marginnote p:last-child{margin-bottom:0}.sidenote code,.marginnote code{font-size:.85em}label.margin-toggle:not(.sidenote-number){display:none}figure{margin:1.9rem 0;max-width:var(--measure)}figure img,figure svg,figure video{display:block;max-width:100%;height:auto;border-radius:2px}figure img,figure video{background:var(--bg-sunk)}figure svg{color:var(--ink)}figcaption{margin-top:.6rem;font-size:.8125rem;line-height:1.5;color:var(--ink-muted);font-family:var(--sans);max-width:34rem}figcaption .figure-label{color:var(--ink-faint);font-variant-caps:all-small-caps;letter-spacing:.06em;margin-right:.35em}figure.wide{max-width:calc(var(--measure) + var(--shift));width:calc(var(--measure) + var(--shift))}figure.margin{float:right;clear:right;width:var(--margin-col);max-width:var(--margin-col);margin-right:calc(-1 * var(--shift));margin-top:.35rem;margin-bottom:1.2rem}figure.margin figcaption{font-size:.75rem;margin-top:.4rem}figure.full{max-width:none;width:100%}figure.full figcaption{max-width:var(--measure)}.video-shell{position:relative;background:var(--bg-sunk);border-radius:2px;overflow:hidden}.video-shell video{width:100%;display:block}code,kbd,samp,pre{font-family:var(--mono);font-variant-ligatures:none}:not(pre)>code{font-size:.845em;background:var(--bg-sunk);padding:.12em .34em;border-radius:3px;border:1px solid color-mix(in srgb,var(--rule) 60%,transparent);word-break:break-word}.highlight{margin:1.6rem 0;max-width:calc(var(--measure) + var(--shift));width:calc(var(--measure) + var(--shift));background:var(--bg-sunk);border:1px solid var(--rule);border-radius:3px;overflow:hidden}.highlight pre{margin:0;padding:.9rem 1rem;overflow-x:auto;font-size:.8125rem;line-height:1.62;background:0 0;tab-size:2}.highlight pre code{background:0 0;border:0;padding:0;font-size:inherit}.highlight .lntable{border-spacing:0;width:100%;display:block;overflow-x:auto}.highlight .lntable td,.highlight .lntable th{padding:0;border:0;vertical-align:top}.highlight .lntable td:first-child{width:1%}.highlight .lntable pre{overflow:visible}.highlight .lnt,.highlight .ln{color:var(--ink-faint);user-select:none;-webkit-user-select:none;padding-right:.9rem;opacity:.65}.highlight .hl{background:color-mix(in srgb,var(--accent) 12%,transparent);display:block;margin:0 -1rem;padding:0 1rem}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--c-comment);font-style:italic}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--c-keyword)}.chroma .kt{color:var(--c-type)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--c-string)}.chroma .se{color:var(--c-number)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--c-number)}.chroma .nf,.chroma .fm{color:var(--c-func)}.chroma .nc,.chroma .nn,.chroma .ne,.chroma .no,.chroma .nt{color:var(--c-type)}.chroma .nd,.chroma .nb,.chroma .bp{color:var(--c-func)}.chroma .na,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .py,.chroma .nl{color:var(--ink)}.chroma .o,.chroma .ow{color:var(--c-punct)}.chroma .p{color:var(--c-punct)}.chroma .err{color:var(--accent)}.chroma .gd{color:var(--accent)}.chroma .gi{color:var(--c-string)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:600}.table-scroll table{border-collapse:collapse;margin:1.7rem 0;font-size:.875rem;font-variant-numeric:tabular-nums lining-nums;width:auto;max-width:100%}.table-scroll{overflow-x:auto;max-width:calc(var(--measure) + var(--shift))}.table-scroll th,.table-scroll td{padding:.4rem 1rem .4rem 0;text-align:left;border-bottom:1px solid var(--rule)}.table-scroll th{font-weight:600;font-family:var(--sans);font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-muted);border-bottom-color:var(--ink-faint)}.table-scroll tbody tr:last-child td{border-bottom:0}math{font-size:1.02em}.math-block,mjx-container[display=true]{display:block;overflow-x:auto;overflow-y:hidden;margin:1.4rem 0;text-align:center}.post-list{list-style:none;padding:0;margin:2rem 0 0;max-width:var(--measure)}.post-list li{margin-bottom:1.9rem}.post-list h2{font-size:1.2rem;margin:0 0 .15rem}.post-list h2 a{color:var(--ink);text-decoration:none}.post-list h2 a:hover{text-decoration:underline;text-decoration-color:var(--rule)}.post-list .dek{margin:.15rem 0 0;color:var(--ink-muted);font-size:.95rem}.meta{font-family:var(--sans);font-size:.75rem;letter-spacing:.04em;color:var(--ink-faint);text-transform:uppercase}.byline{margin:0 0 2.25rem;padding-bottom:0;font-family:var(--sans);font-size:.78rem;letter-spacing:.03em;color:var(--ink-faint)}.colophon{margin-top:5rem;padding-block:1.25rem 3rem;font-family:var(--sans);font-size:.78rem;color:var(--ink-faint)}.colophon-inner{max-width:var(--measure);border-top:1px solid var(--rule);padding-top:1.25rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem}.colophon a{color:var(--ink-muted)}@media(max-width:1080px){:root{--page:var(--measure)}.sidenote,.marginnote,figure.margin{display:none}label.margin-toggle:not(.sidenote-number){display:inline;cursor:pointer;color:var(--accent)}.margin-toggle:checked+.sidenote,.margin-toggle:checked+.marginnote,.margin-toggle:checked+figure.margin{display:block;float:none;width:auto;max-width:100%;margin:.9rem 0;padding:.75rem .9rem;background:var(--bg-sunk);border-left:2px solid var(--rule);border-radius:0 2px 2px 0;position:relative}.highlight,figure.wide,.table-scroll{max-width:100%;width:100%}}@media(max-width:640px){body{font-size:1.0625rem;line-height:1.65}.page{padding:0 1.1rem}main.page{padding-top:1.25rem}.title{font-size:1.7rem;margin-top:.5rem}.subtitle{font-size:1.1rem}.prose h2{font-size:1.3rem}.highlight pre{font-size:.75rem;padding:.75rem .8rem}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{:root{--bg:#fff;--ink:#000}.masthead,.colophon,.theme-toggle{display:none}.sidenote,.marginnote{display:block;float:none;width:auto;margin:.8rem 0;font-size:.8rem}.highlight{break-inside:avoid}figure{break-inside:avoid}a::after{content:" (" attr(href)")";font-size:.75em;color:#555}}.skip-link{position:absolute;left:-9999px;top:0;background:var(--bg);padding:.6rem 1rem;z-index:10}.skip-link:focus{left:.5rem;top:.5rem}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}