:root{--bg:#e6e7e9;--surface:#f1f2f3;--on-surface:#2b2f33;--muted:#6b7178;--outline:#d0d3d7;--bar:#37474f;--on-bar:#e3e7ea;--bar-muted:#9aa8b0;--accent:#5c7a8a;--positive:#4e7a52;--danger:#9a4e48;--on-btn:#f3f4f2;--ok-bg:#dbe5da;--ok-fg:#3d6640;--warn-bg:#ece2cf;--warn-fg:#82601f;--error-bg:#ecdad8;--error-fg:#893a34;--neutral-bg:#dcdee1;--neutral-fg:#555b61;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg:#181a1c;--surface:#212427;--on-surface:#d3d6d9;--muted:#868d94;--outline:#32363a;--bar:#263036;--on-bar:#d3d9dd;--bar-muted:#7f8d95;--accent:#7f9cab;--positive:#46704a;--danger:#8c4741;--on-btn:#eceeec;--ok-bg:#25332a;--ok-fg:#98bd9c;--warn-bg:#362f22;--warn-fg:#d0ae74;--error-bg:#3a2625;--error-fg:#d99c97;--neutral-bg:#2d3134;--neutral-fg:#a3a9af}}*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--on-surface);font-family:jetbrains mono,ui-monospace,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--on-surface)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3}h1{color:var(--error-fg)}h2{color:var(--ok-fg)}h3{color:var(--accent)}.postBody :is(h1,h2,h3),.listContent :is(h1,h2,h3){text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}img{max-width:100%;height:auto}.label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1.2px}.card{background:var(--surface);border:1px solid var(--outline);border-radius:8px;padding:18px}.chip{display:inline-block;padding:3px 10px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;background:var(--neutral-bg);color:var(--neutral-fg)}.cursor{margin-left:2px;color:var(--muted);font-weight:400;animation:blink 1.1s steps(1)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}@font-face{font-family:jetbrains mono;src:url(../fonts/JetBrainsMono/jetbrains-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(../fonts/JetBrainsMono/jetbrains-mono-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:cascadia mono;src:url(../fonts/CascadiaMono/cascadia-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:cascadia mono;src:url(../fonts/CascadiaMono/cascadia-mono-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:cascadia mono;src:url(../fonts/CascadiaMono/cascadia-mono-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}.footer{max-width:120ch;width:100%;margin:0 auto;padding:16px 16px 24px;border-top:1px dashed var(--outline);font-size:11px;color:var(--muted)}.footer a{color:inherit}.headerWrapper{background:var(--bar);color:var(--on-bar);font-family:cascadia mono,cascadia code,ui-monospace,Menlo,Consolas,monospace}.header{position:relative;max-width:120ch;margin:0 auto;padding:14px 16px;display:flex;justify-content:space-between;align-items:center}.terminal{margin:0;font-size:15px;font-weight:600;letter-spacing:.2px}.terminal a{color:var(--on-bar);text-decoration:none}.prompt{color:var(--bar-muted);margin-left:6px;font-weight:400}.headerLinks ul{list-style:none;padding:0;margin:0;display:flex;gap:16px}.headerLinks ul a{color:var(--bar-muted);text-decoration:none;font-size:13px}.headerLinks ul a:hover,.headerLinks ul a[aria-current=page]{color:var(--on-bar)}.side-menu{display:none}.hamb{display:none;cursor:pointer;padding:10px 4px}.hamb-line,.hamb-line::before,.hamb-line::after{display:block;width:20px;height:2px;background:var(--on-bar)}.hamb-line{position:relative}.hamb-line::before,.hamb-line::after{content:"";position:absolute;transition:transform .2s ease-out}.hamb-line::before{top:6px}.hamb-line::after{top:-6px}.side-menu:checked~.hamb .hamb-line{background:0 0}.side-menu:checked~.hamb .hamb-line::before{transform:rotate(-45deg);top:0}.side-menu:checked~.hamb .hamb-line::after{transform:rotate(45deg);top:0}@media screen and (max-width:768px){.hamb{display:block}.headerLinks{display:none;position:absolute;top:100%;left:0;right:0;z-index:10;background:var(--bar);border-top:1px solid var(--bar-muted);padding:12px 16px}.headerLinks ul{flex-direction:column;gap:10px}.side-menu:checked~.headerLinks{display:block}}.postList{display:grid;gap:12px}.postListItem{display:block;padding:14px 16px;color:inherit;text-decoration:none;transition:border-color .15s}.postListItem:hover{color:inherit;border-color:var(--accent)}.postTitle{display:block;margin:2px 0 4px;font-size:15px;font-weight:600}.postExcerpt{margin:0;font-family:cascadia mono,cascadia code,ui-monospace,Menlo,Consolas,monospace;font-size:13px;color:var(--muted)}.socialNavbar ul{list-style:none;padding:0;margin:0;display:flex;gap:8px}.socialNavbar ul a{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--outline);border-radius:8px;background:var(--surface);color:var(--muted);text-decoration:none;transition:border-color .15s,color .15s}.socialNavbar ul a:hover{border-color:var(--accent);color:var(--on-surface)}.chroma{color:var(--on-surface)}.chroma .line{display:flex}.chroma .ln,.chroma .lnt{margin-right:.4em;padding-right:1em;color:var(--muted);opacity:.6;user-select:none}.chroma .ln a,.chroma .lnt a{color:inherit;text-decoration:none}.chroma .hl{display:block;background:var(--neutral-bg)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--muted);font-style:italic}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nt,.chroma .ow{color:var(--accent);font-weight:600}.chroma .kt{color:var(--accent)}.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(--ok-fg)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .no,.chroma .bp{color:var(--warn-fg)}.chroma .nf,.chroma .fm,.chroma .nc,.chroma .nn{font-weight:600}.chroma .nb,.chroma .na,.chroma .nd,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:var(--neutral-fg)}.chroma .gi{color:var(--ok-fg);background:var(--ok-bg)}.chroma .gd{color:var(--error-fg);background:var(--error-bg)}.chroma .err{color:var(--error-fg)}.chroma .gh,.chroma .gu{color:var(--accent);font-weight:600}.post h1{font-size:24px;margin:4px 0 12px}.post h2{font-size:18px;margin:32px 0 8px}.post h3{font-size:15px;margin:24px 0 6px}.post h4,.post h5,.post h6{font-size:14px;margin:20px 0 6px}.postBody{font-family:cascadia mono,cascadia code,ui-monospace,Menlo,Consolas,monospace;font-size:14px}.postBody :is(h1,h2,h3,h4,h5,h6,pre,code,table){font-family:jetbrains mono,ui-monospace,sf mono,Menlo,Consolas,liberation mono,monospace}.postBody p,.postBody li{font-size:inherit}.postBody ul{padding-left:2ch;list-style-type:"- "}.postBody li::marker{color:var(--muted)}.meta{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0 0 28px;padding-top:14px;border-top:1px dashed var(--outline);font-size:13px}.meta dt{color:var(--muted)}.meta dt::after{content:":"}.meta dd{margin:0}.post pre{background:var(--surface);border:1px solid var(--outline);border-radius:8px;padding:14px 16px;overflow-x:auto;font-size:13px;line-height:1.5}.post pre code{font-family:inherit}.post :not(pre)>code{background:var(--neutral-bg);color:var(--neutral-fg);padding:1px 5px;border-radius:3px;font-size:.9em}.post blockquote{margin:16px 0;padding:4px 16px;border-left:4px solid var(--accent);color:var(--muted)}.post hr{border:none;border-top:1px dashed var(--outline);margin:32px 0}.post table{display:block;overflow-x:auto;border-collapse:collapse;width:100%;font-size:13px}.post th{text-align:left;color:var(--muted);font-weight:600}.post th,.post td{padding:6px 10px;border-bottom:1px solid var(--outline)}.post figure{margin:24px 0}.post figure img,.post p>img{border:1px solid var(--outline)!important;border-radius:8px!important}.post figcaption,.post figcaption p{margin-top:6px;font-size:12px;color:var(--muted)}.project-banner{margin-bottom:20px}.listHeader h1{margin:4px 0 20px;font-size:24px}.listContent{margin-bottom:24px}.indexContent{display:flex;align-items:center}.indexContent .main{width:100%}.indexWrapper{display:flex;flex-direction:column;align-items:center;text-align:center}.indexHeader{margin:0 0 12px;font-size:28px;font-weight:600}.indexIntro{margin:0 0 20px;color:var(--muted);font-size:13px}.flexWrapper{display:flex;flex-direction:column;min-height:100vh}.content{flex:1 auto;width:100%}.main{max-width:120ch;margin:0 auto;padding:24px 16px 48px}