:root{color-scheme:light;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--storm:#537179;--vanilla:#bfae99;--bg:#efe9e1;--fg:#1c2a2e;--strong:#0d1517;--muted:#4a5f65;--border:#d6cbbd;--marker:var(--storm);--tint:#e4dbcf;--accent:var(--storm);--accent-fg:#fff;--highlight:color-mix(in srgb, var(--vanilla) 50%, transparent);--selection:var(--storm);--selection-fg:#fff;--focus:var(--storm);--text-size:13px;--line:22px;--measure:80ch;--page-pad:40px;--ease:cubic-bezier(.2, 0, 0, 1)}:root[data-theme=dark]{color-scheme:dark;--bg:#1a2427;--fg:#e9e2d8;--strong:#fff;--muted:var(--vanilla);--border:#2f3f43;--marker:#6f8f97;--tint:#24343a;--accent:var(--vanilla);--accent-fg:#1a2427;--highlight:color-mix(in srgb, var(--storm) 45%, transparent);--selection:var(--vanilla);--selection-fg:#000;--focus:var(--vanilla)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg);scroll-behavior:smooth}body{padding:var(--page-pad);background:var(--bg);color:var(--fg);font-family:var(--font-mono);font-size:var(--text-size);line-height:var(--line);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-wrap:break-word;margin:0}.page{max-width:var(--measure);min-height:calc(100dvh - 2 * var(--page-pad));flex-direction:column;display:flex}main{flex:1}img,svg,video{max-width:100%;display:block}img{height:auto}a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--strong)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}h1,h2,h3,h4,h5,h6{font:inherit;color:var(--fg);overflow-wrap:anywhere;margin:0;font-weight:700}h1:before,h2:before,h3:before,h4:before{color:var(--marker);font-weight:400}h1:before{content:"# " / ""}h2:before{content:"## " / ""}h3:before{content:"### " / ""}h4:before{content:"#### " / ""}h1,h2{text-transform:uppercase}p,figure,blockquote{margin:0}ul,ol{margin:0;padding:0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:var(--selection);color:var(--selection-fg)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{background:var(--fg);color:var(--bg);z-index:100;padding:4px 1ch;text-decoration:none;position:absolute;top:8px;left:8px;transform:translateY(-200%)}.skip-link:focus{transform:none}.masthead p{text-transform:uppercase}.masthead a{text-decoration:none}.cursor{background:var(--accent);vertical-align:-.17em;width:.6em;height:1.05em;margin-left:.4em;animation:1s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}.nav{margin-top:var(--line);text-transform:uppercase;flex-wrap:wrap;gap:0 2ch;list-style:none;display:flex}.nav a,.theme-toggle{text-transform:inherit;text-decoration:none}.nav a:before,.theme-toggle:before{content:"[" / "";color:var(--marker)}.nav a:after,.theme-toggle:after{content:"]" / "";color:var(--marker)}.nav a:hover,.theme-toggle:hover{color:var(--strong);text-decoration:underline}.nav a[aria-current=page]{background:var(--accent);color:var(--accent-fg)}.nav a[aria-current=page]:before,.nav a[aria-current=page]:after{color:inherit}.theme-toggle .when-dark{display:none}:root[data-theme=dark] .theme-toggle .when-dark{display:inline}:root[data-theme=dark] .theme-toggle .when-light{display:none}main>:first-child{margin-top:calc(var(--line) * 3)}.tagline{color:var(--muted)}section>:is(h1,h2){margin:calc(var(--line) * 2) 0 var(--line)}section>p+p{margin-top:var(--line)}.page-header,.page-header h1{margin-bottom:var(--line)}.lede{max-width:64ch}.page-meta,.crumb{color:var(--muted)}.crumb{text-transform:uppercase;margin-bottom:var(--line)}.more{margin-top:var(--line);text-transform:uppercase}.md-link:before{content:"[" / "";color:var(--marker);display:inline-block}.md-link:after{content:"](" attr(href) ")" / "";color:var(--marker);display:inline-block}.dash{list-style:none}.dash li:before{content:"- " / "";color:var(--marker)}.index{list-style:none}.index-item{grid-template-columns:10ch minmax(0,1fr) auto;column-gap:2ch;display:grid}.index-item+.index-item{margin-top:var(--line)}.index-item time{color:var(--muted);font-variant-numeric:tabular-nums}.index-cat{color:var(--muted);text-transform:uppercase;text-decoration:none}.index-cat:hover{text-decoration:underline}.index-excerpt{color:var(--muted);grid-column:2/-1}@media (width<=600px){.index-item{grid-template-columns:minmax(0,1fr) auto}.index-item time,.index-excerpt{grid-column:1/-1}.index-item time{grid-row:1}}.toc{list-style:none}.toc li{flex-wrap:wrap;column-gap:1ch;display:flex}.toc li:before{content:"-" / "";color:var(--marker)}.toc li+li{margin-top:0}.toc.has-desc li+li{margin-top:var(--line)}.toc-dots{white-space:nowrap;min-width:2ch;color:color-mix(in oklab, var(--marker) 45%, var(--bg));flex:1;overflow:hidden}.toc-dots:before{content:"................................................................................................................................" / ""}.toc-count{font-variant-numeric:tabular-nums}.toc-desc{color:var(--muted);flex-basis:100%;padding-left:2ch}.byline{color:var(--muted)}.byline a{text-transform:lowercase}.post-cover{margin-top:var(--line)}.post-cover img{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--border);background:var(--tint);width:100%}.post-cover figcaption{color:var(--muted);margin-top:6px}.post-cover figcaption:before{content:"fig. 1 — " / ""}.post-body{margin-top:calc(var(--line) * 2)}.post-footer{margin-top:calc(var(--line) * 2);padding-top:var(--line);border-top:1px dashed var(--border)}.post-nav-label{width:10ch;color:var(--muted);text-transform:uppercase;display:inline-block}.prose>*+*{margin-top:var(--line)}.prose>h2:not(:first-child){margin-top:calc(var(--line) * 2)}.prose>:is(h3,h4):not(:first-child){margin-top:calc(var(--line) * 1.5)}.prose strong{font-weight:700}.prose ul{padding-left:2ch;list-style:none}.prose ul>li:before{content:"-" / "";width:2ch;color:var(--marker);margin-left:-2ch;display:inline-block}.prose ol{padding-left:3ch}.prose ol>li::marker{color:var(--marker)}.prose blockquote{color:var(--muted);padding-left:2ch;position:relative;overflow:hidden}.prose blockquote:before{content:">\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >\a >" / "";white-space:pre;color:var(--marker);position:absolute;top:0;bottom:0;left:0}.prose blockquote p+p{margin-top:var(--line)}.prose hr{height:var(--line);border:0;overflow:visible}.prose hr:before{content:"~*~" / "";color:var(--marker)}.prose code{font-family:inherit;font-size:inherit}.prose :not(pre)>code{background:var(--tint)}.prose :not(pre)>code:before,.prose :not(pre)>code:after{content:"`" / "";color:var(--marker)}.prose pre{border:1px solid var(--border);tab-size:2;padding:20px 2ch;overflow-x:auto;background:color-mix(in oklab, var(--fg) 4%, var(--bg))!important}:root[data-theme=dark] .prose .astro-code,:root[data-theme=dark] .prose .astro-code span{color:var(--shiki-dark)!important}.prose img{border:1px solid var(--border);background:var(--tint);width:100%}.prose figcaption,.prose p:has(>img:only-child)+p>em:only-child{color:var(--muted);margin-top:6px;font-style:normal;display:block}.prose p:has(>img:only-child)+p:has(>em:only-child){margin-top:0}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.prose th,.prose td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:10px 2ch 10px 0}.prose th:last-child,.prose td:last-child{padding-right:0}.prose th{color:var(--muted);font-weight:400}.prose kbd{font:inherit;border:1px solid var(--border);border-bottom-width:2px;padding:0 .5ch}.note-ref{cursor:help;text-decoration:underline dotted;text-decoration-color:var(--muted);text-underline-offset:3px;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background .15s var(--ease), text-decoration-color .15s var(--ease);text-decoration-thickness:1px}.note-ref:hover,.note-ref.is-active{background:var(--highlight);text-decoration-style:solid;text-decoration-color:var(--accent)}.prose sup{vertical-align:super;font-size:.75em;line-height:0}.prose a[data-footnote-ref]{color:var(--muted);padding-left:1px;scroll-margin-top:32px;text-decoration:none}.prose a[data-footnote-ref]:hover,.note-ref:hover a[data-footnote-ref],.is-active a[data-footnote-ref]{color:var(--strong)}.note-card{z-index:30;border:1px solid var(--border);border-top:2px solid var(--accent);background:var(--bg);width:280px;font-family:var(--font-mono);color:var(--muted);visibility:hidden;opacity:0;transition:opacity .15s var(--ease), transform .15s var(--ease), visibility 0s linear .15s;padding:14px 2ch;font-size:12px;line-height:19px;position:absolute;transform:translateY(4px)}.note-card:before{content:"Note" / "";text-transform:uppercase;color:var(--accent);margin-bottom:4px;display:block}.note-card.is-side{transform:translate(-4px)}.note-card.is-open{visibility:visible;opacity:1;transition-delay:0s;transform:none}.note-card>*+*{margin-top:8px}.note-card strong{color:var(--fg);font-weight:700}.note-card a{color:var(--fg)}.note-card a:hover{color:var(--strong)}.note-card code{font:inherit;background:var(--tint)}.note-card code:before,.note-card code:after{content:"`" / "";color:var(--marker)}.note-card img{border:1px solid var(--border)}.prose .footnotes{margin-top:calc(var(--line) * 2);padding-top:var(--line);border-top:1px dashed var(--border);color:var(--muted)}.prose .footnotes>h2{margin:0 0 var(--line)}.prose .footnotes ol{padding-left:3ch}.prose .footnotes li+li,.prose .footnotes li>*+*{margin-top:6px}.prose .footnotes li{scroll-margin-top:32px}.prose .footnotes li:target{color:var(--fg)}.prose .footnotes .data-footnote-backref{color:var(--marker);margin-left:1ch;text-decoration:none}.prose .footnotes .data-footnote-backref:hover{color:var(--strong)}@media print{.note-card{display:none}}.site-footer{margin-top:calc(var(--line) * 3);color:var(--muted)}.footer-links{text-transform:uppercase;flex-wrap:wrap;gap:0 2ch;list-style:none;display:flex}@media (width<=600px){:root{--page-pad:20px}body{padding-block:24px}.page{min-height:calc(100dvh - 48px)}.prose pre{padding:14px 2ch}.prose table{display:block;overflow-x:auto}}@media (prefers-reduced-motion:reduce){.cursor{animation:none}.note-ref,.note-card{transition:none}}
