@font-face{font-family:cascadia mono;src:url(/fonts/cascadia-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:cascadia mono;src:url(/fonts/cascadia-mono-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:ubuntu mono;src:url(/fonts/ubuntu-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ubuntu mono;src:url(/fonts/ubuntu-mono-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}html[data-mode=light]{--fg:hsl(215 25% 18%);--muted:hsl(215 12% 42%);--surface:rgba(0, 0, 0, 0.045);--surface-2:rgba(0, 0, 0, 0.07);--border:rgba(0, 0, 0, 0.12);--on-accent:#fff}html[data-mode=dark]{--fg:hsl(40 18% 87%);--muted:hsl(40 8% 62%);--surface:rgba(255, 255, 255, 0.05);--surface-2:rgba(255, 255, 255, 0.09);--border:rgba(255, 255, 255, 0.14);--on-accent:hsl(220 25% 10%)}html[data-mode=light][data-page=home]{--bg:hsl(205 56% 96%);--accent:hsl(205 72% 40%)}html[data-mode=dark][data-page=home]{--bg:hsl(210 30% 14%);--accent:hsl(205 70% 66%)}html[data-mode=light][data-page=writing]{--bg:hsl(146 40% 96%);--accent:hsl(150 52% 32%)}html[data-mode=dark][data-page=writing]{--bg:hsl(150 22% 13%);--accent:hsl(150 48% 62%)}html[data-mode=light][data-page=tags]{--bg:hsl(42 66% 95%);--accent:hsl(33 78% 40%)}html[data-mode=dark][data-page=tags]{--bg:hsl(38 28% 14%);--accent:hsl(40 76% 62%)}html[data-mode=light][data-page=default]{--bg:hsl(40 30% 97%);--accent:hsl(220 55% 45%)}html[data-mode=dark][data-page=default]{--bg:hsl(220 16% 15%);--accent:hsl(215 72% 68%)}:root{--maxw:44rem;--nav:"Cascadia Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--body:"UbuntuMono Nerd Font", "Ubuntu Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--mono:"UbuntuMono Nerd Font", "Ubuntu Mono", ui-monospace, Menlo, Consolas, monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:1rem;line-height:1.7;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;transition:background-color .35s ease,color .35s ease;display:flex;flex-direction:column;min-height:100vh}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 1.25rem}.site-main{flex:1 0 auto;padding:2.75rem 0 4rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}h1,h2,h3,h4{font-family:var(--body);line-height:1.3;font-weight:700;margin:2.2em 0 .7em}h1{font-size:1.85rem;margin-top:0;letter-spacing:-.01em}h2{font-size:1.4rem}h3{font-size:1.15rem}h4{font-size:1rem}p{margin:0 0 1.15em}hr{border:none;border-top:1px solid var(--border);margin:2.5em 0}img,video{max-width:100%;height:auto;display:block;margin:1.5em auto;border-radius:6px}p[align=center]{text-align:center}p[align=center] img{display:inline-block;margin:1.5em auto .4em}blockquote{margin:1.5em 0;padding:.2em 0 .2em 1.2em;border-left:3px solid var(--accent);color:var(--muted)}ul,ol{padding-left:1.4em}li{margin:.3em 0}table{border-collapse:collapse;width:100%;margin:1.5em 0;font-size:.95em}th,td{border:1px solid var(--border);padding:.5em .75em;text-align:left}th{background:var(--surface)}.caption{display:block;text-align:center;font-style:normal;color:var(--muted);font-size:.9rem;line-height:1.5;margin-top:.3em}.site-header{font-family:var(--nav)}.nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.2rem;padding-bottom:1.2rem;flex-wrap:wrap}.brand{font-weight:700;font-size:1.05rem;color:var(--fg);letter-spacing:-.01em}.brand:hover{text-decoration:none;color:var(--accent)}.nav-links{list-style:none;display:flex;align-items:center;gap:1.3rem;margin:0;padding:0;font-size:.9rem}.nav-links a{color:var(--muted)}.nav-links a:hover,.nav-links a.active{color:var(--fg);text-decoration:none}.nav-links a.active{font-weight:700}.mode-toggle{background:var(--surface);border:1px solid var(--border);color:var(--fg);border-radius:999px;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:.95rem;line-height:1;padding:0;transition:background-color .2s ease}.mode-toggle:hover{background:var(--surface-2)}html[data-mode=light] .mode-toggle .icon-moon{display:none}html[data-mode=dark] .mode-toggle .icon-sun{display:none}.home .intro{margin-bottom:3rem}.profile-fig{width:375px;max-width:100%;margin:0 auto 1.5rem}.profile-img{display:block;width:100%;height:auto;aspect-ratio:1/1;border-radius:16px;object-fit:cover;margin:0}.profile-caption{text-align:center;color:var(--muted);font-size:.72rem;line-height:1.35;margin-top:.45rem}.intro-text>:first-child{margin-top:0}.intro-text>p{text-align:justify;hyphens:auto}.intro-text>p.reach{margin:1rem 0 0;text-align:right}.social-inline{list-style:none;display:flex;gap:1rem;padding:0;margin:1rem 0 0}.social-inline a{color:var(--muted);display:inline-flex}.social-inline a:hover{color:var(--accent)}.icon{width:20px;height:20px;display:block}.news{margin-top:3rem}.news-list{list-style:none;padding:0;margin:1rem 0 0}.news-item{display:flex;gap:1rem;padding:.5rem 0;align-items:baseline}.news-date{font-size:.82rem;color:var(--muted);white-space:nowrap;min-width:7rem;flex-shrink:0}.news-body{flex:1}.section-title{font-size:1.3rem;margin:0}.section-title a{color:var(--fg)}.section-title a:hover{color:var(--accent);text-decoration:none}.cover-fig{margin:0 0 2.75rem}.cover-fig img{display:block;width:100%;height:auto;border-radius:8px;margin:0}.cover-fig .caption{margin-top:.6rem}.list-header{margin-bottom:1.5rem}.list-intro{color:var(--muted)}.eyebrow{font-size:.82rem;color:var(--muted);margin:0 0 .3rem}.post-list{list-style:none;margin:0;padding:0}.post-item{padding:.4rem 0}.post-link{display:flex;gap:1.1rem;align-items:baseline;color:var(--fg)}.post-link:hover{text-decoration:none}.post-link:hover .post-title{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.post-date{font-size:.85rem;color:var(--muted);white-space:nowrap;flex-shrink:0;min-width:6.5rem}.post-title{font-weight:700}.tag-filter{margin:0 0 1.75rem}.tag-chips{display:flex;flex-wrap:wrap;gap:.5rem}.tag-chip{font-family:var(--body);font-size:.85rem;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.3em .85em;color:var(--fg);display:inline-flex;gap:.4em;align-items:center;transition:background-color .15s ease,border-color .15s ease}.tag-chip:hover{background:var(--surface-2)}.tag-chip.is-active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.tag-chip .count{color:var(--muted);font-size:.82em}.tag-chip.is-active .count{color:inherit;opacity:.75}.tag-controls{display:flex;gap:1.2rem;align-items:center;margin-top:.9rem;font-size:.82rem;color:var(--muted)}.match-toggle{display:inline-flex;gap:.4rem;align-items:center}.match-btn,.tag-clear{font-family:var(--body);cursor:pointer;background:0 0;border:1px solid var(--border);border-radius:6px;padding:.15em .6em;color:var(--muted);font-size:.82rem}.match-btn.is-active{color:var(--fg);border-color:var(--accent)}.match-btn:hover,.tag-clear:hover{color:var(--fg)}.tag-count{font-size:.82rem;color:var(--muted);margin:.25rem 0 1.25rem;min-height:1.2em}.post-item-tags{display:none}.post-item[hidden]{display:none}.tag-empty{color:var(--muted)}.post-header{margin-bottom:2rem}.post-header h1{margin-bottom:.4rem}.post-meta{font-size:.9rem;color:var(--muted)}.post-tags{margin-top:.8rem;display:flex;flex-wrap:wrap;gap:.5rem}.post-tags a{font-size:.82rem;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.15em .7em}.post-tags a:hover{color:var(--fg);text-decoration:none}.post-toc{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.8rem 1.1rem;margin:0 0 2.5rem;font-size:.9rem}.post-toc-title{font-weight:700;margin:0 0 .4rem}.post-toc nav ul{margin:0;padding-left:1.1em}.post-toc nav>ul{padding-left:1.1em}.post-toc a{color:var(--muted)}.post-toc a:hover{color:var(--accent)}.post-toc li{margin:.15em 0}@media(min-width:1280px){.post-page.has-toc{max-width:none;display:grid;grid-template-columns:1fr minmax(0,var(--maxw))1fr;column-gap:2rem;align-items:start}.post-page.has-toc .post-toc{grid-column:1;justify-self:end;width:14rem;position:sticky;top:2rem;align-self:start;max-height:calc(100vh - 4rem);overflow-y:auto;margin:0;background:0 0;border:none;padding:0;font-size:.85rem}.post-page.has-toc .post{grid-column:2;min-width:0}}.post-content{text-align:justify;hyphens:auto}.post-content>:first-child{margin-top:0}.post-content .katex-display,.post-content p[align=center]{text-align:center}.post-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:3.5rem;padding-top:1.5rem;border-top:1px solid var(--border);font-size:.92rem}.post-nav a{display:block;max-width:45%}.post-nav .next{text-align:right;margin-left:auto}.post-nav .label{display:block;color:var(--muted);font-size:.8rem}code,pre,kbd{font-family:var(--mono)}:not(pre)>code{background:var(--surface-2);padding:.12em .4em;border-radius:4px;font-size:.9em}.highlight{position:relative;margin:1.6em 0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.highlight pre.chroma{margin:0;padding:1rem 1.1rem;overflow-x:auto;background:var(--surface)!important;font-size:.88rem;line-height:1.5}pre:not(.chroma){background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem 1.1rem;overflow-x:auto;font-size:.88rem}.copy-btn{position:absolute;top:.5rem;right:.5rem;font-family:var(--body);font-size:.72rem;padding:.25em .6em;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:5px;cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease}.highlight:hover .copy-btn{opacity:1}.copy-btn:hover{color:var(--fg)}.copy-btn.copied{color:var(--accent)}.katex-display{overflow-x:auto;overflow-y:hidden;padding:.5em 0}.katex{font-size:1.05em}.footnotes{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border);font-size:.9rem;color:var(--muted)}.site-footer{flex-shrink:0;padding:2rem 0;font-size:.85rem;color:var(--muted)}.site-footer .copyright{margin:0}@media(max-width:560px){.social-inline{justify-content:center}h1{font-size:1.55rem}h2{font-size:1.25rem}.post-link{flex-direction:column;gap:.1rem}.post-date{min-width:0}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}html[data-mode=light] .chroma .x{}html[data-mode=light] .chroma .err{color:#a61717;background-color:#e3d2d2}html[data-mode=light] .chroma .cl{}html[data-mode=light] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}html[data-mode=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html[data-mode=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}html[data-mode=light] .chroma .hl{background-color:#e5e5e5}html[data-mode=light] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}html[data-mode=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}html[data-mode=light] .chroma .line{display:flex}html[data-mode=light] .chroma .k{color:#000;font-weight:700}html[data-mode=light] .chroma .kc{color:#000;font-weight:700}html[data-mode=light] .chroma .kd{color:#000;font-weight:700}html[data-mode=light] .chroma .kn{color:#000;font-weight:700}html[data-mode=light] .chroma .kp{color:#000;font-weight:700}html[data-mode=light] .chroma .kr{color:#000;font-weight:700}html[data-mode=light] .chroma .kt{color:#458;font-weight:700}html[data-mode=light] .chroma .n{}html[data-mode=light] .chroma .na{color:teal}html[data-mode=light] .chroma .nb{color:#0086b3}html[data-mode=light] .chroma .bp{color:#999}html[data-mode=light] .chroma .nc{color:#458;font-weight:700}html[data-mode=light] .chroma .no{color:teal}html[data-mode=light] .chroma .nd{color:#3c5d5d;font-weight:700}html[data-mode=light] .chroma .ni{color:purple}html[data-mode=light] .chroma .ne{color:#900;font-weight:700}html[data-mode=light] .chroma .nf{color:#900;font-weight:700}html[data-mode=light] .chroma .fm{}html[data-mode=light] .chroma .nl{color:#900;font-weight:700}html[data-mode=light] .chroma .nn{color:#555}html[data-mode=light] .chroma .nx{}html[data-mode=light] .chroma .py{}html[data-mode=light] .chroma .nt{color:navy}html[data-mode=light] .chroma .nv{color:teal}html[data-mode=light] .chroma .vc{color:teal}html[data-mode=light] .chroma .vg{color:teal}html[data-mode=light] .chroma .vi{color:teal}html[data-mode=light] .chroma .vm{}html[data-mode=light] .chroma .l{}html[data-mode=light] .chroma .ld{}html[data-mode=light] .chroma .s{color:#d14}html[data-mode=light] .chroma .sa{color:#d14}html[data-mode=light] .chroma .sb{color:#d14}html[data-mode=light] .chroma .sc{color:#d14}html[data-mode=light] .chroma .dl{color:#d14}html[data-mode=light] .chroma .sd{color:#d14}html[data-mode=light] .chroma .s2{color:#d14}html[data-mode=light] .chroma .se{color:#d14}html[data-mode=light] .chroma .sh{color:#d14}html[data-mode=light] .chroma .si{color:#d14}html[data-mode=light] .chroma .sx{color:#d14}html[data-mode=light] .chroma .sr{color:#009926}html[data-mode=light] .chroma .s1{color:#d14}html[data-mode=light] .chroma .ss{color:#990073}html[data-mode=light] .chroma .m{color:#099}html[data-mode=light] .chroma .mb{color:#099}html[data-mode=light] .chroma .mf{color:#099}html[data-mode=light] .chroma .mh{color:#099}html[data-mode=light] .chroma .mi{color:#099}html[data-mode=light] .chroma .il{color:#099}html[data-mode=light] .chroma .mo{color:#099}html[data-mode=light] .chroma .o{color:#000;font-weight:700}html[data-mode=light] .chroma .ow{color:#000;font-weight:700}html[data-mode=light] .chroma .p{}html[data-mode=light] .chroma .c{color:#998;font-style:italic}html[data-mode=light] .chroma .ch{color:#998;font-style:italic}html[data-mode=light] .chroma .cm{color:#998;font-style:italic}html[data-mode=light] .chroma .c1{color:#998;font-style:italic}html[data-mode=light] .chroma .cs{color:#999;font-weight:700;font-style:italic}html[data-mode=light] .chroma .cp{color:#999;font-weight:700;font-style:italic}html[data-mode=light] .chroma .cpf{color:#999;font-weight:700;font-style:italic}html[data-mode=light] .chroma .g{}html[data-mode=light] .chroma .gd{color:#000;background-color:#fdd}html[data-mode=light] .chroma .ge{color:#000;font-style:italic}html[data-mode=light] .chroma .gr{color:#a00}html[data-mode=light] .chroma .gh{color:#999}html[data-mode=light] .chroma .gi{color:#000;background-color:#dfd}html[data-mode=light] .chroma .go{color:#888}html[data-mode=light] .chroma .gp{color:#555}html[data-mode=light] .chroma .gs{font-weight:700}html[data-mode=light] .chroma .gu{color:#aaa}html[data-mode=light] .chroma .gt{color:#a00}html[data-mode=light] .chroma .gl{text-decoration:underline}html[data-mode=light] .chroma .w{color:#bbb}html[data-mode=dark] .chroma .x{}html[data-mode=dark] .chroma .err{color:#f85149}html[data-mode=dark] .chroma .cl{}html[data-mode=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}html[data-mode=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html[data-mode=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}html[data-mode=dark] .chroma .hl{background-color:#6e7681}html[data-mode=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}html[data-mode=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}html[data-mode=dark] .chroma .line{display:flex}html[data-mode=dark] .chroma .k{color:#ff7b72}html[data-mode=dark] .chroma .kc{color:#79c0ff}html[data-mode=dark] .chroma .kd{color:#ff7b72}html[data-mode=dark] .chroma .kn{color:#ff7b72}html[data-mode=dark] .chroma .kp{color:#79c0ff}html[data-mode=dark] .chroma .kr{color:#ff7b72}html[data-mode=dark] .chroma .kt{color:#ff7b72}html[data-mode=dark] .chroma .n{}html[data-mode=dark] .chroma .na{}html[data-mode=dark] .chroma .nb{}html[data-mode=dark] .chroma .bp{}html[data-mode=dark] .chroma .nc{color:#f0883e;font-weight:700}html[data-mode=dark] .chroma .no{color:#79c0ff;font-weight:700}html[data-mode=dark] .chroma .nd{color:#d2a8ff;font-weight:700}html[data-mode=dark] .chroma .ni{color:#ffa657}html[data-mode=dark] .chroma .ne{color:#f0883e;font-weight:700}html[data-mode=dark] .chroma .nf{color:#d2a8ff;font-weight:700}html[data-mode=dark] .chroma .fm{}html[data-mode=dark] .chroma .nl{color:#79c0ff;font-weight:700}html[data-mode=dark] .chroma .nn{color:#ff7b72}html[data-mode=dark] .chroma .nx{}html[data-mode=dark] .chroma .py{color:#79c0ff}html[data-mode=dark] .chroma .nt{color:#7ee787}html[data-mode=dark] .chroma .nv{color:#79c0ff}html[data-mode=dark] .chroma .vc{}html[data-mode=dark] .chroma .vg{}html[data-mode=dark] .chroma .vi{}html[data-mode=dark] .chroma .vm{}html[data-mode=dark] .chroma .l{color:#a5d6ff}html[data-mode=dark] .chroma .ld{color:#79c0ff}html[data-mode=dark] .chroma .s{color:#a5d6ff}html[data-mode=dark] .chroma .sa{color:#79c0ff}html[data-mode=dark] .chroma .sb{color:#a5d6ff}html[data-mode=dark] .chroma .sc{color:#a5d6ff}html[data-mode=dark] .chroma .dl{color:#79c0ff}html[data-mode=dark] .chroma .sd{color:#a5d6ff}html[data-mode=dark] .chroma .s2{color:#a5d6ff}html[data-mode=dark] .chroma .se{color:#79c0ff}html[data-mode=dark] .chroma .sh{color:#79c0ff}html[data-mode=dark] .chroma .si{color:#a5d6ff}html[data-mode=dark] .chroma .sx{color:#a5d6ff}html[data-mode=dark] .chroma .sr{color:#79c0ff}html[data-mode=dark] .chroma .s1{color:#a5d6ff}html[data-mode=dark] .chroma .ss{color:#a5d6ff}html[data-mode=dark] .chroma .m{color:#a5d6ff}html[data-mode=dark] .chroma .mb{color:#a5d6ff}html[data-mode=dark] .chroma .mf{color:#a5d6ff}html[data-mode=dark] .chroma .mh{color:#a5d6ff}html[data-mode=dark] .chroma .mi{color:#a5d6ff}html[data-mode=dark] .chroma .il{color:#a5d6ff}html[data-mode=dark] .chroma .mo{color:#a5d6ff}html[data-mode=dark] .chroma .o{color:#ff7b72;font-weight:700}html[data-mode=dark] .chroma .ow{color:#ff7b72;font-weight:700}html[data-mode=dark] .chroma .p{}html[data-mode=dark] .chroma .c{color:#8b949e;font-style:italic}html[data-mode=dark] .chroma .ch{color:#8b949e;font-style:italic}html[data-mode=dark] .chroma .cm{color:#8b949e;font-style:italic}html[data-mode=dark] .chroma .c1{color:#8b949e;font-style:italic}html[data-mode=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}html[data-mode=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}html[data-mode=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}html[data-mode=dark] .chroma .g{}html[data-mode=dark] .chroma .gd{color:#ffa198;background-color:#490202}html[data-mode=dark] .chroma .ge{font-style:italic}html[data-mode=dark] .chroma .gr{color:#ffa198}html[data-mode=dark] .chroma .gh{color:#79c0ff;font-weight:700}html[data-mode=dark] .chroma .gi{color:#56d364;background-color:#0f5323}html[data-mode=dark] .chroma .go{color:#8b949e}html[data-mode=dark] .chroma .gp{color:#8b949e}html[data-mode=dark] .chroma .gs{font-weight:700}html[data-mode=dark] .chroma .gu{color:#79c0ff}html[data-mode=dark] .chroma .gt{color:#ff7b72}html[data-mode=dark] .chroma .gl{text-decoration:underline}html[data-mode=dark] .chroma .w{color:#6e7681}