.blog{--slab:#161614;--slab-ink:#f4ebdc;--bcol:720px;min-height:100vh;background:var(--bg);color:var(--ink)}.nav--blog{background:var(--bg-veil);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom-color:var(--line-soft)}.nav__link--on{color:var(--ink)}.bhero{position:relative;overflow:hidden;padding:clamp(72px,9vw,128px) 0 clamp(40px,5vw,64px);border-bottom:1px solid var(--line-soft)}.bhero__noise{position:absolute;inset:0;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 20%,#000 75%);mask-image:linear-gradient(90deg,transparent 20%,#000 75%)}.bhero__inner{position:relative}.bhero__title{max-width:16ch;margin:0;color:var(--ink);font-size:clamp(38px,4.8vw,66px);font-weight:500;font-variation-settings:"opsz" 32;line-height:1.02;letter-spacing:-.04em;text-wrap:balance}.bhero__inner .lede{max-width:52ch;margin-top:22px}.bfilters{width:var(--track);margin:28px auto 0;display:flex;flex-direction:column;gap:10px}.bfilters__row{display:flex;flex-wrap:wrap;gap:6px}.bfilter{padding:7px 12px;border:1px solid var(--line-soft);border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--t-sm);text-decoration:none;transition:color .14s ease,border-color .14s ease,background .14s ease}.bfilter--on,.bfilter:hover{color:var(--ink);border-color:var(--line)}.bfilter--on{background:var(--surface-2)}.bgrid{width:var(--track);margin:28px auto 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:18px;gap:18px}.bgrid__item{display:flex;min-width:0}.bempty{width:var(--track);margin:40px auto 0;color:var(--ink-3)}.bcard{display:flex;flex-direction:column;width:100%;padding:10px;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-1);color:inherit;text-decoration:none;transition:border-color .16s ease,background .16s ease}.bcard:hover{background:var(--surface-2)}.bcard--featured,.bcard:hover{border-color:var(--line)}.bcard__media{position:relative;display:block;overflow:hidden;border-radius:var(--r-sm);aspect-ratio:1200/630;background:var(--slab)}.bcard__body{display:flex;flex-direction:column;flex:1 1;padding:14px 4px 4px}.bcard__title{margin-top:10px;color:var(--ink);font-size:var(--t-lg);font-weight:500;line-height:1.3;letter-spacing:-.015em}.bcard__desc,.bcard__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bcard__desc{margin-top:8px;color:var(--ink-2);font-size:var(--t-sm);line-height:1.55}.bcard__meta{gap:4px 12px;margin-top:auto;padding-top:18px;font-size:var(--t-xs)}.bcard__meta,.blabel{display:flex;flex-wrap:wrap;color:var(--ink-3)}.blabel{align-items:center;gap:4px 10px;font:var(--t-2xs)/1.4 var(--font-mono);letter-spacing:var(--label-track);text-transform:uppercase}.blabel__featured{color:var(--ink)}.blabel__featured:before{content:"";display:inline-block;width:5px;height:5px;margin:0 7px 1px 0;border-radius:999px;background:var(--accent);vertical-align:middle}.blabel__tag:before{content:"/";margin-right:10px;color:var(--line)}.bcover{display:block;width:100%;height:100%;object-fit:cover}.gcover{position:relative;container-type:inline-size;overflow:hidden;background:var(--slab)}.gcover__tex{position:absolute;inset:0;background-color:var(--slab-ink);-webkit-mask:url(/blog/ascii-cover.png) center/cover no-repeat;mask:url(/blog/ascii-cover.png) center/cover no-repeat;opacity:.5}.gcover__label{position:absolute;top:5.5cqi;left:6cqi;display:flex;align-items:center;gap:1.6cqi;color:rgba(244,235,220,.62);font:2.1cqi/1 var(--font-mono);letter-spacing:.13em;text-transform:uppercase}.gcover__label:before{content:"";width:2.6cqi;height:1px;background:rgba(244,235,220,.3)}.gcover__mark{position:absolute;top:4.8cqi;right:6cqi;width:13cqi;height:auto}:root[data-theme=light] .gcover img.gcover__mark{content:url(/gobare-wordmark.svg)}.gcover__title{position:absolute;left:6cqi;right:30cqi;bottom:6cqi;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--slab-ink);font-size:6.4cqi;font-weight:500;line-height:1.04;letter-spacing:-.04em;text-wrap:balance}.gcover__line{display:block}.bcover--thumb.gcover .gcover__label,.bcover--thumb.gcover .gcover__title{display:none}.bcover--thumb.gcover .gcover__mark{top:50%;right:auto;left:50%;width:40%;transform:translate(-50%,-50%)}.bstart{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:14px;width:100%;padding:22px 20px 20px;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-1)}.bstart .label{margin:0 0 auto}.bstart__title{margin-top:28px;color:var(--ink);font-size:clamp(21px,1.7vw,25px);font-weight:500;line-height:1.15;letter-spacing:-.03em;text-wrap:balance}.bstart__code{padding:7px 10px;border:1px solid var(--line-soft);border-radius:var(--r-sm);background:var(--bg);color:var(--ink-2);font:var(--t-xs) var(--font-mono)}.btn--block{justify-content:center;width:100%;margin-top:4px}.bclose{margin-top:clamp(72px,9vw,128px);padding:clamp(56px,7vw,96px) 0;border-top:1px solid var(--line-soft)}.bclose__title{max-width:20ch;margin:0;color:var(--ink);font-size:clamp(32px,3.3vw,46px);font-weight:500;font-variation-settings:"opsz" 28;line-height:1.04;letter-spacing:-.038em;text-wrap:balance}.bclose__row{display:flex;flex-direction:column;align-items:flex-start;gap:22px;margin-top:30px;padding-top:30px;border-top:1px solid var(--line-soft)}.bclose__row .lede{margin:0;max-width:52ch}.bclose__row .actions{margin:0}.bfoot{border-top:1px solid var(--line-soft)}.bfoot__inner{width:var(--track);margin:0 auto;padding:56px 0 44px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:40px}.bfoot__brand img{width:104px;height:auto;display:block}.bfoot__follow{display:flex;align-items:center;gap:14px;margin-top:22px;color:var(--ink-3);font-size:var(--t-sm)}.bfoot__follow a{color:var(--ink-2)}.bfoot__follow a:hover{color:var(--ink)}.bfoot__cols{display:grid;grid-template-columns:repeat(3,minmax(120px,auto));grid-gap:52px;gap:52px}.bfoot__label{display:block;margin-bottom:2px;color:var(--ink-3);font:var(--t-2xs)/1.4 var(--font-mono);letter-spacing:var(--label-track);text-transform:uppercase}.bfoot__cols a{display:block;margin-top:11px;color:var(--ink-2);font-size:var(--t-sm);text-decoration:none}.bfoot__cols a:hover{color:var(--ink)}.bfoot__base{padding:18px 0 30px;border-top:1px solid var(--line-soft);color:var(--ink-3);font-size:var(--t-xs)}.bfoot__base,.bpost{width:var(--track);margin:0 auto}.bpost__col{max-width:var(--bcol);margin:0 auto;padding-top:40px}.bpost__back{display:inline-block;color:var(--ink-3);font-size:var(--t-sm);text-decoration:none}.bpost__back:hover{color:var(--ink)}.bpost__head{margin-top:44px}.bpost__meta{flex-wrap:wrap;gap:8px 14px;margin-bottom:20px}.bpost__meta a{color:var(--ink-2);text-decoration:none}.bpost__meta a:hover,.bpost__title{color:var(--ink)}.bpost__title{margin:0;font-size:clamp(32px,3.9vw,50px);font-weight:500;font-variation-settings:"opsz" 30;line-height:1.06;letter-spacing:-.038em;text-wrap:balance}.bpost__summary{margin-top:20px}.bpost__author{display:flex;align-items:center;gap:10px;margin:24px 0 0;color:var(--ink-2);font-size:var(--t-sm)}.bpost__avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid var(--line);border-radius:999px;color:var(--ink);font:var(--t-2xs) var(--font-mono);text-transform:uppercase}.bpost__cover{margin-top:40px;overflow:hidden;border:1px solid var(--line-soft);border-radius:var(--r-md);aspect-ratio:1200/630;background:var(--slab)}.bpost__body{max-width:var(--bcol);margin:52px auto 0}.bpost__body>:first-child{margin-top:0}.bpost__body li,.bpost__body p{color:var(--ink-2);font-size:var(--t-lg);line-height:1.72;text-wrap:pretty}.bpost__body p{margin:0 0 20px}.bpost__body h2{margin:56px 0 16px;color:var(--ink);font-size:clamp(23px,2.3vw,29px);font-weight:500;font-variation-settings:"opsz" 24;line-height:1.15;letter-spacing:-.03em;text-wrap:balance}.bpost__body h3{margin:36px 0 10px;color:var(--ink);font-size:20px;font-weight:500;line-height:1.3;letter-spacing:-.02em}.bpost__body a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--ink-3);text-decoration-color:var(--ink-3);text-underline-offset:3px}.bpost__body a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.bpost__body strong{color:var(--ink);font-weight:500}.bpost__body ol,.bpost__body ul{margin:0 0 22px;padding-left:20px}.bpost__body li{margin-bottom:9px}.bpost__body li::marker{color:var(--ink-3)}.bpost__body blockquote{margin:28px 0;padding:2px 0 2px 20px;border-left:1px solid var(--ink-3)}.bpost__body blockquote p{color:var(--ink)}.bpost__body blockquote p:last-child{margin-bottom:0}.bpost__body :not(pre)>code{padding:1px 5px;border:1px solid var(--line-soft);border-radius:4px;background:var(--surface-1);color:var(--ink);font:.86em var(--font-mono);overflow-wrap:anywhere}.bpost__body hr{margin:44px 0;border:0;border-top:1px solid var(--line-soft)}.bpost__body img{max-width:100%;height:auto;border:1px solid var(--line-soft);border-radius:var(--r-md)}.bpost__body table{display:block;width:100%;margin:28px 0;overflow-x:auto;border-collapse:collapse;font-size:var(--t-md)}.bpost__body td,.bpost__body th{padding:12px 18px 12px 0;border-bottom:1px solid var(--line-soft);color:var(--ink-2);line-height:1.5;text-align:left;vertical-align:top}.bpost__body th{color:var(--ink-3);font:var(--t-2xs)/1.4 var(--font-mono);letter-spacing:var(--label-track);text-transform:uppercase;white-space:nowrap}.bpost__body td:first-child{color:var(--ink)}.bpost__body pre{margin:26px 0;padding:18px;overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--slab)}.bpost__body pre code{display:block;color:#e7e2d7;font:var(--t-sm)/1.7 var(--font-mono);white-space:pre}.bcode{margin:26px 0;overflow:hidden;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--slab)}.bcode pre{margin:0;border:0;border-radius:0;background:transparent}.bcode__head{display:flex;align-items:center;justify-content:space-between;padding:7px 8px 7px 18px;border-bottom:1px solid rgba(245,238,225,.07);color:rgba(244,235,220,.45);font:var(--t-2xs)/1 var(--font-mono);letter-spacing:var(--label-track);text-transform:uppercase}.bcode__copy{padding:6px 10px;border:1px solid rgba(245,238,225,.12);border-radius:var(--r-sm);background:transparent;color:rgba(244,235,220,.7);font:inherit;letter-spacing:inherit;cursor:pointer;transition:border-color .14s ease,color .14s ease}.bcode__copy:hover{border-color:rgba(245,238,225,.3);color:#f4ebdc}.tk-c{color:#7c786f;font-style:italic}.tk-s{color:#d8c3a0}.tk-k{color:#b7c4c1}.tk-u{color:#c2c9a8}.tk-v{color:#d9b4a4}.tk-f{color:#c9bfae}.tk-w{color:#f4ebdc;font-weight:500}.tk-n{color:#d8c3a0}.bshare{flex-wrap:wrap;justify-content:space-between;max-width:var(--bcol);margin:56px auto 0;padding:18px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.bshare,.bshare__group{display:flex;align-items:center;gap:16px}.bshare__label{color:var(--ink-3);font:var(--t-2xs)/1 var(--font-mono);letter-spacing:var(--label-track);text-transform:uppercase}.bshare a{display:inline-flex;color:var(--ink-3);transition:color .14s ease}.bshare a:hover{color:var(--ink)}.bnext{display:grid;grid-template-columns:1fr 1fr;max-width:var(--bcol);margin:0 auto;border-bottom:1px solid var(--line-soft)}.bnext__item{display:flex;align-items:center;gap:14px;padding:18px 18px 18px 0;color:inherit;text-decoration:none}.bnext__item--next{justify-content:flex-end;padding:18px 0 18px 18px;border-left:1px solid var(--line-soft);text-align:right}.bnext__item .bcover--thumb{flex:none;width:104px;height:auto;aspect-ratio:1200/630;border:1px solid var(--line-soft);border-radius:var(--r-sm)}.bnext__dir{display:block;color:var(--ink-3);font-size:var(--t-xs)}.bnext__title{display:block;margin-top:4px;color:var(--ink);font-size:var(--t-md);font-weight:500;line-height:1.35}.bnext__item:hover .bnext__title{color:var(--ink-2)}@media (max-width:1279px){.bgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:980px){.bgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.bfoot__cols{gap:36px}}@media (max-width:640px){.bgrid{grid-template-columns:1fr;gap:14px}.nav--blog .nav__icon,.nav--blog .nav__link:not(.nav__link--on){display:none}.bhero__noise{-webkit-mask-image:linear-gradient(90deg,transparent 40%,#000);mask-image:linear-gradient(90deg,transparent 40%,#000)}.bfoot__cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.bpost__body li,.bpost__body p{font-size:var(--t-md)}.bnext{grid-template-columns:1fr}.bnext__item--next{justify-content:flex-start;padding-left:0;border-left:0;border-top:1px solid var(--line-soft);text-align:left;flex-direction:row-reverse}.bshare{flex-direction:column;align-items:flex-start}}