@font-face{font-family:Rando Mono;src:url(/fonts/RandoMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Rando Mono;src:url(/fonts/RandoMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--bg: #f5f6f7;--ink: #1e2125;--text: #3b4149;--muted: #5f6873;--pad: .5ch;--logo-line: #1978c5;--logo-body: transparent;--guppy-line: #53327f;--guppy-body: transparent;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #1d1d30;--ink: #e8ebef;--text: #c3c9d1;--muted: #8c95a1;--logo-line: #ffffff;--logo-body: #1978c5;--guppy-line: #ffffff;--guppy-body: #53327f;color-scheme:dark}body:after{content:"";position:fixed;inset:auto 0 0;height:30vh;height:30dvh;background:linear-gradient(to bottom,transparent,#1d1d1d);pointer-events:none;z-index:-1}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable}body{margin:0;background:var(--bg);color:var(--text);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem;font-weight:400;line-height:1.65;letter-spacing:0;font-variant-ligatures:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--ink);color:var(--bg)}body>header,body>main,body>footer{width:min(100% - 2.5rem,84ch);margin-inline:auto}body>header{padding-top:5rem;margin-bottom:3rem}main>*+*{margin-top:3rem}body>footer{margin-top:3rem;padding-bottom:4rem}h1,h2{margin:0;color:var(--ink);font-size:inherit;font-weight:500}p{margin:0;text-wrap:pretty}ul{margin:0;padding:0;list-style:none}.nowrap{white-space:nowrap}a{color:var(--ink);text-decoration:none}.contact a{color:var(--muted)}a,summary>span{padding:0 var(--pad);margin:0 calc(var(--pad) * -1);-webkit-box-decoration-break:clone;box-decoration-break:clone}.intro a,.contact a{text-decoration-line:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-decoration-color:var(--muted);text-underline-offset:.25em}.intro{--pad: .25ch}@media(hover:hover){a:hover,summary:hover>span{background:var(--ink);color:var(--bg);text-decoration-line:none}.nav a:hover{background:none;color:var(--ink);text-decoration-line:underline;text-decoration-style:solid;text-decoration-thickness:1px;text-decoration-color:var(--ink);text-underline-offset:.2em}}a:focus-visible,summary:focus-visible>span{background:var(--ink);color:var(--bg);text-decoration-line:none;outline:1px dotted var(--ink);outline-offset:2px}summary:focus-visible{outline:none}.top{display:flex;flex-wrap:wrap;align-items:baseline;gap:.375rem 4ch}.top .brand{white-space:nowrap}.top .brand svg.logo{vertical-align:middle;margin-right:.5rem;width:2.25em;height:2.25em}.top .brand .label{padding:0 var(--pad);margin:0 calc(var(--pad) * -1);-webkit-box-decoration-break:clone;box-decoration-break:clone}.top .brand a:hover,.top .brand a:focus-visible{background:none;color:var(--ink)}.top .brand a:hover .label,.top .brand a:focus-visible .label{background:var(--ink);color:var(--bg)}.logo .outline{fill:var(--logo-line);stroke:var(--logo-line)}.logo .body{fill:var(--logo-body)}.logo .mouth{fill:none;stroke:var(--logo-line)}.logo.guppy{--logo-line: var(--guppy-line);--logo-body: var(--guppy-body)}.top .brand svg.logo.guppy{width:2.8em;height:1.4em}.brand,.nav,.hero{font-family:Rando Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-ligatures:none}.brand{color:var(--ink);font-weight:700;font-size:1.2em}footer .brand{font-size:inherit}.hero{font-size:1.35rem;font-weight:400;color:var(--ink)}.hero-block{margin-top:3rem}.hero-block .contact{margin-top:.375rem}.nav{display:flex;flex-wrap:wrap;gap:.25rem 2ch;color:var(--muted)}.nav a{color:var(--muted)}.contact{display:flex;flex-wrap:wrap;gap:.25rem 2ch;color:var(--muted)}.contact li{min-width:0}.email{overflow-wrap:anywhere}.intro p+p{margin-top:.5rem}.head{display:flex;align-items:baseline;gap:1.5rem;margin-bottom:.75rem}.count{margin-left:auto;color:var(--muted)}.row{display:grid;grid-template-columns:var(--t, 14ch) minmax(0,1fr) auto;column-gap:3ch;align-items:baseline;padding:.1875rem 0}.t{grid-column:1 / 3;min-width:0;color:var(--ink);text-wrap:pretty}.has-note .t{grid-column:1}.n{grid-column:2;min-width:0;color:var(--muted);text-wrap:pretty}.m{grid-column:3;color:var(--muted);white-space:nowrap}.inline{display:flex;flex-wrap:wrap;gap:.375rem 3ch;padding:.1875rem 0}.inline li{position:relative;white-space:nowrap}.inline li:not(:last-child):after{content:"\b7";content:"\b7" / "";position:absolute;top:0;right:-2ch;width:1ch;color:var(--muted);text-align:center}summary{display:block;width:fit-content;margin-left:-1ch;padding:.1875rem 0;color:var(--muted);list-style:none;cursor:pointer}summary::-webkit-details-marker{display:none}details:not([open]) .opened,details[open] .closed{display:none}@media(max-width:600px){body>header{padding-top:2.5rem;margin-bottom:2.25rem}.hero-block{margin-top:2rem}main>*+*{margin-top:2.25rem}body>footer{margin-top:2.25rem;padding-bottom:3rem}.row{grid-template-columns:minmax(0,1fr) auto}.t,.has-note .t{grid-column:1;grid-row:1}.m{grid-column:2;grid-row:1}.n{grid-column:1 / -1;grid-row:2}}@media(max-width:480px){body{font-size:.8125rem;line-height:1.6}}@media(min-width:1600px){body{font-size:.9375rem}body>header{padding-top:7rem}}article>*+*{margin-top:1rem}article h1{color:var(--ink)}article h2,article h3{color:var(--ink);margin-top:2rem}article a{text-decoration-line:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-decoration-color:var(--muted);text-underline-offset:.25em}article ul,article ol{padding-left:2ch}article ul li,article ol li{position:relative;padding-left:1ch}article ul li:before{content:"\2013";position:absolute;left:-1.5ch;color:var(--muted)}article ol{list-style:decimal}article ol li:before{content:none}article code{background:color-mix(in srgb,var(--ink) 8%,transparent);padding:0 .5ch}article pre{overflow-x:auto;padding:1rem;background:color-mix(in srgb,var(--ink) 6%,transparent)}article pre code{background:none;padding:0}article blockquote{margin:0;padding-left:2ch;border-left:1px solid var(--muted);color:var(--muted)}.date{color:var(--muted)}
