pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}pre code[class*=language-],pre[class*=language-]{color:#d4d4d4;font-size:13px;text-shadow:none;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none;border-radius:1rem;position:relative}pre[class*=language-]{position:relative;margin-bottom:0!important;max-width:100%;overflow:auto!important}pre code[class*=language-] ::-moz-selection,pre code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#264f78}pre code[class*=language-] ::selection,pre code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#264f78}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:visible;background:#1e1e1e}.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:#808080}.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:#808080}pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0}pre[class*=language-]>.absolute{z-index:10}#table-of-contents+ul{background-color:#f9fafb;padding:1.25rem;border-radius:.75rem;margin-top:1.5rem;margin-bottom:1.5rem;box-shadow:0 1px 3px rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.05);counter-reset:toc-counter}#table-of-contents+ul li{position:relative;padding-left:1.75rem;counter-increment:toc-counter}#table-of-contents+ul li:before{content:counter(toc-counter);position:absolute;left:0;top:.15rem;width:1.5rem;height:1.5rem;background-color:#f1f5f9;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;color:var(--primary-color,#0088cc)}#table-of-contents+ul li a{transition-property:color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;display:inline-block;padding:.25rem 0;width:100%;position:relative}#table-of-contents+ul li a:hover{color:var(--primary-color,#0088cc);transform:translateX(2px)}#table-of-contents+ul li a:after{content:"";position:absolute;bottom:0;left:0;height:1px;width:0;background-color:var(--primary-color,#0088cc);transition:width .3s ease;opacity:.5}#table-of-contents+ul li a:hover:after{width:100%}#table-of-contents{font-weight:700;font-size:1.25rem;margin-bottom:.75rem;color:#1a202c;position:relative;display:flex;align-items:center}#table-of-contents:before{content:"📑";margin-right:.5rem;font-size:1.25rem}blockquote{border-left-width:4px;border-left-color:rgba(var(--primary-rgb,0,136,204),.3);background-color:rgba(var(--primary-rgb,0,136,204),.05);padding:1rem 1.5rem;margin:1.5rem 0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;font-size:1.05em;color:#4a5568;position:relative}blockquote:before{content:'"';position:absolute;top:-.75rem;left:-.75rem;font-size:3rem;color:rgba(var(--primary-rgb,0,136,204),.15);font-family:Georgia,serif;line-height:1}ul li::marker{color:var(--primary-color,#0088cc);opacity:.8}hr{border:none;height:1px;background:linear-gradient(90deg,rgba(0,0,0,0),rgba(0,0,0,.1) 50%,rgba(0,0,0,0));margin:2rem 0}img{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}table thead tr{background-color:#f8fafc;border-bottom:2px solid #e2e8f0}table th{font-weight:600;text-transform:uppercase;font-size:.75rem;letter-spacing:.05em;color:#4a5568}table td,table th{padding:.75rem 1rem}table td{border-bottom:1px solid #e2e8f0}table tr:last-child td{border-bottom:none}pre{font-size:.9rem!important;line-height:1.5!important}pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}h1,h2,h3,h4,h5,h6{color:#1a202c;scroll-margin-top:5rem}dl{margin:1.5rem 0}dt{font-weight:700;color:#2d3748;margin-top:1rem}dd{margin-left:1rem;margin-top:.25rem;color:#4a5568}.text-shadow{text-shadow:0 2px 4px rgba(0,0,0,.2)}:not(pre)>code{font-size:.875em;white-space:normal}ol,ul{padding-left:1.5rem}li+li,li>ol,li>ul{margin-top:.5rem}li>ol,li>ul{margin-bottom:.5rem}.prose .callout,.prose aside{background-color:#f7fafc;border-left:4px solid var(--primary-color,#0088cc);padding:1rem;margin:1.5rem 0;border-radius:.5rem}.highlight{background-color:#fffbea;padding:.125em .25em;border-radius:.25em;box-decoration-break:clone;-webkit-box-decoration-break:clone}.drop-cap:first-letter{float:left;font-size:3.5em;line-height:.8;padding-top:.1em;padding-right:.1em;color:var(--primary-color,#0088cc)}kbd{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:.25rem;box-shadow:0 1px 0 rgba(0,0,0,.05);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;padding:.125rem .375rem;margin:0 .125rem}@media print{*{background-color:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}body{font-size:12pt;line-height:1.5}a,a:visited{text-decoration:underline}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.bg-gradient-to-b,.shadow-xl,[aria-label="Share this article"],nav{display:none!important}.max-w-4xl,.max-w-7xl,.mx-auto,.px-4,.py-4{max-width:100%!important;padding:0!important;margin:0!important}h1{font-size:22pt!important;margin-bottom:1cm!important}code,pre{border:1px solid #ddd!important;border-radius:2px!important;font-size:10pt!important}a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em;font-weight:400}}blockquote[cite]:after{content:"— " attr(cite);display:block;text-align:right;font-style:italic;margin-top:.5rem;font-size:.9em}.prose a[href^="#"]{text-decoration:none;color:inherit;border-bottom:1px dashed var(--primary-color,#0088cc)}.prose a[href^="#"]:hover{color:var(--primary-color,#0088cc);border-bottom:1px solid var(--primary-color,#0088cc)}figure:not(:has(>figcaption)){position:relative;overflow:hidden}figure:not(:has(>figcaption)):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.03);opacity:0;transition:opacity .3s ease;pointer-events:none}figure:not(:has(>figcaption)):hover:after{opacity:1}details{margin-bottom:1.5rem;background-color:white;border:1px solid rgba(var(--primary-rgb,59,130,246),.3);border-radius:.5rem;overflow:hidden}details>summary{list-style:none;background-color:transparent;cursor:pointer;font-weight:500;color:var(--primary);display:flex;align-items:center;position:relative;padding:.75rem 1rem .75rem 2rem;transition:color .2s ease}details>summary:before{content:"";position:absolute;left:.75rem;top:50%;transform:translateY(-50%);width:0;height:0;border-left:6px solid var(--primary);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .2s ease}details[open]>summary:before{transform:translateY(-50%) rotate(90deg)}details>summary:hover{color:rgb(37,99,235)}details>summary:hover:before{border-left-color:rgb(37,99,235)}details>summary::-webkit-details-marker{display:none}details>div:not(summary){padding:1rem;margin:.75rem;background-color:white;border:1px solid rgba(var(--primary-rgb,59,130,246),.2);border-radius:.375rem;animation:accordion-open .3s ease-out}@keyframes accordion-open{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}