:root{--font-display: "Newsreader", ui-serif, Georgia, serif;--font-body: "Source Serif 4", ui-serif, Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--color-paper: oklch(96.5% .009 85);--color-paper-2: oklch(93.8% .011 85);--color-rule: oklch(84% .01 85);--color-rule-dark: oklch(38% .012 60);--color-neutral: oklch(55% .009 80);--color-muted: oklch(43% .01 70);--color-ink: oklch(21% .012 60);--color-accent: oklch(45% .14 27);--color-focus: oklch(45% .14 27);--text-xs: .8rem;--text-sm: .9rem;--text-base: 1rem;--text-md: 1.25rem;--text-lg: 1.5625rem;--text-xl: 1.9531rem;--text-2xl: 2.4414rem;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--space-3xl: 6rem;--rule-hair: 1px;--measure: 65ch}*{box-sizing:border-box}html,body{overflow-x:clip}body{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.62;font-variant-numeric:oldstyle-nums}.col{max-width:calc(var(--measure) + 2 * clamp(1rem,4vw,3rem));padding-inline:clamp(1rem,4vw,3rem);margin-inline:auto}.top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-lg);padding-block:var(--space-lg) var(--space-sm);border-bottom:var(--rule-hair) solid var(--color-rule-dark)}.top-name{margin:0;font-family:var(--font-display);font-weight:500;font-size:var(--text-md);letter-spacing:-.01em}.top-name a{color:inherit;text-decoration:none}.top-nav ul{display:flex;flex-wrap:wrap;gap:var(--space-md);list-style:none;margin:0;padding:0}.top-nav a{color:var(--color-ink);text-decoration:none;font-size:var(--text-sm);font-variant-caps:all-small-caps;letter-spacing:.07em;white-space:nowrap}.top-nav a:hover,.top-nav a[aria-current=page]{color:var(--color-accent)}main{padding-block:var(--space-xl) var(--space-2xl)}.intro{font-size:var(--text-md);line-height:1.55;margin:0 0 var(--space-xl)}.section-head{font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);font-variant-caps:all-small-caps;letter-spacing:.08em;color:var(--color-muted);margin:var(--space-xl) 0 var(--space-sm);padding-bottom:var(--space-2xs);border-bottom:var(--rule-hair) solid var(--color-rule)}.posts{list-style:none;margin:0;padding:0}.posts li{display:grid;grid-template-columns:9.5rem minmax(0,1fr);gap:var(--space-md);padding-block:var(--space-sm);border-bottom:var(--rule-hair) solid var(--color-rule)}.posts time{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted);padding-top:.3em;white-space:nowrap}.posts a{font-family:var(--font-display);font-size:var(--text-md);line-height:1.3;color:var(--color-ink);text-decoration:none}.posts a:hover{color:var(--color-accent)}.posts p{margin:var(--space-2xs) 0 0;font-size:var(--text-sm);color:var(--color-muted)}.links{margin:0;padding-left:1.2em}.links li{margin-block-end:var(--space-xs)}.links li span{color:var(--color-muted)}.dateline{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted);margin:0 0 var(--space-xs)}.post h1{font-family:var(--font-display);font-weight:500;font-size:clamp(1.7rem,3.2vw,var(--text-2xl));line-height:1.15;letter-spacing:-.015em;margin:0 0 var(--space-lg);overflow-wrap:anywhere;min-width:0}.post h2{font-family:var(--font-body);font-weight:600;font-size:var(--text-md);font-variant-caps:all-small-caps;letter-spacing:.06em;margin:var(--space-2xl) 0 var(--space-sm)}.post h3{font-family:var(--font-body);font-weight:600;font-size:var(--text-base);margin:var(--space-xl) 0 var(--space-xs)}.post h2+p,.post h3+p{margin-top:0}.post h1+p{font-size:var(--text-md);line-height:1.55}p{margin:0 0 var(--space-md)}.post ul,.post ol{margin:0 0 var(--space-md);padding-inline-start:var(--space-lg)}.post li{margin-block-end:var(--space-xs)}cite,em{font-style:italic}a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}code{font-family:var(--font-mono);font-size:.86em;font-variant-numeric:normal}pre{font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.5;background:var(--color-paper-2);padding:var(--space-sm) var(--space-md);overflow-x:auto;margin:0 0 var(--space-md)}pre code{font-size:inherit}.post figure{margin:var(--space-xl) 0}.post figure img{display:block;width:100%;height:auto;border:var(--rule-hair) solid var(--color-rule)}.post figure a{display:block;line-height:0}.post details{margin:var(--space-lg) 0;border-top:var(--rule-hair) solid var(--color-rule);border-bottom:var(--rule-hair) solid var(--color-rule)}.post summary{cursor:pointer;padding:var(--space-xs) 0;font-variant-caps:all-small-caps;letter-spacing:.06em;font-size:var(--text-sm);color:var(--color-muted)}.post summary:hover{color:var(--color-accent)}.post details[open]>summary{margin-bottom:var(--space-xs)}.post details>:last-child{margin-bottom:var(--space-sm)}.post figcaption{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-xs);line-height:1.5}.post .table-scroll{overflow-x:auto;margin:0 0 var(--space-md)}.post table{width:100%;border-collapse:collapse;font-size:var(--text-sm);margin:0 0 var(--space-md)}.post th{text-align:left;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.06em;padding:var(--space-xs) var(--space-md) var(--space-xs) 0;border-bottom:var(--rule-hair) solid var(--color-rule-dark)}.post td{vertical-align:top;padding:var(--space-xs) var(--space-md) var(--space-xs) 0;border-bottom:var(--rule-hair) solid var(--color-rule)}.post td:first-child{white-space:nowrap}.post-foot{margin-top:var(--space-2xl);padding-top:var(--space-sm);border-top:var(--rule-hair) solid var(--color-rule);font-size:var(--text-sm)}.colophon{border-top:var(--rule-hair) solid var(--color-rule-dark);padding-block:var(--space-lg) var(--space-2xl);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.7;color:var(--color-muted)}.colophon p{margin:0}.colophon a{color:var(--color-muted)}.colophon a:hover{color:var(--color-accent)}@media(max-width:40rem){.posts li{grid-template-columns:1fr;gap:var(--space-2xs)}main{padding-block:var(--space-lg) var(--space-xl)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
