﻿@import url("https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&display=swap");@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap");@import url("https://fonts.googleapis.com/css2?family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;500;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap");@font-face{font-family:'Commit Mono';src:url("/fonts/CommitMono-400-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Commit Mono';src:url("/fonts/CommitMono-400-Italic.otf") format("opentype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Commit Mono';src:url("/fonts/CommitMono-700-Regular.otf") format("opentype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Commit Mono';src:url("/fonts/CommitMono-700-Italic.otf") format("opentype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Menlo';src:url("/fonts/Menlo-Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Menlo';src:url("/fonts/Menlo-Italic.ttf") format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Menlo';src:url("/fonts/Menlo-Bold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Menlo';src:url("/fonts/Menlo-BoldItalic.ttf") format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'MapleMonoNL';src:url("/fonts/MapleMonoNL-Regular.ttf.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'MapleMonoNL';src:url("/fonts/MapleMonoNL-Italic.ttf.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'MapleMonoNL';src:url("/fonts/MapleMonoNL-Bold.ttf.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'iA Writer Mono';src:url("/fonts/iAWriterMonoS-Regular.woff2") format("woff2"),url("/fonts/iAWriterMonoS-Regular.woff") format("woff"),url("/fonts/iAWriterMonoS-Regular.eot") format("embedded-opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'iA Writer Mono';src:url("/fonts/iAWriterMonoS-Italic.woff2") format("woff2"),url("/fonts/iAWriterMonoS-Italic.woff") format("woff"),url("/fonts/iAWriterMonoS-Italic.eot") format("embedded-opentype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'iA Writer Mono';src:url("/fonts/iAWriterMonoS-Bold.woff2") format("woff2"),url("/fonts/iAWriterMonoS-Bold.woff") format("woff"),url("/fonts/iAWriterMonoS-Bold.eot") format("embedded-opentype");font-weight:600 700;font-style:normal;font-display:swap}@font-face{font-family:'iA Writer Mono';src:url("/fonts/iAWriterMonoS-BoldItalic.woff2") format("woff2"),url("/fonts/iAWriterMonoS-BoldItalic.woff") format("woff"),url("/fonts/iAWriterMonoS-BoldItalic.eot") format("embedded-opentype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Monaspace Argon';src:url("/fonts/Monaspace Argon Var.woff2") format("woff2"),url("/fonts/Monaspace Argon Var.woff") format("woff");font-weight:200 900;font-style:normal;font-display:swap}@font-face{font-family:'Monaspace Neon';src:url("/fonts/Monaspace Neon Var.woff2") format("woff2"),url("/fonts/Monaspace Neon Var.woff") format("woff");font-weight:200 900;font-style:normal;font-display:swap}:root{--font-mono: 'Geist', 'Noto Sans Mono', 'Noto Sans SC', monospace;--font-sans: 'Geist Sans', 'Noto Sans SC', 'Noto Sans', sans-serif;--font-serif: 'Noto Serif SC', serif}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.admonition{margin:1.5rem 0;padding:0;border-radius:0.5rem;border:none;border-left:4px solid;overflow:hidden}.admonition .admonition-title{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1rem;font-weight:600;margin:0}.admonition .admonition-title .admonition-icon{display:inline-flex;align-items:center;justify-content:center;width:1.2rem;height:1.2rem;flex-shrink:0}.admonition .admonition-title .admonition-icon .icon{width:1.2rem;height:1.2rem;fill:currentColor}.admonition .admonition-content{padding:1rem 1rem 1rem 1rem}.admonition .admonition-content>*:first-child{margin-top:0}.admonition .admonition-content>*:last-child{margin-bottom:0}.admonition.admonition-collapsible summary.admonition-title{cursor:pointer;user-select:none;list-style:none}.admonition.admonition-collapsible summary.admonition-title::-webkit-details-marker{display:none}.admonition.admonition-collapsible summary.admonition-title .admonition-collapse-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.2rem;height:1.2rem;transition:transform 0.2s ease}.admonition.admonition-collapsible summary.admonition-title .admonition-collapse-icon .icon{width:1rem;height:1rem;fill:currentColor}.admonition.admonition-collapsible[open] .admonition-collapse-icon{transform:rotate(90deg)}.admonition-note,.admonition-info{border-left-color:#0ea5e9}.admonition-note .admonition-title,.admonition-info .admonition-title{background-color:rgba(14,165,233,0.1);color:#0ea5e9}.admonition-tip{border-left-color:#10b981}.admonition-tip .admonition-title{background-color:rgba(16,185,129,0.1);color:#10b981}.admonition-warning{border-left-color:#f59e0b}.admonition-warning .admonition-title{background-color:rgba(245,158,11,0.1);color:#f59e0b}.admonition-danger{border-left-color:#ef4444}.admonition-danger .admonition-title{background-color:rgba(239,68,68,0.1);color:#ef4444}.admonition-spoilers{border-left-color:#8b5cf6}.admonition-spoilers .admonition-title{background-color:rgba(139,92,246,0.1);color:#8b5cf6}body[a="dark"] .admonition-note .admonition-title,body[a="dark"] .admonition-info .admonition-title{background-color:rgba(14,165,233,0.2);color:#38bdf8}body[a="dark"] .admonition-tip .admonition-title{background-color:rgba(16,185,129,0.2);color:#34d399}body[a="dark"] .admonition-warning .admonition-title{background-color:rgba(245,158,11,0.2);color:#fbbf24}body[a="dark"] .admonition-danger .admonition-title{background-color:rgba(239,68,68,0.2);color:#f87171}body[a="dark"] .admonition-spoilers .admonition-title{background-color:rgba(139,92,246,0.2);color:#a78bfa}blockquote{margin:1.5rem 0;padding:1rem 1.5rem;border-left:4px solid;font-style:italic}blockquote footer{margin-top:1rem;font-style:normal;font-size:0.9rem;opacity:0.8}blockquote footer cite{font-weight:600}blockquote footer cite::before{content:"— "}blockquote>*:last-child{margin-bottom:0}body[a="dark"]{background-color:#000;color:#fff;--syntax-bg: #282c34;--syntax-fg: #abb2bf;--syntax-subtle: #5c6370;--syntax-comment: #5c6370;--syntax-keyword: #c678dd;--syntax-entity: #e06c75;--syntax-literal: #56b6c2;--syntax-string: #98c379;--syntax-variable: #d19a66;--syntax-function: #61aeee;--syntax-class: #e6c07b;--syntax-highlight-bg: #3d4451}body[a="dark"] a{color:#79a8ff}body[a="dark"] a:visited{color:#f78fe7}body[a="dark"] details:not(.admonition){border:thin solid #fff}body[a="dark"] details:not(.admonition) summary{color:#fff}body[a="dark"] details:not(.admonition)[open] summary{border-bottom:1px solid #fff}body[a="dark"] pre:not(.chroma):not(.highlight pre){background:#000}body[a="dark"] code:not(pre>code){background-color:#fff;color:#000}body[a="dark"] *:target{background:#2f3849;color:#fff}body[a="dark"] table,body[a="dark"] th,body[a="dark"] td{border:thin solid #fff}body[a="dark"] .toc{border:thin solid #fff;padding:1rem}body[a="dark"] figcaption{color:#000}body[a="dark"] blockquote{border:thin solid #fff}body[a="dark"] .excerpt-box{border:thin solid #fff;padding:1rem}body[a="light"]{background-color:#fff;color:#000;--syntax-bg: #f7f7f7;--syntax-fg: #383a42;--syntax-subtle: #a0a1a7;--syntax-comment: #a0a1a7;--syntax-keyword: #a626a4;--syntax-entity: #e45649;--syntax-literal: #0184bb;--syntax-string: teal;--syntax-variable: #986801;--syntax-function: #4078f2;--syntax-class: #c18401;--syntax-highlight-bg: #e8e8e8}body[a="light"] a{color:#3548cf}body[a="light"] a:visited{color:#8f0075}body[a="light"] details:not(.admonition){border:thin solid #000}body[a="light"] details:not(.admonition) summary{color:#000}body[a="light"] details:not(.admonition)[open] summary{border-bottom:1px solid #000}body[a="light"] pre:not(.chroma):not(.highlight pre){background:#fff}body[a="light"] code:not(pre>code){background-color:#000;color:#fff}body[a="light"] *:target{background:#dae5ec;color:#000}body[a="light"] table,body[a="light"] th,body[a="light"] td{border:thin solid #000}body[a="light"] .toc{border:thin solid #000;padding:1rem}body[a="light"] figcaption{color:#595959}body[a="light"] blockquote{border:thin solid #000}body[a="light"] .excerpt-box{border:thin solid #000;padding:1rem}@media (prefers-color-scheme: dark){body[a="auto"]{background-color:#000;color:#fff;--syntax-bg: #282c34;--syntax-fg: #abb2bf;--syntax-subtle: #5c6370;--syntax-comment: #5c6370;--syntax-keyword: #c678dd;--syntax-entity: #e06c75;--syntax-literal: #56b6c2;--syntax-string: #98c379;--syntax-variable: #d19a66;--syntax-function: #61aeee;--syntax-class: #e6c07b;--syntax-highlight-bg: #3d4451}body[a="auto"] a{color:#79a8ff}body[a="auto"] a:visited{color:#f78fe7}body[a="auto"] details:not(.admonition){border:thin solid #fff}body[a="auto"] details:not(.admonition) summary{color:#fff}body[a="auto"] details:not(.admonition)[open] summary{border-bottom:1px solid #fff}body[a="auto"] pre:not(.chroma):not(.highlight pre){background:#000}body[a="auto"] code:not(pre>code){background-color:#fff;color:#000}body[a="auto"] *:target{background:#2f3849;color:#fff}body[a="auto"] table,body[a="auto"] th,body[a="auto"] td{border:thin solid #fff}body[a="auto"] .toc{border:thin solid #fff;padding:1rem}body[a="auto"] figcaption{color:#000}body[a="auto"] blockquote{border:thin solid #fff}body[a="auto"] .excerpt-box{border:thin solid #fff;padding:1rem}}@media (prefers-color-scheme: light){body[a="auto"]{background-color:#fff;color:#000;--syntax-bg: #f7f7f7;--syntax-fg: #383a42;--syntax-subtle: #a0a1a7;--syntax-comment: #a0a1a7;--syntax-keyword: #a626a4;--syntax-entity: #e45649;--syntax-literal: #0184bb;--syntax-string: teal;--syntax-variable: #986801;--syntax-function: #4078f2;--syntax-class: #c18401;--syntax-highlight-bg: #e8e8e8}body[a="auto"] a{color:#3548cf}body[a="auto"] a:visited{color:#8f0075}body[a="auto"] details:not(.admonition){border:thin solid #000}body[a="auto"] details:not(.admonition) summary{color:#000}body[a="auto"] details:not(.admonition)[open] summary{border-bottom:1px solid #000}body[a="auto"] pre:not(.chroma):not(.highlight pre){background:#fff}body[a="auto"] code:not(pre>code){background-color:#000;color:#fff}body[a="auto"] *:target{background:#dae5ec;color:#000}body[a="auto"] table,body[a="auto"] th,body[a="auto"] td{border:thin solid #000}body[a="auto"] .toc{border:thin solid #000;padding:1rem}body[a="auto"] figcaption{color:#595959}body[a="auto"] blockquote{border:thin solid #000}body[a="auto"] .excerpt-box{border:thin solid #000;padding:1rem}}html{height:100%;scroll-behavior:smooth}body{font-family:var(--font-mono);font-size:16px;font-weight:400;letter-spacing:0.5px;line-height:1.6;margin:0;min-height:100%;overflow-wrap:break-word}.post-excerpt{margin:0.25rem 0 1rem;font-size:0.95rem;line-height:1.5;opacity:.85;word-wrap:break-word;overflow-wrap:break-word}.post-description{margin:.25rem 0 1rem;font-style:italic;opacity:.85}pre,code{font-family:var(--font-mono);font-weight:400}h2,h3,h4,h5,h6{margin-top:1.5rem}h1[id],h2[id],h3[id]{scroll-margin-top:5rem}p{margin:1rem 0}ul{padding-inline-start:0px}li{margin:0.4rem 0}.bullet-list{list-style:none;margin:0.5rem 0;padding-inline-start:0}.bullet-list li{position:relative;margin:0.2rem 0;padding-inline-start:1.1rem}.bullet-list li::before{content:"•";position:absolute;inset-inline-start:0;top:0.4em;font-size:0.9em;line-height:1}a{text-decoration:none}a:hover{text-decoration:underline}hr{text-align:center;border:0;margin:2rem 0}hr:before{content:'/////'}hr:after{content:attr(data-content) "/////"}pre{padding:1em;overflow-x:auto}table{width:100%}table,th,td{border-collapse:collapse;padding:0.4rem}code{text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}code:not(pre>code){padding:0.1em 0.2em;font-size:90%}code.has-jax{-webkit-font-smoothing:antialiased;background:inherit !important;border:none !important;font-size:100%}blockquote{padding:1rem}blockquote p{margin:0}img{max-width:100%;display:block;margin:0 auto}figcaption{text-align:center;opacity:0.5}details{padding:1rem}details summary{text-decoration:none}details[open] summary{margin-bottom:0.5em;padding-bottom:0.5em}.post-meta{display:flex;justify-content:space-between;align-items:center}.site-nav{align-items:center;background-color:inherit;border-bottom:1px solid #eee;display:flex;gap:2rem;justify-content:flex-start;padding:0.85rem clamp(1.25rem, 5vw, 3rem);position:sticky;top:0;z-index:10}.site-nav .site-nav-title{color:#111;font-weight:700;letter-spacing:0}.site-nav .site-nav-title:visited{color:#111}.site-nav-links{align-items:center;display:flex;flex-wrap:wrap;gap:0.5rem 1.2rem;justify-content:flex-start}.site-nav .site-nav-links a,.site-nav .site-nav-links a:visited{color:#555;opacity:1}.site-nav .site-nav-links a:hover,.site-nav .site-nav-links a:visited:hover{color:#555;text-decoration:none}.site-shell{display:grid;gap:3rem;grid-template-columns:minmax(240px, 300px) minmax(0, 760px);margin:0 auto;max-width:1180px;padding:3rem 2rem 4rem}.w{min-width:0;margin-top:-1.5rem}.toc{padding:1rem}.search-container{margin:2rem 0}#search-input{width:100%;padding:0.5rem;font-size:1rem;font-family:var(--font-mono);font-weight:400;border:1px solid;background-color:transparent;color:inherit}#search-results{list-style-type:none;padding:0;margin-top:1rem}#search-results li a{display:block;padding:0.5rem;text-decoration:none}#search-results li a:hover{text-decoration:underline}.categories .category-group{margin-bottom:2rem}.categories .category-group h2{margin-bottom:0.5rem;border-bottom:1px solid #ccc;padding-bottom:0.25rem}.categories .category-group h2 a{text-decoration:none;color:inherit}.categories .category-group h2 a:hover{text-decoration:underline}.categories .category-group ul{margin-top:0.5rem}.categories .category-group ul li{margin-bottom:0.25rem}.categories .category-group ul li span{margin-right:0.5rem}.bg{background-color:var(--syntax-bg)}.chroma{color:var(--syntax-fg);background-color:var(--syntax-bg)}.chroma .err{color:var(--syntax-entity)}.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:var(--syntax-highlight-bg)}.chroma .lnt{color:var(--syntax-subtle)}.chroma .ln{color:var(--syntax-subtle)}.chroma .line{display:flex}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--syntax-comment);font-style:italic}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .ow{color:var(--syntax-keyword)}.chroma .kc,.chroma .no{color:var(--syntax-literal)}.chroma .kt{color:var(--syntax-variable)}.chroma .n{color:var(--syntax-fg)}.chroma .na{color:var(--syntax-variable)}.chroma .nb,.chroma .nc,.chroma .bp{color:var(--syntax-class)}.chroma .nd{color:var(--syntax-function)}.chroma .ni{color:var(--syntax-function)}.chroma .ne{color:var(--syntax-function)}.chroma .nf,.chroma .fm{color:var(--syntax-function)}.chroma .nl{color:var(--syntax-fg)}.chroma .nn{color:var(--syntax-fg)}.chroma .nx{color:var(--syntax-fg)}.chroma .nt{color:var(--syntax-entity)}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:var(--syntax-variable)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--syntax-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--syntax-variable)}.chroma .o{color:var(--syntax-fg)}.chroma .p{color:var(--syntax-fg)}.chroma .gd{color:var(--syntax-entity)}.chroma .ge{font-style:italic}.chroma .gh{color:var(--syntax-entity)}.chroma .gi{color:var(--syntax-string)}.chroma .gs{font-weight:bold}.chroma .gu{color:var(--syntax-entity)}.chroma .gl{text-decoration:underline}.post-content .highlight:not(table){background:var(--syntax-bg) !important}.post-content pre code{background:var(--syntax-bg) !important;color:var(--syntax-fg)}.highlight pre.chroma code{padding:10px}.post-excerpt{margin:0.5rem 0 0 0;font-size:0.9rem;line-height:1.5;opacity:0.7;color:inherit;font-style:normal;word-wrap:break-word;overflow-wrap:break-word;max-width:none;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.excerpt-box{border:none !important;padding:0 !important;margin:0;background:none}.post-list li{display:list-item}.post-list li .post-item-container{display:flex;align-items:flex-start;gap:1rem}.post-list li .post-content{flex:1}body[a="dark"] .post-excerpt{opacity:0.6}.site-sidebar{align-self:start;position:sticky;top:1.5rem}.profile-info h2{margin-bottom:0}.profile-name-alt{display:block;margin-top:0.2rem;opacity:0.72}.profile-detail{display:grid;grid-template-columns:1.4em auto;column-gap:0.5em;align-items:start;margin-top:0;margin-bottom:0.4em}.profile-detail:last-of-type{margin-bottom:0}.profile-detail i{justify-self:center;text-align:center;margin-top:0.35em}.profile-pic{width:170px;height:170px;border-radius:50%;box-shadow:0 4px 10px rgba(0,0,0,0.1);transition:transform 0.3s ease;object-fit:cover;margin:0 0 1.25rem 0}.profile-pic:hover{transform:scale(1.04)}.contact-box{display:inline-flex;flex-direction:column;align-items:flex-start;gap:0.45em;margin-top:0.6em;font-size:0.95em;line-height:1.8}.contact-item{display:grid;grid-template-columns:1.4em auto;column-gap:0.5em;align-items:center;white-space:nowrap}.contact-item i{justify-self:center;text-align:center}.site-sidebar .profile-info a,.site-sidebar .profile-info a:visited,.site-sidebar .profile-info a:hover,.site-sidebar .profile-info a:focus{color:#111;text-decoration:none;display:inline-block}.emoji{font-family:Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, sans-serif;font-size:1.1em;margin-right:0.3em}body[a="dark"] .profile-pic{box-shadow:0 4px 10px rgba(255,255,255,0.1)}body[a="dark"] .site-nav{border-bottom-color:#333}.last-updated{text-align:left;margin-top:2em;padding-top:1em;border-top:1px solid #eee;font-size:0.8em;color:#888}body[a="dark"] .last-updated{border-top-color:#333;color:#aaa}@media (max-width: 768px){.site-nav{align-items:flex-start;flex-direction:column;gap:0.75rem;padding:1rem 1.25rem}.site-nav-links{justify-content:flex-start}.site-shell{display:block;padding:1.5rem 1.25rem 3rem}.site-sidebar{border-bottom:1px solid #eee;display:grid;gap:0 1rem;grid-template-columns:84px minmax(0, 1fr);margin-bottom:2rem;padding-bottom:1.5rem;position:static}.profile-pic{grid-row:1;height:84px;width:84px}.profile-info h2{font-size:1.35rem;line-height:1.15;margin-top:0}.profile-name-alt{margin-bottom:0.5rem}.profile-detail{font-size:0.95rem;line-height:1.4;margin-bottom:0.3rem}.profile-detail,.contact-item{white-space:normal}.contact-box{font-size:0.95rem;gap:0.25rem;line-height:1.4;margin-top:0.45rem}body[a="dark"] .site-sidebar{border-bottom-color:#333}}
