:root{--kw-bg:#22232d;--kw-ink:#fff;--kw-gold:#ffc857;--kw-green:#1fe187;--kw-cyan:#0ea9f1;--kw-magenta:#cca0fe;--kw-muted:hsla(0,0%,100%,.7);--kw-faint:hsla(0,0%,100%,.5);--kw-line:hsla(0,0%,100%,.18);--kw-glow-cyan-line:rgba(14,169,241,.8);--kw-glow-cyan:0 0 20px rgba(14,169,241,.18);--kw-glow-green-line:rgba(31,225,135,.7);--kw-glow-green:0 0 18px rgba(31,225,135,.18);--text-color:var(--kw-ink);--bg-color:var(--kw-bg);--border-color:var(--kw-line);--kw-font:"DM Mono","Courier New",Courier,monospace;--kw-weight-body:300;--kw-weight-strong:500;--kw-text-hero:3rem;--kw-text-h1:2rem;--kw-text-h2:1.5rem;--kw-text-h3:1.15rem;--kw-text-body:1rem;--kw-text-small:0.875rem;--kw-text-micro:0.75rem;--kw-leading:1.6;--kw-leading-tight:1.25;--kw-gutter:40px;--kw-header-pad:18px;--kw-section-pad:56px;--kw-main-width:1200px;--kw-content-width:900px;--kw-radius:6px}@media (max-width:820px){:root{--kw-gutter:28px;--kw-header-pad:16px;--kw-section-pad:36px}}@media (max-width:520px){:root{--kw-gutter:20px;--kw-header-pad:14px;--kw-section-pad:24px;--kw-text-hero:1.75rem;--kw-text-h1:1.6rem;--kw-text-h2:1.25rem}}*{box-sizing:border-box}html{overflow-x:clip}body,html{padding:0;margin:0;min-height:100vh;background-color:var(--bg-color);color:var(--text-color);font-family:var(--kw-font);font-size:var(--kw-text-body);font-weight:var(--kw-weight-body);font-style:normal;line-height:var(--kw-leading)}h1,h2,h3,h4,h5,h6{font-weight:var(--kw-weight-strong);line-height:var(--kw-leading-tight);text-wrap:balance}h1{font-size:var(--kw-text-h1)}h2{font-size:var(--kw-text-h2)}h3{font-size:var(--kw-text-h3)}h4,h5,h6{font-size:var(--kw-text-body)}.kw-hero-title{font-size:var(--kw-text-hero);text-align:center}p{text-wrap:pretty}.kw-small,small{font-size:var(--kw-text-small)}.kw-meta{font-size:var(--kw-text-micro);letter-spacing:.05em;color:var(--text-color,var(--kw-ink))}.kw-muted{color:var(--kw-muted)}.kw-faint{color:var(--kw-faint)}ul{margin:1rem;-webkit-padding-start:2rem;padding-inline-start:2rem}.gold{--text-color:var(--kw-gold)}.green{--text-color:var(--kw-green)}.cyan{--text-color:var(--kw-cyan)}.magenta{--text-color:var(--kw-magenta)}a,button{color:var(--text-color,currentColor);background-color:var(--bg-color);padding:0;margin:0;cursor:pointer;font-size:inherit;font-family:var(--kw-font);font-weight:var(--kw-weight-strong);font-style:normal}a{text-decoration:underline}a.noLinkStyles{font-weight:var(--kw-weight-body);text-decoration:none}.button,button{display:inline-block;border:none;text-decoration:none}.button:before,button:before{content:"[";display:inline-block;text-decoration:none!important}.button:after,button:after{content:"]";display:inline-block;text-decoration:none!important}.button:not([disabled]):focus-visible,.button:not([disabled]):hover,a:hover,a:not([disabled]):focus-visible,button:not(:disabled):focus-visible,button:not(:disabled):hover{background-color:var(--text-color);outline:.1rem solid var(--text-color);color:var(--bg-color);outline-offset:0}.button:not([disabled]):active,button:not(:disabled):active{text-decoration:underline}a:not([disabled]):active{text-decoration:none}.button[disabled],button:disabled{cursor:not-allowed;opacity:.5}.kw-btn-row{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:8px}.kw-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:var(--kw-header-pad) var(--kw-gutter);border-bottom:1px solid var(--border-color)}.kw-header--end{justify-content:flex-end}.kw-brand{text-decoration:none;white-space:nowrap}.kw-brand,.kw-nav{letter-spacing:1px}.kw-nav{display:flex;align-items:center;gap:26px;flex-wrap:wrap;justify-content:flex-end}.kw-nav a:not(.button){color:var(--text-color,var(--kw-ink));background:none;text-decoration:underline}.kw-nav a:not(.button):focus-visible,.kw-nav a:not(.button):hover{background:var(--text-color,var(--kw-ink));color:var(--bg-color);outline:.1rem solid var(--text-color,var(--kw-ink));text-decoration:none}.kw-tagline{text-align:center;padding:14px var(--kw-gutter);border-bottom:1px solid var(--border-color);letter-spacing:2px;color:var(--kw-muted);width:100vw;max-width:100vw;margin:0 0 0 50%;translate:-50%}.kw-tagline p{margin:0}@media (max-width:520px){.kw-nav{gap:16px}.kw-nav a.kw-hide-mobile{display:none}.kw-tagline{letter-spacing:1.5px;padding:11px 16px}}.kw-footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 24px;padding:16px var(--kw-gutter);border-top:1px solid var(--border-color);letter-spacing:1px;color:var(--kw-faint);font-size:var(--kw-text-small)}.kw-footer--center{justify-content:center;text-align:center}.kw-footer a{color:var(--kw-muted)}.kw-footer a:focus-visible,.kw-footer a:hover{color:var(--bg-color)}.kw-footer--stacked{flex-direction:column;align-items:center;text-align:center;gap:8px;padding-top:32px;padding-bottom:32px;line-height:var(--kw-leading)}.kw-footer p{margin:0;max-width:70ch}@media (max-width:520px){.kw-footer{flex-direction:column;align-items:center;text-align:center;gap:5px}}.kw-page{display:flex;flex-direction:column;min-height:100vh;overflow-x:clip}.kw-page>main{flex:1 1}main{width:100%;max-width:var(--kw-main-width);margin-inline:auto}.kw-bleed{width:100vw;max-width:100vw;margin-inline:50% 0;translate:-50%}.kw-container{width:100%;max-width:var(--kw-content-width);margin-inline:auto;padding-inline:var(--kw-gutter)}.kw-section{padding:var(--kw-section-pad) var(--kw-gutter)}.kw-section-title{color:var(--text-color,var(--kw-ink))}.kw-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:20px;gap:20px}.kw-grid--3{grid-template-columns:repeat(3,1fr)}.kw-grid--auto{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.kw-stack{display:flex;flex-direction:column;gap:20px}@media (max-width:820px){.kw-grid{gap:14px}}@media (max-width:620px){.kw-grid,.kw-grid--3,.kw-grid--auto{grid-template-columns:1fr;gap:12px}}.kw-card{display:flex;flex-direction:column;gap:8px;padding:20px 24px;border:1px solid var(--border-color);border-radius:var(--kw-radius);color:var(--kw-ink);text-align:left;text-decoration:none;background:none;transition:border-color .15s,box-shadow .15s}a.kw-card:focus-visible,a.kw-card:hover{border-color:var(--kw-glow-cyan-line);box-shadow:var(--kw-glow-cyan);background:var(--bg-color);color:var(--kw-ink);text-decoration:none}a.kw-card:focus-visible{outline:2px solid var(--kw-cyan);outline-offset:2px}.kw-card:not(a):focus-within{border-color:var(--kw-glow-green-line);box-shadow:var(--kw-glow-green)}.kw-card-title{margin:0;color:var(--text-color,var(--kw-ink))}.kw-card-desc{flex:1 1;margin:0;color:var(--kw-muted)}.kw-card-desc p{margin:0 0 8px}.kw-notice{border:1px solid var(--text-color,var(--kw-green));border-radius:var(--kw-radius);padding:calc(1rem - 1px);margin:2rem 0;color:var(--kw-ink)}.kw-notice p{margin:0}.kw-notice p+p{margin-top:1rem}hr{width:100vw;max-width:100vw;height:1px;border:0;background:var(--border-color);margin:2rem 0 2rem 50%;translate:-50%}pre{overflow-x:auto;padding:1rem 0;border-radius:1rem;border:1px solid var(--border-color);cursor:text;margin:2rem 0}pre ::selection{background-color:#4b4e6c}pre [data-line]{padding:0 1rem}code{font-family:var(--kw-font)}table{width:100%;border-collapse:collapse;margin:2rem auto}table td,table th{padding:.25rem;border:1px solid var(--border-color);text-align:left}.kw-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}figure.invisible,figure[data-rehype-pretty-code-figure]{margin:0}[data-blog] time{font-size:var(--kw-text-small);font-style:italic;text-align:end;display:block}[data-blog=card]{display:flex;flex-direction:column;gap:6px}[data-blog=card] time{text-align:start}[data-blog] blockquote{border:1px solid var(--kw-green);padding:calc(1rem - 4px);margin:2rem 1rem}[data-blog] blockquote p{margin:0}[data-blog] blockquote p+p{margin-top:1rem}[data-blog] .highlighted blockquote{border:4px solid var(--kw-gold);padding:calc(1.5rem - 6px)}[data-blog] .cyan blockquote{border-color:var(--kw-cyan)}[data-blog] .magenta blockquote{border-color:var(--kw-magenta)}[data-blog] img{max-width:100%!important;display:block;margin:2rem auto}@font-face{font-family:DM Mono;font-style:italic;font-weight:300;font-display:swap;src:url(/_next/static/media/14d5a68041329f7f-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:italic;font-weight:300;font-display:swap;src:url(/_next/static/media/268f004ea3786b37-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/eff95c6845f9d0bc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/5d259b4d93dec8ad-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/29b045e9545673fa-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/76fcc95954fbfc88-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/8d0a1832fd3be0c8-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/d7df244fe7b07b95-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64418ffc17e50301-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/0e96d314a90a6138-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ba43ea3467e29870-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7ea2ab4a8ad1f81-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono Fallback;src:local("Arial");ascent-override:73.71%;descent-override:23.03%;line-gap-override:0.00%;size-adjust:134.59%}.__className_3916eb{font-family:DM Mono,DM Mono Fallback}