@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next/AtkinsonHyperlegibleNext-Regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next/AtkinsonHyperlegibleNext-Italic.woff2)format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next/AtkinsonHyperlegibleNext-Bold.woff2)format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next/AtkinsonHyperlegibleNext-BoldItalic.woff2)format('woff2');font-weight:700;font-style:italic;font-display:swap}:root{--paper:#f3f7f5;--ink:#1a2422;--ink-soft:#4a5552;--rule:#cbd6d1;--accent:#2f5e57;--accent-hover:#1f4138;--code-bg:#e8efed;--font-body:'Atkinson Hyperlegible Next', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;--measure:38rem;--line-height:1.6;--rhythm:1.6rem}@media(prefers-color-scheme:dark){:root{--paper:#1a221f;--ink:#ececec;--ink-soft:#b0b0b0;--rule:#2c3633;--accent:#8fbeb6;--accent-hover:#b3d6d0;--code-bg:#232b29}}*{box-sizing:border-box}html{font-size:17px;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body{font-family:var(--font-body);font-weight:400;line-height:var(--line-height);color:var(--ink);background-color:var(--paper);margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{max-width:var(--measure);margin:0 auto;padding:4rem 1.5rem 6rem}@media(min-width:720px){html{font-size:18px}main{padding:6rem 2rem 8rem}}h1,h2,h3,h4{font-weight:700;line-height:1.25;margin-bottom:.6em;letter-spacing:-.01em}h1{font-size:1.65rem;margin-top:0}h2{font-size:1.4rem;margin-top:calc(var(--rhythm) * 2)}h3{font-size:1.15rem;margin-top:calc(var(--rhythm) * 1.25)}h4{font-size:1rem;margin-top:var(--rhythm)}main:focus{outline:none}p{margin:0 0 1.2em}a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}a:hover,a:focus{color:var(--accent-hover);text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}strong{font-weight:700}em{font-style:italic}ul,ol{padding-left:1.4em;margin:0 0 1.2em}li{margin-bottom:.7em}blockquote{border-left:3px solid var(--rule);margin:1.5em 0;padding:.8em 0 .8em 1.2em;color:var(--ink-soft);font-style:italic}blockquote img,main img{max-width:100%;height:auto}blockquote img{display:block;max-width:360px;margin:1.4em auto 1.2em}code{font-family:var(--font-mono);font-size:.92em;background-color:var(--code-bg);padding:.12em .35em;border-radius:2px}pre{font-family:var(--font-mono);background-color:var(--code-bg);padding:1em 1.2em;border-radius:3px;overflow-x:auto;font-size:.9rem;line-height:1.5;margin:1.5em 0}pre code{background:0 0;padding:0}hr{border:none;border-top:1px solid var(--rule);margin:3em 0}.table-scroll{overflow-x:auto;margin:1.5em 0;-webkit-overflow-scrolling:touch}table{border-collapse:collapse;margin:1.5em 0;font-size:.95em;width:100%}.table-scroll table{margin:0}th,td{text-align:left;padding:.5em .8em;border-bottom:1px solid var(--rule)}th{font-weight:700}.site-header{max-width:var(--measure);margin:0 auto;padding:2rem 1.25rem 0}.site-header a{text-decoration:none;color:var(--ink)}.site-header .site-title,.site-header h1.site-title{font-size:1.05rem;font-weight:700;margin:0 0 .2em;color:var(--ink);font-family:var(--font-body);line-height:1.25;letter-spacing:-.01em}.site-header .subtitle{font-size:.92rem;color:var(--ink-soft);margin:0}.site-nav{margin-top:1.2em;font-size:.92rem;color:var(--ink-soft)}.site-nav ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap}.site-nav li{margin:0}.site-nav a{color:var(--ink-soft);text-decoration:none;margin-right:1em}.site-nav a:hover,.site-nav a:focus{color:var(--accent);text-decoration:underline}.site-nav li:not(:last-child)::after{content:"·";color:var(--rule);margin-right:1em;display:inline-block}@media(min-width:720px){.site-header{padding:2.5rem 2rem 0}}.page-header{margin-bottom:2.5rem}.page-header h1{margin-bottom:.2em}.page-meta{font-size:.88rem;color:var(--ink-soft);margin:0}.page-meta time{font-variant-numeric:tabular-nums}.entry-list{list-style:none;padding:0;margin:0}.entry-list li{margin-bottom:1.4em}.entry-list .entry-title{font-weight:700;font-size:1.02rem;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;display:block;margin-bottom:.15em;color:var(--accent)}.entry-list .entry-title:hover,.entry-list .entry-title:focus{text-decoration-thickness:2px;color:var(--accent-hover)}.entry-list .entry-meta{font-size:.85rem;color:var(--ink-soft)}.entry-list .entry-summary{font-size:.95rem;color:var(--ink-soft);margin:.3em 0 0}.counter-strip{margin:0 auto 2em;max-width:var(--measure);padding-bottom:1.2em;border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums}.counter-strip ul{display:flex;flex-wrap:wrap;gap:.5em 1.4em;list-style:none;padding:0;margin:0;font-size:.95rem;color:var(--ink-soft);line-height:1.4}.counter-strip li{margin:0}.counter-strip strong{color:var(--ink);font-weight:700;margin-right:.3em}.counter-strip .strip-footnote{margin:.8em 0 0;font-size:.82rem;font-style:italic;color:var(--ink-soft)}.counter{font-size:.92rem;color:var(--ink-soft);border-top:1px solid var(--rule);padding-top:1.5em;margin-top:3em;font-variant-numeric:tabular-nums;line-height:1.7}.counter dl{display:grid;grid-template-columns:auto 1fr;gap:.5em 1.2em;margin:0}.counter dt{font-weight:700;color:var(--ink)}.counter dd{margin:0}.counter .footnote{margin-top:1em;font-size:.85rem;font-style:italic}.site-footer{max-width:var(--measure);margin:0 auto;padding:2rem 1.25rem 4rem;border-top:1px solid var(--rule);font-size:.88rem;color:var(--ink-soft)}.site-footer a{color:var(--ink-soft)}.site-footer a:hover{color:var(--accent)}.site-footer ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:1.2em}@media(min-width:720px){.site-footer{padding:2rem 2rem 4rem}}.newsletter-form{margin-top:2rem;max-width:32rem}.newsletter-form .form-group{margin:0 0 1.2em}.newsletter-form .form-label{display:block;font-weight:700;color:var(--ink);margin-bottom:.3em;font-size:.95rem}.newsletter-form .form-input{width:100%;font-family:var(--font-body);font-size:1rem;line-height:1.4;padding:.55em .7em;border:1px solid var(--rule);background:var(--paper);color:var(--ink);border-radius:2px;box-sizing:border-box}.newsletter-form .form-input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.newsletter-form .form-input--error{border-color:#b00020}.newsletter-form .form-submit{font-family:var(--font-body);font-size:1rem;font-weight:700;padding:.55em 1.3em;border:1px solid var(--accent);background:var(--accent);color:var(--paper);cursor:pointer;border-radius:2px}.newsletter-form .form-submit:hover,.newsletter-form .form-submit:focus{background:var(--accent-hover);border-color:var(--accent-hover);outline:2px solid var(--accent-hover);outline-offset:2px}.newsletter-form .form-note{font-size:.85rem;color:var(--ink-soft);font-style:italic;margin-top:.6em}.newsletter-form-hp{position:absolute;left:-1e4px;width:1px;height:1px;overflow:hidden}.form-success,.form-error{padding:1em 1.2em;margin:1.5em 0;border-left:4px solid var(--accent);background:var(--code-bg);font-size:.95rem}.form-error{border-left-color:#b00020}.skip-link{position:absolute;top:-100px;left:.5rem;background:var(--paper);padding:.4em .8em;border:2px solid var(--accent);z-index:100}.skip-link:focus{top:.5rem}.start-here{margin:2rem 0 2.5rem;padding:1.2rem 1.4rem;border-left:3px solid var(--accent);background:var(--code-bg);border-radius:2px}.start-here-label{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:0 0 .6em}.start-here-list{list-style:none;padding:0;margin:0}.start-here-list li{margin-bottom:.5em;font-size:.97rem;line-height:1.5}.start-here-list li:last-child{margin-bottom:0}.form-input-error-text{display:block;color:#b00020;font-size:.9rem;margin-top:.3em}.form-input-error-text[hidden]{display:none}.form-status{margin:1em 0 0;font-size:.95rem}.form-status:empty{margin:0}details.disclosure{margin-bottom:var(--rhythm)}details.disclosure summary{cursor:pointer;color:var(--accent)}