@keyframes grow-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.blog-post{color:#27272a;font-family:var(--font-sans), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;letter-spacing:-.011em;word-spacing:.02em;counter-reset:section;font-size:1.025rem;line-height:1.8}.blog-post p:empty{margin:0!important;padding:0!important;display:none!important}.blog-content>:first-child{border-top:none!important;margin-top:0!important;padding-top:0!important}.blog-content>*+*{margin-top:1.5rem}.blog-post h1,.blog-post h2,.blog-post h3,.blog-post h4,.blog-post figcaption,.blog-post th{font-family:var(--font-sans), ui-sans-serif, system-ui, sans-serif}.blog-post h1,.blog-post h2,.blog-post h3,.blog-post h4{color:#09090b;letter-spacing:-.02em;font-weight:650;line-height:1.3}.blog-post h1{border-top:1px solid #e4e4e7;margin-top:3.5rem;margin-bottom:1rem;padding-top:2rem;font-size:1.55rem}.blog-post h2{counter-increment:section;align-items:baseline;gap:.75rem;margin-top:3.5rem;margin-bottom:1rem;scroll-margin-top:6rem;font-size:1.35rem;display:flex}.blog-post h2:before{content:counter(section, decimal-leading-zero);color:#a1a1aa;font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.05em;flex:none;font-size:.75rem;font-weight:600}.blog-post h3{margin-top:2.5rem;margin-bottom:.75rem;scroll-margin-top:6rem;font-size:1.15rem}.blog-post h4{color:#3f3f46;text-transform:uppercase;letter-spacing:.05em;margin-top:2rem;margin-bottom:.5rem;font-size:1rem}.blog-post p{color:#27272a;margin-bottom:0}.blog-post a:not(.section-link){color:#09090b;background-image:linear-gradient(90deg,#71717a,#71717a);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;border-bottom:1px solid #e4e4e7;padding-bottom:1px;font-weight:500;text-decoration:none;transition:background-size .3s}.blog-post a:not(.section-link):hover{color:#000;background-size:100% 1px;border-bottom-color:#0000}.blog-post strong{color:#09090b;font-weight:600}.blog-post em{color:#3f3f46}.blog-post ul,.blog-post ol{margin-top:1rem;margin-bottom:1rem;padding-left:1.5rem}.blog-post ul{list-style:outside}.blog-post ol{list-style:decimal}.blog-post li{padding-left:.25rem}.blog-post li+li{margin-top:.5rem}.blog-post li::marker{color:#a1a1aa;font-family:var(--font-mono), ui-monospace, monospace;font-size:.8em}.blog-post blockquote{color:#3f3f46;background:#f8f8fa;border-left:3px solid #09090b;border-radius:0 6px 6px 0;margin:1.5rem 0;padding:1.25rem 1.5rem;font-size:.975rem;line-height:1.75}.blog-post blockquote p{color:inherit;margin:0}.blog-post blockquote p+p{margin-top:.75rem}.blog-post code:not(pre code){color:#09090b;font-family:var(--font-mono), ui-monospace, monospace;background:#f4f4f5;border:1px solid #e4e4e7;border-radius:.25rem;padding:.125rem .35rem;font-size:.85em}.blog-post pre{color:#f4f4f5;background:#111113;border:1px solid #27272a;border-radius:.375rem;padding:1.1rem 0;overflow-x:auto;margin:0!important}.blog-post pre code{min-width:max-content;color:inherit;font-family:var(--font-mono), ui-monospace, monospace;background:0 0;font-size:.82rem;line-height:1.75;display:grid}.blog-post hr{border:0;border-top:1px solid #e4e4e7;margin:2.25rem 0}.blog-post img,.blog-post object{border:1px solid #e4e4e7;border-radius:.375rem;width:100%;height:auto;margin:1.5rem 0}.blog-post table{border-collapse:collapse;width:100%;font-family:var(--font-sans), ui-sans-serif, system-ui, sans-serif;margin:1.5rem 0;font-size:.9rem;line-height:1.6;display:block;overflow-x:auto}.blog-post th,.blog-post td{text-align:left;vertical-align:top;border-bottom:1px solid #e4e4e7;padding:.75rem .85rem}.blog-post th{color:#09090b;letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:600}.heading-anchor{opacity:0;color:#a1a1aa;cursor:pointer;margin-left:.5rem;font-weight:400;transition:opacity .2s,color .2s;display:inline-block}.blog-post h2:hover .heading-anchor,.blog-post h3:hover .heading-anchor{opacity:1}.heading-anchor:hover{color:#09090b!important}@media (max-width:640px){.blog-post{font-size:.975rem;line-height:1.75}.blog-post h1{font-size:1.4rem}.blog-post h2{gap:.65rem;font-size:1.25rem}}.blog-post pre ::selection,.blog-post pre code ::selection{color:inherit!important;background-color:#fff3!important}.blog-post pre ::-moz-selection{color:inherit!important;background-color:#fff3!important}.blog-post pre code ::-moz-selection{color:inherit!important;background-color:#fff3!important}
