@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/fonts/inter-bold.woff2) format("woff2")}article,aside,blockquote,body,button,code,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,input,legend,li,menu,nav,ol,p,pre,section,td,textarea,th,ul{margin:0;padding:0}address,button,caption,cite,code,dfn,h1,h2,h3,h4,h5,h6,input,select,textarea,th,var{font:inherit;font-size:100%}fieldset,img,table{border:0}table{border-collapse:collapse;border-spacing:0}caption,th{text-align:left}tr{vertical-align:top}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}textarea{overflow:auto;resize:vertical}button{cursor:pointer}img{vertical-align:bottom}:root{--color-background:#fafbfc;--color-text:#2b2b2b;--color-subtext:#6b7280;--color-link:#2f5d9f;--color-border:#e5e7eb;--font-family-text:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Ubuntu,"Helvetica Neue",sans-serif;--font-family-title:"Inter",sans-serif;--font-size-text:16px;--font-size-subtext:14px;--font-size-title:36px;--font-size-subtitle:26px;--line-height-text:1.5;--line-height-title:1.3}body,html{height:100%}html{font-size:var(--font-size-text)}body{background-color:var(--color-background);color:var(--color-text);font-family:var(--font-family-text);line-height:var(--line-height-text);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}.meta{color:var(--color-subtext)}.meta__time{white-space:nowrap}.meta:has(.meta__tag) .meta__time:after{content:"·";padding-left:.25rem;padding-right:.5rem}code[class*=language-],pre[class*=language-]{color:#d4d4d4;direction:ltr;font-family:monospace;font-size:var(--font-size-subtext);hyphens:none;line-height:1.5;tab-size:4;text-align:left;text-shadow:none;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{border-radius:.3em}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background-color:#264f78;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{background-color:#1e1e1e;margin-top:1rem;overflow:auto;padding:1rem}.namespace{opacity:.7}.token.doctype .token.doctype-tag{color:#569cd6}.token.doctype .token.name{color:#9cdcfe}.token.comment,.token.prolog{color:#6a9955}.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation,.token.punctuation{color:#d4d4d4}.token.boolean,.token.constant,.token.inserted,.token.number,.token.property,.token.symbol,.token.tag,.token.unit{color:#b5cea8}.token.attr-name,.token.builtin,.token.char,.token.deleted,.token.selector,.token.string{color:#ce9178}.language-css .token.string.url{text-decoration:underline}.token.entity,.token.operator{color:#d4d4d4}.token.operator.arrow{color:#569cd6}.token.atrule{color:#ce9178}.token.atrule .token.rule{color:#c586c0}.token.atrule .token.url{color:#9cdcfe}.token.atrule .token.url .token.function{color:#dcdcaa}.token.atrule .token.url .token.punctuation{color:#d4d4d4}.token.keyword{color:#569cd6}.token.keyword.control-flow,.token.keyword.module{color:#c586c0}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa}.token.regex{color:#d16969}.token.important{color:#569cd6}.token.italic{font-style:italic}.token.constant{color:#9cdcfe}.token.class-name,.token.maybe-class-name{color:#4ec9b0}.token.console,.token.interpolation,.token.parameter{color:#9cdcfe}.token.boolean,.token.punctuation.interpolation-punctuation{color:#569cd6}.token.exports .token.maybe-class-name,.token.imports .token.maybe-class-name,.token.property,.token.variable{color:#9cdcfe}.token.escape,.token.selector{color:#d7ba7d}.token.tag{color:#569cd6}.token.cdata,.token.tag .token.punctuation{color:grey}.token.attr-name{color:#9cdcfe}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178}.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4}.token.entity{color:#569cd6}.token.namespace{color:#4ec9b0}code[class*=language-javascript],code[class*=language-jsx],code[class*=language-tsx],code[class*=language-typescript],pre[class*=language-javascript],pre[class*=language-jsx],pre[class*=language-tsx],pre[class*=language-typescript]{color:#9cdcfe}code[class*=language-css],pre[class*=language-css]{color:#ce9178}code[class*=language-html],pre[class*=language-html]{color:#d4d4d4}.language-regex .token.anchor{color:#dcdcaa}.language-html .token.punctuation{color:grey}.collection-item__title{font-family:var(--font-family-title);font-size:var(--font-size-subtitle);font-weight:700;line-height:var(--line-height-title)}.collection-item .meta{margin-top:.5rem}.collection__title{font-family:var(--font-family-title);font-size:var(--font-size-title);font-weight:700;line-height:var(--line-height-title)}.collection__list{margin-top:1.5rem}.collection .collection-item:not(:first-child){margin-top:2rem}.post__title{font-family:var(--font-family-title);font-size:var(--font-size-title);font-weight:700;line-height:var(--line-height-title)}.post .meta{margin-top:.5rem}.post__content{margin-top:1.5rem}.post__content .code-iframe,.post__content h3,.post__content ol,.post__content p,.post__content ul{margin-top:1rem}.post__content .code-iframe:first-child,.post__content h3:first-child,.post__content ol:first-child,.post__content p:first-child,.post__content ul:first-child{margin-top:0}.post__content h3{font-size:var(--font-size-subtitle);font-weight:700}.post__content ul{margin-left:1.5rem}.post__content ul li:before{content:"\2014";margin-left:-1.5rem;position:absolute}.post__content ol{list-style:decimal;margin-left:1.5rem}.post__content :not(pre)>code{background-color:rgba(129,139,152,.16);border-radius:3px;font-family:monospace;font-size:var(--font-size-subtext);padding:3px 5px;white-space:nowrap}.post__content .code-iframe{background-color:#e6e6e6;height:15rem;width:100%}.comments{margin-top:1.5rem}.comments>div>iframe[src*=ads-iframe]{display:none}.page-author{white-space:nowrap}.page-author a{color:inherit;font-family:var(--font-family-title);font-size:var(--font-size-subtitle);font-weight:700}.page-author__position{color:var(--color-subtext);display:grid;margin-top:-.25rem}@media (width <= 700px){.page-author{text-align:center}}.page-menu{background-color:#fff;border:1px solid var(--color-border);border-radius:99px;display:flex;overflow:hidden;white-space:nowrap}.page-menu a{border-right:1px solid var(--color-border);font-weight:700;padding:.5rem 1rem}.page-menu a:last-child{border-right:0}.page{min-height:100%;min-width:20rem;overflow:hidden;position:relative}.page__center{margin:auto;max-width:50rem;padding:0 1rem}.page__head{align-items:center;column-gap:1rem;display:flex;justify-content:space-between;margin-top:1.5rem}.page__body{margin-top:2rem;padding-top:1.5rem}.page__body,.page__footer{border-top:1px solid var(--color-border)}.page__footer{color:var(--color-subtext);margin-top:1.5rem;padding-bottom:1rem;padding-top:1rem;text-align:center}@media (width <= 700px){.page__head{flex-direction:column}.page .page-menu{margin-top:1rem}}