:root{color-scheme:light dark;--bg:light-dark(#f4f0e5, #121110);--fg:light-dark(#24221d, #d9d5c9);--fg-dim:light-dark(#6a665a, #908c7f);--rule:light-dark(#d9d2c0, #2b2925);--accent:light-dark(#b84a00, #ff6600);--accent-line:light-dark(#e2a67c, #7a3a12);--code-bg:light-dark(#ebe6d7, #191816);--selection:light-dark(#f6d3b6, #4a2814);--syn-keyword:var(--accent);--syn-string:light-dark(#456b1f, #a7c080);--syn-number:light-dark(#a1402a, #d3866a);--syn-name:light-dark(#2a5b7d, #7fa8c4);--syn-comment:var(--fg-dim);--font:ui-monospace, "Cascadia Code", "SF Mono", "JetBrains Mono", Menlo,
          Consolas, "DejaVu Sans Mono", "Liberation Mono", monospace;--page:64rem;--measure:74ch}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font:.95rem/1.7 var(--font);font-variant-ligatures:none;overflow-wrap:break-word}::selection{background:var(--selection)}.wrap{width:100%;max-width:var(--page);margin-inline:auto;padding-inline:clamp(1rem,4vw,2rem)}main{flex:1;padding-block:2.5rem 3.5rem}a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-line);text-decoration-thickness:1px;text-underline-offset:.25em}a:hover{text-decoration-color:initial}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img{max-width:100%;height:auto}.dim{color:var(--fg-dim)}.skip{position:absolute;left:-999px;top:0;z-index:10;padding:.4rem .8rem;background:var(--accent);color:var(--bg)}.skip:focus{left:1rem;top:1rem}.site-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem;padding-block:1.5rem 1rem;border-bottom:1px solid var(--rule)}.prompt{color:var(--fg-dim);overflow-wrap:anywhere}.prompt a{color:inherit;text-decoration:none}.prompt a:hover{color:var(--accent)}.prompt .prompt-home{color:var(--accent);font-weight:700}.prompt [aria-current]{color:var(--fg)}.prompt .sigil{color:var(--accent);margin:0 .5ch 0 .25ch}.cursor{display:inline-block;width:.6em;height:1.1em;vertical-align:-.2em;background:var(--accent);animation:blink 1.1s steps(1,end)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}.menu{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0;list-style:none}.menu a{color:var(--fg-dim);text-decoration:none}.menu a:hover{color:var(--fg)}.menu a[aria-current]{color:var(--fg);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.35em}h1,h2,h3,h4{line-height:1.3;margin:2.25rem 0 .75rem}h1{font-size:1.7rem;margin:0 0 .6rem;letter-spacing:-.01em}h2{font-size:1.2rem}h3{font-size:1.02rem}h4{font-size:.95rem;color:var(--fg-dim)}.hash{margin-right:.6ch;color:var(--fg-dim);font-weight:400;text-decoration:none;user-select:none}.hash:hover{color:var(--accent)}.legend{margin:0;color:var(--accent);font-size:.8rem;font-weight:400;letter-spacing:.12em}.rule{display:flex;align-items:center;gap:.9rem;margin:2.75rem 0 1rem}.rule::after{content:"";flex:1;border-top:1px solid var(--rule)}.intro h1{font-size:2.1rem;margin-bottom:.25rem}.tagline{margin:0 0 1.5rem;color:var(--fg-dim)}.panels{display:grid;grid-template-columns:1fr;gap:2.25rem 1.5rem;margin-top:3.25rem}@media(min-width:40rem){.panels{grid-template-columns:repeat(2,1fr)}.panels>:last-child:nth-child(odd){grid-column:1/-1}}@media(min-width:62rem){.panels-3{grid-template-columns:repeat(3,1fr)}.panels-4{grid-template-columns:repeat(4,1fr)}.panels-3>:last-child:nth-child(odd){grid-column:auto}}.panel{position:relative;padding:1.6rem 1.25rem 1.1rem;border:1px solid var(--rule)}.panel>.legend{position:absolute;top:0;left:.9rem;transform:translateY(-50%);padding:0 .6rem;background:var(--bg)}.links{margin:0;padding:0;list-style:none}.links li{position:relative;padding:.3rem 0 .3rem 1.8ch}.links li::before{content:"\203A";content:"\203A"/"";position:absolute;left:0;color:var(--fg-dim)}.links a{text-decoration:none}.links a:hover{text-decoration:underline}.links .name{color:var(--fg)}.links a,.links .name{white-space:nowrap}.links .desc{display:block;color:var(--fg-dim);font-size:.85rem;line-height:1.45;text-wrap:pretty}.latest .more{margin:1rem 0 0}.entries{margin:0;padding:0;list-style:none}.entries li{display:grid;grid-template-columns:10ch 1fr;gap:0 1.5rem;padding-block:.4rem}.entries .when{color:var(--fg-dim);font-variant-numeric:tabular-nums}.entries .desc{margin:0;color:var(--fg-dim);font-size:.875rem;line-height:1.5}@media(max-width:34rem){.entries li{grid-template-columns:1fr}.entries .when{font-size:.85rem}}.prose{max-width:var(--measure)}.prose p,.prose ul,.prose ol,.prose blockquote,.prose details{margin:0 0 1.1rem}.prose ul{padding-left:1.6rem;list-style-type:"\2013  "}.prose ol{padding-left:1.9rem}.prose li::marker{color:var(--fg-dim)}.prose li+li{margin-top:.25rem}.prose li>ul,.prose li>ol{margin:.25rem 0 0}.prose>header+*{margin-top:0}.lede{margin-bottom:1.5rem}.meta{display:flex;flex-wrap:wrap;gap:.15rem 1.25rem;margin:0 0 2rem;color:var(--fg-dim);font-size:.85rem}.meta a{color:inherit;text-decoration:none}.meta a:hover{color:var(--accent);text-decoration:underline}blockquote{margin:1.5rem 0;padding-left:1.1rem;border-left:2px solid var(--accent-line);color:var(--fg-dim)}blockquote>:last-child{margin-bottom:0}hr{margin:2.5rem 0;border:0;border-top:1px dashed var(--rule)}figure{margin:1.5rem 0}figure img,.prose>img{border:1px solid var(--rule)}figcaption{margin-top:.4rem;color:var(--fg-dim);font-size:.85rem}table{display:block;max-width:100%;margin:0 0 1.25rem;overflow-x:auto;border-collapse:collapse;font-size:.9rem}th,td{padding:.4rem 1.5rem .4rem 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}th{color:var(--fg-dim);font-weight:400;letter-spacing:.04em}sup{line-height:0}sup a{text-decoration:none}.footnotes{margin-top:2.5rem;color:var(--fg-dim);font-size:.85rem}.footnotes hr{display:none}.footnotes ol{padding-left:1.5rem}kbd{padding:0 .35em;border:1px solid var(--rule);border-bottom-width:2px;font:inherit;font-size:.9em}.toc{margin:0 0 1.75rem;padding:.6rem 1rem;border:1px solid var(--rule);font-size:.9rem}.toc summary{color:var(--accent);cursor:pointer}.toc ul{margin:.4rem 0 0;padding-left:1.1rem;list-style:none}.toc nav>ul{padding-left:0}.toc li+li{margin-top:0}.post-nav{display:flex;flex-wrap:wrap;gap:.5rem 2rem;margin-top:3rem;padding-top:1rem;border-top:1px dashed var(--rule);font-size:.9rem}.post-nav .newer{margin-left:auto;text-align:right}code,pre{font-family:inherit}:not(pre)>code{padding:.1em .35em;border:1px solid var(--rule);background:var(--code-bg);font-size:.92em}pre{margin:0 0 1.25rem;padding:1rem 1.1rem;overflow-x:auto;border:1px solid var(--rule);background:var(--code-bg);font-size:.875rem;line-height:1.55;tab-size:4}pre code{padding:0;border:0;background:0 0;font-size:inherit}.highlight{margin:0 0 1.25rem}.highlight pre{margin:0}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .ow,.chroma .nt{color:var(--syn-keyword)}.chroma .kt,.chroma .nb,.chroma .bp,.chroma .nc,.chroma .nn,.chroma .nf,.chroma .fm,.chroma .na,.chroma .nd,.chroma .ne{color:var(--syn-name)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s1,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .ss{color:var(--syn-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .no,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:var(--syn-number)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--syn-comment);font-style:italic}.chroma .gd{color:var(--syn-number)}.chroma .gi{color:var(--syn-string)}.chroma .gh,.chroma .gu,.chroma .gs{font-weight:700}.chroma .ge{font-style:italic}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 2rem;padding-block:1.25rem 2rem;border-top:1px solid var(--rule);color:var(--fg-dim);font-size:.82rem}.site-footer p{margin:0}.site-footer a{color:inherit}.tools{display:flex;gap:1.25rem}.tools button{padding:0;border:0;background:0 0;color:inherit;font:inherit;text-decoration:underline;text-decoration-color:var(--accent-line);text-decoration-thickness:1px;text-underline-offset:.25em;cursor:pointer}.tools button:hover{color:var(--fg)}@media print{:root{color-scheme:light}.menu,.tools,.cursor,.skip,.hash{display:none}a{color:inherit}.prose a[href^=http]::after{content:" (" attr(href)")";font-size:.85em}pre{white-space:pre-wrap}}