:root{--bg:#f6f6f4;--bg-raised:#ebebe8;--bg-code:#efefec;--rule:#d3d2cc;--rule-strong:#8f8d86;--fg:#1b1b1d;--fg-muted:#57554f;--accent:#8f4f00;--accent-hover:#643700;--on-accent:#fff;--note:#155f78;--warn:#a9341a;--tip:#366a1f;--syn-keyword:#8f4f00;--syn-string:#46640f;--syn-constant:#a03c1b;--syn-comment:#65625c;--syn-function:#1b1b1d;--syn-punct:#57554f;--text-sm:.875rem;--text-xs:.8125rem;--text-base:1.0625rem;--text-lg:1.25rem;--measure:42rem;--frame:46rem;--frame-wide:66rem;--gutter:1rem;--radius:2px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--scroll-shade:#1b1b1d4d;color-scheme:light}@media (width>=40rem){:root{--gutter:1.5rem}}:root[data-theme=dark]{--bg:#151618;--bg-raised:#1e1f22;--bg-code:#101113;--rule:#2f3136;--rule-strong:#6b6e75;--fg:#e9e5dc;--fg-muted:#a7a399;--accent:#f2a73b;--accent-hover:#ffc56e;--on-accent:#151618;--note:#7cc4d8;--warn:#ff9478;--tip:#a8d38a;--syn-keyword:#f2a73b;--syn-string:#c3d08a;--syn-constant:#f0946a;--syn-comment:#8b877e;--syn-function:#e9e5dc;--syn-punct:#a7a399;--scroll-shade:#0000008c;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#151618;--bg-raised:#1e1f22;--bg-code:#101113;--rule:#2f3136;--rule-strong:#6b6e75;--fg:#e9e5dc;--fg-muted:#a7a399;--accent:#f2a73b;--accent-hover:#ffc56e;--on-accent:#151618;--note:#7cc4d8;--warn:#ff9478;--tip:#a8d38a;--syn-keyword:#f2a73b;--syn-string:#c3d08a;--syn-constant:#f0946a;--syn-comment:#8b877e;--syn-function:#e9e5dc;--syn-punct:#a7a399;--scroll-shade:#0000008c;color-scheme:dark}}.prose{max-width:var(--measure);overflow-wrap:break-word}.prose>*+*{margin-top:1.15em}.prose p,.prose ul,.prose ol,.prose blockquote,.prose figure,.prose .table-scroll{margin-bottom:0}.prose p,.prose li{text-wrap:pretty}.prose h2,.prose h3,.prose h4{scroll-margin-top:var(--space-5);position:relative}.prose h2{letter-spacing:-.015em;margin:2.4em 0 0;font-size:1.5rem}.prose h3{margin:2em 0 0;font-size:1.1875rem}.prose h4{margin:1.8em 0 0;font-size:1.0625rem}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.6em}.prose .anchor{color:var(--rule-strong);font-family:var(--font-mono,monospace);opacity:0;margin-left:.4ch;padding-inline:.2ch;font-weight:400;text-decoration:none}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose .anchor:hover{color:var(--accent)}@media (hover:none){.prose .anchor{opacity:1}}.prose ul,.prose ol{padding-left:1.5em}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--fg-muted);font-family:var(--font-mono,monospace)}.prose ul>li::marker{content:"- "}.prose strong{font-weight:700}.prose blockquote{border-left:1px solid var(--rule-strong);color:var(--fg-muted);margin-inline:0;padding-left:2ch}.prose hr{background:var(--rule);border:0;height:1px;margin-block:2.5em}.prose :not(pre)>code{background:var(--bg-raised);border:1px solid var(--rule);border-radius:var(--radius);overflow-wrap:anywhere;padding:.1em .35em;font-size:.86em}.prose kbd{border:1px solid var(--rule-strong);border-radius:var(--radius);border-bottom-width:2px;padding:.05em .4em;font-size:.85em}.table-scroll{-webkit-overflow-scrolling:touch;background:linear-gradient(to right, var(--bg) 40%, transparent) left / 2.5rem 100% no-repeat local, linear-gradient(to left, var(--bg) 40%, transparent) right / 2.5rem 100% no-repeat local, linear-gradient(to right, var(--scroll-shade), transparent) left / .9rem 100% no-repeat scroll, linear-gradient(to left, var(--scroll-shade), transparent) right / .9rem 100% no-repeat scroll;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem;line-height:1.45}.prose th,.prose td{padding:var(--space-2) 2ch var(--space-2) 0;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule)}.prose td:last-child:not(:first-child){min-width:12rem}.prose td code{white-space:nowrap;overflow-wrap:normal}@media (width<=40rem){.prose table.stack-sm,.prose table.stack-sm tbody,.prose table.stack-sm tr,.prose table.stack-sm td{width:100%;display:block}.prose table.stack-sm thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.prose table.stack-sm tr{padding-block:var(--space-2);border-bottom:1px solid var(--rule)}.prose table.stack-sm tr:first-child{border-top:1px solid var(--rule-strong)}.prose table.stack-sm td{min-width:0;padding:var(--space-1) 0;border:0}.prose table.stack-sm td:before{content:attr(data-label);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--fg-muted);text-transform:lowercase;line-height:1.5;display:block}.prose table.stack-sm td code{white-space:normal;overflow-wrap:break-word}}.prose th{font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--fg-muted);text-transform:lowercase;border-bottom-color:var(--rule-strong);white-space:nowrap;font-weight:700}.prose figure{margin-inline:0}.prose img{border:1px solid var(--rule);border-radius:var(--radius);display:block}.prose figcaption{margin-top:var(--space-2);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--fg-muted)}.prose figcaption .ps1{color:var(--accent)}.figure--pixel img{image-rendering:pixelated;background:#fff}.callout{--c:var(--note);padding:var(--space-3) 2ch;border:1px solid color-mix(in srgb, var(--c) 45%, var(--rule));border-radius:var(--radius);background:color-mix(in srgb, var(--c) 6%, var(--bg))}.callout--warning{--c:var(--warn)}.callout--tip{--c:var(--tip)}.callout__label{font-family:var(--font-mono,monospace);font-size:var(--text-sm);color:var(--c);margin:0;font-weight:700}.callout__label span{color:var(--fg)}.callout__body>*{margin:var(--space-2) 0 0}.callout__body>:first-child{margin-top:var(--space-1)}.diagram-placeholder{place-items:center;gap:var(--space-2);min-height:12rem;padding:var(--space-5);border:1px dashed var(--rule-strong);border-radius:var(--radius);background:var(--bg-raised);font-family:var(--font-mono,monospace);font-size:var(--text-sm);color:var(--fg-muted);text-align:center;display:grid}.diagram-placeholder pre{color:var(--fg);font-size:var(--text-xs);text-align:left;max-width:100%;margin:0;line-height:1.4;overflow-x:auto}.diagram-placeholder{grid-template-columns:minmax(0,1fr)}.diagram-placeholder>*{min-width:0;max-width:100%}.diagram-placeholder .code-block,.diagram-placeholder .code-block pre,.diagram-placeholder pre.astro-code{border:0;background:0 0!important}.diagram-placeholder .code-block__bar,.diagram-placeholder .copy-btn{border:0}.diagram-placeholder .code-block{width:100%}.diagram-placeholder figcaption{overflow-wrap:anywhere}:root{--astro-code-foreground:var(--fg);--astro-code-background:var(--bg-code);--astro-code-token-keyword:var(--syn-keyword);--astro-code-token-string:var(--syn-string);--astro-code-token-string-expression:var(--syn-string);--astro-code-token-constant:var(--syn-constant);--astro-code-token-comment:var(--syn-comment);--astro-code-token-function:var(--syn-function);--astro-code-token-parameter:var(--fg);--astro-code-token-punctuation:var(--syn-punct);--astro-code-token-link:var(--accent)}.astro-code span[style*=--astro-code-token-comment]{font-style:italic}.astro-code span[style*=--astro-code-token-function]{font-weight:700}.code-block{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-code)}.code-block__bar{justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--rule);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--fg-muted);padding-left:1.5ch;display:flex}.prose pre,.code-block pre{padding:var(--space-4) 2ch;tab-size:2;-webkit-overflow-scrolling:touch;margin:0;font-size:.875rem;line-height:1.6;overflow-x:auto;background:linear-gradient(to right, var(--bg-code) 40%, transparent) left / 2.5rem 100% no-repeat local, linear-gradient(to left, var(--bg-code) 40%, transparent) right / 2.5rem 100% no-repeat local, linear-gradient(to right, var(--scroll-shade), transparent) left / .9rem 100% no-repeat scroll, linear-gradient(to left, var(--scroll-shade), transparent) right / .9rem 100% no-repeat scroll, var(--bg-code)!important}.prose>pre{border:1px solid var(--rule);border-radius:var(--radius)}.prose pre code{font-size:inherit}.copy-btn{min-height:2.25rem;color:var(--fg-muted);border:0;border-left:1px solid var(--rule);font-family:var(--font-mono,monospace);font-size:var(--text-xs);cursor:pointer;background:0 0;padding:0 1.5ch}.copy-btn:hover{color:var(--fg);background:var(--bg-raised)}.copy-btn[data-state=copied]{color:var(--tip)}.copy-btn[data-state=failed]{color:var(--warn)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-color:var(--rule-strong) var(--bg);scroll-padding-top:var(--space-5);hanging-punctuation:first}body{background:var(--bg);min-height:100dvh;color:var(--fg);font-family:var(--font-read,system-ui, sans-serif);font-size:var(--text-base);font-kerning:normal;font-variant-numeric:tabular-nums;flex-direction:column;margin:0;line-height:1.65;display:flex}main{flex:1}h1,h2,h3,h4{text-wrap:balance;font-weight:700;line-height:1.2}img,svg{max-width:100%;height:auto}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius)}input,textarea,button{caret-color:var(--accent);font:inherit}a{color:var(--accent);text-underline-offset:.22em;text-decoration-line:underline;text-decoration-thickness:1px}a:hover{color:var(--accent-hover);text-decoration-thickness:2px}code,kbd,samp,pre,.mono{font-family:var(--font-mono,ui-monospace, monospace)}.vh{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{left:var(--gutter);z-index:50;padding:var(--space-2) var(--space-3);background:var(--accent);color:var(--on-accent);font-family:var(--font-mono,monospace);font-weight:700;text-decoration:none;position:absolute;top:-5rem}.skip:focus{top:var(--space-2)}.frame{width:100%;max-width:calc(var(--frame) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.frame--wide{max-width:calc(var(--frame-wide) + 2 * var(--gutter))}.site-head{border-bottom:1px solid var(--rule)}.site-head__bar{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-5);padding-block:var(--space-4) var(--space-3);flex-wrap:wrap;display:flex}.wordmark{font-family:var(--font-mono,monospace);letter-spacing:-.01em;color:var(--fg);font-size:1.0625rem;font-weight:700;text-decoration:none}.wordmark span{color:var(--fg-muted);font-weight:400}.wordmark:hover{color:var(--fg)}.wordmark:hover span{color:var(--accent)}.site-nav{align-items:center;gap:var(--space-1) var(--space-4);font-family:var(--font-mono,monospace);font-size:var(--text-sm);display:flex}.site-nav ul{gap:var(--space-4);margin:0;padding:0;list-style:none;display:flex}.site-nav a{padding-block:var(--space-2);color:var(--fg-muted);text-decoration:none;display:inline-block}.site-nav a:hover{color:var(--fg)}.site-nav a[aria-current]{color:var(--fg);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.45em;text-decoration-thickness:2px}.crumbs{padding-block:0 var(--space-3);font-family:var(--font-mono,monospace);font-size:var(--text-sm);color:var(--fg-muted);overflow-wrap:anywhere}.crumbs ol{flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--rule-strong)}.crumbs a{color:var(--fg-muted);text-decoration-color:var(--rule-strong)}.crumbs a:hover{color:var(--accent);text-decoration-color:currentColor}.crumbs [aria-current]{color:var(--fg)}.theme-toggle{align-items:center;gap:var(--space-2);min-height:2.25rem;padding:0 var(--space-2);color:var(--fg-muted);border:1px solid var(--rule);border-radius:var(--radius);font-family:var(--font-mono,monospace);font-size:var(--text-xs);cursor:pointer;background:0 0;display:inline-flex}.theme-toggle:hover{color:var(--fg);border-color:var(--rule-strong)}.theme-toggle svg{flex:none;width:1rem;height:1rem}.theme-toggle[hidden]{display:none}.page{padding-block:var(--space-6) var(--space-8)}.page__col{max-width:var(--frame)}.page__col--wide{max-width:none}.page-title{margin:0 0 var(--space-3);letter-spacing:-.02em;font-size:clamp(1.875rem,1.4rem + 2.2vw,2.625rem)}.page-lede{margin:0 0 var(--space-6);max-width:var(--measure);font-size:var(--text-lg);color:var(--fg-muted);text-wrap:pretty;line-height:1.5}.prompt-heading{margin:var(--space-8) 0 var(--space-4);font-family:var(--font-mono,monospace);letter-spacing:0;align-items:baseline;gap:1ch;font-size:1rem;font-weight:700;display:flex}.prompt-heading:after{content:"";border-top:1px solid var(--rule);flex:1;align-self:center;min-width:2ch}.prompt-heading .ps1{color:var(--accent)}.prompt-heading a{font-weight:400;font-size:var(--text-sm);color:var(--fg-muted);order:3}.prompt-heading a:hover{color:var(--accent)}.masthead{margin:0 0 var(--space-3);font-family:var(--font-mono,monospace);letter-spacing:-.03em;font-size:clamp(2rem,1.3rem + 3.6vw,3.25rem);font-weight:700;line-height:1.1}.masthead .ps1{color:var(--accent);font-weight:400}.caret{vertical-align:-.08em;background:var(--accent);width:.55em;height:.9em;margin-left:.12em;animation:1s step-end 3 caret-blink;display:inline-block}@keyframes caret-blink{50%{opacity:0}}.show{gap:var(--space-1) 2ch;font-family:var(--font-mono,monospace);font-size:var(--text-sm);grid-template-columns:max-content minmax(0,1fr);margin:0;line-height:1.5;display:grid}.show dt{color:var(--fg-muted)}.show dd{color:var(--fg);overflow-wrap:anywhere;margin:0}.show ul{flex-wrap:wrap;gap:0 1.5ch;margin:0;padding:0;list-style:none;display:flex}.ls{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none}.ls>li{column-gap:var(--space-4);padding-block:var(--space-4);border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"date time""title title""desc desc""tags tags";display:grid}.ls__date,.ls__time{font-family:var(--font-mono,monospace);font-size:var(--text-sm);color:var(--fg-muted)}.ls__date{grid-area:date}.ls__time{text-align:right;white-space:nowrap;grid-area:time}.ls__title{margin:var(--space-1) 0 0;letter-spacing:-.005em;grid-area:title;font-size:1.1875rem;line-height:1.3}.ls__title a{color:var(--fg);text-decoration:none}.ls__title a:hover{color:var(--accent);text-decoration:underline 1px}.ls__desc{margin:var(--space-1) 0 0;color:var(--fg-muted);max-width:var(--measure);text-wrap:pretty;grid-area:desc}.ls__tags{margin-top:var(--space-2);grid-area:tags}.draft-flag{border:1px dashed var(--warn);color:var(--warn);font-family:var(--font-mono,monospace);font-size:var(--text-xs);vertical-align:.15em;margin-left:1ch;padding:0 .6ch;font-weight:400}@media (width>=40rem){.ls>li{grid-template-columns:11ch minmax(0,1fr) auto;grid-template-areas:"date title time"".desc desc"".tags tags";column-gap:2ch}.ls__title{margin:0}.ls__date,.ls__time{line-height:1.85}}.tags{gap:var(--space-1) 1.5ch;font-family:var(--font-mono,monospace);font-size:var(--text-xs);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tags a{color:var(--fg-muted);text-decoration-color:var(--rule-strong)}.tags a:hover,.tags a[aria-current]{color:var(--accent);text-decoration-color:currentColor}.tags .count{color:var(--fg-muted)}.pager{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-top:var(--space-6);font-family:var(--font-mono,monospace);font-size:var(--text-sm);color:var(--fg-muted);flex-wrap:wrap;display:flex}.pager a{padding-block:var(--space-2);display:inline-block}.site-foot{padding-block:var(--space-6) var(--space-5);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--fg-muted);margin-top:auto}.status{background:var(--bg-raised);border:1px solid var(--rule);border-radius:var(--radius);flex-wrap:wrap;align-items:stretch;display:flex}.status>*{padding:var(--space-1) 1.5ch;align-items:center;min-height:2rem;display:flex}.status__mode{background:var(--accent);color:var(--on-accent);font-weight:700}.status__fill{white-space:nowrap;flex:1}.status ul{flex-wrap:wrap;gap:0 2ch;margin:0;list-style:none;display:flex}.status a{padding-block:var(--space-1);color:var(--fg);text-decoration-color:var(--rule-strong);display:inline-block}.status a:hover{color:var(--accent)}.site-foot__copy{margin:var(--space-3) 0 0}.todo{border:1px dashed var(--warn);color:var(--warn);font-family:var(--font-mono,monospace);padding:0 .4ch;font-size:.9em}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{.site-head,.site-foot,.copy-btn,.skip,.toc{display:none}body{color:#000;background:#fff}}
