@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}.site-tools{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:39;display:flex;gap:8px}.tool-button{position:relative;flex:0 0 44px;width:44px;height:44px;padding:11px;border:0;border-radius:50%;background:var(--bg);color:var(--ink);cursor:pointer;transition:transform .25s ease,background-color .25s ease}.tool-button[hidden]{display:none}.tool-button:hover{background:var(--surface)}.theme-toggle:hover{transform:rotate(12deg)}.tool-button:active{transform:scale(.92)}.tool-button svg{position:absolute;inset:11px;width:22px;height:22px}.theme-sun{opacity:0;transform:rotate(-90deg)scale(.5)}.theme-moon{opacity:1;transform:rotate(0)scale(1)}:root[data-theme=dark] .theme-sun{opacity:1;transform:rotate(0)scale(1)}:root[data-theme=dark] .theme-moon{opacity:0;transform:rotate(90deg)scale(.5)}.theme-switching .brand-field,.theme-switching .topbar,.theme-switching .site-head,.theme-switching [style*=view-transition-name]{view-transition-name:none!important}html.theme-switching::view-transition-old(root){animation:none}html.theme-switching::view-transition-new(root){mix-blend-mode:normal;animation:theme-reveal .55s cubic-bezier(.22,1,.36,1)both}@keyframes theme-reveal{from{clip-path:circle(0 at var(--theme-origin-x,calc(100% - 34px)) var(--theme-origin-y,32px))}to{clip-path:circle(150vmax at var(--theme-origin-x,calc(100% - 34px)) var(--theme-origin-y,32px))}}*,*::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:pan-y}.brand-field{position:fixed;inset:0;width:100%;height:100%;z-index:30;pointer-events:none;view-transition-name:brand-canvas}@supports(height:100lvh){.brand-field{bottom:auto;height:max(100%,100vh,100lvh)}}.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:pan-y}:root{--hero-gap:clamp(10px, 2.2vh, 24px);--hero-gap-below:16px}@media(max-width:719px){:root{--hero-gap-below:8px}}.post-list>.post-row:first-child{padding-top:24px}@media(max-width:599px){.post-list>.post-row:first-child{padding-top:16px}}.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}.hero-tagline{margin:24px 0 0;max-width:40rem;color:var(--muted);font-size:clamp(.75rem,3.5vw,.875rem);font-style:italic;line-height:1.6}@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}}.hero.is-live .hero-title{color:transparent}.brand-field[hidden]{display:none}.hero-title,.brand-field{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.hero.is-live .hero-title{touch-action:none}html.intro-lock{overflow-anchor:none;scroll-behavior:auto}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}.latest{margin-top:var(--hero-gap-below)}.intro-play .post-list{animation:fade .5s ease calc(var(--type-end,1.8s) + 80ms)both}.intro-play .post-row{animation:reveal .55s cubic-bezier(.22,1,.36,1)calc(var(--type-end,1.8s) + 180ms + var(--i,0) * 70ms)both}.intro-play .site-foot{animation:reveal .55s cubic-bezier(.22,1,.36,1)calc(var(--type-end,1.8s) + 180ms)both}.intro-play :is(.site-tools,.empty){animation:tools-reveal .55s cubic-bezier(.22,1,.36,1)1.9s both}@keyframes tools-reveal{from{opacity:0;transform:translateY(8px);visibility:hidden}to{opacity:1;transform:translateY(0);visibility:visible}}@keyframes fade{from{opacity:0}}@keyframes reveal{from{opacity:0;transform:translateY(8px)}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.tl-tok{position:relative}.tl{position:relative}.tl-tok::after,.tl::before{content:"";position:absolute;bottom:.22em;margin-left:.14em;width:.45em;height:1.05em;background:var(--muted);opacity:0;pointer-events:none}.tl-tok:last-child::after{opacity:.85;animation:caret-blink 1.1s steps(1)infinite}.intro-play .tl-tok{animation:tok-in .22s cubic-bezier(.22,1,.36,1)var(--d)both}.intro-play .tl-tok::after{animation:caret-pass var(--s)steps(1)var(--d)}.intro-play .tl-tok:last-child::after{opacity:0;animation:caret-blink 1.1s steps(1)var(--d)infinite}.tl::before{margin-left:0}.intro-play .tl::before{animation:caret-wait .3s steps(1)calc(var(--d0,1.8s) - .3s)}@keyframes caret-wait{from,to{opacity:.85}}@keyframes tok-in{from{opacity:0;filter:blur(3px)}}@keyframes caret-pass{from{opacity:.85}}@keyframes caret-blink{0%{opacity:.85}50%{opacity:0}}.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;align-items:baseline;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}@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}.post-meta{display:flex;flex-wrap:wrap;column-gap:18px;row-gap:4px}.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 :is(h2,h3,h4,h5,h6){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}.prose h5,.prose h6{font-size:1rem;line-height:1.5;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,h5,h6):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 .highlight .chroma{background-color:var(--code-bg);color:var(--code-fg)}.prose .highlight .hl{background-color:rgba(255,255,255,9%)}.prose .highlight .ln{flex:none;opacity:.5;padding-right:1em}.prose .highlight .cl{min-width:0}.prose .highlight>.chroma:has(.lntable){padding:18px 22px;border-radius:10px;overflow-x:auto}.prose .highlight .lntable{display:table;width:100%;margin:0;font-size:inherit}.prose .highlight .lntd{padding:0;border:0}.prose .highlight .lntd:first-child{width:1%;padding-right:16px}.prose .highlight .lntable pre{padding:0!important;border-radius:0;overflow:visible}.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 table:not(.lntable) :is(th,td){min-width:6rem;overflow-wrap:normal;white-space:nowrap}.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){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@media print{:root,:root[data-theme]{color-scheme:light;--ink:#111;--bg:#fff;--muted:#444;--surface:#f5f5f5;--rule:#ccc;--kapton:#111;--code-bg:#f5f5f5;--code-fg:#111}html,body{overflow:visible!important;min-height:0}body{display:block;background:#fff;color:#111;font-size:11pt}.site-tools,.site-head,.topbar,.brand-field,.skip,.search-dialog,.article-actions,.post-nav,.related-articles,.toc,.anchor,.footnote-backref{display:none!important}.wrap{max-width:none;padding-inline:0}.is-page main,.hero{padding-top:0}.hero.is-live .hero-title{color:#111}.post-head{margin-top:0}.prose,.post-head{max-width:none}.prose :is(h2,h3,h4,h5,h6){break-after:avoid}.prose figure,.prose pre{break-inside:avoid}.prose pre,.prose code{white-space:pre-wrap;overflow-wrap:anywhere}.prose table{display:table;width:100%}.prose table:not(.lntable) :is(th,td){min-width:0;white-space:normal;overflow-wrap:anywhere}.post-list,.post-row,.site-foot,.empty,.hero-tagline,.tl-tok{visibility:visible!important;opacity:1!important;animation:none!important;filter:none!important}.tl-tok::after{display:none!important}.site-foot,.is-page .site-foot{margin-top:24pt;padding-block:0}}.site-foot::before,.topbar::after{display:none}.post-list,.post-row,.post-head,.post-nav{border:0}.site-head .wrap{padding-right:124px}.site-head .wordmark{max-width:100%}.foot-links a{min-height:44px;display:inline-flex;align-items:center}.post-nav a{padding-block:12px}.post-nav{padding-top:0}.image-credit{display:block;margin-top:4px;font-size:.875rem}.prose figure img{max-width:100%;height:auto}.prose figure a{display:inline-block;max-width:100%}.prose .footnotes h2{font-size:1rem;margin:0 0 14px;color:var(--ink)}.prose .footnotes li,.prose [id^="fnref:"]{scroll-margin-top:calc(var(--bar-h) + 24px)}.prose .footnote-backref{display:inline-flex;min-width:44px;min-height:44px;align-items:center;justify-content:center}.prose sup a{padding:8px 5px}.article-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;max-width:var(--measure);margin-top:28px}.copy-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 0;border:0;background:0 0;color:var(--muted);font:inherit;font-size:.875rem;cursor:pointer}.copy-link[hidden],.copy-fallback[hidden]{display:none}.copy-link:hover{color:var(--ink)}.copy-link svg{width:18px;height:18px}.copy-status{font-size:.8125rem;color:var(--muted)}.copy-fallback{width:100%;font-size:.875rem}.copy-fallback textarea{display:block;width:100%;min-height:44px;padding:10px;margin-top:8px;font:inherit;font-size:16px;line-height:1.6;resize:vertical;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:6px}.related-articles{max-width:var(--measure);margin-top:36px}.related-articles h2{margin:0 0 8px;font-size:.875rem;font-weight:500;color:var(--muted)}.related-articles ul{list-style:none;padding:0;margin:0}.related-articles a{display:block;min-height:44px;padding-block:10px;text-decoration:none;overflow-wrap:anywhere;font-weight:500;line-height:1.5}.related-articles a:hover{text-decoration:underline;text-underline-offset:4px}.search-dialog{width:min(640px,calc(100% - 32px));max-width:none;max-height:calc(100dvh - 48px);margin:min(10vh,80px)auto 24px;padding:24px;color:var(--ink);background:var(--bg);border:0;border-radius:16px;box-shadow:0 24px 100px #0005;overflow-y:auto;overscroll-behavior:contain}.search-dialog::backdrop{background:#0009;backdrop-filter:blur(6px)}html:has(.search-dialog[open]),html:has(.search-dialog[open]) body{overflow:hidden}.search-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.search-heading h2{margin:0;font-size:1.25rem;font-weight:600}.search-label{display:block;font-size:.875rem;color:var(--muted);margin-bottom:8px}.search-input{display:block;width:100%;min-width:0;min-height:48px;padding:12px 14px;font:inherit;font-size:16px;background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:8px}.search-status{margin:16px 0 8px;font-size:.875rem;color:var(--muted)}.search-results{margin:0;padding:0;list-style:none}.search-results a{display:block;padding:16px 8px;margin-inline:-8px;text-decoration:none;border-radius:8px;overflow-wrap:anywhere}.search-results a:hover,.search-results a:focus-visible{background:var(--surface)}.search-results span{display:block}.search-result-title{font-weight:600;line-height:1.4}.search-result-description{margin-top:6px;font-size:.9375rem;line-height:1.6;color:var(--muted)}.search-result-date{margin-top:8px;font-size:.8125rem;color:var(--muted)}@media(max-width:1100px){.hero{padding-top:max(76px,calc(env(safe-area-inset-top) + 66px))}}@media(max-width:719px){.post-head{margin-top:32px;padding-bottom:0}.site-foot{row-gap:8px}.search-dialog{padding:16px;margin-top:16px;max-height:calc(100dvh - 32px)}.search-heading{margin-bottom:16px}.post-summary{font-size:.9375rem}.prose pre,.prose .highlight pre{padding:14px}}.site-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 32px}.footer-title{font-weight:500;line-height:1.5}.footer-theme{display:none}.footer-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px 28px;margin-left:auto;min-width:0}.footer-email{overflow-wrap:anywhere}.site-foot a{display:inline-flex;min-height:44px;align-items:center;max-width:100%;color:inherit;text-decoration:none}.site-foot a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}.image-zoom-trigger{display:block;max-width:100%;border:0;padding:0;background:0 0;color:inherit;cursor:zoom-in;border-radius:8px}.prose p .image-zoom-trigger{margin-block:1.8em}.prose .image-zoom-trigger img{margin:0}.image-viewer{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:max(72px,calc(env(safe-area-inset-top) + 60px))max(20px,env(safe-area-inset-right))max(24px,env(safe-area-inset-bottom))max(20px,env(safe-area-inset-left));border:0;background:var(--bg);color:var(--ink)}.image-viewer::backdrop{background:#000d}.image-close{position:absolute;right:max(12px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));z-index:1}.image-viewer-content{display:grid;grid-template-rows:minmax(0,1fr)auto;gap:16px;height:100%;width:100%;margin:0}.image-viewer-photo{width:100%;height:100%;min-height:0;object-fit:contain;cursor:zoom-out}.image-viewer figcaption{max-height:24dvh;overflow-y:auto;text-align:center;color:var(--muted);font-size:.875rem;overflow-wrap:anywhere}.image-viewer-caption{margin:0 0 4px}.image-original{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-underline-offset:4px}html:has(.image-viewer[open]),html:has(.image-viewer[open]) body{overflow:hidden}@media(max-width:599px){.site-foot{flex-direction:column;align-items:flex-start;gap:4px;font-size:.875rem}.footer-links{margin-left:0;justify-content:flex-start;gap:4px 24px}.image-viewer{padding-inline:12px}}@media(max-width:719px){.hero{padding-top:var(--hero-gap)}.is-home .site-tools{top:var(--search-top,calc(var(--hero-gap) + (100vw - 2 * var(--gutter))/11.3684 - 22px))}.site-head .wrap{padding-right:76px}.site-foot{display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:.875rem}.footer-theme{display:block;flex:0 0 44px;margin-left:auto}.footer-links{width:100%;margin-left:0;justify-content:flex-start;gap:4px 12px}}@media print{.image-viewer{display:none!important}.footer-theme{display:none!important}.image-zoom-trigger{cursor:default}}.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}