@font-face{font-family:poppins;src:url(/fonts/poppins-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:poppins;src:url(/fonts/poppins-latin-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:poppins;src:url(/fonts/poppins-latin-500-normal.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:poppins;src:url(/fonts/poppins-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:poppins;src:url(/fonts/poppins-latin-700-normal.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#F4F4F4;--surface:#FFFFFF;--ink:#0A0A0A;--muted:#6B6B6B;--rule:#D4D4D4;--kapton:#0A0A0A;--kapton-strong:#0A0A0A;--heat0:#3A3A3A;--heat1:#2E2E2E;--heat2:#222222;--heat3:#161616;--code-bg:#0A0A0A;--code-fg:#F2F2F2;--selection:rgba(0, 0, 0, .14);--sans:"Poppins", ui-sans-serif, system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--wrap:1120px;--measure:40rem;--gutter:clamp(16px, 4.5vw, 48px);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#050505;--surface:#111111;--ink:#F2F2F2;--muted:#8F8F8F;--rule:#262626;--kapton:#FFFFFF;--kapton-strong:#FFFFFF;--heat0:#C4C4C4;--heat1:#D0D0D0;--heat2:#DCDCDC;--heat3:#E7E7E7;--code-bg:#121212;--code-fg:#F2F2F2;--selection:rgba(255, 255, 255, .22);color-scheme:dark}}:root[data-theme=dark]{--bg:#050505;--surface:#111111;--ink:#F2F2F2;--muted:#8F8F8F;--rule:#262626;--kapton:#FFFFFF;--kapton-strong:#FFFFFF;--heat0:#C4C4C4;--heat1:#D0D0D0;--heat2:#DCDCDC;--heat3:#E7E7E7;--code-bg:#121212;--code-fg:#F2F2F2;--selection:rgba(255, 255, 255, .22);color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:1.0625rem/1.75 var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}main{flex:1}::selection{background:var(--selection)}a{color:inherit}:focus-visible{outline:2px solid var(--kapton);outline-offset:3px;border-radius:3px}img,svg,video,canvas{display:block;max-width:100%}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}.skip{position:fixed;left:12px;top:-60px;z-index:40;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:6px;font-weight:500;text-decoration:none}.skip:focus{top:12px}:root{--compact:30px;--bar-top:12px;--bar-h:calc(var(--bar-top) * 2 + var(--compact) * .95)}@media(max-width:719px){:root{--compact:21px;--bar-h:calc(var(--bar-top) * 2 + var(--compact) * .95 * 2)}}.site-head{position:fixed;top:0;left:0;right:0;z-index:31;pointer-events:none;view-transition-name:brand-head}.site-head .wrap{padding-top:var(--bar-top)}.wordmark{display:inline-block;pointer-events:auto;font-weight:700;font-size:var(--compact);line-height:.95;letter-spacing:-.05em;margin-left:-.05em;text-decoration:none}.wordmark span{display:inline-block}.wordmark span+span{margin-left:.14em}@media(max-width:719px){.wordmark span{display:block}.wordmark span+span{margin-left:0}}.wordmark:hover{opacity:.72}.is-page main{padding-top:var(--bar-h)}.is-page .topbar{opacity:1}.site-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:clamp(64px,10vh,112px);padding-block:28px 36px;position:relative;color:var(--muted);font-size:.9375rem}.site-foot::before{content:"";position:absolute;top:0;left:var(--gutter);right:var(--gutter);height:1px;background:var(--rule)}.site-foot p{margin:0}.is-page .site-foot{margin-top:clamp(40px,5vw,64px);padding-block:20px 28px}.foot-links{display:flex;flex-wrap:wrap;gap:8px 24px}.foot-links a{display:inline-block;padding-block:4px;overflow-wrap:anywhere;text-decoration:none}.foot-links a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--kapton);text-decoration-thickness:2px;text-underline-offset:5px}.hero{position:relative;padding-top:var(--hero-gap);padding-bottom:0;touch-action:none}.brand-field{position:fixed;inset:0;width:100%;height:100%;z-index:30;pointer-events:none;view-transition-name:brand-canvas}.topbar{position:fixed;top:0;left:0;right:0;height:var(--bar-h);z-index:29;background:var(--bg);opacity:var(--bar,0);pointer-events:none;view-transition-name:topbar}.topbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--rule)}.topbar.is-pinned{pointer-events:auto;touch-action:none}:root{--hero-gap:clamp(10px, 2.2vh, 24px);--hero-gap-below:calc(var(--hero-gap) + 18px)}@media(max-width:719px){:root{--hero-gap-below:calc(var(--hero-gap) + 4px)}}.post-list>.post-row:first-child{padding-top:24px}@media(max-width:599px){.post-list>.post-row:first-child{padding-top:20px}}.hero-inner{position:relative}.hero-title{margin:0;font-weight:700;font-size:min(5.75rem,calc((100vw - 2 * var(--gutter))/8.6));line-height:.95;letter-spacing:-.05em;margin-left:-.05em}.hero-title span{display:inline-block}.hero-title span+span{margin-left:.14em}@media(max-width:719px){.hero-title{font-size:calc((100vw - 2 * var(--gutter))/5.4)}.hero-title span{display:block}.hero-title span+span{margin-left:0}}.js .hero-title,.hero.is-live .hero-title{color:transparent}.hero-title,.brand-field{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html.intro-lock,html.intro-lock body{overflow:hidden;overscroll-behavior:none}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}.latest{margin-top:var(--hero-gap-below)}.intro-play .post-list{animation:fade .5s ease 1.8s both}.intro-play .post-row{animation:reveal .55s cubic-bezier(.22,1,.36,1)calc(1.9s + var(--i,0) * 70ms)both}.intro-play .site-foot{animation:reveal .55s cubic-bezier(.22,1,.36,1)2.6s both}@keyframes fade{from{opacity:0}}@keyframes reveal{from{opacity:0;transform:translateY(8px)}}.post-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.post-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr)auto;gap:6px 40px;padding-block:26px 28px;border-bottom:1px solid var(--rule)}.post-text{min-width:0;max-width:44rem;overflow-wrap:anywhere}.post-title{margin:0;font-size:clamp(1.3125rem,1.1rem + .8vw,1.75rem);line-height:1.22;font-weight:600;letter-spacing:-.02em}.post-title a{text-decoration:none}.post-title a::after{content:"";position:absolute;inset:0}.post-row:hover .post-title a,.post-title a:focus-visible{text-decoration:underline;text-decoration-color:var(--kapton);text-decoration-thickness:3px;text-underline-offset:.2em}.post-title a:focus-visible{outline:none}.post-row:has(a:focus-visible){outline:2px solid var(--kapton);outline-offset:4px;border-radius:4px}.post-summary{margin:8px 0 0;color:var(--muted);font-size:1rem;line-height:1.6}.post-row time{color:var(--muted);font-size:.9375rem;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:.35em}@media(max-width:599px){.post-row{grid-template-columns:1fr;padding-block:22px 24px}.post-row time{order:-1;padding-top:0;font-size:.875rem}}.empty{color:var(--muted)}.post-head{max-width:var(--measure);margin-block:clamp(28px,4vw,48px)28px;padding-bottom:20px;border-bottom:1px solid var(--rule)}.post-head h1{margin:0;font-size:clamp(2.25rem,1.5rem + 3.4vw,4rem);line-height:1.06;font-weight:600;letter-spacing:-.035em;text-wrap:balance;overflow-wrap:anywhere}.post-meta{margin:12px 0 0;color:var(--muted);font-size:.9375rem;font-variant-numeric:tabular-nums}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0}.tags a{display:inline-block;padding:3px 12px;border:1px solid var(--rule);border-radius:999px;font-size:.875rem;font-weight:500;color:var(--muted);text-decoration:none;line-height:1.6}.tags a:hover{color:var(--ink);border-color:var(--kapton)}.tags-large a{font-size:1rem;padding:6px 16px}.tags-large span{color:var(--muted);margin-left:4px;font-variant-numeric:tabular-nums}.toc{max-width:var(--measure);margin:0 0 24px;padding:12px 16px;border:1px solid var(--rule);border-radius:10px;font-size:.9375rem}.toc summary{cursor:pointer;font-weight:500}.toc ul{list-style:none;margin:8px 0 4px;padding-left:0}.toc ul ul{padding-left:1.1em}.toc a{display:inline-block;padding-block:3px;overflow-wrap:anywhere;text-decoration:none;color:var(--muted)}.toc a:hover{color:var(--ink)}.prose{max-width:var(--measure);overflow-wrap:anywhere}.prose p,.prose ul,.prose ol,.prose dl{margin:0 0 1.3em}.prose h2,.prose h3,.prose h4{position:relative;font-weight:600;letter-spacing:-.02em;scroll-margin-top:calc(var(--bar-h) + 20px)}.prose h2{font-size:1.625rem;line-height:1.25;margin:1.4em 0 .5em}.prose h3{font-size:1.25rem;line-height:1.35;margin:1.5em 0 .5em}.prose h4{font-size:1.0625rem;margin:1.5em 0 .4em}.anchor{margin-left:.35em;color:var(--kapton);text-decoration:none;font-weight:500;opacity:0;transition:opacity .15s}.prose :is(h2,h3,h4):hover .anchor,.anchor:focus-visible{opacity:1}.prose a{text-decoration-color:var(--kapton);text-decoration-thickness:2px;text-underline-offset:.22em}.prose a:hover{text-decoration-color:initial}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:1.3em}.prose li{margin-block:.3em}.prose li>:is(ul,ol){margin-block:.4em 0}.prose li::marker{color:var(--kapton-strong)}.prose blockquote{margin:1.3em 0;padding:2px 0 2px 1.25em;border-left:3px solid var(--kapton);color:var(--muted)}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;height:1px;background:var(--rule);margin:3em 0}.prose img{height:auto;border-radius:8px;margin:1.8em 0}.prose figure{margin:2em 0}.prose figure img{margin:0}.prose figcaption{margin-top:10px;color:var(--muted);font-size:.9375rem}.prose code{font-family:var(--mono);font-size:.86em;background:var(--surface);border:1px solid var(--rule);border-radius:5px;padding:.08em .36em}.prose pre,.prose .highlight pre{margin:1.8em 0;padding:18px 22px;background:var(--code-bg)!important;color:var(--code-fg);border-radius:10px;overflow-x:auto;font-size:.875rem;line-height:1.65;tab-size:4}.prose pre code{background:0 0;border:0;padding:0;font-size:inherit;color:inherit}.prose .highlight{margin:1.8em 0}.prose .highlight pre{margin:0}.prose table{display:block;overflow-x:auto;border-collapse:collapse;margin:1.8em 0;font-size:.9375rem;font-variant-numeric:tabular-nums}.prose th{text-align:left;font-weight:600;border-bottom:2px solid var(--ink);padding:8px 16px 8px 0}.prose td{border-bottom:1px solid var(--rule);padding:8px 16px 8px 0;vertical-align:top}.prose .highlight pre span{color:inherit!important}.prose .highlight :is(.k,.kd,.kn,.kr,.kc,.kt,.nf,.fm){font-weight:600}.prose .highlight :is(.c,.c1,.cm,.cs,.ch,.cp){opacity:.55;font-style:italic}.prose .highlight :is(.s,.s1,.s2,.sb,.sd,.se,.sh,.si,.sx,.m,.mi,.mf){opacity:.8}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose .callout{margin:1.8em 0;padding:16px 20px;border:1px solid var(--rule);border-left:3px solid var(--ink);border-radius:8px;background:var(--surface)}.prose .callout>:last-child{margin-bottom:0}.prose .callout-title{margin:0 0 .35em;font-weight:600;font-size:.9375rem}.prose .callout-tip{border-left-style:dashed}.prose :is(.callout-warning,.callout-caution){border-left-width:5px}.prose :is(.callout-warning,.callout-caution) .callout-title::before{content:"! "}.prose del{color:var(--muted)}.prose li:has(>input[type=checkbox]){list-style:none;margin-left:-1.3em}.prose li>input[type=checkbox]{accent-color:var(--ink);margin:0 .55em 0 0;vertical-align:-1px}.prose dt{font-weight:600;margin-top:1em}.prose dd{margin:.2em 0 0 1.3em;color:var(--muted)}.prose .footnotes{margin-top:3em;font-size:.9375rem;color:var(--muted)}.prose .footnotes hr{margin:0 0 1.2em}.prose sup a,.prose .footnote-backref{text-decoration:none}.prose details{margin:1.5em 0;padding:12px 18px;border:1px solid var(--rule);border-radius:8px}.prose details>summary{cursor:pointer;font-weight:500}.prose details[open]>summary{margin-bottom:.6em}.prose figure a img{cursor:zoom-in}.post-nav{max-width:var(--measure);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin-top:40px;padding-top:20px;border-top:1px solid var(--rule)}.post-nav a{min-width:0;padding-block:4px;overflow-wrap:anywhere;text-decoration:none;font-weight:600;line-height:1.35;letter-spacing:-.01em}.post-nav a span{display:block;font-weight:400;font-size:.875rem;color:var(--muted);margin-bottom:4px;letter-spacing:0}.post-nav a:hover{text-decoration:underline;text-decoration-color:var(--kapton);text-decoration-thickness:2px;text-underline-offset:4px}.post-nav-older{grid-column:2;text-align:right}@media(max-width:599px){.post-nav{grid-template-columns:1fr}.post-nav-older{grid-column:1;text-align:left}}.post-list{border-top:1px solid var(--rule)}.post-row{border-bottom:1px solid var(--rule)}.post-row:hover .post-title a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:var(--muted)}.prose>p:first-child{font-size:1.1875rem;line-height:1.7}@view-transition{navigation: auto; }::view-transition-group(*){animation-duration:.34s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(root){animation:vt-out .12s cubic-bezier(.4,0,1,1)both}::view-transition-new(root){animation:vt-in .22s cubic-bezier(.22,1,.36,1).04s both}::view-transition-group(topbar),::view-transition-group(brand-canvas),::view-transition-group(brand-head){animation:none}::view-transition-old(topbar),::view-transition-old(brand-canvas),::view-transition-old(brand-head){animation:vt-out .12s linear both}::view-transition-new(topbar),::view-transition-new(brand-canvas),::view-transition-new(brand-head){animation:none}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{from{opacity:0;transform:translateY(4px)}}@media(prefers-reduced-motion:reduce){*{transition:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.bg{color:#cdd6f4;background-color:#1e1e2e}.chroma{color:#cdd6f4;background-color:#1e1e2e;-webkit-text-size-adjust:none}.chroma .x{color:#cdd6f4}.chroma .err{color:#f38ba8}.chroma .cl{color:#cdd6f4}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#45475a}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}.chroma .line{display:flex}.chroma .k{color:#cba6f7}.chroma .kc{color:#fab387}.chroma .kd{color:#f38ba8}.chroma .kn{color:#94e2d5}.chroma .kp{color:#cba6f7}.chroma .kr{color:#cba6f7}.chroma .kt{color:#f38ba8}.chroma .na{color:#89b4fa}.chroma .nc{color:#f9e2af}.chroma .no{color:#f9e2af}.chroma .nd{color:#89b4fa;font-weight:700}.chroma .ni{color:#94e2d5}.chroma .ne{color:#fab387}.chroma .nl{color:#89dceb}.chroma .nn{color:#fab387}.chroma .nx{color:#cdd6f4}.chroma .py{color:#fab387}.chroma .nt{color:#cba6f7}.chroma .nb{color:#89dceb}.chroma .bp{color:#89dceb}.chroma .nv{color:#f5e0dc}.chroma .vc{color:#f5e0dc}.chroma .vg{color:#f5e0dc}.chroma .vi{color:#f5e0dc}.chroma .vm{color:#f5e0dc}.chroma .nf{color:#89b4fa}.chroma .fm{color:#89b4fa}.chroma .ld{color:#cdd6f4}.chroma .s{color:#a6e3a1}.chroma .sa{color:#f38ba8}.chroma .sb{color:#a6e3a1}.chroma .sc{color:#a6e3a1}.chroma .dl{color:#89b4fa}.chroma .sd{color:#6c7086}.chroma .s2{color:#a6e3a1}.chroma .se{color:#89b4fa}.chroma .sh{color:#6c7086}.chroma .si{color:#a6e3a1}.chroma .sx{color:#a6e3a1}.chroma .sr{color:#94e2d5}.chroma .s1{color:#a6e3a1}.chroma .ss{color:#a6e3a1}.chroma .m{color:#fab387}.chroma .mb{color:#fab387}.chroma .mf{color:#fab387}.chroma .mh{color:#fab387}.chroma .mi{color:#fab387}.chroma .il{color:#fab387}.chroma .mo{color:#fab387}.chroma .o{color:#89dceb;font-weight:700}.chroma .ow{color:#89dceb;font-weight:700}.chroma .or{color:#89dceb;font-weight:700}.chroma .c{color:#6c7086;font-style:italic}.chroma .ch{color:#585b70;font-style:italic}.chroma .cm{color:#6c7086;font-style:italic}.chroma .c1{color:#6c7086;font-style:italic}.chroma .cs{color:#6c7086;font-style:italic}.chroma .cp{color:#6c7086;font-style:italic}.chroma .cpf{color:#6c7086;font-weight:700;font-style:italic}.chroma .gd{color:#f38ba8;background-color:#313244}.chroma .ge{font-style:italic}.chroma .gr{color:#f38ba8}.chroma .gh{color:#fab387;font-weight:700}.chroma .gi{color:#a6e3a1;background-color:#313244}.chroma .go{color:#cdd6f4}.chroma .gp{color:#cdd6f4}.chroma .gs{font-weight:700}.chroma .gu{color:#fab387;font-weight:700}.chroma .gt{color:#f38ba8}.chroma .gl{text-decoration:underline}