@font-face{font-family:aporetic sans mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/aporetic-sans-mono-normalregularupright.woff2)format("woff2")}@font-face{font-family:aporetic sans mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/aporetic-sans-mono-normalboldupright.woff2)format("woff2")}@font-face{font-family:aporetic sans mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/aporetic-sans-mono-normalregularitalic.woff2)format("woff2")}@font-face{font-family:aporetic sans mono;font-style:italic;font-weight:700;font-display:swap;src:url(/fonts/aporetic-sans-mono-normalbolditalic.woff2)format("woff2")}@font-face{font-family:aporetic sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/aporetic-sans-normalregularupright.woff2)format("woff2")}@font-face{font-family:aporetic sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/aporetic-sans-normalboldupright.woff2)format("woff2")}@font-face{font-family:aporetic sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/aporetic-sans-normalregularitalic.woff2)format("woff2")}@font-face{font-family:aporetic sans;font-style:italic;font-weight:700;font-display:swap;src:url(/fonts/aporetic-sans-normalbolditalic.woff2)format("woff2")}:root{--bg-main:#ffffff;--bg-dim:#f2f2f2;--bg-alt:#e6e6e6;--bg-active:#c4c4c4;--fg-main:#000000;--fg-dim:#595959;--fg-alt:#193668;--fg-mute:#585858;--blue:#0031a9;--blue-warmer:#3548cf;--blue-cooler:#0000b0;--green:#006800;--green-warmer:#316500;--green-cooler:#00663f;--red:#a60000;--red-cooler:#a0132f;--yellow:#6f5500;--yellow-warmer:#884900;--magenta:#721045;--magenta-warmer:#8f0075;--magenta-cooler:#531ab6;--cyan:#005e8b;--cyan-cooler:#005f5f;--c-keyword:#3548cf;--c-builtin:#531ab6;--c-comment:#595959;--c-string:#6f5500;--c-variable:#00538b;--c-type:#005f5f;--c-constant:#a0132f;--c-fnname:#0000b0;--c-prep:#884900;--c-docstr:#316500;--modeline-bg:#c4c4c4;--modeline-fg:#000000;--modeline-inactive-bg:#e0e0e0;--region:#bcbcbc;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-main:#000000;--bg-dim:#1e1e1e;--bg-alt:#2b2b2b;--bg-active:#4a4a4a;--fg-main:#ffffff;--fg-dim:#989898;--fg-alt:#c6daff;--fg-mute:#858585;--blue:#2fafff;--blue-warmer:#79a8ff;--blue-cooler:#00bcff;--green:#44bc44;--green-warmer:#70b900;--green-cooler:#00c06f;--red:#ff5f59;--red-cooler:#ff4f88;--yellow:#d0bc00;--yellow-warmer:#fec43f;--magenta:#feacd0;--magenta-warmer:#f78fe7;--magenta-cooler:#b6a0ff;--cyan:#00d3d0;--cyan-cooler:#4fe7eb;--c-keyword:#b6a0ff;--c-builtin:#00c06f;--c-comment:#989898;--c-string:#79a8ff;--c-variable:#00d3d0;--c-type:#4fe7eb;--c-constant:#ff7f7f;--c-fnname:#00bcff;--c-prep:#f78fe7;--c-docstr:#70b900;--modeline-bg:#4a4a4a;--modeline-fg:#ffffff;--modeline-inactive-bg:#303030;--region:#555a5f}}[data-theme=dark]{--bg-main:#000000;--bg-dim:#1e1e1e;--bg-alt:#2b2b2b;--bg-active:#4a4a4a;--fg-main:#ffffff;--fg-dim:#989898;--fg-alt:#c6daff;--fg-mute:#858585;--blue:#2fafff;--blue-warmer:#79a8ff;--blue-cooler:#00bcff;--green:#44bc44;--green-warmer:#70b900;--green-cooler:#00c06f;--red:#ff5f59;--red-cooler:#ff4f88;--yellow:#d0bc00;--yellow-warmer:#fec43f;--magenta:#feacd0;--magenta-warmer:#f78fe7;--magenta-cooler:#b6a0ff;--cyan:#00d3d0;--cyan-cooler:#4fe7eb;--c-keyword:#b6a0ff;--c-builtin:#00c06f;--c-comment:#989898;--c-string:#79a8ff;--c-variable:#00d3d0;--c-type:#4fe7eb;--c-constant:#ff7f7f;--c-fnname:#00bcff;--c-prep:#f78fe7;--c-docstr:#70b900;--modeline-bg:#4a4a4a;--modeline-fg:#ffffff;--modeline-inactive-bg:#303030;--region:#555a5f;color-scheme:dark}:root{--font-mono:"Aporetic Sans Mono", ui-monospace, "SF Mono", "JetBrains Mono",
               Menlo, Consolas, "DejaVu Sans Mono", monospace;--font-sans:"Aporetic Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--measure:76ch;--frame:1100px;--line:1.7}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}html,body{overflow-x:hidden}body{margin:0;background:var(--bg-main);color:var(--fg-main);font-family:var(--font-mono);font-size:16px;line-height:var(--line);font-variant-ligatures:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;height:auto}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:.2em}::selection{background:var(--region)}hr{border:none;border-top:1px solid var(--bg-alt);margin:2rem 0}code,pre,kbd{font-family:var(--font-mono)}.frame{display:flex;flex-direction:column;min-height:100vh}.buffer{flex:1 0 auto;width:100%;max-width:var(--frame);margin:0 auto;padding:1.5rem 1.5rem 4rem}.prose-wrap{max-width:var(--measure);margin:0 auto}.header-line{position:sticky;top:0;z-index:40;min-width:0;display:flex;align-items:stretch;gap:0;background:var(--bg-dim);border-bottom:1px solid var(--bg-alt);font-size:.8rem}.header-line__inner{display:flex;align-items:stretch;width:100%;max-width:var(--frame);margin:0 auto;padding:0 .5rem}.hl-logo{display:inline-flex;align-items:center;padding:0 .9rem;font-weight:700;color:var(--magenta-cooler);white-space:nowrap}.hl-logo:hover{text-decoration:none;color:var(--magenta-warmer)}.hl-tabs{display:flex;align-items:stretch;margin-left:auto}.hl-tab{display:inline-flex;align-items:center;padding:.55rem .95rem;color:var(--fg-dim);border-bottom:2px solid transparent;white-space:nowrap}.hl-tab:hover{color:var(--fg-main);text-decoration:none;background:var(--bg-alt)}.hl-tab[aria-current=page]{color:var(--fg-main);background:var(--bg-main);border-bottom-color:var(--blue)}.hl-toggle{display:inline-flex;align-items:center;padding:0 .8rem;margin-left:.25rem;background:0 0;border:none;color:var(--fg-dim);font-family:var(--font-mono);font-size:.8rem;cursor:pointer}.hl-toggle:hover{color:var(--fg-main);background:var(--bg-alt)}.mode-line{flex-shrink:0;background:var(--modeline-bg);color:var(--modeline-fg);font-size:.78rem;border-top:1px solid var(--bg-active)}.mode-line__inner{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;max-width:var(--frame);margin:0 auto;padding:.4rem 1.5rem}.ml-badge{letter-spacing:-.05em;opacity:.9}.ml-buffer{font-weight:700}.ml-sep{opacity:.55}.ml-spring{margin-left:auto}.mode-line a{color:var(--modeline-fg)}.mode-line a:hover{color:var(--modeline-fg)}.home{display:flex;flex-direction:column;align-items:center;text-align:center;padding:3.5rem 1rem 2rem}.home__avatar,.prose img.img-avatar{width:168px;height:168px;border-radius:50%;border:1px solid var(--bg-active);padding:4px;background:var(--bg-dim);object-fit:cover}.prose img.img-avatar{display:block;margin:.5rem auto 2rem}.prose img.img-center{display:block;margin:1.5rem auto}.home__name{margin:1.5rem 0 0;font-size:clamp(1.9rem,6vw,2.6rem);font-weight:700;letter-spacing:-.02em}.cursor{display:inline-block;width:.6ch;height:1.05em;margin-left:.12em;background:var(--magenta-cooler);vertical-align:-.12em;animation:blink 1.05s steps(1)infinite}@keyframes blink{50%{opacity:0}}.home__subtitle{margin:.7rem 0 0;color:var(--fg-dim);font-size:.95rem}.home__subtitle::before{content:";; ";color:var(--green)}.social{display:flex;gap:.4rem;margin:1.5rem 0 0}.social a{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;color:var(--fg-dim);border:1px solid transparent;border-radius:6px}.social a:hover{color:var(--blue);border-color:var(--bg-alt);background:var(--bg-dim)}.social svg{width:1.25rem;height:1.25rem}.home__buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin:1.75rem 0 0}.btn{display:inline-flex;align-items:center;padding:.45rem 1rem;color:var(--blue);border:1px solid var(--bg-active);border-radius:6px;background:var(--bg-dim);font-size:.9rem}.btn::before{content:"M-x";color:var(--fg-mute);margin-right:.6ch}.btn:hover{text-decoration:none;border-color:var(--blue);background:var(--bg-alt)}.home__reading{display:flex;flex-direction:column;align-items:center;gap:.35rem;margin:2rem 0 0}.home__reading-label{margin:0 0 .2rem;font-size:.8rem;color:var(--fg-dim)}.home__reading-label::before{content:""}.home__reading-link{color:var(--fg-dim);font-size:.9rem;text-decoration:underline;text-underline-offset:.2em;text-decoration-color:var(--bg-active)}.home__reading-link:hover{color:var(--blue);text-decoration-color:var(--blue)}.minibuffer{margin:1.5rem 0 0;border:1px solid var(--bg-active);border-radius:6px;overflow:hidden;background:var(--bg-dim)}.minibuffer__line{display:flex;align-items:center;padding:.5rem .85rem;border-bottom:1px solid var(--bg-alt)}.minibuffer__count{margin-right:.9ch}.minibuffer__prompt{color:var(--magenta-cooler);font-weight:700;white-space:nowrap;margin-right:1ch}.minibuffer__field{display:inline-flex;align-items:center;min-width:0}.minibuffer__input{border:none;background:0 0;color:var(--fg-main);font-family:var(--font-mono);font-size:1rem;line-height:1;padding:0;caret-color:transparent}.minibuffer__input:focus{outline:none}.minibuffer__cursor{margin-left:0;vertical-align:baseline;height:1.15em;width:.6ch}.minibuffer__count{color:var(--fg-mute);font-size:.85rem;white-space:nowrap;font-variant-numeric:tabular-nums}.vertico{list-style:none;margin:0;padding:.3rem 0;max-height:62vh;overflow-y:auto}.vertico__row{display:flex;gap:2.5ch;align-items:baseline;padding:.18rem .85rem;cursor:pointer;scroll-margin:.5rem}.vertico__row.is-current{background:color-mix(in srgb,var(--blue) 20%,var(--bg-main))}.vertico__row:hover{background:color-mix(in srgb,var(--blue) 10%,var(--bg-main))}.vertico__date{flex-shrink:0;color:color-mix(in srgb,var(--fg-mute) 65%,var(--bg-main));font-variant-numeric:tabular-nums}.vertico__title{color:var(--fg-main)}.page-head{margin:1rem 0 2rem}.page-head__label{color:var(--fg-mute);font-size:.85rem;margin:0 0 .4rem}.page-head__label a{color:var(--fg-mute)}.page-head__label .el-fn{color:var(--c-keyword)}.page-head__label .el-str{color:var(--c-string)}.page-head__title{margin:0;font-size:clamp(1.6rem,4.5vw,2.2rem);font-weight:700;letter-spacing:-.02em;line-height:1.25}.page-head__meta{margin:.7rem 0 0;color:var(--fg-dim);font-size:.85rem}.page-head__meta .sep{opacity:.5;margin:0 .5em}.archive-year{margin:2rem 0 .5rem;color:var(--fg-mute);font-size:.95rem;font-weight:700;border-bottom:1px dashed var(--bg-alt);padding-bottom:.3rem}.post-list{list-style:none;margin:0;padding:0}.post-list li{display:flex;gap:1rem;align-items:baseline;padding:.45rem 0}.post-list time{flex-shrink:0;color:var(--fg-mute);font-size:.85rem;font-variant-numeric:tabular-nums}.post-list a{color:var(--fg-main)}.post-list a:hover{color:var(--blue)}.prose{font-family:var(--font-sans);font-size:1.05rem;text-align:justify;hyphens:auto}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-mono);line-height:1.3;margin:2rem 0 .8rem;letter-spacing:-.01em;text-align:left;hyphens:none}.prose h2{font-size:1.4rem}.prose h2::before{content:"* ";color:var(--magenta-cooler)}.prose h3{font-size:1.15rem}.prose h3::before{content:"** ";color:var(--magenta-cooler)}.prose p,.prose ul,.prose ol,.prose blockquote{margin:0 0 1.1rem}.prose ul,.prose ol{padding-left:1.4rem}.prose li{margin:.25rem 0}.prose a{text-decoration:underline;text-underline-offset:.2em;text-decoration-color:var(--bg-active)}.prose a:hover{text-decoration-color:var(--blue)}.prose img{border-radius:8px}.prose blockquote{border-left:3px solid var(--bg-active);padding:.2rem 0 .2rem 1rem;color:var(--fg-dim)}.prose code{background:var(--bg-dim);padding:.1em .35em;border-radius:4px;font-size:.9em}.prose pre,.prose .highlight{margin:0 0 1.1rem}.prose pre{padding:1rem;overflow-x:auto;border-radius:8px}.prose .highlight pre{margin:0}.prose pre code{background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;margin:0 0 1.1rem;font-size:.92rem}.prose th,.prose td{border:1px solid var(--bg-alt);padding:.4rem .6rem;text-align:left}.prose th{background:var(--bg-dim)}.prose p>a:has(.about-logo){display:inline-block}.prose img.about-logo{display:block;height:2.5rem;width:auto;margin:1.5rem 0 0;padding:.5rem .7rem;background:#fff;border:1px solid var(--fg-mute);border-radius:0}.prose .job-meta{display:block;margin:.1rem 0 .6rem;color:var(--fg-dim);font-size:.9rem}.prose .job-meta::before{content:";; ";color:var(--green)}.prose h3{margin-top:1.2rem}.post-footer{margin-top:2.5rem;padding-top:1.2rem;border-top:1px solid var(--bg-alt);font-size:.9rem}.highlight,.chroma{background:var(--bg-dim);color:var(--fg-main);border-radius:8px}.chroma{font-size:.875rem;line-height:1.55}.highlight pre,.chroma pre{background:0 0;margin:0}.chroma .lnt,.chroma .ln{color:var(--fg-mute);user-select:none}.chroma .hl{background:color-mix(in srgb,var(--yellow) 16%,transparent)}.chroma .err{color:var(--red)}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:var(--c-keyword)}.chroma .na{color:var(--c-variable)}.chroma .nb,.chroma .bp{color:var(--c-builtin)}.chroma .nc,.chroma .nn{color:var(--c-type)}.chroma .no{color:var(--c-constant)}.chroma .nd,.chroma .ni{color:var(--magenta-cooler)}.chroma .ne{color:var(--red-cooler)}.chroma .nf,.chroma .fm{color:var(--c-fnname)}.chroma .nl{color:var(--yellow-warmer)}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:var(--c-variable)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .sd,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .ss{color:var(--c-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--c-constant)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs{color:var(--c-comment);font-style:italic}.chroma .cp,.chroma .cpf{color:var(--c-prep)}.chroma .o,.chroma .ow{color:var(--c-keyword)}.chroma .gd{color:var(--red)}.chroma .gi{color:var(--green)}@media(max-width:640px){.frame,.buffer,.header-line__inner,.hl-tabs{min-width:0}.buffer{padding:1rem 1rem 3rem}.header-line{font-size:.72rem}.hl-logo{padding:0 .55rem}.hl-tab{padding:.5rem .45rem}.hl-toggle{padding:0 .5rem}.post-list li{flex-direction:column;align-items:stretch;gap:.1rem;min-width:0}.post-list a{overflow-wrap:anywhere}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}html{scroll-behavior:auto}}