@font-face{font-family:Commit Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/commit-mono-latin-400-normal.02gf5hbjowg_8.woff2)format("woff2"),url(../media/commit-mono-latin-400-normal.0c3jho6_v~fdf.woff)format("woff")}
@font-face{font-family:Commit Mono;font-style:normal;font-display:swap;font-weight:600;src:url(../media/commit-mono-latin-600-normal.12oo7fhx~tz7..woff2)format("woff2"),url(../media/commit-mono-latin-600-normal.060uwx_s9ft1b.woff)format("woff")}
@font-face{font-family:IBM Plex Sans;src:url(../media/IBMPlexSans-Variable.09.f.n_ccld80.woff2)format("woff2-variations");font-weight:400 600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(../media/IBMPlexSans-Italic-Variable.0g.3shamjvs-l.woff2)format("woff2-variations");font-weight:400 600;font-style:italic;font-display:swap}:root{--void:#0a0a0a;--panel:#0a0a0a;--text:#d4d4d4;--muted:#737373;--loud:#e5e7eb;--grid:#171717;--line:#171717;--subtle:#171717;--frame:#1f1f1f;--focus:#737373;--green:#0ae448;--light-green:#abff84;--grad-green:linear-gradient(114.41deg, #0ae448 20.74%, #abff84 65.5%);--danger:#c77a74;--danger-hover:#dd938d;--sev-dim:var(--muted);--sev-note:var(--muted);--sev-info:var(--text);--sev-ok:var(--light-green);--sev-accent:var(--loud);--sev-warn:var(--loud);--sev-crit:var(--loud);--font:"Commit Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-mono:var(--font);--font-prose:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--max:780px}*,:before,:after{box-sizing:border-box;border-color:var(--line)}body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol,pre{margin:0}button{font:inherit;color:inherit;cursor:pointer}img,svg{max-width:100%}html{scroll-behavior:smooth;scroll-padding-top:92px}body{font-family:var(--font);background:var(--void);color:var(--text);letter-spacing:0;-webkit-font-smoothing:antialiased;min-height:100dvh;font-size:14px;line-height:1.5}::selection{background:var(--light-green);color:var(--void)}::-webkit-scrollbar{width:0;height:0}*{scrollbar-width:none;-ms-overflow-style:none}a{color:inherit;text-decoration:none}:focus-visible{outline:none}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.muted{color:var(--muted)}.loud{color:var(--loud)}.green{color:var(--light-green)}.tnum{font-variant-numeric:tabular-nums}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:400;display:inline-block}.eyebrow:before{content:"// "}.hl{color:var(--light-green)}.hl-loud{color:var(--loud)}.art-path{flex-wrap:wrap;align-items:center;margin-bottom:34px;display:flex}.art-crumb{color:var(--muted);transition:color .14s}.art-crumb:hover,.art-crumb:focus-visible{color:var(--light-green)}.art-sep{color:#3f3f3f}.art-here{color:var(--loud);overflow-wrap:anywhere}.art-head{margin-bottom:40px}.art-title{font-family:var(--font-prose);color:var(--loud);font-size:25px;font-weight:600;line-height:1.25}.art-lead{font-family:var(--font-prose);max-width:58ch;color:var(--muted);margin-top:6px;font-size:16px}.art-meta{color:var(--muted);flex-wrap:wrap;gap:8px 14px;margin-top:14px;font-size:12px;display:flex}.art-tags{color:#3f3f3f;text-transform:lowercase}.art-toc{margin-bottom:40px;padding-bottom:4px}.art-toc .tree-name{text-transform:lowercase}.art-toc .tree-link.active .tree-name{color:var(--light-green)}.art-back{border-top:1px solid var(--grid);width:100%;color:var(--muted);align-items:center;gap:10px;margin-top:56px;padding-top:24px;font-size:12px;transition:color .14s;display:inline-flex}.art-back:hover,.art-back:focus-visible{color:var(--light-green)}.art-back-ico{transition:transform .16s}.art-back:hover .art-back-ico{transform:translate(-3px)}.md{font-family:var(--font-prose);color:var(--text);max-width:66ch;font-size:16px;line-height:1.7}.md>*+*{margin-top:16px}.md h1,.md h2{color:var(--loud);margin-top:36px;margin-bottom:8px;scroll-margin-top:32px;font-size:19px;font-weight:600;line-height:1.4}.md h3{color:var(--loud);margin-top:26px;margin-bottom:2px;scroll-margin-top:32px;font-size:16px;font-weight:600}.md>:first-child,.md hr+h2{margin-top:0}.md a{color:var(--light-green);text-underline-offset:3px;text-decoration:underline}.md a:hover{color:var(--green)}.md strong{color:var(--loud);font-weight:600}.md ul,.md ol{padding-left:22px}.md ul{list-style:outside}.md ol{list-style:decimal}.md li{margin-top:4px}.md li::marker{color:var(--muted)}.md code{font-size:14px;font-family:var(--font);color:var(--loud);background:#171717;border-radius:0;padding:1px 5px}.md pre{font-family:var(--font);border:1px solid var(--line);background:#121212;border-radius:0;padding:16px;font-size:14px;line-height:1.6;overflow-x:auto}.md pre code{color:var(--text);background:0 0;padding:0}.md blockquote{border-left:2px solid var(--line);color:var(--muted);padding-left:16px}.md hr{border:0;border-top:1px solid var(--grid);margin:34px 0 26px}.md img{border:1px solid var(--grid);max-width:100%;height:auto}.md video{border:1px solid var(--grid);background:#000;max-width:100%;height:auto;max-height:70vh;margin:0 auto;display:block}.tree-page{--tree-guide:#3f3f3f;--tree-indent:26px;flex-direction:column;min-height:100dvh;padding:clamp(88px,16vh,168px) 24px 32px;display:flex}.tree,.tree-foot{width:100%;max-width:var(--max);margin:0 auto;padding:0 56px}.tree{flex:1;font-size:14px;line-height:1.85}.tree-eyebrow{text-transform:none;letter-spacing:0;margin-bottom:26px;font-size:13px}.tree-row{width:100%;font:inherit;text-align:left;background:0 0;border:0;align-items:center;padding:2px 0;display:flex}.g{width:var(--tree-indent);flex:none;align-self:stretch;position:relative}.g-line:before,.g-tee:before,.g-end:before{content:"";background:var(--tree-guide);width:1px;position:absolute;top:0;left:7px}.g-line:before,.g-tee:before{bottom:0}.g-end:before{height:50%}.g-tee:after,.g-end:after{content:"";background:var(--tree-guide);width:12px;height:1px;position:absolute;top:50%;left:7px}.tree-mark{width:14px;color:var(--muted);flex:none;transition:color .14s}.tree-ico{width:13px;color:var(--muted);flex:none;margin-right:5px;transition:color .14s}.tree-name{min-width:0;color:var(--text);text-transform:lowercase;overflow-wrap:anywhere;transition:color .14s}.tree-root .tree-name{color:var(--loud)}.tree-name.dim{color:var(--muted)}@keyframes tree-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.tree-dir{cursor:pointer}.tree-dir:hover .tree-name,.tree-dir:hover .tree-mark,.tree-dir:focus-visible .tree-name,.tree-dir:focus-visible .tree-mark,.tree-dir.open .tree-name,.tree-dir.open .tree-mark{color:var(--light-green)}.tree-prose-row{align-items:flex-start}.tree-prose{max-width:62ch;color:var(--muted);padding:0 0 14px 4px}.tree-status{align-items:center;gap:6px;margin-right:14px;display:inline-flex}.tree-status svg{color:var(--muted)}.tree-right{flex:none;align-items:center;gap:8px;margin-left:auto;padding-left:32px;font-size:12px;display:flex}.tree-meta{color:var(--muted);transition:color .14s}.tree-link{cursor:pointer}.tree-link:hover .tree-name,.tree-link:hover .tree-ico,.tree-link:hover .tree-meta,.tree-link:focus-visible .tree-name,.tree-link:focus-visible .tree-ico,.tree-link:focus-visible .tree-meta{color:var(--light-green)}.tree-foot{flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;margin-top:64px;padding:18px 56px;display:flex}.tree-brand{color:var(--text);align-items:center;gap:9px;font-size:14px;font-weight:600;transition:color .14s;display:flex}.tree-brand-dot{background:var(--grad-green);border-radius:50%;width:8px;height:8px}.tree-foot-time{color:var(--muted);font-size:12px}.tree-foot-beat{color:var(--green);animation:1s step-end infinite tree-blink}.tree-brand:hover,.tree-brand:focus-visible{color:var(--light-green)}@media (max-width:720px){.tree-page{--tree-indent:22px;padding:clamp(72px,12vh,120px) 4px 24px}.tree{padding:0 24px;line-height:2}.tree-row{padding:4px 0}.tree-right{padding-left:14px}.tree-meta-long{display:none}.tree-foot{margin-top:48px;padding:18px 24px}.md{max-width:none}}@media (max-width:440px){.tree-page{--tree-indent:18px}.tree{padding:0 18px;font-size:13px}.tree-foot{padding:18px}.tree-mark{width:12px}.tree-right{padding-left:10px}}
