:root{--bg:#fbfcfd;--bg-raised:#ffffff;--ink:#16202a;--ink-soft:#55606c;--ink-faint:#8792a0;--rule:#e1e6ec;--underline:#c3ccd6;--accent:#2b5a8f;--accent-soft:#3d6fa6;--now-accent:#2b5a8f;--code-bg:#f1f4f8;--serif:"Newsreader", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure:66ch}@media(prefers-color-scheme:dark){:root{--bg:#14181d;--bg-raised:#1b2027;--ink:#e2e6eb;--ink-soft:#a5adb8;--ink-faint:#6f7883;--rule:#2a313a;--underline:#47505b;--accent:#9dbbe0;--accent-soft:#86a7cf;--now-accent:#9dbbe0;--code-bg:#1d232b}}*{box-sizing:border-box}html{font-size:19px;-webkit-text-size-adjust:100%}@media(max-width:600px){html{font-size:17px}}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;line-height:1.55;font-feature-settings:"kern","liga","onum"}a{color:var(--accent);text-decoration:none}a:hover,a:focus-visible{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.14em}::selection{background:color-mix(in srgb,var(--accent) 22%,var(--bg))}.site-header,main,.site-footer{max-width:var(--measure);margin-left:auto;margin-right:auto;padding-left:1.25rem;padding-right:1.25rem}main{padding-top:1rem;padding-bottom:4rem}.site-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem;padding-top:2.25rem;padding-bottom:1.25rem}.site-name{font-weight:600;font-size:1.05rem;color:var(--ink);letter-spacing:.01em}.site-nav{display:flex;gap:1.25rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.02em}.site-nav a{color:var(--ink-soft)}.site-nav a[aria-current]{color:var(--ink);border-bottom:1.5px solid var(--accent)}.site-nav a:hover{color:var(--ink);text-decoration:none}.site-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;padding-top:1.25rem;padding-bottom:3rem;border-top:1px solid var(--rule);font-family:var(--mono);font-size:.7rem;color:var(--ink-faint)}.footer-links{display:flex;gap:1rem}.footer-links a{color:var(--ink-soft)}h1,h2,h3,h4{font-weight:500;line-height:1.2;letter-spacing:-.01em;margin:0 0 .6em}h1{font-size:1.85rem;margin-top:.5rem}h2{font-size:1.3rem;margin-top:2.4rem}h3{font-size:1.1rem;margin-top:1.8rem}.home h2{font-family:var(--mono);font-weight:500;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 1rem;padding-bottom:.4rem;border-bottom:1px solid var(--rule)}p,ul,ol,blockquote,pre,figure,table{margin:0 0 1.1em}.prose>p:first-child{margin-top:0}.intro p{font-size:1.08rem}.intro p:first-of-type{font-size:1.22rem;line-height:1.4}strong{font-weight:600}em{font-style:italic}hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}blockquote{margin-left:0;padding-left:1rem;border-left:2px solid var(--rule);color:var(--ink-soft)}sup{line-height:0}.muted{color:var(--ink-faint)}.aside{font-family:var(--mono);font-size:.7rem;color:var(--ink-faint);border-left:2px solid var(--rule);padding-left:.75rem;margin:.75rem 0 1.5rem}code,kbd,samp{font-family:var(--mono);font-size:.78em}:not(pre)>code{background:var(--code-bg);padding:.1em .35em;border-radius:3px}pre{background:var(--code-bg);border-radius:4px;padding:.9rem 1rem;overflow-x:auto;line-height:1.45;font-size:.82rem}pre code{font-size:.86em;background:0 0;padding:0}.highlight pre,.chroma{background:var(--code-bg)!important}.highlight{margin:0 0 1.1em}.highlight pre{margin:0}img{max-width:100%;height:auto}img[src$="#floatright"]{float:right;margin:.2rem 0 .75rem 1.25rem;max-width:40%}figure{margin-left:0;margin-right:0}figcaption{font-family:var(--mono);font-size:.68rem;color:var(--ink-faint);margin-top:.4rem}table{border-collapse:collapse;font-size:.9rem;width:100%;display:block;overflow-x:auto}th,td{text-align:left;padding:.35rem .6rem;border-bottom:1px solid var(--rule);vertical-align:top}th{font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--ink-soft)}.home-section{margin-top:3rem}.more{font-size:.92rem;margin-top:1rem}.more a{color:var(--ink-soft)}.more a:hover{color:var(--accent)}.tools{list-style:none;padding:0;margin:0}.tool{padding:.9rem 0;border-bottom:1px solid var(--rule)}.tool:last-child{border-bottom:0}.tool-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.tool-name{font-family:var(--mono);font-size:.85rem;font-weight:500;color:var(--ink)}.tool-name:hover{color:var(--accent)}.tool-meta{display:flex;gap:.9rem;font-family:var(--mono);font-size:.66rem;color:var(--ink-faint);white-space:nowrap}.tool-desc{margin:.35rem 0 0}.tool-origin{margin:.2rem 0 0;font-size:.85rem;color:var(--ink-soft)}.tool-group{margin-top:2.5rem}.tool-group h2{font-family:var(--mono);font-weight:500;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--rule);padding-bottom:.4rem}.post-list{list-style:none;padding:0;margin:0}.post-item{display:grid;grid-template-columns:6.5ch 1fr;column-gap:1rem;padding:.45rem 0;align-items:baseline}.post-item .post-summary{grid-column:2;font-size:.9rem;color:var(--ink-soft);margin-top:.1rem}.post-date{font-family:var(--mono);font-size:.66rem;color:var(--ink-faint);white-space:nowrap;padding-top:.25em}.post-title a{color:var(--ink)}.post-title a:hover{color:var(--accent)}.venue{font-family:var(--mono);font-size:.62rem;color:var(--ink-faint);margin-left:.3rem}.book .post-title a{color:var(--accent)}@media(min-width:900px){.post-item{grid-template-columns:6.5ch 1fr;margin-left:-7.5ch}.post-item .post-summary{grid-column:2}}.archive-year{margin-top:2rem}.archive-year .year{font-family:var(--mono);font-weight:500;font-size:.72rem;letter-spacing:.08em;color:var(--ink-faint);margin:0 0 .4rem;padding-bottom:.3rem;border-bottom:1px solid var(--rule)}.now h2 .now-date{float:right;text-transform:none;letter-spacing:0;color:var(--now-accent)}@media(min-width:900px){.now{position:relative}.now h2 .now-date{float:none;position:absolute;left:-9.5ch;top:.05rem;width:8ch;text-align:right}}.post-header{margin-bottom:1.75rem}.post-meta{font-family:var(--mono);font-size:.7rem;color:var(--ink-faint);margin-top:-.2rem}.post-nav{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:3rem;padding-top:1rem;border-top:1px solid var(--rule);font-size:.9rem}.post-nav a{color:var(--ink-soft)}.post-nav a:hover{color:var(--accent)}.prose h2{margin-top:2rem}.prose li{margin-bottom:.3em}.prose img{display:block;margin:1rem auto}.prose img[src$="#floatright"]{display:inline;margin:.2rem 0 .75rem 1.25rem}