:root{--paper:#f1f0ec;--peg:#c9c7bf;--ink:#1d1d1b;--ink-soft:#5f5f5a;--hair:#cfcdc5;--tape:#e2d7b8;--font-display:"IBM Plex Sans", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;--measure:680px;--page:1120px;--gutter:clamp(16px, 4vw, 40px);--rule:2px solid var(--ink);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--paper)}body{font-family:var(--font-body);background-color:var(--paper);background-image:radial-gradient(var(--peg) 1.1px, transparent 1.3px);color:var(--ink);overflow-wrap:break-word;-webkit-font-smoothing:antialiased;background-position:16px 16px;background-size:16px 16px;font-size:18px;line-height:1.6;overflow-x:clip}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}main{width:100%;max-width:var(--page);padding:64px var(--gutter) 96px;margin:0 auto}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-weight:600;line-height:1.1}h1{font-size:clamp(32px,5vw,52px)}h2{font-size:clamp(26px,3.5vw,38px)}h3{font-size:22px}h4{font-size:18px}p{margin-bottom:1em}a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}code,pre,kbd,samp{font-family:var(--font-mono);font-size:.85em}hr{border:0;border-top:var(--rule);margin:48px 0}blockquote{border-left:2px solid var(--ink);margin:24px 0;padding-left:16px}.label{font-family:var(--font-mono);color:var(--ink-soft);font-size:14px;line-height:1.5}.tag{background:var(--ink);color:var(--paper);font-family:var(--font-mono);letter-spacing:.12em;white-space:nowrap;border-radius:2px;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.5;display:inline-block}.lede{max-width:38ch;font-size:21px;line-height:1.5}.btn{font-family:var(--font-mono);background:var(--ink);color:var(--paper);cursor:pointer;border:0;padding:12px 16px;font-size:15px;line-height:1;text-decoration:none;display:inline-block}.btn:hover{background:var(--ink);color:var(--paper);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}@media print{html,body{color:#000!important;background:#fff!important}h1,h2,h3,h4,p,a,.label{color:#000!important}.no-print{display:none!important}}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.js [data-reveal]{opacity:0;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transition-delay:calc(var(--i,0) * 70ms);transform:translateY(28px)}.js [data-reveal].in{opacity:1;transform:none}@media print,(prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1;transition:none;transform:none}}::view-transition-old(root){mix-blend-mode:normal}::view-transition-new(root){mix-blend-mode:normal}@media (prefers-reduced-motion:no-preference){::view-transition-old(root){animation:vt-recede .6s var(--ease-out) both}::view-transition-new(root){animation:vt-wipe .6s var(--ease-out) both}:root[data-vt=back]::view-transition-new(root){animation-name:vt-wipe-back}:root[data-vt=back]::view-transition-old(root){animation-name:vt-recede-back}::view-transition-group(post-title){animation-duration:.6s;animation-timing-function:var(--ease-out)}::view-transition-group(post-cover){animation-duration:.6s;animation-timing-function:var(--ease-out)}::view-transition-group(nav-ink){animation-duration:.6s;animation-timing-function:var(--ease-out)}::view-transition-old(post-title){animation:.2s ease-out both vt-fade-out}::view-transition-new(post-title){animation:.35s ease-out .12s both vt-fade-in}}::view-transition-old(post-cover){object-fit:cover;width:100%;height:100%;overflow:clip}::view-transition-new(post-cover){object-fit:cover;width:100%;height:100%;overflow:clip}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-fade-in{0%{opacity:0}}@keyframes vt-wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes vt-wipe-back{0%{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}@keyframes vt-recede{to{opacity:.3;transform:translate(-32px)}}@keyframes vt-recede-back{to{opacity:.3;transform:translate(32px)}}.vt-named{color:var(--ink)!important}header.svelte-1elxaub{border-bottom:var(--rule)}nav.svelte-1elxaub{max-width:var(--page);padding:18px var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;margin:0 auto;display:flex}.wordmark.svelte-1elxaub{font-family:var(--font-display);align-items:center;gap:12px;font-size:20px;font-weight:600;text-decoration:none;display:inline-flex}.mark.svelte-1elxaub{background:var(--ink);width:12px;height:12px;transition:transform .5s var(--ease-spring);flex-shrink:0}.wordmark.svelte-1elxaub:hover .mark:where(.svelte-1elxaub){transform:rotate(45deg)scale(.85)}ul.svelte-1elxaub{font-family:var(--font-mono);gap:20px;font-size:15px;list-style:none;display:flex}ul.svelte-1elxaub a:where(.svelte-1elxaub){text-decoration:none;position:relative}.ink.svelte-1elxaub{background:var(--ink);height:2px;position:absolute;bottom:-3px;left:0;right:0}ul.svelte-1elxaub a:where(.svelte-1elxaub):not([aria-current]):after{content:"";background:var(--ink);transform-origin:100%;height:1px;transition:transform .35s var(--ease-out);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}ul.svelte-1elxaub a:where(.svelte-1elxaub):not([aria-current]):hover:after{transform-origin:0;transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.mark.svelte-1elxaub,ul.svelte-1elxaub a:where(.svelte-1elxaub):after{transition:none}}footer.svelte-jz8lnl{border-top:var(--rule)}.inner.svelte-jz8lnl{max-width:var(--page);padding:28px var(--gutter) 40px;font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;gap:16px 32px;margin:0 auto;font-size:15px;display:flex}p.svelte-jz8lnl{margin:0}ul.svelte-jz8lnl{flex-wrap:wrap;gap:20px;list-style:none;display:flex}
