:root{--bg-dim:#232a2e;--bg0:#2d353b;--bg1:#343f44;--bg2:#3d484d;--bg3:#475258;--bg4:#4f585e;--bg5:#56635f;--bg-visual:#543a48;--bg-red:#514045;--bg-yellow:#4d4c43;--bg-green:#425047;--bg-blue:#3a515d;--fg:#d3c6aa;--red:#e67e80;--orange:#e69875;--yellow:#dbbc7f;--green:#a7c080;--aqua:#83c092;--blue:#7fbbb3;--purple:#d699b6;--grey0:#7a8478;--grey1:#859289;--grey2:#9da9a0;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-body:var(--font-mono);--measure:72ch}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--bg-dim:#efebd4;--bg0:#fdf6e3;--bg1:#f4f0d9;--bg2:#efebd4;--bg3:#e6e2cc;--bg4:#e0dcc7;--bg5:#bdc3af;--bg-visual:#eaedc8;--bg-red:#fbe3da;--bg-yellow:#f1ebc8;--bg-green:#f0f1d2;--bg-blue:#e9f0e9;--fg:#5c6a72;--red:#f85552;--orange:#f57d26;--yellow:#dfa000;--green:#8da101;--aqua:#35a77c;--blue:#3a94c5;--purple:#df69ba;--grey0:#a6b0a0;--grey1:#939f91;--grey2:#829181}}:root[data-theme=light]{--bg-dim:#efebd4;--bg0:#fdf6e3;--bg1:#f4f0d9;--bg2:#efebd4;--bg3:#e6e2cc;--bg4:#e0dcc7;--bg5:#bdc3af;--bg-visual:#eaedc8;--bg-red:#fbe3da;--bg-yellow:#f1ebc8;--bg-green:#f0f1d2;--bg-blue:#e9f0e9;--fg:#5c6a72;--red:#f85552;--orange:#f57d26;--yellow:#dfa000;--green:#8da101;--aqua:#35a77c;--blue:#3a94c5;--purple:#df69ba;--grey0:#a6b0a0;--grey1:#939f91;--grey2:#829181}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg0);color:var(--fg);font-family:var(--font-body);font-size:15px;line-height:1.7;min-height:100vh;display:flex;flex-direction:column}.wrap{width:100%;max-width:var(--measure);margin:0 auto;padding:0 1.25rem}main.wrap{flex:1;padding-top:2rem;padding-bottom:3rem}a{color:var(--blue);text-decoration:none;border-bottom:1px solid transparent}a:hover{color:var(--aqua);border-bottom-color:initial}::selection{background:var(--bg-visual);color:var(--fg)}.site-header{border-bottom:1px solid var(--bg3);background:var(--bg-dim)}.header-inner{display:flex;align-items:center;justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.site-title{color:var(--green);font-weight:700;font-size:1.05rem}.site-title::before{content:"~/";color:var(--grey1);font-weight:400}.site-title:hover{color:var(--green);border-bottom-color:transparent}.site-nav{display:flex;align-items:center;gap:1.1rem}.site-nav a{color:var(--grey2)}.site-nav a:hover,.site-nav a.active{color:var(--yellow)}#theme-toggle{background:0 0;border:1px solid var(--bg4);color:var(--grey2);border-radius:4px;padding:0 .45rem;font:inherit;cursor:pointer}#theme-toggle:hover{color:var(--yellow);border-color:var(--yellow)}.site-footer{border-top:1px solid var(--bg3);background:var(--bg-dim);color:var(--grey1);font-size:.85rem;padding:1rem 0}.sep{margin:0 .5rem;color:var(--bg5)}h1,h2,h3,h4,h5,h6{line-height:1.3;margin:2rem 0 .75rem}h1{color:var(--red);font-size:1.6rem;margin-top:0}h2{color:var(--orange);font-size:1.3rem}h3{color:var(--yellow);font-size:1.1rem}h4{color:var(--green);font-size:1rem}h5{color:var(--blue);font-size:.95rem}h6{color:var(--purple);font-size:.9rem}.content h1::before{content:"# ";color:var(--grey0)}.content h2::before{content:"## ";color:var(--grey0)}.content h3::before{content:"### ";color:var(--grey0)}.content h4::before{content:"#### ";color:var(--grey0)}.page-title{margin-bottom:1.5rem}.section-title{color:var(--orange);font-size:1.1rem;margin-top:2.5rem}.post-header{margin-bottom:2rem}.meta{color:var(--grey1);font-size:.85rem;margin:.25rem 0 0}.tag{color:var(--purple)}.tag:hover{color:var(--purple)}.post-list{list-style:none;margin:0;padding:0}.post-list li{padding:.35rem 0}.post-list time{color:var(--grey1);margin-right:1rem;font-size:.9rem}.post-list .summary{margin:.1rem 0 .6rem;color:var(--grey2);font-size:.9rem}p{margin:0 0 1.1rem}strong{color:var(--yellow)}em{color:var(--aqua)}hr{border:0;border-top:1px solid var(--bg4);margin:2rem 0}ul,ol{padding-left:1.6rem}li::marker{color:var(--grey1)}blockquote{margin:1.25rem 0;padding:.25rem 1rem;border-left:3px solid var(--green);background:var(--bg1);color:var(--grey2)}blockquote p:last-child{margin-bottom:0}img{max-width:100%;height:auto;border-radius:4px}table{border-collapse:collapse;width:100%;margin:1.25rem 0;font-size:.92rem}th,td{border:1px solid var(--bg4);padding:.4rem .7rem;text-align:left}th{background:var(--bg2);color:var(--yellow)}tr:nth-child(even) td{background:var(--bg1)}code,pre{font-family:var(--font-mono);font-size:.9em}:not(pre)>code{background:var(--bg2);color:var(--aqua);padding:.1em .4em;border-radius:3px}pre{background:var(--bg-dim);border:1px solid var(--bg3);border-radius:6px;padding:.9rem 1rem;overflow-x:auto;line-height:1.55}pre code{background:0 0;padding:0;color:var(--fg)}.highlight{margin:1.25rem 0}.highlight pre{margin:0}.chroma{background:var(--bg-dim);color:var(--fg)}.chroma .err{color:var(--red)}.chroma .lnt,.chroma .ln{color:var(--grey0);margin-right:.8em}.chroma .hl{background:var(--bg2);display:block;width:100%}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--red)}.chroma .kt{color:var(--yellow)}.chroma .nf,.chroma .fm{color:var(--green)}.chroma .nc,.chroma .nn,.chroma .nb,.chroma .bp{color:var(--yellow)}.chroma .nd,.chroma .nl{color:var(--orange)}.chroma .no,.chroma .ne{color:var(--purple)}.chroma .nt{color:var(--orange)}.chroma .na{color:var(--green)}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:var(--blue)}.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(--aqua)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--purple)}.chroma .o,.chroma .ow{color:var(--orange)}.chroma .p{color:var(--fg)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1{color:var(--grey0);font-style:italic}.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--grey1);font-style:italic}.chroma .gd{color:var(--red);background:var(--bg-red)}.chroma .gi{color:var(--green);background:var(--bg-green)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}.chroma .gh,.chroma .gu{color:var(--orange);font-weight:700}@media(max-width:560px){body{font-size:14px}.header-inner{flex-direction:column;align-items:flex-start;gap:.6rem}.post-list time{display:block}}