.article-content pre,pre{position:relative;margin:1.5rem 0;border-radius:.5rem;background-color:#282c34;overflow:hidden;box-shadow:0 10px 20px rgba(0,0,0,.1),0 6px 6px rgba(0,0,0,.1)}.article-content pre::before,pre::before{content:"";display:block;height:40px;width:100%;background:#1e2127;border-bottom:1px solid #3e4451;position:absolute;top:0;left:0;z-index:5}.article-content pre::after,pre::after{content:"";position:absolute;top:14px;left:15px;width:12px;height:12px;border-radius:50%;background:#ff5f56;box-shadow:20px 0 #ffbd2e,40px 0 #27c93f;z-index:10}.article-content pre code,pre code{display:block;padding:50px 16px 16px;overflow-x:auto;font-family:jetbrains mono,fira code,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.9rem;line-height:1.6;tab-size:2;-moz-tab-size:2;color:#d4d8e1}.code-actions-container{position:absolute;top:8px;right:10px;z-index:20;display:flex;align-items:center;gap:12px}.code-lang-label{font-size:.8rem;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;color:#fff;background:#3e4451;padding:5px 10px;border-radius:4px;text-transform:uppercase;letter-spacing:.025em;height:fit-content;min-width:48px;text-align:center;font-weight:500;box-shadow:0 1px 3px rgba(0,0,0,.1)}.article-content pre[data-lang]::before,pre[data-lang]::before{content:none!important}.code-copy-btn{margin-right:10px;padding:5px 10px!important;background:#3e4451!important;border:none!important;border-radius:4px!important;color:#fff!important;font-size:.8rem!important;cursor:pointer!important;transition:all .2s ease!important;height:fit-content;min-width:48px;min-height:30px;font-weight:500!important;box-shadow:0 1px 3px rgba(0,0,0,.1)!important}.code-copy-btn:hover{background:#4b5363!important;color:#fff!important;transform:translateY(-1px)!important;box-shadow:0 2px 5px rgba(0,0,0,.2)!important}.code-copy-btn:active{transform:scale(.97)!important;box-shadow:0 1px 2px rgba(0,0,0,.1)!important}.article-content :not(pre)>code,:not(pre)>code{font-family:jetbrains mono,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875em;background-color:#e5e7eb;color:#1e40af;padding:.2em .4em;border-radius:.25rem;white-space:nowrap}.dark .article-content :not(pre)>code,.dark :not(pre)>code{background-color:#21252b;color:#61afef}.article-content pre code::-webkit-scrollbar,pre code::-webkit-scrollbar{height:8px}.article-content pre code::-webkit-scrollbar-track,pre code::-webkit-scrollbar-track{background-color:#282c34;border-radius:0 0 .5rem .5rem}.article-content pre code::-webkit-scrollbar-thumb,pre code::-webkit-scrollbar-thumb{background-color:#3e4451;border-radius:9999px}.article-content pre code::-webkit-scrollbar-thumb:hover,pre code::-webkit-scrollbar-thumb:hover{background-color:#4b5363}.article-content pre .line-numbers-rows,.article-content pre .hljs-ln-numbers,.article-content pre td.hljs-ln-numbers,.article-content pre .gutter,.article-content pre .code-line-numbers,pre .line-numbers-rows,pre .hljs-ln-numbers,pre td.hljs-ln-numbers,pre .gutter,pre .code-line-numbers{display:none!important}.article-content pre code.hljs,pre code.hljs{padding-left:16px!important}.hljs-keyword,.hljs-selector-tag,.token.keyword,.language-python .token.def,.language-python .def{color:#d490e2!important}.hljs-string,.hljs-doctag,.hljs-regexp,.token.string,.token.char,.token.attr-value{color:#c2f292!important}.hljs-subst,.hljs-template-tag,.token.interpolation,.token.template-punctuation{color:#ffeb95!important}.hljs-string .hljs-quote,.token.string .token.punctuation{color:#c2f292!important}.hljs-number,.hljs-literal,.token.number,.token.constant{color:#f0a76b!important}.hljs-comment,.hljs-quote,.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#b6bdcf!important;font-style:italic!important}.hljs-variable,.hljs-template-variable,.token.variable{color:#ef8195!important}.hljs-title,.hljs-function .hljs-title,.hljs-attr,.token.function,.language-python .async,.language-python .await{color:#74baff!important}.hljs-class .hljs-title,.hljs-type,.token.class-name,.language-python .class{color:#ffe68d!important}.hljs-tag,.hljs-name,.token.tag{color:#ef8195!important}.hljs-attribute,.token.attr-name{color:#addc8d!important}.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-builtin-name,.hljs-meta,.token.operator,.token.entity,.token.url,.language-python .not,.language-python .in,.language-python .raise{color:#6ad0dd!important}.language-python .self,.language-python .cls{color:#ef8195!important;font-style:italic!important}.language-python .return{color:#d490e2!important;font-weight:700!important}.language-python .import,.language-python .from{color:#d490e2!important}.language-python{display:block}.language-python .def{color:#d490e2!important}.language-python .params{color:#ef8195!important}.article-content pre .highlighted-line,pre .highlighted-line{background-color:rgba(115,138,148,.15);display:block;margin:0 -16px;padding:0 16px;border-left:2px solid #61afef}.article-content pre .token.deleted,pre .token.deleted{background-color:rgba(224,108,117,.15);color:#e06c75}.article-content pre .token.inserted,pre .token.inserted{background-color:rgba(152,195,121,.15);color:#98c379}.article-content pre .token.important,.article-content pre .token.bold,pre .token.important,pre .token.bold{font-weight:700}.article-content pre .token.italic,pre .token.italic{font-style:italic}.article-content pre.hover-line .line:hover,pre.hover-line .line:hover{background-color:rgba(115,138,148,.1)}.code-block-title{font-family:jetbrains mono,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.8rem;color:#d4d8e1;background-color:#21252b;border-radius:.5rem .5rem 0 0;padding:.5rem 1rem;margin-top:1.5rem;margin-bottom:-1.5rem;border:1px solid #3e4451;border-bottom:none;display:inline-block}.code-group{margin:1.5rem 0}.code-group .tabs{display:flex;background-color:#21252b;border-radius:.5rem .5rem 0 0;border:1px solid #3e4451;border-bottom:none;overflow:hidden}.code-group .tab{padding:.5rem 1rem;font-size:.8rem;color:#d4d8e1;cursor:pointer;background-color:initial;border:none;border-right:1px solid #3e4451}.code-group .tab.active{background-color:#282c34;color:#74baff;font-weight:600}.code-group pre{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.dark .article-content pre,.dark pre{background-color:#282c34}.dark .article-content pre::before,.dark pre::before{background:#1e2127;border-bottom:1px solid #3e4451}.dark .article-content pre code,.dark pre code{color:#d4d8e1}.dark .code-copy-btn{background:#3e4451!important;color:#fff!important}.dark .code-copy-btn:hover{background:#4b5363!important;color:#fff!important}.language-bash .hljs-variable,.language-sh .hljs-variable,.bash .hljs-variable,.sh .hljs-variable{color:#ef8195!important}.language-bash .hljs-built_in,.language-sh .hljs-built_in,.bash .hljs-built_in,.sh .hljs-built_in{color:#6ad0dd!important}.language-bash .hljs-keyword,.language-sh .hljs-keyword,.bash .hljs-keyword,.sh .hljs-keyword{color:#d490e2!important}.language-bash .hljs-meta,.language-sh .hljs-meta,.bash .hljs-meta,.sh .hljs-meta{color:#addc8d!important}.hljs-comment,.bash .hljs-comment,.sh .hljs-comment{color:#b6bdcf!important;font-style:italic!important}.language-bash .hljs-title,.language-sh .hljs-title,.bash .hljs-title,.sh .hljs-title,.bash .hljs-name,.sh .hljs-name{color:#74baff!important}@media(max-width:640px){.code-actions-container{top:6px;right:6px;gap:8px}.code-lang-label,.code-copy-btn{padding:6px 10px!important;font-size:.75rem!important;min-height:34px}.article-content pre::before,pre::before{height:44px}.article-content pre code,pre code{padding-top:54px}}.hljs-deletion,.hljs-name,.token.deleted{color:#ff8a9e!important}.language-python .f-string,.language-python .formatted-string{color:#ffeb95!important}.language-python .raise,.language-python .except,.language-python .finally,.language-python .try,.language-python .catch,.hljs-keyword.hljs-exception{color:#ff8a9e!important;font-weight:700!important}.language-python .status_code,.language-python .http_status,.language-python .HTTP_{color:#ffda9e!important}.language-python .hljs-string:has(.hljs-subst),.language-python .hljs-string .hljs-subst{color:#ffeb95!important}.language-javascript .hljs-template-variable,.language-typescript .hljs-template-variable,.language-jsx .hljs-template-variable,.language-tsx .hljs-template-variable,.language-vue .hljs-template-variable,.hljs-template-variable{color:#ffeb95!important}.hljs-comment.hljs-special,.hljs-comment.special,.hljs-comment.important,.hljs-doctag{color:#f9f18d!important;font-weight:700!important}.language-python .hljs-subst,span.hljs-subst{color:#ffeb95!important;font-weight:500!important}