:root{--bg: #f1ebde;--bg-soft: #e8e0cd;--fg: #1a1714;--fg-soft: #4d463c;--fg-mute: #8e8576;--rule: #cabfa9;--select: #f6c453;--c1: #c8332b;--c2: #d97706;--c3: #7c2d8a;--link: var(--c3);--visited: var(--c3);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--fs: 15px;--lh: 1.55;--col: 42rem}[data-theme=dark]{--bg: #14110d;--bg-soft: #1d1a14;--fg: #e8ddc7;--fg-soft: #b6ac93;--fg-mute: #6f6755;--rule: #3a342a;--select: #5a4115}[data-palette=phosphor]{--c1:#00a86b;--c2:#d97706;--c3:#2563b8}[data-palette=sunset]{--c1:#c8332b;--c2:#d97706;--c3:#7c2d8a}[data-palette=crt]{--c1:#33cc66;--c2:#ffb000;--c3:#33ccee}[data-palette=popsicle]{--c1:#e63946;--c2:#f4a261;--c3:#2a9d8f}[data-palette=oldweb]{--c1:#ff0066;--c2:#00aa44;--c3:#0044cc}[data-palette=ink]{--c1:var(--fg);--c2:var(--fg);--c3:var(--fg)}[data-density=tight]{--fs:15px;--lh:1.55}[data-density=regular]{--fs:16px;--lh:1.65}[data-density=roomy]{--fs:17px;--lh:1.8}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:var(--fs);line-height:var(--lh);-webkit-font-smoothing:antialiased}::selection{background:var(--select);color:var(--fg)}a{color:var(--link);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}a:visited{color:var(--visited)}a:hover{background:var(--link);color:var(--bg);text-decoration:none}.page{max-width:760px;margin:0 auto;padding:3rem 1.6rem 5rem}.page-wide{max-width:820px;padding-top:2rem}a.logolink{display:block;text-decoration:none;color:inherit}a.logolink:hover{background:transparent}.wordmark{margin:0 0 2.4rem;font-size:12px;letter-spacing:.05em;color:var(--fg-mute)}.wordmark a{color:var(--fg-soft);text-decoration:none}.wordmark a:hover{color:var(--c2);background:transparent}pre.logo{margin:0 0 1.4rem;line-height:1.05;white-space:pre;font-family:var(--font-mono);font-weight:500;font-size:clamp(11px,2.2vw,13px);letter-spacing:0;user-select:none;overflow:hidden}pre.logo .l1{color:var(--c1)}pre.logo .l2{color:var(--c2)}pre.logo .l3{color:var(--c3)}h2.section{font-size:var(--fs);font-weight:600;letter-spacing:.06em;text-transform:lowercase;margin:2rem 0 .8rem;color:var(--fg)}h2.section:before{content:"// ";color:var(--c2)}p.lede{max-width:60ch;margin:0 0 2rem;color:var(--fg);font-size:calc(var(--fs) + 1px);line-height:1.65}p.lede em{color:var(--c2);font-style:normal}.list{list-style:none;padding:0;margin:0 0 1.4rem}.list li{display:grid;grid-template-columns:1fr auto;column-gap:2ch;align-items:baseline;padding:.3rem 0;border-bottom:1px dotted var(--rule);font-variant-numeric:tabular-nums}.list li:last-child{border-bottom:0}.list .name a{font-weight:500}.list .name .subtitle{margin-left:.8ch;color:var(--fg-mute);font-weight:400;font-size:calc(var(--fs) - 1px)}.list .stat{white-space:nowrap;color:var(--fg-soft);font-size:calc(var(--fs) - 1px);text-align:right}.list .stat.beta{color:var(--c2)}.list .stat.alpha{color:var(--c1)}.list .stat.live{color:var(--c3)}.list .stat.soon{color:var(--fg-mute)}.list .stat.dead{color:var(--fg-mute);text-decoration:line-through}.morelink{display:inline-block;margin:.3rem 0 1.6rem;color:var(--fg-mute);font-size:calc(var(--fs) - 1px)}.posts{list-style:none;padding:0;margin:0 0 1.4rem}.posts li{display:grid;grid-template-columns:1fr auto;column-gap:2ch;align-items:baseline;padding:.3rem 0;border-bottom:1px dotted var(--rule);font-variant-numeric:tabular-nums}.posts li:last-child{border-bottom:0}.posts .title a{font-weight:500}.posts .title .subtitle{margin-left:.8ch;color:var(--fg-mute);font-weight:400;font-size:calc(var(--fs) - 1px)}.posts .date{color:var(--fg-soft);font-size:calc(var(--fs) - 1px);text-align:right;white-space:nowrap}.posts .tags{color:var(--fg-mute);font-size:calc(var(--fs) - 1px);margin-left:.6ch}.sub-row{display:flex;gap:.6ch;flex-wrap:wrap;align-items:center}.sub-row input{flex:1;min-width:22ch;font:inherit;border:1px solid var(--rule);background:var(--bg);color:var(--fg);padding:5px 8px}.sub-row button{font:inherit;padding:5px 12px;border:1px solid var(--fg);background:var(--fg);color:var(--bg);cursor:pointer}.sub-row button:hover{background:var(--c2);border-color:var(--c2);color:var(--bg)}.prose{max-width:64ch}.prose h1,.prose h2,.prose h3{font-weight:600;line-height:1.25;margin:1.6rem 0 .6rem}.prose h1{font-size:calc(var(--fs) + 6px);color:var(--c1)}.prose h2{font-size:calc(var(--fs) + 3px);color:var(--c2)}.prose h3{font-size:calc(var(--fs) + 1px);color:var(--fg)}.prose p{margin:.6rem 0}.prose ul,.prose ol{padding-left:2.2ch;margin:.6rem 0}.prose li{margin:.15rem 0}.prose blockquote{border-left:2px solid var(--c2);padding:.1rem .8rem;margin:.8rem 0;color:var(--fg-soft)}.prose code{background:var(--bg-soft);padding:1px 5px;border:1px solid var(--rule);font-family:var(--font-mono);font-size:.9em}.prose pre{background:var(--bg-soft);border:1px solid var(--rule);padding:.8rem 1rem;overflow-x:auto;font-family:var(--font-mono);font-size:calc(var(--fs) - 1px)}.prose pre code{background:transparent;border:0;padding:0}.prose hr{border:0;border-top:1px dashed var(--rule);margin:1.4rem 0}.prose img{max-width:100%;height:auto}.post-meta{color:var(--fg-mute);font-size:calc(var(--fs) - 1px);margin:0 0 1.4rem}.post-meta .tag{display:inline-block;margin-right:1ch;color:var(--c3)}.prose-article{max-width:var(--col);margin:0 auto;font-size:17px;line-height:1.7;letter-spacing:-.003em;color:var(--fg)}.prose-article h1{font-size:32px;line-height:1.15;font-weight:700;letter-spacing:-.018em;color:var(--fg);margin:0 0 .5rem}.prose-article .post-meta{font-size:13px;margin:0 0 2.4rem;padding-bottom:1.4rem;border-bottom:1px solid var(--rule)}.prose-article h2{font-size:22px;font-weight:600;line-height:1.3;letter-spacing:-.01em;margin:2.6rem 0 .8rem;color:var(--fg)}.prose-article h3{font-size:18px;font-weight:600;margin:2rem 0 .5rem;color:var(--fg)}.prose-article p{margin:1.15rem 0}.prose-article ul,.prose-article ol{margin:1.15rem 0;padding-left:2.4ch}.prose-article li{margin:.45rem 0}.prose-article li>p{margin:.3rem 0}.prose-article blockquote{border-left:2px solid var(--c2);padding:.2rem 1.1rem;margin:1.6rem 0;color:var(--fg-soft);font-style:italic}.prose-article blockquote p{margin:.3rem 0}.prose-article a{text-underline-offset:3px;text-decoration-thickness:1px}.prose-article code{background:var(--bg-soft);padding:1px 6px;border:1px solid var(--rule);font-family:var(--font-mono);font-size:.88em}.prose-article pre{background:var(--bg-soft);border:1px solid var(--rule);padding:1rem 1.2rem;overflow-x:auto;margin:1.6rem 0;font-family:var(--font-mono);font-size:13.5px;line-height:1.6}.prose-article pre code{background:transparent;border:0;padding:0;font-size:inherit}.prose-article hr{border:0;border-top:1px dashed var(--rule);margin:2.2rem 0}.prose-article img{max-width:100%;height:auto;margin:1.4rem 0}.prose-article strong{font-weight:600}.article-foot{max-width:var(--col);margin:2.4rem auto 0;padding-top:1.4rem;border-top:1px dashed var(--rule);color:var(--fg-mute);font-size:13px}.article-foot a{color:var(--fg-soft)}.post-byline{margin:0 0 1.4rem;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 2ch;font-size:13.5px;color:var(--fg-mute)}.post-byline a{color:var(--fg-soft)}.post-byline .meta-left,.post-byline .meta-share{display:flex;flex-wrap:wrap;gap:0 1.6ch;align-items:baseline}.post-byline .sep{color:var(--rule)}.post-byline .share-label{color:var(--fg-mute);margin-right:.4ch}.post-byline .tag{color:var(--c3)}.post-lede{margin:0 0 2.4rem;padding-bottom:1.6rem;border-bottom:1px solid var(--rule);font-size:19px;line-height:1.55;color:var(--fg-soft);font-weight:400;letter-spacing:-.005em}.post-foot{max-width:var(--col);margin:3rem auto 0;display:grid;grid-template-columns:auto 1fr;gap:0 1.6rem;align-items:center}.post-foot-mark{width:72px}.post-foot-mark svg{display:block;width:100%;height:auto}.post-foot-body{min-width:0}@media(max-width:540px){.post-foot{grid-template-columns:1fr;gap:1rem 0}.post-foot-mark{width:56px}}.post-foot .row{display:flex;flex-wrap:wrap;gap:.4rem 1.6ch;align-items:baseline;margin:0 0 .9rem;font-size:14px;color:var(--fg-soft)}.post-foot .row .label{color:var(--fg-mute);margin-right:.4ch;font-size:13px;letter-spacing:.04em}.post-foot .about-text{margin:0 0 .9rem;font-size:14.5px;line-height:1.6;color:var(--fg-soft)}.post-foot .about-text strong{color:var(--fg);font-weight:600}.copybtn{background:none;border:0;padding:0;margin:0;font:inherit;cursor:pointer;color:var(--link);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.copybtn:hover{background:var(--link);color:var(--bg);text-decoration:none}.copybtn[data-state=copied]{color:var(--c1);text-decoration:none}.eof{margin-top:4rem;padding-top:1.2rem;border-top:1px dashed var(--rule);color:var(--fg-mute);font-size:calc(var(--fs) - 1px);display:flex;flex-wrap:wrap;gap:0 1ch;align-items:baseline;justify-content:center}.eof a{color:var(--fg-mute);text-decoration:none}.eof a:hover{color:var(--c2);background:transparent}.eof .dot{color:var(--rule)}.tweaks{position:fixed;right:18px;bottom:18px;width:260px;background:var(--bg-soft);border:1px solid var(--rule);box-shadow:0 12px 32px -16px #00000059;font-size:12px;color:var(--fg);z-index:50;display:none}.tweaks.open{display:block}.tweaks header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--rule);background:var(--bg)}.tweaks header b{font-weight:600}.tweaks header button{border:0;background:transparent;color:var(--fg-soft);font-family:inherit;font-size:14px;cursor:pointer;padding:0 4px}.tweaks .body{padding:10px;display:grid;gap:12px}.tweaks .row label{display:block;color:var(--fg-soft);margin-bottom:4px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.tweaks .seg{display:flex;gap:4px;flex-wrap:wrap}.tweaks .seg button{flex:1;min-width:0;border:1px solid var(--rule);background:var(--bg);color:var(--fg);font-family:inherit;font-size:11px;padding:4px 6px;cursor:pointer}.tweaks .seg button[aria-pressed=true]{background:var(--fg);color:var(--bg)}.tweaks .swatches{display:flex;gap:4px;flex-wrap:wrap}.tweaks .swatches button{width:36px;height:24px;padding:0;border:1px solid var(--rule);cursor:pointer;background:var(--bg);display:flex}.tweaks .swatches button[aria-pressed=true]{outline:2px solid var(--fg);outline-offset:1px}.tweaks .swatches span{flex:1;height:100%;display:block}.tweaks select{width:100%;font-family:inherit;font-size:12px;border:1px solid var(--rule);background:var(--bg);color:var(--fg);padding:3px 4px}
