html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:initial}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-Regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-Italic.woff2)format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-Medium.woff2)format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-SemiBold.woff2)format('woff2');font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-Bold.woff2)format('woff2');font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:dark;--brand:#2433f3;--bg:#0a0a0a;--bg-subtle:#0e0e0e;--text:#e8e8e8;--text-muted:#c4c4c4;--text-dim:#6b6b6b;--primary:#ffffff;--accent:#9197eb;--accent-bg:#11121b;--border:#1e1e1e;--image-filter:brightness(0.85) contrast(1.05);--space-xxs:0.25rem;--space-xs:0.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--font-base:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;--font-mono:'JetBrains Mono', 'Courier New', monospace;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-2xl:2rem}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light;--bg:#f7f9fc;--bg-subtle:#eef1f7;--text:#1b1d24;--text-muted:#444b57;--text-dim:#6f7785;--primary:#1b1d24;--accent:#2433f3;--accent-bg:#eaecfb;--border:#d5dcea;--image-filter:brightness(1) contrast(1)}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--bg:#f7f9fc;--bg-subtle:#eef1f7;--text:#1b1d24;--text-muted:#444b57;--text-dim:#6f7785;--primary:#1b1d24;--accent:#2433f3;--accent-bg:#2433f310;--border:#d5dcea;--image-filter:brightness(1) contrast(1)}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:var(--text-base);line-height:1.6;max-width:48rem;margin:0 auto;padding:0 var(--space-sm);transition:background .2s ease,color .2s ease}nav{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md)0;border-bottom:1px dashed var(--border);gap:var(--space-md)}nav>div{display:flex;gap:var(--space-sm);align-items:center}nav a{color:var(--text-muted);text-decoration:none;line-height:0}nav a:hover{color:var(--accent)}nav img{width:2rem;height:2rem;border-radius:50%}.nav-avatar{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:0;background:0 0;color:var(--text-muted);cursor:pointer;font-size:var(--text-base);transition:color .2s ease,border-color .2s ease,background .2s ease}.theme-toggle:hover{color:var(--accent)}.theme-toggle__icon{display:inline-flex;align-items:center;justify-content:center}.theme-toggle__icon svg{width:24px;height:24px}main{margin-bottom:var(--space-xl)}main>section+section{border-top:1px dashed var(--border);padding-top:var(--space-lg);margin-top:var(--space-lg)}main>section h1{font-size:var(--text-2xl);font-weight:600;margin-bottom:var(--space-sm)}main>section p:first-of-type{font-size:var(--text-lg);color:var(--text-muted);line-height:1.8;margin-bottom:var(--space-lg)}main>section h2{font-size:var(--text-lg);font-weight:500;margin-bottom:var(--space-sm)}main>section ul{list-style-type:none}dl{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xs)var(--space-md);margin-bottom:var(--space-lg)}dt{font-size:var(--text-sm);color:var(--text-dim);font-family:var(--font-mono);min-width:7rem}dd a{color:var(--text-muted);text-decoration:none}dd a:hover{color:var(--accent)}@media(max-width:640px){dl{grid-template-columns:1fr;gap:var(--space-xxs)}dt{min-width:0}dd{margin-bottom:var(--space-sm)}}footer{display:flex;gap:var(--space-xs);padding-top:var(--space-lg);border-top:1px dashed var(--border);margin-bottom:var(--space-lg);justify-content:space-between}footer a{color:var(--text-dim);text-decoration:none}footer a:hover{color:var(--accent)}footer svg{width:1.5rem;height:1.5rem}footer span{font-size:var(--text-sm);color:var(--text-dim)}article{color:var(--text)}article h1{font-size:var(--text-2xl);font-weight:600;margin:var(--space-md)0 var(--space-lg);line-height:1.2}article>hr+div{display:flex;flex-direction:column;gap:var(--space-xxs);margin-bottom:var(--space-lg);font-size:var(--text-sm)}article>hr+div time+time{color:var(--text-muted)}article h2{font-size:var(--text-xl);font-weight:600;margin-top:var(--space-lg);margin-bottom:var(--space-sm)}article h3{font-size:var(--text-lg);font-weight:500;margin-top:var(--space-md);margin-bottom:var(--space-xs)}article p{margin-bottom:var(--space-sm);color:var(--text-muted);line-height:1.7}article a{color:var(--primary);text-decoration:underline;text-decoration-style:dashed;text-underline-offset:.5rem}article a:hover{color:var(--accent)}article sup>a{text-decoration:none}article strong{color:var(--text);font-weight:600}article code{font-family:var(--font-mono);font-size:.9em;color:var(--accent);background:var(--accent-bg);padding:.125rem .375rem;border-radius:.25rem}article pre{background:var(--bg-subtle);padding:var(--space-sm);border-radius:.25rem;overflow-x:auto;margin-bottom:var(--space-sm);scrollbar-width:thin;scrollbar-color:var(--border)var(--bg-subtle)}article pre::-webkit-scrollbar{height:.5rem}article pre::-webkit-scrollbar-track{background:var(--bg-subtle)}article pre::-webkit-scrollbar-thumb{background:var(--border);border-radius:.25rem}article pre::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}article pre code{background:0 0;padding:0;color:var(--text)}article blockquote{border-left:3px solid var(--accent);background:var(--accent-bg);padding:var(--space-xs)var(--space-sm);margin:var(--space-sm)0;color:var(--text-muted);font-style:italic}article blockquote p{margin:0}article>ul,article>ol{padding-left:var(--space-md);margin-bottom:var(--space-sm);color:var(--text-muted)}article li{margin:var(--space-xxs)var(--space-md)}article img{max-width:100%;height:auto;margin:var(--space-sm)0;filter:var(--image-filter);transition:filter .2s}article img:hover{filter:brightness(1)contrast(1)}article hr{border:none;height:1px;background:var(--border);margin:var(--space-lg)0}article table{width:100%;border-collapse:collapse;margin:var(--space-sm)0}article th,article td{padding:.5rem;text-align:left;border:1px solid var(--border)}article th{background:var(--bg-subtle);font-weight:600}article td{color:var(--text-muted)}.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 .line{display:flex}:root[data-theme=dark] .bg,:root[data-theme=dark] .chroma{color:#cdd6f4;background-color:var(--bg-subtle)}:root[data-theme=dark] .chroma .err{color:#f38ba8}:root[data-theme=dark] .chroma .hl{background-color:#45475a}:root[data-theme=dark] .chroma .lnt,:root[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}:root[data-theme=dark] .chroma .k,:root[data-theme=dark] .chroma .nt{color:#cba6f7}:root[data-theme=dark] .chroma .kc,:root[data-theme=dark] .chroma .nn,:root[data-theme=dark] .chroma .py,:root[data-theme=dark] .chroma .m,:root[data-theme=dark] .chroma .mb,:root[data-theme=dark] .chroma .mf,:root[data-theme=dark] .chroma .mh,:root[data-theme=dark] .chroma .mi,:root[data-theme=dark] .chroma .il,:root[data-theme=dark] .chroma .mo{color:#fab387}:root[data-theme=dark] .chroma .kd,:root[data-theme=dark] .chroma .kt{color:#f38ba8}:root[data-theme=dark] .chroma .kn,:root[data-theme=dark] .chroma .sr,:root[data-theme=dark] .chroma .ni{color:#94e2d5}:root[data-theme=dark] .chroma .na,:root[data-theme=dark] .chroma .se{color:#89b4fa}:root[data-theme=dark] .chroma .nb,:root[data-theme=dark] .chroma .bp,:root[data-theme=dark] .chroma .nl{color:#89dceb}:root[data-theme=dark] .chroma .nc,:root[data-theme=dark] .chroma .no{color:#f9e2af}:root[data-theme=dark] .chroma .nd{color:#89b4fa;font-weight:600}:root[data-theme=dark] .chroma .ne{color:#fab387}:root[data-theme=dark] .chroma .nf,:root[data-theme=dark] .chroma .fm{color:#89b4fa}:root[data-theme=dark] .chroma .nv,:root[data-theme=dark] .chroma .vc,:root[data-theme=dark] .chroma .vg,:root[data-theme=dark] .chroma .vi,:root[data-theme=dark] .chroma .vm{color:#f5e0dc}:root[data-theme=dark] .chroma .s,:root[data-theme=dark] .chroma .sb,:root[data-theme=dark] .chroma .sc,:root[data-theme=dark] .chroma .s2,:root[data-theme=dark] .chroma .si,:root[data-theme=dark] .chroma .sx,:root[data-theme=dark] .chroma .s1,:root[data-theme=dark] .chroma .ss{color:#a6e3a1}:root[data-theme=dark] .chroma .sa{color:#f38ba8}:root[data-theme=dark] .chroma .dl{color:#89b4fa}:root[data-theme=dark] .chroma .sd,:root[data-theme=dark] .chroma .sh,:root[data-theme=dark] .chroma .c,:root[data-theme=dark] .chroma .ch,:root[data-theme=dark] .chroma .cm,:root[data-theme=dark] .chroma .c1,:root[data-theme=dark] .chroma .cs,:root[data-theme=dark] .chroma .cp{color:#6c7086;font-style:italic}:root[data-theme=dark] .chroma .cpf{color:#6c7086;font-weight:600;font-style:italic}:root[data-theme=dark] .chroma .sr{color:#94e2d5}:root[data-theme=dark] .chroma .o,:root[data-theme=dark] .chroma .ow{color:#89dceb;font-weight:600}:root[data-theme=dark] .chroma .gd{color:#f38ba8;background-color:#313244}:root[data-theme=dark] .chroma .gi{color:#a6e3a1;background-color:#313244}:root[data-theme=dark] .chroma .gh,:root[data-theme=dark] .chroma .gu{color:#fab387;font-weight:600}:root[data-theme=dark] .chroma .ge{font-style:italic}:root[data-theme=dark] .chroma .gs{font-weight:600}:root[data-theme=dark] .chroma .gr,:root[data-theme=dark] .chroma .gt,:root[data-theme=dark] .chroma .err{color:#f38ba8}:root[data-theme=dark] .chroma .gl{text-decoration:underline}:root[data-theme=light] .bg,:root[data-theme=light] .chroma{color:#4c4f69;background-color:var(--bg-subtle)}:root[data-theme=light] .chroma .err{color:#d20f39}:root[data-theme=light] .chroma .hl{background-color:#bcc0cc}:root[data-theme=light] .chroma .lnt,:root[data-theme=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8c8fa1}:root[data-theme=light] .chroma .k,:root[data-theme=light] .chroma .nt{color:#8839ef}:root[data-theme=light] .chroma .kc,:root[data-theme=light] .chroma .nn,:root[data-theme=light] .chroma .py,:root[data-theme=light] .chroma .m,:root[data-theme=light] .chroma .mb,:root[data-theme=light] .chroma .mf,:root[data-theme=light] .chroma .mh,:root[data-theme=light] .chroma .mi,:root[data-theme=light] .chroma .il,:root[data-theme=light] .chroma .mo{color:#fe640b}:root[data-theme=light] .chroma .kd,:root[data-theme=light] .chroma .kt{color:#d20f39}:root[data-theme=light] .chroma .kn,:root[data-theme=light] .chroma .sr,:root[data-theme=light] .chroma .ni{color:#179299}:root[data-theme=light] .chroma .na,:root[data-theme=light] .chroma .se{color:#1e66f5}:root[data-theme=light] .chroma .nb,:root[data-theme=light] .chroma .bp,:root[data-theme=light] .chroma .nl{color:#04a5e5}:root[data-theme=light] .chroma .nc,:root[data-theme=light] .chroma .no{color:#df8e1d}:root[data-theme=light] .chroma .nd{color:#1e66f5;font-weight:600}:root[data-theme=light] .chroma .ne{color:#fe640b}:root[data-theme=light] .chroma .nf,:root[data-theme=light] .chroma .fm{color:#1e66f5}:root[data-theme=light] .chroma .nv,:root[data-theme=light] .chroma .vc,:root[data-theme=light] .chroma .vg,:root[data-theme=light] .chroma .vi,:root[data-theme=light] .chroma .vm{color:#dc8a78}:root[data-theme=light] .chroma .s,:root[data-theme=light] .chroma .sb,:root[data-theme=light] .chroma .sc,:root[data-theme=light] .chroma .s2,:root[data-theme=light] .chroma .si,:root[data-theme=light] .chroma .sx,:root[data-theme=light] .chroma .s1,:root[data-theme=light] .chroma .ss{color:#40a02b}:root[data-theme=light] .chroma .sa{color:#d20f39}:root[data-theme=light] .chroma .dl{color:#1e66f5}:root[data-theme=light] .chroma .sd,:root[data-theme=light] .chroma .sh,:root[data-theme=light] .chroma .c,:root[data-theme=light] .chroma .ch,:root[data-theme=light] .chroma .cm,:root[data-theme=light] .chroma .c1,:root[data-theme=light] .chroma .cs,:root[data-theme=light] .chroma .cp{color:#9ca0b0;font-style:italic}:root[data-theme=light] .chroma .cpf{color:#9ca0b0;font-weight:600;font-style:italic}:root[data-theme=light] .chroma .o,:root[data-theme=light] .chroma .ow{color:#04a5e5;font-weight:600}:root[data-theme=light] .chroma .gd{color:#d20f39;background-color:#ccd0da}:root[data-theme=light] .chroma .gi{color:#40a02b;background-color:#ccd0da}:root[data-theme=light] .chroma .gh,:root[data-theme=light] .chroma .gu{color:#fe640b;font-weight:600}:root[data-theme=light] .chroma .ge{font-style:italic}:root[data-theme=light] .chroma .gs{font-weight:600}:root[data-theme=light] .chroma .gr,:root[data-theme=light] .chroma .gt,:root[data-theme=light] .chroma .err{color:#d20f39}:root[data-theme=light] .chroma .gl{text-decoration:underline}@media(prefers-color-scheme:light){:root:not([data-theme]) .bg,:root:not([data-theme]) .chroma{color:#4c4f69;background-color:#eff1f5}:root:not([data-theme]) .chroma .lnt,:root:not([data-theme]) .chroma .ln{color:#8c8fa1;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em}}