@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-MediumItalic.woff2) format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-BoldItalic.woff2) format("woff2");font-weight:700;font-style:italic;font-display:swap}:root{--bg: #f4f0e8;--bg-strong: #ebe4d7;--surface: rgba(255, 255, 255, .45);--ink: #111111;--muted: #666055;--line: #d1cabd;--link: #2448d8;--code-bg: #ece6d8;--quote: #d6cfbf;--font-mono: "Ioskeley Mono", ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace;color-scheme:light;font-family:var(--font-mono)}:root[data-theme=dark]{--bg: #101214;--bg-strong: #181c21;--surface: rgba(20, 25, 31, .78);--ink: #f0ecdf;--muted: #a7a092;--line: #3a342d;--link: #9bb6ff;--code-bg: #151922;--quote: #4b4339;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #101214;--bg-strong: #181c21;--surface: rgba(20, 25, 31, .78);--ink: #f0ecdf;--muted: #a7a092;--line: #3a342d;--link: #9bb6ff;--code-bg: #151922;--quote: #4b4339;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-size:16px;line-height:1.6}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:.2em}img{max-width:100%;display:block}code,pre,kbd,samp{font-family:var(--font-mono)}.theme-toggle{display:inline-grid;place-items:center;padding:0;border:0;background:transparent;color:var(--muted);font:inherit;line-height:0;cursor:pointer;flex:none}.theme-toggle:hover{color:var(--ink)}.theme-toggle:focus-visible{outline:2px solid var(--link);outline-offset:4px}.theme-icon{display:none;width:1.2rem;height:1.2rem}.theme-icon--system{display:block}:root[data-theme-preference=dark] .theme-icon--system,:root[data-theme-preference=light] .theme-icon--system{display:none}:root[data-theme-preference=dark] .theme-icon--dark{display:block}:root[data-theme-preference=light] .theme-icon--light{display:block}main.shell{width:min(100%,52rem);margin:0 auto;padding:2rem 1.15rem 4rem}.site-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.stack{display:grid;gap:2rem}.intro,.section,.post{display:grid;gap:.8rem}.ascii-mark{display:inline-grid;gap:.12rem;width:max-content;color:inherit;text-decoration:none;font-size:clamp(1rem,2.6vw,1.35rem);line-height:1;white-space:pre}.ascii-mark__glyph{letter-spacing:-.25em}.eyebrow{margin:0;color:var(--muted)}h1,h2,h3,h4{margin:0;font-weight:500;line-height:1.25}h1{font-size:clamp(1.45rem,4vw,2rem)}h2{font-size:1rem;letter-spacing:.08em;text-transform:uppercase}h3{font-size:1rem}p,ul,ol,blockquote,figure,pre,table{margin:0}p{line-height:1.32}ul:not(.entry-list),ol{line-height:1.24}.markdown-body li,ul:not(.entry-list) li,ol li{line-height:1.24}.section{padding-top:1.1rem;border-top:1px solid var(--line)}.meta-line,.entry-meta,.post-meta,.footnote{color:var(--muted);font-size:.92rem}.link-row{display:flex;flex-wrap:wrap;gap:.7rem 1rem}.link-row a:before{content:"[";color:var(--muted)}.link-row a:after{content:"]";color:var(--muted)}.entry-list{list-style:none;padding:0;display:grid;gap:1rem}.entry{display:grid;gap:.35rem;padding-top:.15rem}.entry-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.entry-year{color:var(--muted);font-size:.92rem;white-space:nowrap}.entry-stack{color:var(--muted);font-size:.92rem}.projects-note{margin-top:.7rem;margin-bottom:-.5rem}.lede{max-width:42rem}.post-header{display:grid;gap:.4rem}.post-kicker-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1rem}.post-header h1{font-size:clamp(1.6rem,4.2vw,2.2rem);font-weight:700;line-height:1.12}.post-kicker{color:var(--muted)}.post-meta{display:flex;flex-wrap:wrap;gap:.65rem 1rem}.backlinks{display:flex;flex-wrap:wrap;gap:.4rem .8rem}.markdown-body{display:grid;gap:1rem}.markdown-body h2,.markdown-body h3,.markdown-body h4{margin-top:1rem;letter-spacing:normal;text-transform:none}.markdown-body h2{font-size:clamp(1.12rem,2.3vw,1.35rem);font-weight:700;line-height:1.15}.markdown-body h3{font-size:clamp(1.03rem,2vw,1.15rem);font-weight:700;line-height:1.18}.markdown-body h4{font-size:1rem;font-weight:700}.markdown-body ul,.markdown-body ol{padding-left:1.25rem}.markdown-body li+li{margin-top:.12rem}ul:not(.entry-list) li+li,ol li+li{margin-top:.12rem}.markdown-body blockquote{border-left:1px solid var(--quote);padding-left:1rem;color:var(--muted)}.markdown-body hr{width:100%;border:0;border-top:1px solid var(--line)}.markdown-body :not(pre)>code{padding:.1rem .3rem;background:var(--code-bg);border-radius:.15rem;font-size:.92em}.markdown-body pre{padding:1rem;background:var(--code-bg);border:1px solid var(--line);overflow-x:auto}.markdown-body .astro-code,.markdown-body .astro-code span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg)!important}:root[data-theme=dark] .markdown-body .astro-code,:root[data-theme=dark] .markdown-body .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media(prefers-color-scheme:dark){:root:not([data-theme]) .markdown-body .astro-code,:root:not([data-theme]) .markdown-body .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.markdown-body table{width:100%;border-collapse:collapse;font-size:.95rem}.markdown-body th,.markdown-body td{padding:.55rem .7rem;border:1px solid var(--line);text-align:left;vertical-align:top}.markdown-body thead{background:var(--surface)}.markdown-body img{border:1px solid var(--line)}.markdown-body .astro-code{line-height:1.45}.site-footer{padding-top:1.1rem;border-top:1px solid var(--line)}@media(max-width:640px){body{font-size:15px}main.shell{padding-top:1.4rem}.entry-head{flex-direction:column;align-items:flex-start;gap:.15rem}.site-header{gap:.75rem}}
