:root{--bg:#1d2021;--bg-soft:#282828;--bg-alt:#3c3836;--fg:#ebdbb2;--fg-dim:#d5c4a1;--muted:#a89984;--rule:#504945;--red:#fb4934;--green:#b8bb26;--yellow:#fabd2f;--blue:#83a598;--purple:#d3869b;--aqua:#8ec07c;--orange:#fe8019;--accent:var(--blue);--code-bg:var(--bg-alt);--serif:Charter, "Bitstream Charter", "Sitka Text", Cambria, Georgia, serif;--mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace}html{background:var(--bg)}body{color:var(--fg);font-family:var(--serif);font-size:18px;line-height:1.6;margin:0}main{max-width:720px;margin:3rem auto;padding:0 1.25rem}h1,h2,h3,h4{font-weight:800;line-height:1.25;margin-top:2rem;margin-bottom:.6rem}h1{font-size:2.1rem}h2{font-size:1.6rem}h3{font-size:1.3rem}h4{font-size:1.1rem}h1 a,h1 a:visited{color:var(--fg);text-decoration:none}a,a:visited{color:var(--accent);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color 180ms ease-in-out}a:hover{text-decoration-color:var(--accent)}header nav{margin-top:.5rem;font-size:.95rem;color:var(--muted)}header nav a{color:var(--muted);text-decoration:none}header nav a:hover{color:var(--accent);background:0 0;text-decoration:underline}hr{border:0;border-top:1px solid var(--rule);margin:2rem 0}.post-list{list-style:none;padding:0}.post-list li{margin:.4rem 0;font-variant-numeric:tabular-nums}.post-list time{color:var(--muted);font-family:var(--mono);font-size:.9rem}.post-list .section-tag{color:var(--muted);font-family:var(--mono);font-size:.85rem}.meta{color:var(--muted);font-size:.9rem;margin-top:-.4rem}code,pre,kbd,samp{font-family:var(--mono);font-size:.92em}p code,li code{background:0 0;padding:0 .15em;border-bottom:1px dotted var(--rule);border-radius:0}pre{background:var(--code-bg);padding:1rem;overflow-x:auto;border-left:2px solid var(--rule);line-height:1.45}pre code{background:0 0;padding:0}blockquote{border-left:3px solid var(--yellow);margin:1.5rem 0;padding:.2rem 1.2rem;color:var(--fg-dim);font-style:italic}table{border-collapse:collapse;margin:1rem 0}th,td{border:1px solid var(--rule);padding:.4rem .8rem}th{background:var(--bg-alt);color:var(--yellow)}img{max-width:100%;height:auto}footer{color:var(--muted);font-size:.85rem;margin-top:2rem}footer a{color:var(--muted)}.chroma{color:var(--fg)}.chroma .k,.chroma .kd,.chroma .kr,.chroma .kn{color:var(--red)}.chroma .kt,.chroma .nc,.chroma .nn{color:var(--yellow)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sc{color:var(--green)}.chroma .se{color:var(--orange)}.chroma .mi,.chroma .mf,.chroma .mh,.chroma .mo{color:var(--purple)}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cs{color:var(--muted);font-style:italic}.chroma .cp,.chroma .cpf{color:var(--aqua)}.chroma .nf,.chroma .nb{color:var(--aqua)}.chroma .o,.chroma .p,.chroma .n,.chroma .nx,.chroma .na,.chroma .nv{color:var(--fg)}.chroma .lnt,.chroma .ln{color:var(--rule)}.highlight{background:#161616;margin:1.5rem 0;overflow:hidden;font-size:.9em}pre{line-height:1.5}pre:not(.chroma pre){background:#161616;padding:1rem;overflow-x:auto;font-size:.9em}.highlight .chroma{display:block;overflow-x:auto}.chroma table{border-collapse:collapse;margin:0;width:100%}.chroma table td{padding:0;border:none;vertical-align:top}.chroma .lntd:first-child{width:1%;white-space:nowrap;user-select:none;-webkit-user-select:none}.chroma .lntd:first-child pre{padding:1rem .75rem 1rem 1rem;margin:0;border:none;background:0 0;color:var(--rule);text-align:right}.chroma .lntd:last-child pre{padding:1rem 1rem 1rem .5rem;margin:0;border:none;background:0 0}.chroma .lnt,.chroma .ln{color:#555;margin-right:.4rem}.chroma .lntd:first-child{border-right:1px solid var(--rule)}.site-header{display:flex;gap:1.5rem;align-items:flex-start;margin-bottom:1.5rem}.avatar{width:140px;height:140px;object-fit:cover;border:1px solid var(--rule);flex-shrink:0}.identity{flex:1;min-width:0}.identity h1{margin-top:0;margin-bottom:.6rem}.contact{list-style:none;padding:0;margin:0;font-size:.95rem;color:var(--muted);line-height:1.7}.contact li{margin:0}.contact a{color:var(--accent)}.main-nav{font-size:.95rem;color:var(--muted);margin-top:.5rem}.main-nav a{color:var(--muted);text-decoration:none}.main-nav a:hover{color:var(--accent);background:0 0;text-decoration:underline}@media(max-width:560px){.site-header{flex-direction:column;align-items:flex-start;gap:1rem}.avatar{width:110px;height:110px}}