:root{--bg: #ffffff;--ink: #000000;--link: #27272a;--link-hover: #000000;--underline: rgba(63, 63, 70, .35);--muted: #5c5c62;--bullet: #b8b8b8;--line: #e0e0e0;--code: #f5f5f5;--accent: #a680a6;--selection: #ece4ec;--list-mark: #8e8e94;--wire: #c9c9cf;--hover-bg: #f8f8f8;--selected-bg: #f0f0f1;--card-text: #3f3f46;--card-text-hover: #18181b;--tint-strength: 1;--shadow: rgba(0, 0, 0, .04);color-scheme:light dark;--col: 620px}@media(prefers-color-scheme:dark){:root{--bg: #131315;--ink: #d4d4d8;--link: #a6a6ae;--link-hover: #e4e4e7;--underline: rgba(166, 166, 174, .35);--muted: #9b9ba3;--bullet: #55555c;--line: #2b2b30;--code: #1d1d21;--accent: #b99ab9;--selection: #3a2f3a;--list-mark: #5a5a61;--wire: #3d3d44;--hover-bg: #1c1c20;--selected-bg: #26262b;--card-text: #d4d4d8;--card-text-hover: #e4e4e7;--shadow: rgba(0, 0, 0, .45)}}*{box-sizing:border-box}::selection{background:var(--selection);color:inherit}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent}html{scrollbar-gutter:stable}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Spectral,Georgia,serif;text-rendering:optimizeLegibility}a{color:var(--link);text-decoration:none;border-bottom:1px solid var(--underline);transition:color .2s ease,border-color .2s ease}a:hover{color:var(--link-hover);border-bottom-color:var(--ink)}.neural-field{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.wrap{position:relative;z-index:1;max-width:var(--col);margin:0 auto;padding:0 max(24px,env(safe-area-inset-right)) 0 max(24px,env(safe-area-inset-left))}.nav{position:relative;z-index:1;display:grid;grid-template-columns:1fr auto auto;column-gap:26px;align-items:center;max-width:var(--col);margin:0 auto;padding:40px max(24px,env(safe-area-inset-right)) 0 max(24px,env(safe-area-inset-left));font-size:15.5px}.nav.is-wide{max-width:700px}.nav a{border-bottom:none}.brand{justify-self:start;display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:500}.navlinks,.navout{display:flex;align-items:center}.navlinks{gap:22px}.navlinks a{display:inline-flex;align-items:center;gap:8px;font:500 13.5px/1.4 var(--mono, "IBM Plex Mono", ui-monospace, monospace);letter-spacing:.01em;color:var(--muted);transition:color .2s ease}.navlinks a:before{content:"";width:7px;height:7px;border:1px solid currentColor;transition:background .2s ease,border-color .2s ease}.navlinks a[aria-current=page]{color:var(--ink)}.navlinks a[aria-current=page]:before{background:var(--ink);border-color:var(--ink)}.navout{position:relative;gap:18px;padding-left:24px}.navout:before{content:"";position:absolute;left:0;top:50%;width:1px;height:16px;transform:translateY(-50%);background:var(--line)}.navout a{display:flex;color:var(--muted)}.navout svg{width:15px;height:15px;fill:currentColor}@media(hover:hover){.navlinks a:hover,.navout a:hover{color:var(--link-hover)}}.nav a:focus,.menu-btn:focus{outline:none}.nav a:focus-visible,.menu-btn:focus-visible{outline:1px solid var(--muted);outline-offset:3px}.brand img{width:20px;height:20px;image-rendering:pixelated}.page{padding:72px 0}.letter{font-size:17px;line-height:1.55}.letter p{margin:0 0 .85em}.letter ul{margin:-.35em 0 1em;padding-left:2em;list-style:square}.letter li{margin-bottom:.2em}.letter li::marker{color:var(--list-mark)}.letter .is-struck{color:var(--muted);opacity:.6}.letter .is-struck s{text-decoration-color:var(--muted)}.letter .is-struck .belief-toggle{text-decoration:none}.belief-toggle{display:inline;padding:0;font:inherit;color:inherit;text-align:left;background:none;border:none;cursor:pointer;text-decoration:underline dotted var(--bullet);text-decoration-thickness:1px;text-underline-offset:5px;transition:text-decoration-color .2s ease}.belief-toggle:hover,.belief.is-open .belief-toggle{text-decoration-color:var(--muted)}.belief-toggle:focus{outline:none}.belief-toggle:focus-visible{outline:1px solid var(--muted);outline-offset:3px}.belief-mark{display:inline-block;width:6px;height:6px;margin-left:8px;vertical-align:.15em;border:1px solid var(--muted);transition:background .2s ease}.belief.is-open .belief-mark{background:var(--muted)}.belief-note{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .24s ease,opacity .2s ease}.belief.is-open .belief-note{grid-template-rows:1fr;opacity:1}.belief-note>div{overflow:hidden}.letter .belief-note p{margin:10px 0 6px;padding:12px 16px;border:1px solid var(--line);border-left:2px solid var(--list-mark);background:var(--bg);font-size:.9em;line-height:1.6;color:var(--link)}@media(prefers-reduced-motion:reduce){.belief-note,.belief-toggle,.belief-mark{transition:none}}.pagedesc{color:var(--muted);font-style:italic}.empty{color:var(--muted)}.tag-technical{--dot: #cdb6cd;--tint: rgba(166, 128, 166, .1);--swatch: rgba(166, 128, 166, .22)}.tag-reflection{--dot: #e2cb9f;--tint: rgba(196, 150, 80, .09);--swatch: rgba(196, 150, 80, .2)}.tag-article{--dot: #b3cbb8;--tint: rgba(112, 156, 120, .09);--swatch: rgba(112, 156, 120, .2)}@media(prefers-color-scheme:dark){.tag-technical{--dot: #9d849d;--tint: rgba(185, 154, 185, .14);--swatch: rgba(185, 154, 185, .26)}.tag-reflection{--dot: #a8916a;--tint: rgba(214, 180, 120, .12);--swatch: rgba(214, 180, 120, .24)}.tag-article{--dot: #7f9886;--tint: rgba(140, 186, 150, .12);--swatch: rgba(140, 186, 150, .24)}}.writing{font-size:16px;line-height:1.5}.wd-graph{position:relative}.wd-wires{position:absolute;top:0;left:0;overflow:visible;pointer-events:none}.wd-wire{fill:none;stroke:var(--wire);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1;animation:wd-draw .9s cubic-bezier(.22,1,.36,1) forwards;animation-delay:calc(.12s + var(--i, 0) * 70ms);transition:stroke .25s ease,opacity .25s ease,stroke-width .25s ease}@keyframes wd-draw{to{stroke-dashoffset:0}}.has-hot .wd-wires g:not(.is-hot) .wd-wire{opacity:.35}.wd-wires g.is-dimmed .wd-wire{opacity:.25}.is-filtered .wd-wires g:not(.is-dimmed) .wd-wire{stroke:color-mix(in srgb,var(--dot),var(--ink) 25%)}.wd-wires g.is-hot .wd-wire{stroke:color-mix(in srgb,var(--dot),var(--ink) 25%);stroke-width:1.25}.wd-flow{fill:none;stroke:color-mix(in srgb,var(--dot),var(--ink) 35%);stroke-width:1.5;stroke-dasharray:2 10;animation:wd-flow 1.1s linear infinite}@keyframes wd-flow{to{stroke-dashoffset:-24}}.wd-cats{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0 0 32px}.wd-cat{display:inline-flex;align-items:center;gap:8px;padding:4px 0;font:500 12px/1.4 var(--mono, "IBM Plex Mono", ui-monospace, monospace);letter-spacing:.01em;color:var(--muted);background:none;border:none;cursor:pointer;transition:color .2s ease}.wd-count{color:var(--bullet);font-variant-numeric:tabular-nums}.wd-node{order:-1;width:9px;height:9px;background:var(--bg);border:1px solid color-mix(in srgb,var(--dot),var(--ink) 18%);transition:background .2s ease}.wd-cat.is-hot,.wd-cat[aria-pressed=true]{color:var(--ink)}.wd-cat.is-hot .wd-node,.wd-cat[aria-pressed=true] .wd-node{background:var(--dot)}.wd-cat[aria-pressed=true] .wd-cat-label{text-decoration:underline;text-underline-offset:4px}.wd-cat:focus{outline:none}.wd-cat:focus-visible{outline:1px solid var(--muted);outline-offset:3px}.wd-posts{margin:0;padding:0;list-style:none}.wd-year{margin:30px 0 8px;font:500 11px/1.4 var(--mono, "IBM Plex Mono", ui-monospace, monospace);letter-spacing:.1em;color:var(--muted)}.wd-year:first-child{margin-top:0}.wd-post{transition:opacity .25s ease}.wd-post.is-dimmed{opacity:.28}.wd-link{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;align-items:baseline;padding:6px 0;color:var(--card-text);border-bottom:none;animation:tile-in .32s ease both;animation-delay:calc(var(--i, 0) * 60ms)}.wd-link:hover{color:var(--card-text);border-bottom:none}.wd-link:focus{outline:none}.wd-mark{width:7px;height:7px;align-self:center;background:var(--dot)}.wd-title{transition:color .2s ease}.wd-post.is-hot .wd-title{color:var(--ink)}.wd-link:focus-visible .wd-title{text-decoration:underline;text-underline-offset:4px}.wd-date{font:12px/1.4 var(--mono, "IBM Plex Mono", ui-monospace, monospace);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.wd-post{position:relative}.wd-note{display:none}@media(hover:hover){.wd-cat:hover{color:var(--ink)}}@media(hover:hover)and (min-width:1180px){.wd-note{display:block;position:absolute;top:6px;left:calc(100% + 28px);width:min(250px,calc(50vw - 368px));padding-left:30px;opacity:0;pointer-events:none;transition:opacity .12s ease}.wd-note:before{content:"";position:absolute;left:0;top:11px;width:20px;height:1px;background:var(--muted)}.wd-note:after{content:"";position:absolute;left:20px;top:10px;width:3px;height:3px;background:var(--muted)}.wd-note p{margin:0;font-size:14px;font-style:italic;line-height:1.5;color:var(--muted)}.wd-post:not(.is-dimmed):hover .wd-note,.wd-post:not(.is-dimmed):focus-within .wd-note{opacity:1}}@media(max-width:1179px){.wd-post.is-dimmed,.wd-year.is-empty{display:none}}@media(min-width:1180px){.wd-wires{left:-274px}.wd-cats{position:absolute;top:0;bottom:0;left:-274px;display:block;width:154px;margin:0}.wd-cat{justify-content:flex-end;width:154px}.is-drawn .wd-cat{position:absolute;right:0;transform:translateY(-50%);transition:top .35s cubic-bezier(.22,1,.36,1),color .2s ease}.wd-cat .wd-node{order:0;margin-left:2px}.is-drawn .wd-mark{display:none}.is-drawn .wd-link{grid-template-columns:minmax(0,1fr) auto}}@keyframes tile-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.wd-link{animation:none}.wd-wire{animation:none;stroke-dashoffset:0}.wd-flow{animation:none}.wd-post,.wd-note,.wd-cat,.wd-wire{transition:none}}.wrap.is-article{max-width:700px}.post{--sans: "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--post-ink: #111111;--post-muted: #6b6b70;--post-line: #e4e4e7;--post-band: #f4f4f5;--post-code-block: #f7f7f8;--post-rule: #d4d4d8;--post-link-rule: #a1a1aa;position:relative;font-family:var(--sans);color:var(--post-ink);-webkit-font-smoothing:antialiased}.post .back{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--post-muted);border-bottom:none}.post .back:hover{color:var(--post-ink)}.post-header h1{margin:28px 0 14px;font-size:36px;font-weight:500;line-height:1.12;letter-spacing:-.015em}.post-subtitle{margin:0 0 12px;font-size:16px;font-style:italic;color:var(--post-muted)}.post-meta{margin:0 0 36px;font:12px/1.5 var(--mono);color:var(--post-muted)}.toc{display:none}.toc-title,.toc-inline summary{font:500 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--post-muted)}.toc-title{margin-bottom:12px}.toc ul,.toc-inline ul{margin:0;padding:0;list-style:none}.toc a,.toc-inline a{display:block;padding:3px 0;font-size:12.5px;line-height:1.4;color:var(--post-muted);border-bottom:none;transition:color .2s ease}.toc a.toc-sub,.toc-inline a.toc-sub{padding-left:12px;font-size:12px}.toc a:hover,.toc a.active,.toc-inline a:hover{color:var(--post-ink)}.toc a:focus,.toc-inline a:focus{outline:none}.toc a:focus-visible,.toc-inline a:focus-visible{outline:1px solid var(--post-muted);outline-offset:2px}.toc-list{position:relative;padding-left:14px;border-left:1px solid var(--post-line)}.toc-marker:before{content:"";position:absolute;left:-1px;top:0;width:3px;height:3px;background:var(--post-ink)}.toc-marker{position:absolute;left:-1px;top:0;width:1px;background:var(--post-ink);transition:transform .08s linear,height .08s linear;will-change:transform}.toc-inline{margin:0 0 32px;padding:10px 14px;border:1px solid var(--post-line)}.toc-inline summary{list-style:none;cursor:pointer}.toc-inline summary::-webkit-details-marker{display:none}.toc-inline summary:after{content:"+";float:right}.toc-inline[open] summary:after{content:"−"}.toc-inline ul{margin:8px 0 2px}@media(min-width:1280px){.toc{display:block;position:absolute;top:0;bottom:0;right:calc(100% + 72px);width:190px}.toc nav{position:sticky;top:96px;margin-top:58px;max-height:calc(100vh - 120px);overflow-y:auto}.toc-inline{display:none}}.post-body{overflow-wrap:break-word;font-size:16px;line-height:1.7;letter-spacing:.003em}.post-body p{margin:0 0 16px}.post-body a{color:var(--post-ink);border-bottom:1px solid var(--post-link-rule)}.post-body a:hover{border-bottom-color:var(--post-ink)}.post-body strong{font-weight:600}.post-body h2,.post-body h3{font-weight:500;line-height:1.25;letter-spacing:-.015em;scroll-margin-top:96px}.post-body h2{margin:48px 0 14px;font-size:23px}.post-body h3{margin:30px 0 8px;font-size:18px}.post-body ul,.post-body ol{padding-left:24px;margin:0 0 16px}.post-body li{margin-bottom:6px;padding-left:3px}.post-body ul{list-style:square}.post-body li::marker{color:var(--post-muted)}.post-body code{font-family:var(--mono);font-size:.84em}.post-body :not(pre)>code{padding:.1em .35em;background:var(--post-band)}.post-body pre{margin:0 0 20px;padding:18px 20px;overflow-x:auto;background:var(--post-code-block);border:1px solid var(--post-line);font-size:13.5px;line-height:1.6;-moz-tab-size:4;tab-size:4}.post-body pre code{font-size:inherit}.post-body blockquote{margin:20px 0;padding:0 0 0 18px;border-left:2px solid var(--post-rule);color:var(--post-muted);font-style:italic}.post-body img{display:block;max-width:100%;margin:28px auto}.post-body hr{margin:40px 0;border:0;border-top:1px solid var(--post-line)}.post-body table{display:block;max-width:100%;overflow-x:auto;margin:24px 0;border-collapse:collapse;font-size:14px}.post-body th{font:500 12px var(--mono);color:var(--post-muted);text-align:left}.post-body th,.post-body td{padding:10px 12px 10px 0;border-bottom:1px solid var(--post-line)}@media(prefers-color-scheme:dark){.post{--post-ink: #d4d4d8;--post-muted: #9b9ba3;--post-line: #2b2b30;--post-band: #1f1f23;--post-code-block: #19191c;--post-rule: #3a3a40;--post-link-rule: #6b6b72}}.post-essay{font-family:Spectral,Georgia,serif}.post-essay .back{font-family:inherit;font-size:14px;letter-spacing:0}.essay-header{margin:36px 0 40px;text-align:center}.essay-date{margin:0 0 10px;font-size:13px;font-style:italic;color:var(--post-muted)}.essay-header h1{margin:0;font-size:30px;font-weight:400;line-height:1.25}.post-essay .post-body{font-size:18px;line-height:1.7;letter-spacing:0}.post-essay .post-body p{margin:0 0 18px}.post-essay .post-body h2,.post-essay .post-body h3{font-weight:400;letter-spacing:0}.post-essay .post-body h2{margin:52px 0 18px;font-size:26px}.post-essay .post-body h3{margin:36px 0 12px;font-size:21px}.post-essay .post-body strong{font-weight:600}.post-essay .post-body blockquote{margin:28px 0;padding:4px 0 4px 20px;border-left:3px solid var(--post-rule);color:var(--post-ink);font-style:normal}.post-essay .post-body blockquote p:last-child{margin-bottom:0}.missing{margin:32px 0 0;color:var(--muted)}@media(pointer:coarse){.brand{padding:10px 0}.navlinks{gap:6px}.navlinks a{padding:10px 8px}.menu-links a{padding:12px 24px}.wd-cat{padding:12px 0}.wd-link{padding:10px 0}.navout{gap:0;margin-right:-14px}.navout a{padding:14px}.back{display:inline-block;padding:12px 0;margin:-12px 0}.toc-inline{padding:0 14px}.toc-inline summary{padding:14px 0}.toc-inline ul{margin:0 0 10px}.toc-inline a{padding:9px 0}}.menu-btn,.menu-panel{display:none}@media(max-width:560px){.nav{position:sticky;top:0;z-index:20;grid-template-columns:1fr auto;padding:max(14px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) 14px max(24px,env(safe-area-inset-left));background:var(--bg)}.navlinks,.navout{display:none}.menu-btn{display:block;position:relative;width:44px;height:44px;margin-right:-10px;padding:0;background:none;border:none;cursor:pointer}.menu-btn span{position:absolute;left:12px;width:20px;height:1.5px;background:var(--ink);transition:transform .2s ease,top .2s ease}.menu-btn span:first-child{top:18px}.menu-btn span:last-child{top:25px}.nav.is-open .menu-btn span:first-child{top:21.5px;transform:rotate(45deg)}.nav.is-open .menu-btn span:last-child{top:21.5px;transform:rotate(-45deg)}.menu-panel{display:block;position:absolute;top:100%;left:0;right:0;background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 10px 20px var(--shadow);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s}.nav.is-open .menu-panel{opacity:1;visibility:visible;transform:none;transition:opacity .18s ease,transform .18s ease,visibility 0s}.menu-links{display:flex;flex-direction:column;align-items:center;padding:10px 0}.menu-links a{display:inline-flex;align-items:center;gap:10px;padding:12px 24px;font:500 14px/1.4 var(--mono, "IBM Plex Mono", ui-monospace, monospace);color:var(--muted)}.menu-links a:before{content:"";width:7px;height:7px;border:1px solid currentColor}.menu-links a[aria-current=page]{color:var(--ink)}.menu-links a[aria-current=page]:before{background:var(--ink);border-color:var(--ink)}.menu-social{display:flex;justify-content:space-around;padding:6px max(24px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line)}.menu-social a{display:flex;padding:14px;color:var(--muted)}.menu-social svg{width:17px;height:17px;fill:currentColor}.page{padding-top:32px}}@media(max-width:560px)and (prefers-reduced-motion:reduce){.menu-panel,.nav.is-open .menu-panel,.menu-btn span{transition:none}}@media(max-width:560px){.page{padding-top:32px}.letter,.writing{font-size:16px}.wd-cats{gap:0 16px;margin-bottom:26px}.wd-link{grid-template-columns:auto minmax(0,1fr);row-gap:2px}.wd-date{grid-column:2}.post-header h1{font-size:29px}.post-body{font-size:15.5px}.post-body h2{margin-top:40px;font-size:21px}.essay-header h1{font-size:26px}.post-essay .post-body{font-size:16.5px}}
