@font-face{font-family:berkeley mono;src:url(/fonts/BerkeleyMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:berkeley mono;src:url(/fonts/BerkeleyMono-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:berkeley mono;src:url(/fonts/BerkeleyMono-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--font:"Berkeley Mono", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo,
          Consolas, "DejaVu Sans Mono", monospace;--bg:#fafafa;--fg:#111;--muted:#555;--border:#d0d0d0;--link:#c00;--code-bg:#1e1e27;--code-fg:#cfbfad;--max-width:72ch}@media(prefers-color-scheme:dark){:root{--bg:#111;--fg:#e0e0e0;--muted:#888;--border:#333;--link:#ff6666;--code-bg:#1e1e27;--code-fg:#cfbfad}}*,*::before,*::after{box-sizing:border-box}html{font-size:16px}body{font-family:var(--font);font-size:1rem;line-height:1.7;color:var(--fg);background:var(--bg);max-width:var(--max-width);margin:0 auto;padding:1.5rem 1rem}a{color:var(--link);text-decoration:none}a:hover,a:focus{text-decoration:underline}header{margin-bottom:3rem;border-bottom:1px solid var(--border);padding-bottom:.75rem}header nav{display:flex;align-items:baseline;gap:2ch;flex-wrap:wrap}.site-title{font-weight:700;color:var(--fg);text-decoration:none;font-size:1.1rem;flex-shrink:0}.site-title:hover{text-decoration:underline;color:var(--fg)}header nav ul{list-style:none;margin:0;padding:0;display:flex;gap:2ch;flex-wrap:wrap}header nav ul li{margin:0;padding:0}header nav ul li a{color:var(--muted);font-size:.9rem}header nav ul li a[aria-current=page],header nav ul li a:hover{color:var(--link)}main{min-height:60vh}h1,h2,h3,h4,h5,h6{font-family:var(--font);font-weight:700;line-height:1.3;margin:2rem 0 .75rem;color:var(--fg)}h1{font-size:1.4rem}h2{font-size:1.2rem}h3{font-size:1.1rem}h4,h5,h6{font-size:1rem}p{margin:0 0 1rem}ul,ol{margin:0 0 1rem;padding-left:3ch}li{margin-bottom:.25rem}blockquote{margin:0 0 1rem;padding-left:2ch;border-left:3px solid var(--border);color:var(--muted);font-style:italic}blockquote p:last-child{margin-bottom:0}img{max-width:100%;height:auto;border:1px solid var(--border)}hr{border:none;border-top:1px solid var(--border);margin:2rem 0}code{font-family:var(--font);font-size:.9em;background:var(--code-bg);color:var(--code-fg);padding:.1em .3em;border-radius:2px}pre{background:var(--code-bg);color:var(--code-fg);padding:1rem;overflow-x:auto;margin:0 0 1rem;font-size:.875rem;line-height:1.5}pre code{background:0 0;padding:0;font-size:inherit;color:inherit}.post-list{list-style:none;padding:0;margin:0 0 2rem}.post-list li{margin-bottom:.4rem;display:grid;grid-template-columns:max-content 1fr;gap:0 3ch;align-items:baseline}.post-list time{color:var(--muted);font-size:.875rem;flex-shrink:0;white-space:nowrap}.post-list a{color:var(--link)}.post-header{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.post-header h1{margin-top:0;margin-bottom:.5rem;font-size:1.4rem}.post-meta{display:flex;gap:2ch;align-items:center;flex-wrap:wrap;font-size:.875rem;color:var(--muted)}.post-meta time{color:var(--muted)}.cats a{color:var(--muted)}.cats a:hover{color:var(--link)}.post-content{margin-bottom:3rem}.post-content a{text-decoration:underline}.post-content p{margin-bottom:1.25rem}.post-nav{display:flex;justify-content:space-between;gap:2ch;padding-top:1.5rem;border-top:1px solid var(--border);font-size:.875rem;flex-wrap:wrap}.post-nav .prev{flex:1;text-align:left}.post-nav .next{flex:1;text-align:right}.pagination{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--border);font-size:.875rem;color:var(--muted)}.terms-list{list-style:none;padding:0}.terms-list li{margin-bottom:.4rem}.terms-list .count{color:var(--muted);font-size:.875rem}.error-page{padding:3rem 0}.error-page h1{font-size:3rem;margin-bottom:.5rem}footer{margin-top:4rem;padding-top:1rem;border-top:1px solid var(--border);color:var(--muted);font-size:.875rem}footer p{margin:0}footer a{color:var(--muted)}footer a:hover{color:var(--link)}@media(max-width:480px){body{padding:1rem .75rem}.post-list li{grid-template-columns:1fr;gap:0;margin-bottom:.75rem}.post-nav{flex-direction:column;gap:.5rem}.post-nav .next{text-align:left}}.highlight{color:var(--code-fg);background-color:var(--code-bg);overflow-x:auto;margin:0 0 1rem}.highlight pre{margin:0;padding:1rem}.highlight .c{color:#cd8b00;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#808bed}.highlight .o{font-weight:700}.highlight .cm{color:#cd8b00;font-style:italic}.highlight .cp{color:#409090}.highlight .c1{color:#cd8b00;font-style:italic}.highlight .cs{color:#cd8b01;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:700}.highlight .kd{font-weight:700}.highlight .kp{font-weight:700}.highlight .kr{font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#ffcd8b;background-color:#404040}.highlight .n{color:#cfbfad}.highlight .na{color:#ff8bff}.highlight .nb{color:#ff8bff}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:#ff8bff}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:700}.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:#ff8bff}.highlight .nv{color:#ff8bff}.highlight .ow{color:#808bed}.highlight .w{color:#bbb}.highlight .mf{color:#f0ad6d}.highlight .mh{color:#f0ad6d}.highlight .mi{color:#f0ad6d}.highlight .mo{color:#f0ad6d}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#ffcd8b;background-color:#404040}.highlight .se{color:#808bed;font-weight:700}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#ffcd8b;background-color:#404040}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}