:root{--bg:#0d0b09;--text:#cdc7bd;--muted:#948b7e;--accent:#e5b77e;--card:#171411;--border:#2e2a24;--link:#e5b77e;--code:#ffffff;--subtle:#b1a99d;--heading:#f6f3ee;--grain-opacity:0.09;--border-subtle:color-mix(in srgb, var(--border) 40%, transparent);color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme]){--bg:#f8f4e9;--text:#3a332a;--muted:#756a58;--accent:#1d4ed8;--card:#f1ebdc;--border:#ded4bf;--link:#1d4ed8;--code:#1a1714;--subtle:#665c4d;--heading:#171310;--grain-opacity:0.03;--border-subtle:color-mix(in srgb, var(--border) 40%, transparent);color-scheme:light}}:root[data-theme=light]{--bg:#f8f4e9;--text:#3a332a;--muted:#756a58;--accent:#1d4ed8;--card:#f1ebdc;--border:#ded4bf;--link:#1d4ed8;--code:#1a1714;--subtle:#665c4d;--heading:#171310;--grain-opacity:0.03;--border-subtle:color-mix(in srgb, var(--border) 40%, transparent);color-scheme:light}:root[data-theme=dark]{--bg:#0d0b09;--text:#cdc7bd;--muted:#948b7e;--accent:#e5b77e;--card:#171411;--border:#2e2a24;--link:#e5b77e;--code:#ffffff;--subtle:#b1a99d;--heading:#f6f3ee;--grain-opacity:0.09;--border-subtle:color-mix(in srgb, var(--border) 40%, transparent);color-scheme:dark}.theme-transition *{transition:background-color .2s ease,color .2s ease,border-color .2s ease}*{-webkit-tap-highlight-color:transparent}html{scrollbar-width:thin;scrollbar-color:var(--accent)transparent;font-size:clamp(16px,12px + .3125vw,20px)}::view-transition-old(root),::view-transition-new(root){animation-duration:.04s}@font-face{font-family:silkscreen;src:url(/fonts/Silkscreen-Regular.woff2)format("woff2");font-weight:400;font-display:swap}.label,.tag-list__link,.rss-link,.article-meta,.list__more,.post-toc__summary,.post-toc__title,.section-header__label,.section-header__title,.tag-back__link,.footer__credits a,.menu-list__num,.home-banner__tag,.home-banner__cta{font-family:silkscreen,monospace}html,body{overflow-x:clip}@media(max-width:20rem){html{overflow-x:auto}}body{background-color:var(--bg);color:var(--text);width:100%;min-width:20rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,sans-serif;line-height:1.6;margin:0}h1,h2,h3{font-weight:600}h1{margin-block:1rem .5rem;color:var(--accent)}h2{margin-block:.85rem .4rem;color:var(--heading)}h3{color:var(--heading)}a{color:var(--link);text-decoration:none}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}li:has(>input[type=checkbox]){list-style:none;margin-inline-start:-1.25em}li>input[type=checkbox]{margin-inline-end:.4em}body{overflow-x:clip;display:flex;flex-direction:column;min-height:100dvh}.shell{width:100%;margin-inline:auto;box-sizing:border-box;padding:1rem}.shell--narrow{max-width:51.25rem}.inner{width:100%}.content{padding-block:2rem;flex:1 0 auto;scroll-margin-top:3rem}.page-title{text-align:left;margin-block-end:.2rem}img,video,iframe{max-width:100%;height:auto;display:block}body::after{content:"";position:fixed;inset:0;z-index:12000;pointer-events:none;opacity:var(--grain-opacity);background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="180" height="180"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="2"/><feColorMatrix type="saturate" values="0"/></filter><rect width="100%25" height="100%25" filter="url(%23n)"/></svg>')}.footer{margin-top:auto;border-top:1px solid var(--border-subtle);font-size:.75rem;color:var(--muted)}.footer .shell{padding-block:1.25rem}.footer__row{display:flex;justify-content:space-between;align-items:center}.footer__row+.footer__row{margin-top:.75rem}.footer__social{display:flex;align-items:center;flex-wrap:wrap;gap:.9rem}.rss-link{display:inline-flex;align-items:center;gap:.2rem;vertical-align:middle;color:var(--muted);transition:color .15s ease}.rss-link:hover{color:var(--text)}.rss-link svg{width:1em;height:1em}@supports selector(:has(*)){@media(max-width:36rem){html:has(.menu-mobile[open]){overflow:hidden}}}.site-header-outer{position:sticky;top:0;z-index:100}.site-header-bar{background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.site-header{height:3rem;box-sizing:border-box;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:center}.site-title{margin:0;font-size:1rem;font-weight:600}.site-title a{color:var(--heading)}.menu-desktop{display:flex;gap:1.5rem;align-items:center}.menu-desktop a{color:var(--muted);font-size:.875rem;font-weight:500;transition:color .15s ease}.menu-desktop a:hover{color:var(--text)}.menu-desktop a:focus-visible{color:var(--text)}.menu-desktop a.active{color:var(--heading)}.menu-mobile{display:none;position:relative;z-index:10000}.menu-toggle{cursor:pointer;list-style:none;user-select:none;display:inline-grid;place-items:center;padding:.5rem;color:var(--text);font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em}.menu-toggle::-webkit-details-marker{display:none}.menu-toggle::before,.menu-toggle::after{grid-area:1/1;transition:opacity .2s ease}.menu-toggle::before{content:"[ menu ]"}.menu-toggle::after{content:"[ x ]";opacity:0}.menu-mobile[open] .menu-toggle::before{opacity:0}.menu-mobile[open] .menu-toggle::after{opacity:1}.menu-panel{position:fixed;inset:0;z-index:9999;display:none;opacity:0;align-items:center;justify-content:center;pointer-events:none;transition:opacity .25s ease,display .25s allow-discrete}.menu-panel::before{content:"";position:absolute;top:3rem;left:0;right:0;bottom:0;z-index:-1;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);pointer-events:auto}.menu-panel>*{pointer-events:auto}.site-header-outer:has(.menu-mobile[open]) .menu-panel{display:flex;opacity:1}@starting-style{.site-header-outer:has(.menu-mobile[open]) .menu-panel{opacity:0}}@media(prefers-reduced-motion:reduce){.menu-panel{transition:none}}.menu-list{display:flex;flex-direction:column;align-items:center;gap:.5rem}.menu-list a{display:flex;align-items:baseline;gap:.5rem;font-size:1.1rem;font-weight:500;color:var(--muted);padding:.5rem 0;transition:color .15s ease}.menu-list__num{font-size:.65rem;font-weight:400;color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.05em;opacity:.35;transition:color .15s ease,opacity .15s ease}.menu-list a.active .menu-list__num{opacity:1}.menu-list a:focus-visible{color:var(--accent)}.menu-list a.active{color:var(--heading)}@media(hover:hover){.menu-list a:hover .menu-list__num{opacity:1}}.menu-panel .theme-switcher{position:absolute;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px))}.menu-panel__close{position:absolute;left:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));border:none;background:0 0;padding:0;font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em;color:var(--muted);cursor:pointer;transition:color .15s ease}@media(hover:hover){.menu-panel__close:hover,.menu-panel__close:focus-visible{color:var(--accent)}}@media(max-width:36rem){.menu-desktop{display:none}.menu-mobile{display:block}}.contact-header{margin-bottom:1rem}.contact-header--media{margin-top:2.5rem}.contact-header__desc{font-size:1rem;color:var(--subtle);margin:0;max-width:50ch}.contact-list.list-none{display:flex;flex-direction:column;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding-bottom:.3rem}.contact-item__link,.contact-item__static{display:flex;align-items:center;gap:1rem;padding:.6rem 0;color:var(--text);transition:color .15s ease}.contact-item__link:hover .contact-item__icon,.contact-item__link:hover .label{color:var(--accent)}.contact-item__icon{display:flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;color:var(--muted);flex-shrink:0;transition:color .15s ease}.contact-item__icon svg{width:100%;height:100%;fill:currentColor}.contact-item__info{display:flex;flex-direction:column;gap:0;transition:color .15s ease}.contact-item__info .label{transition:color .15s ease;line-height:1.2}.contact-item__value{font-weight:500;font-size:1rem;line-height:1.2}.contact-extra{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border-subtle);color:var(--subtle);line-height:1.6}.section,.article,.contact{padding-block:clamp(2rem,6vw,4rem)}.section--flush{padding-block-start:0}.article-header{margin-bottom:clamp(1.5rem,4vw,2.5rem)}.section-header{margin-bottom:.5rem}.section-header__top{display:flex;align-items:center;gap:.5rem}.section-header__title{font-size:clamp(2rem,5vw,2.5rem);line-height:1;margin:0 0 .5rem}.section-header__rss{position:relative;margin-left:auto;gap:.15rem}.section-header__rss svg{width:1em;height:1em}.section-header__label{font-size:.8rem;font-weight:500;line-height:1.2;color:var(--muted);margin:0}.section-header__label+.section-header__title{margin-top:0;margin-left:-.05em}.section-header__title .tag-list__name{font-size:clamp(1.85rem,4.5vw,2.25rem)}.tag-header{margin-bottom:3rem}.tag-header__desc{margin:0 0 .5rem}.tag-header__desc p{margin:0}.tag-header__group{width:fit-content;margin-inline:auto}.tag-header__group .section-header__label{font-size:.9rem;margin-bottom:-.2rem}.post-list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.post-item{padding:1rem 0;border-bottom:1px solid var(--border)}.post-item:first-child{padding-top:0}.post-item .list__link{padding:0}.post-item__excerpt{font-size:.9rem;color:var(--subtle);margin:.5rem 0 0;line-height:1.5}.pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.pagination__link{font-size:.875rem;font-weight:500}.pagination__info{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem}.tag-list:not(.article-tags){padding-bottom:.75rem;border-bottom:1px solid var(--border)}.tag-list__link{display:inline-flex;align-items:center;gap:.35rem;font-size:.9rem;color:var(--muted);transition:color .15s ease}.tag-list__link:hover{color:var(--text)}.tag-list__name::before{content:"#";opacity:.5}.tag-list__count{font-size:.75rem;opacity:.6}.tag-back{margin-top:1rem}.tag-back__link{font-size:.85rem;font-weight:500;color:var(--muted)}.tag-back__link::before{content:"<- ";letter-spacing:-.17em}.article-cover{width:100%;margin-top:0;margin-bottom:1.25rem;overflow:hidden;border-radius:.5rem}.article-cover__img{width:100%;aspect-ratio:2/1;object-fit:cover;display:block}.article-cover+.article{padding-block-start:0}.article-header__sentinel{position:absolute;top:0;left:0;width:1px;height:1px;pointer-events:none}.article-meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.8rem;color:var(--muted);margin-bottom:.75rem}.article-meta__info{display:flex;align-items:center;gap:.5rem}.article-meta__sep{opacity:.5}.article-meta__translations{display:flex;align-items:center;gap:.5rem}.article-meta__translations-label{opacity:.5}.article-meta__lang{color:var(--accent);transition:opacity .15s ease}.article-meta__lang:hover{opacity:.75}.article-title{font-size:clamp(1.75rem,5vw,2.5rem);line-height:1.2}.article-desc{margin:1rem 0 0;font-size:1.1rem;color:var(--subtle);line-height:1.6}.article-body{display:flex;flex-direction:column;gap:2rem}.article-content{min-width:0;line-height:1.75;color:var(--text)}.article-content>:first-child{margin-top:0}.article-content>*{margin-top:1.5rem;margin-bottom:0}.article-content p,.article-content ul,.article-content ol{margin-top:1.25rem}.article-content h2,.article-content h3,.article-content h4{scroll-margin-top:4.5rem;color:var(--heading);font-weight:600}.copied-toast{position:absolute;z-index:200;pointer-events:none;white-space:nowrap;font-size:.65rem;font-family:silkscreen,monospace;color:var(--accent);background:var(--card);border:2px solid var(--border);padding:.15rem .45rem;border-radius:3px;box-shadow:0 2px 8px rgba(0,0,0,.15);animation:copied-toast 1.2s ease forwards}@keyframes copied-toast{0%{opacity:0;transform:translate(-50%,-100%)}15%{opacity:1;transform:translate(-50%,-160%)}70%{opacity:1;transform:translate(-50%,-160%)}100%{opacity:0;transform:translate(-50%,-230%)}}@media(prefers-reduced-motion:reduce){.copied-toast{animation:none;opacity:1;transform:translate(-50%,-140%)}}.article-content :target,.article-content .is-flash{animation:target-flash .3s steps(1,end)3}@keyframes target-flash{0%,50%{color:var(--accent)}51%,100%{color:var(--heading)}}@media(prefers-reduced-motion:reduce){.article-content :target{animation:none}}.article-content h2{font-size:1.5rem;margin-top:2rem;letter-spacing:-.01em}.article-content h3{font-size:1.17rem;margin-top:1.5rem}.article-content :is(h2,h3,h4)+*{margin-top:.5rem}.article-content ul,.article-content ol{padding-inline-start:1.5rem}.article-content p a,.article-content li a{color:var(--accent)}.article-content p a:hover,.article-content li a:hover{background-image:repeating-linear-gradient(to right,var(--accent) 0,var(--accent) 3px,transparent 3px,transparent 6px);background-position:0 100%;background-size:100% 1px;background-repeat:repeat-x}.article-content h1 a,.article-content h2 a,.article-content h3 a,.article-content h4 a{color:inherit}@media(hover:hover){.article-content h1 a:hover,.article-content h2 a:hover,.article-content h3 a:hover,.article-content h4 a:hover{color:var(--accent)}}.article-content blockquote{margin:1.5rem 0;padding:0 0 0 1rem;border-left:2px solid color-mix(in srgb,var(--border) 60%,transparent);color:var(--subtle);font-style:italic}.article-content img,.article-content video{border-radius:.5rem;margin:1.5rem 0;max-width:100%;height:auto}.article-footer{margin-top:clamp(2rem,5vw,3rem);padding-top:1.5rem;border-top:1px solid var(--border-subtle)}.article-tags{margin-top:1rem}.article-header:has(.article-tags){margin-bottom:1rem}.post-toc,.post-toc *{box-sizing:border-box}.post-toc{margin-bottom:2rem;padding:1rem 1.25rem;border:1px solid var(--border);border-radius:.5rem;background:var(--card)}.post-toc__summary{display:inline-flex;align-items:center;justify-content:flex-start;gap:.4rem;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);cursor:pointer;list-style:none;user-select:none}.post-toc__summary::-webkit-details-marker{display:none}.post-toc__burger,.post-toc__header{display:none}.post-toc__chevron{order:-1;margin-right:.2rem;position:relative;width:10px;height:6px;transform:scaleY(-1)}.post-toc__chevron::before{content:"";position:absolute;top:0;left:4px;width:2px;height:2px;background:currentColor;box-shadow:-2px 2px currentColor,2px 2px currentColor,-4px 4px currentColor,4px 4px currentColor}.post-toc[open] .post-toc__chevron{transform:none}.post-toc__body{margin-top:1rem}.post-toc__body ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.post-toc__body li{line-height:1.4}.post-toc__body a{font-size:.9rem;color:var(--subtle);transition:color .15s ease}.post-toc__body a:hover{color:var(--heading)}.post-toc__body ul ul{padding-left:1rem;margin-top:.5rem}.js .post-toc__body a.is-active{color:var(--accent)}@media(max-width:1399.98px){.js .post-toc{position:fixed;right:1.25rem;bottom:1.25rem;left:auto;z-index:50;margin:0;padding:0;border:none;background:0 0;--toc-anim:0.2s}.js .post-toc__label,.js .post-toc__chevron{display:none}.js .post-toc__summary{display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:50%;background:color-mix(in srgb,var(--card) 60%,var(--bg));color:color-mix(in srgb,var(--muted) 70%,var(--bg));border:1px solid color-mix(in srgb,var(--border) 55%,var(--bg));transition:color .15s ease,border-color .15s ease}}@media(max-width:1399.98px)and (hover:hover){.js .post-toc__summary:hover{color:var(--accent);border-color:var(--accent)}}@media(max-width:1399.98px){.js .post-toc__burger{display:block}.js .post-toc[open]::before{content:"";position:fixed;inset:0;z-index:101;background:rgba(0,0,0,.5)}.js .post-toc__sheet{position:fixed;left:0;right:0;bottom:0;z-index:102;display:none;flex-direction:column;max-height:65vh;background:var(--bg);border-top:1px solid var(--border);border-radius:.75rem .75rem 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.2);opacity:0;transform:translateY(.75rem);transition:opacity var(--toc-anim)ease,transform var(--toc-anim)ease,display var(--toc-anim)allow-discrete}.js .post-toc[open] .post-toc__sheet{display:flex;opacity:1;transform:translateY(0)}@starting-style{.js .post-toc[open] .post-toc__sheet{opacity:0;transform:translateY(0.75rem)}}.js .post-toc__header{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;border-bottom:1px solid var(--border)}.js .post-toc__title{font-size:.85rem;font-weight:700;color:var(--heading)}.js .post-toc__close{display:flex;align-items:center;padding:.2rem;margin:-.2rem;background:0 0;border:none;font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em;color:var(--muted);cursor:pointer;transition:color .15s ease}}@media(max-width:1399.98px)and (hover:hover){.js .post-toc__close:hover{color:var(--text)}}@media(max-width:1399.98px){.js .post-toc__body{margin:0;overflow-y:auto;padding:.6rem 1rem calc(.85rem + env(safe-area-inset-bottom,0px));-webkit-overflow-scrolling:touch}.js .post-toc__body ul{gap:.35rem}.js .post-toc__body ul ul{padding-left:.85rem;margin-top:.35rem}.js .post-toc__body a{font-size:.78rem;color:var(--muted);transition:color .15s ease}}@media(max-width:1399.98px)and (hover:hover){.js .post-toc__body a:hover{color:var(--heading)}}@media(min-width:1400px){.js .post-toc{position:fixed;top:var(--toc-top,var(--toc-top-min,5rem));left:max(1rem,(100vw - 51.25rem)/2 - 220px);width:200px;margin-bottom:0;padding:0;border:none;border-radius:0;background:0 0;--toc-top-min:calc(v.$header-height + 2rem);z-index:2;visibility:hidden}.js .post-toc__summary{display:inline-flex;align-items:center;justify-content:flex-start;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;opacity:.7;margin-bottom:.75rem;gap:.4rem;color:var(--muted)}.js .post-toc__label{display:inline}.js .post-toc__chevron{display:block;margin-left:0}.js .post-toc__body{max-height:calc(100dvh - 3rem - 6rem);overflow-y:auto;margin-top:0}.js .post-toc__body::-webkit-scrollbar{width:3px}.js .post-toc__body::-webkit-scrollbar-track{background:0 0}.js .post-toc__body::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.js .post-toc__body::-webkit-scrollbar-thumb:hover{background:var(--muted)}.js .post-toc__body ul{gap:.35rem}.js .post-toc__body a{font-size:.8rem;line-height:1.5;display:block;word-wrap:break-word;overflow-wrap:break-word;color:var(--muted)}.js .post-toc__body a:hover{color:var(--text)}.js .post-toc__body ul ul{padding-left:.75rem}}.highlight,pre:not(.chroma){background:var(--card);border:2px solid var(--border);border-radius:2px;box-sizing:border-box;max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:pre;color:var(--code);padding:1rem 1.25rem;font-size:.875rem;line-height:1.6;font-family:jetbrains mono,fira code,sfmono-regular,Menlo,Consolas,liberation mono,monospace;scrollbar-width:none;transition:border-color .15s ease}.highlight::-webkit-scrollbar,pre:not(.chroma)::-webkit-scrollbar{display:none}@media(hover:hover){.highlight:hover,pre:not(.chroma):hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}}.highlight{padding:0}.highlight pre{box-sizing:border-box;margin:0;padding:1rem 1.25rem}.code-wrap{position:relative}.copy-btn{background:var(--card);border:2px solid var(--border);border-radius:2px;position:absolute;top:.5rem;right:.5rem;padding:.2rem .5rem;font-size:.7rem;font-family:silkscreen,monospace;color:var(--muted);cursor:pointer;transition:opacity .15s ease,color .15s ease,border-color .15s ease}.copy-btn:hover,.copy-btn:focus-visible{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}@media(hover:hover){.copy-btn{opacity:0}.code-wrap:hover .copy-btn,.copy-btn:focus-visible{opacity:1}}@media(hover:none){.copy-btn{display:none}}.copy-tooltip{background:var(--card);border:2px solid var(--border);border-radius:2px;position:absolute;bottom:100%;left:50%;margin-bottom:.35rem;padding:.2rem .5rem;font-size:.7rem;font-family:silkscreen,monospace;white-space:nowrap;color:var(--text);opacity:0;transform:translate(-50%,4px);transition:opacity .15s ease,transform .15s ease;pointer-events:none}.copy-tooltip.is-visible{opacity:1;transform:translate(-50%,0)}:not(pre)>code{font-size:.85em;background:var(--border);color:var(--code);padding:.2em .4em;border-radius:.25rem;font-family:jetbrains mono,fira code,sfmono-regular,Menlo,Consolas,liberation mono,monospace}.highlight code,pre code{background:0 0;border:0;padding:0;color:inherit;font-size:inherit;line-height:inherit}.chroma{color:var(--code);background:0 0}.chroma .err{color:#960050;background:#1e0010}.chroma .lnt,.chroma .ln{color:#7f7f7f;user-select:none;margin-right:.4em;padding:0 .4em}.chroma .hl{background:#3c3d38}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .no{color:#66d9ef}.chroma .kn,.chroma .nt,.chroma .o,.chroma .ow,.chroma .gd{color:#f92672}.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .fm,.chroma .gi{color:#a6e22e}.chroma .l,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .se{color:#ae81ff}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss,.chroma .ld{color:#e6db74}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf,.chroma .gu{color:#75715e}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}:root[data-theme=light] .chroma .k,:root[data-theme=light] .chroma .kc,:root[data-theme=light] .chroma .kd,:root[data-theme=light] .chroma .kp,:root[data-theme=light] .chroma .kr,:root[data-theme=light] .chroma .kt,:root[data-theme=light] .chroma .no{color:#0369a1}:root[data-theme=light] .chroma .kn,:root[data-theme=light] .chroma .nt,:root[data-theme=light] .chroma .o,:root[data-theme=light] .chroma .ow,:root[data-theme=light] .chroma .gd{color:#be123c}:root[data-theme=light] .chroma .na,:root[data-theme=light] .chroma .nc,:root[data-theme=light] .chroma .nd,:root[data-theme=light] .chroma .ne,:root[data-theme=light] .chroma .nf,:root[data-theme=light] .chroma .nx,:root[data-theme=light] .chroma .fm,:root[data-theme=light] .chroma .gi{color:#15803d}:root[data-theme=light] .chroma .l,:root[data-theme=light] .chroma .m,:root[data-theme=light] .chroma .mb,:root[data-theme=light] .chroma .mf,:root[data-theme=light] .chroma .mh,:root[data-theme=light] .chroma .mi,:root[data-theme=light] .chroma .il,:root[data-theme=light] .chroma .mo,:root[data-theme=light] .chroma .se{color:#6d28d9}:root[data-theme=light] .chroma .s,:root[data-theme=light] .chroma .sa,:root[data-theme=light] .chroma .sb,:root[data-theme=light] .chroma .sc,:root[data-theme=light] .chroma .dl,:root[data-theme=light] .chroma .sd,:root[data-theme=light] .chroma .s2,:root[data-theme=light] .chroma .sh,:root[data-theme=light] .chroma .si,:root[data-theme=light] .chroma .sx,:root[data-theme=light] .chroma .sr,:root[data-theme=light] .chroma .s1,:root[data-theme=light] .chroma .ss,:root[data-theme=light] .chroma .ld{color:#b45309}:root[data-theme=light] .chroma .err{color:#dc2626;background:#fee2e2}:root[data-theme=light] .chroma .hl{background:#e5e7eb}.home{padding-block:clamp(3rem,8vw,5rem)clamp(2rem,6vw,4rem);display:flex;flex-direction:column;gap:clamp(2.5rem,6vw,3.5rem)}.home-banner{background:var(--card);border:2px solid var(--border);border-radius:2px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1rem;padding:.65rem 1rem;color:var(--text);font-size:clamp(.7rem,3.4vw,.875rem);margin-bottom:calc(clamp(2.5rem,6vw,3.5rem)*-1 + 1rem);transition:border-color .15s ease}.home-banner:hover{border-color:var(--accent);color:var(--text)}.home-banner__text{flex:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-banner__tag{color:var(--accent);margin-right:.3rem}.home-banner__cta{flex:none;font-size:.7rem;font-weight:500;color:var(--subtle);transition:color .15s ease}.home-banner__cta::after{content:" ->";letter-spacing:-.17em}.home-banner:hover .home-banner__cta{color:var(--accent)}.home-intro{display:flex;flex-direction:column;gap:.5rem;margin-bottom:-1.5rem}.topo-icon{width:1rem;height:1rem;vertical-align:middle;margin-right:.35rem;opacity:.8}.home-intro__bio{font-size:1.1rem;line-height:1.6;color:var(--text);margin:0}.home-intro__bio>:first-child{margin-top:0}.home-intro__bio>:last-child{margin-bottom:0}.home-hero{width:100vw;margin-inline:calc(50% - 50vw);margin-top:-2rem}.home-hero__canvas{display:none;width:100%;height:clamp(7rem,16vw,11rem)}.home-hero--on .home-hero__canvas{display:block}.home-media{display:flex;align-items:center;gap:.65rem;justify-content:flex-end;padding-right:1rem}.home-media__link{display:flex;align-items:center;justify-content:center;color:var(--text);transition:color .15s ease}.home-media__link svg{width:1.25rem;height:1.25rem}.list .section-header__rss{font-size:.75rem}.list .section-header__rss svg{width:.7em;height:.7em}.list{display:flex;flex-direction:column;gap:.25rem}.list__list{display:flex;flex-direction:column;border-bottom:1px solid var(--border);padding-bottom:.5rem}.list__link{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0;color:var(--text);transition:color .15s ease}.list__link:hover .list__link-date{color:var(--accent)}.list__link-title{font-weight:500}.star-icon{width:.8em;height:auto;margin-right:.35em;color:var(--accent);vertical-align:-.05em}.list__link-date{font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--muted);flex-shrink:0;transition:color .15s ease}.list__more{font-size:.85rem;font-weight:500}.photo-grid{columns:2;column-gap:.5rem;margin-top:2rem}.photo-grid__item{margin:0 0 .5rem;break-inside:avoid}.photo-grid__item a{display:block;cursor:zoom-in}.photo-preview{padding:0;margin:0;width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;background:0 0;border:none;position:relative;cursor:default}.photo-preview[open]{display:flex;align-items:center;justify-content:center}.photo-preview::backdrop{background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}html:has(.photo-preview[open]){overflow:hidden}.photo-preview__close{position:absolute;top:.75rem;right:.75rem;z-index:1;display:flex;background:0 0;border:none;color:var(--subtle);cursor:pointer;font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em;transition:color .15s ease}.photo-preview__close:hover{color:var(--text)}.photo-preview__stage{position:relative;display:flex;max-width:calc(100vw - 4rem);max-height:90dvh}.photo-preview__img{max-width:calc(100vw - 4rem);max-height:90dvh;object-fit:contain;display:block;border-radius:.25rem;cursor:pointer}.photo-preview__hint{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 1rem);left:50%;transform:translateX(-50%);font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em;color:var(--subtle);white-space:nowrap;pointer-events:none}.photo-preview__hint::before{content:"scroll or click to navigate"}@media(hover:none){.photo-preview__hint::before{content:"swipe or tap to navigate"}}.photo-grid__item img{width:100%;height:auto;display:block;border-radius:.25rem;transition:opacity .15s ease}.photo-grid__item a:hover img{opacity:.9}@media(max-width:34rem){.photo-grid{columns:1}}@media(max-width:48rem){.photo-preview__stage,.photo-preview__img{max-width:calc(100vw - 2rem)}}.src-crumbs{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;font-family:jetbrains mono,fira code,sfmono-regular,Menlo,Consolas,liberation mono,monospace;font-size:.9rem;margin-block-end:1rem;color:var(--muted)}.src-crumbs__git .github-icon{width:1.1rem;height:1.1rem;vertical-align:middle}.src-crumbs__current{display:inline;font-size:inherit;font-weight:600;color:var(--text)}.src-tree{font-family:jetbrains mono,fira code,sfmono-regular,Menlo,Consolas,liberation mono,monospace;font-size:.85rem}.src-tree__row{display:flex;justify-content:space-between;gap:1rem;padding-block:.2rem;color:var(--muted)}.src-tree__info{flex-shrink:0}.src-view__meta{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;font-family:jetbrains mono,fira code,sfmono-regular,Menlo,Consolas,liberation mono,monospace;font-size:.8rem;color:var(--muted);margin-block-end:.5rem}.src-view__copy{background:0 0;border:0;padding:0;font:inherit;color:inherit;cursor:pointer}.src-view__copy:hover{color:var(--accent)}.src-linktip{background:var(--card);border:2px solid var(--border);border-radius:2px;position:fixed;font-size:.7rem;font-family:silkscreen,monospace;color:var(--text);display:flex;flex-direction:column;white-space:nowrap;z-index:10;transition:opacity .35s ease}.src-linktip.is-hiding{opacity:0;pointer-events:none}.src-linktip button{background:0 0;border:0;padding:.25rem .5rem;font:inherit;color:inherit;cursor:pointer;text-align:left}.src-linktip button:hover{color:var(--accent)}.src-linktip button+button{border-block-start:2px solid var(--border)}.src-view__code{overflow-x:auto}.src-view__code .highlight{border:0}.src-view__code .highlight pre{padding-inline-start:.5rem}.src-view__code .ln{color:var(--muted);cursor:pointer;align-self:flex-start;flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.src-view__code .ln:hover{color:var(--accent)}.src-view__code .ln a{color:inherit}.src-view__code .chroma .line{display:flex;width:fit-content;min-width:100%}.src-view__code .line.is-selected{background:color-mix(in srgb,var(--accent) 15%,transparent)}.src-view__code :target,.src-view__code .line{scroll-margin-block-start:4rem}.src-view__code--wrap .highlight,.src-view__code--wrap .highlight pre,.src-view__code--wrap .cl{white-space:pre-wrap;overflow-wrap:anywhere}.theme-switcher{border:none;background:0 0;padding:0;font-family:silkscreen,monospace;font-size:.7rem;letter-spacing:.05em;color:var(--muted);cursor:pointer;transition:color .15s ease;background-image:repeating-linear-gradient(to right,var(--accent) 0,var(--accent) 3px,transparent 3px,transparent 6px);background-position:0 100%;background-size:100% 1px;background-repeat:repeat-x}.theme-switcher:hover,.theme-switcher:focus-visible{color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;top:calc(3rem + .5rem);left:1rem;z-index:10000;max-width:calc(100vw - 1rem*2);padding:.4rem .85rem;background:var(--card);border:2px solid var(--border);border-radius:3px;color:var(--text);font-weight:600;font-size:.875rem;line-height:1.2;white-space:nowrap;transform:translateY(calc(-100% - 3rem - 1.5rem))}.skip-link:focus{transform:translateY(0);border-color:var(--accent);outline:none}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important}}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.min-w-0{min-width:0}.list-none{list-style:none;margin:0;padding:0}.label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0}.title-lg{font-weight:700;color:var(--heading);margin:0;letter-spacing:-.02em}.link{color:var(--muted);transition:color .15s ease}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:70vh}.error-page__code{font-family:silkscreen,monospace;font-size:clamp(3.5rem,12vw,6rem);font-weight:400;color:var(--accent);margin:0;line-height:1;letter-spacing:-.02em}.error-page__title{font-size:1.75rem;font-weight:700;color:var(--heading);margin:.5rem 0 0}.error-page__body{font-size:1.15rem;color:var(--muted);margin:0 0 1rem}@media print{.site-header-outer,.footer,.post-nav,.post-toc{display:none!important}body::after{display:none!important}body{background:#fff!important;color:#000!important}.shell,.shell--narrow{max-width:100%!important;padding:0!important}a{color:#000!important;text-decoration:underline!important}pre,code{background:#f5f5f5!important;border:1px solid #ddd!important}pre,blockquote,img{page-break-inside:avoid}h2,h3{page-break-after:avoid}}