:root{color-scheme:light dark;--bg:light-dark(#fff,#16181b);--fg:light-dark(#212529,#dee2e6);--muted:light-dark(#6c757d,#9aa1a8);--link:light-dark(#0b5ed7,#6ea8fe);--link-hover:light-dark(#084298,#9ec5fe);--border:light-dark(#dee2e6,#343a40);--surface:light-dark(#f6f8fa,#1f2328);--nav-bg:light-dark(#212529,#0d0f11);--nav-fg:rgb(255 255 255 / .6);--nav-fg-hover:#fff;--code-kw:light-dark(#a626a4,#d2a8ff);--code-str:light-dark(#22863a,#7ee787);--code-num:light-dark(#b76b01,#f0b072);--code-com:#8b949e;--code-name:light-dark(#005cc5,#79c0ff);--code-tag:light-dark(#d73a49,#ff7b72);--maxw:72rem;--radius:.375rem;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}:root[data-theme="light"]{color-scheme:light}:root[data-theme="dark"]{color-scheme:dark}@supports not (color:light-dark(#fff,#000)){:root{--bg:#fff;--fg:#212529;--muted:#6c757d;--link:#0b5ed7;--link-hover:#084298;--border:#dee2e6;--surface:#f6f8fa;--nav-bg:#212529;--code-kw:#a626a4;--code-str:#22863a;--code-num:#b76b01;--code-name:#005cc5;--code-tag:#d73a49}.site-nav .theme-toggle{display:none}}*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:1rem/1.6 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-text-size-adjust:100%}h1,h2,h3,h4,h5,h6{margin:1.5em 0 .5em;font-weight:500;line-height:1.2}h1{font-size:clamp(1.75rem,1.4rem + 1.2vw,2.25rem)}h2{font-size:clamp(1.4rem,1.2rem + .8vw,1.75rem)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5,h6{font-size:1rem}p,ul,ol,dl,pre,table,blockquote,figure{margin:0 0 1rem}ul,ol{padding-left:1.75rem}li + li{margin-top:.25rem}a{color:var(--link);text-underline-offset:.15em}a:hover{color:var(--link-hover)}img,iframe,video,svg{max-width:100%}img,video{height:auto}hr{margin:2rem 0;border:0;border-top:1px solid var(--border)}small{font-size:.875em}sup{line-height:0}blockquote{padding:.25rem 0 .25rem 1rem;border-left:.25rem solid var(--border);color:var(--muted)}table{border-collapse:collapse}th,td{padding:.4rem .6rem;border:1px solid var(--border);text-align:left;vertical-align:top}th{background:var(--surface);font-weight:600}code,pre{font-family:var(--mono);font-size:.875em}:not(pre)>code{padding:.1em .3em;border-radius:.25rem;background:var(--surface)}pre{padding:.75rem 1rem;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);line-height:1.45}.site-nav{position:sticky;top:0;z-index:10;background:var(--nav-bg)}.site-nav .container{display:flex;flex-wrap:wrap;align-items:center;column-gap:1.5rem;padding-block:.5rem}.site-nav a{display:block;padding:.5rem 0;color:var(--nav-fg);text-decoration:none}.site-nav a:hover,.site-nav a:focus-visible{color:var(--nav-fg-hover)}.site-nav .brand{color:var(--nav-fg-hover);font-size:1.25rem}.site-nav ul{display:flex;flex-wrap:wrap;gap:1rem;margin:0;padding:0;list-style:none}.site-nav li + li{margin-top:0}.theme-toggle{display:none;margin-left:auto;padding:.4rem;border:0;border-radius:var(--radius);background:none;color:var(--nav-fg);cursor:pointer}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--nav-fg-hover)}.theme-toggle svg{width:1.25rem;height:1.25rem;vertical-align:middle}@media (min-width:48rem){.theme-toggle{display:block}}.icon-sun,:root[data-theme="dark"] .icon-moon{display:none}:root[data-theme="dark"] .icon-sun{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .icon-moon{display:none}:root:not([data-theme="light"]) .icon-sun{display:block}}.header-image{margin-bottom:2rem;padding-block:2rem 1.5rem;border-bottom:1px solid var(--border)}.header-image h1{margin:0}.header-image small{display:block;margin-top:.4rem;color:var(--muted);font-size:clamp(1rem,.9rem + .5vw,1.25rem);font-weight:400}.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:1rem}.layout{display:grid;gap:2.5rem;grid-template-columns:minmax(0,1fr);padding-bottom:3rem}@media (min-width:48rem){.layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}main>:first-child,main>article:first-child>:first-child{margin-top:0}article{overflow-wrap:break-word}article>h1,article>h2{margin-bottom:.25rem}article>h2 a{text-decoration:none}article>h2 a:hover{text-decoration:underline}article td,article th{overflow-wrap:anywhere}.article-meta{margin-bottom:1.5rem;color:var(--muted);font-size:.85rem}.read-more{text-align:right}.tags{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin-top:2rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.9rem}.sidebar{font-size:.95rem}.sidebar h3{margin-top:0;font-size:1.15rem}.sidebar section + section,.sidebar h3 ~ h3{margin-top:2rem}.tags-cloud{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.tags-cloud a{padding:.1rem .55rem;border:1px solid var(--border);border-radius:1rem;text-decoration:none;white-space:nowrap}.tags-cloud a:hover{border-color:currentColor}.pagination{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:2rem}.pagination>*{padding:.375rem .75rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none}.pagination span{color:var(--muted)}.pagination a:hover{background:var(--surface)}.highlighttable{display:grid;grid-template-columns:auto minmax(0,1fr);margin-bottom:1rem}.highlighttable tbody,.highlighttable tr{display:contents}.highlighttable td{padding:0;border:0}.highlighttable pre{height:100%;margin:0}.highlighttable .linenos pre{border-right:0;border-radius:var(--radius) 0 0 var(--radius);color:var(--muted);user-select:none}.highlighttable .code pre{border-radius:0 var(--radius) var(--radius) 0}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kt,.highlight .ow{color:var(--code-kw)}.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .se,.highlight .si,.highlight .ss,.highlight .gi{color:var(--code-str)}.highlight .m,.highlight .mi,.highlight .mf,.highlight .gu{color:var(--code-num)}.highlight .c,.highlight .c1,.highlight .cm,.highlight .ch,.highlight .cp{color:var(--code-com);font-style:italic}.highlight .nb,.highlight .bp,.highlight .nf,.highlight .nc,.highlight .nn,.highlight .nd,.highlight .na,.highlight .gh{color:var(--code-name)}.highlight .nt,.highlight .gd{color:var(--code-tag)}.highlight .gh,.highlight .gs{font-weight:600}.c3 text{fill:currentColor}article .c3 line,article .c3 path.domain{stroke:currentColor}