.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--s-2);margin-block:calc(var(--s-3) * -1) 0;font-size:var(--fs--1);color:var(--ink-3)}
.crumbs li{display:inline-flex;align-items:center;gap:var(--s-2);min-width:0}
.crumbs li + li::before{content:"/";color:var(--ink-3)}
.crumbs a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--target);min-width:var(--target);color:var(--ink-2);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
.crumbs a:hover{color:var(--ink);text-decoration-thickness:2px}
.blog-head .crumbs{margin-block-end:var(--s-2)}
.nav a[aria-current="true"]{color:var(--ink);font-weight:var(--fw-strong);text-decoration:underline;text-decoration-thickness:2px}
.menu a[aria-current="true"]{font-weight:var(--fw-strong)}
.post-grid{display:grid;gap:var(--s-4)}
@media (min-width:768px){.post-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.post-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5)}}
.post-card{position:relative;display:grid;gap:var(--s-2);align-content:start;transition:border-color var(--dur-feedback) ease-out}
.post-card:hover{border-color:var(--rule-2)}
.post-card:has(h3 a:focus-visible){outline:var(--ring) solid var(--focus);outline-offset:var(--ring-gap)}
.post-card h3{font-size:var(--fs-1);line-height:1.25;text-wrap:pretty}
.post-card h3 a{text-decoration:none}
.post-card h3 a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.post-card h3 a:focus-visible{outline:0}
.post-card:hover h3 a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
.post-card .muted{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-3);font-size:var(--fs--1);line-height:1.3;color:var(--ink-3)}
.post-lead{max-width:var(--measure)}
.blog-filter{margin-block-end:var(--s-5)}
html:not(.js) .blog-filter{display:none}
.topic-list{list-style:none;display:grid;gap:0 var(--s-5)}
@media (min-width:768px){.topic-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.topic-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.sec .muted + .next-q{margin-block-start:var(--s-4)}
.author-hero{display:grid;grid-template-columns:112px minmax(0,1fr);gap:var(--s-4);align-items:start;margin-block-start:var(--s-2)}
@media (min-width:768px){.author-hero{grid-template-columns:176px minmax(0,1fr);gap:var(--s-3) var(--s-6)}}
.author-photo img{width:100%;border-radius:var(--r-lg)}
.author-id{display:grid;gap:var(--s-2);align-content:start}
.author-id .lede{margin:0}
.author-more{grid-column:1/-1;display:grid;gap:var(--s-4);justify-items:start;max-width:var(--measure)}
@media (min-width:768px){.author-more{grid-column:2}.author-photo{grid-row:span 2}.author-hero{align-content:start}}
.post{padding-block:var(--s-5) var(--s-8)}
@media (min-width:1024px){.post{padding-block:var(--s-7) var(--s-9)}}
.post-col{max-width:var(--measure);margin-inline:auto}
.post-col > * + *{margin-block-start:var(--s-5)}
.post-head{display:grid;gap:var(--s-3);justify-items:start}
.post-head > *{max-width:100%}
.post-head .crumbs{margin-block-end:calc(var(--s-1) * -1)}
.post-flag{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);font-size:var(--fs--1);color:var(--ink-2)}
.byline{font-size:var(--fs--1);line-height:1.6;color:var(--ink-3)}
.byline a{color:var(--ink)}
.draft-note{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--bg-2);font-size:var(--fs--1);line-height:1.45;color:var(--ink-2)}
.post-sum{display:grid;gap:var(--s-2)}
.post-sum p{color:var(--ink)}
.post-todo{display:grid;gap:var(--s-4)}
.post-todo h2{font-size:var(--fs-1);line-height:1.25}
.post-todo .steps > li > p{padding-block-start:3px;color:var(--ink);line-height:var(--lh-snug)}
.toc .disc{border-block-start:1px solid var(--rule)}
.toc ul{list-style:none;display:grid}
.toc a{display:flex;align-items:center;min-height:var(--target);padding-block:var(--s-1);color:var(--ink);line-height:var(--lh-snug)}
.toc .disc-body{padding-block-end:var(--s-3)}
.post-col > .post-body{margin-block-start:var(--s-6)}
.post-body{line-height:var(--lh)}
.post-body > * + *{margin-block-start:var(--s-4)}
.post-body > h2{margin-block-start:var(--s-7)}
.post-body > h3{margin-block-start:var(--s-6)}
.post-body > h4{margin-block-start:var(--s-5)}
.post-body > :is(h2,h3,h4) + *{margin-block-start:var(--s-3)}
.post-body > :first-child{margin-block-start:0}
.post-body :is(ul,ol){padding-inline-start:1.4em;display:grid;gap:var(--s-2)}
.post-body li::marker{color:var(--ink-3)}
.post-body li > p{margin:0}
.post-body li > :is(ul,ol){margin-block-start:var(--s-2)}
.post-body blockquote{margin:0;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--bg-2);color:var(--ink-2)}
.post-body img{border-radius:var(--r-sm);border:1px solid var(--rule)}
.post-body hr{border:0;border-block-start:1px solid var(--rule);margin-block:var(--s-7)}
.post-head h1,.post-body :is(p,li,h2,h3,h4,blockquote),.post-sum p,.toc a,.post-log li,.fn-body p{overflow-wrap:anywhere}
.post-body li,.toc li{min-width:0}
.post-body .tbox:not(.is-wide) :is(td,th){overflow-wrap:anywhere}
.codeblock{border:1px solid #23272D;border-radius:var(--r-lg);overflow:hidden;background:#0B0D0F;color:#E4E1DA}
.codebar{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);padding-block:var(--s-1);padding-inline:var(--s-4) var(--s-1);background:#0B0D0F;border-block-end:1px solid #23272D}
.codebar .code-lang{font-family:var(--mono);font-size:var(--fs--1);color:#A3A097}
.copy-code{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--target);min-width:var(--target);padding:0 var(--s-3);border:1px solid #6E737B;border-radius:var(--r-sm);background:transparent;color:#E4E1DA;font-size:var(--fs--1);font-weight:var(--fw-strong);line-height:1.2;cursor:pointer;transition:border-color var(--dur-feedback) ease-out}
.copy-code:hover{border-color:#E4E1DA}
.copy-code.is-done::before{content:"";flex:none;width:18px;height:18px;background:currentColor;-webkit-mask:var(--i-check) center/contain no-repeat;mask:var(--i-check) center/contain no-repeat}
.codeblock :focus-visible{outline-color:#E4E1DA;outline-offset:-3px}
.codeblock pre{margin:0;padding:var(--s-4);overflow-x:auto;color:#E4E1DA;font-family:var(--mono);font-size:var(--fs--1);line-height:1.55;text-align:left;tab-size:2}
.codeblock code{background:none;border:0;border-radius:0;padding:0;color:inherit;font-size:inherit}
.post-col > .post-cta{margin-block-start:var(--s-7)}
.post-cta{display:grid;gap:var(--s-3)}
.post-cta h2{font-size:var(--fs-1);line-height:1.25}
.post-cta p{color:var(--ink-2)}
.post-cta .cta-row{margin-block-start:var(--s-2)}
.post-col > .post-end{margin-block-start:var(--s-7)}
.post-end > h2{font-size:var(--fs-1);line-height:1.25;margin-block-end:var(--s-3)}
.post-log ul{list-style:none;display:grid;gap:var(--s-2)}
.post-log li{font-size:var(--fs--1);color:var(--ink-2)}
.post-log time{color:var(--ink)}
.post-next ul{list-style:none;display:grid}
.post-next ul + .next-q{margin-block-start:var(--s-3)}
.post-next > .next-q:only-child{margin-block-start:0}
.post-col > .author-box{margin-block-start:var(--s-7)}
.author-box{display:grid;grid-template-columns:72px minmax(0,1fr);gap:var(--s-3) var(--s-4);align-items:start}
@media (min-width:768px){.author-box{grid-template-columns:112px minmax(0,1fr);gap:var(--s-2) var(--s-5)}.author-box > picture,.author-box > img{grid-row:span 2}}
.author-box img{width:100%;border-radius:var(--r-sm)}
.author-box-t{display:grid;gap:var(--s-1)}
.author-box-bio{grid-column:1/-1}
@media (min-width:768px){.author-box-bio{grid-column:2}}
.author-box-n{font-size:var(--fs-1);font-weight:var(--fw-strong);line-height:var(--lh-snug)}
.author-box-n a{color:var(--ink);display:inline-block;padding-block:8px;margin-block:-8px}
.cv{display:block;width:100%;height:auto}
.cv .cv-o{fill:var(--data-orders)}
.cv .cv-p{fill:var(--data-platform)}
.cv .cv-pl{stroke:var(--data-platform)}
.cv .cv-od{stroke:var(--data-orders)}
.cv .cv-k{stroke:var(--ink)}
.cv .cv-k3{stroke:var(--ink-3)}
.cv .cv-kf{fill:var(--ink)}
.cv .cv-g{stroke:var(--ink)}
.cv .cv-t{fill:var(--card);stroke:var(--ink)}
.cover{aspect-ratio:2/1;overflow:hidden;background:var(--bg-2);border-radius:var(--r-sm)}
.cover .cv{width:100%;height:100%}
.post-card .cover{margin:calc(var(--s-4) * -1) calc(var(--s-4) * -1) var(--s-2);border-radius:var(--r-lg) var(--r-lg) 0 0;border-bottom:1px solid var(--rule)}
@media (min-width:768px){.post-card .cover{margin:calc(var(--s-5) * -1) calc(var(--s-5) * -1) var(--s-2)}}
.post-cover{border-radius:var(--r-lg);padding:var(--s-3)}
@media (min-width:768px){.post-cover{aspect-ratio:16/5}}
.post-card .cover{border-radius:calc(var(--r-lg) - 1px) calc(var(--r-lg) - 1px) 0 0;background:none}
.post-col > .post-alerts{margin-block-start:var(--s-7)}
.post-alerts > h2{font-size:var(--fs-1);line-height:1.25}
.post-alerts > p{color:var(--ink-2)}
.blog-head .blog-alerts{margin-block-start:var(--s-2)}
@media print{
  .post-cta,.post-alerts,.toc,.blog-filter,.copy-code{display:none!important}
  .codeblock{border-color:#000}
}
