:root{--bg:#e8e4d7;--fg:#2b2825;--muted:#756d5d;--accent:#5a6428;--accent-fg:#ffffff;--border:#d3cdba;--code-bg:#dfdac9;--heat-0:color-mix(in srgb, var(--accent) 7%, var(--bg));--heat-1:color-mix(in srgb, var(--accent) 32%, var(--bg));--heat-2:color-mix(in srgb, var(--accent) 58%, var(--bg));--heat-3:color-mix(in srgb, var(--accent) 82%, var(--bg));--heat-4:var(--accent);--gh-cell:11px;--gh-gap:3px;--gh-dow:24px;--gh-weeks:53;--gh-width:calc(var(--gh-dow) + var(--gh-weeks) * var(--gh-cell) + (var(--gh-weeks) - 1) * var(--gh-gap));--max-width:calc(var(--gh-width) + 2.5rem);--font-body:ui-serif, Georgia, "Iowan Old Style", "Times New Roman", serif;--font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace}html[data-theme=dark]{--bg:#211f1c;--fg:#d5d1c8;--muted:#918b80;--accent:#c0cd7a;--accent-fg:#14120f;--border:#38352e;--code-bg:#2a2823}@media(prefers-color-scheme:dark){html:not([data-theme]){--bg:#211f1c;--fg:#d5d1c8;--muted:#918b80;--accent:#c0cd7a;--accent-fg:#14120f;--border:#38352e;--code-bg:#2a2823}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:1.0625rem;line-height:1.65}body::after{content:"";position:fixed;inset:0;z-index:2147483647;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.06}html[data-theme=dark] body::after{opacity:.06}@media(prefers-color-scheme:dark){html:not([data-theme]) body::after{opacity:.06}}main{max-width:var(--max-width);margin:0 auto;padding:2rem 1.25rem 1.5rem}h1,h2,h3{line-height:1.25;margin-top:2rem}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}a:hover{text-decoration-thickness:2px}.site-header{display:flex;justify-content:space-between;align-items:baseline;max-width:var(--max-width);margin:0 auto;padding:1.25rem 1.25rem 0}.site-title{font-weight:700;font-size:1.125rem;color:var(--fg);text-decoration:none}.site-nav{display:flex;gap:.9rem;align-items:baseline}.activity{max-width:var(--max-width);margin:.5rem auto 2rem;padding:0 1.25rem}.activity .gh-wrap{overflow-x:auto}.gh{display:inline-block}.gh-top{display:flex}.gh-dow-spacer{width:var(--gh-dow);flex:none}.gh-months{position:relative;height:24px}.gh-month{position:absolute;top:0;font-size:11px;color:var(--muted);white-space:nowrap}.gh-main{display:flex}.gh-dow{flex:none;width:var(--gh-dow);display:grid;grid-template-rows:repeat(7,var(--gh-cell));gap:var(--gh-gap)}.gh-dow span{font-size:10px;color:var(--muted);line-height:1;display:flex;align-items:center;justify-content:center}.gh-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,var(--gh-cell));gap:var(--gh-gap);position:relative}.gh-cell{width:var(--gh-cell);height:var(--gh-cell);background:var(--heat-0)}.gh-cell.lvl-1{background:var(--heat-1)}.gh-cell.lvl-2{background:var(--heat-2)}.gh-cell.lvl-3{background:var(--heat-3)}.gh-cell.lvl-4{background:var(--heat-4)}.gh-cell.fill{transition:background-color 260ms ease;transition-delay:var(--delay,0s)}.gh-throbber{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,var(--gh-cell));grid-template-rows:repeat(3,var(--gh-cell));gap:var(--gh-gap);place-content:center;pointer-events:none;transition:opacity .3s ease}.gh-throbber span{width:var(--gh-cell);height:var(--gh-cell);background:var(--accent);opacity:.15;animation:gh-throb 1.2s ease-in-out infinite}.gh-throbber span:nth-child(1){animation-delay:0ms}.gh-throbber span:nth-child(2){animation-delay:100ms}.gh-throbber span:nth-child(3){animation-delay:200ms}.gh-throbber span:nth-child(4){animation-delay:100ms}.gh-throbber span:nth-child(5){animation-delay:200ms}.gh-throbber span:nth-child(6){animation-delay:300ms}.gh-throbber span:nth-child(7){animation-delay:200ms}.gh-throbber span:nth-child(8){animation-delay:300ms}.gh-throbber span:nth-child(9){animation-delay:400ms}@keyframes gh-throb{0%,100%{opacity:.15;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}.gh-throbber.done{opacity:0}.gh-throbber.done span{animation:none}.gh-throbber.fail span{animation:none;background:0 0;opacity:0}.gh-throbber.fail span:nth-child(1),.gh-throbber.fail span:nth-child(3),.gh-throbber.fail span:nth-child(5),.gh-throbber.fail span:nth-child(7),.gh-throbber.fail span:nth-child(9){background:color-mix(in srgb,#dc2626 55%,var(--bg));animation:gh-fail 1.8s ease-in-out infinite}.gh-throbber.fail span:nth-child(3),.gh-throbber.fail span:nth-child(7){animation-delay:120ms}.gh-throbber.fail span:nth-child(5){animation-delay:240ms}@keyframes gh-fail{0%,100%{opacity:.45}50%{opacity:1}}.gh-caption{margin:.75rem 0 0;font-size:.85rem;color:var(--muted);opacity:0;transition:opacity .35s ease}.gh:hover .gh-caption{opacity:1}.site-footer{max-width:var(--max-width);margin:0 auto;padding:0 1.25rem 2.5rem;color:var(--muted);font-size:.875rem}.post-list{list-style:none;padding:0}.post-list li{padding:.9rem 0;border-bottom:1px solid var(--border)}.post-list .date{color:var(--muted);font-size:.875rem;margin-left:.5rem;white-space:nowrap}.post-list .desc{margin:.25rem 0 0;color:var(--muted)}.pager{display:flex;align-items:center;justify-content:center;gap:1.25rem;margin-top:1.5rem;color:var(--muted)}.pager a{color:var(--accent);text-decoration:none}.pager a:hover{text-decoration:underline}.byline{color:var(--muted);font-size:.875rem;margin-top:0}article pre{background:var(--code-bg);border:1px solid var(--border);border-radius:6px;padding:.9rem 1rem;overflow-x:auto;font-size:.9rem;line-height:1.5}article code{font-family:var(--font-mono);background:var(--code-bg);border-radius:4px;padding:.1em .35em;font-size:.9em}article pre code{background:0 0;padding:0}blockquote{margin:1.5rem 0;padding-left:1rem;border-left:3px solid var(--accent);color:var(--muted)}table{border-collapse:collapse}th,td{border:1px solid var(--border);padding:.4rem .7rem}img{max-width:100%}.code-block{position:relative}.code-copy{position:absolute;top:.4rem;right:.4rem;border:1px solid var(--border);background:var(--bg);color:var(--muted);border-radius:4px;padding:.15rem .5rem;font:.75rem var(--font-mono);cursor:pointer}.code-copy:hover{color:var(--fg)}.code-copy.copied{color:var(--accent)}#theme-toggle{border:1px solid var(--border);background:0 0;color:var(--muted);border-radius:4px;cursor:pointer;font-size:.9rem;line-height:1;padding:.25rem .45rem}#theme-toggle:hover{color:var(--fg)}