:root{--bg:#f6f7f9;--surface:#eceef2;--text:#1d2029;--muted:#5d6370;--line:#dcdfe5;--accent:#c24e0c;--accent-soft:#fc7727;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15171c;--surface:#1f2229;--text:#e4e6ea;--muted:#9ba1ab;--line:#2d313a;--accent:#ff8b42;--accent-soft:#fc7727;color-scheme:dark}}:root[data-theme=dark]{--bg:#15171c;--surface:#1f2229;--text:#e4e6ea;--muted:#9ba1ab;--line:#2d313a;--accent:#ff8b42;--accent-soft:#fc7727;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:1.0625rem/1.7 system-ui,-apple-system,segoe ui,Roboto,helvetica neue,sans-serif;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh;transition:background-color .2s,color .2s}main{flex:1;padding-block:2.5rem 4rem}.wrap{width:100%;max-width:44rem;margin-inline:auto;padding-inline:1.25rem}a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}h1,h2,h3{line-height:1.25;letter-spacing:-.015em;text-wrap:balance}h1{font-size:clamp(1.9rem,1.4rem + 2vw,2.5rem);margin:0 0 .5rem}img{max-width:100%;height:auto}.muted{color:var(--muted)}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;z-index:10;background:var(--bg);padding:.5rem 1rem}.site-header{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3.75rem}.brand{display:inline-flex;align-items:center;gap:.5rem;color:var(--text);font-weight:700;font-size:1.15rem;text-decoration:none}nav{display:flex;align-items:center;gap:.25rem}nav ul{display:flex;gap:.25rem;margin:0;padding:0;list-style:none}nav ul a{display:block;padding:.35rem .6rem;border-radius:6px;color:var(--muted);font-size:.95rem;text-decoration:none}nav ul a:hover,nav ul a[aria-current]{color:var(--text);background:var(--surface)}.theme-toggle{display:grid;place-items:center;width:2.25rem;height:2.25rem;margin-left:.25rem;border:1px solid var(--line);border-radius:50%;background:0 0;color:var(--muted);cursor:pointer}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.theme-toggle .i-sun{display:none}:root[data-theme=dark] .theme-toggle .i-sun{display:block}:root[data-theme=dark] .theme-toggle .i-moon{display:none}@media(max-width:34rem){.brand span{display:none}nav ul a{padding-inline:.45rem;font-size:.9rem}}.intro{display:flex;gap:1.5rem;align-items:flex-start;margin-bottom:3rem}.intro p{margin:.5rem 0 0}.avatar{flex:none;width:88px;height:88px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--accent-soft)}@media(max-width:34rem){.intro{flex-direction:column;gap:1rem}}.section-title{font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 .75rem}.post-list{list-style:none;margin:0 0 2rem;padding:0}.post-list li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.post-list li:first-child{border-top:1px solid var(--line)}.post-list a{color:inherit;text-decoration:none}.post-list h3{margin:0;font-size:1.1rem}.post-list a:hover h3{color:var(--accent)}.post-list p{margin:.25rem 0 0;color:var(--muted);font-size:.95rem}.post-list time{flex:none;color:var(--muted);font-size:.875rem;font-variant-numeric:tabular-nums}@media(max-width:34rem){.post-list li{flex-direction:column;gap:.25rem}}.year+.year{margin-top:2.5rem}.terms{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0}.terms a{display:inline-block;padding:.3rem .8rem;border:1px solid var(--line);border-radius:999px;color:var(--text);text-decoration:none}.terms a:hover{border-color:var(--accent);color:var(--accent)}.terms span{color:var(--muted);font-size:.85em}.post>header{margin-bottom:2rem}.meta{margin:0;color:var(--muted);font-size:.95rem}.prose>:first-child{margin-top:0}.prose h2{font-size:1.5rem;margin:2.5rem 0 .75rem}.prose h3{font-size:1.2rem;margin:2rem 0 .5rem}.prose li+li{margin-top:.35rem}.prose img{display:block;margin:1.5rem auto;border-radius:8px}.prose blockquote{margin:1.5rem 0;padding:.25rem 0 .25rem 1.25rem;border-left:3px solid var(--accent-soft);color:var(--muted)}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}.prose table{width:100%;border-collapse:collapse;font-size:.95rem;display:block;overflow-x:auto}.prose th,.prose td{padding:.5rem .75rem;border-bottom:1px solid var(--line);text-align:left}code,pre{font-family:ui-monospace,sf mono,Menlo,Consolas,monospace;font-size:.875em}:not(pre)>code{background:var(--surface);padding:.15em .35em;border-radius:4px}pre{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1rem 1.25rem;overflow-x:auto;line-height:1.55}.tags{display:flex;flex-wrap:wrap;gap:.75rem;list-style:none;padding:0;margin:2.5rem 0 0}.tags a{font-size:.95rem;text-decoration:none}.pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:3rem}.pager a{padding:1rem 1.25rem;border:1px solid var(--line);border-radius:8px;color:var(--text);text-decoration:none}.pager a:hover{border-color:var(--accent)}.pager span{display:block;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em}.pager .prev{grid-column:2;text-align:right}@media(max-width:34rem){.pager{grid-template-columns:1fr}.pager .prev{grid-column:1}}.site-footer{border-top:1px solid var(--line);padding-block:2rem;color:var(--muted);font-size:.9rem}.site-footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem}.site-footer p{margin:0}.social{display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0}.social a{color:var(--muted);text-decoration:none}.social a:hover{color:var(--accent)}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.chroma{-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}:root[data-theme=dark] .bg{color:#e6edf3}:root[data-theme=dark] .chroma{color:#e6edf3;-webkit-text-size-adjust:none}:root[data-theme=dark] .chroma .err{color:#f85149}:root[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}:root[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}:root[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}:root[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}:root[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}:root[data-theme=dark] .chroma .line{display:flex}:root[data-theme=dark] .chroma .k{color:#ff7b72}:root[data-theme=dark] .chroma .kc{color:#79c0ff}:root[data-theme=dark] .chroma .kd{color:#ff7b72}:root[data-theme=dark] .chroma .kn{color:#ff7b72}:root[data-theme=dark] .chroma .kp{color:#79c0ff}:root[data-theme=dark] .chroma .kr{color:#ff7b72}:root[data-theme=dark] .chroma .kt{color:#ff7b72}:root[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .ni{color:#ffa657}:root[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nn{color:#ff7b72}:root[data-theme=dark] .chroma .nx{color:#e6edf3}:root[data-theme=dark] .chroma .py{color:#79c0ff}:root[data-theme=dark] .chroma .nt{color:#7ee787}:root[data-theme=dark] .chroma .nv{color:#79c0ff}:root[data-theme=dark] .chroma .vc{color:#79c0ff}:root[data-theme=dark] .chroma .vg{color:#79c0ff}:root[data-theme=dark] .chroma .vi{color:#79c0ff}:root[data-theme=dark] .chroma .vm{color:#79c0ff}:root[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .l{color:#a5d6ff}:root[data-theme=dark] .chroma .ld{color:#79c0ff}:root[data-theme=dark] .chroma .s{color:#a5d6ff}:root[data-theme=dark] .chroma .sa{color:#79c0ff}:root[data-theme=dark] .chroma .sb{color:#a5d6ff}:root[data-theme=dark] .chroma .sc{color:#a5d6ff}:root[data-theme=dark] .chroma .dl{color:#79c0ff}:root[data-theme=dark] .chroma .sd{color:#a5d6ff}:root[data-theme=dark] .chroma .s2{color:#a5d6ff}:root[data-theme=dark] .chroma .se{color:#79c0ff}:root[data-theme=dark] .chroma .sh{color:#79c0ff}:root[data-theme=dark] .chroma .si{color:#a5d6ff}:root[data-theme=dark] .chroma .sx{color:#a5d6ff}:root[data-theme=dark] .chroma .sr{color:#79c0ff}:root[data-theme=dark] .chroma .s1{color:#a5d6ff}:root[data-theme=dark] .chroma .ss{color:#a5d6ff}:root[data-theme=dark] .chroma .m{color:#a5d6ff}:root[data-theme=dark] .chroma .mb{color:#a5d6ff}:root[data-theme=dark] .chroma .mf{color:#a5d6ff}:root[data-theme=dark] .chroma .mh{color:#a5d6ff}:root[data-theme=dark] .chroma .mi{color:#a5d6ff}:root[data-theme=dark] .chroma .il{color:#a5d6ff}:root[data-theme=dark] .chroma .mo{color:#a5d6ff}:root[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .gd{color:#ffa198}:root[data-theme=dark] .chroma .ge{font-style:italic}:root[data-theme=dark] .chroma .gr{color:#ffa198}:root[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .gi{color:#56d364}:root[data-theme=dark] .chroma .go{color:#8b949e}:root[data-theme=dark] .chroma .gp{color:#8b949e}:root[data-theme=dark] .chroma .gs{font-weight:700}:root[data-theme=dark] .chroma .gu{color:#79c0ff}:root[data-theme=dark] .chroma .gt{color:#ff7b72}:root[data-theme=dark] .chroma .gl{text-decoration:underline}:root[data-theme=dark] .chroma .w{color:#6e7681}